@opencx/mcp 1.15.58 → 1.15.60

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
@@ -382,7 +382,7 @@ export interface paths {
382
382
  head?: never;
383
383
  /**
384
384
  * Update a chat session
385
- * @description Updates a chat session. Can change status, generate summary/sentiment on resolve, and reflect status changes to integrations.
385
+ * @description Updates a chat session. Can change status, set or clear the summary, generate summary/sentiment on resolve, and reflect status changes to integrations.
386
386
  */
387
387
  patch: operations["updateChatSession"];
388
388
  trace?: never;
@@ -2118,7 +2118,7 @@ export interface paths {
2118
2118
  head?: never;
2119
2119
  /**
2120
2120
  * Update a macro
2121
- * @description Partially update a saved-reply macro. Attachments are dashboard-authored and cannot be changed via the public API; text-only updates leave them untouched.
2121
+ * @description Partially update a saved-reply macro. Attachments are dashboard-authored and cannot be changed via the public API; text-only updates leave attachments and options untouched.
2122
2122
  */
2123
2123
  patch: operations["updateMacro"];
2124
2124
  trace?: never;
@@ -3222,6 +3222,26 @@ export interface paths {
3222
3222
  patch: operations["updatePhoneAgent"];
3223
3223
  trace?: never;
3224
3224
  };
3225
+ "/phone/calls/hand-back": {
3226
+ parameters: {
3227
+ query?: never;
3228
+ header?: never;
3229
+ path?: never;
3230
+ cookie?: never;
3231
+ };
3232
+ get?: never;
3233
+ put?: never;
3234
+ /**
3235
+ * Hand back a transferred call
3236
+ * @description Returns a caller that a Classical IVR transferred to your SIP endpoint. Your SIP leg is hung up, and the IVR continues with the steps after the transfer (usually routing the caller to a team) on the same call, recording and session. Call it instead of hanging up when the caller should continue with the organization. Repeating a successful hand-back returns the same response and ignores its summary. Returns 409 when the session has no transferred call waiting: before your leg answered, or after your leg or the caller hung up.
3237
+ */
3238
+ post: operations["handBackPhoneCall"];
3239
+ delete?: never;
3240
+ options?: never;
3241
+ head?: never;
3242
+ patch?: never;
3243
+ trace?: never;
3244
+ };
3225
3245
  "/phone/outbound-call": {
3226
3246
  parameters: {
3227
3247
  query?: never;
@@ -6739,6 +6759,8 @@ export interface components {
6739
6759
  schemas: {
6740
6760
  /** @enum {string} */
6741
6761
  SessionChannel: "web" | "email" | "phone_voice" | "slack" | "sms" | "whatsapp" | "instagram" | "messenger" | "api" | "web_voice" | "twitter" | "twitter_mentions" | "app_review" | "internal";
6762
+ /** @enum {string} */
6763
+ MessageOptionType: "text" | "workflow";
6742
6764
  SalesforceReplyTemplateRules: {
6743
6765
  conditions: ({
6744
6766
  /** @constant */
@@ -7243,6 +7265,11 @@ export interface components {
7243
7265
  /** @description Optional reason for redaction */
7244
7266
  reason?: string;
7245
7267
  };
7268
+ MacroOptionInputDto: {
7269
+ id?: string;
7270
+ label: string;
7271
+ type: components["schemas"]["MessageOptionType"];
7272
+ };
7246
7273
  SkipSequenceStepBody: {
7247
7274
  /** @enum {string} */
7248
7275
  mode: "next_pending" | "next_channel" | "specific_step";
@@ -8399,6 +8426,8 @@ export interface components {
8399
8426
  session_closed_payload?: {
8400
8427
  [key: string]: unknown;
8401
8428
  } | string;
8429
+ /** @description Replace the session summary, or null to clear it. Takes precedence over a summary generated on resolve. */
8430
+ summary?: string | null;
8402
8431
  };
8403
8432
  SessionAssigneeUpdateInput: {
8404
8433
  /** @description Agent user ID to assign, or null to unassign the session */
@@ -8444,6 +8473,16 @@ export interface components {
8444
8473
  type: "text";
8445
8474
  text: string;
8446
8475
  attachments?: components["schemas"]["ChatAttachmentInput"][];
8476
+ /** @description Contact messages only: the message is a tap on one of an agent message's options (see the `options` on the conversation.agent_response webhook). The message is recorded with the option's label as its text; an option that is not on a message of this session is rejected with a 400. */
8477
+ option_reply?: {
8478
+ /**
8479
+ * Format: uuid
8480
+ * @description The agent message whose option was tapped.
8481
+ */
8482
+ message_id: string;
8483
+ /** @description The id of the tapped option. */
8484
+ option_id: string;
8485
+ };
8447
8486
  };
8448
8487
  /** @default false */
8449
8488
  should_take_over_session_from_ai: boolean;
@@ -8880,7 +8919,7 @@ export interface components {
8880
8919
  * @description What starts the workflow. Use "manual-trigger" for on-demand execution, "ai-trigger" for AI-initiated, "webhook" for external HTTP triggers, "cron-trigger" for scheduled runs, or event-based triggers like "ticket-created", "contact-created", etc.
8881
8920
  * @enum {string}
8882
8921
  */
8883
- trigger_type: "ivr-incoming-call" | "manual-trigger" | "ai-trigger" | "cron-trigger" | "form-trigger" | "webhook" | "contact-created" | "contact-updated" | "phone-call-started" | "phone-call-finished" | "ticket-created" | "ticket-reassigned" | "ticket-resolved" | "ticket-handoff" | "pre-ticket-handoff" | "ticket-tag-added" | "ticket-inactive" | "agent-inactive" | "csat-score-submit" | "prohibited-topic-detected" | "sla-first-reply-breached" | "sla-next-reply-breached" | "sla-resolution-breached" | "voice-call-transferred" | "pre-voice-call-transfer" | "pre-phone-call-finished" | "manual-ticket-trigger" | "contact-message-received" | "first-contact-message-received" | "macro-called" | "ai-response-completed" | "agent-availability-changed" | "agent-avail-in-team-changed" | "ai-response-requested" | "ticket-reopened" | "agent-mentioned" | "agent-message-posted" | "ticket-team-changed" | "session-updated" | "sequence-contact-replied" | "sequence-contact-completed" | "sequence-contact-parked" | "sequence-step-failed" | "sequence-contact-suppressed";
8922
+ trigger_type: "ivr-incoming-call" | "manual-trigger" | "ai-trigger" | "cron-trigger" | "form-trigger" | "webhook" | "contact-created" | "contact-updated" | "phone-call-started" | "phone-call-finished" | "ticket-created" | "ticket-reassigned" | "ticket-resolved" | "ticket-handoff" | "pre-ticket-handoff" | "ticket-tag-added" | "ticket-inactive" | "agent-inactive" | "csat-score-submit" | "prohibited-topic-detected" | "sla-first-reply-breached" | "sla-next-reply-breached" | "sla-resolution-breached" | "voice-call-transferred" | "pre-voice-call-transfer" | "pre-phone-call-finished" | "manual-ticket-trigger" | "contact-message-received" | "first-contact-message-received" | "macro-called" | "macro-option-clicked" | "ai-response-completed" | "agent-availability-changed" | "agent-avail-in-team-changed" | "ai-response-requested" | "ticket-reopened" | "agent-mentioned" | "agent-message-posted" | "ticket-team-changed" | "session-updated" | "sequence-contact-replied" | "sequence-contact-completed" | "sequence-contact-parked" | "sequence-step-failed" | "sequence-contact-suppressed";
8884
8923
  /** @description Trigger-specific configuration (e.g. cron expression for cron-trigger) */
8885
8924
  trigger_configuration?: unknown | null;
8886
8925
  /** @description Array of workflow steps and control-flow blocks. Each step is an object with { "$kind": "Action", "id": "<unique-step-id>", "type": "<action-type>", "name": "<display-name>", "input": { ... } }. Control-flow blocks use { "$kind": "Block", "type": "if-else", "id": "<unique-id>", "inputs": { "condition": { "operatorName": "equals", "left": "{{step_id.field}}", "right": "value" } }, "branches": { "then": [...steps], "else": [...steps] } }. Use {{step_id.field}} to reference outputs from previous steps (no `.output.` segment — the field sits directly under the step id). */
@@ -8897,7 +8936,7 @@ export interface components {
8897
8936
  * @description New trigger type
8898
8937
  * @enum {string}
8899
8938
  */
8900
- trigger_type?: "ivr-incoming-call" | "manual-trigger" | "ai-trigger" | "cron-trigger" | "form-trigger" | "webhook" | "contact-created" | "contact-updated" | "phone-call-started" | "phone-call-finished" | "ticket-created" | "ticket-reassigned" | "ticket-resolved" | "ticket-handoff" | "pre-ticket-handoff" | "ticket-tag-added" | "ticket-inactive" | "agent-inactive" | "csat-score-submit" | "prohibited-topic-detected" | "sla-first-reply-breached" | "sla-next-reply-breached" | "sla-resolution-breached" | "voice-call-transferred" | "pre-voice-call-transfer" | "pre-phone-call-finished" | "manual-ticket-trigger" | "contact-message-received" | "first-contact-message-received" | "macro-called" | "ai-response-completed" | "agent-availability-changed" | "agent-avail-in-team-changed" | "ai-response-requested" | "ticket-reopened" | "agent-mentioned" | "agent-message-posted" | "ticket-team-changed" | "session-updated" | "sequence-contact-replied" | "sequence-contact-completed" | "sequence-contact-parked" | "sequence-step-failed" | "sequence-contact-suppressed";
8939
+ trigger_type?: "ivr-incoming-call" | "manual-trigger" | "ai-trigger" | "cron-trigger" | "form-trigger" | "webhook" | "contact-created" | "contact-updated" | "phone-call-started" | "phone-call-finished" | "ticket-created" | "ticket-reassigned" | "ticket-resolved" | "ticket-handoff" | "pre-ticket-handoff" | "ticket-tag-added" | "ticket-inactive" | "agent-inactive" | "csat-score-submit" | "prohibited-topic-detected" | "sla-first-reply-breached" | "sla-next-reply-breached" | "sla-resolution-breached" | "voice-call-transferred" | "pre-voice-call-transfer" | "pre-phone-call-finished" | "manual-ticket-trigger" | "contact-message-received" | "first-contact-message-received" | "macro-called" | "macro-option-clicked" | "ai-response-completed" | "agent-availability-changed" | "agent-avail-in-team-changed" | "ai-response-requested" | "ticket-reopened" | "agent-mentioned" | "agent-message-posted" | "ticket-team-changed" | "session-updated" | "sequence-contact-replied" | "sequence-contact-completed" | "sequence-contact-parked" | "sequence-step-failed" | "sequence-contact-suppressed";
8901
8940
  /** @description New trigger configuration */
8902
8941
  trigger_configuration?: unknown | null;
8903
8942
  /** @description New workflow step/block definitions (replaces existing blocks) */
@@ -8910,7 +8949,7 @@ export interface components {
8910
8949
  * @description Trigger type to validate against
8911
8950
  * @enum {string}
8912
8951
  */
8913
- trigger_type: "ivr-incoming-call" | "manual-trigger" | "ai-trigger" | "cron-trigger" | "form-trigger" | "webhook" | "contact-created" | "contact-updated" | "phone-call-started" | "phone-call-finished" | "ticket-created" | "ticket-reassigned" | "ticket-resolved" | "ticket-handoff" | "pre-ticket-handoff" | "ticket-tag-added" | "ticket-inactive" | "agent-inactive" | "csat-score-submit" | "prohibited-topic-detected" | "sla-first-reply-breached" | "sla-next-reply-breached" | "sla-resolution-breached" | "voice-call-transferred" | "pre-voice-call-transfer" | "pre-phone-call-finished" | "manual-ticket-trigger" | "contact-message-received" | "first-contact-message-received" | "macro-called" | "ai-response-completed" | "agent-availability-changed" | "agent-avail-in-team-changed" | "ai-response-requested" | "ticket-reopened" | "agent-mentioned" | "agent-message-posted" | "ticket-team-changed" | "session-updated" | "sequence-contact-replied" | "sequence-contact-completed" | "sequence-contact-parked" | "sequence-step-failed" | "sequence-contact-suppressed";
8952
+ trigger_type: "ivr-incoming-call" | "manual-trigger" | "ai-trigger" | "cron-trigger" | "form-trigger" | "webhook" | "contact-created" | "contact-updated" | "phone-call-started" | "phone-call-finished" | "ticket-created" | "ticket-reassigned" | "ticket-resolved" | "ticket-handoff" | "pre-ticket-handoff" | "ticket-tag-added" | "ticket-inactive" | "agent-inactive" | "csat-score-submit" | "prohibited-topic-detected" | "sla-first-reply-breached" | "sla-next-reply-breached" | "sla-resolution-breached" | "voice-call-transferred" | "pre-voice-call-transfer" | "pre-phone-call-finished" | "manual-ticket-trigger" | "contact-message-received" | "first-contact-message-received" | "macro-called" | "macro-option-clicked" | "ai-response-completed" | "agent-availability-changed" | "agent-avail-in-team-changed" | "ai-response-requested" | "ticket-reopened" | "agent-mentioned" | "agent-message-posted" | "ticket-team-changed" | "session-updated" | "sequence-contact-replied" | "sequence-contact-completed" | "sequence-contact-parked" | "sequence-step-failed" | "sequence-contact-suppressed";
8914
8953
  /** @description Trigger configuration to validate against the trigger's configuration_def. When omitted, the trigger is validated as if unconfigured — triggers with required configuration (e.g. cron-trigger, ai-trigger) will report errors. */
8915
8954
  trigger_configuration?: unknown | null;
8916
8955
  /** @description Workflow blocks to validate */
@@ -8923,7 +8962,7 @@ export interface components {
8923
8962
  * @description Trigger type whose payload shape this synthetic payload should match
8924
8963
  * @enum {string}
8925
8964
  */
8926
- type: "ivr-incoming-call" | "manual-trigger" | "ai-trigger" | "cron-trigger" | "form-trigger" | "webhook" | "contact-created" | "contact-updated" | "phone-call-started" | "phone-call-finished" | "ticket-created" | "ticket-reassigned" | "ticket-resolved" | "ticket-handoff" | "pre-ticket-handoff" | "ticket-tag-added" | "ticket-inactive" | "agent-inactive" | "csat-score-submit" | "prohibited-topic-detected" | "sla-first-reply-breached" | "sla-next-reply-breached" | "sla-resolution-breached" | "voice-call-transferred" | "pre-voice-call-transfer" | "pre-phone-call-finished" | "manual-ticket-trigger" | "contact-message-received" | "first-contact-message-received" | "macro-called" | "ai-response-completed" | "agent-availability-changed" | "agent-avail-in-team-changed" | "ai-response-requested" | "ticket-reopened" | "agent-mentioned" | "agent-message-posted" | "ticket-team-changed" | "session-updated" | "sequence-contact-replied" | "sequence-contact-completed" | "sequence-contact-parked" | "sequence-step-failed" | "sequence-contact-suppressed";
8965
+ type: "ivr-incoming-call" | "manual-trigger" | "ai-trigger" | "cron-trigger" | "form-trigger" | "webhook" | "contact-created" | "contact-updated" | "phone-call-started" | "phone-call-finished" | "ticket-created" | "ticket-reassigned" | "ticket-resolved" | "ticket-handoff" | "pre-ticket-handoff" | "ticket-tag-added" | "ticket-inactive" | "agent-inactive" | "csat-score-submit" | "prohibited-topic-detected" | "sla-first-reply-breached" | "sla-next-reply-breached" | "sla-resolution-breached" | "voice-call-transferred" | "pre-voice-call-transfer" | "pre-phone-call-finished" | "manual-ticket-trigger" | "contact-message-received" | "first-contact-message-received" | "macro-called" | "macro-option-clicked" | "ai-response-completed" | "agent-availability-changed" | "agent-avail-in-team-changed" | "ai-response-requested" | "ticket-reopened" | "agent-mentioned" | "agent-message-posted" | "ticket-team-changed" | "session-updated" | "sequence-contact-replied" | "sequence-contact-completed" | "sequence-contact-parked" | "sequence-step-failed" | "sequence-contact-suppressed";
8927
8966
  payload: unknown;
8928
8967
  };
8929
8968
  };
@@ -8931,6 +8970,15 @@ export interface components {
8931
8970
  /** @description The name of the organization. */
8932
8971
  name?: string;
8933
8972
  };
8973
+ HandBackCallInput: {
8974
+ /**
8975
+ * Format: uuid
8976
+ * @description The session of the call to hand back, as received in the X-OPENCX-SESSION-ID SIP header
8977
+ */
8978
+ session_id: string;
8979
+ /** @description Your summary of the conversation so far. Saved as the session's summary before a teammate is connected. */
8980
+ summary?: string;
8981
+ };
8934
8982
  CreatePhoneAgentPublicDto: {
8935
8983
  /** @description Agent display name */
8936
8984
  name: string;
@@ -8960,7 +9008,7 @@ export interface components {
8960
9008
  failover_transfer_destination_id?: string | null;
8961
9009
  /** @description Speaking speed on a 1-100 scale (null = the voice default). Lower is slower; natural-sounding voices in some languages (e.g. Dutch) run best around 80-85. */
8962
9010
  tts_speed_pct?: number | null;
8963
- /** @description Custom vocabulary to boost in speech recognition: brand and product names, jargon, spellings the transcriber typically mishears. The agent name and transfer destination names are merged in automatically. */
9011
+ /** @description Custom vocabulary to boost in speech recognition: brand and product names, jargon, spellings the transcriber typically mishears. The agent name is merged in automatically. */
8964
9012
  stt_keyterms?: string[] | null;
8965
9013
  /** @description Record calls handled by this agent (default: false). */
8966
9014
  recording_enabled?: boolean;
@@ -8994,7 +9042,7 @@ export interface components {
8994
9042
  failover_transfer_destination_id?: string | null;
8995
9043
  /** @description Speaking speed on a 1-100 scale (null = the voice default). Lower is slower; natural-sounding voices in some languages (e.g. Dutch) run best around 80-85. */
8996
9044
  tts_speed_pct?: number | null;
8997
- /** @description Custom vocabulary to boost in speech recognition: brand and product names, jargon, spellings the transcriber typically mishears. The agent name and transfer destination names are merged in automatically. */
9045
+ /** @description Custom vocabulary to boost in speech recognition: brand and product names, jargon, spellings the transcriber typically mishears. The agent name is merged in automatically. */
8998
9046
  stt_keyterms?: string[] | null;
8999
9047
  /** @description Record calls handled by this agent (default: false). */
9000
9048
  recording_enabled?: boolean;
@@ -9269,12 +9317,16 @@ export interface components {
9269
9317
  title: string;
9270
9318
  /** @description Macro body as HTML, limited to what every channel can carry: <p>, <br>, <strong>, <em>, <s>, <a href>, <ul>/<ol start>/<li> and inline images as `<img src="…">` pointing at a file uploaded for this organization. Other markup is dropped (its text is kept); escape literal < and & as HTML entities, and use <br> or <p> for line breaks. Reference variables with {{variable}} syntax. */
9271
9319
  content: string;
9320
+ /** @description Up to 3 options the customer can tap instead of typing, sent with the macro on channels that show them. Each `label` is up to 20 characters. `type` is `text` (the tap reaches the session as the customer's reply) or `workflow` (the tap runs the macro's Macro Option Clicked workflows and the AI doesn't reply). This is the full list: on update, pass an existing option's `id` to keep it (workflows branching on that id keep working); options left out are removed, `[]` removes all, and omitting the field leaves them untouched. A macro with options needs body text. */
9321
+ options?: components["schemas"]["MacroOptionInputDto"][];
9272
9322
  };
9273
9323
  UpdateMacroInput: {
9274
9324
  category?: string;
9275
9325
  title?: string;
9276
9326
  /** @description Macro body as HTML, limited to what every channel can carry: <p>, <br>, <strong>, <em>, <s>, <a href>, <ul>/<ol start>/<li> and inline images as `<img src="…">` pointing at a file uploaded for this organization. Other markup is dropped (its text is kept); escape literal < and & as HTML entities, and use <br> or <p> for line breaks. Reference variables with {{variable}} syntax. */
9277
9327
  content?: string;
9328
+ /** @description Up to 3 options the customer can tap instead of typing, sent with the macro on channels that show them. Each `label` is up to 20 characters. `type` is `text` (the tap reaches the session as the customer's reply) or `workflow` (the tap runs the macro's Macro Option Clicked workflows and the AI doesn't reply). This is the full list: on update, pass an existing option's `id` to keep it (workflows branching on that id keep working); options left out are removed, `[]` removes all, and omitting the field leaves them untouched. A macro with options needs body text. */
9329
+ options?: components["schemas"]["MacroOptionInputDto"][];
9278
9330
  };
9279
9331
  UpsertTagInputDto: {
9280
9332
  /** @description Tag name (e.g. "billing", "refund", "feature-request") */
@@ -9589,6 +9641,24 @@ export interface components {
9589
9641
  created_at: string;
9590
9642
  events: components["schemas"]["PhoneCallEventDto"][];
9591
9643
  };
9644
+ MessageOptionDto: {
9645
+ id: string;
9646
+ label: string;
9647
+ type: components["schemas"]["MessageOptionType"];
9648
+ };
9649
+ MessageOptionsSourceDto: {
9650
+ /** @constant */
9651
+ kind: "macro";
9652
+ macro_id: string;
9653
+ macro_title: string;
9654
+ };
9655
+ MessageOptionsDto: {
9656
+ source: components["schemas"]["MessageOptionsSourceDto"];
9657
+ options: components["schemas"]["MessageOptionDto"][];
9658
+ picked_option_id: string | null;
9659
+ picked_at: string | null;
9660
+ picked_message_uuid: string | null;
9661
+ };
9592
9662
  AgentChangedPayload: {
9593
9663
  /** @constant */
9594
9664
  from: "ai";
@@ -9915,6 +9985,7 @@ export interface components {
9915
9985
  whatsapp_template_request?: unknown | null;
9916
9986
  assist_mode?: boolean;
9917
9987
  whatsapp_template_snapshot?: unknown | null;
9988
+ message_options?: unknown | null;
9918
9989
  rule_violation_reflections?: {
9919
9990
  rule_name: string;
9920
9991
  /** @description How the rule was violated */
@@ -10034,6 +10105,7 @@ export interface components {
10034
10105
  extra_params?: {
10035
10106
  [key: string]: unknown;
10036
10107
  } | null;
10108
+ message_options?: components["schemas"]["MessageOptionsDto"] | null;
10037
10109
  agent_id?: number | null;
10038
10110
  agent_name?: string | null;
10039
10111
  agent_avatar?: string | null;
@@ -10249,6 +10321,29 @@ export interface components {
10249
10321
  system_options: components["schemas"]["StructuredFieldSystemOptionDto"][];
10250
10322
  };
10251
10323
  StructuredFieldListDto: components["schemas"]["StructuredFieldTreeDto"][];
10324
+ MacroAttachmentDto: {
10325
+ id: string;
10326
+ name: string;
10327
+ size: number;
10328
+ type: string;
10329
+ url: string;
10330
+ };
10331
+ SavedReplyDto: {
10332
+ id: string;
10333
+ org_id: string;
10334
+ category: string;
10335
+ title: string;
10336
+ /** @description Macro body as channel-safe HTML, with {{variable}} references. */
10337
+ content: string;
10338
+ attachments: components["schemas"]["MacroAttachmentDto"][];
10339
+ options: components["schemas"]["MessageOptionDto"][];
10340
+ user_id: number | null;
10341
+ overrides_saved_reply_id: string | null;
10342
+ /** Format: date-time */
10343
+ created_at: string;
10344
+ /** Format: date-time */
10345
+ updated_at: string;
10346
+ };
10252
10347
  CustomSessionStatusDto: {
10253
10348
  id: string;
10254
10349
  org_id: string;
@@ -10667,24 +10762,6 @@ export interface components {
10667
10762
  end_time: string;
10668
10763
  }[];
10669
10764
  };
10670
- AgentWorkflowItemDto: {
10671
- /** @description The logical workflow UUID */
10672
- workflowId: string;
10673
- /** @description Display name of the workflow */
10674
- name: string;
10675
- /** @description Description of the workflow */
10676
- description: string | null;
10677
- /** @description The goal of the workflow from AI trigger config */
10678
- goal: string | null;
10679
- /** @description Whether this workflow is selected for the agent */
10680
- selected: boolean;
10681
- };
10682
- AgentWorkflowListDto: {
10683
- workflows: components["schemas"]["AgentWorkflowItemDto"][];
10684
- };
10685
- UpdateAgentWorkflowsResponseDto: {
10686
- success: boolean;
10687
- };
10688
10765
  PhoneAgentVoiceDto: {
10689
10766
  /** @enum {string} */
10690
10767
  provider: "elevenlabs" | "cartesia" | "vapi" | "live";
@@ -10707,6 +10784,24 @@ export interface components {
10707
10784
  };
10708
10785
  default_speed_pct: number | null;
10709
10786
  };
10787
+ AgentWorkflowItemDto: {
10788
+ /** @description The logical workflow UUID */
10789
+ workflowId: string;
10790
+ /** @description Display name of the workflow */
10791
+ name: string;
10792
+ /** @description Description of the workflow */
10793
+ description: string | null;
10794
+ /** @description The goal of the workflow from AI trigger config */
10795
+ goal: string | null;
10796
+ /** @description Whether this workflow is selected for the agent */
10797
+ selected: boolean;
10798
+ };
10799
+ AgentWorkflowListDto: {
10800
+ workflows: components["schemas"]["AgentWorkflowItemDto"][];
10801
+ };
10802
+ UpdateAgentWorkflowsResponseDto: {
10803
+ success: boolean;
10804
+ };
10710
10805
  KnowledgeSourceRoutingGuideDto: {
10711
10806
  /** @enum {string} */
10712
10807
  status: "fresh" | "stale" | "invalid";
@@ -10853,11 +10948,16 @@ export interface components {
10853
10948
  value: string | null;
10854
10949
  sipUsername: string | null;
10855
10950
  hasSipPassword: boolean;
10951
+ /** @description Names of the custom SIP headers sent on every transfer to this destination. Values are never returned. */
10952
+ sipHeaderNames: string[];
10856
10953
  sipHost: string | null;
10857
10954
  sipPort: number | null;
10858
10955
  sipExtension: string | null;
10859
10956
  sipTransport: ("udp" | "tcp" | "tls") | null;
10860
10957
  sipCallerId: string | null;
10958
+ sipHeaderAllowlist: string[] | null;
10959
+ sipPreserveCallerId: boolean;
10960
+ sipMediaEncryption: ("allow" | "require") | null;
10861
10961
  routingGroupId: string | null;
10862
10962
  createdAt: string;
10863
10963
  updatedAt: string;
@@ -11036,28 +11136,6 @@ export interface components {
11036
11136
  breaches: number;
11037
11137
  }[];
11038
11138
  };
11039
- MacroAttachmentDto: {
11040
- id: string;
11041
- name: string;
11042
- size: number;
11043
- type: string;
11044
- url: string;
11045
- };
11046
- SavedReplyDto: {
11047
- id: string;
11048
- org_id: string;
11049
- category: string;
11050
- title: string;
11051
- /** @description Macro body as channel-safe HTML, with {{variable}} references. */
11052
- content: string;
11053
- attachments: components["schemas"]["MacroAttachmentDto"][];
11054
- user_id: number | null;
11055
- overrides_saved_reply_id: string | null;
11056
- /** Format: date-time */
11057
- created_at: string;
11058
- /** Format: date-time */
11059
- updated_at: string;
11060
- };
11061
11139
  SavedReplyVariableDto: {
11062
11140
  id: string;
11063
11141
  org_id: string;
@@ -13015,6 +13093,7 @@ export interface components {
13015
13093
  call_available: boolean;
13016
13094
  call_locked: boolean;
13017
13095
  call_wrap_up_until: string | null;
13096
+ call_wrap_up_started_at?: string | null;
13018
13097
  call_wrap_up_phone_call_id: string | null;
13019
13098
  availability_status_id: string | null;
13020
13099
  };
@@ -13138,6 +13217,7 @@ export interface components {
13138
13217
  call_available: boolean;
13139
13218
  call_locked: boolean;
13140
13219
  call_wrap_up_until: string | null;
13220
+ call_wrap_up_started_at?: string | null;
13141
13221
  call_wrap_up_phone_call_id: string | null;
13142
13222
  availability_status_id: string | null;
13143
13223
  };
@@ -13215,6 +13295,8 @@ export interface components {
13215
13295
  [key: string]: unknown;
13216
13296
  };
13217
13297
  attachments: components["schemas"]["PublicChatAttachment"][];
13298
+ /** @description Agent messages sent from a macro with options: the options the contact can tap. Report a tap with `message.option_reply` on Send a message. */
13299
+ options?: components["schemas"]["MessageOptionDto"][];
13218
13300
  } | {
13219
13301
  /**
13220
13302
  * @description An AI draft reply produced in assist mode — suggested to the human support team, never delivered to the contact.
@@ -13504,6 +13586,8 @@ export interface components {
13504
13586
  [key: string]: unknown;
13505
13587
  };
13506
13588
  attachments: components["schemas"]["PublicChatAttachment"][];
13589
+ /** @description Agent messages sent from a macro with options: the options the contact can tap. Report a tap with `message.option_reply` on Send a message. */
13590
+ options?: components["schemas"]["MessageOptionDto"][];
13507
13591
  } | {
13508
13592
  /**
13509
13593
  * @description An AI draft reply produced in assist mode — suggested to the human support team, never delivered to the contact.
@@ -14081,7 +14165,7 @@ export interface components {
14081
14165
  } | ({
14082
14166
  /** @constant */
14083
14167
  success: true;
14084
- code?: string | "session_assigned_to_human_agent" | "response_cancelled" | "skipping_unuseful_response" | "duplicate_message_ignored" | "ai_response_skipped_by_workflow" | "ai_skipped_spam" | "steered_into_live_turn" | "session_busy";
14168
+ code?: string | "session_assigned_to_human_agent" | "response_cancelled" | "skipping_unuseful_response" | "duplicate_message_ignored" | "ai_response_skipped_by_workflow" | "message_option_workflow_triggered" | "ai_skipped_spam" | "steered_into_live_turn" | "session_busy";
14085
14169
  autopilotResponse?: {
14086
14170
  /** @constant */
14087
14171
  type: "text";
@@ -14138,6 +14222,7 @@ export interface components {
14138
14222
  whatsapp_template_request?: unknown | null;
14139
14223
  assist_mode?: boolean;
14140
14224
  whatsapp_template_snapshot?: unknown | null;
14225
+ message_options?: unknown | null;
14141
14226
  rule_violation_reflections?: {
14142
14227
  rule_name: string;
14143
14228
  /** @description How the rule was violated */
@@ -15043,6 +15128,12 @@ export interface components {
15043
15128
  /** @description When the organization was last updated. */
15044
15129
  updated_at: string | null;
15045
15130
  };
15131
+ HandBackCallOutput: {
15132
+ /** Format: uuid */
15133
+ session_id: string;
15134
+ /** @constant */
15135
+ status: "handed_back";
15136
+ };
15046
15137
  SetPhoneAgentCallerNumberOutput: {
15047
15138
  phone_agent_id: string;
15048
15139
  caller_number: string | null;
@@ -23270,6 +23361,39 @@ export interface operations {
23270
23361
  };
23271
23362
  };
23272
23363
  };
23364
+ handBackPhoneCall: {
23365
+ parameters: {
23366
+ query?: never;
23367
+ header?: never;
23368
+ path?: never;
23369
+ cookie?: never;
23370
+ };
23371
+ requestBody: {
23372
+ content: {
23373
+ "application/json": components["schemas"]["HandBackCallInput"];
23374
+ };
23375
+ };
23376
+ responses: {
23377
+ /** @description Default Response */
23378
+ 201: {
23379
+ headers: {
23380
+ [name: string]: unknown;
23381
+ };
23382
+ content: {
23383
+ "application/json": components["schemas"]["HandBackCallOutput"];
23384
+ };
23385
+ };
23386
+ /** @description Internal Server Error */
23387
+ 500: {
23388
+ headers: {
23389
+ [name: string]: unknown;
23390
+ };
23391
+ content: {
23392
+ "application/json": components["schemas"]["ErrorDto"];
23393
+ };
23394
+ };
23395
+ };
23396
+ };
23273
23397
  makeOutboundCall: {
23274
23398
  parameters: {
23275
23399
  query?: never;