@gravity-rail/sdk 0.18.1 → 0.21.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-PUIYXJSZ.js → chunk-24L4RD4Z.js} +479 -39
  2. package/dist/chunk-24L4RD4Z.js.map +1 -0
  3. package/dist/{chunk-2YLKG4TT.js → chunk-3HAV5XUJ.js} +1 -1
  4. package/dist/chunk-3HAV5XUJ.js.map +1 -0
  5. package/dist/{chunk-PJFEGUHM.js → chunk-7OLBLLV7.js} +6 -2
  6. package/dist/{chunk-PJFEGUHM.js.map → chunk-7OLBLLV7.js.map} +1 -1
  7. package/dist/{client-B-jmQ4UA.d.cts → client-B0eh2BEY.d.cts} +1315 -285
  8. package/dist/{client-CatNn6FD.d.ts → client-CFz-BGmY.d.ts} +1315 -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 +578 -39
  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 +485 -39
  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-KfOztBkY.d.ts} +53 -172
  28. package/dist/{revision-state-CuESPYpi.d.cts → revision-state-fJ9PM15N.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
  );
@@ -6461,6 +6591,23 @@ var InboxesApi = class extends BaseApiClient {
6461
6591
  body: JSON.stringify({ content })
6462
6592
  });
6463
6593
  }
6594
+ /**
6595
+ * Make a stored email's sender a Member of this workspace.
6596
+ *
6597
+ * The explicit alternative to auto-signup for inboxes that accept
6598
+ * non-member mail. Requires `members:write` AND `inboxes:read`. Responds
6599
+ * 409 when a Member already holds the address — gate the call on
6600
+ * `Email.senderIsMember` rather than discovering it from the error.
6601
+ */
6602
+ async addEmailSenderAsMember(wid, inboxId, emailId, body) {
6603
+ return this.fetch(
6604
+ `w/${wid}/inboxes/${inboxId}/emails/${emailId}/add-sender-as-member`,
6605
+ {
6606
+ method: "POST",
6607
+ body: JSON.stringify(body)
6608
+ }
6609
+ );
6610
+ }
6464
6611
  /** Convert an email to text, markdown, or PDF format. */
