@gravity-rail/sdk 0.18.1 → 0.22.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (39) hide show
  1. package/dist/{chunk-2YLKG4TT.js → chunk-3HAV5XUJ.js} +1 -1
  2. package/dist/chunk-3HAV5XUJ.js.map +1 -0
  3. package/dist/{chunk-PJFEGUHM.js → chunk-7OLBLLV7.js} +6 -2
  4. package/dist/{chunk-PJFEGUHM.js.map → chunk-7OLBLLV7.js.map} +1 -1
  5. package/dist/{chunk-PUIYXJSZ.js → chunk-WMA6YCAS.js} +496 -41
  6. package/dist/chunk-WMA6YCAS.js.map +1 -0
  7. package/dist/{client-B-jmQ4UA.d.cts → client-C10qSd6b.d.ts} +1678 -285
  8. package/dist/{client-CatNn6FD.d.ts → client-Ct0soeip.d.cts} +1678 -285
  9. package/dist/helpers.cjs +141 -0
  10. package/dist/helpers.cjs.map +1 -1
  11. package/dist/helpers.d.cts +17 -3
  12. package/dist/helpers.d.ts +17 -3
  13. package/dist/helpers.js +127 -1
  14. package/dist/helpers.js.map +1 -1
  15. package/dist/index.cjs +595 -41
  16. package/dist/index.cjs.map +1 -1
  17. package/dist/index.d.cts +28 -5
  18. package/dist/index.d.ts +28 -5
  19. package/dist/index.js +123 -5
  20. package/dist/index.js.map +1 -1
  21. package/dist/internal.cjs +502 -41
  22. package/dist/internal.cjs.map +1 -1
  23. package/dist/internal.d.cts +630 -551
  24. package/dist/internal.d.ts +630 -551
  25. package/dist/internal.js +9 -5
  26. package/dist/internal.js.map +1 -1
  27. package/dist/{revision-state-Fw1jsQOa.d.ts → revision-state-C6aM-PHu.d.ts} +53 -172
  28. package/dist/{revision-state-CuESPYpi.d.cts → revision-state-CCPTiW-i.d.cts} +53 -172
  29. package/dist/schemas.cjs +31 -5
  30. package/dist/schemas.cjs.map +1 -1
  31. package/dist/schemas.d.cts +37 -14
  32. package/dist/schemas.d.ts +37 -14
  33. package/dist/schemas.js +31 -6
  34. package/dist/schemas.js.map +1 -1
  35. package/dist/{tasks-GVbVa_Lj.d.cts → tasks-WH_VfzMv.d.cts} +351 -16
  36. package/dist/{tasks-GVbVa_Lj.d.ts → tasks-WH_VfzMv.d.ts} +351 -16
  37. package/package.json +6 -6
  38. package/dist/chunk-2YLKG4TT.js.map +0 -1
  39. package/dist/chunk-PUIYXJSZ.js.map +0 -1
