@opencx/mcp 1.15.29 → 1.15.31
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/inbox-view-tools.spec.d.ts +2 -0
- package/dist/inbox-view-tools.spec.d.ts.map +1 -0
- package/dist/inbox-view-tools.spec.js +152 -0
- package/dist/inbox-view-tools.spec.js.map +1 -0
- package/dist/schema.d.ts +613 -17
- package/dist/schema.d.ts.map +1 -1
- package/dist/server.d.ts.map +1 -1
- package/dist/server.js +4 -0
- package/dist/server.js.map +1 -1
- package/dist/tools/audit-logs.d.ts.map +1 -1
- package/dist/tools/audit-logs.js +1 -0
- package/dist/tools/audit-logs.js.map +1 -1
- package/dist/tools/campaign-channel.d.ts.map +1 -1
- package/dist/tools/campaign-channel.js +4 -2
- package/dist/tools/campaign-channel.js.map +1 -1
- package/dist/tools/campaign-spine.d.ts.map +1 -1
- package/dist/tools/campaign-spine.js +46 -0
- package/dist/tools/campaign-spine.js.map +1 -1
- package/dist/tools/email.js +1 -1
- package/dist/tools/email.js.map +1 -1
- package/dist/tools/inbox-views.d.ts +4 -0
- package/dist/tools/inbox-views.d.ts.map +1 -0
- package/dist/tools/inbox-views.js +146 -0
- package/dist/tools/inbox-views.js.map +1 -0
- package/dist/tools/outbound-blocklist.d.ts +4 -0
- package/dist/tools/outbound-blocklist.d.ts.map +1 -0
- package/dist/tools/outbound-blocklist.js +101 -0
- package/dist/tools/outbound-blocklist.js.map +1 -0
- package/dist/tools/phone.js +1 -1
- package/dist/tools/phone.js.map +1 -1
- package/dist/tools/sessions.d.ts.map +1 -1
- package/dist/tools/sessions.js +10 -4
- package/dist/tools/sessions.js.map +1 -1
- package/dist/tools/whatsapp.js +1 -1
- package/dist/tools/whatsapp.js.map +1 -1
- package/package.json +1 -1
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
|
|
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;
|
|
@@ -2433,6 +2433,54 @@ export interface paths {
|
|
|
2433
2433
|
patch: operations["updateCustomStatus"];
|
|
2434
2434
|
trace?: never;
|
|
2435
2435
|
};
|
|
2436
|
+
"/inbox-views": {
|
|
2437
|
+
parameters: {
|
|
2438
|
+
query?: never;
|
|
2439
|
+
header?: never;
|
|
2440
|
+
path?: never;
|
|
2441
|
+
cookie?: never;
|
|
2442
|
+
};
|
|
2443
|
+
/**
|
|
2444
|
+
* List saved inbox views
|
|
2445
|
+
* @description List the saved inbox views the calling user can see: their own, the ones shared with them or their teams, and the organization-wide ones. A saved view is a named session filter set that agents pick from the inbox sidebar.
|
|
2446
|
+
*/
|
|
2447
|
+
get: operations["listInboxViews"];
|
|
2448
|
+
put?: never;
|
|
2449
|
+
/**
|
|
2450
|
+
* Create a saved inbox view
|
|
2451
|
+
* @description Create a named, filtered view of the inbox and share it with the organization, named teams, or named users. The view is evaluated fresh every time it is opened, so `$current_user` assignees and `date.preset` windows stay dynamic. Leave both share lists empty to share the view with the whole organization. Name users and/or teams to restrict it to them, or pass only your own user id to keep it private. Sharing requires the `sessions-shared-views:write` permission — without it a created view is locked to its creator and the share lists on an update are ignored.
|
|
2452
|
+
*/
|
|
2453
|
+
post: operations["createInboxView"];
|
|
2454
|
+
delete?: never;
|
|
2455
|
+
options?: never;
|
|
2456
|
+
head?: never;
|
|
2457
|
+
patch?: never;
|
|
2458
|
+
trace?: never;
|
|
2459
|
+
};
|
|
2460
|
+
"/inbox-views/{id}": {
|
|
2461
|
+
parameters: {
|
|
2462
|
+
query?: never;
|
|
2463
|
+
header?: never;
|
|
2464
|
+
path?: never;
|
|
2465
|
+
cookie?: never;
|
|
2466
|
+
};
|
|
2467
|
+
get?: never;
|
|
2468
|
+
put?: never;
|
|
2469
|
+
post?: never;
|
|
2470
|
+
/**
|
|
2471
|
+
* Delete a saved inbox view
|
|
2472
|
+
* @description Delete a saved view. It disappears from the sidebar for everyone it was shared with; the sessions it matched are untouched. Requires the same permission as updating it (see `can_delete`).
|
|
2473
|
+
*/
|
|
2474
|
+
delete: operations["deleteInboxView"];
|
|
2475
|
+
options?: never;
|
|
2476
|
+
head?: never;
|
|
2477
|
+
/**
|
|
2478
|
+
* Update a saved inbox view
|
|
2479
|
+
* @description Update any subset of a saved view. Omitted fields are left unchanged; sending `filters` replaces the saved query outright. Only the view's creator, or someone with the `sessions-shared-views:write` permission editing a shared view, may update it (see `can_edit`).
|
|
2480
|
+
*/
|
|
2481
|
+
patch: operations["updateInboxView"];
|
|
2482
|
+
trace?: never;
|
|
2483
|
+
};
|
|
2436
2484
|
"/workflows/definitions": {
|
|
2437
2485
|
parameters: {
|
|
2438
2486
|
query?: never;
|
|
@@ -3180,7 +3228,7 @@ export interface paths {
|
|
|
3180
3228
|
};
|
|
3181
3229
|
/**
|
|
3182
3230
|
* List the mailboxes this org can bind as sequence email senders
|
|
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
|
|
3231
|
+
* @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.
|
|
3184
3232
|
*/
|
|
3185
3233
|
get: operations["listEmailSenders"];
|
|
3186
3234
|
put?: never;
|
|
@@ -3534,6 +3582,48 @@ export interface paths {
|
|
|
3534
3582
|
patch?: never;
|
|
3535
3583
|
trace?: never;
|
|
3536
3584
|
};
|
|
3585
|
+
"/sequences/{sequenceId}/contacts/{contactId}/continue": {
|
|
3586
|
+
parameters: {
|
|
3587
|
+
query?: never;
|
|
3588
|
+
header?: never;
|
|
3589
|
+
path?: never;
|
|
3590
|
+
cookie?: never;
|
|
3591
|
+
};
|
|
3592
|
+
get?: never;
|
|
3593
|
+
put?: never;
|
|
3594
|
+
/**
|
|
3595
|
+
* Continue the sequence for a person a reply took out of it
|
|
3596
|
+
* @description A reply concludes a journey — the person exits as "replied" and receives no further steps. When that reply was not real engagement (an out-of-office, a "who is this?"), this puts them back in: active at the NEXT step, with that step's wait counted from now. The step they answered is never re-sent.
|
|
3597
|
+
*
|
|
3598
|
+
* Never an error for "cannot continue": `nothing_to_continue` when they replied on the last step or the journey already completed; `not_resumable` when the journey is still in play or ended by suppression (consent is not overridden here); `contact_not_found` when there is no live enrollment.
|
|
3599
|
+
*/
|
|
3600
|
+
post: operations["continueSequenceContact"];
|
|
3601
|
+
delete?: never;
|
|
3602
|
+
options?: never;
|
|
3603
|
+
head?: never;
|
|
3604
|
+
patch?: never;
|
|
3605
|
+
trace?: never;
|
|
3606
|
+
};
|
|
3607
|
+
"/sequences/contacts/{contactId}/sequences": {
|
|
3608
|
+
parameters: {
|
|
3609
|
+
query?: never;
|
|
3610
|
+
header?: never;
|
|
3611
|
+
path?: never;
|
|
3612
|
+
cookie?: never;
|
|
3613
|
+
};
|
|
3614
|
+
/**
|
|
3615
|
+
* Every sequence a contact is in, across the workspace
|
|
3616
|
+
* @description The cross-sequence read: which sequences hold this contact, their status in each (candidate, active, parked, exited, completed), why they left or parked, and the step they are on. Live enrollments only — a removed person is off the list. Use it before enrolling someone, or when a message arrives and you need to know whether they are mid-sequence.
|
|
3617
|
+
*/
|
|
3618
|
+
get: operations["listContactSequences"];
|
|
3619
|
+
put?: never;
|
|
3620
|
+
post?: never;
|
|
3621
|
+
delete?: never;
|
|
3622
|
+
options?: never;
|
|
3623
|
+
head?: never;
|
|
3624
|
+
patch?: never;
|
|
3625
|
+
trace?: never;
|
|
3626
|
+
};
|
|
3537
3627
|
"/sequences/{sequenceId}/contacts/exit": {
|
|
3538
3628
|
parameters: {
|
|
3539
3629
|
query?: never;
|
|
@@ -7268,7 +7358,9 @@ export interface components {
|
|
|
7268
7358
|
};
|
|
7269
7359
|
SessionAssigneeUpdateInput: {
|
|
7270
7360
|
/** @description Agent user ID to assign, or null to unassign the session */
|
|
7271
|
-
assignee_id
|
|
7361
|
+
assignee_id?: number | null;
|
|
7362
|
+
/** @description Email of the agent to assign, matched case-insensitively against this organization’s members, or null to unassign the session */
|
|
7363
|
+
assignee_email?: string | null;
|
|
7272
7364
|
};
|
|
7273
7365
|
SessionTeamTransferInput: {
|
|
7274
7366
|
/**
|
|
@@ -7427,6 +7519,11 @@ export interface components {
|
|
|
7427
7519
|
channel: "web" | "email" | "phone" | "whatsapp" | "slack" | "sms" | "instagram" | "messenger" | "api" | "web_voice";
|
|
7428
7520
|
/** @description Set true to enable autopilot, false to disable */
|
|
7429
7521
|
autopilot_enabled: boolean;
|
|
7522
|
+
/**
|
|
7523
|
+
* @description AI agent version to use for this channel
|
|
7524
|
+
* @enum {string}
|
|
7525
|
+
*/
|
|
7526
|
+
ai_agent_version?: "v1" | "v2";
|
|
7430
7527
|
};
|
|
7431
7528
|
UpdateProhibitedTopicsInputDto: {
|
|
7432
7529
|
/** @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. */
|
|
@@ -7532,6 +7629,162 @@ export interface components {
|
|
|
7532
7629
|
/** @description Inline SVG markup for the badge icon. null restores the default icon; omit to leave unchanged. */
|
|
7533
7630
|
icon?: string | null;
|
|
7534
7631
|
};
|
|
7632
|
+
CreateInboxViewDto: {
|
|
7633
|
+
/** @description Name shown in the inbox view picker */
|
|
7634
|
+
name: string;
|
|
7635
|
+
/**
|
|
7636
|
+
* @description Filters the view applies, ANDed together. Omit for a view over every session. Same vocabulary as POST /chat/sessions/filter, plus the saved-view-only `$current_user` assignee token and rolling `date.preset`.
|
|
7637
|
+
* @default {}
|
|
7638
|
+
*/
|
|
7639
|
+
filters: {
|
|
7640
|
+
/** @description Date range filter on session creation time */
|
|
7641
|
+
date?: {
|
|
7642
|
+
/**
|
|
7643
|
+
* Format: date-time
|
|
7644
|
+
* @description Start date (ISO 8601)
|
|
7645
|
+
*/
|
|
7646
|
+
from?: string;
|
|
7647
|
+
/**
|
|
7648
|
+
* Format: date-time
|
|
7649
|
+
* @description End date (ISO 8601)
|
|
7650
|
+
*/
|
|
7651
|
+
to?: string;
|
|
7652
|
+
/**
|
|
7653
|
+
* @description Rolling window resolved every time the view is opened: "today", "last_3_days" or "last_7_days". Mutually exclusive with from/to.
|
|
7654
|
+
* @enum {string}
|
|
7655
|
+
*/
|
|
7656
|
+
preset?: "today" | "last_3_days" | "last_7_days";
|
|
7657
|
+
};
|
|
7658
|
+
/** @description Filter by channels (web, email, whatsapp, phone_voice, sms, slack, etc.) */
|
|
7659
|
+
channels?: components["schemas"]["SessionChannel"][];
|
|
7660
|
+
/** @description Filter by built-in status codes (0 = open, 1 = closed_resolved, 2 = closed_unresolved) */
|
|
7661
|
+
status?: number[];
|
|
7662
|
+
/** @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. */
|
|
7663
|
+
sub_status_ids?: string[];
|
|
7664
|
+
/** @description Filter by AI closure type (e.g. "handed_off", "resolved", "no_resolution") */
|
|
7665
|
+
ai_closure?: ("assumed_resolved" | "handed_off" | "resolved")[];
|
|
7666
|
+
/** @description Filter by customer sentiment (angry, happy, neutral) */
|
|
7667
|
+
sentiment?: ("angry" | "happy" | "neutral")[];
|
|
7668
|
+
/** @description Filter by assignee user IDs (empty array = unassigned). The "$current_user" token resolves to whoever opens the view, so one shared view can mean "assigned to me" for every teammate. */
|
|
7669
|
+
assignees?: (number | "$current_user")[];
|
|
7670
|
+
/** @description Filter by team/group IDs */
|
|
7671
|
+
team_ids?: string[];
|
|
7672
|
+
/** @description Filter by contact IDs */
|
|
7673
|
+
contact_ids?: string[];
|
|
7674
|
+
/** @description Filter by exact ticket number */
|
|
7675
|
+
ticket_number?: number;
|
|
7676
|
+
/** @description Filter by session language codes */
|
|
7677
|
+
language?: string[];
|
|
7678
|
+
/** @description Filter by tag names (sessions must have ALL specified tags) */
|
|
7679
|
+
tags?: string[];
|
|
7680
|
+
/**
|
|
7681
|
+
* @description Filter by who the session is waiting on
|
|
7682
|
+
* @enum {string}
|
|
7683
|
+
*/
|
|
7684
|
+
waiting_on?: "customers" | "human_agents";
|
|
7685
|
+
/** @description Filter by session custom data (OR between objects, AND within each object) */
|
|
7686
|
+
custom_data?: {
|
|
7687
|
+
[key: string]: string;
|
|
7688
|
+
}[];
|
|
7689
|
+
};
|
|
7690
|
+
/**
|
|
7691
|
+
* @description Sort field (default: last_message_at)
|
|
7692
|
+
* @enum {string}
|
|
7693
|
+
*/
|
|
7694
|
+
sort_by?: "last_message_at" | "created_at" | "sla_urgency";
|
|
7695
|
+
/**
|
|
7696
|
+
* @description Sort direction (default: desc)
|
|
7697
|
+
* @enum {string}
|
|
7698
|
+
*/
|
|
7699
|
+
sort_order?: "asc" | "desc";
|
|
7700
|
+
/**
|
|
7701
|
+
* @description Group the session list by this field. Omit for a flat list.
|
|
7702
|
+
* @enum {string}
|
|
7703
|
+
*/
|
|
7704
|
+
group_by?: "channel" | "assignee_id" | "status" | "ai_closure_type" | "language" | "inbox_id";
|
|
7705
|
+
/**
|
|
7706
|
+
* @description User ids the view is shared with. Leave both share lists empty to share the view with the whole organization. Name users and/or teams to restrict it to them, or pass only your own user id to keep it private. Sharing requires the `sessions-shared-views:write` permission — without it a created view is locked to its creator and the share lists on an update are ignored.
|
|
7707
|
+
* @default []
|
|
7708
|
+
*/
|
|
7709
|
+
shared_with_user_ids: number[];
|
|
7710
|
+
/**
|
|
7711
|
+
* @description Team ids (from GET /teams) whose members can see the view.
|
|
7712
|
+
* @default []
|
|
7713
|
+
*/
|
|
7714
|
+
shared_with_team_ids: string[];
|
|
7715
|
+
};
|
|
7716
|
+
UpdateInboxViewDto: {
|
|
7717
|
+
/** @description New name for the view */
|
|
7718
|
+
name?: string;
|
|
7719
|
+
/** @description Replaces the entire saved filter set — including the OR/exclude groups of an `advanced` view. Omit to leave the query untouched. */
|
|
7720
|
+
filters?: {
|
|
7721
|
+
/** @description Date range filter on session creation time */
|
|
7722
|
+
date?: {
|
|
7723
|
+
/**
|
|
7724
|
+
* Format: date-time
|
|
7725
|
+
* @description Start date (ISO 8601)
|
|
7726
|
+
*/
|
|
7727
|
+
from?: string;
|
|
7728
|
+
/**
|
|
7729
|
+
* Format: date-time
|
|
7730
|
+
* @description End date (ISO 8601)
|
|
7731
|
+
*/
|
|
7732
|
+
to?: string;
|
|
7733
|
+
/**
|
|
7734
|
+
* @description Rolling window resolved every time the view is opened: "today", "last_3_days" or "last_7_days". Mutually exclusive with from/to.
|
|
7735
|
+
* @enum {string}
|
|
7736
|
+
*/
|
|
7737
|
+
preset?: "today" | "last_3_days" | "last_7_days";
|
|
7738
|
+
};
|
|
7739
|
+
/** @description Filter by channels (web, email, whatsapp, phone_voice, sms, slack, etc.) */
|
|
7740
|
+
channels?: components["schemas"]["SessionChannel"][];
|
|
7741
|
+
/** @description Filter by built-in status codes (0 = open, 1 = closed_resolved, 2 = closed_unresolved) */
|
|
7742
|
+
status?: number[];
|
|
7743
|
+
/** @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. */
|
|
7744
|
+
sub_status_ids?: string[];
|
|
7745
|
+
/** @description Filter by AI closure type (e.g. "handed_off", "resolved", "no_resolution") */
|
|
7746
|
+
ai_closure?: ("assumed_resolved" | "handed_off" | "resolved")[];
|
|
7747
|
+
/** @description Filter by customer sentiment (angry, happy, neutral) */
|
|
7748
|
+
sentiment?: ("angry" | "happy" | "neutral")[];
|
|
7749
|
+
/** @description Filter by assignee user IDs (empty array = unassigned). The "$current_user" token resolves to whoever opens the view, so one shared view can mean "assigned to me" for every teammate. */
|
|
7750
|
+
assignees?: (number | "$current_user")[];
|
|
7751
|
+
/** @description Filter by team/group IDs */
|
|
7752
|
+
team_ids?: string[];
|
|
7753
|
+
/** @description Filter by contact IDs */
|
|
7754
|
+
contact_ids?: string[];
|
|
7755
|
+
/** @description Filter by exact ticket number */
|
|
7756
|
+
ticket_number?: number;
|
|
7757
|
+
/** @description Filter by session language codes */
|
|
7758
|
+
language?: string[];
|
|
7759
|
+
/** @description Filter by tag names (sessions must have ALL specified tags) */
|
|
7760
|
+
tags?: string[];
|
|
7761
|
+
/**
|
|
7762
|
+
* @description Filter by who the session is waiting on
|
|
7763
|
+
* @enum {string}
|
|
7764
|
+
*/
|
|
7765
|
+
waiting_on?: "customers" | "human_agents";
|
|
7766
|
+
/** @description Filter by session custom data (OR between objects, AND within each object) */
|
|
7767
|
+
custom_data?: {
|
|
7768
|
+
[key: string]: string;
|
|
7769
|
+
}[];
|
|
7770
|
+
};
|
|
7771
|
+
/**
|
|
7772
|
+
* @description New sort field
|
|
7773
|
+
* @enum {string}
|
|
7774
|
+
*/
|
|
7775
|
+
sort_by?: "last_message_at" | "created_at" | "sla_urgency";
|
|
7776
|
+
/**
|
|
7777
|
+
* @description New sort direction
|
|
7778
|
+
* @enum {string}
|
|
7779
|
+
*/
|
|
7780
|
+
sort_order?: "asc" | "desc";
|
|
7781
|
+
/** @description New grouping field; null removes grouping. Omit to leave it unchanged. */
|
|
7782
|
+
group_by?: ("channel" | "assignee_id" | "status" | "ai_closure_type" | "language" | "inbox_id") | null;
|
|
7783
|
+
/** @description User ids the view is shared with. Leave both share lists empty to share the view with the whole organization. Name users and/or teams to restrict it to them, or pass only your own user id to keep it private. Sharing requires the `sessions-shared-views:write` permission — without it a created view is locked to its creator and the share lists on an update are ignored. */
|
|
7784
|
+
shared_with_user_ids?: number[];
|
|
7785
|
+
/** @description Team ids (from GET /teams) whose members can see the view. */
|
|
7786
|
+
shared_with_team_ids?: string[];
|
|
7787
|
+
};
|
|
7535
7788
|
CreateWorkflowPublicInput: {
|
|
7536
7789
|
/** @description Workflow name */
|
|
7537
7790
|
name: string;
|
|
@@ -7541,7 +7794,7 @@ export interface components {
|
|
|
7541
7794
|
* @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.
|
|
7542
7795
|
* @enum {string}
|
|
7543
7796
|
*/
|
|
7544
|
-
trigger_type: "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" | "
|
|
7797
|
+
trigger_type: "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";
|
|
7545
7798
|
/** @description Trigger-specific configuration (e.g. cron expression for cron-trigger) */
|
|
7546
7799
|
trigger_configuration?: unknown | null;
|
|
7547
7800
|
/** @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). */
|
|
@@ -7558,7 +7811,7 @@ export interface components {
|
|
|
7558
7811
|
* @description New trigger type
|
|
7559
7812
|
* @enum {string}
|
|
7560
7813
|
*/
|
|
7561
|
-
trigger_type?: "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" | "
|
|
7814
|
+
trigger_type?: "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";
|
|
7562
7815
|
/** @description New trigger configuration */
|
|
7563
7816
|
trigger_configuration?: unknown | null;
|
|
7564
7817
|
/** @description New workflow step/block definitions (replaces existing blocks) */
|
|
@@ -7571,7 +7824,7 @@ export interface components {
|
|
|
7571
7824
|
* @description Trigger type to validate against
|
|
7572
7825
|
* @enum {string}
|
|
7573
7826
|
*/
|
|
7574
|
-
trigger_type: "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" | "
|
|
7827
|
+
trigger_type: "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";
|
|
7575
7828
|
/** @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. */
|
|
7576
7829
|
trigger_configuration?: unknown | null;
|
|
7577
7830
|
/** @description Workflow blocks to validate */
|
|
@@ -7584,7 +7837,7 @@ export interface components {
|
|
|
7584
7837
|
* @description Trigger type whose payload shape this synthetic payload should match
|
|
7585
7838
|
* @enum {string}
|
|
7586
7839
|
*/
|
|
7587
|
-
type: "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" | "
|
|
7840
|
+
type: "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";
|
|
7588
7841
|
payload: unknown;
|
|
7589
7842
|
};
|
|
7590
7843
|
};
|
|
@@ -8357,7 +8610,7 @@ export interface components {
|
|
|
8357
8610
|
/** @constant */
|
|
8358
8611
|
type: "response_skipped";
|
|
8359
8612
|
/** @enum {string} */
|
|
8360
|
-
reason?: "empty_response" | "potential_answers_dead_end" | "silent_handoff" | "assist_human_handling_recommended" | "superseded_by_newer_run" | "interrupted" | "flagged_as_spam";
|
|
8613
|
+
reason?: "empty_response" | "potential_answers_dead_end" | "silent_handoff" | "assist_human_handling_recommended" | "superseded_by_newer_run" | "interrupted" | "answered_in_narration" | "steered_into_live_turn" | "session_busy" | "flagged_as_spam";
|
|
8361
8614
|
reasoning?: ({
|
|
8362
8615
|
/** @constant */
|
|
8363
8616
|
type: "reasoning";
|
|
@@ -8660,7 +8913,7 @@ export interface components {
|
|
|
8660
8913
|
}) | null;
|
|
8661
8914
|
knowledgebase_called?: boolean | null;
|
|
8662
8915
|
/** @enum {string} */
|
|
8663
|
-
type: "agent_assigned_by_integration" | "agent_assigned_by_system" | "agent_assigned_by_user" | "agent_changed" | "agent_comment" | "agent_initiated_session" | "agent_joined" | "agent_message" | "agent_reopened_session" | "agent_took_session_from_ai" | "agent_unassigned_by_integration" | "agent_unassigned_by_system" | "agent_unassigned_by_user" | "ai_assumed_the_session_resolved" | "ai_decided_to_not_reply" | "ai_decided_to_resolve_the_issue" | "ai_reopened_session" | "ai_response_cancelled" | "ai_resumed_by_system" | "ai_suggestion" | "call_history" | "call_transferred" | "closed_resolved_by_agent" | "closed_resolved_by_api" | "closed_resolved_by_contact" | "closed_resolved_by_integration" | "closed_resolved_by_system" | "closed_unresolved_by_agent" | "closed_unresolved_by_api" | "closed_unresolved_by_system" | "contact_data_updated" | "csat_request_cancelled" | "csat_requested" | "csat_submitted" | "email_draft_message" | "handoff" | "handoff_to_salesforce_miaw" | "handoff_to_zendesk" | "integration_reopened_session" | "message" | "pii_attachment_removed" | "prohibited_topic_detected" | "quoted_content_modified" | "salesforce_fields_updated" | "sequence_message" | "session_forwarded" | "session_language_changed_by_agent" | "session_language_changed_by_api" | "session_language_changed_by_integration" | "session_language_changed_by_system" | "skills_added_by_system" | "sla_applied_by_agent" | "sla_applied_by_system" | "sla_first_reply_breached" | "sla_first_reply_completed_after_breach" | "sla_first_reply_fulfilled" | "sla_first_reply_metric_started" | "sla_freezed_office_hours_ended" | "sla_freezed_snoozed" | "sla_next_reply_breached" | "sla_next_reply_completed_after_breach" | "sla_next_reply_fulfilled" | "sla_next_reply_metric_started" | "sla_removed_by_agent" | "sla_removed_by_system" | "sla_resolution_breached" | "sla_resolution_completed_after_breach" | "sla_resolution_fulfilled" | "sla_resolution_metric_started" | "sla_resolution_paused_resolved" | "sla_resolution_paused_waiting_on_customer" | "sla_resolution_resumed_customer_replied" | "sla_resolution_resumed_reopened" | "sla_resumed_office_hours_started" | "sla_resumed_snooze_cancelled" | "sla_resumed_snooze_expired" | "state_checkpoint" | "sub_session_created" | "sub_session_linked_by_agent" | "sub_session_linked_by_api" | "sub_session_linked_by_integration" | "sub_session_linked_by_system" | "sub_session_unlinked_by_agent" | "sub_session_unlinked_by_api" | "sub_session_unlinked_by_integration" | "sub_session_unlinked_by_system" | "sub_status_removed_by_agent" | "sub_status_removed_by_api" | "sub_status_removed_by_integration" | "sub_status_removed_by_system" | "sub_status_set_by_agent" | "sub_status_set_by_api" | "sub_status_set_by_integration" | "sub_status_set_by_system" | "system_reopened_session" | "tag_added_by_agent" | "tag_added_by_api" | "tag_added_by_integration" | "tag_added_by_system" | "tag_removed_by_agent" | "tag_removed_by_api" | "tag_removed_by_integration" | "tag_removed_by_system" | "team_assigned_by_integration" | "team_assigned_by_system" | "team_assigned_by_user" | "team_unassigned_by_integration" | "team_unassigned_by_system" | "team_unassigned_by_user" | "user_confirmed_the_session_resolved" | "workflow_message" | "workflow_note" | "workflow_triggered";
|
|
8916
|
+
type: "agent_assigned_by_integration" | "agent_assigned_by_system" | "agent_assigned_by_user" | "agent_changed" | "agent_comment" | "agent_initiated_session" | "agent_joined" | "agent_message" | "agent_reopened_session" | "agent_took_session_from_ai" | "agent_unassigned_by_integration" | "agent_unassigned_by_system" | "agent_unassigned_by_user" | "ai_assumed_the_session_resolved" | "ai_decided_to_not_reply" | "ai_decided_to_resolve_the_issue" | "ai_follow_up_cancelled" | "ai_follow_up_fired" | "ai_follow_up_scheduled" | "ai_reopened_session" | "ai_response_cancelled" | "ai_resumed_by_system" | "ai_suggestion" | "call_history" | "call_transferred" | "closed_resolved_by_agent" | "closed_resolved_by_api" | "closed_resolved_by_contact" | "closed_resolved_by_integration" | "closed_resolved_by_system" | "closed_unresolved_by_agent" | "closed_unresolved_by_api" | "closed_unresolved_by_system" | "contact_data_updated" | "csat_request_cancelled" | "csat_requested" | "csat_submitted" | "email_draft_message" | "handoff" | "handoff_to_salesforce_miaw" | "handoff_to_third_party_failed" | "handoff_to_zendesk" | "integration_reopened_session" | "message" | "pii_attachment_removed" | "prohibited_topic_detected" | "quoted_content_modified" | "salesforce_fields_updated" | "sequence_message" | "session_forwarded" | "session_language_changed_by_agent" | "session_language_changed_by_api" | "session_language_changed_by_integration" | "session_language_changed_by_system" | "skills_added_by_system" | "sla_applied_by_agent" | "sla_applied_by_system" | "sla_first_reply_breached" | "sla_first_reply_completed_after_breach" | "sla_first_reply_fulfilled" | "sla_first_reply_metric_started" | "sla_freezed_office_hours_ended" | "sla_freezed_snoozed" | "sla_next_reply_breached" | "sla_next_reply_completed_after_breach" | "sla_next_reply_fulfilled" | "sla_next_reply_metric_started" | "sla_removed_by_agent" | "sla_removed_by_system" | "sla_resolution_breached" | "sla_resolution_completed_after_breach" | "sla_resolution_fulfilled" | "sla_resolution_metric_started" | "sla_resolution_paused_resolved" | "sla_resolution_paused_waiting_on_customer" | "sla_resolution_resumed_customer_replied" | "sla_resolution_resumed_reopened" | "sla_resumed_office_hours_started" | "sla_resumed_snooze_cancelled" | "sla_resumed_snooze_expired" | "state_checkpoint" | "sub_session_created" | "sub_session_linked_by_agent" | "sub_session_linked_by_api" | "sub_session_linked_by_integration" | "sub_session_linked_by_system" | "sub_session_unlinked_by_agent" | "sub_session_unlinked_by_api" | "sub_session_unlinked_by_integration" | "sub_session_unlinked_by_system" | "sub_status_removed_by_agent" | "sub_status_removed_by_api" | "sub_status_removed_by_integration" | "sub_status_removed_by_system" | "sub_status_set_by_agent" | "sub_status_set_by_api" | "sub_status_set_by_integration" | "sub_status_set_by_system" | "system_reopened_session" | "tag_added_by_agent" | "tag_added_by_api" | "tag_added_by_integration" | "tag_added_by_system" | "tag_removed_by_agent" | "tag_removed_by_api" | "tag_removed_by_integration" | "tag_removed_by_system" | "team_assigned_by_integration" | "team_assigned_by_system" | "team_assigned_by_user" | "team_unassigned_by_integration" | "team_unassigned_by_system" | "team_unassigned_by_user" | "user_confirmed_the_session_resolved" | "workflow_message" | "workflow_note" | "workflow_triggered";
|
|
8664
8917
|
extra_params?: {
|
|
8665
8918
|
[key: string]: unknown;
|
|
8666
8919
|
} | null;
|
|
@@ -9947,6 +10200,28 @@ export interface components {
|
|
|
9947
10200
|
fit: null;
|
|
9948
10201
|
previous_fit: number | null;
|
|
9949
10202
|
};
|
|
10203
|
+
ContinueSequenceContactOutputDto: {
|
|
10204
|
+
/** @enum {string} */
|
|
10205
|
+
outcome: "resumed" | "nothing_to_continue" | "not_resumable" | "contact_not_found";
|
|
10206
|
+
contact_id: string | null;
|
|
10207
|
+
next_step_index: number | null;
|
|
10208
|
+
};
|
|
10209
|
+
ContactSequencesDto: {
|
|
10210
|
+
sequences: {
|
|
10211
|
+
/** Format: uuid */
|
|
10212
|
+
sequence_id: string;
|
|
10213
|
+
sequence_name: string;
|
|
10214
|
+
/** @enum {string} */
|
|
10215
|
+
sequence_status: "draft" | "active" | "paused";
|
|
10216
|
+
/** @enum {string} */
|
|
10217
|
+
status: "candidate" | "active" | "parked" | "exited" | "completed";
|
|
10218
|
+
exit_reason: ("replied" | "suppressed") | null;
|
|
10219
|
+
park_reason: ("needs_data" | "unsendable_person" | "template_broken") | null;
|
|
10220
|
+
next_step_index: number;
|
|
10221
|
+
/** Format: date-time */
|
|
10222
|
+
enrolled_at: string;
|
|
10223
|
+
}[];
|
|
10224
|
+
};
|
|
9950
10225
|
MailboxHealthDto: {
|
|
9951
10226
|
warmupStatus: string | null;
|
|
9952
10227
|
inboxRate: number | null;
|
|
@@ -11497,9 +11772,31 @@ export interface components {
|
|
|
11497
11772
|
/** Format: uuid */
|
|
11498
11773
|
id: string;
|
|
11499
11774
|
};
|
|
11775
|
+
SessionTagOutput: {
|
|
11776
|
+
tag_name: string;
|
|
11777
|
+
/** Format: date-time */
|
|
11778
|
+
created_at: string;
|
|
11779
|
+
};
|
|
11780
|
+
/** @description Current session assignment. AI and unassigned sessions have no assignee ID. */
|
|
11781
|
+
ChatSessionAssignee: {
|
|
11782
|
+
/** @constant */
|
|
11783
|
+
type: "human";
|
|
11784
|
+
/** @description Human user ID, matching the numeric ID in GET /users. */
|
|
11785
|
+
id: number;
|
|
11786
|
+
/** @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. */
|
|
11787
|
+
name: string | null;
|
|
11788
|
+
} | {
|
|
11789
|
+
/** @constant */
|
|
11790
|
+
type: "ai";
|
|
11791
|
+
} | {
|
|
11792
|
+
/** @constant */
|
|
11793
|
+
type: "none";
|
|
11794
|
+
};
|
|
11500
11795
|
GetChatSessionOutput: {
|
|
11501
11796
|
/** Format: uuid */
|
|
11502
11797
|
id: string;
|
|
11798
|
+
/** @description All tags currently assigned to this session, ordered by tag name. Empty when no tags are assigned. */
|
|
11799
|
+
tags: components["schemas"]["SessionTagOutput"][];
|
|
11503
11800
|
/** @enum {string} */
|
|
11504
11801
|
status: "open" | "closed_resolved" | "closed_unresolved";
|
|
11505
11802
|
/** @description Id of the custom status refining `status`, or null when only the built-in status applies. Resolve it with GET /custom-statuses. */
|
|
@@ -11531,7 +11828,12 @@ export interface components {
|
|
|
11531
11828
|
} | null;
|
|
11532
11829
|
};
|
|
11533
11830
|
language?: string;
|
|
11831
|
+
/**
|
|
11832
|
+
* @deprecated
|
|
11833
|
+
* @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.
|
|
11834
|
+
*/
|
|
11534
11835
|
assignee_id?: string | null;
|
|
11836
|
+
assignee: components["schemas"]["ChatSessionAssignee"];
|
|
11535
11837
|
/** @description Session-level custom data stored on the chat session. */
|
|
11536
11838
|
custom_data?: {
|
|
11537
11839
|
[key: string]: string | number | boolean;
|
|
@@ -11542,6 +11844,15 @@ export interface components {
|
|
|
11542
11844
|
name: string;
|
|
11543
11845
|
description?: string;
|
|
11544
11846
|
};
|
|
11847
|
+
/** @description Support team assigned to this session. Null when no team can be resolved within the session organization. */
|
|
11848
|
+
support_team: {
|
|
11849
|
+
/**
|
|
11850
|
+
* Format: uuid
|
|
11851
|
+
* @description Stable team ID, preserved when the team is renamed.
|
|
11852
|
+
*/
|
|
11853
|
+
id: string;
|
|
11854
|
+
name: string;
|
|
11855
|
+
} | null;
|
|
11545
11856
|
handoff?: {
|
|
11546
11857
|
/** @enum {string} */
|
|
11547
11858
|
sentiment?: "angry" | "happy" | "neutral";
|
|
@@ -11560,6 +11871,8 @@ export interface components {
|
|
|
11560
11871
|
created_at: string;
|
|
11561
11872
|
/** Format: date-time */
|
|
11562
11873
|
updated_at: string;
|
|
11874
|
+
/** @description Timestamp of the first recorded human reply to this session. Null when no human reply has been recorded. */
|
|
11875
|
+
first_human_message_at: string | null;
|
|
11563
11876
|
};
|
|
11564
11877
|
SessionAssigneeUpdateOutput: {
|
|
11565
11878
|
no_change: boolean;
|
|
@@ -11572,11 +11885,6 @@ export interface components {
|
|
|
11572
11885
|
no_change: boolean;
|
|
11573
11886
|
session: components["schemas"]["GetChatSessionOutput"];
|
|
11574
11887
|
};
|
|
11575
|
-
SessionTagOutput: {
|
|
11576
|
-
tag_name: string;
|
|
11577
|
-
/** Format: date-time */
|
|
11578
|
-
created_at: string;
|
|
11579
|
-
};
|
|
11580
11888
|
SessionTagMutationOutput: {
|
|
11581
11889
|
/** Format: uuid */
|
|
11582
11890
|
session_id: string;
|
|
@@ -11591,7 +11899,7 @@ export interface components {
|
|
|
11591
11899
|
} | ({
|
|
11592
11900
|
/** @constant */
|
|
11593
11901
|
success: true;
|
|
11594
|
-
code?: string | "session_assigned_to_human_agent" | "response_cancelled" | "skipping_unuseful_response" | "duplicate_message_ignored" | "ai_response_skipped_by_workflow" | "ai_skipped_spam";
|
|
11902
|
+
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";
|
|
11595
11903
|
autopilotResponse?: {
|
|
11596
11904
|
/** @constant */
|
|
11597
11905
|
type: "text";
|
|
@@ -11744,6 +12052,7 @@ export interface components {
|
|
|
11744
12052
|
mightSolveUserIssue: boolean;
|
|
11745
12053
|
};
|
|
11746
12054
|
sessionIsHandedOff?: boolean;
|
|
12055
|
+
steeredIntoTurnId?: string;
|
|
11747
12056
|
resolveArgs?: {
|
|
11748
12057
|
/** @description Summary of the conversation with the user to be viewed by a human agent. */
|
|
11749
12058
|
summary: string;
|
|
@@ -12048,6 +12357,10 @@ export interface components {
|
|
|
12048
12357
|
* @description When the follow-up fires (UTC)
|
|
12049
12358
|
*/
|
|
12050
12359
|
fire_at: string;
|
|
12360
|
+
repeat: {
|
|
12361
|
+
every_minutes: number;
|
|
12362
|
+
times: number;
|
|
12363
|
+
} | null;
|
|
12051
12364
|
is_active: boolean;
|
|
12052
12365
|
/** Format: date-time */
|
|
12053
12366
|
created_at: string;
|
|
@@ -12305,6 +12618,11 @@ export interface components {
|
|
|
12305
12618
|
channel: string;
|
|
12306
12619
|
/** @description Whether the AI autopilot is enabled on this channel */
|
|
12307
12620
|
autopilot_enabled: boolean;
|
|
12621
|
+
/**
|
|
12622
|
+
* @description AI agent version used on this channel
|
|
12623
|
+
* @enum {string}
|
|
12624
|
+
*/
|
|
12625
|
+
ai_agent_version: "v1" | "v2";
|
|
12308
12626
|
}[];
|
|
12309
12627
|
};
|
|
12310
12628
|
ProhibitedTopicsResponseDto: {
|
|
@@ -12490,6 +12808,87 @@ export interface components {
|
|
|
12490
12808
|
/** Format: date-time */
|
|
12491
12809
|
updated_at: string;
|
|
12492
12810
|
};
|
|
12811
|
+
InboxViewDto: {
|
|
12812
|
+
/** Format: uuid */
|
|
12813
|
+
id: string;
|
|
12814
|
+
/** @description Name shown in the inbox view picker */
|
|
12815
|
+
name: string;
|
|
12816
|
+
/** @description The saved filter set. `null` when `advanced` is true — the view uses filters this API cannot express. */
|
|
12817
|
+
filters: {
|
|
12818
|
+
/** @description Date range filter on session creation time */
|
|
12819
|
+
date?: {
|
|
12820
|
+
/**
|
|
12821
|
+
* Format: date-time
|
|
12822
|
+
* @description Start date (ISO 8601)
|
|
12823
|
+
*/
|
|
12824
|
+
from?: string;
|
|
12825
|
+
/**
|
|
12826
|
+
* Format: date-time
|
|
12827
|
+
* @description End date (ISO 8601)
|
|
12828
|
+
*/
|
|
12829
|
+
to?: string;
|
|
12830
|
+
/**
|
|
12831
|
+
* @description Rolling window resolved every time the view is opened: "today", "last_3_days" or "last_7_days". Mutually exclusive with from/to.
|
|
12832
|
+
* @enum {string}
|
|
12833
|
+
*/
|
|
12834
|
+
preset?: "today" | "last_3_days" | "last_7_days";
|
|
12835
|
+
};
|
|
12836
|
+
/** @description Filter by channels (web, email, whatsapp, phone_voice, sms, slack, etc.) */
|
|
12837
|
+
channels?: components["schemas"]["SessionChannel"][];
|
|
12838
|
+
/** @description Filter by built-in status codes (0 = open, 1 = closed_resolved, 2 = closed_unresolved) */
|
|
12839
|
+
status?: number[];
|
|
12840
|
+
/** @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. */
|
|
12841
|
+
sub_status_ids?: string[];
|
|
12842
|
+
/** @description Filter by AI closure type (e.g. "handed_off", "resolved", "no_resolution") */
|
|
12843
|
+
ai_closure?: ("assumed_resolved" | "handed_off" | "resolved")[];
|
|
12844
|
+
/** @description Filter by customer sentiment (angry, happy, neutral) */
|
|
12845
|
+
sentiment?: ("angry" | "happy" | "neutral")[];
|
|
12846
|
+
/** @description Filter by assignee user IDs (empty array = unassigned). The "$current_user" token resolves to whoever opens the view, so one shared view can mean "assigned to me" for every teammate. */
|
|
12847
|
+
assignees?: (number | "$current_user")[];
|
|
12848
|
+
/** @description Filter by team/group IDs */
|
|
12849
|
+
team_ids?: string[];
|
|
12850
|
+
/** @description Filter by contact IDs */
|
|
12851
|
+
contact_ids?: string[];
|
|
12852
|
+
/** @description Filter by exact ticket number */
|
|
12853
|
+
ticket_number?: number;
|
|
12854
|
+
/** @description Filter by session language codes */
|
|
12855
|
+
language?: string[];
|
|
12856
|
+
/** @description Filter by tag names (sessions must have ALL specified tags) */
|
|
12857
|
+
tags?: string[];
|
|
12858
|
+
/**
|
|
12859
|
+
* @description Filter by who the session is waiting on
|
|
12860
|
+
* @enum {string}
|
|
12861
|
+
*/
|
|
12862
|
+
waiting_on?: "customers" | "human_agents";
|
|
12863
|
+
/** @description Filter by session custom data (OR between objects, AND within each object) */
|
|
12864
|
+
custom_data?: {
|
|
12865
|
+
[key: string]: string;
|
|
12866
|
+
}[];
|
|
12867
|
+
} | null;
|
|
12868
|
+
/** @description True when the view was built in the dashboard with OR/exclude groups or filters outside this API's vocabulary. Its `filters` read back as null, and updating `filters` on it REPLACES the whole saved query with the simple set you send. */
|
|
12869
|
+
advanced: boolean;
|
|
12870
|
+
/** @description Sort field the view opens with */
|
|
12871
|
+
sort_by: ("last_message_at" | "created_at" | "sla_urgency") | null;
|
|
12872
|
+
/** @description Sort direction the view opens with */
|
|
12873
|
+
sort_order: ("asc" | "desc") | null;
|
|
12874
|
+
/** @description Field sessions are grouped by in the list, when the view groups them */
|
|
12875
|
+
group_by: ("channel" | "assignee_id" | "status" | "ai_closure_type" | "language" | "inbox_id") | null;
|
|
12876
|
+
/** @description User ids the view is shared with. Empty (with no teams) means the whole org. */
|
|
12877
|
+
shared_with_user_ids: number[];
|
|
12878
|
+
/** @description Team ids the view is shared with. Empty (with no users) means the whole org. */
|
|
12879
|
+
shared_with_team_ids: string[];
|
|
12880
|
+
/** @enum {string} */
|
|
12881
|
+
visibility: "organization" | "personal" | "restricted";
|
|
12882
|
+
created_by_user_id: number;
|
|
12883
|
+
/** @description Whether the calling user may update this view */
|
|
12884
|
+
can_edit: boolean;
|
|
12885
|
+
/** @description Whether the calling user may delete this view */
|
|
12886
|
+
can_delete: boolean;
|
|
12887
|
+
/** Format: date-time */
|
|
12888
|
+
created_at: string;
|
|
12889
|
+
/** Format: date-time */
|
|
12890
|
+
updated_at: string;
|
|
12891
|
+
};
|
|
12493
12892
|
WorkflowPublicResponseDto: {
|
|
12494
12893
|
/** @description Version serial ID */
|
|
12495
12894
|
id: number;
|
|
@@ -12790,7 +13189,7 @@ export interface components {
|
|
|
12790
13189
|
* @description Which jsonb bag the key was observed in: contact vs session, verified vs not.
|
|
12791
13190
|
* @enum {string}
|
|
12792
13191
|
*/
|
|
12793
|
-
source: "contact_custom_data" | "contact_non_verified_custom_data" | "session_custom_data" | "session_editable_custom_data";
|
|
13192
|
+
source: "company_custom_data" | "contact_custom_data" | "contact_non_verified_custom_data" | "session_custom_data" | "session_editable_custom_data";
|
|
12794
13193
|
}[];
|
|
12795
13194
|
total: number;
|
|
12796
13195
|
};
|
|
@@ -13360,6 +13759,7 @@ export interface components {
|
|
|
13360
13759
|
DeleteCustomStatusOutput: {
|
|
13361
13760
|
message: string;
|
|
13362
13761
|
};
|
|
13762
|
+
ListInboxViewsOutput: components["schemas"]["InboxViewDto"][];
|
|
13363
13763
|
ListWorkflowsOutput: components["schemas"]["WorkflowPublicResponseDto"][];
|
|
13364
13764
|
DeleteWorkflowOutput: {
|
|
13365
13765
|
success: boolean;
|
|
@@ -18924,6 +19324,136 @@ export interface operations {
|
|
|
18924
19324
|
};
|
|
18925
19325
|
};
|
|
18926
19326
|
};
|
|
19327
|
+
listInboxViews: {
|
|
19328
|
+
parameters: {
|
|
19329
|
+
query?: never;
|
|
19330
|
+
header?: never;
|
|
19331
|
+
path?: never;
|
|
19332
|
+
cookie?: never;
|
|
19333
|
+
};
|
|
19334
|
+
requestBody?: never;
|
|
19335
|
+
responses: {
|
|
19336
|
+
/** @description Default Response */
|
|
19337
|
+
200: {
|
|
19338
|
+
headers: {
|
|
19339
|
+
[name: string]: unknown;
|
|
19340
|
+
};
|
|
19341
|
+
content: {
|
|
19342
|
+
"application/json": components["schemas"]["ListInboxViewsOutput"];
|
|
19343
|
+
};
|
|
19344
|
+
};
|
|
19345
|
+
/** @description Internal Server Error */
|
|
19346
|
+
500: {
|
|
19347
|
+
headers: {
|
|
19348
|
+
[name: string]: unknown;
|
|
19349
|
+
};
|
|
19350
|
+
content: {
|
|
19351
|
+
"application/json": components["schemas"]["ErrorDto"];
|
|
19352
|
+
};
|
|
19353
|
+
};
|
|
19354
|
+
};
|
|
19355
|
+
};
|
|
19356
|
+
createInboxView: {
|
|
19357
|
+
parameters: {
|
|
19358
|
+
query?: never;
|
|
19359
|
+
header?: never;
|
|
19360
|
+
path?: never;
|
|
19361
|
+
cookie?: never;
|
|
19362
|
+
};
|
|
19363
|
+
requestBody: {
|
|
19364
|
+
content: {
|
|
19365
|
+
"application/json": components["schemas"]["CreateInboxViewDto"];
|
|
19366
|
+
};
|
|
19367
|
+
};
|
|
19368
|
+
responses: {
|
|
19369
|
+
/** @description Default Response */
|
|
19370
|
+
201: {
|
|
19371
|
+
headers: {
|
|
19372
|
+
[name: string]: unknown;
|
|
19373
|
+
};
|
|
19374
|
+
content: {
|
|
19375
|
+
"application/json": components["schemas"]["InboxViewDto"];
|
|
19376
|
+
};
|
|
19377
|
+
};
|
|
19378
|
+
/** @description Internal Server Error */
|
|
19379
|
+
500: {
|
|
19380
|
+
headers: {
|
|
19381
|
+
[name: string]: unknown;
|
|
19382
|
+
};
|
|
19383
|
+
content: {
|
|
19384
|
+
"application/json": components["schemas"]["ErrorDto"];
|
|
19385
|
+
};
|
|
19386
|
+
};
|
|
19387
|
+
};
|
|
19388
|
+
};
|
|
19389
|
+
deleteInboxView: {
|
|
19390
|
+
parameters: {
|
|
19391
|
+
query?: never;
|
|
19392
|
+
header?: never;
|
|
19393
|
+
path: {
|
|
19394
|
+
/** @description The inbox view id */
|
|
19395
|
+
id: string;
|
|
19396
|
+
};
|
|
19397
|
+
cookie?: never;
|
|
19398
|
+
};
|
|
19399
|
+
requestBody?: never;
|
|
19400
|
+
responses: {
|
|
19401
|
+
/** @description Default Response */
|
|
19402
|
+
200: {
|
|
19403
|
+
headers: {
|
|
19404
|
+
[name: string]: unknown;
|
|
19405
|
+
};
|
|
19406
|
+
content: {
|
|
19407
|
+
"application/json": components["schemas"]["GenericResponseDto"];
|
|
19408
|
+
};
|
|
19409
|
+
};
|
|
19410
|
+
/** @description Internal Server Error */
|
|
19411
|
+
500: {
|
|
19412
|
+
headers: {
|
|
19413
|
+
[name: string]: unknown;
|
|
19414
|
+
};
|
|
19415
|
+
content: {
|
|
19416
|
+
"application/json": components["schemas"]["ErrorDto"];
|
|
19417
|
+
};
|
|
19418
|
+
};
|
|
19419
|
+
};
|
|
19420
|
+
};
|
|
19421
|
+
updateInboxView: {
|
|
19422
|
+
parameters: {
|
|
19423
|
+
query?: never;
|
|
19424
|
+
header?: never;
|
|
19425
|
+
path: {
|
|
19426
|
+
/** @description The inbox view id */
|
|
19427
|
+
id: string;
|
|
19428
|
+
};
|
|
19429
|
+
cookie?: never;
|
|
19430
|
+
};
|
|
19431
|
+
requestBody: {
|
|
19432
|
+
content: {
|
|
19433
|
+
"application/json": components["schemas"]["UpdateInboxViewDto"];
|
|
19434
|
+
};
|
|
19435
|
+
};
|
|
19436
|
+
responses: {
|
|
19437
|
+
/** @description Default Response */
|
|
19438
|
+
200: {
|
|
19439
|
+
headers: {
|
|
19440
|
+
[name: string]: unknown;
|
|
19441
|
+
};
|
|
19442
|
+
content: {
|
|
19443
|
+
"application/json": components["schemas"]["InboxViewDto"];
|
|
19444
|
+
};
|
|
19445
|
+
};
|
|
19446
|
+
/** @description Internal Server Error */
|
|
19447
|
+
500: {
|
|
19448
|
+
headers: {
|
|
19449
|
+
[name: string]: unknown;
|
|
19450
|
+
};
|
|
19451
|
+
content: {
|
|
19452
|
+
"application/json": components["schemas"]["ErrorDto"];
|
|
19453
|
+
};
|
|
19454
|
+
};
|
|
19455
|
+
};
|
|
19456
|
+
};
|
|
18927
19457
|
listWorkflowDefinitions: {
|
|
18928
19458
|
parameters: {
|
|
18929
19459
|
query?: never;
|
|
@@ -21303,6 +21833,72 @@ export interface operations {
|
|
|
21303
21833
|
};
|
|
21304
21834
|
};
|
|
21305
21835
|
};
|
|
21836
|
+
continueSequenceContact: {
|
|
21837
|
+
parameters: {
|
|
21838
|
+
query?: never;
|
|
21839
|
+
header?: never;
|
|
21840
|
+
path: {
|
|
21841
|
+
/** @description The unique identifier of the sequence */
|
|
21842
|
+
sequenceId: string;
|
|
21843
|
+
/** @description The person's contact id (from enroll results or the people list) */
|
|
21844
|
+
contactId: string;
|
|
21845
|
+
};
|
|
21846
|
+
cookie?: never;
|
|
21847
|
+
};
|
|
21848
|
+
requestBody?: never;
|
|
21849
|
+
responses: {
|
|
21850
|
+
/** @description Default Response */
|
|
21851
|
+
201: {
|
|
21852
|
+
headers: {
|
|
21853
|
+
[name: string]: unknown;
|
|
21854
|
+
};
|
|
21855
|
+
content: {
|
|
21856
|
+
"application/json": components["schemas"]["ContinueSequenceContactOutputDto"];
|
|
21857
|
+
};
|
|
21858
|
+
};
|
|
21859
|
+
/** @description Internal Server Error */
|
|
21860
|
+
500: {
|
|
21861
|
+
headers: {
|
|
21862
|
+
[name: string]: unknown;
|
|
21863
|
+
};
|
|
21864
|
+
content: {
|
|
21865
|
+
"application/json": components["schemas"]["ErrorDto"];
|
|
21866
|
+
};
|
|
21867
|
+
};
|
|
21868
|
+
};
|
|
21869
|
+
};
|
|
21870
|
+
listContactSequences: {
|
|
21871
|
+
parameters: {
|
|
21872
|
+
query?: never;
|
|
21873
|
+
header?: never;
|
|
21874
|
+
path: {
|
|
21875
|
+
/** @description The person's contact id */
|
|
21876
|
+
contactId: string;
|
|
21877
|
+
};
|
|
21878
|
+
cookie?: never;
|
|
21879
|
+
};
|
|
21880
|
+
requestBody?: never;
|
|
21881
|
+
responses: {
|
|
21882
|
+
/** @description Default Response */
|
|
21883
|
+
200: {
|
|
21884
|
+
headers: {
|
|
21885
|
+
[name: string]: unknown;
|
|
21886
|
+
};
|
|
21887
|
+
content: {
|
|
21888
|
+
"application/json": components["schemas"]["ContactSequencesDto"];
|
|
21889
|
+
};
|
|
21890
|
+
};
|
|
21891
|
+
/** @description Internal Server Error */
|
|
21892
|
+
500: {
|
|
21893
|
+
headers: {
|
|
21894
|
+
[name: string]: unknown;
|
|
21895
|
+
};
|
|
21896
|
+
content: {
|
|
21897
|
+
"application/json": components["schemas"]["ErrorDto"];
|
|
21898
|
+
};
|
|
21899
|
+
};
|
|
21900
|
+
};
|
|
21901
|
+
};
|
|
21306
21902
|
exitSequenceContact: {
|
|
21307
21903
|
parameters: {
|
|
21308
21904
|
query?: never;
|
|
@@ -21516,7 +22112,7 @@ export interface operations {
|
|
|
21516
22112
|
parameters: {
|
|
21517
22113
|
query?: {
|
|
21518
22114
|
/** @description Filter to specific bags; default: all four. */
|
|
21519
|
-
sources?: ("contact_custom_data" | "contact_non_verified_custom_data" | "session_custom_data" | "session_editable_custom_data")[];
|
|
22115
|
+
sources?: ("company_custom_data" | "contact_custom_data" | "contact_non_verified_custom_data" | "session_custom_data" | "session_editable_custom_data")[];
|
|
21520
22116
|
/** @description Case-insensitive substring match on the key. */
|
|
21521
22117
|
search?: string;
|
|
21522
22118
|
/** @description Default 500. */
|