@opencx/mcp 1.15.34 → 1.15.36

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 (41) hide show
  1. package/dist/campaign-tools.spec.js +129 -0
  2. package/dist/campaign-tools.spec.js.map +1 -1
  3. package/dist/email-tools.spec.d.ts +2 -0
  4. package/dist/email-tools.spec.d.ts.map +1 -0
  5. package/dist/email-tools.spec.js +149 -0
  6. package/dist/email-tools.spec.js.map +1 -0
  7. package/dist/phone-tools.spec.js +45 -0
  8. package/dist/phone-tools.spec.js.map +1 -1
  9. package/dist/schema.d.ts +786 -171
  10. package/dist/schema.d.ts.map +1 -1
  11. package/dist/tools/campaign-channel.d.ts.map +1 -1
  12. package/dist/tools/campaign-channel.js +76 -5
  13. package/dist/tools/campaign-channel.js.map +1 -1
  14. package/dist/tools/campaign-personalization.d.ts.map +1 -1
  15. package/dist/tools/campaign-personalization.js +7 -3
  16. package/dist/tools/campaign-personalization.js.map +1 -1
  17. package/dist/tools/campaign-spine.d.ts.map +1 -1
  18. package/dist/tools/campaign-spine.js +35 -6
  19. package/dist/tools/campaign-spine.js.map +1 -1
  20. package/dist/tools/conversation-sankey.d.ts.map +1 -1
  21. package/dist/tools/conversation-sankey.js +5 -2
  22. package/dist/tools/conversation-sankey.js.map +1 -1
  23. package/dist/tools/csat.d.ts.map +1 -1
  24. package/dist/tools/csat.js +3 -3
  25. package/dist/tools/csat.js.map +1 -1
  26. package/dist/tools/email.d.ts.map +1 -1
  27. package/dist/tools/email.js +20 -6
  28. package/dist/tools/email.js.map +1 -1
  29. package/dist/tools/impact-report.d.ts.map +1 -1
  30. package/dist/tools/impact-report.js +1 -1
  31. package/dist/tools/impact-report.js.map +1 -1
  32. package/dist/tools/phone.d.ts.map +1 -1
  33. package/dist/tools/phone.js +15 -3
  34. package/dist/tools/phone.js.map +1 -1
  35. package/dist/tools/sessions.d.ts.map +1 -1
  36. package/dist/tools/sessions.js +32 -2
  37. package/dist/tools/sessions.js.map +1 -1
  38. package/dist/tools/structured-fields.d.ts.map +1 -1
  39. package/dist/tools/structured-fields.js +17 -2
  40. package/dist/tools/structured-fields.js.map +1 -1
  41. package/package.json +1 -1
package/dist/schema.d.ts CHANGED
@@ -599,6 +599,30 @@ export interface paths {
599
599
  patch?: never;
600
600
  trace?: never;
601
601
  };
