@opencx/mcp 1.15.28 → 1.15.30

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
@@ -398,7 +398,7 @@ export interface paths {
398
398
  put?: never;
399
399
  /**
400
400
  * Assign or unassign a chat session
401
- * @description Assign a chat session to a human agent by user ID, or set assignee_id to null to unassign it.
401
+ * @description Assign a chat session to a human agent, named either by `assignee_id` or by `assignee_email` — exactly one. The email is matched case-insensitively against this organization’s members, so a sync can assign straight from the address it already holds. Send either field as null to unassign. A teammate who is not a member of this organization is rejected.
402
402
  */
403
403
  post: operations["assignChatSession"];
404
404
  delete?: never;
@@ -616,6 +616,50 @@ export interface paths {
616
616
  patch?: never;
617
617
  trace?: never;
618
618
  };
619
+ "/chat/sessions/{session_id}/follow-ups": {
620
+ parameters: {
621
+ query?: never;
622
+ header?: never;
623
+ path?: never;
624
+ cookie?: never;
625
+ };
626
+ /**
627
+ * List the AI follow-ups scheduled on a chat session
628
+ * @description Every follow-up scheduled on this session, pending ones first. A follow-up stays listed after it fires or is cancelled, with `is_active` false.
629
+ */
630
+ get: operations["listChatSessionFollowUps"];
631
+ put?: never;
632
+ /**
633
+ * Schedule an AI follow-up on a chat session
634
+ * @description Schedules the AI to continue this session later with the given prompt as guidance. At most 5 pending and 50 total follow-ups per session (409 when exceeded). Requires the scheduled follow-ups feature (403 otherwise).
635
+ */
636
+ post: operations["createChatSessionFollowUp"];
637
+ delete?: never;
638
+ options?: never;
639
+ head?: never;
640
+ patch?: never;
641
+ trace?: never;
642
+ };
643
+ "/chat/sessions/{session_id}/follow-ups/{follow_up_id}": {
644
+ parameters: {
645
+ query?: never;
646
+ header?: never;
647
+ path?: never;
648
+ cookie?: never;
649
+ };
650
+ get?: never;
651
+ put?: never;
652
+ post?: never;
653
+ /**
654
+ * Cancel a pending AI follow-up
655
+ * @description Cancels a pending follow-up so it never fires. Cancelling one that already fired or was cancelled is a no-op and returns it as is.
656
+ */
657
+ delete: operations["cancelChatSessionFollowUp"];
658
+ options?: never;
659
+ head?: never;
660
+ patch?: never;
661
+ trace?: never;
662
+ };
619
663
  "/companies": {
620
664
  parameters: {
621
665
  query?: never;
@@ -3136,7 +3180,7 @@ export interface paths {
3136
3180
  };
3137
3181
  /**
3138
3182
  * List the mailboxes this org can bind as sequence email senders
3139
- * @description Every email mailbox of the organization with its bindability verdict AND its health NUMBERS. `eligible` mailboxes are accepted by setSequenceSenders on the email channel; ineligible ones carry the reason (`not_active` — still provisioning or paused; `domain_not_live` — its domain lapsed, so sending would fail authentication). `health` carries warm-up status, inbox rate, spam rate, an overall score, warming-since, and the share of recent real sends that hard-bounced with its sample size. There is deliberately no pass/fail: a null is "not known yet" (common for a new mailbox), never "bad", and nothing here blocks a send or a binding.
3183
+ * @description Every email mailbox of the organization with its bindability verdict AND its health NUMBERS. `eligible` mailboxes are accepted by setSequenceSenders on the email channel including a mailbox still provisioning (`pending`/`created`): binding it early is safe, sending itself waits for the mailbox to finish becoming `active` on its own. Ineligible ones carry the reason (`not_active` — a human hold or the mailbox being removed, neither of which resolves on its own; `domain_not_live` — its domain lapsed, so sending would fail authentication). `health` carries warm-up status, inbox rate, spam rate, an overall score, warming-since, and the share of recent real sends that hard-bounced with its sample size. There is deliberately no pass/fail: a null is "not known yet" (common for a new mailbox), never "bad", and nothing here blocks a send or a binding.
3140
3184
  */
3141
3185
  get: operations["listEmailSenders"];
3142
3186
  put?: never;
@@ -3282,7 +3326,10 @@ export interface paths {
3282
3326
  };
3283
3327
  get?: never;
3284
3328
  put?: never;
3285
- /** Launch an outbound sequence — arms candidates for sending */
3329
+ /**
3330
+ * Launch an outbound sequence — arms candidates for sending
3331
+ * @description If the launch preview carries a regulatory_notice (voice steps into regulated countries), show it to a person and pass regulatory_acknowledged: true so the confirmation is recorded with the notice text. Informational — never blocks.
3332
+ */
3286
3333
  post: operations["launchSequence"];
3287
3334
  delete?: never;
3288
3335
  options?: never;
@@ -6213,6 +6260,8 @@ export interface components {
6213
6260
  support_office_hours_id?: string | null;
6214
6261
  /** @enum {string} */
6215
6262
  support_assignment_strategy?: "least-busy" | "round-robin" | "unassigned";
6263
+ /** @description Seconds between automatic assignments to the same agent under the least-busy strategy: 0 turns pacing off, otherwise 15 to 3600. */
6264
+ auto_assign_interval_seconds?: number;
6216
6265
  };
6217
6266
  CreateMiniAppDto: {
6218
6267
  name: string;
@@ -6517,6 +6566,10 @@ export interface components {
6517
6566
  type?: "string" | "number" | "boolean" | "date" | "string[]" | "number[]";
6518
6567
  }[];
6519
6568
  };
6569
+ LaunchSequenceInputDto: {
6570
+ /** @description True when the user was shown the regulatory notice and confirmed it — recorded with the notice text as shown, purely as a record. Never required; the launch behaves identically without it. */
6571
+ regulatory_acknowledged?: boolean | null;
6572
+ };
6520
6573
  SetSequenceStepsDto: {
6521
6574
  /** @description The full step list, replacing whatever is stored. Same validation as create: step 0 must have delay_minutes 0. */
6522
6575
  steps: ({
@@ -7215,7 +7268,9 @@ export interface components {
7215
7268
  };
7216
7269
  SessionAssigneeUpdateInput: {
7217
7270
  /** @description Agent user ID to assign, or null to unassign the session */
7218
- assignee_id: number | null;
7271
+ assignee_id?: number | null;
7272
+ /** @description Email of the agent to assign, matched case-insensitively against this organization’s members, or null to unassign the session */
7273
+ assignee_email?: string | null;
7219
7274
  };
7220
7275
  SessionTeamTransferInput: {
7221
7276
  /**
@@ -7347,6 +7402,12 @@ export interface components {
7347
7402
  */
7348
7403
  limit: number;
7349
7404
  };
7405
+ CreateChatSessionFollowUpInput: {
7406
+ /** @description Minutes from now until the AI continues the session (1–43200, i.e. up to 30 days). The reply runs at the first whole minute at or after that moment. */
7407
+ delay_minutes: number;
7408
+ /** @description Guidance for the fired reply — what to check or say when the session is continued. Not shown to the contact. */
7409
+ prompt: string;
7410
+ };
7350
7411
  UpdatePublicKnowledgebaseItem: {
7351
7412
  /** @description Contact segment ids this item should be restricted to. Pass [] to make it available to all contacts. */
7352
7413
  restricted_to_segments?: string[];
@@ -7368,11 +7429,6 @@ export interface components {
7368
7429
  channel: "web" | "email" | "phone" | "whatsapp" | "slack" | "sms" | "instagram" | "messenger" | "api" | "web_voice";
7369
7430
  /** @description Set true to enable autopilot, false to disable */
7370
7431
  autopilot_enabled: boolean;
7371
- /**
7372
- * @description AI agent version to use for this channel
7373
- * @enum {string}
7374
- */
7375
- ai_agent_version?: "v1" | "v2";
7376
7432
  };
7377
7433
  UpdateProhibitedTopicsInputDto: {
7378
7434
  /** @description Full replacement list of prohibited topics. Each entry is either a name string or an object with a name and an optional description. A name-only entry keeps whatever description that topic already has. Empty array clears all topics. Duplicates and blank entries are removed. */
@@ -8303,7 +8359,7 @@ export interface components {
8303
8359
  /** @constant */
8304
8360
  type: "response_skipped";
8305
8361
  /** @enum {string} */
8306
- reason?: "empty_response" | "potential_answers_dead_end" | "silent_handoff" | "assist_human_handling_recommended" | "superseded_by_newer_run" | "flagged_as_spam";
8362
+ reason?: "empty_response" | "potential_answers_dead_end" | "silent_handoff" | "assist_human_handling_recommended" | "superseded_by_newer_run" | "interrupted" | "flagged_as_spam";
8307
8363
  reasoning?: ({
8308
8364
  /** @constant */
8309
8365
  type: "reasoning";
@@ -8447,6 +8503,10 @@ export interface components {
8447
8503
  id: string;
8448
8504
  name: string;
8449
8505
  }[];
8506
+ /** @default null */
8507
+ pacing_until: string | null;
8508
+ /** @default null */
8509
+ skip_reason: "pacing" | null;
8450
8510
  } | null;
8451
8511
  peers: {
8452
8512
  agent_id: number;
@@ -8464,6 +8524,10 @@ export interface components {
8464
8524
  id: string;
8465
8525
  name: string;
8466
8526
  }[];
8527
+ /** @default null */
8528
+ pacing_until: string | null;
8529
+ /** @default null */
8530
+ skip_reason: "pacing" | null;
8467
8531
  }[];
8468
8532
  /** @default [] */
8469
8533
  required_skills: {
@@ -8549,6 +8613,10 @@ export interface components {
8549
8613
  id: string;
8550
8614
  name: string;
8551
8615
  }[];
8616
+ /** @default null */
8617
+ pacing_until: string | null;
8618
+ /** @default null */
8619
+ skip_reason: "pacing" | null;
8552
8620
  } | null;
8553
8621
  peers: {
8554
8622
  agent_id: number;
@@ -8566,6 +8634,10 @@ export interface components {
8566
8634
  id: string;
8567
8635
  name: string;
8568
8636
  }[];
8637
+ /** @default null */
8638
+ pacing_until: string | null;
8639
+ /** @default null */
8640
+ skip_reason: "pacing" | null;
8569
8641
  }[];
8570
8642
  /** @default [] */
8571
8643
  required_skills: {
@@ -9137,6 +9209,7 @@ export interface components {
9137
9209
  support_office_hours_id: string | null;
9138
9210
  /** @enum {string} */
9139
9211
  support_assignment_strategy: "least-busy" | "round-robin" | "unassigned";
9212
+ auto_assign_interval_seconds: number;
9140
9213
  zendesk_group_id: string | null;
9141
9214
  zendesk_group_channels: components["schemas"]["SessionChannel"][] | null;
9142
9215
  created_at: string | null;
@@ -10275,6 +10348,49 @@ export interface components {
10275
10348
  nullable: boolean;
10276
10349
  }[];
10277
10350
  };
10351
+ SequenceRegulatoryNoticeDto: {
10352
+ /** @description ISO 3166-1 alpha-2, sorted. */
10353
+ countries: string[];
10354
+ /** @description The checklist the confirmation refers to — show it with the country rules. */
10355
+ points: string[];
10356
+ cards: {
10357
+ /** @description ISO 3166-1 alpha-2. */
10358
+ code: string;
10359
+ name: string;
10360
+ /** @enum {string} */
10361
+ consent: "opt_in" | "opt_out" | "opt_in_b2c_opt_out_b2b" | "unregulated" | "unknown";
10362
+ consent_note: string;
10363
+ hours: {
10364
+ weekdays: string;
10365
+ saturday: string;
10366
+ sunday: string;
10367
+ holidays: string;
10368
+ /** @enum {string} */
10369
+ clock: "called_party" | "national" | "unknown";
10370
+ /**
10371
+ * @description Say "required" only for statute/regulation; the rest is guidance.
10372
+ * @enum {string}
10373
+ */
10374
+ basis: "statute" | "regulation" | "code_of_conduct" | "regulator_guidance" | "partial" | "none" | "unknown";
10375
+ note: string;
10376
+ };
10377
+ frequency: string | null;
10378
+ dnc: string;
10379
+ ai_disclosure: string;
10380
+ recording: string;
10381
+ origination: string;
10382
+ /** @enum {string} */
10383
+ origination_kind: "foreign_origin_prohibited" | "local_number_required" | "dedicated_prefix_required" | "registered_series_required" | "own_listed_number_required" | "cli_must_be_presented" | "none_found";
10384
+ penalties: string;
10385
+ /** @description Automated marketing calls are a prohibited class here regardless of consent. */
10386
+ prohibited: boolean;
10387
+ links: {
10388
+ name: string;
10389
+ url: string;
10390
+ }[];
10391
+ last_reviewed: string;
10392
+ }[];
10393
+ };
10278
10394
  LaunchPreviewDto: {
10279
10395
  /** @description A FORECAST of how many would start sending, not a promise: consent and suppression are re-checked at claim time and fail closed. */
10280
10396
  will_send: number;
@@ -10303,6 +10419,8 @@ export interface components {
10303
10419
  language: string;
10304
10420
  status: string;
10305
10421
  }[];
10422
+ /** @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. */
10423
+ regulatory_notice: components["schemas"]["SequenceRegulatoryNoticeDto"] | null;
10306
10424
  };
10307
10425
  SequenceSendersDto: {
10308
10426
  senders: {
@@ -11381,9 +11499,31 @@ export interface components {
11381
11499
  /** Format: uuid */
11382
11500
  id: string;
11383
11501
  };
11502
+ SessionTagOutput: {
11503
+ tag_name: string;
11504
+ /** Format: date-time */
11505
+ created_at: string;
11506
+ };
11507
+ /** @description Current session assignment. AI and unassigned sessions have no assignee ID. */
11508
+ ChatSessionAssignee: {
11509
+ /** @constant */
11510
+ type: "human";
11511
+ /** @description Human user ID, matching the numeric ID in GET /users. */
11512
+ id: number;
11513
+ /** @description Current organization display name, matching GET /users, or null if the user is no longer a member of this organization or cannot be found. The recorded human ID is retained. */
11514
+ name: string | null;
11515
+ } | {
11516
+ /** @constant */
11517
+ type: "ai";
11518
+ } | {
11519
+ /** @constant */
11520
+ type: "none";
11521
+ };
11384
11522
  GetChatSessionOutput: {
11385
11523
  /** Format: uuid */
11386
11524
  id: string;
11525
+ /** @description All tags currently assigned to this session, ordered by tag name. Empty when no tags are assigned. */
11526
+ tags: components["schemas"]["SessionTagOutput"][];
11387
11527
  /** @enum {string} */
11388
11528
  status: "open" | "closed_resolved" | "closed_unresolved";
11389
11529
  /** @description Id of the custom status refining `status`, or null when only the built-in status applies. Resolve it with GET /custom-statuses. */
@@ -11415,7 +11555,12 @@ export interface components {
11415
11555
  } | null;
11416
11556
  };
11417
11557
  language?: string;
11558
+ /**
11559
+ * @deprecated
11560
+ * @description Deprecated: use assignee. Contains the recorded human user ID as a string, or null for AI and unassigned sessions. Use assignee.type to distinguish them. This deprecation applies only to response fields; assignment requests still accept assignee_id.
11561
+ */
11418
11562
  assignee_id?: string | null;
11563
+ assignee: components["schemas"]["ChatSessionAssignee"];
11419
11564
  /** @description Session-level custom data stored on the chat session. */
11420
11565
  custom_data?: {
11421
11566
  [key: string]: string | number | boolean;
@@ -11426,6 +11571,15 @@ export interface components {
11426
11571
  name: string;
11427
11572
  description?: string;
11428
11573
  };
11574
+ /** @description Support team assigned to this session. Null when no team can be resolved within the session organization. */
11575
+ support_team: {
11576
+ /**
11577
+ * Format: uuid
11578
+ * @description Stable team ID, preserved when the team is renamed.
11579
+ */
11580
+ id: string;
11581
+ name: string;
11582
+ } | null;
11429
11583
  handoff?: {
11430
11584
  /** @enum {string} */
11431
11585
  sentiment?: "angry" | "happy" | "neutral";
@@ -11444,6 +11598,8 @@ export interface components {
11444
11598
  created_at: string;
11445
11599
  /** Format: date-time */
11446
11600
  updated_at: string;
11601
+ /** @description Timestamp of the first recorded human reply to this session. Null when no human reply has been recorded. */
11602
+ first_human_message_at: string | null;
11447
11603
  };
11448
11604
  SessionAssigneeUpdateOutput: {
11449
11605
  no_change: boolean;
@@ -11456,11 +11612,6 @@ export interface components {
11456
11612
  no_change: boolean;
11457
11613
  session: components["schemas"]["GetChatSessionOutput"];
11458
11614
  };
11459
- SessionTagOutput: {
11460
- tag_name: string;
11461
- /** Format: date-time */
11462
- created_at: string;
11463
- };
11464
11615
  SessionTagMutationOutput: {
11465
11616
  /** Format: uuid */
11466
11617
  session_id: string;
@@ -11560,6 +11711,10 @@ export interface components {
11560
11711
  id: string;
11561
11712
  name: string;
11562
11713
  }[];
11714
+ /** @default null */
11715
+ pacing_until: string | null;
11716
+ /** @default null */
11717
+ skip_reason: "pacing" | null;
11563
11718
  } | null;
11564
11719
  peers: {
11565
11720
  agent_id: number;
@@ -11577,6 +11732,10 @@ export interface components {
11577
11732
  id: string;
11578
11733
  name: string;
11579
11734
  }[];
11735
+ /** @default null */
11736
+ pacing_until: string | null;
11737
+ /** @default null */
11738
+ skip_reason: "pacing" | null;
11580
11739
  }[];
11581
11740
  /** @default [] */
11582
11741
  required_skills: {
@@ -11913,6 +12072,28 @@ export interface components {
11913
12072
  };
11914
12073
  };
11915
12074
  };
12075
+ ChatSessionFollowUpOutput: {
12076
+ /** @description Follow-up id — stable across the follow-up’s lifetime */
12077
+ id: string;
12078
+ session_id: string;
12079
+ ticket_number: number;
12080
+ prompt: string;
12081
+ /**
12082
+ * Format: date-time
12083
+ * @description When the follow-up fires (UTC)
12084
+ */
12085
+ fire_at: string;
12086
+ is_active: boolean;
12087
+ /** Format: date-time */
12088
+ created_at: string;
12089
+ };
12090
+ ChatSessionFollowUpListOutput: {
12091
+ follow_ups: components["schemas"]["ChatSessionFollowUpOutput"][];
12092
+ limits: {
12093
+ max_active_per_session: number;
12094
+ max_total_per_session: number;
12095
+ };
12096
+ };
11916
12097
  ContactSegment: {
11917
12098
  id: string;
11918
12099
  name: string;
@@ -12159,11 +12340,6 @@ export interface components {
12159
12340
  channel: string;
12160
12341
  /** @description Whether the AI autopilot is enabled on this channel */
12161
12342
  autopilot_enabled: boolean;
12162
- /**
12163
- * @description AI agent version used on this channel
12164
- * @enum {string}
12165
- */
12166
- ai_agent_version: "v1" | "v2";
12167
12343
  }[];
12168
12344
  };
12169
12345
  ProhibitedTopicsResponseDto: {
@@ -12649,7 +12825,7 @@ export interface components {
12649
12825
  * @description Which jsonb bag the key was observed in: contact vs session, verified vs not.
12650
12826
  * @enum {string}
12651
12827
  */
12652
- source: "contact_custom_data" | "contact_non_verified_custom_data" | "session_custom_data" | "session_editable_custom_data";
12828
+ source: "company_custom_data" | "contact_custom_data" | "contact_non_verified_custom_data" | "session_custom_data" | "session_editable_custom_data";
12653
12829
  }[];
12654
12830
  total: number;
12655
12831
  };
@@ -14618,6 +14794,108 @@ export interface operations {
14618
14794
  };
14619
14795
  };
14620
14796
  };
14797
+ listChatSessionFollowUps: {
14798
+ parameters: {
14799
+ query?: never;
14800
+ header?: never;
14801
+ path: {
14802
+ /** @description The unique identifier of the chat session */
14803
+ session_id: string;
14804
+ };
14805
+ cookie?: never;
14806
+ };
14807
+ requestBody?: never;
14808
+ responses: {
14809
+ /** @description Default Response */
14810
+ 200: {
14811
+ headers: {
14812
+ [name: string]: unknown;
14813
+ };
14814
+ content: {
14815
+ "application/json": components["schemas"]["ChatSessionFollowUpListOutput"];
14816
+ };
14817
+ };
14818
+ /** @description Internal Server Error */
14819
+ 500: {
14820
+ headers: {
14821
+ [name: string]: unknown;
14822
+ };
14823
+ content: {
14824
+ "application/json": components["schemas"]["ErrorDto"];
14825
+ };
14826
+ };
14827
+ };
14828
+ };
14829
+ createChatSessionFollowUp: {
14830
+ parameters: {
14831
+ query?: never;
14832
+ header?: never;
14833
+ path: {
14834
+ /** @description The unique identifier of the chat session */
14835
+ session_id: string;
14836
+ };
14837
+ cookie?: never;
14838
+ };
14839
+ requestBody: {
14840
+ content: {
14841
+ "application/json": components["schemas"]["CreateChatSessionFollowUpInput"];
14842
+ };
14843
+ };
14844
+ responses: {
14845
+ /** @description Default Response */
14846
+ 201: {
14847
+ headers: {
14848
+ [name: string]: unknown;
14849
+ };
14850
+ content: {
14851
+ "application/json": components["schemas"]["ChatSessionFollowUpOutput"];
14852
+ };
14853
+ };
14854
+ /** @description Internal Server Error */
14855
+ 500: {
14856
+ headers: {
14857
+ [name: string]: unknown;
14858
+ };
14859
+ content: {
14860
+ "application/json": components["schemas"]["ErrorDto"];
14861
+ };
14862
+ };
14863
+ };
14864
+ };
14865
+ cancelChatSessionFollowUp: {
14866
+ parameters: {
14867
+ query?: never;
14868
+ header?: never;
14869
+ path: {
14870
+ /** @description The unique identifier of the chat session */
14871
+ session_id: string;
14872
+ /** @description The follow-up id returned when it was scheduled */
14873
+ follow_up_id: string;
14874
+ };
14875
+ cookie?: never;
14876
+ };
14877
+ requestBody?: never;
14878
+ responses: {
14879
+ /** @description Default Response */
14880
+ 200: {
14881
+ headers: {
14882
+ [name: string]: unknown;
14883
+ };
14884
+ content: {
14885
+ "application/json": components["schemas"]["ChatSessionFollowUpOutput"];
14886
+ };
14887
+ };
14888
+ /** @description Internal Server Error */
14889
+ 500: {
14890
+ headers: {
14891
+ [name: string]: unknown;
14892
+ };
14893
+ content: {
14894
+ "application/json": components["schemas"]["ErrorDto"];
14895
+ };
14896
+ };
14897
+ };
14898
+ };
14621
14899
  listCompanies: {
14622
14900
  parameters: {
14623
14901
  query?: {
@@ -20576,7 +20854,11 @@ export interface operations {
20576
20854
  };
20577
20855
  cookie?: never;
20578
20856
  };
20579
- requestBody?: never;
20857
+ requestBody: {
20858
+ content: {
20859
+ "application/json": components["schemas"]["LaunchSequenceInputDto"] | null;
20860
+ };
20861
+ };
20580
20862
  responses: {
20581
20863
  /** @description Default Response */
20582
20864
  201: {
@@ -21269,7 +21551,7 @@ export interface operations {
21269
21551
  parameters: {
21270
21552
  query?: {
21271
21553
  /** @description Filter to specific bags; default: all four. */
21272
- sources?: ("contact_custom_data" | "contact_non_verified_custom_data" | "session_custom_data" | "session_editable_custom_data")[];
21554
+ sources?: ("company_custom_data" | "contact_custom_data" | "contact_non_verified_custom_data" | "session_custom_data" | "session_editable_custom_data")[];
21273
21555
  /** @description Case-insensitive substring match on the key. */
21274
21556
  search?: string;
21275
21557
  /** @description Default 500. */