@opencx/mcp 1.15.24 → 1.15.26

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.
package/dist/schema.d.ts CHANGED
@@ -471,6 +471,30 @@ export interface paths {
471
471
  patch?: never;
472
472
  trace?: never;
473
473
  };
474
+ "/chat/sessions/{session_id}/sub-status": {
475
+ parameters: {
476
+ query?: never;
477
+ header?: never;
478
+ path?: never;
479
+ cookie?: never;
480
+ };
481
+ get?: never;
482
+ /**
483
+ * Set the custom status of a chat session
484
+ * @description Apply a custom status (see GET /custom-statuses) to the session. The session moves to the custom status's built-in parent: an open-parented status reopens a closed session, a closed-parented one closes it, with the same side effects as the dashboard (timeline events, ticketing-system sync, workflow triggers). Replaces any custom status already on the session.
485
+ */
486
+ put: operations["setChatSessionSubStatus"];
487
+ post?: never;
488
+ /**
489
+ * Clear the custom status of a chat session
490
+ * @description Remove the custom status from the session. The built-in status (open / closed_resolved / closed_unresolved) is left exactly as it is, so clearing on a closed session does not reopen or re-close it. To change the built-in status use PATCH /chat/sessions/{session_id}.
491
+ */
492
+ delete: operations["clearChatSessionSubStatus"];
493
+ options?: never;
494
+ head?: never;
495
+ patch?: never;
496
+ trace?: never;
497
+ };
474
498
  "/chat/sessions/{session_id}/send": {
475
499
  parameters: {
476
500
  query?: never;
@@ -2237,6 +2261,58 @@ export interface paths {
2237
2261
  patch?: never;
2238
2262
  trace?: never;
2239
2263
  };
2264
+ "/custom-statuses": {
2265
+ parameters: {
2266
+ query?: never;
2267
+ header?: never;
2268
+ path?: never;
2269
+ cookie?: never;
2270
+ };
2271
+ /**
2272
+ * List custom statuses
2273
+ * @description List every custom session status defined for your organization. A custom status refines one of the built-in statuses (open, closed_resolved, closed_unresolved) with an agent-facing name and optional customer-facing label, color, and icon. A session carries at most one custom status in its `sub_status_id`; use this list to resolve that id to a name.
2274
+ */
2275
+ get: operations["listCustomStatuses"];
2276
+ put?: never;
2277
+ /**
2278
+ * Create a custom status
2279
+ * @description Create a custom session status under one of the built-in statuses. Names are unique per organization. Once created, apply it to a session with `PUT /chat/sessions/{session_id}/sub-status`.
2280
+ */
2281
+ post: operations["createCustomStatus"];
2282
+ delete?: never;
2283
+ options?: never;
2284
+ head?: never;
2285
+ patch?: never;
2286
+ trace?: never;
2287
+ };
2288
+ "/custom-statuses/{id}": {
2289
+ parameters: {
2290
+ query?: never;
2291
+ header?: never;
2292
+ path?: never;
2293
+ cookie?: never;
2294
+ };
2295
+ /**
2296
+ * Get a custom status
2297
+ * @description Fetch one custom session status by id.
2298
+ */
2299
+ get: operations["getCustomStatus"];
2300
+ put?: never;
2301
+ post?: never;
2302
+ /**
2303
+ * Delete a custom status
2304
+ * @description Delete a custom status. Sessions that carried it fall back to their built-in status (`sub_status_id` becomes null); their timeline history keeps the id.
2305
+ */
2306
+ delete: operations["deleteCustomStatus"];
2307
+ options?: never;
2308
+ head?: never;
2309
+ /**
2310
+ * Update a custom status
2311
+ * @description Update any subset of a custom status. Omitted fields are left unchanged; the nullable display fields accept null to clear them. Sessions already carrying this status keep it.
2312
+ */
2313
+ patch: operations["updateCustomStatus"];
2314
+ trace?: never;
2315
+ };
2240
2316
  "/workflows/definitions": {
2241
2317
  parameters: {
2242
2318
  query?: never;
@@ -3016,6 +3092,46 @@ export interface paths {
3016
3092
  patch: operations["updateSequence"];
3017
3093
  trace?: never;
3018
3094
  };
3095
+ "/sequences/{sequenceId}/replies": {
3096
+ parameters: {
3097
+ query?: never;
3098
+ header?: never;
3099
+ path?: never;
3100
+ cookie?: never;
3101
+ };
3102
+ /**
3103
+ * List the most recent replies to a sequence
3104
+ * @description Who answered, newest first, with the inbox session each reply started. Each reply carries a short preview of what the contact said — but only for a key that may read conversations (chat-sessions:read); without it the preview is null.
3105
+ */
3106
+ get: operations["listSequenceReplies"];
3107
+ put?: never;
3108
+ post?: never;
3109
+ delete?: never;
3110
+ options?: never;
3111
+ head?: never;
3112
+ patch?: never;
3113
+ trace?: never;
3114
+ };
3115
+ "/sequences/{sequenceId}/stats": {
3116
+ parameters: {
3117
+ query?: never;
3118
+ header?: never;
3119
+ path?: never;
3120
+ cookie?: never;
3121
+ };
3122
+ /**
3123
+ * Get an outbound sequence's numbers
3124
+ * @description How many people are enrolled, how many a launch would reach, how many have been contacted, how many answered, how many will never be reached, and how many are waiting on a human. The last two also name the people themselves, so the caller can act on them. The same rollup the list rows carry, addressed singly — every surface reads these through one implementation.
3125
+ */
3126
+ get: operations["getSequenceStats"];
3127
+ put?: never;
3128
+ post?: never;
3129
+ delete?: never;
3130
+ options?: never;
3131
+ head?: never;
3132
+ patch?: never;
3133
+ trace?: never;
3134
+ };
3019
3135
  "/sequences/{sequenceId}/steps": {
3020
3136
  parameters: {
3021
3137
  query?: never;
@@ -5279,7 +5395,7 @@ export interface paths {
5279
5395
  };
5280
5396
  /**
5281
5397
  * Search connected orgs with health signals (paginated)
5282
- * @description Find, filter, sort and page through the calling partner's connected orgs (its customers), each with the health signals the Partner Admin console shows: `health.status` — `new` (connected < 7 days, no sessions yet), `setup_incomplete` (no knowledge sources and no actions), `inactive` (no session in the last 30 days), `healthy` (everything else) — plus `members`, `data_sources`, `has_ai_training`, `has_actions`, `sessions_30d`, `total_sessions`, `last_session_at`, and per-channel connected flags (`chat`, `email`, `whatsapp`, `voice`). `q` matches name or external_id; `status`, `tags` and `channels` are comma-separated (tags match ANY, channels match ALL); `has_ai` / `has_actions` are 'true' / 'false'. Max 100 rows per page (`limit`/`offset`); `total` is the filtered count. For volume, quality and behaviour beyond these signals use `runPartnerAnalyticsQuery`; for the full id → name roster use `listPartnerOrgs`. Only available to partner admin organizations (403 otherwise).
5398
+ * @description Find, filter, sort and page through the calling partner's connected orgs (its customers), each with the health signals the Partner Admin console shows: `health.status` — `new` (connected < 7 days, no sessions yet), `setup_incomplete` (no knowledge sources and no actions), `inactive` (no session in the last 30 days), `healthy` (everything else) — plus `members`, `data_sources`, `has_ai_training`, `has_actions`, `sessions_30d`, `total_sessions`, `last_session_at`, and per-channel connected flags (`chat`, `email`, `whatsapp`, `instagram`, `messenger`, `sms`, `voice`). `q` matches name or external_id; `status`, `tags`, `channels` and `addons` are comma-separated (tags match ANY, channels and add-ons match ALL; add-ons are `fareharbor`, `shopify`, `jira`); `has_ai` / `has_actions` are 'true' / 'false'; `archived=only` lists the partner's archived orgs, which are hidden unless asked for. Max 100 rows per page (`limit`/`offset`); `total` is the filtered count. For volume, quality and behaviour beyond these signals use `runPartnerAnalyticsQuery`; for the full id → name roster use `listPartnerOrgs`. Only available to partner admin organizations (403 otherwise).
5283
5399
  */
5284
5400
  get: operations["searchPartnerOrgs"];
5285
5401
  put?: never;
@@ -5453,7 +5569,7 @@ export interface paths {
5453
5569
  put?: never;
5454
5570
  /**
5455
5571
  * Create an AI reply template
5456
- * @description Create a reply template (Salesforce v2 integration only). The organization's first template becomes the default automatically; `is_default: true` on a later one moves the default atomically. Template HTML. Put {{content}} where the AI agent's reply goes (anything above is the greeting, anything below the signature); without it the template is appended below the reply. Variables: system objects {{contact.full_name}} / {{contact.first_name}} / {{contact.email}} / {{session.number}} / {{session.language}} / {{org.name}} (HTML-escaped) and any session attribute such as {{sf_case_Regards__c}} (inserted raw — Salesforce formula fields hold HTML fragments — then sanitized). {{#if sf_case_Language__c == "de"}}…{{else}}…{{/if}} conditions are supported. Scripts, handlers and non-https images are stripped; {{content}} may appear at most once. Optional `rules` (ANDed attribute/tag conditions) make the template pick itself for matching sessions; the first matching rule-bearing template in creation order wins, otherwise the default.
5572
+ * @description Create a reply template (Salesforce v2 integration only). The organization's first template becomes the default automatically; `is_default: true` on a later one moves the default atomically. Template HTML. Put {{content}} where the AI agent's reply goes (anything above is the greeting, anything below the signature); without it the template is appended below the reply. Variables: system objects {{contact.full_name}} / {{contact.first_name}} / {{contact.email}} / {{session.number}} / {{session.language}} / {{org.name}} (HTML-escaped) and any session attribute such as {{sf_case_Regards__c}} (inserted raw — Salesforce formula fields hold HTML fragments — then sanitized). {{#if sf_case_Language__c == "de"}}…{{else}}…{{/if}} conditions are supported. Scripts, handlers and non-https images are stripped; {{content}} may appear at most once. Optional `rules` (ANDed attribute/tag conditions) make the template pick itself for matching sessions; the first matching rule-bearing template in creation order wins, otherwise the default. Optional `from_address` / `to_address` set the From and To of the autopilot email per session: a literal address, a {{session attribute}} (e.g. {{sf_case_LatestPOSEmail__c}} as From, {{reservation_email}} as To) or an {{#if …}} branch. Each is used only when it resolves to an email address on that session; otherwise the From stays Salesforce's default sender and the To stays the Case contact. A literal that is not an email address is rejected with 400. Combine with `rules` to use different addresses for different sessions.
5457
5573
  */
5458
5574
  post: operations["createSalesforceAiReplyTemplate"];
5459
5575
  delete?: never;
@@ -5481,7 +5597,7 @@ export interface paths {
5481
5597
  head?: never;
5482
5598
  /**
5483
5599
  * Update an AI reply template
5484
- * @description Partially update a reply template: name, template_html, is_default (true moves the default onto it), rules (null clears them). Template HTML. Put {{content}} where the AI agent's reply goes (anything above is the greeting, anything below the signature); without it the template is appended below the reply. Variables: system objects {{contact.full_name}} / {{contact.first_name}} / {{contact.email}} / {{session.number}} / {{session.language}} / {{org.name}} (HTML-escaped) and any session attribute such as {{sf_case_Regards__c}} (inserted raw — Salesforce formula fields hold HTML fragments — then sanitized). {{#if sf_case_Language__c == "de"}}…{{else}}…{{/if}} conditions are supported. Scripts, handlers and non-https images are stripped; {{content}} may appear at most once.
5600
+ * @description Partially update a reply template: name, template_html, is_default (true moves the default onto it), rules (null clears them), from_address / to_address (null clears them). Template HTML. Put {{content}} where the AI agent's reply goes (anything above is the greeting, anything below the signature); without it the template is appended below the reply. Variables: system objects {{contact.full_name}} / {{contact.first_name}} / {{contact.email}} / {{session.number}} / {{session.language}} / {{org.name}} (HTML-escaped) and any session attribute such as {{sf_case_Regards__c}} (inserted raw — Salesforce formula fields hold HTML fragments — then sanitized). {{#if sf_case_Language__c == "de"}}…{{else}}…{{/if}} conditions are supported. Scripts, handlers and non-https images are stripped; {{content}} may appear at most once. Optional `from_address` / `to_address` set the From and To of the autopilot email per session: a literal address, a {{session attribute}} (e.g. {{sf_case_LatestPOSEmail__c}} as From, {{reservation_email}} as To) or an {{#if …}} branch. Each is used only when it resolves to an email address on that session; otherwise the From stays Salesforce's default sender and the To stays the Case contact. A literal that is not an email address is rejected with 400. Combine with `rules` to use different addresses for different sessions.
5485
5601
  */
5486
5602
  patch: operations["updateSalesforceAiReplyTemplate"];
5487
5603
  trace?: never;
@@ -5497,7 +5613,7 @@ export interface paths {
5497
5613
  put?: never;
5498
5614
  /**
5499
5615
  * Preview an AI reply template
5500
- * @description Render a template (saved or not) exactly as the AI agent would send it, against a real session of the organization: the session with `session_number`, else the most recent Salesforce-linked session, else an empty context. Returns the rendered HTML and text, the session used, and the variables that came out empty. Requires the write scope because it resolves real contact data.
5616
+ * @description Render a template (saved or not) exactly as the AI agent would send it, against a real session of the organization: the session with `session_number`, else the most recent Salesforce-linked session, else an empty context. Returns the rendered HTML and text, the session used, the variables that came out empty, and — when `from_address` / `to_address` are passed — the From and To the AI would use on that session (null = the default applies). Requires the write scope because it resolves real contact data.
5501
5617
  */
5502
5618
  post: operations["previewSalesforceAiReplyTemplate"];
5503
5619
  delete?: never;
@@ -5781,16 +5897,28 @@ export interface components {
5781
5897
  template_html: string;
5782
5898
  is_default?: boolean;
5783
5899
  rules?: components["schemas"]["SalesforceReplyTemplateRules"] | null;
5900
+ /** @description From address of the AI agent's autopilot Case email: a literal address, a {{session attribute}} such as {{sf_case_LatestPOSEmail__c}}, or an {{#if …}} branch, resolved per session. Used only when it resolves to an email address; otherwise Salesforce's default sender applies. Empty or null clears it. */
5901
+ from_address?: string | null;
5902
+ /** @description To address of the AI agent's autopilot Case email: a literal address, a {{session attribute}} such as {{reservation_email}}, or an {{#if …}} branch, resolved per session. Used only when it resolves to an email address; otherwise the Case contact's address applies. Empty or null clears it. */
5903
+ to_address?: string | null;
5784
5904
  };
5785
5905
  UpdateSalesforceAiReplyTemplateDto: {
5786
5906
  name?: string;
5787
5907
  template_html?: string;
5788
5908
  is_default?: boolean;
5789
5909
  rules?: components["schemas"]["SalesforceReplyTemplateRules"] | null;
5910
+ /** @description From address of the AI agent's autopilot Case email: a literal address, a {{session attribute}} such as {{sf_case_LatestPOSEmail__c}}, or an {{#if …}} branch, resolved per session. Used only when it resolves to an email address; otherwise Salesforce's default sender applies. Empty or null clears it. */
5911
+ from_address?: string | null;
5912
+ /** @description To address of the AI agent's autopilot Case email: a literal address, a {{session attribute}} such as {{reservation_email}}, or an {{#if …}} branch, resolved per session. Used only when it resolves to an email address; otherwise the Case contact's address applies. Empty or null clears it. */
5913
+ to_address?: string | null;
5790
5914
  };
5791
5915
  PreviewSalesforceAiReplyTemplateDto: {
5792
5916
  template_html: string;
5793
5917
  session_number?: number;
5918
+ /** @description From address of the AI agent's autopilot Case email: a literal address, a {{session attribute}} such as {{sf_case_LatestPOSEmail__c}}, or an {{#if …}} branch, resolved per session. Used only when it resolves to an email address; otherwise Salesforce's default sender applies. Empty or null clears it. */
5919
+ from_address?: string | null;
5920
+ /** @description To address of the AI agent's autopilot Case email: a literal address, a {{session attribute}} such as {{reservation_email}}, or an {{#if …}} branch, resolved per session. Used only when it resolves to an email address; otherwise the Case contact's address applies. Empty or null clears it. */
5921
+ to_address?: string | null;
5794
5922
  };
5795
5923
  CreateSlaPolicyDto: {
5796
5924
  name: string;
@@ -5818,6 +5946,31 @@ export interface components {
5818
5946
  /** Format: binary */
5819
5947
  file: string;
5820
5948
  } | null;
5949
+ /** @enum {string} */
5950
+ PhoneHandoffReason: "ai_initiated" | "no_agent_assigned" | "agent_unavailable" | "caller_requested" | "timeout" | "unknown";
5951
+ /** @enum {string} */
5952
+ StructuredFieldTypeDto: "enum" | "text" | "number" | "boolean" | "date" | "user" | "team" | "tag";
5953
+ CreateStructuredFieldDto: {
5954
+ key: string;
5955
+ name: string;
5956
+ description: string;
5957
+ type?: components["schemas"]["StructuredFieldTypeDto"];
5958
+ };
5959
+ UpdateStructuredFieldDto: {
5960
+ name?: string;
5961
+ description?: string;
5962
+ };
5963
+ CreateStructuredFieldVariantDto: {
5964
+ value: string;
5965
+ variant_display_name: string;
5966
+ variant_description: string;
5967
+ parent_id?: string | null;
5968
+ };
5969
+ UpdateStructuredFieldVariantDto: {
5970
+ variant_display_name?: string;
5971
+ variant_description?: string;
5972
+ parent_id?: string | null;
5973
+ };
5821
5974
  CompanyOwnerInput: {
5822
5975
  /** @description OpenCX user id of the owning teammate */
5823
5976
  id?: number;
@@ -5921,29 +6074,6 @@ export interface components {
5921
6074
  /** @description Subject line for the custom CSAT request email. Null falls back to the default. */
5922
6075
  email_template_subject?: string | null;
5923
6076
  };
5924
- /** @enum {string} */
5925
- StructuredFieldTypeDto: "enum" | "text" | "number" | "boolean" | "date" | "user" | "team" | "tag";
5926
- CreateStructuredFieldDto: {
5927
- key: string;
5928
- name: string;
5929
- description: string;
5930
- type?: components["schemas"]["StructuredFieldTypeDto"];
5931
- };
5932
- UpdateStructuredFieldDto: {
5933
- name?: string;
5934
- description?: string;
5935
- };
5936
- CreateStructuredFieldVariantDto: {
5937
- value: string;
5938
- variant_display_name: string;
5939
- variant_description: string;
5940
- parent_id?: string | null;
5941
- };
5942
- UpdateStructuredFieldVariantDto: {
5943
- variant_display_name?: string;
5944
- variant_description?: string;
5945
- parent_id?: string | null;
5946
- };
5947
6077
  CreateEmailTemplateBodyDto: {
5948
6078
  body: string;
5949
6079
  name: string;
@@ -6023,8 +6153,6 @@ export interface components {
6023
6153
  /** @description Extra instructions for the AI agent, scoped to this call only. Appended to the agent instructions in a clearly-scoped block — they complement, never replace, the agent prompt. */
6024
6154
  extraInstructions?: string;
6025
6155
  };
6026
- /** @enum {string} */
6027
- PhoneHandoffReason: "ai_initiated" | "no_agent_assigned" | "agent_unavailable" | "caller_requested" | "timeout" | "unknown";
6028
6156
  RedactMessageDto: {
6029
6157
  /** @description The message UUID to be redacted */
6030
6158
  messageId: string;
@@ -6789,6 +6917,56 @@ export interface components {
6789
6917
  /** @description MIME type of the file (e.g., "image/png", "application/pdf"). Optional if using data URL format or if type can be detected from file content. */
6790
6918
  mime_type?: string;
6791
6919
  };
6920
+ PublicContactsFilter: {
6921
+ /** @constant */
6922
+ type: "all_contacts";
6923
+ } | {
6924
+ /** @constant */
6925
+ type: "contact_id_in";
6926
+ contact_ids: string[];
6927
+ } | {
6928
+ /** @constant */
6929
+ type: "contacts_created_at_between";
6930
+ after?: unknown;
6931
+ before?: unknown;
6932
+ } | {
6933
+ /** @constant */
6934
+ type: "contacts_email_domain_name_in";
6935
+ domain_name_in: string[];
6936
+ } | {
6937
+ /** @constant */
6938
+ type: "contacts_name_in";
6939
+ name_in: string[];
6940
+ } | {
6941
+ /** @constant */
6942
+ type: "contacts_phone_number_in";
6943
+ /** @description Full phone numbers, matched exactly on digits (formatting like +, spaces, and dashes is ignored). Use * inside an entry for partial/substring matching. */
6944
+ phone_number_in: string[];
6945
+ } | {
6946
+ /** @constant */
6947
+ type: "contacts_email_in";
6948
+ email_in: string[];
6949
+ } | {
6950
+ /** @constant */
6951
+ type: "contacts_attributes_in";
6952
+ attributes?: {
6953
+ [key: string]: string;
6954
+ }[];
6955
+ } | {
6956
+ /** @constant */
6957
+ type: "contacts_affected_by_sequence";
6958
+ sequence_id: string;
6959
+ } | {
6960
+ /** @constant */
6961
+ type: "last_contacted_at_between";
6962
+ after?: unknown;
6963
+ before?: unknown;
6964
+ };
6965
+ PublicContactsCompositeFilter: {
6966
+ or: {
6967
+ and: components["schemas"]["PublicContactsFilter"][];
6968
+ }[];
6969
+ };
6792
6970
  PublicAPIHttpOverrides: {
6793
6971
  query_params?: {
6794
6972
  [key: string]: string;
@@ -6842,56 +7020,6 @@ export interface components {
6842
7020
  http_action_overrides?: components["schemas"]["PublicAPIHttpOverrides"];
6843
7021
  };
6844
7022
  };
6845
- PublicContactsFilter: {
6846
- /** @constant */
6847
- type: "all_contacts";
6848
- } | {
6849
- /** @constant */
6850
- type: "contact_id_in";
6851
- contact_ids: string[];
6852
- } | {
6853
- /** @constant */
6854
- type: "contacts_created_at_between";
6855
- after?: unknown;
6856
- before?: unknown;
6857
- } | {
6858
- /** @constant */
6859
- type: "contacts_email_domain_name_in";
6860
- domain_name_in: string[];
6861
- } | {
6862
- /** @constant */
6863
- type: "contacts_name_in";
6864
- name_in: string[];
6865
- } | {
6866
- /** @constant */
6867
- type: "contacts_phone_number_in";
6868
- /** @description Full phone numbers, matched exactly on digits (formatting like +, spaces, and dashes is ignored). Use * inside an entry for partial/substring matching. */
6869
- phone_number_in: string[];
6870
- } | {
6871
- /** @constant */
6872
- type: "contacts_email_in";
6873
- email_in: string[];
6874
- } | {
6875
- /** @constant */
6876
- type: "contacts_attributes_in";
6877
- attributes?: {
6878
- [key: string]: string;
6879
- }[];
6880
- } | {
6881
- /** @constant */
6882
- type: "contacts_affected_by_sequence";
6883
- sequence_id: string;
6884
- } | {
6885
- /** @constant */
6886
- type: "last_contacted_at_between";
6887
- after?: unknown;
6888
- before?: unknown;
6889
- };
6890
- PublicContactsCompositeFilter: {
6891
- or: {
6892
- and: components["schemas"]["PublicContactsFilter"][];
6893
- }[];
6894
- };
6895
7023
  SearchContactsInput: {
6896
7024
  filter: components["schemas"]["PublicContactsCompositeFilter"];
6897
7025
  /** @description Pagination cursor to fetch the next set of results */
@@ -7015,8 +7143,10 @@ export interface components {
7015
7143
  };
7016
7144
  /** @description Filter by channels (web, email, whatsapp, phone_voice, sms, slack, etc.) */
7017
7145
  channels?: components["schemas"]["SessionChannel"][];
7018
- /** @description Filter by status codes (0 = open, 1 = closed_resolved, 2 = closed_unresolved, or custom status IDs) */
7146
+ /** @description Filter by built-in status codes (0 = open, 1 = closed_resolved, 2 = closed_unresolved) */
7019
7147
  status?: number[];
7148
+ /** @description Filter by custom status ids (sessions whose `sub_status_id` is any of these). Ids come from GET /custom-statuses. An empty array applies no filter, like the other array filters here. */
7149
+ sub_status_ids?: string[];
7020
7150
  /** @description Filter by AI closure type (e.g. "handed_off", "resolved", "no_resolution") */
7021
7151
  ai_closure?: ("assumed_resolved" | "handed_off" | "resolved")[];
7022
7152
  /** @description Filter by customer sentiment (angry, happy, neutral) */
@@ -7157,6 +7287,44 @@ export interface components {
7157
7287
  end_time: string;
7158
7288
  }[];
7159
7289
  };
7290
+ CreateCustomStatusDto: {
7291
+ /** @description Internal name shown to agents in the inbox (unique per organization, 1-100 chars) */
7292
+ name: string;
7293
+ /** @description Internal note for agents on when to use this status. Never shown to customers. */
7294
+ description?: string;
7295
+ /**
7296
+ * @description Built-in status this custom status refines: "open", "closed_resolved", or "closed_unresolved". Applying the custom status to a session moves the session to this built-in status, so an "open"-parented status reopens a closed session and a "closed_*"-parented one closes it.
7297
+ * @enum {string}
7298
+ */
7299
+ parent_status: "closed_resolved" | "closed_unresolved" | "open";
7300
+ /** @description Customer-facing label (max 100 chars). Falls back to `name` when omitted. */
7301
+ display_name?: string;
7302
+ /** @description Customer-facing explanation. No fallback: when omitted, customers see no description. */
7303
+ display_description?: string;
7304
+ /** @description Badge color as #RRGGBB. Omit to inherit the parent status color. */
7305
+ color?: string;
7306
+ /** @description Inline SVG markup for the badge icon (sanitized server-side, max 10,000 chars). Omit for the default icon. */
7307
+ icon?: string;
7308
+ };
7309
+ UpdateCustomStatusPublicDto: {
7310
+ /** @description Internal name shown to agents (unique per organization, 1-100 chars) */
7311
+ name?: string;
7312
+ /** @description Internal note for agents on when to use this status */
7313
+ description?: string;
7314
+ /**
7315
+ * @description Built-in status this custom status refines: "open", "closed_resolved", or "closed_unresolved". Applying the custom status to a session moves the session to this built-in status, so an "open"-parented status reopens a closed session and a "closed_*"-parented one closes it. Moving a status across the open/closed boundary drops its ticketing-system stage mappings.
7316
+ * @enum {string}
7317
+ */
7318
+ parent_status?: "closed_resolved" | "closed_unresolved" | "open";
7319
+ /** @description Customer-facing label (max 100 chars). null clears it back to `name`; omit to leave unchanged. */
7320
+ display_name?: string | null;
7321
+ /** @description Customer-facing explanation. null clears it; omit to leave unchanged. */
7322
+ display_description?: string | null;
7323
+ /** @description Badge color as #RRGGBB. null restores the parent status color; omit to leave unchanged. */
7324
+ color?: string | null;
7325
+ /** @description Inline SVG markup for the badge icon. null restores the default icon; omit to leave unchanged. */
7326
+ icon?: string | null;
7327
+ };
7160
7328
  CreateWorkflowPublicInput: {
7161
7329
  /** @description Workflow name */
7162
7330
  name: string;
@@ -7227,6 +7395,11 @@ export interface components {
7227
7395
  type?: "inbound" | "outbound";
7228
7396
  /** @description Voice ID from the /phone/voices endpoint. Omit for default voice. */
7229
7397
  voice_id?: string | null;
7398
+ /**
7399
+ * @description Voice provider returned by the /phone/voices endpoint. It is inferred from voice_id when omitted.
7400
+ * @enum {string}
7401
+ */
7402
+ tts_provider?: "elevenlabs" | "cartesia";
7230
7403
  /** @description ISO-639-1 language codes the agent should speak. A subset of {en, es, fr, de, hi, ru, pt, ja, it, nl} can be combined freely. Any other code (e.g. "ar", "tr", "zh") must be the only entry; Arabic accepts dialect tags such as "ar-SA". */
7231
7404
  language?: string[];
7232
7405
  /** @description What the agent says when it picks up (default: "Hello?") */
@@ -7256,6 +7429,11 @@ export interface components {
7256
7429
  type?: "inbound" | "outbound";
7257
7430
  /** @description Voice ID from the /phone/voices endpoint. Omit for default voice. */
7258
7431
  voice_id?: string | null;
7432
+ /**
7433
+ * @description Voice provider returned by the /phone/voices endpoint. It is inferred from voice_id when omitted.
7434
+ * @enum {string}
7435
+ */
7436
+ tts_provider?: "elevenlabs" | "cartesia";
7259
7437
  /** @description ISO-639-1 language codes the agent should speak. A subset of {en, es, fr, de, hi, ru, pt, ja, it, nl} can be combined freely. Any other code (e.g. "ar", "tr", "zh") must be the only entry; Arabic accepts dialect tags such as "ar-SA". */
7260
7438
  language?: string[];
7261
7439
  /** @description What the agent says when it picks up (default: "Hello?") */
@@ -7516,12 +7694,19 @@ export interface components {
7516
7694
  /** @description Additional context about the situation */
7517
7695
  context?: string;
7518
7696
  };
7519
- InvestigateSessionDebugInput: {
7697
+ SetChatSessionSubStatusInput: {
7520
7698
  /**
7521
7699
  * Format: uuid
7522
- * @description Customer support / inbox session UUID (from chat_sessions table). NOT the coworker chat session ID.
7700
+ * @description Id of the custom status to apply, from GET /custom-statuses
7523
7701
  */
7524
- session_id?: string;
7702
+ sub_status_id: string;
7703
+ };
7704
+ InvestigateSessionDebugInput: {
7705
+ /**
7706
+ * Format: uuid
7707
+ * @description Customer support / inbox session UUID (from chat_sessions table). NOT the coworker chat session ID.
7708
+ */
7709
+ session_id?: string;
7525
7710
  /** @description Ticket number to resolve to a session */
7526
7711
  ticket_number?: string;
7527
7712
  /**
@@ -8311,6 +8496,10 @@ export interface components {
8311
8496
  template_html: string;
8312
8497
  is_default: boolean;
8313
8498
  rules: components["schemas"]["SalesforceReplyTemplateRules"] | null;
8499
+ /** @description From address of the AI agent's autopilot Case email: a literal address, a {{session attribute}} such as {{sf_case_LatestPOSEmail__c}}, or an {{#if …}} branch, resolved per session. Used only when it resolves to an email address; otherwise Salesforce's default sender applies. Empty or null clears it. */
8500
+ from_address: string | null;
8501
+ /** @description To address of the AI agent's autopilot Case email: a literal address, a {{session attribute}} such as {{reservation_email}}, or an {{#if …}} branch, resolved per session. Used only when it resolves to an email address; otherwise the Case contact's address applies. Empty or null clears it. */
8502
+ to_address: string | null;
8314
8503
  /** Format: date-time */
8315
8504
  created_at: string;
8316
8505
  /** Format: date-time */
@@ -8324,6 +8513,8 @@ export interface components {
8324
8513
  text: string;
8325
8514
  session_number: number | null;
8326
8515
  missing_variables: string[];
8516
+ from_address: string | null;
8517
+ to_address: string | null;
8327
8518
  };
8328
8519
  ContactsFilter: {
8329
8520
  /** @constant */
@@ -8498,6 +8689,64 @@ export interface components {
8498
8689
  customDataKeys?: string[];
8499
8690
  }[];
8500
8691
  };
8692
+ CustomSessionStatusDto: {
8693
+ id: string;
8694
+ org_id: string;
8695
+ name: string;
8696
+ description: string | null;
8697
+ display_name: string | null;
8698
+ display_description: string | null;
8699
+ color: string | null;
8700
+ icon: string | null;
8701
+ /** @enum {string} */
8702
+ parent_status: "closed_resolved" | "closed_unresolved" | "open";
8703
+ /** Format: date-time */
8704
+ created_at: string;
8705
+ /** Format: date-time */
8706
+ updated_at: string;
8707
+ };
8708
+ StructuredFieldSystemOptionDto: {
8709
+ value: string;
8710
+ label: string;
8711
+ description: string | null;
8712
+ };
8713
+ StructuredFieldVariantTreeDto: {
8714
+ /** Format: uuid */
8715
+ id: string;
8716
+ org_id: string;
8717
+ /** Format: uuid */
8718
+ field_id: string;
8719
+ parent_id: string | null;
8720
+ value: string;
8721
+ variant_display_name: string;
8722
+ variant_description: string;
8723
+ position: number;
8724
+ archived_at: string | null;
8725
+ /** Format: date-time */
8726
+ created_at: string;
8727
+ /** Format: date-time */
8728
+ updated_at: string;
8729
+ children: components["schemas"]["StructuredFieldVariantTreeDto"][];
8730
+ };
8731
+ StructuredFieldTreeDto: {
8732
+ /** Format: uuid */
8733
+ id: string;
8734
+ org_id: string;
8735
+ key: string;
8736
+ name: string;
8737
+ description: string;
8738
+ type: components["schemas"]["StructuredFieldTypeDto"];
8739
+ value: string | null;
8740
+ position: number;
8741
+ archived_at: string | null;
8742
+ /** Format: date-time */
8743
+ created_at: string;
8744
+ /** Format: date-time */
8745
+ updated_at: string;
8746
+ variants: components["schemas"]["StructuredFieldVariantTreeDto"][];
8747
+ system_options: components["schemas"]["StructuredFieldSystemOptionDto"][];
8748
+ };
8749
+ StructuredFieldListDto: components["schemas"]["StructuredFieldTreeDto"][];
8501
8750
  GenericResponseDto: {
8502
8751
  data?: {
8503
8752
  success: boolean;
@@ -8646,48 +8895,6 @@ export interface components {
8646
8895
  */
8647
8896
  updated_at: string;
8648
8897
  };
8649
- StructuredFieldSystemOptionDto: {
8650
- value: string;
8651
- label: string;
8652
- description: string | null;
8653
- };
8654
- StructuredFieldVariantTreeDto: {
8655
- /** Format: uuid */
8656
- id: string;
8657
- org_id: string;
8658
- /** Format: uuid */
8659
- field_id: string;
8660
- parent_id: string | null;
8661
- value: string;
8662
- variant_display_name: string;
8663
- variant_description: string;
8664
- position: number;
8665
- archived_at: string | null;
8666
- /** Format: date-time */
8667
- created_at: string;
8668
- /** Format: date-time */
8669
- updated_at: string;
8670
- children: components["schemas"]["StructuredFieldVariantTreeDto"][];
8671
- };
8672
- StructuredFieldTreeDto: {
8673
- /** Format: uuid */
8674
- id: string;
8675
- org_id: string;
8676
- key: string;
8677
- name: string;
8678
- description: string;
8679
- type: components["schemas"]["StructuredFieldTypeDto"];
8680
- value: string | null;
8681
- position: number;
8682
- archived_at: string | null;
8683
- /** Format: date-time */
8684
- created_at: string;
8685
- /** Format: date-time */
8686
- updated_at: string;
8687
- variants: components["schemas"]["StructuredFieldVariantTreeDto"][];
8688
- system_options: components["schemas"]["StructuredFieldSystemOptionDto"][];
8689
- };
8690
- StructuredFieldListDto: components["schemas"]["StructuredFieldTreeDto"][];
8691
8898
  CustomDomainMutationOutputDto: {
8692
8899
  /** @constant */
8693
8900
  success: true;
@@ -8878,11 +9085,15 @@ export interface components {
8878
9085
  stt_keyterms: string[];
8879
9086
  stt_model: ("deepgram/flux-general" | "deepgram/nova-3" | "deepgram/nova-3-medical" | "cartesia/ink-whisper" | "elevenlabs/scribe_v2_realtime" | "xai/stt-1" | "assemblyai/universal-3-5-pro" | "speechmatics/enhanced" | "google/gemini-3.5-transcribe-live" | "soniox/stt-rt-v5") | null;
8880
9087
  tts_speed_pct: number | null;
9088
+ /** @enum {string} */
9089
+ tts_provider: "elevenlabs" | "cartesia";
8881
9090
  failover_transfer_destination_id: string | null;
8882
9091
  /** @description Transfer destinations the agent may transfer to (`transfer_call` targets). */
8883
9092
  transfer_destination_ids: string[];
8884
9093
  };
8885
9094
  PhoneAgentVoiceDto: {
9095
+ /** @enum {string} */
9096
+ provider: "elevenlabs" | "cartesia";
8886
9097
  voice_id: string;
8887
9098
  name: string;
8888
9099
  labels: {
@@ -9697,15 +9908,25 @@ export interface components {
9697
9908
  updated_at: string;
9698
9909
  deleted_at: string | null;
9699
9910
  stats: {
9700
- /** @description Everyone enrolled and live, judged down or not. */
9911
+ /** @description Everyone this sequence is for: enrolled minus the people the judge turned down. Not scoped to a status — someone who replied, finished or opted out was still part of the audience. Always equals will_send + might_send. */
9701
9912
  people: number;
9702
- /** @description Judged and cleared the arming floor — these send on launch. */
9913
+ /** @description The JUDGED half of `people`, not "everyone here passed": those who cleared the arming floor, plus anyone a later run scored below it after we had already armed or messaged them a verdict cannot un-send a message. Before launch the two readings coincide, which is the only place this is shown as "will send to"; afterwards read `in_flight` for what can still happen. */
9703
9914
  will_send: number;
9704
- /** @description Never judged. These arm too — an unjudged list is user authority so the audience a launch actually sends to is will_send + might_send. */
9915
+ /** @description Never judged. These arm too — an unjudged list is user authority. For a sequence that has not launched, the audience it would send to is will_send + might_send; once it has, some of those people are already done and `in_flight` is the forward-looking number. */
9705
9916
  might_send: number;
9917
+ /** @description Judged and turned down BEFORE anything was sent — the exact complement of `people`, so the two are `enrolled`. Someone already armed when a later run failed them is not here; they stay in the audience. */
9918
+ rejected: number;
9919
+ /** @description The whole list, judged-down included — people + rejected. */
9920
+ enrolled: number;
9921
+ /** @description Whether there is anything for the judge to work against. Decides whether the audience has a split worth showing at all. */
9922
+ has_criteria: boolean;
9706
9923
  sent: number;
9707
9924
  replied: number;
9708
- /** @description Nothing left to send and something already went out. Derived, never storedthe status stays `active`, so enrolling more people revives the sequence on its own. */
9925
+ /** @description Concluded without ever being reached journey over, nothing sent. Terminal only: parked people and deferrals are excluded, since neither is a conclusion. people = sent + wont_reach + (in flight and never contacted)someone mid-sequence has been contacted AND is still in flight, so the plain three-term form double counts them. */
9926
+ wont_reach: number;
9927
+ /** @description Parked: waiting on a human to fix something, after which the journey resumes where it stopped. Kept apart from wont_reach because it is a call to action, not attrition. A SLICE of the still-in-flight people, not a fourth bucket beside them — someone parked after step 0 is counted here and in `sent`, so do not add this to the others. */
9928
+ needs_you: number;
9929
+ /** @description Nothing left in flight and something already went out. Derived, never stored — the status stays `active`, so enrolling more people revives the sequence on its own. */
9709
9930
  finished: boolean;
9710
9931
  /** @description An enrich or judge run is in flight for this sequence. */
9711
9932
  busy: boolean;
@@ -9714,6 +9935,72 @@ export interface components {
9714
9935
  ListSequencesDto: {
9715
9936
  sequences: components["schemas"]["SequenceListItemDto"][];
9716
9937
  };
9938
+ SequenceRepliesDto: {
9939
+ replies: {
9940
+ /** @description The inbox session this reply started. */
9941
+ session_id: string;
9942
+ /** @description What the inbox routes on. */
9943
+ ticket_number: number;
9944
+ contact_id: string | null;
9945
+ /** @description Null when the contact row is gone or simply unnamed. */
9946
+ contact_name: string | null;
9947
+ contact_avatar_url: string | null;
9948
+ /** @description Which step they answered; null when the stamp carried no usable one. */
9949
+ step_index: number | null;
9950
+ /** @description The opening line of what they said, truncated. Null when the caller may not read transcripts (needs the sessions capability / chat-sessions scope), or when the reply carried no text at all. */
9951
+ preview: string | null;
9952
+ /** @description When they answered (ISO 8601). */
9953
+ at: string;
9954
+ }[];
9955
+ };
9956
+ SequenceStatsDto: {
9957
+ /** @description Everyone this sequence is for: enrolled minus the people the judge turned down. Not scoped to a status — someone who replied, finished or opted out was still part of the audience. Always equals will_send + might_send. */
9958
+ people: number;
9959
+ /** @description The JUDGED half of `people`, not "everyone here passed": those who cleared the arming floor, plus anyone a later run scored below it after we had already armed or messaged them — a verdict cannot un-send a message. Before launch the two readings coincide, which is the only place this is shown as "will send to"; afterwards read `in_flight` for what can still happen. */
9960
+ will_send: number;
9961
+ /** @description Never judged. These arm too — an unjudged list is user authority. For a sequence that has not launched, the audience it would send to is will_send + might_send; once it has, some of those people are already done and `in_flight` is the forward-looking number. */
9962
+ might_send: number;
9963
+ /** @description Judged and turned down BEFORE anything was sent — the exact complement of `people`, so the two are `enrolled`. Someone already armed when a later run failed them is not here; they stay in the audience. */
9964
+ rejected: number;
9965
+ /** @description The whole list, judged-down included — people + rejected. */
9966
+ enrolled: number;
9967
+ /** @description Whether there is anything for the judge to work against. Decides whether the audience has a split worth showing at all. */
9968
+ has_criteria: boolean;
9969
+ sent: number;
9970
+ replied: number;
9971
+ /** @description Concluded without ever being reached — journey over, nothing sent. Terminal only: parked people and deferrals are excluded, since neither is a conclusion. people = sent + wont_reach + (in flight and never contacted) — someone mid-sequence has been contacted AND is still in flight, so the plain three-term form double counts them. */
9972
+ wont_reach: number;
9973
+ /** @description Parked: waiting on a human to fix something, after which the journey resumes where it stopped. Kept apart from wont_reach because it is a call to action, not attrition. A SLICE of the still-in-flight people, not a fourth bucket beside them — someone parked after step 0 is counted here and in `sent`, so do not add this to the others. */
9974
+ needs_you: number;
9975
+ /** @description Nothing left in flight and something already went out. Derived, never stored — the status stays `active`, so enrolling more people revives the sequence on its own. */
9976
+ finished: boolean;
9977
+ /** @description An enrich or judge run is in flight for this sequence. */
9978
+ busy: boolean;
9979
+ /** @description Who we will never reach, newest first. Capped — the count is on `wont_reach`. */
9980
+ unreachable: {
9981
+ contact_id: string | null;
9982
+ display_name: string | null;
9983
+ phone: string | null;
9984
+ email: string | null;
9985
+ whatsapp_user_id: string | null;
9986
+ avatar_url: string | null;
9987
+ reason: string | null;
9988
+ event: string | null;
9989
+ step_index: number | null;
9990
+ }[];
9991
+ /** @description Who is waiting on a human, newest first. Capped — the count is on `needs_you`. */
9992
+ blocked: {
9993
+ contact_id: string | null;
9994
+ display_name: string | null;
9995
+ phone: string | null;
9996
+ email: string | null;
9997
+ whatsapp_user_id: string | null;
9998
+ avatar_url: string | null;
9999
+ reason: string | null;
10000
+ event: string | null;
10001
+ step_index: number | null;
10002
+ }[];
10003
+ };
9717
10004
  LaunchSequenceOutputDto: {
9718
10005
  /** @constant */
9719
10006
  status: "active";
@@ -10533,6 +10820,8 @@ export interface components {
10533
10820
  updated_at: string;
10534
10821
  call_available: boolean;
10535
10822
  call_locked: boolean;
10823
+ call_wrap_up_until: string | null;
10824
+ call_wrap_up_phone_call_id: string | null;
10536
10825
  availability_status_id: string | null;
10537
10826
  };
10538
10827
  AuditLogPublicDto: {
@@ -10651,6 +10940,8 @@ export interface components {
10651
10940
  updated_at: string;
10652
10941
  call_available: boolean;
10653
10942
  call_locked: boolean;
10943
+ call_wrap_up_until: string | null;
10944
+ call_wrap_up_phone_call_id: string | null;
10654
10945
  availability_status_id: string | null;
10655
10946
  };
10656
10947
  resolved_status: components["schemas"]["ResolvedAvailabilityStatusDto"];
@@ -10825,6 +11116,8 @@ export interface components {
10825
11116
  id: string;
10826
11117
  /** @enum {string} */
10827
11118
  status: "open" | "closed_resolved" | "closed_unresolved";
11119
+ /** @description Id of the custom status refining `status`, or null when only the built-in status applies. Resolve it with GET /custom-statuses. */
11120
+ sub_status_id: string | null;
10828
11121
  ai_closure_type: ("assumed_resolved" | "handed_off" | "resolved") | null;
10829
11122
  sentiment: ("angry" | "happy" | "neutral") | null;
10830
11123
  /** @description AI-generated summary of the conversation. Populated for both AI-resolved and handed-off sessions once the session has been summarized; null otherwise. */
@@ -12376,6 +12669,9 @@ export interface components {
12376
12669
  chat: boolean;
12377
12670
  email: boolean;
12378
12671
  whatsapp: boolean;
12672
+ instagram: boolean;
12673
+ messenger: boolean;
12674
+ sms: boolean;
12379
12675
  voice: boolean;
12380
12676
  };
12381
12677
  };
@@ -12646,6 +12942,10 @@ export interface components {
12646
12942
  enabled: boolean;
12647
12943
  };
12648
12944
  ListTagCategoriesOutput: components["schemas"]["TagCategoryPublicResponseDto"][];
12945
+ ListCustomStatusesOutput: components["schemas"]["CustomSessionStatusDto"][];
12946
+ DeleteCustomStatusOutput: {
12947
+ message: string;
12948
+ };
12649
12949
  ListWorkflowsOutput: components["schemas"]["WorkflowPublicResponseDto"][];
12650
12950
  DeleteWorkflowOutput: {
12651
12951
  success: boolean;
@@ -13734,6 +14034,74 @@ export interface operations {
13734
14034
  };
13735
14035
  };
13736
14036
  };
14037
+ setChatSessionSubStatus: {
14038
+ parameters: {
14039
+ query?: never;
14040
+ header?: never;
14041
+ path: {
14042
+ /** @description The unique identifier of the chat session */
14043
+ session_id: string;
14044
+ };
14045
+ cookie?: never;
14046
+ };
14047
+ requestBody: {
14048
+ content: {
14049
+ "application/json": components["schemas"]["SetChatSessionSubStatusInput"];
14050
+ };
14051
+ };
14052
+ responses: {
14053
+ /** @description Default Response */
14054
+ 200: {
14055
+ headers: {
14056
+ [name: string]: unknown;
14057
+ };
14058
+ content: {
14059
+ "application/json": components["schemas"]["GetChatSessionOutput"];
14060
+ };
14061
+ };
14062
+ /** @description Internal Server Error */
14063
+ 500: {
14064
+ headers: {
14065
+ [name: string]: unknown;
14066
+ };
14067
+ content: {
14068
+ "application/json": components["schemas"]["ErrorDto"];
14069
+ };
14070
+ };
14071
+ };
14072
+ };
14073
+ clearChatSessionSubStatus: {
14074
+ parameters: {
14075
+ query?: never;
14076
+ header?: never;
14077
+ path: {
14078
+ /** @description The unique identifier of the chat session */
14079
+ session_id: string;
14080
+ };
14081
+ cookie?: never;
14082
+ };
14083
+ requestBody?: never;
14084
+ responses: {
14085
+ /** @description Default Response */
14086
+ 200: {
14087
+ headers: {
14088
+ [name: string]: unknown;
14089
+ };
14090
+ content: {
14091
+ "application/json": components["schemas"]["GetChatSessionOutput"];
14092
+ };
14093
+ };
14094
+ /** @description Internal Server Error */
14095
+ 500: {
14096
+ headers: {
14097
+ [name: string]: unknown;
14098
+ };
14099
+ content: {
14100
+ "application/json": components["schemas"]["ErrorDto"];
14101
+ };
14102
+ };
14103
+ };
14104
+ };
13737
14105
  sendMessage: {
13738
14106
  parameters: {
13739
14107
  query?: never;
@@ -17650,6 +18018,168 @@ export interface operations {
17650
18018
  };
17651
18019
  };
17652
18020
  };
18021
+ listCustomStatuses: {
18022
+ parameters: {
18023
+ query?: never;
18024
+ header?: never;
18025
+ path?: never;
18026
+ cookie?: never;
18027
+ };
18028
+ requestBody?: never;
18029
+ responses: {
18030
+ /** @description Default Response */
18031
+ 200: {
18032
+ headers: {
18033
+ [name: string]: unknown;
18034
+ };
18035
+ content: {
18036
+ "application/json": components["schemas"]["ListCustomStatusesOutput"];
18037
+ };
18038
+ };
18039
+ /** @description Internal Server Error */
18040
+ 500: {
18041
+ headers: {
18042
+ [name: string]: unknown;
18043
+ };
18044
+ content: {
18045
+ "application/json": components["schemas"]["ErrorDto"];
18046
+ };
18047
+ };
18048
+ };
18049
+ };
18050
+ createCustomStatus: {
18051
+ parameters: {
18052
+ query?: never;
18053
+ header?: never;
18054
+ path?: never;
18055
+ cookie?: never;
18056
+ };
18057
+ requestBody: {
18058
+ content: {
18059
+ "application/json": components["schemas"]["CreateCustomStatusDto"];
18060
+ };
18061
+ };
18062
+ responses: {
18063
+ /** @description Default Response */
18064
+ 201: {
18065
+ headers: {
18066
+ [name: string]: unknown;
18067
+ };
18068
+ content: {
18069
+ "application/json": components["schemas"]["CustomSessionStatusDto"];
18070
+ };
18071
+ };
18072
+ /** @description Internal Server Error */
18073
+ 500: {
18074
+ headers: {
18075
+ [name: string]: unknown;
18076
+ };
18077
+ content: {
18078
+ "application/json": components["schemas"]["ErrorDto"];
18079
+ };
18080
+ };
18081
+ };
18082
+ };
18083
+ getCustomStatus: {
18084
+ parameters: {
18085
+ query?: never;
18086
+ header?: never;
18087
+ path: {
18088
+ /** @description The custom status id */
18089
+ id: string;
18090
+ };
18091
+ cookie?: never;
18092
+ };
18093
+ requestBody?: never;
18094
+ responses: {
18095
+ /** @description Default Response */
18096
+ 200: {
18097
+ headers: {
18098
+ [name: string]: unknown;
18099
+ };
18100
+ content: {
18101
+ "application/json": components["schemas"]["CustomSessionStatusDto"];
18102
+ };
18103
+ };
18104
+ /** @description Internal Server Error */
18105
+ 500: {
18106
+ headers: {
18107
+ [name: string]: unknown;
18108
+ };
18109
+ content: {
18110
+ "application/json": components["schemas"]["ErrorDto"];
18111
+ };
18112
+ };
18113
+ };
18114
+ };
18115
+ deleteCustomStatus: {
18116
+ parameters: {
18117
+ query?: never;
18118
+ header?: never;
18119
+ path: {
18120
+ /** @description The custom status id */
18121
+ id: string;
18122
+ };
18123
+ cookie?: never;
18124
+ };
18125
+ requestBody?: never;
18126
+ responses: {
18127
+ /** @description Default Response */
18128
+ 200: {
18129
+ headers: {
18130
+ [name: string]: unknown;
18131
+ };
18132
+ content: {
18133
+ "application/json": components["schemas"]["DeleteCustomStatusOutput"];
18134
+ };
18135
+ };
18136
+ /** @description Internal Server Error */
18137
+ 500: {
18138
+ headers: {
18139
+ [name: string]: unknown;
18140
+ };
18141
+ content: {
18142
+ "application/json": components["schemas"]["ErrorDto"];
18143
+ };
18144
+ };
18145
+ };
18146
+ };
18147
+ updateCustomStatus: {
18148
+ parameters: {
18149
+ query?: never;
18150
+ header?: never;
18151
+ path: {
18152
+ /** @description The custom status id */
18153
+ id: string;
18154
+ };
18155
+ cookie?: never;
18156
+ };
18157
+ requestBody: {
18158
+ content: {
18159
+ "application/json": components["schemas"]["UpdateCustomStatusPublicDto"];
18160
+ };
18161
+ };
18162
+ responses: {
18163
+ /** @description Default Response */
18164
+ 200: {
18165
+ headers: {
18166
+ [name: string]: unknown;
18167
+ };
18168
+ content: {
18169
+ "application/json": components["schemas"]["CustomSessionStatusDto"];
18170
+ };
18171
+ };
18172
+ /** @description Internal Server Error */
18173
+ 500: {
18174
+ headers: {
18175
+ [name: string]: unknown;
18176
+ };
18177
+ content: {
18178
+ "application/json": components["schemas"]["ErrorDto"];
18179
+ };
18180
+ };
18181
+ };
18182
+ };
17653
18183
  listWorkflowDefinitions: {
17654
18184
  parameters: {
17655
18185
  query?: never;
@@ -19291,6 +19821,72 @@ export interface operations {
19291
19821
  };
19292
19822
  };
19293
19823
  };
19824
+ listSequenceReplies: {
19825
+ parameters: {
19826
+ query?: {
19827
+ limit?: number;
19828
+ };
19829
+ header?: never;
19830
+ path: {
19831
+ /** @description The unique identifier of the sequence */
19832
+ sequenceId: string;
19833
+ };
19834
+ cookie?: never;
19835
+ };
19836
+ requestBody?: never;
19837
+ responses: {
19838
+ /** @description Default Response */
19839
+ 200: {
19840
+ headers: {
19841
+ [name: string]: unknown;
19842
+ };
19843
+ content: {
19844
+ "application/json": components["schemas"]["SequenceRepliesDto"];
19845
+ };
19846
+ };
19847
+ /** @description Internal Server Error */
19848
+ 500: {
19849
+ headers: {
19850
+ [name: string]: unknown;
19851
+ };
19852
+ content: {
19853
+ "application/json": components["schemas"]["ErrorDto"];
19854
+ };
19855
+ };
19856
+ };
19857
+ };
19858
+ getSequenceStats: {
19859
+ parameters: {
19860
+ query?: never;
19861
+ header?: never;
19862
+ path: {
19863
+ /** @description The unique identifier of the sequence */
19864
+ sequenceId: string;
19865
+ };
19866
+ cookie?: never;
19867
+ };
19868
+ requestBody?: never;
19869
+ responses: {
19870
+ /** @description Default Response */
19871
+ 200: {
19872
+ headers: {
19873
+ [name: string]: unknown;
19874
+ };
19875
+ content: {
19876
+ "application/json": components["schemas"]["SequenceStatsDto"];
19877
+ };
19878
+ };
19879
+ /** @description Internal Server Error */
19880
+ 500: {
19881
+ headers: {
19882
+ [name: string]: unknown;
19883
+ };
19884
+ content: {
19885
+ "application/json": components["schemas"]["ErrorDto"];
19886
+ };
19887
+ };
19888
+ };
19889
+ };
19294
19890
  setSequenceSteps: {
19295
19891
  parameters: {
19296
19892
  query?: never;
@@ -23469,6 +24065,8 @@ export interface operations {
23469
24065
  has_actions?: "true" | "false";
23470
24066
  tags?: string;
23471
24067
  channels?: string;
24068
+ addons?: string;
24069
+ archived?: "only";
23472
24070
  sort_by?: "created_at" | "name" | "members" | "data_sources" | "sessions_30d" | "total_sessions" | "last_session_at";
23473
24071
  sort_dir?: "asc" | "desc";
23474
24072
  };