package/dist/internal.cjs CHANGED
@@ -122,6 +122,8 @@ __export(internal_exports, {
122
122
  JobPosition: () => JobPosition,
123
123
  JourneysApi: () => JourneysApi,
124
124
  MASKED_SECRET_SENTINEL: () => MASKED_SECRET_SENTINEL,
125
+ MEMBER_ENTITLEMENT_STATUSES: () => MEMBER_ENTITLEMENT_STATUSES,
126
+ MEMBER_SUBSCRIPTION_STATUSES: () => MEMBER_SUBSCRIPTION_STATUSES,
125
127
  McpServerState: () => McpServerState,
126
128
  McpServersApi: () => McpServersApi,
127
129
  MemberFeature: () => MemberFeature,
@@ -183,7 +185,6 @@ __export(internal_exports, {
183
185
  REALTIME_MODEL_CUSTOM: () => REALTIME_MODEL_CUSTOM,
184
186
  REALTIME_MODEL_GEMINI: () => REALTIME_MODEL_GEMINI,
185
187
  REALTIME_MODEL_GEMINI_VERTEX: () => REALTIME_MODEL_GEMINI_VERTEX,
186
- REALTIME_MODEL_NOVA_SONIC: () => REALTIME_MODEL_NOVA_SONIC,
187
188
  REALTIME_MODEL_OPENAI: () => REALTIME_MODEL_OPENAI,
188
189
  REALTIME_MODEL_OPENAI_2: () => REALTIME_MODEL_OPENAI_2,
189
190
  REALTIME_MODEL_OPENAI_MINI: () => REALTIME_MODEL_OPENAI_MINI,
@@ -251,6 +252,7 @@ __export(internal_exports, {
251
252
  bindCustomersMethods: () => bindCustomersMethods,
252
253
  bindDashboardsMethods: () => bindDashboardsMethods,
253
254
  bindDataTypesMethods: () => bindDataTypesMethods,
255
+ bindDevicesMethods: () => bindDevicesMethods,
254
256
  bindEventsMethods: () => bindEventsMethods,
255
257
  bindExperimentsMethods: () => bindExperimentsMethods,
256
258
  bindFilesMethods: () => bindFilesMethods,
@@ -413,6 +415,9 @@ var Scope = /* @__PURE__ */ ((Scope2) => {
413
415
  Scope2["FILES_READ"] = "files:read";
414
416
  Scope2["FILES_WRITE"] = "files:write";
415
417
  Scope2["FILES_ADMIN"] = "files:admin";
418
+ Scope2["DEVICES_READ"] = "devices:read";
419
+ Scope2["DEVICES_WRITE"] = "devices:write";
420
+ Scope2["DEVICES_ADMIN"] = "devices:admin";
416
421
  Scope2["SITES_READ"] = "sites:read";
417
422
  Scope2["SITES_WRITE"] = "sites:write";
418
423
  Scope2["SITES_ADMIN"] = "sites:admin";
@@ -575,6 +580,7 @@ var EventRuleEventType = /* @__PURE__ */ ((EventRuleEventType2) => {
575
580
  EventRuleEventType2["CALENDAR_EVENT_CANCELLED"] = "calendar_event:cancelled";
576
581
  EventRuleEventType2["CALENDAR_EVENT_STARTING"] = "calendar_event:starting";
577
582
  EventRuleEventType2["CALENDAR_EVENT_ENDED"] = "calendar_event:ended";
583
+ EventRuleEventType2["CALENDAR_EVENT_NO_SHOW"] = "calendar_event:no_show";
578
584
  EventRuleEventType2["CONNECTOR_EVENT"] = "connector:event";
579
585
  EventRuleEventType2["ASSIGNMENT_CONCLUDED"] = "assignment:concluded";
580
586
  EventRuleEventType2["JOURNEY_STEP_EXECUTE"] = "journey_step:execute";
@@ -657,7 +663,6 @@ var WorkspaceFeature = /* @__PURE__ */ ((WorkspaceFeature2) => {
657
663
  WorkspaceFeature2["CONFLUENCE"] = "confluence";
658
664
  WorkspaceFeature2["AGENT_MEMORY"] = "agent_memory";
659
665
  WorkspaceFeature2["IMAGE_GENERATION"] = "image_generation";
660
- WorkspaceFeature2["STRICT_NATIVE_VOICE"] = "strict_native_voice";
661
666
  WorkspaceFeature2["CHARLESTON_NEPHROLOGY_PMD_PAGING"] = "charleston_nephrology_pmd_paging";
662
667
  WorkspaceFeature2["PATIENTSYNC_TRANSFER"] = "patientsync_transfer";
663
668
  return WorkspaceFeature2;
@@ -697,6 +702,8 @@ var Resource = /* @__PURE__ */ ((Resource2) => {
697
702
  var ProductType = /* @__PURE__ */ ((ProductType2) => {
698
703
  ProductType2["ORG"] = "org";
699
704
  ProductType2["ADDON"] = "addon";
705
+ ProductType2["MEMBER"] = "member";
706
+ ProductType2["DEVICE"] = "device";
700
707
  return ProductType2;
701
708
  })(ProductType || {});
702
709
  var ORG_ONLY_RESOURCES = /* @__PURE__ */ new Set([
@@ -704,6 +711,27 @@ var ORG_ONLY_RESOURCES = /* @__PURE__ */ new Set([
704
711
  "org_admin" /* ORG_ADMIN */,
705
712
  "phone_number" /* PHONE_NUMBER */
706
713
  ]);
714
+ var MEMBER_SUBSCRIPTION_STATUSES = [
715
+ "creating",
716
+ "checkout_pending",
717
+ "checkout_failed",
718
+ "incomplete",
719
+ "incomplete_expired",
720
+ "trialing",
721
+ "active",
722
+ "past_due",
723
+ "unpaid",
724
+ "paused",
725
+ "canceled"
726
+ ];
727
+ var MEMBER_ENTITLEMENT_STATUSES = [
728
+ "pending",
729
+ "grant_pending",
730
+ "granted",
731
+ "revoked",
732
+ "superseded",
733
+ "needs_reconcile"
734
+ ];
707
735
 
708
736
  // src/types/workspace-types.ts
709
737
  var WorkspaceProvisionStatus = /* @__PURE__ */ ((WorkspaceProvisionStatus2) => {
@@ -816,7 +844,6 @@ var REALTIME_MODEL_OPENAI_MINI = "openai:realtime:gpt-realtime-mini";
816
844
  var REALTIME_MODEL_OPENAI_2 = "openai:realtime:gpt-realtime-2";
817
845
  var REALTIME_MODEL_GEMINI = "google:aistudio:gemini-3.1-flash-live";
818
846
  var REALTIME_MODEL_GEMINI_VERTEX = "google:vertex:gemini-3.1-flash-live";
819
- var REALTIME_MODEL_NOVA_SONIC = "aws:bedrock:nova-sonic-1";
820
847
  var REALTIME_MODEL_CUSTOM = "custom:realtime:composable";
821
848
  var STT_MODEL_DEEPGRAM_FLUX = "deepgram:stt:flux-general-en";
822
849
  var STT_MODEL_DEEPGRAM_FLUX_SELFHOST = "deepgram:stt:flux-general-en:selfhost";
@@ -1089,6 +1116,7 @@ var AbilityTypeSlugs = {
1089
1116
  SEND_WHATSAPP: "communication:send_whatsapp",
1090
1117
  MEMBER_ACCESS: "communication:member_access",
1091
1118
  AUDIO_PLAYBACK: "communication:audio_playback",
1119
+ IMAGE_DISPLAY: "communication:image_display",
1092
1120
  // Oversight
1093
1121
  SUPERVISOR: "oversight:supervisor",
1094
1122
  SUPERVISOR_ACTIONS: "oversight:supervisor_actions",
@@ -1097,6 +1125,7 @@ var AbilityTypeSlugs = {
1097
1125
  MEMBER_FIELD_VERIFICATION: "identity:member_field_verification",
1098
1126
  // Delegation
1099
1127
  CONTRIBUTOR: "delegation:contributor",
1128
+ MANAGE_WORKSPACE: "delegation:manage_workspace",
1100
1129
  // Workflow
1101
1130
  WORKFLOW_RUN: "workflow:run",
1102
1131
  // Commerce
@@ -1735,7 +1764,7 @@ function isChatType(value) {
1735
1764
 
1736
1765
  // src/constants/models.ts
1737
1766
  var DEFAULT_CHAT_MODEL = "aws:bedrock:claude-4-5-haiku";
1738
- var DEFAULT_VOICE_INFERENCE_MODEL = "google:vertex:gemini-3-flash";
1767
+ var DEFAULT_VOICE_INFERENCE_MODEL = "openai:chat:gpt-5.6-luna";
1739
1768
  var DEFAULT_CUSTOM_VOICE_MODEL = "elevenlabs:voice:river";
1740
1769
 
1741
1770
  // src/scopes.ts
@@ -1751,6 +1780,7 @@ var ScopeCategory = /* @__PURE__ */ ((ScopeCategory2) => {
1751
1780
  ScopeCategory2["DATATYPES"] = "datatypes";
1752
1781
  ScopeCategory2["RECORDS"] = "records";
1753
1782
  ScopeCategory2["FILES"] = "files";
1783
+ ScopeCategory2["DEVICES"] = "devices";
1754
1784
  ScopeCategory2["JOURNEYS"] = "journeys";
1755
1785
  ScopeCategory2["EXPERIMENTS"] = "experiments";
1756
1786
  ScopeCategory2["SITES"] = "sites";
@@ -1995,6 +2025,26 @@ var SCOPES = {
1995
2025
  implies: ["files:write"]
1996
2026
  },
1997
2027
  // =========================================================================
2028
+ // DEVICES
2029
+ // =========================================================================
2030
+ "devices:read": {
2031
+ name: "devices:read",
2032
+ category: "devices" /* DEVICES */,
2033
+ description: "View companion devices"
2034
+ },
2035
+ "devices:write": {
2036
+ name: "devices:write",
2037
+ category: "devices" /* DEVICES */,
2038
+ description: "Enrol and manage own companion devices",
2039
+ implies: ["devices:read"]
2040
+ },
2041
+ "devices:admin": {
2042
+ name: "devices:admin",
2043
+ category: "devices" /* DEVICES */,
2044
+ description: "List and revoke any companion device",
2045
+ implies: ["devices:write"]
2046
+ },
2047
+ // =========================================================================
1998
2048
  // JOURNEYS
1999
2049
  // =========================================================================
2000
2050
  "journeys:read": {
@@ -2697,7 +2747,11 @@ ${formattedErrors}`, response.status);
2697
2747
  throw error;
2698
2748
  }
2699
2749
  const errorMessage = typeof errorData.detail === "string" ? errorData.detail : errorData.message || response.statusText;
2700
- throw new ApiError(errorMessage, response.status);
2750
+ const simpleError = new ApiError(errorMessage, response.status);
2751
+ if (typeof errorData.code === "string") {
2752
+ simpleError.errorData = errorData;
2753
+ }
2754
+ throw simpleError;
2701
2755
  }
2702
2756
  if (response.status === 204) {
2703
2757
  return void 0;
@@ -3063,6 +3117,7 @@ var AgentsApi = class extends BaseApiClient {
3063
3117
  if (options.search) params.append("search", options.search);
3064
3118
  if (options.includeArchived)
3065
3119
  params.append("includeArchived", options.includeArchived.toString());
3120
+ if (options.owner) params.append("owner", options.owner);
3066
3121
  return this.fetch(
3067
3122
  `w/${wid}/agents${params.toString() ? `?${params.toString()}` : ""}`
3068
3123
  );
@@ -3456,33 +3511,36 @@ var AuthApi = class extends BaseApiClient {
3456
3511
  });
3457
3512
  }
3458
3513
  /** Initiate SMS login by sending a verification code to the given phone number. */
3459
- async login(phoneNumber, wid, organizationUuid) {
3514
+ async login(phoneNumber, wid, organizationUuid, isSignUp = false) {
3460
3515
  const params = new URLSearchParams();
3461
3516
  if (wid) params.append("wid", wid);
3462
3517
  const body = { phoneNumber: sanitizePhoneForBackend(phoneNumber) };
3463
3518
  if (organizationUuid) body.organizationUuid = organizationUuid;
3519
+ if (isSignUp) body.isSignUp = true;
3464
3520
  return await this.fetch(`auth/login?${params.toString()}`, {
3465
3521
  method: "POST",
3466
3522
  body: JSON.stringify(body)
3467
3523
  });
3468
3524
  }
3469
3525
  /** Resend the SMS verification code to the given phone number. */
3470
- async resendCode(phoneNumber, organizationUuid) {
3526
+ async resendCode(phoneNumber, organizationUuid, isSignUp = false) {
3471
3527
  const body = { phoneNumber: sanitizePhoneForBackend(phoneNumber) };
3472
3528
  if (organizationUuid) body.organizationUuid = organizationUuid;
3529
+ if (isSignUp) body.isSignUp = true;
3473
3530
  return await this.fetch("auth/resend-code", {
3474
3531
  method: "POST",
3475
3532
  body: JSON.stringify(body)
3476
3533
  });
3477
3534
  }
3478
3535
  /** Verify an SMS code and complete authentication, handling 2FA if required. */
3479
- async verifyCodeWith2FA(phoneNumber, code, organizationUuid) {
3536
+ async verifyCodeWith2FA(phoneNumber, code, organizationUuid, isSignUp = false) {
3480
3537
  const verifyResponse = await this.fetch("auth/verify-with-2fa", {
3481
3538
  method: "POST",
3482
3539
  body: JSON.stringify({
3483
3540
  phoneNumber: sanitizePhoneForBackend(phoneNumber),
3484
3541
  code,
3485
- organizationUuid
3542
+ organizationUuid,
3543
+ isSignUp
3486
3544
  })
3487
3545
  });
3488
3546
  if (!verifyResponse.requiresTwoFactor && verifyResponse.token) {
@@ -3732,14 +3790,17 @@ var AuthApi = class extends BaseApiClient {
3732
3790
  // ===== CREDENTIAL CHANGE METHODS =====
3733
3791
  /**
3734
3792
  * Request to change email or phone credential.
3735
- * Sends an OTP to the NEW credential to verify ownership.
3793
+ * Sends an OTP to the NEW credential to verify ownership. For phone, the
3794
+ * code can be delivered by SMS (default) or read aloud over a voice call
3795
+ * (`deliveryMethod: 'voice'`) so landlines can be verified too.
3736
3796
  */
3737
- async requestCredentialChange(credentialType, newValue) {
3797
+ async requestCredentialChange(credentialType, newValue, deliveryMethod = "sms") {
3738
3798
  return this.fetch("account/request-credential-change", {
3739
3799
  method: "POST",
3740
3800
  body: JSON.stringify({
3741
3801
  credential_type: credentialType,
3742
- new_value: newValue
3802
+ new_value: newValue,
3803
+ delivery_method: deliveryMethod
3743
3804
  })
3744
3805
  });
3745
3806
  }
@@ -4021,10 +4082,12 @@ var CalendarsApi = class extends BaseApiClient {
4021
4082
  }
4022
4083
  /** Generate or regenerate an iCal feed token for a calendar. */
4023
4084
  async generateICalToken(wid, calendarId, regenerate = false) {
4024
- return this.fetch(`w/${wid}/calendars/${calendarId}/ical-token`, {
4025
- method: "POST",
4026
- body: JSON.stringify({ regenerate })
4027
- });
4085
+ const qs = new URLSearchParams();
4086
+ qs.set("regenerate", regenerate ? "true" : "false");
4087
+ return this.fetch(
4088
+ `w/${wid}/calendars/${calendarId}/ical-token?${qs.toString()}`,
4089
+ { method: "POST" }
4090
+ );
4028
4091
  }
4029
4092
  /** Revoke the iCal feed token for a calendar, disabling external feed access. */
4030
4093
  async revokeICalToken(wid, calendarId) {
@@ -4982,6 +5045,34 @@ var DataTypesApi = class extends BaseApiClient {
4982
5045
  async getFieldIndexStatus(wid, dataTypeId, fieldSlug) {
4983
5046
  return this.fetch(`w/${wid}/data-types/${dataTypeId}/fields/${fieldSlug}/index-status`);
4984
5047
  }
5048
+ /**
5049
+ * Preview renaming a field's slug — read-only.
5050
+ *
5051
+ * A field slug is the key its answers are stored under, so a rename moves
5052
+ * stored data. This reports whether the new slug is allowed, how many records
5053
+ * would move, and every configured place still naming the old slug (CEL,
5054
+ * templates, sync maps) which this rename does NOT rewrite.
5055
+ */
5056
+ async previewRenameFieldSlug(wid, dataTypeId, fieldSlug, newSlug) {
5057
+ return this.fetch(
5058
+ `w/${wid}/data-types/${dataTypeId}/fields/${fieldSlug}/rename-preview`,
5059
+ { method: "POST", body: JSON.stringify({ newSlug }) }
5060
+ );
5061
+ }
5062
+ /**
5063
+ * Rename a field's slug, preserving stored answers.
5064
+ *
5065
+ * The schema change commits synchronously; the answers are moved by the
5066
+ * existing cleanup workflow, so this resolves on ACCEPTANCE, not completion.
5067
+ * Call {@link previewRenameFieldSlug} first — references naming the old slug
5068
+ * are reported, never rewritten.
5069
+ */
5070
+ async renameFieldSlug(wid, dataTypeId, fieldSlug, newSlug) {
5071
+ return this.fetch(
5072
+ `w/${wid}/data-types/${dataTypeId}/fields/${fieldSlug}/rename`,
5073
+ { method: "POST", body: JSON.stringify({ newSlug }) }
5074
+ );
5075
+ }
4985
5076
  /**
4986
5077
  * Validate if a data type slug is available.
4987
5078
  * Returns availability and a suggested alternative if taken.
@@ -5004,6 +5095,44 @@ function isUuid(value) {
5004
5095
  return /^[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/i.test(value);
5005
5096
  }
5006
5097
 
5098
+ // src/api/devices.ts
5099
+ var DevicesApi = class extends BaseApiClient {
5100
+ /** List devices visible to the caller (own devices, or all with devices:admin). */
5101
+ async getDevices(wid, options = {}) {
5102
+ const qs = options.mine ? "?mine=true" : "";
5103
+ return this.fetch(`w/${wid}/devices${qs}`);
5104
+ }
5105
+ /** Fetch one device by UUID. Non-owners without devices:admin receive 404. */
5106
+ async getDevice(wid, deviceUuid) {
5107
+ return this.fetch(`w/${wid}/devices/${deviceUuid}`);
5108
+ }
5109
+ /** List shippable companion-device products (Lantern, later SKUs). */
5110
+ async getDeviceKinds(wid) {
5111
+ return this.fetch(`w/${wid}/devices/kinds`);
5112
+ }
5113
+ /** Claim a pairing code shown on a companion device. Requires devices:write. */
5114
+ async claimDevicePairing(wid, body) {
5115
+ return this.fetch(`w/${wid}/devices/pairing/claim`, {
5116
+ method: "POST",
5117
+ body: JSON.stringify(body)
5118
+ });
5119
+ }
5120
+ /** Update display name and/or LAN capability flags. Requires devices:write. */
5121
+ async updateDevice(wid, deviceUuid, body) {
5122
+ return this.fetch(`w/${wid}/devices/${deviceUuid}`, {
5123
+ method: "PATCH",
5124
+ body: JSON.stringify(body)
5125
+ });
5126
+ }
5127
+ /** Revoke a device credential. The device must pair again. Requires devices:write. */
5128
+ async revokeDevice(wid, deviceUuid) {
5129
+ return this.fetch(`w/${wid}/devices/${deviceUuid}/revoke`, {
5130
+ method: "POST",
5131
+ body: JSON.stringify({})
5132
+ });
5133
+ }
5134
+ };
5135
+
5007
5136
  // src/api/discord-bots.ts
5008
5137
  var DiscordBotsApi = class extends BaseApiClient {
5009
5138
  /**
@@ -5434,6 +5563,7 @@ var EventsApi = class extends BaseApiClient {
5434
5563
  if (options.sortBy) params.append("sortBy", options.sortBy);
5435
5564
  if (options.sortOrder) params.append("sortOrder", options.sortOrder);
5436
5565
  if (options.owner) params.append("owner", options.owner);
5566
+ if (options.ownerId) params.append("ownerId", options.ownerId.toString());
5437
5567
  return this.fetch(
5438
5568
  `w/${wid}/routines${params.toString() ? `?${params.toString()}` : ""}`
5439
5569
  );
@@ -6455,12 +6585,37 @@ var InboxesApi = class extends BaseApiClient {
6455
6585
  });
6456
6586
  }
6457
6587
  /** Reply to an email from the inbox. */
6458
- async replyToEmail(wid, inboxId, emailId, content) {
6588
+ async replyToEmail(wid, inboxId, emailId, content, htmlContent) {
6589
+ const body = { content, htmlContent };
6459
6590
  return this.fetch(`w/${wid}/inboxes/${inboxId}/emails/${emailId}/reply`, {
6460
6591
  method: "POST",
6461
- body: JSON.stringify({ content })
6592
+ body: JSON.stringify(body)
6462
6593
  });
6463
6594
  }
6595
+ /** Compose and send a new email from an inbox. */
6596
+ async sendInboxEmail(wid, inboxId, body) {
6597
+ return this.fetch(`w/${wid}/inboxes/${inboxId}/emails`, {
6598
+ method: "POST",
6599
+ body: JSON.stringify(body)
6600
+ });
6601
+ }
6602
+ /**
6603
+ * Make a stored email's sender a Member of this workspace.
6604
+ *
6605
+ * The explicit alternative to auto-signup for inboxes that accept
6606
+ * non-member mail. Requires `members:write` AND `inboxes:read`. Responds
6607
+ * 409 when a Member already holds the address — gate the call on
6608
+ * `Email.senderIsMember` rather than discovering it from the error.
6609
+ */
6610
+ async addEmailSenderAsMember(wid, inboxId, emailId, body) {
6611
+ return this.fetch(
6612
+ `w/${wid}/inboxes/${inboxId}/emails/${emailId}/add-sender-as-member`,
6613
+ {
6614
+ method: "POST",
6615
+ body: JSON.stringify(body)
6616
+ }
6617
+ );
6618
+ }
6464
6619
  /** Convert an email to text, markdown, or PDF format. */
6465
6620
  async convertEmail(wid, inboxId, emailId, format = "pdf") {
6466
6621
  return this.fetch(
@@ -6803,6 +6958,54 @@ var MembersApi = class extends BaseApiClient {
6803
6958
  async getCurrentMember(wid) {
6804
6959
  return this.fetch(`w/${wid}/me`);
6805
6960
  }
6961
+ /**
6962
+ * One row per workflow available to the member, with its voice state
6963
+ * (Custom Voice). Own-data-or-scope: a member reads their OWN rows with
6964
+ * no member scope; others need members:read.
6965
+ */
6966
+ async getMemberWorkflowVoices(wid, memberId) {
6967
+ return this.fetch(
6968
+ `w/${wid}/members/${memberId}/workflow-voices`
6969
+ );
6970
+ }
6971
+ /** Audition a voice the member can pick for this workflow (PCM16). */
6972
+ async previewMemberWorkflowVoice(wid, memberId, workflowId, body) {
6973
+ const response = await this.fetchRaw(
6974
+ `w/${wid}/members/${memberId}/workflow-voices/${workflowId}/preview`,
6975
+ { method: "POST", body: JSON.stringify(body) }
6976
+ );
6977
+ return response.arrayBuffer();
6978
+ }
6979
+ /** Set the member's preferred voice for one workflow (Custom Voice). */
6980
+ async setMemberWorkflowVoice(wid, memberId, workflowId, body) {
6981
+ return this.fetch(
6982
+ `w/${wid}/members/${memberId}/workflow-voices/${workflowId}`,
6983
+ { method: "PUT", body: JSON.stringify(body) }
6984
+ );
6985
+ }
6986
+ /** Clear the member's preferred voice for one workflow (Custom Voice). */
6987
+ async clearMemberWorkflowVoice(wid, memberId, workflowId) {
6988
+ return this.fetch(
6989
+ `w/${wid}/members/${memberId}/workflow-voices/${workflowId}`,
6990
+ { method: "DELETE" }
6991
+ );
6992
+ }
6993
+ /**
6994
+ * Member-scoped DataTypes the current member may use (self-access — works
6995
+ * on a Site session, which can hold no records scope by construction).
6996
+ */
6997
+ async getMyDataTypes(wid) {
6998
+ return this.fetch(`w/${wid}/me/data-types`);
6999
+ }
7000
+ /** The current member's own records for one DataType (self-access). */
7001
+ async getMyRecords(wid, dataTypeId, options) {
7002
+ const params = new URLSearchParams({ data_type_id: String(dataTypeId) });
7003
+ if (options?.page) params.set("page", String(options.page));
7004
+ if (options?.pageSize) params.set("page_size", String(options.pageSize));
7005
+ return this.fetch(
7006
+ `w/${wid}/me/records?${params.toString()}`
7007
+ );
7008
+ }
6806
7009
  /**
6807
7010
  * Get all members owned by the current member in this workspace.
6808
7011
  * Returns the authenticated member plus any members they own (via owner_id).
@@ -7713,7 +7916,11 @@ var OrgApi = class extends BaseApiClient {
7713
7916
  });
7714
7917
  }
7715
7918
  /**
7716
- * Get the billing customer UUID for an organization.
7919
+ * Get the billing customer and this organization's billable subscription.
7920
+ *
7921
+ * `subscriptionId` is the org-scoped row — never pick the customer's
7922
+ * newest subscription from the list endpoint. One customer can bill many
7923
+ * organizations.
7717
7924
  */
7718
7925
  async getOrgBillingCustomer(orgIdOrUuid) {
7719
7926
  return this.fetch(`o/${orgIdOrUuid}/billing-customer`);
@@ -8053,6 +8260,17 @@ var OrgApi = class extends BaseApiClient {
8053
8260
  async getOrgDomainSite(orgIdOrUuid, domainUuid) {
8054
8261
  return this.fetch(`o/${orgIdOrUuid}/domains/${domainUuid}/site`);
8055
8262
  }
8263
+ /**
8264
+ * Pre-enable DNS check: is the site CNAME resolving to the routing
8265
+ * endpoint yet? Pure DNS — consumes no enable budget.
8266
+ */
8267
+ async preflightOrgDomainSite(orgIdOrUuid, domainUuid) {
8268
+ return this.fetch(
8269
+ `o/${orgIdOrUuid}/domains/${domainUuid}/site/preflight`,
8270
+ // Empty JSON body: the route requires one as a CSRF barrier.
8271
+ { method: "POST", body: JSON.stringify({}) }
8272
+ );
8273
+ }
8056
8274
  /**
8057
8275
  * Verify the site CNAME points at the Gravity Rail sites domain.
8058
8276
  */
@@ -8096,10 +8314,10 @@ var OrgApi = class extends BaseApiClient {
8096
8314
  * is required — brands register per legal entity (Customer Profile);
8097
8315
  * there is no primary-entity fallback.
8098
8316
  */
8099
- async startA2PRegistration(orgUuid, legalEntityUuid, brandName, brandDescription, brandUuid = null) {
8317
+ async startA2PRegistration(orgUuid, legalEntityUuid, brandName, brandUuid = null) {
8100
8318
  return this.fetch(`o/${orgUuid}/phone-numbers/a2p/start`, {
8101
8319
  method: "POST",
8102
- body: JSON.stringify({ legalEntityUuid, brandName, brandDescription, brandUuid })
8320
+ body: JSON.stringify({ legalEntityUuid, brandName, brandUuid })
8103
8321
  });
8104
8322
  }
8105
8323
  /**
@@ -8203,7 +8421,12 @@ var OrgApi = class extends BaseApiClient {
8203
8421
  * Reconcile trust product state against Twilio (discovery + status
8204
8422
  * refresh). Returns the refreshed products plus which product keys were
8205
8423
  * newly discovered. Responds 409 when another Trust Hub operation holds
8206
- * the org lock — retry shortly rather than queueing.
8424
+ * this legal entity's lock, failing fast rather than queueing.
8425
+ *
8426
+ * No `Retry-After` is sent, deliberately (#23601): holders range from a
8427
+ * sub-second JSONB write to a multi-minute Twilio sequence, so no interval
8428
+ * would be honest. Back off on your own schedule, and re-read before
8429
+ * retrying — the operation you collided with may have committed SIDs.
8207
8430
  */
8208
8431
  async syncVoiceTrustProducts(orgUuid, legalEntityUuid) {
8209
8432
  return this.fetch(
@@ -8236,6 +8459,16 @@ var OrgApi = class extends BaseApiClient {
8236
8459
  async listA2PBrands(orgUuid) {
8237
8460
  return this.fetch(`o/${orgUuid}/a2p-brands`);
8238
8461
  }
8462
+ /**
8463
+ * Live per-brand campaign use-case eligibility. Approved brands only — a
8464
+ * brand still under TCR review comes back as a structured 412 the picker
8465
+ * renders as the supported-list fallback, not an error.
8466
+ */
8467
+ async getA2PBrandUseCases(orgUuid, brandUuid) {
8468
+ return this.fetch(
8469
+ `o/${orgUuid}/a2p-brands/${brandUuid}/use-cases`
8470
+ );
8471
+ }
8239
8472
  /**
8240
8473
  * Fetch a brand's resolved A2P campaign config. The response carries both the
8241
8474
  * raw `overrides` and the `resolved` payload (defaults + overrides) the editor
@@ -8907,6 +9140,20 @@ var ProjectsApi = class extends BaseApiClient {
8907
9140
  `w/${wid}/projects/${encodeURIComponent(slug)}/plans/${encodeURIComponent(plan)}`
8908
9141
  );
8909
9142
  }
9143
+ /** Typed update of a project README; absent fields are untouched. */
9144
+ async updateProject(wid, slug, update) {
9145
+ return this.fetch(`w/${wid}/projects/${encodeURIComponent(slug)}`, {
9146
+ method: "PATCH",
9147
+ body: JSON.stringify(update)
9148
+ });
9149
+ }
9150
+ /** Typed update of a plan README; absent fields are untouched. */
9151
+ async updatePlan(wid, slug, plan, update) {
9152
+ return this.fetch(
9153
+ `w/${wid}/projects/${encodeURIComponent(slug)}/plans/${encodeURIComponent(plan)}`,
9154
+ { method: "PATCH", body: JSON.stringify(update) }
9155
+ );
9156
+ }
8910
9157
  };
8911
9158
 
8912
9159
  // src/api/qualifications.ts
@@ -9174,6 +9421,26 @@ var SalesforceApi = class extends BaseApiClient {
9174
9421
  }
9175
9422
  );
9176
9423
  }
9424
+ /**
9425
+ * Pull linked members' Salesforce records now, ignoring the sync cursor.
9426
+ *
9427
+ * The inbound poll only ever returns records modified after the stored
9428
+ * cursor, so a member linked to a record that has not changed since is
9429
+ * unreachable by any poll and its link never receives a field — silently.
9430
+ * This fetches the records by Id and leaves the cursor untouched, so it is
9431
+ * safe to call at any time.
9432
+ *
9433
+ * Omit `memberIds` to resync every linked member (capped server-side).
9434
+ */
9435
+ async resyncSalesforceLinkedMembers(wid, data = {}) {
9436
+ return this.fetch(
9437
+ `w/${wid}/app-connections/salesforce/sync/resync-members`,
9438
+ {
9439
+ method: "POST",
9440
+ body: JSON.stringify(data)
9441
+ }
9442
+ );
9443
+ }
9177
9444
  /**
9178
9445
  * List the sObjects available in the connected org.
9179
9446
  *
@@ -9773,6 +10040,62 @@ var SubscriptionsApi = class extends BaseApiClient {
9773
10040
  headers: { "Content-Type": "application/json" }
9774
10041
  });
9775
10042
  }
10043
+ /** Purchase a role-granting membership in an existing workspace. */
10044
+ async createMemberCheckoutSession(productId, planPeriod = "month", options = {}) {
10045
+ return this.fetch(`subscriptions/member-checkout-session`, {
10046
+ method: "POST",
10047
+ credentials: "include",
10048
+ body: JSON.stringify({ productId, planPeriod, ...options }),
10049
+ headers: { "Content-Type": "application/json" }
10050
+ });
10051
+ }
10052
+ async getMemberSubscriptionStatus(siteUuidOrOptions) {
10053
+ const options = typeof siteUuidOrOptions === "string" ? { siteUuid: siteUuidOrOptions } : siteUuidOrOptions;
10054
+ const params = new URLSearchParams();
10055
+ if (options.siteUuid) params.set("siteUuid", options.siteUuid);
10056
+ if (options.workspaceUuid) params.set("workspaceUuid", options.workspaceUuid);
10057
+ return this.fetch(
10058
+ `subscriptions/member-subscription?${params.toString()}`,
10059
+ { credentials: "include" }
10060
+ );
10061
+ }
10062
+ /** Open Stripe's hosted membership-management portal. */
10063
+ async createMemberPortalSession(options) {
10064
+ return this.fetch(`subscriptions/member-portal-session`, {
10065
+ method: "POST",
10066
+ credentials: "include",
10067
+ body: JSON.stringify(options),
10068
+ headers: { "Content-Type": "application/json" }
10069
+ });
10070
+ }
10071
+ /**
10072
+ * Purchase one physical companion device (one-time payment; Stripe collects
10073
+ * the shipping address in hosted Checkout).
10074
+ */
10075
+ async createDeviceOrderCheckoutSession(productId, options = {}) {
10076
+ return this.fetch(`device-orders/checkout-session`, {
10077
+ method: "POST",
10078
+ credentials: "include",
10079
+ body: JSON.stringify({ productId, ...options }),
10080
+ headers: { "Content-Type": "application/json" }
10081
+ });
10082
+ }
10083
+ /** List the authenticated Account's own device orders in one workspace. */
10084
+ async listDeviceOrders(options) {
10085
+ const params = new URLSearchParams();
10086
+ if (options.siteUuid) params.set("siteUuid", options.siteUuid);
10087
+ if (options.workspaceUuid) params.set("workspaceUuid", options.workspaceUuid);
10088
+ return this.fetch(`device-orders?${params.toString()}`, {
10089
+ credentials: "include"
10090
+ });
10091
+ }
10092
+ /** Read one authenticated, server-owned checkout attempt. */
10093
+ async getCheckoutAttemptStatus(attemptId) {
10094
+ return this.fetch(
10095
+ `subscriptions/checkout-attempts/${encodeURIComponent(attemptId)}`,
10096
+ { credentials: "include" }
10097
+ );
10098
+ }
9776
10099
  /**
9777
10100
  * List self-service, purchasable organization plans or add-ons. Only products
9778
10101
  * with a Stripe Price are returned; zero-amount plans are allowed.
@@ -9977,6 +10300,9 @@ var CustomersApi = class extends BaseApiClient {
9977
10300
  if (opts?.status) params.set("status", opts.status);
9978
10301
  if (opts?.page !== void 0) params.set("page", String(opts.page));
9979
10302
  if (opts?.pageSize !== void 0) params.set("page_size", String(opts.pageSize));
10303
+ if (opts?.subscriptionId !== void 0) {
10304
+ params.set("subscription_id", String(opts.subscriptionId));
10305
+ }
9980
10306
  const qs = params.toString();
9981
10307
  return this.fetch(`customers/${uuid}/subscriptions${qs ? "?" + qs : ""}`);
9982
10308
  }
@@ -10980,28 +11306,36 @@ var WorkflowsApi = class extends BaseApiClient {
10980
11306
  };
10981
11307
 
10982
11308
  // src/api/workflow-notes.ts
11309
+ function notesPath(wid, workflowId, noteId, query) {
11310
+ const base = noteId == null ? `w/${wid}/workflows/${workflowId}/notes` : `w/${wid}/workflows/${workflowId}/notes/${noteId}`;
11311
+ if (query?.workflowRevisionId == null) return base;
11312
+ const params = new URLSearchParams({
11313
+ workflowRevisionId: String(query.workflowRevisionId)
11314
+ });
11315
+ return `${base}?${params.toString()}`;
11316
+ }
10983
11317
  var WorkflowNotesApi = class extends BaseApiClient {
10984
- /** List all notes for a specific workflow. */
10985
- async getWorkflowNotes(wid, workflowId) {
10986
- return this.fetch(`w/${wid}/workflows/${workflowId}/notes`);
11318
+ /** List notes for a workflow root (draft unless `workflowRevisionId` is set). */
11319
+ async getWorkflowNotes(wid, workflowId, query) {
11320
+ return this.fetch(notesPath(wid, workflowId, void 0, query));
10987
11321
  }
10988
- /** Create a new note on a workflow. */
10989
- async createWorkflowNote(wid, workflowId, data) {
10990
- return this.fetch(`w/${wid}/workflows/${workflowId}/notes`, {
11322
+ /** Create a new note on a workflow's draft (or a pinned draft revision). */
11323
+ async createWorkflowNote(wid, workflowId, data, query) {
11324
+ return this.fetch(notesPath(wid, workflowId, void 0, query), {
10991
11325
  method: "POST",
10992
11326
  body: JSON.stringify(data)
10993
11327
  });
10994
11328
  }
10995
11329
  /** Update an existing workflow note with partial data. */
10996
- async updateWorkflowNote(wid, workflowId, noteId, data) {
10997
- return this.fetch(`w/${wid}/workflows/${workflowId}/notes/${noteId}`, {
11330
+ async updateWorkflowNote(wid, workflowId, noteId, data, query) {
11331
+ return this.fetch(notesPath(wid, workflowId, noteId, query), {
10998
11332
  method: "PUT",
10999
11333
  body: JSON.stringify(data)
11000
11334
  });
11001
11335
  }
11002
11336
  /** Delete a workflow note by ID. */
11003
- async deleteWorkflowNote(wid, workflowId, noteId) {
11004
- return this.fetch(`w/${wid}/workflows/${workflowId}/notes/${noteId}`, {
11337
+ async deleteWorkflowNote(wid, workflowId, noteId, query) {
11338
+ return this.fetch(notesPath(wid, workflowId, noteId, query), {
11005
11339
  method: "DELETE"
11006
11340
  });
11007
11341
  }
@@ -11395,6 +11729,13 @@ var WorkspacesApi = class extends BaseApiClient {
11395
11729
  signal: options?.signal
11396
11730
  });
11397
11731
  }
11732
+ /** Provision the one-month direct organization plan carried by a promo code. */
11733
+ async startPromoPlanTrial(request) {
11734
+ return this.fetch("promo-codes/plan-trial", {
11735
+ method: "POST",
11736
+ body: JSON.stringify(request)
11737
+ });
11738
+ }
11398
11739
  /** Get a publicly accessible product by ID. */
11399
11740
  async getPublicProduct(id) {
11400
11741
  return this.fetch(`products/${id}`);
@@ -11445,15 +11786,47 @@ var WorkspacesApi = class extends BaseApiClient {
11445
11786
  })
11446
11787
  });
11447
11788
  }
11448
- /** Import workspace configuration from exported data. */
11449
- async importWorkspace(wid, exportData, importMappings, createNew) {
11789
+ /** Download a workspace export ZIP (``export.json`` + file blobs). */
11790
+ async exportWorkspaceZip(wid, workflowId, scope, exclude) {
11791
+ const searchParams = new URLSearchParams();
11792
+ if (workflowId !== void 0) searchParams.set("workflow_id", String(workflowId));
11793
+ if (scope !== void 0) searchParams.set("scope", scope);
11794
+ if (exclude !== void 0) searchParams.set("exclude", exclude);
11795
+ const qs = searchParams.toString();
11796
+ const response = await this.fetchRaw(`w/${wid}/export.zip${qs ? `?${qs}` : ""}`);
11797
+ return response.arrayBuffer();
11798
+ }
11799
+ /** Import workspace configuration from exported JSON, or from a ZIP archive.
11800
+ * Pass ``archive`` (the ZIP from ``exportWorkspaceZip``) to restore file
11801
+ * contents. ``exportData`` may be omitted when the ZIP contains it.
11802
+ */
11803
+ async importWorkspace(wid, exportData, importMappings, createNew, archive) {
11804
+ const payload = {
11805
+ importMappings,
11806
+ createNew
11807
+ };
11808
+ if (exportData) {
11809
+ payload.exportData = exportData;
11810
+ }
11811
+ if (archive) {
11812
+ const form = new FormData();
11813
+ form.append(
11814
+ "request",
11815
+ new Blob([JSON.stringify(payload)], { type: "application/json" }),
11816
+ "import.json"
11817
+ );
11818
+ form.append("archive", archive, "workspace-export.zip");
11819
+ return this.fetch(`w/${wid}/import.zip`, {
11820
+ method: "POST",
11821
+ body: form
11822
+ });
11823
+ }
11824
+ if (!exportData) {
11825
+ throw new Error("exportData is required for JSON import");
11826
+ }
11450
11827
  return this.fetch(`w/${wid}/import`, {
11451
11828
  method: "POST",
11452
- body: JSON.stringify({
11453
- exportData,
11454
- importMappings,
11455
- createNew
11456
- })
11829
+ body: JSON.stringify(payload)
11457
11830
  });
11458
11831
  }
11459
11832
  /** Preview a workspace import using the legacy untyped interface. */
@@ -11495,7 +11868,6 @@ var WorkspacesApi = class extends BaseApiClient {
11495
11868
  * Get billing dashboard data for a workspace.
11496
11869
  *
11497
11870
  * This endpoint is available to organization owners (with org:info scope).
11498
- * Superusers should use the admin endpoint via getWorkspaceUsageDashboard.
11499
11871
  *
11500
11872
  * Returns comprehensive billing information including:
11501
11873
  * - Subscription status and plan details
@@ -11530,6 +11902,7 @@ function createApiModules(apiKey, baseUrl, customFetch) {
11530
11902
  customToolkits: new CustomToolkitsApi(apiKey, baseUrl, customFetch),
11531
11903
  dashboards: new DashboardsApi(apiKey, baseUrl, customFetch),
11532
11904
  dataTypes: new DataTypesApi(apiKey, baseUrl, customFetch),
11905
+ devices: new DevicesApi(apiKey, baseUrl, customFetch),
11533
11906
  discordBots: new DiscordBotsApi(apiKey, baseUrl, customFetch),
11534
11907
  slackApps: new SlackAppsApi(apiKey, baseUrl, customFetch),
11535
11908
  teamsApps: new TeamsAppsApi(apiKey, baseUrl, customFetch),
@@ -11588,6 +11961,7 @@ function createApiModules(apiKey, baseUrl, customFetch) {
11588
11961
  // src/client/workspace-client.ts
11589
11962
  var WORKSPACE_METHOD_NAMES = [
11590
11963
  "activateWorkflowRevision",
11964
+ "addEmailSenderAsMember",
11591
11965
  "addGroupMember",
11592
11966
  "advanceStep",
11593
11967
  "approveWorkspaceInvitation",
@@ -11618,6 +11992,7 @@ var WORKSPACE_METHOD_NAMES = [
11618
11992
  "checkAvailability",
11619
11993
  "checkSiteDomainAvailability",
11620
11994
  "checkSiteSlugAvailability",
11995
+ "claimDevicePairing",
11621
11996
  "clearConnectionMemberExclusion",
11622
11997
  "clearMemberSwitch",
11623
11998
  "clearTrackedLinkDestinations",
@@ -11805,6 +12180,7 @@ var WORKSPACE_METHOD_NAMES = [
11805
12180
  "exportMembers",
11806
12181
  "exportPhoneNumberOutboundAnalyticsCsv",
11807
12182
  "exportWorkspace",
12183
+ "exportWorkspaceZip",
11808
12184
  "fetchVoicemailAudio",
11809
12185
  "fhirBackfillEncounterSync",
11810
12186
  "fhirCheckPatientLinks",
@@ -11901,6 +12277,11 @@ var WORKSPACE_METHOD_NAMES = [
11901
12277
  "getConnectionSyncConfig",
11902
12278
  "getCredentialUpdateInvites",
11903
12279
  "getCurrentMember",
12280
+ "clearMemberWorkflowVoice",
12281
+ "getMemberWorkflowVoices",
12282
+ "getMyDataTypes",
12283
+ "getMyRecords",
12284
+ "setMemberWorkflowVoice",
11904
12285
  "getCurrentSmsChat",
11905
12286
  "getCustomToolkit",
11906
12287
  "getCustomToolkits",
@@ -11918,6 +12299,9 @@ var WORKSPACE_METHOD_NAMES = [
11918
12299
  "getDataTypeByUuid",
11919
12300
  "getDataTypeBySlug",
11920
12301
  "getDataTypes",
12302
+ "getDevice",
12303
+ "getDeviceKinds",
12304
+ "getDevices",
11921
12305
  "getDiscordBot",
11922
12306
  "getDiscordBotAccounts",
11923
12307
  "getDiscordBotByUuid",
@@ -12071,6 +12455,7 @@ var WORKSPACE_METHOD_NAMES = [
12071
12455
  "getPublicFolderFiles",
12072
12456
  "getPublicProducts",
12073
12457
  "previewPromoCode",
12458
+ "startPromoPlanTrial",
12074
12459
  "getQualification",
12075
12460
  "getQualifications",
12076
12461
  "getRecordingInfo",
@@ -12218,6 +12603,8 @@ var WORKSPACE_METHOD_NAMES = [
12218
12603
  "markNotificationAsRead",
12219
12604
  "mergeMemberRoles",
12220
12605
  "previewImportMembers",
12606
+ "previewMemberWorkflowVoice",
12607
+ "previewRenameFieldSlug",
12221
12608
  "previewImportWorkspace",
12222
12609
  "previewRoutineWorkflowAccess",
12223
12610
  "previewSchedule",
@@ -12230,6 +12617,7 @@ var WORKSPACE_METHOD_NAMES = [
12230
12617
  "rateMessage",
12231
12618
  "getChatFeedback",
12232
12619
  "reenrollMember",
12620
+ "renameFieldSlug",
12233
12621
  "registerLinkedRolesMetadata",
12234
12622
  "registerPushSubscription",
12235
12623
  "reindexFolder",
@@ -12249,6 +12637,7 @@ var WORKSPACE_METHOD_NAMES = [
12249
12637
  "restoreFileVersion",
12250
12638
  "revokeAccessGrant",
12251
12639
  "revokeApiKey",
12640
+ "revokeDevice",
12252
12641
  "revokeICalToken",
12253
12642
  "runRoutine",
12254
12643
  "searchEventRules",
@@ -12258,6 +12647,7 @@ var WORKSPACE_METHOD_NAMES = [
12258
12647
  "selectCurrentAssignmentTask",
12259
12648
  "sendAssistantMessage",
12260
12649
  "sendChatMessage",
12650
+ "sendInboxEmail",
12261
12651
  "sendOperatorMessage",
12262
12652
  "siteGoogleOAuthInitiate",
12263
12653
  "siteSendEmailCode",
@@ -12319,6 +12709,7 @@ var WORKSPACE_METHOD_NAMES = [
12319
12709
  "updateDataRecord",
12320
12710
  "updateDataRecordFilter",
12321
12711
  "updateDataType",
12712
+ "updateDevice",
12322
12713
  "updateDiscordBot",
12323
12714
  "updateEventAttendee",
12324
12715
  "updateEventRule",
@@ -12352,9 +12743,12 @@ var WORKSPACE_METHOD_NAMES = [
12352
12743
  "updatePersona",
12353
12744
  "updatePhoneNumber",
12354
12745
  "updatePlatformApp",
12746
+ "updatePlan",
12355
12747
  "updateProduct",
12748
+ "updateProject",
12356
12749
  "updateRoutine",
12357
12750
  "updateSalesforceSyncConfig",
12751
+ "resyncSalesforceLinkedMembers",
12358
12752
  "updateScenario",
12359
12753
  "updateSite",
12360
12754
  "updateSiteSharing",
@@ -12574,6 +12968,8 @@ function bindDataTypesMethods(target, dataTypes) {
12574
12968
  target.getDataRecordChanges = dataTypes.getDataRecordChanges.bind(dataTypes);
12575
12969
  target.upsertDataRecord = dataTypes.upsertDataRecord.bind(dataTypes);
12576
12970
  target.toggleFieldIndex = dataTypes.toggleFieldIndex.bind(dataTypes);
12971
+ target.previewRenameFieldSlug = dataTypes.previewRenameFieldSlug.bind(dataTypes);
12972
+ target.renameFieldSlug = dataTypes.renameFieldSlug.bind(dataTypes);
12577
12973
  target.getFieldIndexStatus = dataTypes.getFieldIndexStatus.bind(dataTypes);
12578
12974
  target.validateDataTypeSlug = dataTypes.validateDataTypeSlug.bind(dataTypes);
12579
12975
  target.getMemberRecordCounts = dataTypes.getMemberRecordCounts.bind(dataTypes);
@@ -12585,9 +12981,25 @@ function bindDataTypesMethods(target, dataTypes) {
12585
12981
  target.getDataRecordFilterCount = dataTypes.getDataRecordFilterCount.bind(dataTypes);
12586
12982
  }
12587
12983
 
12984
+ // src/client/bindings/devices.ts
12985
+ function bindDevicesMethods(target, devices) {
12986
+ target.getDevices = devices.getDevices.bind(devices);
12987
+ target.getDevice = devices.getDevice.bind(devices);
12988
+ target.getDeviceKinds = devices.getDeviceKinds.bind(devices);
12989
+ target.claimDevicePairing = devices.claimDevicePairing.bind(devices);
12990
+ target.updateDevice = devices.updateDevice.bind(devices);
12991
+ target.revokeDevice = devices.revokeDevice.bind(devices);
12992
+ }
12993
+
12588
12994
  // src/client/bindings/members.ts
12589
12995
  function bindMembersMethods(target, members) {
12590
12996
  target.getCurrentMember = members.getCurrentMember.bind(members);
12997
+ target.getMyDataTypes = members.getMyDataTypes.bind(members);
12998
+ target.getMyRecords = members.getMyRecords.bind(members);
12999
+ target.getMemberWorkflowVoices = members.getMemberWorkflowVoices.bind(members);
13000
+ target.previewMemberWorkflowVoice = members.previewMemberWorkflowVoice.bind(members);
13001
+ target.setMemberWorkflowVoice = members.setMemberWorkflowVoice.bind(members);
13002
+ target.clearMemberWorkflowVoice = members.clearMemberWorkflowVoice.bind(members);
12591
13003
  target.getOwnedMembers = members.getOwnedMembers.bind(members);
12592
13004
  target.switchMember = members.switchMember.bind(members);
12593
13005
  target.clearMemberSwitch = members.clearMemberSwitch.bind(members);
@@ -12680,6 +13092,7 @@ function bindWorkspacesMethods(target, workspaces, signupRequests) {
12680
13092
  target.updateProduct = workspaces.updateProduct.bind(workspaces);
12681
13093
  target.deleteProduct = workspaces.deleteProduct.bind(workspaces);
12682
13094
  target.exportWorkspace = workspaces.exportWorkspace.bind(workspaces);
13095
+ target.exportWorkspaceZip = workspaces.exportWorkspaceZip.bind(workspaces);
12683
13096
  target.previewWorkspaceImport = workspaces.previewWorkspaceImport.bind(workspaces);
12684
13097
  target.importWorkspace = workspaces.importWorkspace.bind(workspaces);
12685
13098
  target.previewImportWorkspace = workspaces.previewImportWorkspace.bind(workspaces);
@@ -12866,6 +13279,8 @@ function bindProjectsMethods(target, projects) {
12866
13279
  target.getProjects = projects.getProjects.bind(projects);
12867
13280
  target.getProject = projects.getProject.bind(projects);
12868
13281
  target.getPlan = projects.getPlan.bind(projects);
13282
+ target.updateProject = projects.updateProject.bind(projects);
13283
+ target.updatePlan = projects.updatePlan.bind(projects);
12869
13284
  }
12870
13285
 
12871
13286
  // src/client/bindings/events.ts
@@ -13026,12 +13441,14 @@ function bindCommunicationsMethods(target, phoneNumbers, inboxes, notificationRu
13026
13441
  target.getInboxEmail = inboxes.getInboxEmail.bind(inboxes);
13027
13442
  target.markEmailAsRead = inboxes.markEmailAsRead.bind(inboxes);
13028
13443
  target.markEmailAsUnread = inboxes.markEmailAsUnread.bind(inboxes);
13444
+ target.addEmailSenderAsMember = inboxes.addEmailSenderAsMember.bind(inboxes);
13029
13445
  target.convertEmail = inboxes.convertEmail.bind(inboxes);
13030
13446
  target.downloadEmailAttachment = inboxes.downloadEmailAttachment.bind(inboxes);
13031
13447
  target.getInboxThreads = inboxes.getInboxThreads.bind(inboxes);
13032
13448
  target.getThreadEmails = inboxes.getThreadEmails.bind(inboxes);
13033
13449
  target.getChatEmails = inboxes.getChatEmails.bind(inboxes);
13034
13450
  target.replyToEmail = inboxes.replyToEmail.bind(inboxes);
13451
+ target.sendInboxEmail = inboxes.sendInboxEmail.bind(inboxes);
13035
13452
  target.getNotificationRules = notificationRules.getNotificationRules.bind(notificationRules);
13036
13453
  target.createNotificationRule = notificationRules.createNotificationRule.bind(notificationRules);
13037
13454
  target.updateNotificationRule = notificationRules.updateNotificationRule.bind(notificationRules);
@@ -13095,6 +13512,12 @@ function bindBillingMethods(target, apiKeys, subscriptions, reports) {
13095
13512
  target.addWorkspaceToSubscription = subscriptions.addWorkspaceToSubscription.bind(subscriptions);
13096
13513
  target.purchaseCredits = subscriptions.purchaseCredits.bind(subscriptions);
13097
13514
  target.createCheckoutSession = subscriptions.createCheckoutSession.bind(subscriptions);
13515
+ target.createMemberCheckoutSession = subscriptions.createMemberCheckoutSession.bind(subscriptions);
13516
+ target.createMemberPortalSession = subscriptions.createMemberPortalSession.bind(subscriptions);
13517
+ target.getMemberSubscriptionStatus = subscriptions.getMemberSubscriptionStatus.bind(subscriptions);
13518
+ target.createDeviceOrderCheckoutSession = subscriptions.createDeviceOrderCheckoutSession.bind(subscriptions);
13519
+ target.listDeviceOrders = subscriptions.listDeviceOrders.bind(subscriptions);
13520
+ target.getCheckoutAttemptStatus = subscriptions.getCheckoutAttemptStatus.bind(subscriptions);
13098
13521
  target.listSelfServeProducts = subscriptions.listSelfServeProducts.bind(subscriptions);
13099
13522
  target.getAIUsageReport = reports.getAIUsageReport.bind(reports);
13100
13523
  target.getSMSUsageReport = reports.getSMSUsageReport.bind(reports);
@@ -13272,6 +13695,7 @@ function bindIntegrationsMethods(target, mondayIntegration, discordBots, slackAp
13272
13695
  target.getLinkedSalesforceMembers = salesforce.getLinkedSalesforceMembers.bind(salesforce);
13273
13696
  target.getSalesforceSyncConfig = salesforce.getSalesforceSyncConfig.bind(salesforce);
13274
13697
  target.updateSalesforceSyncConfig = salesforce.updateSalesforceSyncConfig.bind(salesforce);
13698
+ target.resyncSalesforceLinkedMembers = salesforce.resyncSalesforceLinkedMembers.bind(salesforce);
13275
13699
  target.listSalesforceObjects = salesforce.listSalesforceObjects.bind(salesforce);
13276
13700
  target.describeSalesforceObject = salesforce.describeSalesforceObject.bind(salesforce);
13277
13701
  target.searchSalesforceRecords = salesforce.searchSalesforceRecords.bind(salesforce);
@@ -13343,6 +13767,7 @@ function bindOrgMethods(target, org) {
13343
13767
  target.disableOrgDomainEmail = org.disableOrgDomainEmail.bind(org);
13344
13768
  target.enableOrgDomainSite = org.enableOrgDomainSite.bind(org);
13345
13769
  target.getOrgDomainSite = org.getOrgDomainSite.bind(org);
13770
+ target.preflightOrgDomainSite = org.preflightOrgDomainSite.bind(org);
13346
13771
  target.verifyOrgDomainSite = org.verifyOrgDomainSite.bind(org);
13347
13772
  target.disableOrgDomainSite = org.disableOrgDomainSite.bind(org);
13348
13773
  target.getBusinessProfile = org.getBusinessProfile.bind(org);
@@ -13356,6 +13781,8 @@ function bindOrgMethods(target, org) {
13356
13781
  target.syncVoiceTrustProducts = org.syncVoiceTrustProducts.bind(org);
13357
13782
  target.createOrganizationWorkspace = org.createOrganizationWorkspace.bind(org);
13358
13783
  target.getOrgBillingCustomer = org.getOrgBillingCustomer.bind(org);
13784
+ target.getA2PCampaignConfig = org.getA2PCampaignConfig.bind(org);
13785
+ target.updateA2PCampaignConfig = org.updateA2PCampaignConfig.bind(org);
13359
13786
  target.getOrgWorkspaceUsage = org.getOrgWorkspaceUsage.bind(org);
13360
13787
  }
13361
13788
 
@@ -13613,6 +14040,8 @@ var GravityRailClient = class {
13613
14040
  getDataRecordChanges;
13614
14041
  upsertDataRecord;
13615
14042
  toggleFieldIndex;
14043
+ previewRenameFieldSlug;
14044
+ renameFieldSlug;
13616
14045
  getFieldIndexStatus;
13617
14046
  validateDataTypeSlug;
13618
14047
  getMemberRecordCounts;
@@ -13624,6 +14053,12 @@ var GravityRailClient = class {
13624
14053
  getDataRecordFilterCount;
13625
14054
  // Members API
13626
14055
  getCurrentMember;
14056
+ getMyDataTypes;
14057
+ getMyRecords;
14058
+ getMemberWorkflowVoices;
14059
+ previewMemberWorkflowVoice;
14060
+ setMemberWorkflowVoice;
14061
+ clearMemberWorkflowVoice;
13627
14062
  getOwnedMembers;
13628
14063
  switchMember;
13629
14064
  clearMemberSwitch;
@@ -13858,11 +14293,13 @@ var GravityRailClient = class {
13858
14293
  getWorkspaceProduct;
13859
14294
  getPublicProducts;
13860
14295
  previewPromoCode;
14296
+ startPromoPlanTrial;
13861
14297
  getPublicProduct;
13862
14298
  createProduct;
13863
14299
  updateProduct;
13864
14300
  deleteProduct;
13865
14301
  exportWorkspace;
14302
+ exportWorkspaceZip;
13866
14303
  previewWorkspaceImport;
13867
14304
  importWorkspace;
13868
14305
  previewImportWorkspace;
@@ -13889,6 +14326,7 @@ var GravityRailClient = class {
13889
14326
  disableOrgDomainEmail;
13890
14327
  enableOrgDomainSite;
13891
14328
  getOrgDomainSite;
14329
+ preflightOrgDomainSite;
13892
14330
  verifyOrgDomainSite;
13893
14331
  disableOrgDomainSite;
13894
14332
  getBusinessProfile;
@@ -13902,6 +14340,8 @@ var GravityRailClient = class {
13902
14340
  syncVoiceTrustProducts;
13903
14341
  createOrganizationWorkspace;
13904
14342
  getOrgBillingCustomer;
14343
+ getA2PCampaignConfig;
14344
+ updateA2PCampaignConfig;
13905
14345
  getOrgWorkspaceUsage;
13906
14346
  getVapidPublicKey;
13907
14347
  registerPushSubscription;
@@ -14025,6 +14465,8 @@ var GravityRailClient = class {
14025
14465
  getProjects;
14026
14466
  getProject;
14027
14467
  getPlan;
14468
+ updateProject;
14469
+ updatePlan;
14028
14470
  resolveFilePath;
14029
14471
  downloadFilesZip;
14030
14472
  createFile;
@@ -14195,12 +14637,14 @@ var GravityRailClient = class {
14195
14637
  getInboxEmail;
14196
14638
  markEmailAsRead;
14197
14639
  markEmailAsUnread;
14640
+ addEmailSenderAsMember;
14198
14641
  convertEmail;
14199
14642
  downloadEmailAttachment;
14200
14643
  getInboxThreads;
14201
14644
  getThreadEmails;
14202
14645
  getChatEmails;
14203
14646
  replyToEmail;
14647
+ sendInboxEmail;
14204
14648
  getNotificationRules;
14205
14649
  createNotificationRule;
14206
14650
  updateNotificationRule;
@@ -14243,6 +14687,13 @@ var GravityRailClient = class {
14243
14687
  getFeatureRegistry;
14244
14688
  getPublicFeatureRegistry;
14245
14689
  getFeatureBySlug;
14690
+ // Devices API
14691
+ getDevices;
14692
+ getDevice;
14693
+ getDeviceKinds;
14694
+ claimDevicePairing;
14695
+ updateDevice;
14696
+ revokeDevice;
14246
14697
  // Billing API
14247
14698
  getApiKeys;
14248
14699
  createApiKey;
@@ -14258,6 +14709,12 @@ var GravityRailClient = class {
14258
14709
  addWorkspaceToSubscription;
14259
14710
  purchaseCredits;
14260
14711
  createCheckoutSession;
14712
+ createMemberCheckoutSession;
14713
+ createMemberPortalSession;
14714
+ getMemberSubscriptionStatus;
14715
+ createDeviceOrderCheckoutSession;
14716
+ listDeviceOrders;
14717
+ getCheckoutAttemptStatus;
14261
14718
  listSelfServeProducts;
14262
14719
  getAIUsageReport;
14263
14720
  getSMSUsageReport;
@@ -14437,6 +14894,7 @@ var GravityRailClient = class {
14437
14894
  getLinkedSalesforceMembers;
14438
14895
  getSalesforceSyncConfig;
14439
14896
  updateSalesforceSyncConfig;
14897
+ resyncSalesforceLinkedMembers;
14440
14898
  listSalesforceObjects;
14441
14899
  describeSalesforceObject;
14442
14900
  searchSalesforceRecords;
@@ -14539,6 +14997,7 @@ var GravityRailClient = class {
14539
14997
  bindChatsMethods(this, apis.chats);
14540
14998
  bindCallsMethods(this, apis.calls, apis.cel);
14541
14999
  bindDataTypesMethods(this, apis.dataTypes);
15000
+ bindDevicesMethods(this, apis.devices);
14542
15001
  bindMembersMethods(this, apis.members);
14543
15002
  bindAgentTasksMethods(this, apis.agentTasks);
14544
15003
  bindAgentsMethods(this, apis.agents);
@@ -14811,6 +15270,8 @@ var GravityRailClient = class {
14811
15270
  JobPosition,
14812
15271
  JourneysApi,
14813
15272
  MASKED_SECRET_SENTINEL,
15273
+ MEMBER_ENTITLEMENT_STATUSES,
15274
+ MEMBER_SUBSCRIPTION_STATUSES,
14814
15275
  McpServerState,
14815
15276
  McpServersApi,
14816
15277
  MemberFeature,
@@ -14872,7 +15333,6 @@ var GravityRailClient = class {
14872
15333
  REALTIME_MODEL_CUSTOM,
14873
15334
  REALTIME_MODEL_GEMINI,
14874
15335
  REALTIME_MODEL_GEMINI_VERTEX,
14875
- REALTIME_MODEL_NOVA_SONIC,
14876
15336
  REALTIME_MODEL_OPENAI,
14877
15337
  REALTIME_MODEL_OPENAI_2,
14878
15338
  REALTIME_MODEL_OPENAI_MINI,
@@ -14940,6 +15400,7 @@ var GravityRailClient = class {
14940
15400
  bindCustomersMethods,
14941
15401
  bindDashboardsMethods,
14942
15402
  bindDataTypesMethods,
15403
+ bindDevicesMethods,
14943
15404
  bindEventsMethods,
14944
15405
  bindExperimentsMethods,
14945
15406
  bindFilesMethods,