602
+ "/chat/sessions/{session_id}/structured-field-values": {
603
+ parameters: {
604
+ query?: never;
605
+ header?: never;
606
+ path?: never;
607
+ cookie?: never;
608
+ };
609
+ /**
610
+ * Get session structured field values
611
+ * @description Returns the Structured Field values recorded on a session, plus `applicable_field_ids`: the fields that currently apply to it once every "show when" rule is resolved. A field missing from that list is hidden for this session: it holds no value and rejects writes until its parent field matches.
612
+ */
613
+ get: operations["getSessionStructuredFieldValues"];
614
+ /**
615
+ * Set session structured field values
616
+ * @description Upserts Structured Field values on a session; `null` clears a field. Every value is validated against its live field definition (an enum leaf choice, a user/team/tag of the organization, or a typed scalar), and a bad entry rejects the whole batch. A value on a field whose "show when" rule is unmet after the batch is rejected with 400; set the parent field in the same batch instead. Values whose field stops applying because a parent changed are cleared automatically. Returns the full current list with `applicable_field_ids`.
617
+ */
618
+ put: operations["setSessionStructuredFieldValues"];
619
+ post?: never;
620
+ delete?: never;
621
+ options?: never;
622
+ head?: never;
623
+ patch?: never;
624
+ trace?: never;
625
+ };
602
626
  "/chat/sessions/investigate-debug": {
603
627
  parameters: {
604
628
  query?: never;
@@ -3310,7 +3334,7 @@ export interface paths {
3310
3334
  get?: never;
3311
3335
  /**
3312
3336
  * Replace the step list of a DRAFT sequence
3313
- * @description Full replace, drafts only — the authoring call in the enroll-first flow (create the shell, enroll and qualify a real audience, then author steps). On a launched sequence use editSequenceSteps instead; a live step list is never blind-replaced under people mid-journey.
3337
+ * @description Full replace, drafts only — the authoring call in the enroll-first flow (create the shell, enroll and qualify a real audience, then author steps). On a launched sequence use editSequenceSteps instead; a live step list is never blind-replaced under people mid-journey. The response is the sequence plus variable_coverage: for every source the steps bind, how many enrolled people have a value.
3314
3338
  */
3315
3339
  put: operations["setSequenceSteps"];
3316
3340
  post?: never;
@@ -3319,11 +3343,31 @@ export interface paths {
3319
3343
  head?: never;
3320
3344
  /**
3321
3345
  * Surgically edit steps — update content/delays, append, remove (any status)
3322
- * @description One transactional batch of typed edits. Execution order is fixed: removes (highest index first), then appends, then updates — indices address the array AFTER earlier phases of the same batch. Content/delay updates are allowed on any step (people already past it keep what they received); append is always allowed (completed people do not revive); remove is refused for any step somebody already reached. Any illegal edit rejects the whole batch, named by its position.
3346
+ * @description One transactional batch of typed edits. Execution order is fixed: removes (highest index first), then appends, then updates — indices address the array AFTER earlier phases of the same batch. Content/delay updates are allowed on any step (people already past it keep what they received); append is always allowed (completed people do not revive); remove is refused for any step somebody already reached. Any illegal edit rejects the whole batch, named by its position. The response is the sequence plus variable_coverage for every source the resulting steps bind.
3323
3347
  */
3324
3348
  patch: operations["editSequenceSteps"];
3325
3349
  trace?: never;
3326
3350
  };
3351
+ "/sequences/{sequenceId}/data-keys": {
3352
+ parameters: {
3353
+ query?: never;
3354
+ header?: never;
3355
+ path?: never;
3356
+ cookie?: never;
3357
+ };
3358
+ /**
3359
+ * List the attached-data keys a sequence's people carry
3360
+ * @description Every top-level key of the data attached to enrolled people (extra_data), with how many people in a bounded sample have a value at it. A key here is usable verbatim as a step variable's source. Read it to bind data you did not attach yourself, or to check that the keys you attached landed as spelled.
3361
+ */
3362
+ get: operations["listSequenceDataKeys"];
3363
+ put?: never;
3364
+ post?: never;
3365
+ delete?: never;
3366
+ options?: never;
3367
+ head?: never;
3368
+ patch?: never;
3369
+ trace?: never;
3370
+ };
3327
3371
  "/sequences/{sequenceId}/contacts": {
3328
3372
  parameters: {
3329
3373
  query?: never;
@@ -6224,15 +6268,22 @@ export interface components {
6224
6268
  PhoneHandoffReason: "ai_initiated" | "no_agent_assigned" | "agent_unavailable" | "caller_requested" | "timeout" | "unknown";
6225
6269
  /** @enum {string} */
6226
6270
  StructuredFieldTypeDto: "enum" | "text" | "number" | "boolean" | "date" | "user" | "team" | "tag";
6271
+ StructuredFieldShowWhenDto: {
6272
+ /** Format: uuid */
6273
+ field_id: string;
6274
+ values: string[];
6275
+ };
6227
6276
  CreateStructuredFieldDto: {
6228
6277
  key: string;
6229
6278
  name: string;
6230
6279
  description: string;
6231
6280
  type?: components["schemas"]["StructuredFieldTypeDto"];
6281
+ show_when?: components["schemas"]["StructuredFieldShowWhenDto"] | null;
6232
6282
  };
6233
6283
  UpdateStructuredFieldDto: {
6234
6284
  name?: string;
6235
6285
  description?: string;
6286
+ show_when?: components["schemas"]["StructuredFieldShowWhenDto"] | null;
6236
6287
  };
6237
6288
  CreateStructuredFieldVariantDto: {
6238
6289
  value: string;
@@ -6245,6 +6296,14 @@ export interface components {
6245
6296
  variant_description?: string;
6246
6297
  parent_id?: string | null;
6247
6298
  };
6299
+ SessionStructuredFieldValueInputDto: {
6300
+ /** Format: uuid */
6301
+ field_id: string;
6302
+ value: string | null;
6303
+ };
6304
+ SetSessionStructuredFieldValuesDto: {
6305
+ values: components["schemas"]["SessionStructuredFieldValueInputDto"][];
6306
+ };
6248
6307
  CompanyOwnerInput: {
6249
6308
  /** @description OpenCX user id of the owning teammate */
6250
6309
  id?: number;
@@ -6450,6 +6509,33 @@ export interface components {
6450
6509
  /** @description Optional reason for redaction */
6451
6510
  reason?: string;
6452
6511
  };
6512
+ CreateWhatsAppTemplateDraftButtonDto: {
6513
+ /** @constant */
6514
+ type: "QUICK_REPLY";
6515
+ /** @description The label, 25 chars. */
6516
+ text: string;
6517
+ } | {
6518
+ /** @constant */
6519
+ type: "URL";
6520
+ /** @description The label, 25 chars. */
6521
+ text: string;
6522
+ /** @description Static, or ending in exactly one {{1}} for a per-message suffix (https://open.cx/track/{{1}}). A suffix button needs a step binding to send. */
6523
+ url: string;
6524
+ /** @description REQUIRED when the url ends in {{1}}: the full url with a realistic suffix, for review. Omit for a static url. */
6525
+ url_example?: string;
6526
+ } | {
6527
+ /** @constant */
6528
+ type: "PHONE_NUMBER";
6529
+ /** @description The label, 25 chars. */
6530
+ text: string;
6531
+ /** @description E.164, e.g. +962790000000. */
6532
+ phone_number: string;
6533
+ } | {
6534
+ /** @constant */
6535
+ type: "COPY_CODE";
6536
+ /** @description A sample coupon, 15 chars. The real code is bound per message on the step. */
6537
+ example: string;
6538
+ };
6453
6539
  CreateWhatsAppTemplateDraftDto: {
6454
6540
  name: string;
6455
6541
  /** @description BCP-47 code, e.g. en_US, ar, ar_SA. */
@@ -6469,6 +6555,13 @@ export interface components {
6469
6555
  /** @description Plain text only, no placeholders. */
6470
6556
  header_text?: string;
6471
6557
  footer_text?: string;
6558
+ /**
6559
+ * @description In display order. Quick replies must sit together — all before or all after the other kinds (Meta groups them). Up to 10.
6560
+ * @default []
6561
+ */
6562
+ buttons: components["schemas"]["CreateWhatsAppTemplateDraftButtonDto"][];
6563
+ /** @description Message validity period in seconds. Authentication: 30–900, Utility: 30–43200, Marketing: 43200–2592000. -1 = explicit 30-day TTL (authentication/utility only). */
6564
+ message_send_ttl_seconds?: number;
6472
6565
  /** @description Only needed when the org has more than one WABA; otherwise resolved. */
6473
6566
  waba_id?: string;
6474
6567
  };
@@ -6573,9 +6666,26 @@ export interface components {
6573
6666
  template_language: string;
6574
6667
  variables: {
6575
6668
  [key: string]: {
6576
- /** @enum {string} */
6577
- source: "display_name" | "phone" | "email";
6669
+ /** @description A recipient column ('display_name', 'phone', 'email') or the exact name of a key in the person's attached data (extra_data). Those three names always read the column — a key spelled the same is unreachable; any other string reads the attached data, matched verbatim as a top-level key. A missing or empty value falls to `fallback`, and with no fallback the person parks (needs_data). */
6670
+ source: string;
6578
6671
  fallback?: string;
6672
+ /**
6673
+ * @description Optional. Applies to attached-data sources only — ignored on the three columns. How to read the value: string, number, boolean, date, string[] or number[] — the same vocabulary as People-table columns. Absent: text and numbers pass through, anything else counts as missing. Declared: text is parsed where it is unambiguous ("250" as a number or a string, "true" as a boolean, an ISO-shaped date such as "2026-03-12" — other date spellings and epoch numbers are missing), a date renders as a plain day in the person's timezone, a list needs an actual list in the data and joins with commas, dropping items it cannot read, and a value that cannot be read as the declared type counts as missing.
6674
+ * @enum {string}
6675
+ */
6676
+ type?: "string" | "number" | "boolean" | "date" | "string[]" | "number[]";
6677
+ };
6678
+ };
6679
+ buttons?: {
6680
+ [key: string]: {
6681
+ /** @description A recipient column ('display_name', 'phone', 'email') or the exact name of a key in the person's attached data (extra_data). Those three names always read the column — a key spelled the same is unreachable; any other string reads the attached data, matched verbatim as a top-level key. A missing or empty value falls to `fallback`, and with no fallback the person parks (needs_data). */
6682
+ source: string;
6683
+ fallback?: string;
6684
+ /**
6685
+ * @description Optional. Applies to attached-data sources only — ignored on the three columns. How to read the value: string, number, boolean, date, string[] or number[] — the same vocabulary as People-table columns. Absent: text and numbers pass through, anything else counts as missing. Declared: text is parsed where it is unambiguous ("250" as a number or a string, "true" as a boolean, an ISO-shaped date such as "2026-03-12" — other date spellings and epoch numbers are missing), a date renders as a plain day in the person's timezone, a list needs an actual list in the data and joins with commas, dropping items it cannot read, and a value that cannot be read as the declared type counts as missing.
6686
+ * @enum {string}
6687
+ */
6688
+ type?: "string" | "number" | "boolean" | "date" | "string[]" | "number[]";
6579
6689
  };
6580
6690
  };
6581
6691
  };
@@ -6589,9 +6699,14 @@ export interface components {
6589
6699
  extra_instructions?: string;
6590
6700
  variables?: {
6591
6701
  [key: string]: {
6592
- /** @enum {string} */
6593
- source: "display_name" | "phone" | "email";
6702
+ /** @description A recipient column ('display_name', 'phone', 'email') or the exact name of a key in the person's attached data (extra_data). Those three names always read the column — a key spelled the same is unreachable; any other string reads the attached data, matched verbatim as a top-level key. A missing or empty value falls to `fallback`, and with no fallback the person parks (needs_data). */
6703
+ source: string;
6594
6704
  fallback?: string;
6705
+ /**
6706
+ * @description Optional. Applies to attached-data sources only — ignored on the three columns. How to read the value: string, number, boolean, date, string[] or number[] — the same vocabulary as People-table columns. Absent: text and numbers pass through, anything else counts as missing. Declared: text is parsed where it is unambiguous ("250" as a number or a string, "true" as a boolean, an ISO-shaped date such as "2026-03-12" — other date spellings and epoch numbers are missing), a date renders as a plain day in the person's timezone, a list needs an actual list in the data and joins with commas, dropping items it cannot read, and a value that cannot be read as the declared type counts as missing.
6707
+ * @enum {string}
6708
+ */
6709
+ type?: "string" | "number" | "boolean" | "date" | "string[]" | "number[]";
6595
6710
  };
6596
6711
  };
6597
6712
  };
@@ -6608,9 +6723,14 @@ export interface components {
6608
6723
  /** @default {} */
6609
6724
  variables: {
6610
6725
  [key: string]: {
6611
- /** @enum {string} */
6612
- source: "display_name" | "phone" | "email";
6726
+ /** @description A recipient column ('display_name', 'phone', 'email') or the exact name of a key in the person's attached data (extra_data). Those three names always read the column — a key spelled the same is unreachable; any other string reads the attached data, matched verbatim as a top-level key. A missing or empty value falls to `fallback`, and with no fallback the person parks (needs_data). */
6727
+ source: string;
6613
6728
  fallback?: string;
6729
+ /**
6730
+ * @description Optional. Applies to attached-data sources only — ignored on the three columns. How to read the value: string, number, boolean, date, string[] or number[] — the same vocabulary as People-table columns. Absent: text and numbers pass through, anything else counts as missing. Declared: text is parsed where it is unambiguous ("250" as a number or a string, "true" as a boolean, an ISO-shaped date such as "2026-03-12" — other date spellings and epoch numbers are missing), a date renders as a plain day in the person's timezone, a list needs an actual list in the data and joins with commas, dropping items it cannot read, and a value that cannot be read as the declared type counts as missing.
6731
+ * @enum {string}
6732
+ */
6733
+ type?: "string" | "number" | "boolean" | "date" | "string[]" | "number[]";
6614
6734
  };
6615
6735
  };
6616
6736
  };
@@ -6702,9 +6822,26 @@ export interface components {
6702
6822
  template_language: string;
6703
6823
  variables: {
6704
6824
  [key: string]: {
6705
- /** @enum {string} */
6706
- source: "display_name" | "phone" | "email";
6825
+ /** @description A recipient column ('display_name', 'phone', 'email') or the exact name of a key in the person's attached data (extra_data). Those three names always read the column — a key spelled the same is unreachable; any other string reads the attached data, matched verbatim as a top-level key. A missing or empty value falls to `fallback`, and with no fallback the person parks (needs_data). */
6826
+ source: string;
6707
6827
  fallback?: string;
6828
+ /**
6829
+ * @description Optional. Applies to attached-data sources only — ignored on the three columns. How to read the value: string, number, boolean, date, string[] or number[] — the same vocabulary as People-table columns. Absent: text and numbers pass through, anything else counts as missing. Declared: text is parsed where it is unambiguous ("250" as a number or a string, "true" as a boolean, an ISO-shaped date such as "2026-03-12" — other date spellings and epoch numbers are missing), a date renders as a plain day in the person's timezone, a list needs an actual list in the data and joins with commas, dropping items it cannot read, and a value that cannot be read as the declared type counts as missing.
6830
+ * @enum {string}
6831
+ */
6832
+ type?: "string" | "number" | "boolean" | "date" | "string[]" | "number[]";
6833
+ };
6834
+ };
6835
+ buttons?: {
6836
+ [key: string]: {
6837
+ /** @description A recipient column ('display_name', 'phone', 'email') or the exact name of a key in the person's attached data (extra_data). Those three names always read the column — a key spelled the same is unreachable; any other string reads the attached data, matched verbatim as a top-level key. A missing or empty value falls to `fallback`, and with no fallback the person parks (needs_data). */
6838
+ source: string;
6839
+ fallback?: string;
6840
+ /**
6841
+ * @description Optional. Applies to attached-data sources only — ignored on the three columns. How to read the value: string, number, boolean, date, string[] or number[] — the same vocabulary as People-table columns. Absent: text and numbers pass through, anything else counts as missing. Declared: text is parsed where it is unambiguous ("250" as a number or a string, "true" as a boolean, an ISO-shaped date such as "2026-03-12" — other date spellings and epoch numbers are missing), a date renders as a plain day in the person's timezone, a list needs an actual list in the data and joins with commas, dropping items it cannot read, and a value that cannot be read as the declared type counts as missing.
6842
+ * @enum {string}
6843
+ */
6844
+ type?: "string" | "number" | "boolean" | "date" | "string[]" | "number[]";
6708
6845
  };
6709
6846
  };
6710
6847
  };
@@ -6718,9 +6855,14 @@ export interface components {
6718
6855
  extra_instructions?: string;
6719
6856
  variables?: {
6720
6857
  [key: string]: {
6721
- /** @enum {string} */
6722
- source: "display_name" | "phone" | "email";
6858
+ /** @description A recipient column ('display_name', 'phone', 'email') or the exact name of a key in the person's attached data (extra_data). Those three names always read the column — a key spelled the same is unreachable; any other string reads the attached data, matched verbatim as a top-level key. A missing or empty value falls to `fallback`, and with no fallback the person parks (needs_data). */
6859
+ source: string;
6723
6860
  fallback?: string;
6861
+ /**
6862
+ * @description Optional. Applies to attached-data sources only — ignored on the three columns. How to read the value: string, number, boolean, date, string[] or number[] — the same vocabulary as People-table columns. Absent: text and numbers pass through, anything else counts as missing. Declared: text is parsed where it is unambiguous ("250" as a number or a string, "true" as a boolean, an ISO-shaped date such as "2026-03-12" — other date spellings and epoch numbers are missing), a date renders as a plain day in the person's timezone, a list needs an actual list in the data and joins with commas, dropping items it cannot read, and a value that cannot be read as the declared type counts as missing.
6863
+ * @enum {string}
6864
+ */
6865
+ type?: "string" | "number" | "boolean" | "date" | "string[]" | "number[]";
6724
6866
  };
6725
6867
  };
6726
6868
  };
@@ -6737,9 +6879,14 @@ export interface components {
6737
6879
  /** @default {} */
6738
6880
  variables: {
6739
6881
  [key: string]: {
6740
- /** @enum {string} */
6741
- source: "display_name" | "phone" | "email";
6882
+ /** @description A recipient column ('display_name', 'phone', 'email') or the exact name of a key in the person's attached data (extra_data). Those three names always read the column — a key spelled the same is unreachable; any other string reads the attached data, matched verbatim as a top-level key. A missing or empty value falls to `fallback`, and with no fallback the person parks (needs_data). */
6883
+ source: string;
6742
6884
  fallback?: string;
6885
+ /**
6886
+ * @description Optional. Applies to attached-data sources only — ignored on the three columns. How to read the value: string, number, boolean, date, string[] or number[] — the same vocabulary as People-table columns. Absent: text and numbers pass through, anything else counts as missing. Declared: text is parsed where it is unambiguous ("250" as a number or a string, "true" as a boolean, an ISO-shaped date such as "2026-03-12" — other date spellings and epoch numbers are missing), a date renders as a plain day in the person's timezone, a list needs an actual list in the data and joins with commas, dropping items it cannot read, and a value that cannot be read as the declared type counts as missing.
6887
+ * @enum {string}
6888
+ */
6889
+ type?: "string" | "number" | "boolean" | "date" | "string[]" | "number[]";
6743
6890
  };
6744
6891
  };
6745
6892
  };
@@ -6759,9 +6906,26 @@ export interface components {
6759
6906
  template_language: string;
6760
6907
  variables: {
6761
6908
  [key: string]: {
6762
- /** @enum {string} */
6763
- source: "display_name" | "phone" | "email";
6909
+ /** @description A recipient column ('display_name', 'phone', 'email') or the exact name of a key in the person's attached data (extra_data). Those three names always read the column — a key spelled the same is unreachable; any other string reads the attached data, matched verbatim as a top-level key. A missing or empty value falls to `fallback`, and with no fallback the person parks (needs_data). */
6910
+ source: string;
6764
6911
  fallback?: string;
6912
+ /**
6913
+ * @description Optional. Applies to attached-data sources only — ignored on the three columns. How to read the value: string, number, boolean, date, string[] or number[] — the same vocabulary as People-table columns. Absent: text and numbers pass through, anything else counts as missing. Declared: text is parsed where it is unambiguous ("250" as a number or a string, "true" as a boolean, an ISO-shaped date such as "2026-03-12" — other date spellings and epoch numbers are missing), a date renders as a plain day in the person's timezone, a list needs an actual list in the data and joins with commas, dropping items it cannot read, and a value that cannot be read as the declared type counts as missing.
6914
+ * @enum {string}
6915
+ */
6916
+ type?: "string" | "number" | "boolean" | "date" | "string[]" | "number[]";
6917
+ };
6918
+ };
6919
+ buttons?: {
6920
+ [key: string]: {
6921
+ /** @description A recipient column ('display_name', 'phone', 'email') or the exact name of a key in the person's attached data (extra_data). Those three names always read the column — a key spelled the same is unreachable; any other string reads the attached data, matched verbatim as a top-level key. A missing or empty value falls to `fallback`, and with no fallback the person parks (needs_data). */
6922
+ source: string;
6923
+ fallback?: string;
6924
+ /**
6925
+ * @description Optional. Applies to attached-data sources only — ignored on the three columns. How to read the value: string, number, boolean, date, string[] or number[] — the same vocabulary as People-table columns. Absent: text and numbers pass through, anything else counts as missing. Declared: text is parsed where it is unambiguous ("250" as a number or a string, "true" as a boolean, an ISO-shaped date such as "2026-03-12" — other date spellings and epoch numbers are missing), a date renders as a plain day in the person's timezone, a list needs an actual list in the data and joins with commas, dropping items it cannot read, and a value that cannot be read as the declared type counts as missing.
6926
+ * @enum {string}
6927
+ */
6928
+ type?: "string" | "number" | "boolean" | "date" | "string[]" | "number[]";
6765
6929
  };
6766
6930
  };
6767
6931
  } | {
@@ -6770,9 +6934,14 @@ export interface components {
6770
6934
  extra_instructions?: string;
6771
6935
  variables?: {
6772
6936
  [key: string]: {
6773
- /** @enum {string} */
6774
- source: "display_name" | "phone" | "email";
6937
+ /** @description A recipient column ('display_name', 'phone', 'email') or the exact name of a key in the person's attached data (extra_data). Those three names always read the column — a key spelled the same is unreachable; any other string reads the attached data, matched verbatim as a top-level key. A missing or empty value falls to `fallback`, and with no fallback the person parks (needs_data). */
6938
+ source: string;
6775
6939
  fallback?: string;
6940
+ /**
6941
+ * @description Optional. Applies to attached-data sources only — ignored on the three columns. How to read the value: string, number, boolean, date, string[] or number[] — the same vocabulary as People-table columns. Absent: text and numbers pass through, anything else counts as missing. Declared: text is parsed where it is unambiguous ("250" as a number or a string, "true" as a boolean, an ISO-shaped date such as "2026-03-12" — other date spellings and epoch numbers are missing), a date renders as a plain day in the person's timezone, a list needs an actual list in the data and joins with commas, dropping items it cannot read, and a value that cannot be read as the declared type counts as missing.
6942
+ * @enum {string}
6943
+ */
6944
+ type?: "string" | "number" | "boolean" | "date" | "string[]" | "number[]";
6776
6945
  };
6777
6946
  };
6778
6947
  } | {
@@ -6784,9 +6953,14 @@ export interface components {
6784
6953
  /** @default {} */
6785
6954
  variables: {
6786
6955
  [key: string]: {
6787
- /** @enum {string} */
6788
- source: "display_name" | "phone" | "email";
6956
+ /** @description A recipient column ('display_name', 'phone', 'email') or the exact name of a key in the person's attached data (extra_data). Those three names always read the column — a key spelled the same is unreachable; any other string reads the attached data, matched verbatim as a top-level key. A missing or empty value falls to `fallback`, and with no fallback the person parks (needs_data). */
6957
+ source: string;
6789
6958
  fallback?: string;
6959
+ /**
6960
+ * @description Optional. Applies to attached-data sources only — ignored on the three columns. How to read the value: string, number, boolean, date, string[] or number[] — the same vocabulary as People-table columns. Absent: text and numbers pass through, anything else counts as missing. Declared: text is parsed where it is unambiguous ("250" as a number or a string, "true" as a boolean, an ISO-shaped date such as "2026-03-12" — other date spellings and epoch numbers are missing), a date renders as a plain day in the person's timezone, a list needs an actual list in the data and joins with commas, dropping items it cannot read, and a value that cannot be read as the declared type counts as missing.
6961
+ * @enum {string}
6962
+ */
6963
+ type?: "string" | "number" | "boolean" | "date" | "string[]" | "number[]";
6790
6964
  };
6791
6965
  };
6792
6966
  };
@@ -6806,9 +6980,26 @@ export interface components {
6806
6980
  template_language: string;
6807
6981
  variables: {
6808
6982
  [key: string]: {
6809
- /** @enum {string} */
6810
- source: "display_name" | "phone" | "email";
6983
+ /** @description A recipient column ('display_name', 'phone', 'email') or the exact name of a key in the person's attached data (extra_data). Those three names always read the column — a key spelled the same is unreachable; any other string reads the attached data, matched verbatim as a top-level key. A missing or empty value falls to `fallback`, and with no fallback the person parks (needs_data). */
6984
+ source: string;
6985
+ fallback?: string;
6986
+ /**
6987
+ * @description Optional. Applies to attached-data sources only — ignored on the three columns. How to read the value: string, number, boolean, date, string[] or number[] — the same vocabulary as People-table columns. Absent: text and numbers pass through, anything else counts as missing. Declared: text is parsed where it is unambiguous ("250" as a number or a string, "true" as a boolean, an ISO-shaped date such as "2026-03-12" — other date spellings and epoch numbers are missing), a date renders as a plain day in the person's timezone, a list needs an actual list in the data and joins with commas, dropping items it cannot read, and a value that cannot be read as the declared type counts as missing.
6988
+ * @enum {string}
6989
+ */
6990
+ type?: "string" | "number" | "boolean" | "date" | "string[]" | "number[]";
6991
+ };
6992
+ };
6993
+ buttons?: {
6994
+ [key: string]: {
6995
+ /** @description A recipient column ('display_name', 'phone', 'email') or the exact name of a key in the person's attached data (extra_data). Those three names always read the column — a key spelled the same is unreachable; any other string reads the attached data, matched verbatim as a top-level key. A missing or empty value falls to `fallback`, and with no fallback the person parks (needs_data). */
6996
+ source: string;
6811
6997
  fallback?: string;
6998
+ /**
6999
+ * @description Optional. Applies to attached-data sources only — ignored on the three columns. How to read the value: string, number, boolean, date, string[] or number[] — the same vocabulary as People-table columns. Absent: text and numbers pass through, anything else counts as missing. Declared: text is parsed where it is unambiguous ("250" as a number or a string, "true" as a boolean, an ISO-shaped date such as "2026-03-12" — other date spellings and epoch numbers are missing), a date renders as a plain day in the person's timezone, a list needs an actual list in the data and joins with commas, dropping items it cannot read, and a value that cannot be read as the declared type counts as missing.
7000
+ * @enum {string}
7001
+ */
7002
+ type?: "string" | "number" | "boolean" | "date" | "string[]" | "number[]";
6812
7003
  };
6813
7004
  };
6814
7005
  };
@@ -6822,9 +7013,14 @@ export interface components {
6822
7013
  extra_instructions?: string;
6823
7014
  variables?: {
6824
7015
  [key: string]: {
6825
- /** @enum {string} */
6826
- source: "display_name" | "phone" | "email";
7016
+ /** @description A recipient column ('display_name', 'phone', 'email') or the exact name of a key in the person's attached data (extra_data). Those three names always read the column — a key spelled the same is unreachable; any other string reads the attached data, matched verbatim as a top-level key. A missing or empty value falls to `fallback`, and with no fallback the person parks (needs_data). */
7017
+ source: string;
6827
7018
  fallback?: string;
7019
+ /**
7020
+ * @description Optional. Applies to attached-data sources only — ignored on the three columns. How to read the value: string, number, boolean, date, string[] or number[] — the same vocabulary as People-table columns. Absent: text and numbers pass through, anything else counts as missing. Declared: text is parsed where it is unambiguous ("250" as a number or a string, "true" as a boolean, an ISO-shaped date such as "2026-03-12" — other date spellings and epoch numbers are missing), a date renders as a plain day in the person's timezone, a list needs an actual list in the data and joins with commas, dropping items it cannot read, and a value that cannot be read as the declared type counts as missing.
7021
+ * @enum {string}
7022
+ */
7023
+ type?: "string" | "number" | "boolean" | "date" | "string[]" | "number[]";
6828
7024
  };
6829
7025
  };
6830
7026
  };
@@ -6841,9 +7037,14 @@ export interface components {
6841
7037
  /** @default {} */
6842
7038
  variables: {
6843
7039
  [key: string]: {
6844
- /** @enum {string} */
6845
- source: "display_name" | "phone" | "email";
7040
+ /** @description A recipient column ('display_name', 'phone', 'email') or the exact name of a key in the person's attached data (extra_data). Those three names always read the column — a key spelled the same is unreachable; any other string reads the attached data, matched verbatim as a top-level key. A missing or empty value falls to `fallback`, and with no fallback the person parks (needs_data). */
7041
+ source: string;
6846
7042
  fallback?: string;
7043
+ /**
7044
+ * @description Optional. Applies to attached-data sources only — ignored on the three columns. How to read the value: string, number, boolean, date, string[] or number[] — the same vocabulary as People-table columns. Absent: text and numbers pass through, anything else counts as missing. Declared: text is parsed where it is unambiguous ("250" as a number or a string, "true" as a boolean, an ISO-shaped date such as "2026-03-12" — other date spellings and epoch numbers are missing), a date renders as a plain day in the person's timezone, a list needs an actual list in the data and joins with commas, dropping items it cannot read, and a value that cannot be read as the declared type counts as missing.
7045
+ * @enum {string}
7046
+ */
7047
+ type?: "string" | "number" | "boolean" | "date" | "string[]" | "number[]";
6847
7048
  };
6848
7049
  };
6849
7050
  };
@@ -8403,6 +8604,7 @@ export interface components {
8403
8604
  url: string;
8404
8605
  openai_file_id?: string;
8405
8606
  email_inline?: boolean;
8607
+ content_id?: string;
8406
8608
  };
8407
8609
  WhatsAppTemplateDto: {
8408
8610
  id: string;
@@ -8649,6 +8851,41 @@ export interface components {
8649
8851
  /** @constant */
8650
8852
  type: "prohibited_topic";
8651
8853
  topic: string;
8854
+ decisionEvidence?: ({
8855
+ /** @constant */
8856
+ origin: "prohibited_topic_precheck";
8857
+ /** @constant */
8858
+ decision: "stop_response";
8859
+ topic: {
8860
+ id: string | null;
8861
+ index: number;
8862
+ name: string;
8863
+ description: string | null;
8864
+ };
8865
+ /** @enum {string} */
8866
+ behavior: "always_handoff" | "never_handoff" | "handoff_within_hours_only";
8867
+ /** @enum {string} */
8868
+ handoff: "callback_completed" | "callback_unavailable" | "suppressed";
8869
+ within_office_hours: boolean | null;
8870
+ } | {
8871
+ /** @enum {string} */
8872
+ origin: "handoff_tool" | "reply_handoff_guard";
8873
+ /** @constant */
8874
+ decision: "handoff";
8875
+ /** @enum {string} */
8876
+ outcome: "callback_completed" | "callback_failed";
8877
+ explanation: string;
8878
+ sources: {
8879
+ ref_id: string;
8880
+ /** @enum {string} */
8881
+ type: "knowledge" | "instruction";
8882
+ id: string;
8883
+ title: string;
8884
+ chunk_index?: number;
8885
+ /** @enum {string} */
8886
+ source_format?: "html" | "knowledge" | "text";
8887
+ }[];
8888
+ })[];
8652
8889
  } | {
8653
8890
  /** @constant */
8654
8891
  type: "response_skipped";
@@ -8761,6 +8998,7 @@ export interface components {
8761
8998
  };
8762
8999
  };
8763
9000
  actionCalls?: {
9001
+ callId?: string;
8764
9002
  action: {
8765
9003
  name: string;
8766
9004
  id: string;
@@ -8835,6 +9073,7 @@ export interface components {
8835
9073
  assist_mode?: boolean;
8836
9074
  } | {
8837
9075
  actionCalls?: {
9076
+ callId?: string;
8838
9077
  action: {
8839
9078
  name: string;
8840
9079
  id: string;
@@ -9262,10 +9501,27 @@ export interface components {
9262
9501
  created_at: string;
9263
9502
  /** Format: date-time */
9264
9503
  updated_at: string;
9504
+ show_when_field_id: string | null;
9505
+ show_when_values: string[] | null;
9265
9506
  variants: components["schemas"]["StructuredFieldVariantTreeDto"][];
9266
9507
  system_options: components["schemas"]["StructuredFieldSystemOptionDto"][];
9267
9508
  };
9268
9509
  StructuredFieldListDto: components["schemas"]["StructuredFieldTreeDto"][];
9510
+ SessionStructuredFieldValueDto: {
9511
+ org_id: string;
9512
+ session_id: string;
9513
+ /** Format: uuid */
9514
+ field_id: string;
9515
+ value: string;
9516
+ /** Format: date-time */
9517
+ created_at: string;
9518
+ /** Format: date-time */
9519
+ updated_at: string;
9520
+ };
9521
+ SessionStructuredFieldValueListDto: {
9522
+ data: components["schemas"]["SessionStructuredFieldValueDto"][];
9523
+ applicable_field_ids: string[];
9524
+ };
9269
9525
  GenericResponseDto: {
9270
9526
  data?: {
9271
9527
  success: boolean;
@@ -9342,6 +9598,82 @@ export interface components {
9342
9598
  */
9343
9599
  outcome: "unlinked" | "unchanged";
9344
9600
  };
9601
+ SalesforceCrmContactDetailsDto: {
9602
+ id: string;
9603
+ salesforce_record_id: string;
9604
+ /** @enum {string} */
9605
+ record_type: "Contact" | "Lead";
9606
+ email?: string;
9607
+ phone?: string;
9608
+ first_name?: string;
9609
+ last_name?: string;
9610
+ company?: string;
9611
+ salesforce_data: unknown;
9612
+ cached_at: string;
9613
+ salesforce_link: string;
9614
+ };
9615
+ SalesforceCrmAccountDetailsDto: {
9616
+ salesforce_account_id: string;
9617
+ name?: string;
9618
+ website?: string;
9619
+ industry?: string;
9620
+ number_of_employees?: string;
9621
+ annual_revenue?: string;
9622
+ billing_city?: string;
9623
+ billing_state?: string;
9624
+ billing_country?: string;
9625
+ salesforce_data: unknown;
9626
+ salesforce_link: string;
9627
+ };
9628
+ SalesforceCrmOpportunityDetailsDto: {
9629
+ salesforce_opportunity_id: string;
9630
+ name?: string;
9631
+ stage_name?: string;
9632
+ amount?: string;
9633
+ close_date?: string;
9634
+ is_closed?: boolean;
9635
+ is_won?: boolean;
9636
+ salesforce_data: unknown;
9637
+ salesforce_link: string;
9638
+ };
9639
+ SalesforceCrmCaseDetailsDto: {
9640
+ salesforce_case_id: string;
9641
+ case_number?: string;
9642
+ subject?: string;
9643
+ status?: string;
9644
+ priority?: string;
9645
+ origin?: string;
9646
+ created_date?: string;
9647
+ last_modified_date?: string;
9648
+ salesforce_data: unknown;
9649
+ salesforce_link: string;
9650
+ };
9651
+ SalesforceCrmCustomObjectRecordDto: {
9652
+ id: string;
9653
+ values: {
9654
+ [key: string]: string | number | boolean | null;
9655
+ };
9656
+ salesforce_link: string;
9657
+ };
9658
+ SalesforceCrmCustomObjectSectionDto: {
9659
+ object_api_name: string;
9660
+ label: string;
9661
+ records?: components["schemas"]["SalesforceCrmCustomObjectRecordDto"][];
9662
+ };
9663
+ ConsumerSalesforceCrmContactResponseDto: {
9664
+ consumer_id: string;
9665
+ consumer_email?: string;
9666
+ consumer_phone?: string;
9667
+ salesforce_contact?: components["schemas"]["SalesforceCrmContactDetailsDto"];
9668
+ accounts?: components["schemas"]["SalesforceCrmAccountDetailsDto"][];
9669
+ opportunities?: components["schemas"]["SalesforceCrmOpportunityDetailsDto"][];
9670
+ previous_cases?: components["schemas"]["SalesforceCrmCaseDetailsDto"][];
9671
+ custom_objects?: components["schemas"]["SalesforceCrmCustomObjectSectionDto"][];
9672
+ found_in_salesforce: boolean;
9673
+ /** @enum {string} */
9674
+ lookup_status: "found" | "none" | "failed";
9675
+ message: string;
9676
+ };
9345
9677
  CsatSettingsResponseDto: {
9346
9678
  /** @description The ID of the organization */
9347
9679
  organization_id: string;
@@ -9621,7 +9953,7 @@ export interface components {
9621
9953
  };
9622
9954
  PhoneAgentVoiceDto: {
9623
9955
  /** @enum {string} */
9624
- provider: "elevenlabs" | "cartesia";
9956
+ provider: "elevenlabs" | "cartesia" | "vapi";
9625
9957
  voice_id: string;
9626
9958
  name: string;
9627
9959
  labels: {
@@ -9916,6 +10248,16 @@ export interface components {
9916
10248
  /** Format: date-time */
9917
10249
  updated_at: string;
9918
10250
  };
10251
+ WhatsAppTemplateButtonOptionDto: {
10252
+ /** @description Meta's 0-based button index — the key a step's `buttons` binding uses. */
10253
+ index: number;
10254
+ /** @enum {string} */
10255
+ type: "QUICK_REPLY" | "URL" | "PHONE_NUMBER" | "COPY_CODE" | "FLOW" | "MPM";
10256
+ /** @description The label. Null for a copy-code or product button. */
10257
+ text: string | null;
10258
+ /** @description True for a URL button whose link ends in a placeholder (the suffix) and for a copy-code button (the coupon). Each such index needs a binding in the step content; the rest take none. */
10259
+ needs_value: boolean;
10260
+ };
9919
10261
  WhatsAppTemplateOptionDto: {
9920
10262
  id: string;
9921
10263
  /** @description The value a sequence step's content.template_name takes. */
@@ -9937,7 +10279,7 @@ export interface components {
9937
10279
  header_format: ("TEXT" | "IMAGE" | "DOCUMENT" | "VIDEO" | "LOCATION") | null;
9938
10280
  header_text: string | null;
9939
10281
  footer_text: string | null;
9940
- button_labels: string[];
10282
+ buttons: components["schemas"]["WhatsAppTemplateButtonOptionDto"][];
9941
10283
  /** @description Why Meta rejected it, when it did. Null otherwise. */
9942
10284
  rejected_reason: string | null;
9943
10285
  };
@@ -9972,6 +10314,8 @@ export interface components {
9972
10314
  */
9973
10315
  category: "UTILITY" | "MARKETING" | "AUTHENTICATION";
9974
10316
  variables: string[];
10317
+ /** @description Which indexes take a step binding — see needs_value. */
10318
+ buttons: components["schemas"]["WhatsAppTemplateButtonOptionDto"][];
9975
10319
  /** @description Effectively always false on create: Meta review takes minutes to hours. Reference it from a step now — a pending template does not block launch; sends start the moment it clears. */
9976
10320
  sendable: boolean;
9977
10321
  };
@@ -10037,10 +10381,26 @@ export interface components {
10037
10381
  subject: string;
10038
10382
  html: string;
10039
10383
  text: string;
10384
+ /** @description Each substituted variable with its value and whether it came from the person's data or the binding's fallback. Empty when there is nothing to attribute: a personalization (a hand-written snapshot) or a send record (what went out, whole). */
10385
+ variables: {
10386
+ [key: string]: {
10387
+ value: string;
10388
+ /** @enum {string} */
10389
+ via: "data" | "fallback";
10390
+ };
10391
+ };
10040
10392
  } | {
10041
10393
  /** @constant */
10042
10394
  type: "voice_call";
10043
10395
  extra_instructions: string | null;
10396
+ /** @description Each substituted variable with its value and whether it came from the person's data or the binding's fallback. Empty when there is nothing to attribute: a personalization (a hand-written snapshot) or a send record (what went out, whole). */
10397
+ variables: {
10398
+ [key: string]: {
10399
+ value: string;
10400
+ /** @enum {string} */
10401
+ via: "data" | "fallback";
10402
+ };
10403
+ };
10044
10404
  } | {
10045
10405
  /** @constant */
10046
10406
  type: "whatsapp_template";
@@ -10049,6 +10409,9 @@ export interface components {
10049
10409
  values: {
10050
10410
  [key: string]: string;
10051
10411
  };
10412
+ via: {
10413
+ [key: string]: "data" | "fallback";
10414
+ };
10052
10415
  rendered_text: string | null;
10053
10416
  };
10054
10417
  } | {
@@ -10384,9 +10747,26 @@ export interface components {
10384
10747
  template_language: string;
10385
10748
  variables: {
10386
10749
  [key: string]: {
10387
- /** @enum {string} */
10388
- source: "display_name" | "phone" | "email";
10750
+ /** @description A recipient column ('display_name', 'phone', 'email') or the exact name of a key in the person's attached data (extra_data). Those three names always read the column — a key spelled the same is unreachable; any other string reads the attached data, matched verbatim as a top-level key. A missing or empty value falls to `fallback`, and with no fallback the person parks (needs_data). */
10751
+ source: string;
10389
10752
  fallback?: string;
10753
+ /**
10754
+ * @description Optional. Applies to attached-data sources only — ignored on the three columns. How to read the value: string, number, boolean, date, string[] or number[] — the same vocabulary as People-table columns. Absent: text and numbers pass through, anything else counts as missing. Declared: text is parsed where it is unambiguous ("250" as a number or a string, "true" as a boolean, an ISO-shaped date such as "2026-03-12" — other date spellings and epoch numbers are missing), a date renders as a plain day in the person's timezone, a list needs an actual list in the data and joins with commas, dropping items it cannot read, and a value that cannot be read as the declared type counts as missing.
10755
+ * @enum {string}
10756
+ */
10757
+ type?: "string" | "number" | "boolean" | "date" | "string[]" | "number[]";
10758
+ };
10759
+ };
10760
+ buttons?: {
10761
+ [key: string]: {
10762
+ /** @description A recipient column ('display_name', 'phone', 'email') or the exact name of a key in the person's attached data (extra_data). Those three names always read the column — a key spelled the same is unreachable; any other string reads the attached data, matched verbatim as a top-level key. A missing or empty value falls to `fallback`, and with no fallback the person parks (needs_data). */
10763
+ source: string;
10764
+ fallback?: string;
10765
+ /**
10766
+ * @description Optional. Applies to attached-data sources only — ignored on the three columns. How to read the value: string, number, boolean, date, string[] or number[] — the same vocabulary as People-table columns. Absent: text and numbers pass through, anything else counts as missing. Declared: text is parsed where it is unambiguous ("250" as a number or a string, "true" as a boolean, an ISO-shaped date such as "2026-03-12" — other date spellings and epoch numbers are missing), a date renders as a plain day in the person's timezone, a list needs an actual list in the data and joins with commas, dropping items it cannot read, and a value that cannot be read as the declared type counts as missing.
10767
+ * @enum {string}
10768
+ */
10769
+ type?: "string" | "number" | "boolean" | "date" | "string[]" | "number[]";
10390
10770
  };
10391
10771
  };
10392
10772
  };
@@ -10400,9 +10780,14 @@ export interface components {
10400
10780
  extra_instructions?: string;
10401
10781
  variables?: {
10402
10782
  [key: string]: {
10403
- /** @enum {string} */
10404
- source: "display_name" | "phone" | "email";
10783
+ /** @description A recipient column ('display_name', 'phone', 'email') or the exact name of a key in the person's attached data (extra_data). Those three names always read the column — a key spelled the same is unreachable; any other string reads the attached data, matched verbatim as a top-level key. A missing or empty value falls to `fallback`, and with no fallback the person parks (needs_data). */
10784
+ source: string;
10405
10785
  fallback?: string;
10786
+ /**
10787
+ * @description Optional. Applies to attached-data sources only — ignored on the three columns. How to read the value: string, number, boolean, date, string[] or number[] — the same vocabulary as People-table columns. Absent: text and numbers pass through, anything else counts as missing. Declared: text is parsed where it is unambiguous ("250" as a number or a string, "true" as a boolean, an ISO-shaped date such as "2026-03-12" — other date spellings and epoch numbers are missing), a date renders as a plain day in the person's timezone, a list needs an actual list in the data and joins with commas, dropping items it cannot read, and a value that cannot be read as the declared type counts as missing.
10788
+ * @enum {string}
10789
+ */
10790
+ type?: "string" | "number" | "boolean" | "date" | "string[]" | "number[]";
10406
10791
  };
10407
10792
  };
10408
10793
  };
@@ -10419,9 +10804,14 @@ export interface components {
10419
10804
  /** @default {} */
10420
10805
  variables: {
10421
10806
  [key: string]: {
10422
- /** @enum {string} */
10423
- source: "display_name" | "phone" | "email";
10807
+ /** @description A recipient column ('display_name', 'phone', 'email') or the exact name of a key in the person's attached data (extra_data). Those three names always read the column — a key spelled the same is unreachable; any other string reads the attached data, matched verbatim as a top-level key. A missing or empty value falls to `fallback`, and with no fallback the person parks (needs_data). */
10808
+ source: string;
10424
10809
  fallback?: string;
10810
+ /**
10811
+ * @description Optional. Applies to attached-data sources only — ignored on the three columns. How to read the value: string, number, boolean, date, string[] or number[] — the same vocabulary as People-table columns. Absent: text and numbers pass through, anything else counts as missing. Declared: text is parsed where it is unambiguous ("250" as a number or a string, "true" as a boolean, an ISO-shaped date such as "2026-03-12" — other date spellings and epoch numbers are missing), a date renders as a plain day in the person's timezone, a list needs an actual list in the data and joins with commas, dropping items it cannot read, and a value that cannot be read as the declared type counts as missing.
10812
+ * @enum {string}
10813
+ */
10814
+ type?: "string" | "number" | "boolean" | "date" | "string[]" | "number[]";
10425
10815
  };
10426
10816
  };
10427
10817
  };
@@ -10483,9 +10873,26 @@ export interface components {
10483
10873
  template_language: string;
10484
10874
  variables: {
10485
10875
  [key: string]: {
10486
- /** @enum {string} */
10487
- source: "display_name" | "phone" | "email";
10876
+ /** @description A recipient column ('display_name', 'phone', 'email') or the exact name of a key in the person's attached data (extra_data). Those three names always read the column — a key spelled the same is unreachable; any other string reads the attached data, matched verbatim as a top-level key. A missing or empty value falls to `fallback`, and with no fallback the person parks (needs_data). */
10877
+ source: string;
10488
10878
  fallback?: string;
10879
+ /**
10880
+ * @description Optional. Applies to attached-data sources only — ignored on the three columns. How to read the value: string, number, boolean, date, string[] or number[] — the same vocabulary as People-table columns. Absent: text and numbers pass through, anything else counts as missing. Declared: text is parsed where it is unambiguous ("250" as a number or a string, "true" as a boolean, an ISO-shaped date such as "2026-03-12" — other date spellings and epoch numbers are missing), a date renders as a plain day in the person's timezone, a list needs an actual list in the data and joins with commas, dropping items it cannot read, and a value that cannot be read as the declared type counts as missing.
10881
+ * @enum {string}
10882
+ */
10883
+ type?: "string" | "number" | "boolean" | "date" | "string[]" | "number[]";
10884
+ };
10885
+ };
10886
+ buttons?: {
10887
+ [key: string]: {
10888
+ /** @description A recipient column ('display_name', 'phone', 'email') or the exact name of a key in the person's attached data (extra_data). Those three names always read the column — a key spelled the same is unreachable; any other string reads the attached data, matched verbatim as a top-level key. A missing or empty value falls to `fallback`, and with no fallback the person parks (needs_data). */
10889
+ source: string;
10890
+ fallback?: string;
10891
+ /**
10892
+ * @description Optional. Applies to attached-data sources only — ignored on the three columns. How to read the value: string, number, boolean, date, string[] or number[] — the same vocabulary as People-table columns. Absent: text and numbers pass through, anything else counts as missing. Declared: text is parsed where it is unambiguous ("250" as a number or a string, "true" as a boolean, an ISO-shaped date such as "2026-03-12" — other date spellings and epoch numbers are missing), a date renders as a plain day in the person's timezone, a list needs an actual list in the data and joins with commas, dropping items it cannot read, and a value that cannot be read as the declared type counts as missing.
10893
+ * @enum {string}
10894
+ */
10895
+ type?: "string" | "number" | "boolean" | "date" | "string[]" | "number[]";
10489
10896
  };
10490
10897
  };
10491
10898
  };
@@ -10499,9 +10906,14 @@ export interface components {
10499
10906
  extra_instructions?: string;
10500
10907
  variables?: {
10501
10908
  [key: string]: {
10502
- /** @enum {string} */
10503
- source: "display_name" | "phone" | "email";
10909
+ /** @description A recipient column ('display_name', 'phone', 'email') or the exact name of a key in the person's attached data (extra_data). Those three names always read the column — a key spelled the same is unreachable; any other string reads the attached data, matched verbatim as a top-level key. A missing or empty value falls to `fallback`, and with no fallback the person parks (needs_data). */
10910
+ source: string;
10504
10911
  fallback?: string;
10912
+ /**
10913
+ * @description Optional. Applies to attached-data sources only — ignored on the three columns. How to read the value: string, number, boolean, date, string[] or number[] — the same vocabulary as People-table columns. Absent: text and numbers pass through, anything else counts as missing. Declared: text is parsed where it is unambiguous ("250" as a number or a string, "true" as a boolean, an ISO-shaped date such as "2026-03-12" — other date spellings and epoch numbers are missing), a date renders as a plain day in the person's timezone, a list needs an actual list in the data and joins with commas, dropping items it cannot read, and a value that cannot be read as the declared type counts as missing.
10914
+ * @enum {string}
10915
+ */
10916
+ type?: "string" | "number" | "boolean" | "date" | "string[]" | "number[]";
10505
10917
  };
10506
10918
  };
10507
10919
  };
@@ -10518,9 +10930,14 @@ export interface components {
10518
10930
  /** @default {} */
10519
10931
  variables: {
10520
10932
  [key: string]: {
10521
- /** @enum {string} */
10522
- source: "display_name" | "phone" | "email";
10933
+ /** @description A recipient column ('display_name', 'phone', 'email') or the exact name of a key in the person's attached data (extra_data). Those three names always read the column — a key spelled the same is unreachable; any other string reads the attached data, matched verbatim as a top-level key. A missing or empty value falls to `fallback`, and with no fallback the person parks (needs_data). */
10934
+ source: string;
10523
10935
  fallback?: string;
10936
+ /**
10937
+ * @description Optional. Applies to attached-data sources only — ignored on the three columns. How to read the value: string, number, boolean, date, string[] or number[] — the same vocabulary as People-table columns. Absent: text and numbers pass through, anything else counts as missing. Declared: text is parsed where it is unambiguous ("250" as a number or a string, "true" as a boolean, an ISO-shaped date such as "2026-03-12" — other date spellings and epoch numbers are missing), a date renders as a plain day in the person's timezone, a list needs an actual list in the data and joins with commas, dropping items it cannot read, and a value that cannot be read as the declared type counts as missing.
10938
+ * @enum {string}
10939
+ */
10940
+ type?: "string" | "number" | "boolean" | "date" | "string[]" | "number[]";
10524
10941
  };
10525
10942
  };
10526
10943
  };
@@ -10690,61 +11107,220 @@ export interface components {
10690
11107
  sunday: string;
10691
11108
  holidays: string;
10692
11109
  /** @enum {string} */
10693
- clock: "called_party" | "national" | "unknown";
10694
- /**
10695
- * @description Say "required" only for statute/regulation; the rest is guidance.
10696
- * @enum {string}
10697
- */
10698
- basis: "statute" | "regulation" | "code_of_conduct" | "regulator_guidance" | "partial" | "none" | "unknown";
10699
- note: string;
10700
- };
10701
- frequency: string | null;
10702
- dnc: string;
10703
- ai_disclosure: string;
10704
- recording: string;
10705
- origination: string;
10706
- /** @enum {string} */
10707
- origination_kind: "foreign_origin_prohibited" | "local_number_required" | "dedicated_prefix_required" | "registered_series_required" | "own_listed_number_required" | "cli_must_be_presented" | "none_found";
10708
- penalties: string;
10709
- /** @description Automated marketing calls are a prohibited class here regardless of consent. */
10710
- prohibited: boolean;
10711
- links: {
10712
- name: string;
10713
- url: string;
11110
+ clock: "called_party" | "national" | "unknown";
11111
+ /**
11112
+ * @description Say "required" only for statute/regulation; the rest is guidance.
11113
+ * @enum {string}
11114
+ */
11115
+ basis: "statute" | "regulation" | "code_of_conduct" | "regulator_guidance" | "partial" | "none" | "unknown";
11116
+ note: string;
11117
+ };
11118
+ frequency: string | null;
11119
+ dnc: string;
11120
+ ai_disclosure: string;
11121
+ recording: string;
11122
+ origination: string;
11123
+ /** @enum {string} */
11124
+ origination_kind: "foreign_origin_prohibited" | "local_number_required" | "dedicated_prefix_required" | "registered_series_required" | "own_listed_number_required" | "cli_must_be_presented" | "none_found";
11125
+ penalties: string;
11126
+ /** @description Automated marketing calls are a prohibited class here regardless of consent. */
11127
+ prohibited: boolean;
11128
+ links: {
11129
+ name: string;
11130
+ url: string;
11131
+ }[];
11132
+ last_reviewed: string;
11133
+ }[];
11134
+ };
11135
+ LaunchPreviewDto: {
11136
+ /** @description A FORECAST of how many would start sending, not a promise: consent and suppression are re-checked at claim time and fail closed. */
11137
+ will_send: number;
11138
+ already_sending: number;
11139
+ held: {
11140
+ /** @enum {string} */
11141
+ reason: "below_cutoff" | "suppressed";
11142
+ count: number;
11143
+ }[];
11144
+ /** @description Empty means launch works. Launch itself refuses on anything here. */
11145
+ blockers: {
11146
+ /** @enum {string} */
11147
+ reason: "no_steps" | "no_sender" | "paused" | "template_not_sendable";
11148
+ channels?: string[];
11149
+ /** @description `template_not_sendable` only: which templates, and what Meta says. Only DEAD templates appear here — one still in review is in `pending_templates` and does not block. */
11150
+ templates?: {
11151
+ name: string;
11152
+ language: string;
11153
+ /** @description A dead state (REJECTED/DISABLED) — needs a new template. */
11154
+ status: string;
11155
+ }[];
11156
+ }[];
11157
+ /** @description Templates still waiting on approval. These do NOT stop a launch: armed people wait and start sending the moment the template clears. */
11158
+ pending_templates: {
11159
+ name: string;
11160
+ language: string;
11161
+ status: string;
11162
+ }[];
11163
+ /** @description Informational: present when the campaign has voice steps reaching a catalogued country. Show it before launching and pass regulatory_acknowledged: true when the user confirms — the launch itself never refuses over it. Null: nothing to show. */
11164
+ regulatory_notice: components["schemas"]["SequenceRegulatoryNoticeDto"] | null;
11165
+ };
11166
+ SequenceVariableCoverageDto: {
11167
+ /** @description True when the sequence holds more people than the sample these counts read. */
11168
+ sampled: boolean;
11169
+ /** @description People the counts were read over (first N by id). */
11170
+ sample_size: number;
11171
+ /** @description Enrolled people on the sequence. */
11172
+ total: number;
11173
+ /** @description Keyed by each binding's `source` — a recipient column or an attached-data key. */
11174
+ sources: {
11175
+ [key: string]: {
11176
+ /** @description People in the sample with a non-blank value. */
11177
+ present: number;
11178
+ /** @description People in the sample without one. */
11179
+ missing: number;
11180
+ };
11181
+ };
11182
+ };
11183
+ SequenceStepsWriteDto: {
11184
+ /** Format: uuid */
11185
+ id: string;
11186
+ /** Format: uuid */
11187
+ org_id: string;
11188
+ name: string;
11189
+ /** @enum {string} */
11190
+ status: "draft" | "active" | "paused";
11191
+ steps: ({
11192
+ /** @constant */
11193
+ channel: "whatsapp";
11194
+ content: {
11195
+ /** @constant */
11196
+ type: "whatsapp_template";
11197
+ template_name: string;
11198
+ template_language: string;
11199
+ variables: {
11200
+ [key: string]: {
11201
+ /** @description A recipient column ('display_name', 'phone', 'email') or the exact name of a key in the person's attached data (extra_data). Those three names always read the column — a key spelled the same is unreachable; any other string reads the attached data, matched verbatim as a top-level key. A missing or empty value falls to `fallback`, and with no fallback the person parks (needs_data). */
11202
+ source: string;
11203
+ fallback?: string;
11204
+ /**
11205
+ * @description Optional. Applies to attached-data sources only — ignored on the three columns. How to read the value: string, number, boolean, date, string[] or number[] — the same vocabulary as People-table columns. Absent: text and numbers pass through, anything else counts as missing. Declared: text is parsed where it is unambiguous ("250" as a number or a string, "true" as a boolean, an ISO-shaped date such as "2026-03-12" — other date spellings and epoch numbers are missing), a date renders as a plain day in the person's timezone, a list needs an actual list in the data and joins with commas, dropping items it cannot read, and a value that cannot be read as the declared type counts as missing.
11206
+ * @enum {string}
11207
+ */
11208
+ type?: "string" | "number" | "boolean" | "date" | "string[]" | "number[]";
11209
+ };
11210
+ };
11211
+ buttons?: {
11212
+ [key: string]: {
11213
+ /** @description A recipient column ('display_name', 'phone', 'email') or the exact name of a key in the person's attached data (extra_data). Those three names always read the column — a key spelled the same is unreachable; any other string reads the attached data, matched verbatim as a top-level key. A missing or empty value falls to `fallback`, and with no fallback the person parks (needs_data). */
11214
+ source: string;
11215
+ fallback?: string;
11216
+ /**
11217
+ * @description Optional. Applies to attached-data sources only — ignored on the three columns. How to read the value: string, number, boolean, date, string[] or number[] — the same vocabulary as People-table columns. Absent: text and numbers pass through, anything else counts as missing. Declared: text is parsed where it is unambiguous ("250" as a number or a string, "true" as a boolean, an ISO-shaped date such as "2026-03-12" — other date spellings and epoch numbers are missing), a date renders as a plain day in the person's timezone, a list needs an actual list in the data and joins with commas, dropping items it cannot read, and a value that cannot be read as the declared type counts as missing.
11218
+ * @enum {string}
11219
+ */
11220
+ type?: "string" | "number" | "boolean" | "date" | "string[]" | "number[]";
11221
+ };
11222
+ };
11223
+ };
11224
+ delay_minutes: number;
11225
+ } | {
11226
+ /** @constant */
11227
+ channel: "voice";
11228
+ content: {
11229
+ /** @constant */
11230
+ type: "voice_call";
11231
+ extra_instructions?: string;
11232
+ variables?: {
11233
+ [key: string]: {
11234
+ /** @description A recipient column ('display_name', 'phone', 'email') or the exact name of a key in the person's attached data (extra_data). Those three names always read the column — a key spelled the same is unreachable; any other string reads the attached data, matched verbatim as a top-level key. A missing or empty value falls to `fallback`, and with no fallback the person parks (needs_data). */
11235
+ source: string;
11236
+ fallback?: string;
11237
+ /**
11238
+ * @description Optional. Applies to attached-data sources only — ignored on the three columns. How to read the value: string, number, boolean, date, string[] or number[] — the same vocabulary as People-table columns. Absent: text and numbers pass through, anything else counts as missing. Declared: text is parsed where it is unambiguous ("250" as a number or a string, "true" as a boolean, an ISO-shaped date such as "2026-03-12" — other date spellings and epoch numbers are missing), a date renders as a plain day in the person's timezone, a list needs an actual list in the data and joins with commas, dropping items it cannot read, and a value that cannot be read as the declared type counts as missing.
11239
+ * @enum {string}
11240
+ */
11241
+ type?: "string" | "number" | "boolean" | "date" | "string[]" | "number[]";
11242
+ };
11243
+ };
11244
+ };
11245
+ delay_minutes: number;
11246
+ } | {
11247
+ /** @constant */
11248
+ channel: "email";
11249
+ content: {
11250
+ /** @constant */
11251
+ type: "email";
11252
+ subject: string;
11253
+ html: string;
11254
+ text: string;
11255
+ /** @default {} */
11256
+ variables: {
11257
+ [key: string]: {
11258
+ /** @description A recipient column ('display_name', 'phone', 'email') or the exact name of a key in the person's attached data (extra_data). Those three names always read the column — a key spelled the same is unreachable; any other string reads the attached data, matched verbatim as a top-level key. A missing or empty value falls to `fallback`, and with no fallback the person parks (needs_data). */
11259
+ source: string;
11260
+ fallback?: string;
11261
+ /**
11262
+ * @description Optional. Applies to attached-data sources only — ignored on the three columns. How to read the value: string, number, boolean, date, string[] or number[] — the same vocabulary as People-table columns. Absent: text and numbers pass through, anything else counts as missing. Declared: text is parsed where it is unambiguous ("250" as a number or a string, "true" as a boolean, an ISO-shaped date such as "2026-03-12" — other date spellings and epoch numbers are missing), a date renders as a plain day in the person's timezone, a list needs an actual list in the data and joins with commas, dropping items it cannot read, and a value that cannot be read as the declared type counts as missing.
11263
+ * @enum {string}
11264
+ */
11265
+ type?: "string" | "number" | "boolean" | "date" | "string[]" | "number[]";
11266
+ };
11267
+ };
11268
+ };
11269
+ delay_minutes: number;
11270
+ })[];
11271
+ settings: {
11272
+ block_active_elsewhere?: boolean;
11273
+ block_contacted_before?: boolean;
11274
+ respect_office_hours?: boolean;
11275
+ /** Format: uuid */
11276
+ office_hours_id?: string;
11277
+ };
11278
+ brief: string;
11279
+ reply_instructions: string;
11280
+ criteria: {
11281
+ must: {
11282
+ /** @description A few words naming this criterion, shown in the dashboard — "Recent invoicing complaint", "Business account". Not a sentence. */
11283
+ label: string;
11284
+ /** @description The full instruction the judge reads. Name the boundary explicitly — what counts and what does not. Never shown in the table. */
11285
+ text: string;
11286
+ }[];
11287
+ nice: {
11288
+ /** @description A few words naming this criterion, shown in the dashboard — "Recent invoicing complaint", "Business account". Not a sentence. */
11289
+ label: string;
11290
+ /** @description The full instruction the judge reads. Name the boundary explicitly — what counts and what does not. Never shown in the table. */
11291
+ text: string;
11292
+ /** @enum {string} */
11293
+ grade: "high" | "medium" | "low";
10714
11294
  }[];
10715
- last_reviewed: string;
10716
- }[];
10717
- };
10718
- LaunchPreviewDto: {
10719
- /** @description A FORECAST of how many would start sending, not a promise: consent and suppression are re-checked at claim time and fail closed. */
10720
- will_send: number;
10721
- already_sending: number;
10722
- held: {
10723
- /** @enum {string} */
10724
- reason: "below_cutoff" | "suppressed";
10725
- count: number;
10726
- }[];
10727
- /** @description Empty means launch works. Launch itself refuses on anything here. */
10728
- blockers: {
11295
+ };
11296
+ columns: {
11297
+ key: string;
11298
+ label: string;
11299
+ path: string;
10729
11300
  /** @enum {string} */
10730
- reason: "no_steps" | "no_sender" | "paused" | "template_not_sendable";
10731
- channels?: string[];
10732
- /** @description `template_not_sendable` only: which templates, and what Meta says. Only DEAD templates appear here — one still in review is in `pending_templates` and does not block. */
10733
- templates?: {
10734
- name: string;
10735
- language: string;
10736
- /** @description A dead state (REJECTED/DISABLED) — needs a new template. */
10737
- status: string;
10738
- }[];
11301
+ type: "string" | "number" | "boolean" | "date" | "string[]" | "number[]";
10739
11302
  }[];
10740
- /** @description Templates still waiting on approval. These do NOT stop a launch: armed people wait and start sending the moment the template clears. */
10741
- pending_templates: {
10742
- name: string;
10743
- language: string;
10744
- status: string;
11303
+ /** Format: date-time */
11304
+ created_at: string;
11305
+ /** Format: date-time */
11306
+ updated_at: string;
11307
+ deleted_at: string | null;
11308
+ variable_coverage: components["schemas"]["SequenceVariableCoverageDto"];
11309
+ };
11310
+ SequenceDataKeysDto: {
11311
+ /** @description True when the sequence holds more people than the sample read. */
11312
+ sampled: boolean;
11313
+ /** @description People the keys were read over (first N by id). */
11314
+ sample_size: number;
11315
+ /** @description Enrolled people on the sequence. */
11316
+ total: number;
11317
+ /** @description Most-covered first, at most 200 — a wider bag is truncated. */
11318
+ keys: {
11319
+ /** @description A top-level attached-data key, usable verbatim as a `source`. */
11320
+ key: string;
11321
+ /** @description People in the sample with a non-blank value at it. */
11322
+ present: number;
10745
11323
  }[];
10746
- /** @description Informational: present when the campaign has voice steps reaching a catalogued country. Show it before launching and pass regulatory_acknowledged: true when the user confirms — the launch itself never refuses over it. Null: nothing to show. */
10747
- regulatory_notice: components["schemas"]["SequenceRegulatoryNoticeDto"] | null;
10748
11324
  };
10749
11325
  SequenceSendersDto: {
10750
11326
  senders: {
@@ -10853,82 +11429,6 @@ export interface components {
10853
11429
  /** @description Parent folder id; null for a top-level folder. */
10854
11430
  parent_id: string | null;
10855
11431
  };
10856
- SalesforceCrmContactDetailsDto: {
10857
- id: string;
10858
- salesforce_record_id: string;
10859
- /** @enum {string} */
10860
- record_type: "Contact" | "Lead";
10861
- email?: string;
10862
- phone?: string;
10863
- first_name?: string;
10864
- last_name?: string;
10865
- company?: string;
10866
- salesforce_data: unknown;
10867
- cached_at: string;
10868
- salesforce_link: string;
10869
- };
10870
- SalesforceCrmAccountDetailsDto: {
10871
- salesforce_account_id: string;
10872
- name?: string;
10873
- website?: string;
10874
- industry?: string;
10875
- number_of_employees?: string;
10876
- annual_revenue?: string;
10877
- billing_city?: string;
10878
- billing_state?: string;
10879
- billing_country?: string;
10880
- salesforce_data: unknown;
10881
- salesforce_link: string;
10882
- };
10883
- SalesforceCrmOpportunityDetailsDto: {
10884
- salesforce_opportunity_id: string;
10885
- name?: string;
10886
- stage_name?: string;
10887
- amount?: string;
10888
- close_date?: string;
10889
- is_closed?: boolean;
10890
- is_won?: boolean;
10891
- salesforce_data: unknown;
10892
- salesforce_link: string;
10893
- };
10894
- SalesforceCrmCaseDetailsDto: {
10895
- salesforce_case_id: string;
10896
- case_number?: string;
10897
- subject?: string;
10898
- status?: string;
10899
- priority?: string;
10900
- origin?: string;
10901
- created_date?: string;
10902
- last_modified_date?: string;
10903
- salesforce_data: unknown;
10904
- salesforce_link: string;
10905
- };
10906
- SalesforceCrmCustomObjectRecordDto: {
10907
- id: string;
10908
- values: {
10909
- [key: string]: string | number | boolean | null;
10910
- };
10911
- salesforce_link: string;
10912
- };
10913
- SalesforceCrmCustomObjectSectionDto: {
10914
- object_api_name: string;
10915
- label: string;
10916
- records?: components["schemas"]["SalesforceCrmCustomObjectRecordDto"][];
10917
- };
10918
- ConsumerSalesforceCrmContactResponseDto: {
10919
- consumer_id: string;
10920
- consumer_email?: string;
10921
- consumer_phone?: string;
10922
- salesforce_contact?: components["schemas"]["SalesforceCrmContactDetailsDto"];
10923
- accounts?: components["schemas"]["SalesforceCrmAccountDetailsDto"][];
10924
- opportunities?: components["schemas"]["SalesforceCrmOpportunityDetailsDto"][];
10925
- previous_cases?: components["schemas"]["SalesforceCrmCaseDetailsDto"][];
10926
- custom_objects?: components["schemas"]["SalesforceCrmCustomObjectSectionDto"][];
10927
- found_in_salesforce: boolean;
10928
- /** @enum {string} */
10929
- lookup_status: "found" | "none" | "failed";
10930
- message: string;
10931
- };
10932
11432
  SalesforceCrmConnectionStatusDto: {
10933
11433
  is_active: boolean;
10934
11434
  };
@@ -11964,6 +12464,7 @@ export interface components {
11964
12464
  completelyAndFullyCoveredUserIssue: boolean;
11965
12465
  debugInfo?: {
11966
12466
  actionCalls?: {
12467
+ callId?: string;
11967
12468
  action: {
11968
12469
  name: string;
11969
12470
  id: string;
@@ -12105,6 +12606,7 @@ export interface components {
12105
12606
  };
12106
12607
  sessionIsHandedOff?: boolean;
12107
12608
  steeredIntoTurnId?: string;
12609
+ workflowRunIds?: string[];
12108
12610
  resolveArgs?: {
12109
12611
  /** @description Summary of the conversation with the user to be viewed by a human agent. */
12110
12612
  summary: string;
@@ -12640,6 +13142,15 @@ export interface components {
12640
13142
  has_previous_page: boolean;
12641
13143
  };
12642
13144
  };
13145
+ CsatScoreAgent: {
13146
+ id: number;
13147
+ name: string | null;
13148
+ avatar_url: string | null;
13149
+ };
13150
+ CsatScoreTeam: {
13151
+ id: string;
13152
+ name: string | null;
13153
+ };
12643
13154
  CsatScorePublic: {
12644
13155
  id: string;
12645
13156
  organization_id: string;
@@ -12652,6 +13163,10 @@ export interface components {
12652
13163
  /** Format: date-time */
12653
13164
  updated_at: string;
12654
13165
  contact: components["schemas"]["Contact"] | null;
13166
+ /** @description The agent this score is attributed to: the session assignee at the moment the customer submitted it. Fixed at submit time, so reassigning the session afterwards never moves the rating. Null when the session was unassigned. */
13167
+ agent: components["schemas"]["CsatScoreAgent"] | null;
13168
+ /** @description The team this score is attributed to, captured at the moment the customer submitted it. Fixed at submit time, so moving the session between teams afterwards never moves the rating. Null when the session belonged to no team. */
13169
+ team: components["schemas"]["CsatScoreTeam"] | null;
12655
13170
  };
12656
13171
  CsatScorePublicResponseDto: components["schemas"]["CsatScorePublic"] | null;
12657
13172
  PaginatedCsatScoresPublicResponseDto: {
@@ -13353,7 +13868,7 @@ export interface components {
13353
13868
  /** Format: email */
13354
13869
  email: string;
13355
13870
  avatar_url?: string | null;
13356
- permissions?: ("*" | "sessions:read" | "sessions:write" | "sessions-shared-views:read" | "sessions-shared-views:write" | "sessions-create:write" | "sessions-sub-sessions:write" | "contacts:read" | "contacts:write" | "companies:read" | "companies:write" | "sequences:read" | "sequences:write" | "ai-training:read" | "ai-training:write" | "reports:read" | "reports:write" | "help-center:read" | "help-center:write" | "workflows:read" | "workflows:write" | "workflows:execute" | "actions:read" | "actions:write" | "mini-apps:read" | "mini-apps:write" | "companion:read" | "companion:write" | "redaction:read" | "redaction:write" | "voc:read" | "voc:write" | "audit-logs:read" | "settings:read" | "settings:write" | "settings-general:read" | "settings-general:write" | "settings-billing:read" | "settings-billing:write" | "settings-api-keys:read" | "settings-api-keys:write" | "settings-autopilot:read" | "settings-autopilot:write" | "settings-structured-fields:read" | "settings-structured-fields:write" | "settings-webhooks:read" | "settings-webhooks:write" | "settings-secrets:read" | "settings-secrets:write" | "settings-handoff:read" | "settings-handoff:write" | "settings-translations:read" | "settings-translations:write" | "settings-sso:read" | "settings-sso:write" | "settings-integrations:read" | "settings-integrations:write" | "settings-members:read" | "settings-members:write" | "settings-tags:read" | "settings-tags:write" | "settings-sla:read" | "settings-sla:write" | "settings-csat:read" | "settings-csat:write" | "settings-reports:read" | "settings-reports:write" | "settings-office-hours:read" | "settings-office-hours:write" | "settings-channels:read" | "settings-channels:write" | "settings-channels-voice:read" | "settings-channels-voice:write" | "settings-email-fleet:read" | "settings-email-fleet:write" | "settings-helpdesk:read" | "settings-helpdesk:write" | "settings-custom-statuses:read" | "settings-custom-statuses:write" | "settings-availability-statuses:read" | "settings-availability-statuses:write" | "settings-personal-profile:read" | "settings-personal-profile:write" | "settings-groups:read" | "settings-groups:write" | "settings-roles:read" | "settings-roles:write" | "settings-macros:read" | "settings-macros:write" | "settings-skills:read" | "settings-skills:write")[] | null;
13871
+ permissions?: ("*" | "sessions:read" | "sessions:write" | "sessions-personal-views:write" | "sessions-shared-views:read" | "sessions-shared-views:write" | "sessions-create:write" | "sessions-sub-sessions:write" | "contacts:read" | "contacts:write" | "companies:read" | "companies:write" | "sequences:read" | "sequences:write" | "ai-training:read" | "ai-training:write" | "reports:read" | "reports:write" | "help-center:read" | "help-center:write" | "workflows:read" | "workflows:write" | "workflows:execute" | "actions:read" | "actions:write" | "mini-apps:read" | "mini-apps:write" | "companion:read" | "companion:write" | "redaction:read" | "redaction:write" | "voc:read" | "voc:write" | "audit-logs:read" | "settings:read" | "settings:write" | "settings-general:read" | "settings-general:write" | "settings-billing:read" | "settings-billing:write" | "settings-api-keys:read" | "settings-api-keys:write" | "settings-autopilot:read" | "settings-autopilot:write" | "settings-structured-fields:read" | "settings-structured-fields:write" | "settings-webhooks:read" | "settings-webhooks:write" | "settings-secrets:read" | "settings-secrets:write" | "settings-handoff:read" | "settings-handoff:write" | "settings-translations:read" | "settings-translations:write" | "settings-sso:read" | "settings-sso:write" | "settings-integrations:read" | "settings-integrations:write" | "settings-members:read" | "settings-members:write" | "settings-tags:read" | "settings-tags:write" | "settings-sla:read" | "settings-sla:write" | "settings-csat:read" | "settings-csat:write" | "settings-reports:read" | "settings-reports:write" | "settings-office-hours:read" | "settings-office-hours:write" | "settings-channels:read" | "settings-channels:write" | "settings-channels-voice:read" | "settings-channels-voice:write" | "settings-email-fleet:read" | "settings-email-fleet:write" | "settings-helpdesk:read" | "settings-helpdesk:write" | "settings-custom-statuses:read" | "settings-custom-statuses:write" | "settings-availability-statuses:read" | "settings-availability-statuses:write" | "settings-personal-profile:read" | "settings-personal-profile:write" | "settings-groups:read" | "settings-groups:write" | "settings-roles:read" | "settings-roles:write" | "settings-macros:read" | "settings-macros:write" | "settings-skills:read" | "settings-skills:write")[] | null;
13357
13872
  };
13358
13873
  OrgUserDetail: {
13359
13874
  id: number;
@@ -13362,7 +13877,7 @@ export interface components {
13362
13877
  /** Format: email */
13363
13878
  email: string;
13364
13879
  avatar_url?: string | null;
13365
- permissions?: ("*" | "sessions:read" | "sessions:write" | "sessions-shared-views:read" | "sessions-shared-views:write" | "sessions-create:write" | "sessions-sub-sessions:write" | "contacts:read" | "contacts:write" | "companies:read" | "companies:write" | "sequences:read" | "sequences:write" | "ai-training:read" | "ai-training:write" | "reports:read" | "reports:write" | "help-center:read" | "help-center:write" | "workflows:read" | "workflows:write" | "workflows:execute" | "actions:read" | "actions:write" | "mini-apps:read" | "mini-apps:write" | "companion:read" | "companion:write" | "redaction:read" | "redaction:write" | "voc:read" | "voc:write" | "audit-logs:read" | "settings:read" | "settings:write" | "settings-general:read" | "settings-general:write" | "settings-billing:read" | "settings-billing:write" | "settings-api-keys:read" | "settings-api-keys:write" | "settings-autopilot:read" | "settings-autopilot:write" | "settings-structured-fields:read" | "settings-structured-fields:write" | "settings-webhooks:read" | "settings-webhooks:write" | "settings-secrets:read" | "settings-secrets:write" | "settings-handoff:read" | "settings-handoff:write" | "settings-translations:read" | "settings-translations:write" | "settings-sso:read" | "settings-sso:write" | "settings-integrations:read" | "settings-integrations:write" | "settings-members:read" | "settings-members:write" | "settings-tags:read" | "settings-tags:write" | "settings-sla:read" | "settings-sla:write" | "settings-csat:read" | "settings-csat:write" | "settings-reports:read" | "settings-reports:write" | "settings-office-hours:read" | "settings-office-hours:write" | "settings-channels:read" | "settings-channels:write" | "settings-channels-voice:read" | "settings-channels-voice:write" | "settings-email-fleet:read" | "settings-email-fleet:write" | "settings-helpdesk:read" | "settings-helpdesk:write" | "settings-custom-statuses:read" | "settings-custom-statuses:write" | "settings-availability-statuses:read" | "settings-availability-statuses:write" | "settings-personal-profile:read" | "settings-personal-profile:write" | "settings-groups:read" | "settings-groups:write" | "settings-roles:read" | "settings-roles:write" | "settings-macros:read" | "settings-macros:write" | "settings-skills:read" | "settings-skills:write")[] | null;
13880
+ permissions?: ("*" | "sessions:read" | "sessions:write" | "sessions-personal-views:write" | "sessions-shared-views:read" | "sessions-shared-views:write" | "sessions-create:write" | "sessions-sub-sessions:write" | "contacts:read" | "contacts:write" | "companies:read" | "companies:write" | "sequences:read" | "sequences:write" | "ai-training:read" | "ai-training:write" | "reports:read" | "reports:write" | "help-center:read" | "help-center:write" | "workflows:read" | "workflows:write" | "workflows:execute" | "actions:read" | "actions:write" | "mini-apps:read" | "mini-apps:write" | "companion:read" | "companion:write" | "redaction:read" | "redaction:write" | "voc:read" | "voc:write" | "audit-logs:read" | "settings:read" | "settings:write" | "settings-general:read" | "settings-general:write" | "settings-billing:read" | "settings-billing:write" | "settings-api-keys:read" | "settings-api-keys:write" | "settings-autopilot:read" | "settings-autopilot:write" | "settings-structured-fields:read" | "settings-structured-fields:write" | "settings-webhooks:read" | "settings-webhooks:write" | "settings-secrets:read" | "settings-secrets:write" | "settings-handoff:read" | "settings-handoff:write" | "settings-translations:read" | "settings-translations:write" | "settings-sso:read" | "settings-sso:write" | "settings-integrations:read" | "settings-integrations:write" | "settings-members:read" | "settings-members:write" | "settings-tags:read" | "settings-tags:write" | "settings-sla:read" | "settings-sla:write" | "settings-csat:read" | "settings-csat:write" | "settings-reports:read" | "settings-reports:write" | "settings-office-hours:read" | "settings-office-hours:write" | "settings-channels:read" | "settings-channels:write" | "settings-channels-voice:read" | "settings-channels-voice:write" | "settings-email-fleet:read" | "settings-email-fleet:write" | "settings-helpdesk:read" | "settings-helpdesk:write" | "settings-custom-statuses:read" | "settings-custom-statuses:write" | "settings-availability-statuses:read" | "settings-availability-statuses:write" | "settings-personal-profile:read" | "settings-personal-profile:write" | "settings-groups:read" | "settings-groups:write" | "settings-roles:read" | "settings-roles:write" | "settings-macros:read" | "settings-macros:write" | "settings-skills:read" | "settings-skills:write")[] | null;
13366
13881
  teams: {
13367
13882
  group: components["schemas"]["GroupDto"];
13368
13883
  is_user_available_on_group: boolean;
@@ -15182,6 +15697,74 @@ export interface operations {
15182
15697
  };
15183
15698
  };
15184
15699
  };
15700
+ getSessionStructuredFieldValues: {
15701
+ parameters: {
15702
+ query?: never;
15703
+ header?: never;
15704
+ path: {
15705
+ /** @description The unique identifier of the chat session */
15706
+ session_id: string;
15707
+ };
15708
+ cookie?: never;
15709
+ };
15710
+ requestBody?: never;
15711
+ responses: {
15712
+ /** @description Default Response */
15713
+ 200: {
15714
+ headers: {
15715
+ [name: string]: unknown;
15716
+ };
15717
+ content: {
15718
+ "application/json": components["schemas"]["SessionStructuredFieldValueListDto"];
15719
+ };
15720
+ };
15721
+ /** @description Internal Server Error */
15722
+ 500: {
15723
+ headers: {
15724
+ [name: string]: unknown;
15725
+ };
15726
+ content: {
15727
+ "application/json": components["schemas"]["ErrorDto"];
15728
+ };
15729
+ };
15730
+ };
15731
+ };
15732
+ setSessionStructuredFieldValues: {
15733
+ parameters: {
15734
+ query?: never;
15735
+ header?: never;
15736
+ path: {
15737
+ /** @description The unique identifier of the chat session */
15738
+ session_id: string;
15739
+ };
15740
+ cookie?: never;
15741
+ };
15742
+ requestBody: {
15743
+ content: {
15744
+ "application/json": components["schemas"]["SetSessionStructuredFieldValuesDto"];
15745
+ };
15746
+ };
15747
+ responses: {
15748
+ /** @description Default Response */
15749
+ 200: {
15750
+ headers: {
15751
+ [name: string]: unknown;
15752
+ };
15753
+ content: {
15754
+ "application/json": components["schemas"]["SessionStructuredFieldValueListDto"];
15755
+ };
15756
+ };
15757
+ /** @description Internal Server Error */
15758
+ 500: {
15759
+ headers: {
15760
+ [name: string]: unknown;
15761
+ };
15762
+ content: {
15763
+ "application/json": components["schemas"]["ErrorDto"];
15764
+ };
15765
+ };
15766
+ };
15767
+ };
15185
15768
  investigateSessionDebug: {
15186
15769
  parameters: {
15187
15770
  query?: never;
@@ -21237,7 +21820,7 @@ export interface operations {
21237
21820
  [name: string]: unknown;
21238
21821
  };
21239
21822
  content: {
21240
- "application/json": components["schemas"]["SequenceDto"];
21823
+ "application/json": components["schemas"]["SequenceStepsWriteDto"];
21241
21824
  };
21242
21825
  };
21243
21826
  /** @description Internal Server Error */
@@ -21273,7 +21856,39 @@ export interface operations {
21273
21856
  [name: string]: unknown;
21274
21857
  };
21275
21858
  content: {
21276
- "application/json": components["schemas"]["SequenceDto"];
21859
+ "application/json": components["schemas"]["SequenceStepsWriteDto"];
21860
+ };
21861
+ };
21862
+ /** @description Internal Server Error */
21863
+ 500: {
21864
+ headers: {
21865
+ [name: string]: unknown;
21866
+ };
21867
+ content: {
21868
+ "application/json": components["schemas"]["ErrorDto"];
21869
+ };
21870
+ };
21871
+ };
21872
+ };
21873
+ listSequenceDataKeys: {
21874
+ parameters: {
21875
+ query?: never;
21876
+ header?: never;
21877
+ path: {
21878
+ /** @description The unique identifier of the sequence */
21879
+ sequenceId: string;
21880
+ };
21881
+ cookie?: never;
21882
+ };
21883
+ requestBody?: never;
21884
+ responses: {
21885
+ /** @description Default Response */
21886
+ 200: {
21887
+ headers: {
21888
+ [name: string]: unknown;
21889
+ };
21890
+ content: {
21891
+ "application/json": components["schemas"]["SequenceDataKeysDto"];
21277
21892
  };
21278
21893
  };
21279
21894
  /** @description Internal Server Error */