@opencx/mcp 1.15.4 → 1.15.5
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 +567 -3
- package/dist/schema.d.ts.map +1 -1
- package/dist/tools/blocklist.d.ts.map +1 -1
- package/dist/tools/blocklist.js +37 -0
- package/dist/tools/blocklist.js.map +1 -1
- package/package.json +1 -1
package/dist/schema.d.ts
CHANGED
|
@@ -1298,7 +1298,7 @@ export interface paths {
|
|
|
1298
1298
|
put?: never;
|
|
1299
1299
|
/**
|
|
1300
1300
|
* Block IP addresses
|
|
1301
|
-
* @description Block one or more IP addresses or CIDR ranges. Pass a comma-separated string for multiple values (e.g. "203.0.113.7, 198.51.100.0/24"). Both IPv4 and IPv6 are supported.
|
|
1301
|
+
* @description Block one or more IP addresses or CIDR ranges. Pass a comma-separated string for multiple values (e.g. "203.0.113.7, 198.51.100.0/24"). Both IPv4 and IPv6 are supported. Applies to web widget traffic: email and WhatsApp reach us through the provider’s servers and carry no visitor IP, so block those by domain or contact instead. A session first seen on the widget from a blocked address does stay blocked if it later continues on another channel.
|
|
1302
1302
|
*/
|
|
1303
1303
|
post: operations["blockIps"];
|
|
1304
1304
|
delete?: never;
|
|
@@ -1327,6 +1327,26 @@ export interface paths {
|
|
|
1327
1327
|
patch?: never;
|
|
1328
1328
|
trace?: never;
|
|
1329
1329
|
};
|
|
1330
|
+
"/blocklist/ips/session-activity": {
|
|
1331
|
+
parameters: {
|
|
1332
|
+
query?: never;
|
|
1333
|
+
header?: never;
|
|
1334
|
+
path?: never;
|
|
1335
|
+
cookie?: never;
|
|
1336
|
+
};
|
|
1337
|
+
/**
|
|
1338
|
+
* List IP addresses seen in recent sessions
|
|
1339
|
+
* @description Which IP addresses have been opening sessions, ranked by volume, with the number of distinct contacts seen from each. A high contact count against a single address is the signature of one visitor minting a throwaway contact per message. Use this to decide what to block instead of guessing at addresses. Covers widget channels only — other channels carry no client IP.
|
|
1340
|
+
*/
|
|
1341
|
+
get: operations["listSessionIpActivity"];
|
|
1342
|
+
put?: never;
|
|
1343
|
+
post?: never;
|
|
1344
|
+
delete?: never;
|
|
1345
|
+
options?: never;
|
|
1346
|
+
head?: never;
|
|
1347
|
+
patch?: never;
|
|
1348
|
+
trace?: never;
|
|
1349
|
+
};
|
|
1330
1350
|
"/blocklist/ips/{id}": {
|
|
1331
1351
|
parameters: {
|
|
1332
1352
|
query?: never;
|
|
@@ -4076,6 +4096,86 @@ export interface paths {
|
|
|
4076
4096
|
patch?: never;
|
|
4077
4097
|
trace?: never;
|
|
4078
4098
|
};
|
|
4099
|
+
"/salesforce-crm/connection/status": {
|
|
4100
|
+
parameters: {
|
|
4101
|
+
query?: never;
|
|
4102
|
+
header?: never;
|
|
4103
|
+
path?: never;
|
|
4104
|
+
cookie?: never;
|
|
4105
|
+
};
|
|
4106
|
+
/**
|
|
4107
|
+
* Get Salesforce CRM connection status
|
|
4108
|
+
* @description Whether the organization has an active Salesforce CRM connection. Probe this before rendering any Salesforce-backed surface; 404 means the organization never connected.
|
|
4109
|
+
*/
|
|
4110
|
+
get: operations["getSalesforceCrmConnectionStatus"];
|
|
4111
|
+
put?: never;
|
|
4112
|
+
post?: never;
|
|
4113
|
+
delete?: never;
|
|
4114
|
+
options?: never;
|
|
4115
|
+
head?: never;
|
|
4116
|
+
patch?: never;
|
|
4117
|
+
trace?: never;
|
|
4118
|
+
};
|
|
4119
|
+
"/salesforce-crm/contacts/{contactId}": {
|
|
4120
|
+
parameters: {
|
|
4121
|
+
query?: never;
|
|
4122
|
+
header?: never;
|
|
4123
|
+
path?: never;
|
|
4124
|
+
cookie?: never;
|
|
4125
|
+
};
|
|
4126
|
+
/**
|
|
4127
|
+
* Get a contact's Salesforce CRM panel
|
|
4128
|
+
* @description The full Salesforce view of one OpenCX contact: the matched Contact or Lead, its account, opportunities, past cases, and the organization's configured custom objects. `lookup_status` distinguishes a confirmed no-match (`none`) from Salesforce being unreachable (`failed`) — treat `failed` as unknown, never as absence.
|
|
4129
|
+
*/
|
|
4130
|
+
get: operations["getSalesforceCrmContact"];
|
|
4131
|
+
put?: never;
|
|
4132
|
+
post?: never;
|
|
4133
|
+
delete?: never;
|
|
4134
|
+
options?: never;
|
|
4135
|
+
head?: never;
|
|
4136
|
+
patch?: never;
|
|
4137
|
+
trace?: never;
|
|
4138
|
+
};
|
|
4139
|
+
"/salesforce-crm/contacts": {
|
|
4140
|
+
parameters: {
|
|
4141
|
+
query?: never;
|
|
4142
|
+
header?: never;
|
|
4143
|
+
path?: never;
|
|
4144
|
+
cookie?: never;
|
|
4145
|
+
};
|
|
4146
|
+
/**
|
|
4147
|
+
* List cached Salesforce CRM records
|
|
4148
|
+
* @description The synced Salesforce Contacts and Leads the organization has cached, newest first. Served from the cache — this never queries Salesforce.
|
|
4149
|
+
*/
|
|
4150
|
+
get: operations["listSalesforceCrmContacts"];
|
|
4151
|
+
put?: never;
|
|
4152
|
+
post?: never;
|
|
4153
|
+
delete?: never;
|
|
4154
|
+
options?: never;
|
|
4155
|
+
head?: never;
|
|
4156
|
+
patch?: never;
|
|
4157
|
+
trace?: never;
|
|
4158
|
+
};
|
|
4159
|
+
"/salesforce-crm/contacts/search": {
|
|
4160
|
+
parameters: {
|
|
4161
|
+
query?: never;
|
|
4162
|
+
header?: never;
|
|
4163
|
+
path?: never;
|
|
4164
|
+
cookie?: never;
|
|
4165
|
+
};
|
|
4166
|
+
/**
|
|
4167
|
+
* Search cached Salesforce CRM records
|
|
4168
|
+
* @description Match cached Salesforce records by exact email and/or phone (both given means both must match). Served from the cache — this never queries Salesforce. At least one of `email` or `phone` is required.
|
|
4169
|
+
*/
|
|
4170
|
+
get: operations["searchSalesforceCrmContacts"];
|
|
4171
|
+
put?: never;
|
|
4172
|
+
post?: never;
|
|
4173
|
+
delete?: never;
|
|
4174
|
+
options?: never;
|
|
4175
|
+
head?: never;
|
|
4176
|
+
patch?: never;
|
|
4177
|
+
trace?: never;
|
|
4178
|
+
};
|
|
4079
4179
|
"/companion/notify-team": {
|
|
4080
4180
|
parameters: {
|
|
4081
4181
|
query?: never;
|
|
@@ -4389,6 +4489,7 @@ export interface components {
|
|
|
4389
4489
|
} | {
|
|
4390
4490
|
/** @constant */
|
|
4391
4491
|
type: "contacts_phone_number_in";
|
|
4492
|
+
/** @description Full phone numbers, matched exactly on digits (formatting like +, spaces, and dashes is ignored). Use * inside an entry for partial/substring matching. */
|
|
4392
4493
|
phone_number_in: string[];
|
|
4393
4494
|
} | {
|
|
4394
4495
|
/** @constant */
|
|
@@ -4662,6 +4763,13 @@ export interface components {
|
|
|
4662
4763
|
auto_send_on_close?: boolean;
|
|
4663
4764
|
/** @description Delay in minutes before sending CSAT after session closes */
|
|
4664
4765
|
send_delay_minutes?: number;
|
|
4766
|
+
/**
|
|
4767
|
+
* @description How often the same session may be surveyed: once_per_session (default, one survey ever), once_per_close (one per closure, so a reopened session can be surveyed again), or once_until_answered (re-ask after resend_after_days until the customer scores it)
|
|
4768
|
+
* @enum {string}
|
|
4769
|
+
*/
|
|
4770
|
+
resend_policy?: "once_per_close" | "once_per_session" | "once_until_answered";
|
|
4771
|
+
/** @description Days to wait before re-asking an unanswered survey. Only used when resend_policy is once_until_answered */
|
|
4772
|
+
resend_after_days?: number;
|
|
4665
4773
|
/** @description Full-HTML template for the public CSAT feedback page. Null/empty clears it (default page). */
|
|
4666
4774
|
web_template_html?: string | null;
|
|
4667
4775
|
/** @description Full-HTML template for the CSAT request email. Null/empty clears it (default email). */
|
|
@@ -5100,6 +5208,7 @@ export interface components {
|
|
|
5100
5208
|
} | {
|
|
5101
5209
|
/** @constant */
|
|
5102
5210
|
type: "contacts_phone_number_in";
|
|
5211
|
+
/** @description Full phone numbers, matched exactly on digits (formatting like +, spaces, and dashes is ignored). Use * inside an entry for partial/substring matching. */
|
|
5103
5212
|
phone_number_in: string[];
|
|
5104
5213
|
} | {
|
|
5105
5214
|
/** @constant */
|
|
@@ -5465,6 +5574,10 @@ export interface components {
|
|
|
5465
5574
|
};
|
|
5466
5575
|
delay_in_minutes?: number;
|
|
5467
5576
|
}[];
|
|
5577
|
+
/** @description Hold step sends outside the org office-hours window (defaults to true for new sequences) */
|
|
5578
|
+
respect_office_hours?: boolean;
|
|
5579
|
+
/** @description Named office-hours config to use as the send window; null = org default hours */
|
|
5580
|
+
office_hours_id?: string | null;
|
|
5468
5581
|
};
|
|
5469
5582
|
AddContactsToSequenceInput: {
|
|
5470
5583
|
contacts: ({
|
|
@@ -5769,6 +5882,8 @@ export interface components {
|
|
|
5769
5882
|
ips: string;
|
|
5770
5883
|
/** @description Why these addresses are being blocked */
|
|
5771
5884
|
reason?: string;
|
|
5885
|
+
/** @description Lift the block automatically after this many hours (max 8760). Omit for a permanent block. Automated callers should always set this: a shared or carrier-grade NAT address fronts many people, and a permanent block on one bans all of them. */
|
|
5886
|
+
expires_in_hours?: number;
|
|
5772
5887
|
};
|
|
5773
5888
|
CreateEmailTemplatePublicInput: components["schemas"]["CreateEmailTemplateBodyDto"];
|
|
5774
5889
|
UpdateEmailTemplatePublicInput: components["schemas"]["CreateEmailTemplateBodyDto"];
|
|
@@ -5901,6 +6016,82 @@ export interface components {
|
|
|
5901
6016
|
end_time: string;
|
|
5902
6017
|
}[];
|
|
5903
6018
|
};
|
|
6019
|
+
SalesforceCrmContactDetailsDto: {
|
|
6020
|
+
id: string;
|
|
6021
|
+
salesforce_record_id: string;
|
|
6022
|
+
/** @enum {string} */
|
|
6023
|
+
record_type: "Contact" | "Lead";
|
|
6024
|
+
email?: string;
|
|
6025
|
+
phone?: string;
|
|
6026
|
+
first_name?: string;
|
|
6027
|
+
last_name?: string;
|
|
6028
|
+
company?: string;
|
|
6029
|
+
salesforce_data: unknown;
|
|
6030
|
+
cached_at: string;
|
|
6031
|
+
salesforce_link: string;
|
|
6032
|
+
};
|
|
6033
|
+
SalesforceCrmAccountDetailsDto: {
|
|
6034
|
+
salesforce_account_id: string;
|
|
6035
|
+
name?: string;
|
|
6036
|
+
website?: string;
|
|
6037
|
+
industry?: string;
|
|
6038
|
+
number_of_employees?: string;
|
|
6039
|
+
annual_revenue?: string;
|
|
6040
|
+
billing_city?: string;
|
|
6041
|
+
billing_state?: string;
|
|
6042
|
+
billing_country?: string;
|
|
6043
|
+
salesforce_data: unknown;
|
|
6044
|
+
salesforce_link: string;
|
|
6045
|
+
};
|
|
6046
|
+
SalesforceCrmOpportunityDetailsDto: {
|
|
6047
|
+
salesforce_opportunity_id: string;
|
|
6048
|
+
name?: string;
|
|
6049
|
+
stage_name?: string;
|
|
6050
|
+
amount?: string;
|
|
6051
|
+
close_date?: string;
|
|
6052
|
+
is_closed?: boolean;
|
|
6053
|
+
is_won?: boolean;
|
|
6054
|
+
salesforce_data: unknown;
|
|
6055
|
+
salesforce_link: string;
|
|
6056
|
+
};
|
|
6057
|
+
SalesforceCrmCaseDetailsDto: {
|
|
6058
|
+
salesforce_case_id: string;
|
|
6059
|
+
case_number?: string;
|
|
6060
|
+
subject?: string;
|
|
6061
|
+
status?: string;
|
|
6062
|
+
priority?: string;
|
|
6063
|
+
origin?: string;
|
|
6064
|
+
created_date?: string;
|
|
6065
|
+
last_modified_date?: string;
|
|
6066
|
+
salesforce_data: unknown;
|
|
6067
|
+
salesforce_link: string;
|
|
6068
|
+
};
|
|
6069
|
+
SalesforceCrmCustomObjectRecordDto: {
|
|
6070
|
+
id: string;
|
|
6071
|
+
values: {
|
|
6072
|
+
[key: string]: string | number | boolean | null;
|
|
6073
|
+
};
|
|
6074
|
+
salesforce_link: string;
|
|
6075
|
+
};
|
|
6076
|
+
SalesforceCrmCustomObjectSectionDto: {
|
|
6077
|
+
object_api_name: string;
|
|
6078
|
+
label: string;
|
|
6079
|
+
records?: components["schemas"]["SalesforceCrmCustomObjectRecordDto"][];
|
|
6080
|
+
};
|
|
6081
|
+
ConsumerSalesforceCrmContactResponseDto: {
|
|
6082
|
+
consumer_id: string;
|
|
6083
|
+
consumer_email?: string;
|
|
6084
|
+
consumer_phone?: string;
|
|
6085
|
+
salesforce_contact?: components["schemas"]["SalesforceCrmContactDetailsDto"];
|
|
6086
|
+
accounts?: components["schemas"]["SalesforceCrmAccountDetailsDto"][];
|
|
6087
|
+
opportunities?: components["schemas"]["SalesforceCrmOpportunityDetailsDto"][];
|
|
6088
|
+
previous_cases?: components["schemas"]["SalesforceCrmCaseDetailsDto"][];
|
|
6089
|
+
custom_objects?: components["schemas"]["SalesforceCrmCustomObjectSectionDto"][];
|
|
6090
|
+
found_in_salesforce: boolean;
|
|
6091
|
+
/** @enum {string} */
|
|
6092
|
+
lookup_status: "found" | "none" | "failed";
|
|
6093
|
+
message: string;
|
|
6094
|
+
};
|
|
5904
6095
|
GenericResponseDto: {
|
|
5905
6096
|
data?: {
|
|
5906
6097
|
success: boolean;
|
|
@@ -5919,6 +6110,148 @@ export interface components {
|
|
|
5919
6110
|
url: string;
|
|
5920
6111
|
openai_file_id?: string;
|
|
5921
6112
|
};
|
|
6113
|
+
WhatsAppTemplateDto: {
|
|
6114
|
+
id: string;
|
|
6115
|
+
name: string;
|
|
6116
|
+
/** @enum {string} */
|
|
6117
|
+
status: "APPROVED" | "REJECTED" | "PENDING" | "PAUSED" | "DISABLED" | "IN_APPEAL" | "PENDING_DELETION" | "DELETED" | "LIMIT_EXCEEDED" | "ARCHIVED";
|
|
6118
|
+
/** @enum {string} */
|
|
6119
|
+
category: "UTILITY" | "MARKETING" | "AUTHENTICATION";
|
|
6120
|
+
/** @enum {string} */
|
|
6121
|
+
parameter_format: "NAMED" | "POSITIONAL";
|
|
6122
|
+
language: string;
|
|
6123
|
+
components?: ({
|
|
6124
|
+
/** @constant */
|
|
6125
|
+
type: "HEADER";
|
|
6126
|
+
/** @constant */
|
|
6127
|
+
format: "TEXT";
|
|
6128
|
+
/** @description 60 chars max */
|
|
6129
|
+
text: string;
|
|
6130
|
+
example?: {
|
|
6131
|
+
header_text: string[];
|
|
6132
|
+
} | {
|
|
6133
|
+
header_text_named_params: {
|
|
6134
|
+
param_name: string;
|
|
6135
|
+
example: string;
|
|
6136
|
+
}[];
|
|
6137
|
+
};
|
|
6138
|
+
} | {
|
|
6139
|
+
/** @constant */
|
|
6140
|
+
type: "HEADER";
|
|
6141
|
+
/**
|
|
6142
|
+
* @description
|
|
6143
|
+
* /**
|
|
6144
|
+
* * IMAGE: JPG | PNG
|
|
6145
|
+
* * DOCUMENT: PDF
|
|
6146
|
+
* * VIDEO: MP4
|
|
6147
|
+
* *\/
|
|
6148
|
+
*
|
|
6149
|
+
* @enum {string}
|
|
6150
|
+
*/
|
|
6151
|
+
format: "IMAGE" | "DOCUMENT" | "VIDEO";
|
|
6152
|
+
example?: {
|
|
6153
|
+
/** @description
|
|
6154
|
+
* /**
|
|
6155
|
+
* * A handle for the media uploaded through the Resumable Upload API
|
|
6156
|
+
* * https://developers.facebook.com/docs/graph-api/guides/upload
|
|
6157
|
+
* *\/
|
|
6158
|
+
* */
|
|
6159
|
+
header_handle: string | string[];
|
|
6160
|
+
};
|
|
6161
|
+
} | {
|
|
6162
|
+
/** @constant */
|
|
6163
|
+
type: "HEADER";
|
|
6164
|
+
/** @constant */
|
|
6165
|
+
format: "LOCATION";
|
|
6166
|
+
} | {
|
|
6167
|
+
/** @constant */
|
|
6168
|
+
type: "BODY";
|
|
6169
|
+
/** @description 1024 chars max, or 32768 if `body` is the only component in the template */
|
|
6170
|
+
text: string;
|
|
6171
|
+
example?: {
|
|
6172
|
+
/** @description Yes, this is an array of arrays, but only the first array is used, just like `header_text` */
|
|
6173
|
+
body_text: string[][];
|
|
6174
|
+
} | {
|
|
6175
|
+
body_text_named_params: {
|
|
6176
|
+
param_name: string;
|
|
6177
|
+
example: string;
|
|
6178
|
+
}[];
|
|
6179
|
+
};
|
|
6180
|
+
} | {
|
|
6181
|
+
/** @constant */
|
|
6182
|
+
type: "FOOTER";
|
|
6183
|
+
/** @description 60 chars max */
|
|
6184
|
+
text: string;
|
|
6185
|
+
} | {
|
|
6186
|
+
/**
|
|
6187
|
+
* @description
|
|
6188
|
+
* /**
|
|
6189
|
+
* * Templates are limited to 10 quick reply buttons. If using quick reply buttons with other buttons,
|
|
6190
|
+
* * buttons must be organized into two groups: quick reply buttons and non-quick reply buttons.
|
|
6191
|
+
* * If grouped incorrectly, the API will return an error indicating an invalid combination.
|
|
6192
|
+
* *
|
|
6193
|
+
* * Examples of valid groupings:
|
|
6194
|
+
* * - Quick Reply, Quick Reply
|
|
6195
|
+
* * - Quick Reply, Quick Reply, URL, Phone
|
|
6196
|
+
* * - URL, Phone, Quick Reply, Quick Reply
|
|
6197
|
+
* *
|
|
6198
|
+
* * Examples of invalid groupings:
|
|
6199
|
+
* * - Quick Reply, URL, Quick Reply
|
|
6200
|
+
* * - URL, Quick Reply, URL
|
|
6201
|
+
* *\/
|
|
6202
|
+
*
|
|
6203
|
+
* @constant
|
|
6204
|
+
*/
|
|
6205
|
+
type: "BUTTONS";
|
|
6206
|
+
buttons: ({
|
|
6207
|
+
/** @constant */
|
|
6208
|
+
type: "QUICK_REPLY";
|
|
6209
|
+
/** @description 25 chars max */
|
|
6210
|
+
text: string;
|
|
6211
|
+
} | {
|
|
6212
|
+
/** @constant */
|
|
6213
|
+
type: "URL";
|
|
6214
|
+
text: string;
|
|
6215
|
+
/** @description 2000 chars max */
|
|
6216
|
+
url: string;
|
|
6217
|
+
example?: [
|
|
6218
|
+
string
|
|
6219
|
+
];
|
|
6220
|
+
} | {
|
|
6221
|
+
/** @constant */
|
|
6222
|
+
type: "PHONE_NUMBER";
|
|
6223
|
+
/** @description 25 chars max */
|
|
6224
|
+
text: string;
|
|
6225
|
+
/** @description 20 chars max */
|
|
6226
|
+
phone_number: string;
|
|
6227
|
+
} | {
|
|
6228
|
+
/** @constant */
|
|
6229
|
+
type: "COPY_CODE";
|
|
6230
|
+
/** @description 15 chars max */
|
|
6231
|
+
example: string | string[];
|
|
6232
|
+
} | {
|
|
6233
|
+
/** @constant */
|
|
6234
|
+
type: "FLOW";
|
|
6235
|
+
/** @description 25 chars max */
|
|
6236
|
+
text: string;
|
|
6237
|
+
/** @enum {string} */
|
|
6238
|
+
icon: "DOCUMENT" | "PROMOTION" | "REVIEW";
|
|
6239
|
+
flow_id?: string;
|
|
6240
|
+
flow_name?: string;
|
|
6241
|
+
flow_json?: {
|
|
6242
|
+
[key: string]: unknown;
|
|
6243
|
+
};
|
|
6244
|
+
/** @enum {string} */
|
|
6245
|
+
flow_action: "data_exchange" | "navigate";
|
|
6246
|
+
navigate_screen?: string;
|
|
6247
|
+
} | {
|
|
6248
|
+
/** @constant */
|
|
6249
|
+
type: "MPM";
|
|
6250
|
+
example: string;
|
|
6251
|
+
})[];
|
|
6252
|
+
})[] | null;
|
|
6253
|
+
rejected_reason?: string | null;
|
|
6254
|
+
};
|
|
5922
6255
|
PhoneAgentDto: {
|
|
5923
6256
|
id: string;
|
|
5924
6257
|
org_id: string;
|
|
@@ -6232,6 +6565,9 @@ export interface components {
|
|
|
6232
6565
|
} | null;
|
|
6233
6566
|
steps: components["schemas"]["SequenceStep"][];
|
|
6234
6567
|
is_continuous: boolean;
|
|
6568
|
+
reply_instructions: string | null;
|
|
6569
|
+
respect_office_hours: boolean;
|
|
6570
|
+
office_hours_id: string | null;
|
|
6235
6571
|
started_at: string | null;
|
|
6236
6572
|
canceled_at: string | null;
|
|
6237
6573
|
ended_at: string | null;
|
|
@@ -6240,10 +6576,11 @@ export interface components {
|
|
|
6240
6576
|
StartOneOffSequenceOutputDto: {
|
|
6241
6577
|
data?: {
|
|
6242
6578
|
success: boolean;
|
|
6579
|
+
run_id?: string;
|
|
6243
6580
|
};
|
|
6244
6581
|
error?: {
|
|
6245
6582
|
/** @enum {string} */
|
|
6246
|
-
code: "sequence_not_found" | "one_off_sequence_is_canceled" | "sequence_already_started";
|
|
6583
|
+
code: "sequence_not_found" | "one_off_sequence_is_canceled" | "sequence_already_started" | "cannot_schedule_continuous_sequence" | "start_at_in_past";
|
|
6247
6584
|
status: 400 | 404;
|
|
6248
6585
|
message: string;
|
|
6249
6586
|
};
|
|
@@ -6348,6 +6685,8 @@ export interface components {
|
|
|
6348
6685
|
instructions: {
|
|
6349
6686
|
id: string;
|
|
6350
6687
|
title: string;
|
|
6688
|
+
/** @constant */
|
|
6689
|
+
source?: "sequence_campaign";
|
|
6351
6690
|
}[];
|
|
6352
6691
|
tools: {
|
|
6353
6692
|
name: string;
|
|
@@ -6370,6 +6709,8 @@ export interface components {
|
|
|
6370
6709
|
instructions: {
|
|
6371
6710
|
id: string;
|
|
6372
6711
|
title: string;
|
|
6712
|
+
/** @constant */
|
|
6713
|
+
source?: "sequence_campaign";
|
|
6373
6714
|
}[];
|
|
6374
6715
|
tools: {
|
|
6375
6716
|
name: string;
|
|
@@ -6522,6 +6863,7 @@ export interface components {
|
|
|
6522
6863
|
[key: string]: unknown;
|
|
6523
6864
|
} | null;
|
|
6524
6865
|
whatsapp_template_request?: unknown | null;
|
|
6866
|
+
whatsapp_template_snapshot?: unknown | null;
|
|
6525
6867
|
rule_violation_reflections?: {
|
|
6526
6868
|
rule_name: string;
|
|
6527
6869
|
/** @description How the rule was violated */
|
|
@@ -6592,7 +6934,7 @@ export interface components {
|
|
|
6592
6934
|
}) | null;
|
|
6593
6935
|
knowledgebase_called?: boolean | null;
|
|
6594
6936
|
/** @enum {string} */
|
|
6595
|
-
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" | "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_requested" | "csat_submitted" | "email_draft_message" | "handoff" | "handoff_to_salesforce_miaw" | "handoff_to_zendesk" | "integration_reopened_session" | "message" | "prohibited_topic_detected" | "sequence_message" | "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_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";
|
|
6937
|
+
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" | "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_requested" | "csat_submitted" | "email_draft_message" | "handoff" | "handoff_to_salesforce_miaw" | "handoff_to_zendesk" | "integration_reopened_session" | "message" | "prohibited_topic_detected" | "sequence_message" | "session_forwarded" | "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_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";
|
|
6596
6938
|
extra_params?: {
|
|
6597
6939
|
[key: string]: unknown;
|
|
6598
6940
|
} | null;
|
|
@@ -6622,6 +6964,7 @@ export interface components {
|
|
|
6622
6964
|
workflow_run_id?: string | null;
|
|
6623
6965
|
sequence_id?: string | null;
|
|
6624
6966
|
whatsapp_template_name?: string | null;
|
|
6967
|
+
whatsapp_template_snapshot?: components["schemas"]["WhatsAppTemplateDto"] | null;
|
|
6625
6968
|
from_opencx_public_api?: boolean | null;
|
|
6626
6969
|
sub_status_id?: string | null;
|
|
6627
6970
|
whatsapp_sent_at?: string | null;
|
|
@@ -6713,6 +7056,13 @@ export interface components {
|
|
|
6713
7056
|
auto_send_on_close: boolean;
|
|
6714
7057
|
/** @description Delay in minutes before sending CSAT after session closes */
|
|
6715
7058
|
send_delay_minutes: number;
|
|
7059
|
+
/**
|
|
7060
|
+
* @description How often the same session may be surveyed: once_per_session, once_per_close, or once_until_answered
|
|
7061
|
+
* @enum {string}
|
|
7062
|
+
*/
|
|
7063
|
+
resend_policy: "once_per_close" | "once_per_session" | "once_until_answered";
|
|
7064
|
+
/** @description Days to wait before re-asking an unanswered survey (only used when resend_policy is once_until_answered) */
|
|
7065
|
+
resend_after_days: number;
|
|
6716
7066
|
/** @description Full-HTML template for the public CSAT feedback page (null = default page) */
|
|
6717
7067
|
web_template_html: string | null;
|
|
6718
7068
|
/** @description Full-HTML template for the CSAT request email (null = default email) */
|
|
@@ -6998,6 +7348,35 @@ export interface components {
|
|
|
6998
7348
|
enums: components["schemas"]["SavedReplyVariableEnum"][];
|
|
6999
7349
|
custom: components["schemas"]["SavedReplyVariableDto"][];
|
|
7000
7350
|
};
|
|
7351
|
+
SalesforceCrmConnectionStatusDto: {
|
|
7352
|
+
is_active: boolean;
|
|
7353
|
+
};
|
|
7354
|
+
SalesforceCrmContactResponseDto: {
|
|
7355
|
+
id: string;
|
|
7356
|
+
organization_id: string;
|
|
7357
|
+
salesforce_record_id: string;
|
|
7358
|
+
/** @enum {string} */
|
|
7359
|
+
record_type: "Contact" | "Lead";
|
|
7360
|
+
email: string | null;
|
|
7361
|
+
phone: string | null;
|
|
7362
|
+
first_name: string | null;
|
|
7363
|
+
last_name: string | null;
|
|
7364
|
+
company: string | null;
|
|
7365
|
+
salesforce_data: {
|
|
7366
|
+
[key: string]: unknown;
|
|
7367
|
+
};
|
|
7368
|
+
/** Format: date-time */
|
|
7369
|
+
cached_at: string;
|
|
7370
|
+
};
|
|
7371
|
+
PaginatedSalesforceCrmContactsResponseDto: {
|
|
7372
|
+
data: components["schemas"]["SalesforceCrmContactResponseDto"][];
|
|
7373
|
+
meta: {
|
|
7374
|
+
total: number;
|
|
7375
|
+
page: number;
|
|
7376
|
+
limit: number;
|
|
7377
|
+
totalPages: number;
|
|
7378
|
+
};
|
|
7379
|
+
};
|
|
7001
7380
|
AgentAvailability: {
|
|
7002
7381
|
id: string;
|
|
7003
7382
|
user_id: number;
|
|
@@ -7596,6 +7975,7 @@ export interface components {
|
|
|
7596
7975
|
[key: string]: unknown;
|
|
7597
7976
|
} | null;
|
|
7598
7977
|
whatsapp_template_request?: unknown | null;
|
|
7978
|
+
whatsapp_template_snapshot?: unknown | null;
|
|
7599
7979
|
rule_violation_reflections?: {
|
|
7600
7980
|
rule_name: string;
|
|
7601
7981
|
/** @description How the rule was violated */
|
|
@@ -8960,6 +9340,8 @@ export interface components {
|
|
|
8960
9340
|
reason: string | null;
|
|
8961
9341
|
/** Format: date-time */
|
|
8962
9342
|
created_at: string;
|
|
9343
|
+
/** @description When the block lifts automatically. Null means it never does. */
|
|
9344
|
+
expires_at: string | null;
|
|
8963
9345
|
}[];
|
|
8964
9346
|
total: number;
|
|
8965
9347
|
page: number;
|
|
@@ -8976,6 +9358,8 @@ export interface components {
|
|
|
8976
9358
|
reason: string | null;
|
|
8977
9359
|
/** Format: date-time */
|
|
8978
9360
|
created_at: string;
|
|
9361
|
+
/** @description When the block lifts automatically. Null means it never does. */
|
|
9362
|
+
expires_at: string | null;
|
|
8979
9363
|
}[];
|
|
8980
9364
|
/** @description Addresses that needed no action — already blocked, or not a valid IP/CIDR */
|
|
8981
9365
|
skipped: string[];
|
|
@@ -8994,6 +9378,20 @@ export interface components {
|
|
|
8994
9378
|
IpBlockStatusOutput: {
|
|
8995
9379
|
is_blocked: boolean;
|
|
8996
9380
|
};
|
|
9381
|
+
SessionIpActivityOutput: {
|
|
9382
|
+
data: {
|
|
9383
|
+
ip: string;
|
|
9384
|
+
session_count: number;
|
|
9385
|
+
contact_count: number;
|
|
9386
|
+
/** Format: date-time */
|
|
9387
|
+
first_seen: string;
|
|
9388
|
+
/** Format: date-time */
|
|
9389
|
+
last_seen: string;
|
|
9390
|
+
is_blocked: boolean;
|
|
9391
|
+
}[];
|
|
9392
|
+
page: number;
|
|
9393
|
+
has_more: boolean;
|
|
9394
|
+
};
|
|
8997
9395
|
GetCustomDomainsOutput: {
|
|
8998
9396
|
domainName: string;
|
|
8999
9397
|
domainNameVerificationStatus: string | null;
|
|
@@ -11887,6 +12285,42 @@ export interface operations {
|
|
|
11887
12285
|
};
|
|
11888
12286
|
};
|
|
11889
12287
|
};
|
|
12288
|
+
listSessionIpActivity: {
|
|
12289
|
+
parameters: {
|
|
12290
|
+
query?: {
|
|
12291
|
+
/** @description How far back to look (default: 30, max: 90) */
|
|
12292
|
+
days?: number;
|
|
12293
|
+
/** @description Page (default: 1) */
|
|
12294
|
+
page?: number;
|
|
12295
|
+
/** @description Results per page (default: 50, max: 200) */
|
|
12296
|
+
limit?: number;
|
|
12297
|
+
};
|
|
12298
|
+
header?: never;
|
|
12299
|
+
path?: never;
|
|
12300
|
+
cookie?: never;
|
|
12301
|
+
};
|
|
12302
|
+
requestBody?: never;
|
|
12303
|
+
responses: {
|
|
12304
|
+
/** @description Default Response */
|
|
12305
|
+
200: {
|
|
12306
|
+
headers: {
|
|
12307
|
+
[name: string]: unknown;
|
|
12308
|
+
};
|
|
12309
|
+
content: {
|
|
12310
|
+
"application/json": components["schemas"]["SessionIpActivityOutput"];
|
|
12311
|
+
};
|
|
12312
|
+
};
|
|
12313
|
+
/** @description Internal Server Error */
|
|
12314
|
+
500: {
|
|
12315
|
+
headers: {
|
|
12316
|
+
[name: string]: unknown;
|
|
12317
|
+
};
|
|
12318
|
+
content: {
|
|
12319
|
+
"application/json": components["schemas"]["ErrorDto"];
|
|
12320
|
+
};
|
|
12321
|
+
};
|
|
12322
|
+
};
|
|
12323
|
+
};
|
|
11890
12324
|
unblockIp: {
|
|
11891
12325
|
parameters: {
|
|
11892
12326
|
query?: never;
|
|
@@ -14590,6 +15024,10 @@ export interface operations {
|
|
|
14590
15024
|
};
|
|
14591
15025
|
delay_in_minutes?: number;
|
|
14592
15026
|
}[];
|
|
15027
|
+
/** @description Hold step sends outside the org office-hours window (defaults to true for new sequences) */
|
|
15028
|
+
respect_office_hours?: boolean;
|
|
15029
|
+
/** @description Named office-hours config to use as the send window; null = org default hours */
|
|
15030
|
+
office_hours_id?: string | null;
|
|
14593
15031
|
};
|
|
14594
15032
|
};
|
|
14595
15033
|
};
|
|
@@ -16908,6 +17346,132 @@ export interface operations {
|
|
|
16908
17346
|
};
|
|
16909
17347
|
};
|
|
16910
17348
|
};
|
|
17349
|
+
getSalesforceCrmConnectionStatus: {
|
|
17350
|
+
parameters: {
|
|
17351
|
+
query?: never;
|
|
17352
|
+
header?: never;
|
|
17353
|
+
path?: never;
|
|
17354
|
+
cookie?: never;
|
|
17355
|
+
};
|
|
17356
|
+
requestBody?: never;
|
|
17357
|
+
responses: {
|
|
17358
|
+
/** @description Default Response */
|
|
17359
|
+
200: {
|
|
17360
|
+
headers: {
|
|
17361
|
+
[name: string]: unknown;
|
|
17362
|
+
};
|
|
17363
|
+
content: {
|
|
17364
|
+
"application/json": components["schemas"]["SalesforceCrmConnectionStatusDto"];
|
|
17365
|
+
};
|
|
17366
|
+
};
|
|
17367
|
+
/** @description Internal Server Error */
|
|
17368
|
+
500: {
|
|
17369
|
+
headers: {
|
|
17370
|
+
[name: string]: unknown;
|
|
17371
|
+
};
|
|
17372
|
+
content: {
|
|
17373
|
+
"application/json": components["schemas"]["ErrorDto"];
|
|
17374
|
+
};
|
|
17375
|
+
};
|
|
17376
|
+
};
|
|
17377
|
+
};
|
|
17378
|
+
getSalesforceCrmContact: {
|
|
17379
|
+
parameters: {
|
|
17380
|
+
query?: never;
|
|
17381
|
+
header?: never;
|
|
17382
|
+
path: {
|
|
17383
|
+
contactId: string;
|
|
17384
|
+
};
|
|
17385
|
+
cookie?: never;
|
|
17386
|
+
};
|
|
17387
|
+
requestBody?: never;
|
|
17388
|
+
responses: {
|
|
17389
|
+
/** @description Default Response */
|
|
17390
|
+
200: {
|
|
17391
|
+
headers: {
|
|
17392
|
+
[name: string]: unknown;
|
|
17393
|
+
};
|
|
17394
|
+
content: {
|
|
17395
|
+
"application/json": components["schemas"]["ConsumerSalesforceCrmContactResponseDto"];
|
|
17396
|
+
};
|
|
17397
|
+
};
|
|
17398
|
+
/** @description Internal Server Error */
|
|
17399
|
+
500: {
|
|
17400
|
+
headers: {
|
|
17401
|
+
[name: string]: unknown;
|
|
17402
|
+
};
|
|
17403
|
+
content: {
|
|
17404
|
+
"application/json": components["schemas"]["ErrorDto"];
|
|
17405
|
+
};
|
|
17406
|
+
};
|
|
17407
|
+
};
|
|
17408
|
+
};
|
|
17409
|
+
listSalesforceCrmContacts: {
|
|
17410
|
+
parameters: {
|
|
17411
|
+
query?: {
|
|
17412
|
+
page?: number;
|
|
17413
|
+
limit?: number;
|
|
17414
|
+
};
|
|
17415
|
+
header?: never;
|
|
17416
|
+
path?: never;
|
|
17417
|
+
cookie?: never;
|
|
17418
|
+
};
|
|
17419
|
+
requestBody?: never;
|
|
17420
|
+
responses: {
|
|
17421
|
+
/** @description Default Response */
|
|
17422
|
+
200: {
|
|
17423
|
+
headers: {
|
|
17424
|
+
[name: string]: unknown;
|
|
17425
|
+
};
|
|
17426
|
+
content: {
|
|
17427
|
+
"application/json": components["schemas"]["PaginatedSalesforceCrmContactsResponseDto"];
|
|
17428
|
+
};
|
|
17429
|
+
};
|
|
17430
|
+
/** @description Internal Server Error */
|
|
17431
|
+
500: {
|
|
17432
|
+
headers: {
|
|
17433
|
+
[name: string]: unknown;
|
|
17434
|
+
};
|
|
17435
|
+
content: {
|
|
17436
|
+
"application/json": components["schemas"]["ErrorDto"];
|
|
17437
|
+
};
|
|
17438
|
+
};
|
|
17439
|
+
};
|
|
17440
|
+
};
|
|
17441
|
+
searchSalesforceCrmContacts: {
|
|
17442
|
+
parameters: {
|
|
17443
|
+
query?: {
|
|
17444
|
+
email?: string;
|
|
17445
|
+
phone?: string;
|
|
17446
|
+
page?: number;
|
|
17447
|
+
limit?: number;
|
|
17448
|
+
};
|
|
17449
|
+
header?: never;
|
|
17450
|
+
path?: never;
|
|
17451
|
+
cookie?: never;
|
|
17452
|
+
};
|
|
17453
|
+
requestBody?: never;
|
|
17454
|
+
responses: {
|
|
17455
|
+
/** @description Default Response */
|
|
17456
|
+
200: {
|
|
17457
|
+
headers: {
|
|
17458
|
+
[name: string]: unknown;
|
|
17459
|
+
};
|
|
17460
|
+
content: {
|
|
17461
|
+
"application/json": components["schemas"]["PaginatedSalesforceCrmContactsResponseDto"];
|
|
17462
|
+
};
|
|
17463
|
+
};
|
|
17464
|
+
/** @description Internal Server Error */
|
|
17465
|
+
500: {
|
|
17466
|
+
headers: {
|
|
17467
|
+
[name: string]: unknown;
|
|
17468
|
+
};
|
|
17469
|
+
content: {
|
|
17470
|
+
"application/json": components["schemas"]["ErrorDto"];
|
|
17471
|
+
};
|
|
17472
|
+
};
|
|
17473
|
+
};
|
|
17474
|
+
};
|
|
16911
17475
|
coworkerNotifyTeam: {
|
|
16912
17476
|
parameters: {
|
|
16913
17477
|
query?: never;
|