6465
6612
  async convertEmail(wid, inboxId, emailId, format = "pdf") {
6466
6613
  return this.fetch(
@@ -6803,6 +6950,54 @@ var MembersApi = class extends BaseApiClient {
6803
6950
  async getCurrentMember(wid) {
6804
6951
  return this.fetch(`w/${wid}/me`);
6805
6952
  }
6953
+ /**
6954
+ * One row per workflow available to the member, with its voice state
6955
+ * (Custom Voice). Own-data-or-scope: a member reads their OWN rows with
6956
+ * no member scope; others need members:read.
6957
+ */
6958
+ async getMemberWorkflowVoices(wid, memberId) {
6959
+ return this.fetch(
6960
+ `w/${wid}/members/${memberId}/workflow-voices`
6961
+ );
6962
+ }
6963
+ /** Audition a voice the member can pick for this workflow (PCM16). */
6964
+ async previewMemberWorkflowVoice(wid, memberId, workflowId, body) {
6965
+ const response = await this.fetchRaw(
6966
+ `w/${wid}/members/${memberId}/workflow-voices/${workflowId}/preview`,
6967
+ { method: "POST", body: JSON.stringify(body) }
6968
+ );
6969
+ return response.arrayBuffer();
6970
+ }
6971
+ /** Set the member's preferred voice for one workflow (Custom Voice). */
6972
+ async setMemberWorkflowVoice(wid, memberId, workflowId, body) {
6973
+ return this.fetch(
6974
+ `w/${wid}/members/${memberId}/workflow-voices/${workflowId}`,
6975
+ { method: "PUT", body: JSON.stringify(body) }
6976
+ );
6977
+ }
6978
+ /** Clear the member's preferred voice for one workflow (Custom Voice). */
6979
+ async clearMemberWorkflowVoice(wid, memberId, workflowId) {
6980
+ return this.fetch(
6981
+ `w/${wid}/members/${memberId}/workflow-voices/${workflowId}`,
6982
+ { method: "DELETE" }
6983
+ );
6984
+ }
6985
+ /**
6986
+ * Member-scoped DataTypes the current member may use (self-access — works
6987
+ * on a Site session, which can hold no records scope by construction).
6988
+ */
6989
+ async getMyDataTypes(wid) {
6990
+ return this.fetch(`w/${wid}/me/data-types`);
6991
+ }
6992
+ /** The current member's own records for one DataType (self-access). */
6993
+ async getMyRecords(wid, dataTypeId, options) {
6994
+ const params = new URLSearchParams({ data_type_id: String(dataTypeId) });
6995
+ if (options?.page) params.set("page", String(options.page));
6996
+ if (options?.pageSize) params.set("page_size", String(options.pageSize));
6997
+ return this.fetch(
6998
+ `w/${wid}/me/records?${params.toString()}`
6999
+ );
7000
+ }
6806
7001
  /**
6807
7002
  * Get all members owned by the current member in this workspace.
6808
7003
  * Returns the authenticated member plus any members they own (via owner_id).
@@ -7713,7 +7908,11 @@ var OrgApi = class extends BaseApiClient {
7713
7908
  });
7714
7909
  }
7715
7910
  /**
7716
- * Get the billing customer UUID for an organization.
7911
+ * Get the billing customer and this organization's billable subscription.
7912
+ *
7913
+ * `subscriptionId` is the org-scoped row — never pick the customer's
7914
+ * newest subscription from the list endpoint. One customer can bill many
7915
+ * organizations.
7717
7916
  */
7718
7917
  async getOrgBillingCustomer(orgIdOrUuid) {
7719
7918
  return this.fetch(`o/${orgIdOrUuid}/billing-customer`);
@@ -8053,6 +8252,17 @@ var OrgApi = class extends BaseApiClient {
8053
8252
  async getOrgDomainSite(orgIdOrUuid, domainUuid) {
8054
8253
  return this.fetch(`o/${orgIdOrUuid}/domains/${domainUuid}/site`);
8055
8254
  }
8255
+ /**
8256
+ * Pre-enable DNS check: is the site CNAME resolving to the routing
8257
+ * endpoint yet? Pure DNS — consumes no enable budget.
8258
+ */
8259
+ async preflightOrgDomainSite(orgIdOrUuid, domainUuid) {
8260
+ return this.fetch(
8261
+ `o/${orgIdOrUuid}/domains/${domainUuid}/site/preflight`,
8262
+ // Empty JSON body: the route requires one as a CSRF barrier.
8263
+ { method: "POST", body: JSON.stringify({}) }
8264
+ );
8265
+ }
8056
8266
  /**
8057
8267
  * Verify the site CNAME points at the Gravity Rail sites domain.
8058
8268
  */
@@ -8096,10 +8306,10 @@ var OrgApi = class extends BaseApiClient {
8096
8306
  * is required — brands register per legal entity (Customer Profile);
8097
8307
  * there is no primary-entity fallback.
8098
8308
  */
8099
- async startA2PRegistration(orgUuid, legalEntityUuid, brandName, brandDescription, brandUuid = null) {
8309
+ async startA2PRegistration(orgUuid, legalEntityUuid, brandName, brandUuid = null) {
8100
8310
  return this.fetch(`o/${orgUuid}/phone-numbers/a2p/start`, {
8101
8311
  method: "POST",
8102
- body: JSON.stringify({ legalEntityUuid, brandName, brandDescription, brandUuid })
8312
+ body: JSON.stringify({ legalEntityUuid, brandName, brandUuid })
8103
8313
  });
8104
8314
  }
8105
8315
  /**
@@ -8203,7 +8413,12 @@ var OrgApi = class extends BaseApiClient {
8203
8413
  * Reconcile trust product state against Twilio (discovery + status
8204
8414
  * refresh). Returns the refreshed products plus which product keys were
8205
8415
  * newly discovered. Responds 409 when another Trust Hub operation holds
8206
- * the org lock — retry shortly rather than queueing.
8416
+ * this legal entity's lock, failing fast rather than queueing.
8417
+ *
8418
+ * No `Retry-After` is sent, deliberately (#23601): holders range from a
8419
+ * sub-second JSONB write to a multi-minute Twilio sequence, so no interval
8420
+ * would be honest. Back off on your own schedule, and re-read before
8421
+ * retrying — the operation you collided with may have committed SIDs.
8207
8422
  */
8208
8423
  async syncVoiceTrustProducts(orgUuid, legalEntityUuid) {
8209
8424
  return this.fetch(
@@ -8236,6 +8451,16 @@ var OrgApi = class extends BaseApiClient {
8236
8451
  async listA2PBrands(orgUuid) {
8237
8452
  return this.fetch(`o/${orgUuid}/a2p-brands`);
8238
8453
  }
8454
+ /**
8455
+ * Live per-brand campaign use-case eligibility. Approved brands only — a
8456
+ * brand still under TCR review comes back as a structured 412 the picker
8457
+ * renders as the supported-list fallback, not an error.
8458
+ */
8459
+ async getA2PBrandUseCases(orgUuid, brandUuid) {
8460
+ return this.fetch(
8461
+ `o/${orgUuid}/a2p-brands/${brandUuid}/use-cases`
8462
+ );
8463
+ }
8239
8464
  /**
8240
8465
  * Fetch a brand's resolved A2P campaign config. The response carries both the
8241
8466
  * raw `overrides` and the `resolved` payload (defaults + overrides) the editor
@@ -8907,6 +9132,20 @@ var ProjectsApi = class extends BaseApiClient {
8907
9132
  `w/${wid}/projects/${encodeURIComponent(slug)}/plans/${encodeURIComponent(plan)}`
8908
9133
  );
8909
9134
  }
9135
+ /** Typed update of a project README; absent fields are untouched. */
9136
+ async updateProject(wid, slug, update) {
9137
+ return this.fetch(`w/${wid}/projects/${encodeURIComponent(slug)}`, {
9138
+ method: "PATCH",
9139
+ body: JSON.stringify(update)
9140
+ });
9141
+ }
9142
+ /** Typed update of a plan README; absent fields are untouched. */
9143
+ async updatePlan(wid, slug, plan, update) {
9144
+ return this.fetch(
9145
+ `w/${wid}/projects/${encodeURIComponent(slug)}/plans/${encodeURIComponent(plan)}`,
9146
+ { method: "PATCH", body: JSON.stringify(update) }
9147
+ );
9148
+ }
8910
9149
  };
8911
9150
 
8912
9151
  // src/api/qualifications.ts
@@ -9174,6 +9413,26 @@ var SalesforceApi = class extends BaseApiClient {
9174
9413
  }
9175
9414
  );
9176
9415
  }
9416
+ /**
9417
+ * Pull linked members' Salesforce records now, ignoring the sync cursor.
9418
+ *
9419
+ * The inbound poll only ever returns records modified after the stored
9420
+ * cursor, so a member linked to a record that has not changed since is
9421
+ * unreachable by any poll and its link never receives a field — silently.
9422
+ * This fetches the records by Id and leaves the cursor untouched, so it is
9423
+ * safe to call at any time.
9424
+ *
9425
+ * Omit `memberIds` to resync every linked member (capped server-side).
9426
+ */
9427
+ async resyncSalesforceLinkedMembers(wid, data = {}) {
9428
+ return this.fetch(
9429
+ `w/${wid}/app-connections/salesforce/sync/resync-members`,
9430
+ {
9431
+ method: "POST",
9432
+ body: JSON.stringify(data)
9433
+ }
9434
+ );
9435
+ }
9177
9436
  /**
9178
9437
  * List the sObjects available in the connected org.
9179
9438
  *
@@ -9773,6 +10032,62 @@ var SubscriptionsApi = class extends BaseApiClient {
9773
10032
  headers: { "Content-Type": "application/json" }
9774
10033
  });
9775
10034
  }
10035
+ /** Purchase a role-granting membership in an existing workspace. */
10036
+ async createMemberCheckoutSession(productId, planPeriod = "month", options = {}) {
10037
+ return this.fetch(`subscriptions/member-checkout-session`, {
10038
+ method: "POST",
10039
+ credentials: "include",
10040
+ body: JSON.stringify({ productId, planPeriod, ...options }),
10041
+ headers: { "Content-Type": "application/json" }
10042
+ });
10043
+ }
10044
+ async getMemberSubscriptionStatus(siteUuidOrOptions) {
10045
+ const options = typeof siteUuidOrOptions === "string" ? { siteUuid: siteUuidOrOptions } : siteUuidOrOptions;
10046
+ const params = new URLSearchParams();
10047
+ if (options.siteUuid) params.set("siteUuid", options.siteUuid);
10048
+ if (options.workspaceUuid) params.set("workspaceUuid", options.workspaceUuid);
10049
+ return this.fetch(
10050
+ `subscriptions/member-subscription?${params.toString()}`,
10051
+ { credentials: "include" }
10052
+ );
10053
+ }
10054
+ /** Open Stripe's hosted membership-management portal. */
10055
+ async createMemberPortalSession(options) {
10056
+ return this.fetch(`subscriptions/member-portal-session`, {
10057
+ method: "POST",
10058
+ credentials: "include",
10059
+ body: JSON.stringify(options),
10060
+ headers: { "Content-Type": "application/json" }
10061
+ });
10062
+ }
10063
+ /**
10064
+ * Purchase one physical companion device (one-time payment; Stripe collects
10065
+ * the shipping address in hosted Checkout).
10066
+ */
10067
+ async createDeviceOrderCheckoutSession(productId, options = {}) {
10068
+ return this.fetch(`device-orders/checkout-session`, {
10069
+ method: "POST",
10070
+ credentials: "include",
10071
+ body: JSON.stringify({ productId, ...options }),
10072
+ headers: { "Content-Type": "application/json" }
10073
+ });
10074
+ }
10075
+ /** List the authenticated Account's own device orders in one workspace. */
10076
+ async listDeviceOrders(options) {
10077
+ const params = new URLSearchParams();
10078
+ if (options.siteUuid) params.set("siteUuid", options.siteUuid);
10079
+ if (options.workspaceUuid) params.set("workspaceUuid", options.workspaceUuid);
10080
+ return this.fetch(`device-orders?${params.toString()}`, {
10081
+ credentials: "include"
10082
+ });
10083
+ }
10084
+ /** Read one authenticated, server-owned checkout attempt. */
10085
+ async getCheckoutAttemptStatus(attemptId) {
10086
+ return this.fetch(
10087
+ `subscriptions/checkout-attempts/${encodeURIComponent(attemptId)}`,
10088
+ { credentials: "include" }
10089
+ );
10090
+ }
9776
10091
  /**
9777
10092
  * List self-service, purchasable organization plans or add-ons. Only products
9778
10093
  * with a Stripe Price are returned; zero-amount plans are allowed.
@@ -9977,6 +10292,9 @@ var CustomersApi = class extends BaseApiClient {
9977
10292
  if (opts?.status) params.set("status", opts.status);
9978
10293
  if (opts?.page !== void 0) params.set("page", String(opts.page));
9979
10294
  if (opts?.pageSize !== void 0) params.set("page_size", String(opts.pageSize));
10295
+ if (opts?.subscriptionId !== void 0) {
10296
+ params.set("subscription_id", String(opts.subscriptionId));
10297
+ }
9980
10298
  const qs = params.toString();
9981
10299
  return this.fetch(`customers/${uuid}/subscriptions${qs ? "?" + qs : ""}`);
9982
10300
  }
@@ -10980,28 +11298,36 @@ var WorkflowsApi = class extends BaseApiClient {
10980
11298
  };
10981
11299
 
10982
11300
  // src/api/workflow-notes.ts
11301
+ function notesPath(wid, workflowId, noteId, query) {
11302
+ const base = noteId == null ? `w/${wid}/workflows/${workflowId}/notes` : `w/${wid}/workflows/${workflowId}/notes/${noteId}`;
11303
+ if (query?.workflowRevisionId == null) return base;
11304
+ const params = new URLSearchParams({
11305
+ workflowRevisionId: String(query.workflowRevisionId)
11306
+ });
11307
+ return `${base}?${params.toString()}`;
11308
+ }
10983
11309
  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`);
11310
+ /** List notes for a workflow root (draft unless `workflowRevisionId` is set). */
11311
+ async getWorkflowNotes(wid, workflowId, query) {
11312
+ return this.fetch(notesPath(wid, workflowId, void 0, query));
10987
11313
  }
10988
- /** Create a new note on a workflow. */
10989
- async createWorkflowNote(wid, workflowId, data) {
10990
- return this.fetch(`w/${wid}/workflows/${workflowId}/notes`, {
11314
+ /** Create a new note on a workflow's draft (or a pinned draft revision). */
11315
+ async createWorkflowNote(wid, workflowId, data, query) {
11316
+ return this.fetch(notesPath(wid, workflowId, void 0, query), {
10991
11317
  method: "POST",
10992
11318
  body: JSON.stringify(data)
10993
11319
  });
10994
11320
  }
10995
11321
  /** 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}`, {
11322
+ async updateWorkflowNote(wid, workflowId, noteId, data, query) {
11323
+ return this.fetch(notesPath(wid, workflowId, noteId, query), {
10998
11324
  method: "PUT",
10999
11325
  body: JSON.stringify(data)
11000
11326
  });
11001
11327
  }
11002
11328
  /** Delete a workflow note by ID. */
11003
- async deleteWorkflowNote(wid, workflowId, noteId) {
11004
- return this.fetch(`w/${wid}/workflows/${workflowId}/notes/${noteId}`, {
11329
+ async deleteWorkflowNote(wid, workflowId, noteId, query) {
11330
+ return this.fetch(notesPath(wid, workflowId, noteId, query), {
11005
11331
  method: "DELETE"
11006
11332
  });
11007
11333
  }
@@ -11395,6 +11721,13 @@ var WorkspacesApi = class extends BaseApiClient {
11395
11721
  signal: options?.signal
11396
11722
  });
11397
11723
  }
11724
+ /** Provision the one-month direct organization plan carried by a promo code. */
11725
+ async startPromoPlanTrial(request) {
11726
+ return this.fetch("promo-codes/plan-trial", {
11727
+ method: "POST",
11728
+ body: JSON.stringify(request)
11729
+ });
11730
+ }
11398
11731
  /** Get a publicly accessible product by ID. */
11399
11732
  async getPublicProduct(id) {
11400
11733
  return this.fetch(`products/${id}`);
@@ -11445,15 +11778,47 @@ var WorkspacesApi = class extends BaseApiClient {
11445
11778
  })
11446
11779
  });
11447
11780
  }
11448
- /** Import workspace configuration from exported data. */
11449
- async importWorkspace(wid, exportData, importMappings, createNew) {
11781
+ /** Download a workspace export ZIP (``export.json`` + file blobs). */
11782
+ async exportWorkspaceZip(wid, workflowId, scope, exclude) {
11783
+ const searchParams = new URLSearchParams();
11784
+ if (workflowId !== void 0) searchParams.set("workflow_id", String(workflowId));
11785
+ if (scope !== void 0) searchParams.set("scope", scope);
11786
+ if (exclude !== void 0) searchParams.set("exclude", exclude);
11787
+ const qs = searchParams.toString();
11788
+ const response = await this.fetchRaw(`w/${wid}/export.zip${qs ? `?${qs}` : ""}`);
11789
+ return response.arrayBuffer();
11790
+ }
11791
+ /** Import workspace configuration from exported JSON, or from a ZIP archive.
11792
+ * Pass ``archive`` (the ZIP from ``exportWorkspaceZip``) to restore file
11793
+ * contents. ``exportData`` may be omitted when the ZIP contains it.
11794
+ */
11795
+ async importWorkspace(wid, exportData, importMappings, createNew, archive) {
11796
+ const payload = {
11797
+ importMappings,
11798
+ createNew
11799
+ };
11800
+ if (exportData) {
11801
+ payload.exportData = exportData;
11802
+ }
11803
+ if (archive) {
11804
+ const form = new FormData();
11805
+ form.append(
11806
+ "request",
11807
+ new Blob([JSON.stringify(payload)], { type: "application/json" }),
11808
+ "import.json"
11809
+ );
11810
+ form.append("archive", archive, "workspace-export.zip");
11811
+ return this.fetch(`w/${wid}/import.zip`, {
11812
+ method: "POST",
11813
+ body: form
11814
+ });
11815
+ }
11816
+ if (!exportData) {
11817
+ throw new Error("exportData is required for JSON import");
11818
+ }
11450
11819
  return this.fetch(`w/${wid}/import`, {
11451
11820
  method: "POST",
11452
- body: JSON.stringify({
11453
- exportData,
11454
- importMappings,
11455
- createNew
11456
- })
11821
+ body: JSON.stringify(payload)
11457
11822
  });
11458
11823
  }
11459
11824
  /** Preview a workspace import using the legacy untyped interface. */
@@ -11495,7 +11860,6 @@ var WorkspacesApi = class extends BaseApiClient {
11495
11860
  * Get billing dashboard data for a workspace.
11496
11861
  *
11497
11862
  * This endpoint is available to organization owners (with org:info scope).
11498
- * Superusers should use the admin endpoint via getWorkspaceUsageDashboard.
11499
11863
  *
11500
11864
  * Returns comprehensive billing information including:
11501
11865
  * - Subscription status and plan details
@@ -11530,6 +11894,7 @@ function createApiModules(apiKey, baseUrl, customFetch) {
11530
11894
  customToolkits: new CustomToolkitsApi(apiKey, baseUrl, customFetch),
11531
11895
  dashboards: new DashboardsApi(apiKey, baseUrl, customFetch),
11532
11896
  dataTypes: new DataTypesApi(apiKey, baseUrl, customFetch),
11897
+ devices: new DevicesApi(apiKey, baseUrl, customFetch),
11533
11898
  discordBots: new DiscordBotsApi(apiKey, baseUrl, customFetch),
11534
11899
  slackApps: new SlackAppsApi(apiKey, baseUrl, customFetch),
11535
11900
  teamsApps: new TeamsAppsApi(apiKey, baseUrl, customFetch),
@@ -11588,6 +11953,7 @@ function createApiModules(apiKey, baseUrl, customFetch) {
11588
11953
  // src/client/workspace-client.ts
11589
11954
  var WORKSPACE_METHOD_NAMES = [
11590
11955
  "activateWorkflowRevision",
11956
+ "addEmailSenderAsMember",
11591
11957
  "addGroupMember",
11592
11958
  "advanceStep",
11593
11959
  "approveWorkspaceInvitation",
@@ -11618,6 +11984,7 @@ var WORKSPACE_METHOD_NAMES = [
11618
11984
  "checkAvailability",
11619
11985
  "checkSiteDomainAvailability",
11620
11986
  "checkSiteSlugAvailability",
11987
+ "claimDevicePairing",
11621
11988
  "clearConnectionMemberExclusion",
11622
11989
  "clearMemberSwitch",
11623
11990
  "clearTrackedLinkDestinations",
@@ -11805,6 +12172,7 @@ var WORKSPACE_METHOD_NAMES = [
11805
12172
  "exportMembers",
11806
12173
  "exportPhoneNumberOutboundAnalyticsCsv",
11807
12174
  "exportWorkspace",
12175
+ "exportWorkspaceZip",
11808
12176
  "fetchVoicemailAudio",
11809
12177
  "fhirBackfillEncounterSync",
11810
12178
  "fhirCheckPatientLinks",
@@ -11901,6 +12269,11 @@ var WORKSPACE_METHOD_NAMES = [
11901
12269
  "getConnectionSyncConfig",
11902
12270
  "getCredentialUpdateInvites",
11903
12271
  "getCurrentMember",
12272
+ "clearMemberWorkflowVoice",
12273
+ "getMemberWorkflowVoices",
12274
+ "getMyDataTypes",
12275
+ "getMyRecords",
12276
+ "setMemberWorkflowVoice",
11904
12277
  "getCurrentSmsChat",
11905
12278
  "getCustomToolkit",
11906
12279
  "getCustomToolkits",
@@ -11918,6 +12291,9 @@ var WORKSPACE_METHOD_NAMES = [
11918
12291
  "getDataTypeByUuid",
11919
12292
  "getDataTypeBySlug",
11920
12293
  "getDataTypes",
12294
+ "getDevice",
12295
+ "getDeviceKinds",
12296
+ "getDevices",
11921
12297
  "getDiscordBot",
11922
12298
  "getDiscordBotAccounts",
11923
12299
  "getDiscordBotByUuid",
@@ -12071,6 +12447,7 @@ var WORKSPACE_METHOD_NAMES = [
12071
12447
  "getPublicFolderFiles",
12072
12448
  "getPublicProducts",
12073
12449
  "previewPromoCode",
12450
+ "startPromoPlanTrial",
12074
12451
  "getQualification",
12075
12452
  "getQualifications",
12076
12453
  "getRecordingInfo",
@@ -12218,6 +12595,8 @@ var WORKSPACE_METHOD_NAMES = [
12218
12595
  "markNotificationAsRead",
12219
12596
  "mergeMemberRoles",
12220
12597
  "previewImportMembers",
12598
+ "previewMemberWorkflowVoice",
12599
+ "previewRenameFieldSlug",
12221
12600
  "previewImportWorkspace",
12222
12601
  "previewRoutineWorkflowAccess",
12223
12602
  "previewSchedule",
@@ -12230,6 +12609,7 @@ var WORKSPACE_METHOD_NAMES = [
12230
12609
  "rateMessage",
12231
12610
  "getChatFeedback",
12232
12611
  "reenrollMember",
12612
+ "renameFieldSlug",
12233
12613
  "registerLinkedRolesMetadata",
12234
12614
  "registerPushSubscription",
12235
12615
  "reindexFolder",
@@ -12249,6 +12629,7 @@ var WORKSPACE_METHOD_NAMES = [
12249
12629
  "restoreFileVersion",
12250
12630
  "revokeAccessGrant",
12251
12631
  "revokeApiKey",
12632
+ "revokeDevice",
12252
12633
  "revokeICalToken",
12253
12634
  "runRoutine",
12254
12635
  "searchEventRules",
@@ -12319,6 +12700,7 @@ var WORKSPACE_METHOD_NAMES = [
12319
12700
  "updateDataRecord",
12320
12701
  "updateDataRecordFilter",
12321
12702
  "updateDataType",
12703
+ "updateDevice",
12322
12704
  "updateDiscordBot",
12323
12705
  "updateEventAttendee",
12324
12706
  "updateEventRule",
@@ -12352,9 +12734,12 @@ var WORKSPACE_METHOD_NAMES = [
12352
12734
  "updatePersona",
12353
12735
  "updatePhoneNumber",
12354
12736
  "updatePlatformApp",
12737
+ "updatePlan",
12355
12738
  "updateProduct",
12739
+ "updateProject",
12356
12740
  "updateRoutine",
12357
12741
  "updateSalesforceSyncConfig",
12742
+ "resyncSalesforceLinkedMembers",
12358
12743
  "updateScenario",
12359
12744
  "updateSite",
12360
12745
  "updateSiteSharing",
@@ -12574,6 +12959,8 @@ function bindDataTypesMethods(target, dataTypes) {
12574
12959
  target.getDataRecordChanges = dataTypes.getDataRecordChanges.bind(dataTypes);
12575
12960
  target.upsertDataRecord = dataTypes.upsertDataRecord.bind(dataTypes);
12576
12961
  target.toggleFieldIndex = dataTypes.toggleFieldIndex.bind(dataTypes);
12962
+ target.previewRenameFieldSlug = dataTypes.previewRenameFieldSlug.bind(dataTypes);
12963
+ target.renameFieldSlug = dataTypes.renameFieldSlug.bind(dataTypes);
12577
12964
  target.getFieldIndexStatus = dataTypes.getFieldIndexStatus.bind(dataTypes);
12578
12965
  target.validateDataTypeSlug = dataTypes.validateDataTypeSlug.bind(dataTypes);
12579
12966
  target.getMemberRecordCounts = dataTypes.getMemberRecordCounts.bind(dataTypes);
@@ -12585,9 +12972,25 @@ function bindDataTypesMethods(target, dataTypes) {
12585
12972
  target.getDataRecordFilterCount = dataTypes.getDataRecordFilterCount.bind(dataTypes);
12586
12973
  }
12587
12974
 
12975
+ // src/client/bindings/devices.ts
12976
+ function bindDevicesMethods(target, devices) {
12977
+ target.getDevices = devices.getDevices.bind(devices);
12978
+ target.getDevice = devices.getDevice.bind(devices);
12979
+ target.getDeviceKinds = devices.getDeviceKinds.bind(devices);
12980
+ target.claimDevicePairing = devices.claimDevicePairing.bind(devices);
12981
+ target.updateDevice = devices.updateDevice.bind(devices);
12982
+ target.revokeDevice = devices.revokeDevice.bind(devices);
12983
+ }
12984
+
12588
12985
  // src/client/bindings/members.ts
12589
12986
  function bindMembersMethods(target, members) {
12590
12987
  target.getCurrentMember = members.getCurrentMember.bind(members);
12988
+ target.getMyDataTypes = members.getMyDataTypes.bind(members);
12989
+ target.getMyRecords = members.getMyRecords.bind(members);
12990
+ target.getMemberWorkflowVoices = members.getMemberWorkflowVoices.bind(members);
12991
+ target.previewMemberWorkflowVoice = members.previewMemberWorkflowVoice.bind(members);
12992
+ target.setMemberWorkflowVoice = members.setMemberWorkflowVoice.bind(members);
12993
+ target.clearMemberWorkflowVoice = members.clearMemberWorkflowVoice.bind(members);
12591
12994
  target.getOwnedMembers = members.getOwnedMembers.bind(members);
12592
12995
  target.switchMember = members.switchMember.bind(members);
12593
12996
  target.clearMemberSwitch = members.clearMemberSwitch.bind(members);
@@ -12680,6 +13083,7 @@ function bindWorkspacesMethods(target, workspaces, signupRequests) {
12680
13083
  target.updateProduct = workspaces.updateProduct.bind(workspaces);
12681
13084
  target.deleteProduct = workspaces.deleteProduct.bind(workspaces);
12682
13085
  target.exportWorkspace = workspaces.exportWorkspace.bind(workspaces);
13086
+ target.exportWorkspaceZip = workspaces.exportWorkspaceZip.bind(workspaces);
12683
13087
  target.previewWorkspaceImport = workspaces.previewWorkspaceImport.bind(workspaces);
12684
13088
  target.importWorkspace = workspaces.importWorkspace.bind(workspaces);
12685
13089
  target.previewImportWorkspace = workspaces.previewImportWorkspace.bind(workspaces);
@@ -12866,6 +13270,8 @@ function bindProjectsMethods(target, projects) {
12866
13270
  target.getProjects = projects.getProjects.bind(projects);
12867
13271
  target.getProject = projects.getProject.bind(projects);
12868
13272
  target.getPlan = projects.getPlan.bind(projects);
13273
+ target.updateProject = projects.updateProject.bind(projects);
13274
+ target.updatePlan = projects.updatePlan.bind(projects);
12869
13275
  }
12870
13276
 
12871
13277
  // src/client/bindings/events.ts
@@ -13026,6 +13432,7 @@ function bindCommunicationsMethods(target, phoneNumbers, inboxes, notificationRu
13026
13432
  target.getInboxEmail = inboxes.getInboxEmail.bind(inboxes);
13027
13433
  target.markEmailAsRead = inboxes.markEmailAsRead.bind(inboxes);
13028
13434
  target.markEmailAsUnread = inboxes.markEmailAsUnread.bind(inboxes);
13435
+ target.addEmailSenderAsMember = inboxes.addEmailSenderAsMember.bind(inboxes);
13029
13436
  target.convertEmail = inboxes.convertEmail.bind(inboxes);
13030
13437
  target.downloadEmailAttachment = inboxes.downloadEmailAttachment.bind(inboxes);
13031
13438
  target.getInboxThreads = inboxes.getInboxThreads.bind(inboxes);
@@ -13095,6 +13502,12 @@ function bindBillingMethods(target, apiKeys, subscriptions, reports) {
13095
13502
  target.addWorkspaceToSubscription = subscriptions.addWorkspaceToSubscription.bind(subscriptions);
13096
13503
  target.purchaseCredits = subscriptions.purchaseCredits.bind(subscriptions);
13097
13504
  target.createCheckoutSession = subscriptions.createCheckoutSession.bind(subscriptions);
13505
+ target.createMemberCheckoutSession = subscriptions.createMemberCheckoutSession.bind(subscriptions);
13506
+ target.createMemberPortalSession = subscriptions.createMemberPortalSession.bind(subscriptions);
13507
+ target.getMemberSubscriptionStatus = subscriptions.getMemberSubscriptionStatus.bind(subscriptions);
13508
+ target.createDeviceOrderCheckoutSession = subscriptions.createDeviceOrderCheckoutSession.bind(subscriptions);
13509
+ target.listDeviceOrders = subscriptions.listDeviceOrders.bind(subscriptions);
13510
+ target.getCheckoutAttemptStatus = subscriptions.getCheckoutAttemptStatus.bind(subscriptions);
13098
13511
  target.listSelfServeProducts = subscriptions.listSelfServeProducts.bind(subscriptions);
13099
13512
  target.getAIUsageReport = reports.getAIUsageReport.bind(reports);
13100
13513
  target.getSMSUsageReport = reports.getSMSUsageReport.bind(reports);
@@ -13272,6 +13685,7 @@ function bindIntegrationsMethods(target, mondayIntegration, discordBots, slackAp
13272
13685
  target.getLinkedSalesforceMembers = salesforce.getLinkedSalesforceMembers.bind(salesforce);
13273
13686
  target.getSalesforceSyncConfig = salesforce.getSalesforceSyncConfig.bind(salesforce);
13274
13687
  target.updateSalesforceSyncConfig = salesforce.updateSalesforceSyncConfig.bind(salesforce);
13688
+ target.resyncSalesforceLinkedMembers = salesforce.resyncSalesforceLinkedMembers.bind(salesforce);
13275
13689
  target.listSalesforceObjects = salesforce.listSalesforceObjects.bind(salesforce);
13276
13690
  target.describeSalesforceObject = salesforce.describeSalesforceObject.bind(salesforce);
13277
13691
  target.searchSalesforceRecords = salesforce.searchSalesforceRecords.bind(salesforce);
@@ -13343,6 +13757,7 @@ function bindOrgMethods(target, org) {
13343
13757
  target.disableOrgDomainEmail = org.disableOrgDomainEmail.bind(org);
13344
13758
  target.enableOrgDomainSite = org.enableOrgDomainSite.bind(org);
13345
13759
  target.getOrgDomainSite = org.getOrgDomainSite.bind(org);
13760
+ target.preflightOrgDomainSite = org.preflightOrgDomainSite.bind(org);
13346
13761
  target.verifyOrgDomainSite = org.verifyOrgDomainSite.bind(org);
13347
13762
  target.disableOrgDomainSite = org.disableOrgDomainSite.bind(org);
13348
13763
  target.getBusinessProfile = org.getBusinessProfile.bind(org);
@@ -13613,6 +14028,8 @@ var GravityRailClient = class {
13613
14028
  getDataRecordChanges;
13614
14029
  upsertDataRecord;
13615
14030
  toggleFieldIndex;
14031
+ previewRenameFieldSlug;
14032
+ renameFieldSlug;
13616
14033
  getFieldIndexStatus;
13617
14034
  validateDataTypeSlug;
13618
14035
  getMemberRecordCounts;
@@ -13624,6 +14041,12 @@ var GravityRailClient = class {
13624
14041
  getDataRecordFilterCount;
13625
14042
  // Members API
13626
14043
  getCurrentMember;
14044
+ getMyDataTypes;
14045
+ getMyRecords;
14046
+ getMemberWorkflowVoices;
14047
+ previewMemberWorkflowVoice;
14048
+ setMemberWorkflowVoice;
14049
+ clearMemberWorkflowVoice;
13627
14050
  getOwnedMembers;
13628
14051
  switchMember;
13629
14052
  clearMemberSwitch;
@@ -13858,11 +14281,13 @@ var GravityRailClient = class {
13858
14281
  getWorkspaceProduct;
13859
14282
  getPublicProducts;
13860
14283
  previewPromoCode;
14284
+ startPromoPlanTrial;
13861
14285
  getPublicProduct;
13862
14286
  createProduct;
13863
14287
  updateProduct;
13864
14288
  deleteProduct;
13865
14289
  exportWorkspace;
14290
+ exportWorkspaceZip;
13866
14291
  previewWorkspaceImport;
13867
14292
  importWorkspace;
13868
14293
  previewImportWorkspace;
@@ -13889,6 +14314,7 @@ var GravityRailClient = class {
13889
14314
  disableOrgDomainEmail;
13890
14315
  enableOrgDomainSite;
13891
14316
  getOrgDomainSite;
14317
+ preflightOrgDomainSite;
13892
14318
  verifyOrgDomainSite;
13893
14319
  disableOrgDomainSite;
13894
14320
  getBusinessProfile;
@@ -14025,6 +14451,8 @@ var GravityRailClient = class {
14025
14451
  getProjects;
14026
14452
  getProject;
14027
14453
  getPlan;
14454
+ updateProject;
14455
+ updatePlan;
14028
14456
  resolveFilePath;
14029
14457
  downloadFilesZip;
14030
14458
  createFile;
@@ -14195,6 +14623,7 @@ var GravityRailClient = class {
14195
14623
  getInboxEmail;
14196
14624
  markEmailAsRead;
14197
14625
  markEmailAsUnread;
14626
+ addEmailSenderAsMember;
14198
14627
  convertEmail;
14199
14628
  downloadEmailAttachment;
14200
14629
  getInboxThreads;
@@ -14243,6 +14672,13 @@ var GravityRailClient = class {
14243
14672
  getFeatureRegistry;
14244
14673
  getPublicFeatureRegistry;
14245
14674
  getFeatureBySlug;
14675
+ // Devices API
14676
+ getDevices;
14677
+ getDevice;
14678
+ getDeviceKinds;
14679
+ claimDevicePairing;
14680
+ updateDevice;
14681
+ revokeDevice;
14246
14682
  // Billing API
14247
14683
  getApiKeys;
14248
14684
  createApiKey;
@@ -14258,6 +14694,12 @@ var GravityRailClient = class {
14258
14694
  addWorkspaceToSubscription;
14259
14695
  purchaseCredits;
14260
14696
  createCheckoutSession;
14697
+ createMemberCheckoutSession;
14698
+ createMemberPortalSession;
14699
+ getMemberSubscriptionStatus;
14700
+ createDeviceOrderCheckoutSession;
14701
+ listDeviceOrders;
14702
+ getCheckoutAttemptStatus;
14261
14703
  listSelfServeProducts;
14262
14704
  getAIUsageReport;
14263
14705
  getSMSUsageReport;
@@ -14437,6 +14879,7 @@ var GravityRailClient = class {
14437
14879
  getLinkedSalesforceMembers;
14438
14880
  getSalesforceSyncConfig;
14439
14881
  updateSalesforceSyncConfig;
14882
+ resyncSalesforceLinkedMembers;
14440
14883
  listSalesforceObjects;
14441
14884
  describeSalesforceObject;
14442
14885
  searchSalesforceRecords;
@@ -14539,6 +14982,7 @@ var GravityRailClient = class {
14539
14982
  bindChatsMethods(this, apis.chats);
14540
14983
  bindCallsMethods(this, apis.calls, apis.cel);
14541
14984
  bindDataTypesMethods(this, apis.dataTypes);
14985
+ bindDevicesMethods(this, apis.devices);
14542
14986
  bindMembersMethods(this, apis.members);
14543
14987
  bindAgentTasksMethods(this, apis.agentTasks);
14544
14988
  bindAgentsMethods(this, apis.agents);
@@ -14811,6 +15255,8 @@ var GravityRailClient = class {
14811
15255
  JobPosition,
14812
15256
  JourneysApi,
14813
15257
  MASKED_SECRET_SENTINEL,
15258
+ MEMBER_ENTITLEMENT_STATUSES,
15259
+ MEMBER_SUBSCRIPTION_STATUSES,
14814
15260
  McpServerState,
14815
15261
  McpServersApi,
14816
15262
  MemberFeature,
@@ -14872,7 +15318,6 @@ var GravityRailClient = class {
14872
15318
  REALTIME_MODEL_CUSTOM,
14873
15319
  REALTIME_MODEL_GEMINI,
14874
15320
  REALTIME_MODEL_GEMINI_VERTEX,
14875
- REALTIME_MODEL_NOVA_SONIC,
14876
15321
  REALTIME_MODEL_OPENAI,
14877
15322
  REALTIME_MODEL_OPENAI_2,
14878
15323
  REALTIME_MODEL_OPENAI_MINI,
@@ -14940,6 +15385,7 @@ var GravityRailClient = class {
14940
15385
  bindCustomersMethods,
14941
15386
  bindDashboardsMethods,
14942
15387
  bindDataTypesMethods,
15388
+ bindDevicesMethods,
14943
15389
  bindEventsMethods,
14944
15390
  bindExperimentsMethods,
14945
15391
  bindFilesMethods,