@opencx/mcp 1.15.14 → 1.15.16
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/companies.spec.d.ts +2 -0
- package/dist/companies.spec.d.ts.map +1 -0
- package/dist/companies.spec.js +191 -0
- package/dist/companies.spec.js.map +1 -0
- package/dist/salesforce-ai-reply-templates.spec.d.ts +2 -0
- package/dist/salesforce-ai-reply-templates.spec.d.ts.map +1 -0
- package/dist/salesforce-ai-reply-templates.spec.js +163 -0
- package/dist/salesforce-ai-reply-templates.spec.js.map +1 -0
- package/dist/schema.d.ts +759 -15
- 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/companies.d.ts +4 -0
- package/dist/tools/companies.d.ts.map +1 -0
- package/dist/tools/companies.js +127 -0
- package/dist/tools/companies.js.map +1 -0
- package/dist/tools/salesforce-ai-reply-templates.d.ts +4 -0
- package/dist/tools/salesforce-ai-reply-templates.d.ts.map +1 -0
- package/dist/tools/salesforce-ai-reply-templates.js +95 -0
- package/dist/tools/salesforce-ai-reply-templates.js.map +1 -0
- package/dist/utils/session-channel.d.ts +2 -2
- package/dist/utils/session-channel.d.ts.map +1 -1
- package/dist/utils/session-channel.js +1 -0
- package/dist/utils/session-channel.js.map +1 -1
- package/package.json +1 -1
package/dist/schema.d.ts
CHANGED
|
@@ -184,7 +184,7 @@ export interface paths {
|
|
|
184
184
|
};
|
|
185
185
|
/**
|
|
186
186
|
* List availability statuses
|
|
187
|
-
* @description List the organization's defined availability statuses (excluding deleted ones), ordered as shown in the dashboard. The hardcoded 'online' and 'offline' shortcuts are not listed — they are always applicable via the special field of applyUserAvailabilityStatus.
|
|
187
|
+
* @description List the organization's defined availability statuses (excluding deleted ones), ordered as shown in the dashboard. Each status carries its availability_type (whether applying it sets the user online or offline) and its display color. The hardcoded 'online' and 'offline' shortcuts are not listed — they are always applicable via the special field of applyUserAvailabilityStatus.
|
|
188
188
|
*/
|
|
189
189
|
get: operations["listAvailabilityStatuses"];
|
|
190
190
|
put?: never;
|
|
@@ -653,6 +653,26 @@ export interface paths {
|
|
|
653
653
|
patch?: never;
|
|
654
654
|
trace?: never;
|
|
655
655
|
};
|
|
656
|
+
"/companies/{external_id}/owner": {
|
|
657
|
+
parameters: {
|
|
658
|
+
query?: never;
|
|
659
|
+
header?: never;
|
|
660
|
+
path?: never;
|
|
661
|
+
cookie?: never;
|
|
662
|
+
};
|
|
663
|
+
get?: never;
|
|
664
|
+
/**
|
|
665
|
+
* Set a company's owning teammate
|
|
666
|
+
* @description Assigns the teammate who owns this account, named either by `agent_owner_id` or by `agent_owner_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 clear the owner. A teammate who is not a member of this organization is rejected, as is the AI user.
|
|
667
|
+
*/
|
|
668
|
+
put: operations["setCompanyOwner"];
|
|
669
|
+
post?: never;
|
|
670
|
+
delete?: never;
|
|
671
|
+
options?: never;
|
|
672
|
+
head?: never;
|
|
673
|
+
patch?: never;
|
|
674
|
+
trace?: never;
|
|
675
|
+
};
|
|
656
676
|
"/contacts": {
|
|
657
677
|
parameters: {
|
|
658
678
|
query?: never;
|
|
@@ -1496,6 +1516,62 @@ export interface paths {
|
|
|
1496
1516
|
patch?: never;
|
|
1497
1517
|
trace?: never;
|
|
1498
1518
|
};
|
|
1519
|
+
"/outbound/blocklist": {
|
|
1520
|
+
parameters: {
|
|
1521
|
+
query?: never;
|
|
1522
|
+
header?: never;
|
|
1523
|
+
path?: never;
|
|
1524
|
+
cookie?: never;
|
|
1525
|
+
};
|
|
1526
|
+
/**
|
|
1527
|
+
* List blocked addresses
|
|
1528
|
+
* @description Lists the do-not-contact list, newest first. Includes both entries you added and entries recorded when people opted out themselves — check `source` to tell them apart.
|
|
1529
|
+
*/
|
|
1530
|
+
get: operations["listOutboundBlocklist"];
|
|
1531
|
+
put?: never;
|
|
1532
|
+
/**
|
|
1533
|
+
* Block an address from outbound contact
|
|
1534
|
+
* @description Adds a phone number, email address, or WhatsApp user id to the do-not-contact list. Sequences will not contact a blocked address on any channel.
|
|
1535
|
+
*
|
|
1536
|
+
* Safe to call repeatedly — blocking an address that is already blocked updates the existing entry instead of failing, so retrying a queued job is harmless.
|
|
1537
|
+
*
|
|
1538
|
+
* Blocking only ever strengthens: re-blocking an address never shortens an existing expiry and never makes a permanent block temporary. Use the unblock endpoint to lift a block.
|
|
1539
|
+
*/
|
|
1540
|
+
post: operations["addToOutboundBlocklist"];
|
|
1541
|
+
/**
|
|
1542
|
+
* Unblock an address
|
|
1543
|
+
* @description Removes an address from the do-not-contact list so it can be contacted again.
|
|
1544
|
+
*
|
|
1545
|
+
* By default this only removes entries added through this API. Two kinds are left in place: entries created when someone opted out themselves, and entries that cover a single channel. Both are reported as `skipped` — pass `include_provider_entries=true` to remove them too.
|
|
1546
|
+
*/
|
|
1547
|
+
delete: operations["removeFromOutboundBlocklist"];
|
|
1548
|
+
options?: never;
|
|
1549
|
+
head?: never;
|
|
1550
|
+
patch?: never;
|
|
1551
|
+
trace?: never;
|
|
1552
|
+
};
|
|
1553
|
+
"/outbound/blocklist/check": {
|
|
1554
|
+
parameters: {
|
|
1555
|
+
query?: never;
|
|
1556
|
+
header?: never;
|
|
1557
|
+
path?: never;
|
|
1558
|
+
cookie?: never;
|
|
1559
|
+
};
|
|
1560
|
+
/**
|
|
1561
|
+
* Check whether an address is blocked
|
|
1562
|
+
* @description Tells you whether an address is currently on the do-not-contact list. Expired entries do not count as blocked.
|
|
1563
|
+
*
|
|
1564
|
+
* `blocked` means the address is suppressed on at least one channel — check the `channel` on each returned entry to see which. Note this answers for the address you ask about: someone reachable on WhatsApp without a known phone number is a separate identity, so block the WhatsApp user id too if you have it.
|
|
1565
|
+
*/
|
|
1566
|
+
get: operations["checkOutboundBlocklist"];
|
|
1567
|
+
put?: never;
|
|
1568
|
+
post?: never;
|
|
1569
|
+
delete?: never;
|
|
1570
|
+
options?: never;
|
|
1571
|
+
head?: never;
|
|
1572
|
+
patch?: never;
|
|
1573
|
+
trace?: never;
|
|
1574
|
+
};
|
|
1499
1575
|
"/email": {
|
|
1500
1576
|
parameters: {
|
|
1501
1577
|
query?: never;
|
|
@@ -2803,6 +2879,51 @@ export interface paths {
|
|
|
2803
2879
|
patch?: never;
|
|
2804
2880
|
trace?: never;
|
|
2805
2881
|
};
|
|
2882
|
+
"/sequences/{sequence_id}/contacts/exit": {
|
|
2883
|
+
parameters: {
|
|
2884
|
+
query?: never;
|
|
2885
|
+
header?: never;
|
|
2886
|
+
path?: never;
|
|
2887
|
+
cookie?: never;
|
|
2888
|
+
};
|
|
2889
|
+
get?: never;
|
|
2890
|
+
put?: never;
|
|
2891
|
+
/**
|
|
2892
|
+
* Remove a contact from a sequence
|
|
2893
|
+
* @description
|
|
2894
|
+
* Stop a sequence for one contact. No further steps are scheduled for them; the rest of the sequence
|
|
2895
|
+
* carries on for everyone else.
|
|
2896
|
+
*
|
|
2897
|
+
* One caveat worth building around: a step whose batch has already been picked up for sending may
|
|
2898
|
+
* still go out, and batches can sit waiting for the sequence's send window to open. So a message sent
|
|
2899
|
+
* within minutes of the removal — or the next morning, if the window closed overnight — is possible.
|
|
2900
|
+
* Everything after that stops.
|
|
2901
|
+
*
|
|
2902
|
+
* Identify the person by `contact_id`, `email`, or `phone_number` — whichever your system holds.
|
|
2903
|
+
* Send exactly one. Phone numbers match regardless of formatting.
|
|
2904
|
+
*
|
|
2905
|
+
* Removal works on the person, not on one record. Whichever identifier you send, any other contact
|
|
2906
|
+
* record sharing that person's phone number is removed too — duplicates are common and leaving one
|
|
2907
|
+
* behind would keep calling them. The flip side: if two people genuinely share a line, such as a
|
|
2908
|
+
* switchboard or a family phone, both are removed. `contact_ids` in the response lists exactly which
|
|
2909
|
+
* records were affected, so check it if that matters to you.
|
|
2910
|
+
*
|
|
2911
|
+
* Removal ends their current enrollment. Adding the same contact to the sequence again later enrolls
|
|
2912
|
+
* them afresh, starting from the first step — it does not resume where they stopped. It applies only
|
|
2913
|
+
* to this sequence, so to stop contacting someone everywhere, add them to the outbound blocklist
|
|
2914
|
+
* instead.
|
|
2915
|
+
*
|
|
2916
|
+
* Safe to retry: a contact who is already out of the sequence comes back as `not_enrolled` rather
|
|
2917
|
+
* than an error.
|
|
2918
|
+
*
|
|
2919
|
+
*/
|
|
2920
|
+
post: operations["exitContactFromSequence"];
|
|
2921
|
+
delete?: never;
|
|
2922
|
+
options?: never;
|
|
2923
|
+
head?: never;
|
|
2924
|
+
patch?: never;
|
|
2925
|
+
trace?: never;
|
|
2926
|
+
};
|
|
2806
2927
|
"/teams": {
|
|
2807
2928
|
parameters: {
|
|
2808
2929
|
query?: never;
|
|
@@ -4676,6 +4797,74 @@ export interface paths {
|
|
|
4676
4797
|
patch?: never;
|
|
4677
4798
|
trace?: never;
|
|
4678
4799
|
};
|
|
4800
|
+
"/salesforce/ai-reply-templates": {
|
|
4801
|
+
parameters: {
|
|
4802
|
+
query?: never;
|
|
4803
|
+
header?: never;
|
|
4804
|
+
path?: never;
|
|
4805
|
+
cookie?: never;
|
|
4806
|
+
};
|
|
4807
|
+
/**
|
|
4808
|
+
* List AI reply templates
|
|
4809
|
+
* @description List the AI agent's reply templates for the organization (Salesforce v2 integration only): greeting/signature HTML rendered around or below the AI's autopilot Case emails, with one default and optional per-session auto-selection rules.
|
|
4810
|
+
*/
|
|
4811
|
+
get: operations["listSalesforceAiReplyTemplates"];
|
|
4812
|
+
put?: never;
|
|
4813
|
+
/**
|
|
4814
|
+
* Create an AI reply template
|
|
4815
|
+
* @description Create a reply template (Salesforce v2 integration only). The organization's first template becomes the default automatically; `is_default: true` on a later one moves the default atomically. Template HTML. Put {{content}} where the AI agent's reply goes (anything above is the greeting, anything below the signature); without it the template is appended below the reply. Variables: system objects {{contact.full_name}} / {{contact.first_name}} / {{contact.email}} / {{session.number}} / {{session.language}} / {{org.name}} (HTML-escaped) and any session attribute such as {{sf_case_Regards__c}} (inserted raw — Salesforce formula fields hold HTML fragments — then sanitized). {{#if sf_case_Language__c == "de"}}…{{else}}…{{/if}} conditions are supported. Scripts, handlers and non-https images are stripped; {{content}} may appear at most once. Optional `rules` (ANDed attribute/tag conditions) make the template pick itself for matching sessions; the first matching rule-bearing template in creation order wins, otherwise the default.
|
|
4816
|
+
*/
|
|
4817
|
+
post: operations["createSalesforceAiReplyTemplate"];
|
|
4818
|
+
delete?: never;
|
|
4819
|
+
options?: never;
|
|
4820
|
+
head?: never;
|
|
4821
|
+
patch?: never;
|
|
4822
|
+
trace?: never;
|
|
4823
|
+
};
|
|
4824
|
+
"/salesforce/ai-reply-templates/{id}": {
|
|
4825
|
+
parameters: {
|
|
4826
|
+
query?: never;
|
|
4827
|
+
header?: never;
|
|
4828
|
+
path?: never;
|
|
4829
|
+
cookie?: never;
|
|
4830
|
+
};
|
|
4831
|
+
get?: never;
|
|
4832
|
+
put?: never;
|
|
4833
|
+
post?: never;
|
|
4834
|
+
/**
|
|
4835
|
+
* Delete an AI reply template
|
|
4836
|
+
* @description Permanently delete a reply template. Deleting the default leaves the organization without one (the AI replies plain) until another template is made default.
|
|
4837
|
+
*/
|
|
4838
|
+
delete: operations["deleteSalesforceAiReplyTemplate"];
|
|
4839
|
+
options?: never;
|
|
4840
|
+
head?: never;
|
|
4841
|
+
/**
|
|
4842
|
+
* Update an AI reply template
|
|
4843
|
+
* @description Partially update a reply template: name, template_html, is_default (true moves the default onto it), rules (null clears them). Template HTML. Put {{content}} where the AI agent's reply goes (anything above is the greeting, anything below the signature); without it the template is appended below the reply. Variables: system objects {{contact.full_name}} / {{contact.first_name}} / {{contact.email}} / {{session.number}} / {{session.language}} / {{org.name}} (HTML-escaped) and any session attribute such as {{sf_case_Regards__c}} (inserted raw — Salesforce formula fields hold HTML fragments — then sanitized). {{#if sf_case_Language__c == "de"}}…{{else}}…{{/if}} conditions are supported. Scripts, handlers and non-https images are stripped; {{content}} may appear at most once.
|
|
4844
|
+
*/
|
|
4845
|
+
patch: operations["updateSalesforceAiReplyTemplate"];
|
|
4846
|
+
trace?: never;
|
|
4847
|
+
};
|
|
4848
|
+
"/salesforce/ai-reply-templates/preview": {
|
|
4849
|
+
parameters: {
|
|
4850
|
+
query?: never;
|
|
4851
|
+
header?: never;
|
|
4852
|
+
path?: never;
|
|
4853
|
+
cookie?: never;
|
|
4854
|
+
};
|
|
4855
|
+
get?: never;
|
|
4856
|
+
put?: never;
|
|
4857
|
+
/**
|
|
4858
|
+
* Preview an AI reply template
|
|
4859
|
+
* @description Render a template (saved or not) exactly as the AI agent would send it, against a real session of the organization: the session with `session_number`, else the most recent Salesforce-linked session, else an empty context. Returns the rendered HTML and text, the session used, and the variables that came out empty. Requires the write scope because it resolves real contact data.
|
|
4860
|
+
*/
|
|
4861
|
+
post: operations["previewSalesforceAiReplyTemplate"];
|
|
4862
|
+
delete?: never;
|
|
4863
|
+
options?: never;
|
|
4864
|
+
head?: never;
|
|
4865
|
+
patch?: never;
|
|
4866
|
+
trace?: never;
|
|
4867
|
+
};
|
|
4679
4868
|
"/companion/notify-team": {
|
|
4680
4869
|
parameters: {
|
|
4681
4870
|
query?: never;
|
|
@@ -4929,7 +5118,7 @@ export type webhooks = Record<string, never>;
|
|
|
4929
5118
|
export interface components {
|
|
4930
5119
|
schemas: {
|
|
4931
5120
|
/** @enum {string} */
|
|
4932
|
-
SessionChannel: "web" | "email" | "phone_voice" | "slack" | "sms" | "whatsapp" | "instagram" | "messenger" | "api" | "web_voice" | "twitter" | "twitter_mentions";
|
|
5121
|
+
SessionChannel: "web" | "email" | "phone_voice" | "slack" | "sms" | "whatsapp" | "instagram" | "messenger" | "api" | "web_voice" | "twitter" | "twitter_mentions" | "app_review";
|
|
4933
5122
|
DefaultOfficeHoursInputDto: {
|
|
4934
5123
|
/** @description IANA timezone for the default schedule (e.g. "America/New_York", "Europe/London", "Asia/Tokyo") */
|
|
4935
5124
|
iana_timezone: string;
|
|
@@ -5060,6 +5249,38 @@ export interface components {
|
|
|
5060
5249
|
/** @enum {string} */
|
|
5061
5250
|
support_assignment_strategy?: "least-busy" | "round-robin" | "unassigned";
|
|
5062
5251
|
};
|
|
5252
|
+
SalesforceReplyTemplateRules: {
|
|
5253
|
+
conditions: ({
|
|
5254
|
+
/** @constant */
|
|
5255
|
+
type: "attribute";
|
|
5256
|
+
key: string;
|
|
5257
|
+
/** @enum {string} */
|
|
5258
|
+
op: "exists" | "not_exists" | "eq" | "neq" | "contains";
|
|
5259
|
+
value?: string;
|
|
5260
|
+
} | {
|
|
5261
|
+
/** @constant */
|
|
5262
|
+
type: "tag";
|
|
5263
|
+
/** @enum {string} */
|
|
5264
|
+
op: "has" | "not_has";
|
|
5265
|
+
value: string;
|
|
5266
|
+
})[];
|
|
5267
|
+
};
|
|
5268
|
+
CreateSalesforceAiReplyTemplateDto: {
|
|
5269
|
+
name: string;
|
|
5270
|
+
template_html: string;
|
|
5271
|
+
is_default?: boolean;
|
|
5272
|
+
rules?: components["schemas"]["SalesforceReplyTemplateRules"] | null;
|
|
5273
|
+
};
|
|
5274
|
+
UpdateSalesforceAiReplyTemplateDto: {
|
|
5275
|
+
name?: string;
|
|
5276
|
+
template_html?: string;
|
|
5277
|
+
is_default?: boolean;
|
|
5278
|
+
rules?: components["schemas"]["SalesforceReplyTemplateRules"] | null;
|
|
5279
|
+
};
|
|
5280
|
+
PreviewSalesforceAiReplyTemplateDto: {
|
|
5281
|
+
template_html: string;
|
|
5282
|
+
session_number?: number;
|
|
5283
|
+
};
|
|
5063
5284
|
CreateVocCategoryDto: {
|
|
5064
5285
|
name: string;
|
|
5065
5286
|
description?: string | null;
|
|
@@ -5218,12 +5439,23 @@ export interface components {
|
|
|
5218
5439
|
}[];
|
|
5219
5440
|
})[];
|
|
5220
5441
|
};
|
|
5442
|
+
CompanyOwnerInput: {
|
|
5443
|
+
/** @description OpenCX user id of the owning teammate */
|
|
5444
|
+
id?: number;
|
|
5445
|
+
/**
|
|
5446
|
+
* Format: email
|
|
5447
|
+
* @description Email of the owning teammate, matched case-insensitively against this organization’s members
|
|
5448
|
+
*/
|
|
5449
|
+
email?: string;
|
|
5450
|
+
};
|
|
5221
5451
|
UpsertCompanyDto: {
|
|
5222
5452
|
external_id: string;
|
|
5223
5453
|
name?: string;
|
|
5224
5454
|
custom_data?: {
|
|
5225
5455
|
[key: string]: string | number | boolean | null;
|
|
5226
5456
|
};
|
|
5457
|
+
/** @description Set the owning teammate while creating or updating. Omit to leave ownership unchanged; null clears it. */
|
|
5458
|
+
owner?: components["schemas"]["CompanyOwnerInput"] | null;
|
|
5227
5459
|
};
|
|
5228
5460
|
BulkLinkContactsDto: {
|
|
5229
5461
|
links: {
|
|
@@ -5246,6 +5478,10 @@ export interface components {
|
|
|
5246
5478
|
LinkContactCompanyDto: {
|
|
5247
5479
|
external_id: string;
|
|
5248
5480
|
};
|
|
5481
|
+
SetCompanyOwnerDto: {
|
|
5482
|
+
/** @description The teammate who owns this account. Null leaves the company unowned. */
|
|
5483
|
+
owner: components["schemas"]["CompanyOwnerInput"] | null;
|
|
5484
|
+
};
|
|
5249
5485
|
MakeOutboundCallDto: {
|
|
5250
5486
|
phoneAgentId: string;
|
|
5251
5487
|
contact: {
|
|
@@ -6169,6 +6405,22 @@ export interface components {
|
|
|
6169
6405
|
phone_number: string;
|
|
6170
6406
|
})[];
|
|
6171
6407
|
};
|
|
6408
|
+
ExitContactFromSequenceDto: {
|
|
6409
|
+
/**
|
|
6410
|
+
* Format: uuid
|
|
6411
|
+
* @description The contact to remove.
|
|
6412
|
+
*/
|
|
6413
|
+
contact_id?: string;
|
|
6414
|
+
/**
|
|
6415
|
+
* Format: email
|
|
6416
|
+
* @description Email address of the contact to remove.
|
|
6417
|
+
*/
|
|
6418
|
+
email?: string;
|
|
6419
|
+
/** @description Phone number of the contact to remove. Formatting does not matter. */
|
|
6420
|
+
phone_number?: string;
|
|
6421
|
+
/** @description Why they are being removed. Recorded against the removal for your own records. */
|
|
6422
|
+
reason?: string;
|
|
6423
|
+
};
|
|
6172
6424
|
CreateTrainingPublicDto: {
|
|
6173
6425
|
/** @description The scenario title or trigger phrase */
|
|
6174
6426
|
title: string;
|
|
@@ -6266,7 +6518,7 @@ export interface components {
|
|
|
6266
6518
|
* @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.
|
|
6267
6519
|
* @enum {string}
|
|
6268
6520
|
*/
|
|
6269
|
-
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" | "sequence-completed" | "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" | "ticket-team-changed" | "session-updated"
|
|
6521
|
+
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" | "sequence-completed" | "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" | "ticket-team-changed" | "session-updated";
|
|
6270
6522
|
/** @description Trigger-specific configuration (e.g. cron expression for cron-trigger) */
|
|
6271
6523
|
trigger_configuration?: unknown | null;
|
|
6272
6524
|
/** @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). */
|
|
@@ -6283,7 +6535,7 @@ export interface components {
|
|
|
6283
6535
|
* @description New trigger type
|
|
6284
6536
|
* @enum {string}
|
|
6285
6537
|
*/
|
|
6286
|
-
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" | "sequence-completed" | "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" | "ticket-team-changed" | "session-updated"
|
|
6538
|
+
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" | "sequence-completed" | "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" | "ticket-team-changed" | "session-updated";
|
|
6287
6539
|
/** @description New trigger configuration */
|
|
6288
6540
|
trigger_configuration?: unknown | null;
|
|
6289
6541
|
/** @description New workflow step/block definitions (replaces existing blocks) */
|
|
@@ -6296,7 +6548,7 @@ export interface components {
|
|
|
6296
6548
|
* @description Trigger type to validate against
|
|
6297
6549
|
* @enum {string}
|
|
6298
6550
|
*/
|
|
6299
|
-
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" | "sequence-completed" | "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" | "ticket-team-changed" | "session-updated"
|
|
6551
|
+
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" | "sequence-completed" | "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" | "ticket-team-changed" | "session-updated";
|
|
6300
6552
|
/** @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. */
|
|
6301
6553
|
trigger_configuration?: unknown | null;
|
|
6302
6554
|
/** @description Workflow blocks to validate */
|
|
@@ -6309,7 +6561,7 @@ export interface components {
|
|
|
6309
6561
|
* @description Trigger type whose payload shape this synthetic payload should match
|
|
6310
6562
|
* @enum {string}
|
|
6311
6563
|
*/
|
|
6312
|
-
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" | "sequence-completed" | "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" | "ticket-team-changed" | "session-updated"
|
|
6564
|
+
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" | "sequence-completed" | "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" | "ticket-team-changed" | "session-updated";
|
|
6313
6565
|
payload: unknown;
|
|
6314
6566
|
};
|
|
6315
6567
|
};
|
|
@@ -6468,6 +6720,19 @@ export interface components {
|
|
|
6468
6720
|
/** @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. */
|
|
6469
6721
|
expires_in_hours?: number;
|
|
6470
6722
|
};
|
|
6723
|
+
AddToOutboundBlocklistDto: {
|
|
6724
|
+
/**
|
|
6725
|
+
* @description What kind of address this is. "phone" is stored in international format, "email" is lowercased, and "whatsapp_user_id" is the WhatsApp id of a contact whose phone number is hidden.
|
|
6726
|
+
* @enum {string}
|
|
6727
|
+
*/
|
|
6728
|
+
identity_type: "phone" | "email" | "whatsapp_user_id";
|
|
6729
|
+
/** @description The address itself — e.g. "+962790007001" or "lead@example.com". */
|
|
6730
|
+
identity_value: string;
|
|
6731
|
+
/** @description Why this address is being blocked. Stored for your own auditing. */
|
|
6732
|
+
reason?: string;
|
|
6733
|
+
/** @description When the block should lift automatically, as an ISO 8601 timestamp. Must be in the future. Omit for a permanent block. */
|
|
6734
|
+
expires_at?: string | null;
|
|
6735
|
+
};
|
|
6471
6736
|
CreateEmailTemplatePublicInput: components["schemas"]["CreateEmailTemplateBodyDto"];
|
|
6472
6737
|
UpdateEmailTemplatePublicInput: components["schemas"]["CreateEmailTemplateBodyDto"];
|
|
6473
6738
|
CreateMacroInput: {
|
|
@@ -7021,6 +7286,7 @@ export interface components {
|
|
|
7021
7286
|
custom_data?: {
|
|
7022
7287
|
[key: string]: unknown;
|
|
7023
7288
|
} | null;
|
|
7289
|
+
assist_mode?: boolean;
|
|
7024
7290
|
} | {
|
|
7025
7291
|
actionCalls?: {
|
|
7026
7292
|
action: {
|
|
@@ -7064,6 +7330,7 @@ export interface components {
|
|
|
7064
7330
|
[key: string]: unknown;
|
|
7065
7331
|
} | null;
|
|
7066
7332
|
whatsapp_template_request?: unknown | null;
|
|
7333
|
+
assist_mode?: boolean;
|
|
7067
7334
|
whatsapp_template_snapshot?: unknown | null;
|
|
7068
7335
|
rule_violation_reflections?: {
|
|
7069
7336
|
rule_name: string;
|
|
@@ -7221,6 +7488,16 @@ export interface components {
|
|
|
7221
7488
|
name: string;
|
|
7222
7489
|
group_ids: string[];
|
|
7223
7490
|
sort_order: number;
|
|
7491
|
+
/**
|
|
7492
|
+
* @description What applying the status does to the agent: 'online' turns main availability on with the status's teams; 'offline' turns main availability and every support team off (e.g. a Break status)
|
|
7493
|
+
* @enum {string}
|
|
7494
|
+
*/
|
|
7495
|
+
availability_type: "offline" | "online";
|
|
7496
|
+
/**
|
|
7497
|
+
* @description Display color for the status dot across the dashboard
|
|
7498
|
+
* @enum {string}
|
|
7499
|
+
*/
|
|
7500
|
+
color: "blue" | "gray" | "green" | "orange" | "red";
|
|
7224
7501
|
/** Format: date-time */
|
|
7225
7502
|
created_at: string;
|
|
7226
7503
|
/** Format: date-time */
|
|
@@ -7260,24 +7537,49 @@ export interface components {
|
|
|
7260
7537
|
status_id: string;
|
|
7261
7538
|
/** @description Name of the applied availability status */
|
|
7262
7539
|
name: string;
|
|
7540
|
+
/**
|
|
7541
|
+
* @description Whether the applied status sets the agent online or offline
|
|
7542
|
+
* @enum {string}
|
|
7543
|
+
*/
|
|
7544
|
+
availability_type: "offline" | "online";
|
|
7545
|
+
/**
|
|
7546
|
+
* @description Display color configured on the applied status
|
|
7547
|
+
* @enum {string}
|
|
7548
|
+
*/
|
|
7549
|
+
color: "blue" | "gray" | "green" | "orange" | "red";
|
|
7263
7550
|
} | {
|
|
7264
7551
|
/**
|
|
7265
7552
|
* @description Main availability on and available on every support team
|
|
7266
7553
|
* @constant
|
|
7267
7554
|
*/
|
|
7268
7555
|
kind: "online";
|
|
7556
|
+
/**
|
|
7557
|
+
* @description Always 'green' — the fixed color of the derived online state
|
|
7558
|
+
* @enum {string}
|
|
7559
|
+
*/
|
|
7560
|
+
color: "blue" | "gray" | "green" | "orange" | "red";
|
|
7269
7561
|
} | {
|
|
7270
7562
|
/**
|
|
7271
7563
|
* @description Main availability off
|
|
7272
7564
|
* @constant
|
|
7273
7565
|
*/
|
|
7274
7566
|
kind: "offline";
|
|
7567
|
+
/**
|
|
7568
|
+
* @description Always 'gray' — the fixed color of the derived offline state
|
|
7569
|
+
* @enum {string}
|
|
7570
|
+
*/
|
|
7571
|
+
color: "blue" | "gray" | "green" | "orange" | "red";
|
|
7275
7572
|
} | {
|
|
7276
7573
|
/**
|
|
7277
7574
|
* @description Main availability on but only available on some support teams
|
|
7278
7575
|
* @constant
|
|
7279
7576
|
*/
|
|
7280
7577
|
kind: "mixed";
|
|
7578
|
+
/**
|
|
7579
|
+
* @description Always 'green' — mixed is an online-related state
|
|
7580
|
+
* @enum {string}
|
|
7581
|
+
*/
|
|
7582
|
+
color: "blue" | "gray" | "green" | "orange" | "red";
|
|
7281
7583
|
/** @description Support teams the user is currently available on */
|
|
7282
7584
|
available_teams: {
|
|
7283
7585
|
id: string;
|
|
@@ -7322,6 +7624,27 @@ export interface components {
|
|
|
7322
7624
|
/** Format: date-time */
|
|
7323
7625
|
updated_at: string;
|
|
7324
7626
|
};
|
|
7627
|
+
SalesforceAiReplyTemplateDto: {
|
|
7628
|
+
/** Format: uuid */
|
|
7629
|
+
id: string;
|
|
7630
|
+
name: string;
|
|
7631
|
+
template_html: string;
|
|
7632
|
+
is_default: boolean;
|
|
7633
|
+
rules: components["schemas"]["SalesforceReplyTemplateRules"] | null;
|
|
7634
|
+
/** Format: date-time */
|
|
7635
|
+
created_at: string;
|
|
7636
|
+
/** Format: date-time */
|
|
7637
|
+
updated_at: string;
|
|
7638
|
+
};
|
|
7639
|
+
SalesforceAiReplyTemplatesListDto: {
|
|
7640
|
+
templates: components["schemas"]["SalesforceAiReplyTemplateDto"][];
|
|
7641
|
+
};
|
|
7642
|
+
SalesforceAiReplyTemplatePreviewDto: {
|
|
7643
|
+
html: string;
|
|
7644
|
+
text: string;
|
|
7645
|
+
session_number: number | null;
|
|
7646
|
+
missing_variables: string[];
|
|
7647
|
+
};
|
|
7325
7648
|
VersionHistoryItemDto: {
|
|
7326
7649
|
/** Format: uuid */
|
|
7327
7650
|
id: string;
|
|
@@ -7388,6 +7711,13 @@ export interface components {
|
|
|
7388
7711
|
customDataKeys?: string[];
|
|
7389
7712
|
}[];
|
|
7390
7713
|
};
|
|
7714
|
+
CompanyAgentOwner: {
|
|
7715
|
+
/** @description The teammate’s OpenCX user id */
|
|
7716
|
+
id: number;
|
|
7717
|
+
name: string;
|
|
7718
|
+
/** Format: email */
|
|
7719
|
+
email: string;
|
|
7720
|
+
};
|
|
7391
7721
|
Company: {
|
|
7392
7722
|
/** Format: uuid */
|
|
7393
7723
|
id: string;
|
|
@@ -7397,6 +7727,8 @@ export interface components {
|
|
|
7397
7727
|
custom_data: {
|
|
7398
7728
|
[key: string]: string | number | boolean;
|
|
7399
7729
|
} | null;
|
|
7730
|
+
/** @description The teammate who owns this account. Null when nobody owns it, which is the ordinary state. */
|
|
7731
|
+
agent_owner: components["schemas"]["CompanyAgentOwner"] | null;
|
|
7400
7732
|
/** @description ISO 8601 timestamp of when the company was created */
|
|
7401
7733
|
created_at: string;
|
|
7402
7734
|
/** @description ISO 8601 timestamp of when the company was last updated */
|
|
@@ -8747,6 +9079,23 @@ export interface components {
|
|
|
8747
9079
|
description: string | null;
|
|
8748
9080
|
}[];
|
|
8749
9081
|
};
|
|
9082
|
+
OutboundBlocklistEntryDto: {
|
|
9083
|
+
id: string;
|
|
9084
|
+
/** @description "phone", "email" or "whatsapp_user_id". */
|
|
9085
|
+
identity_type: string;
|
|
9086
|
+
/** @description The address, as we stored it after normalizing. */
|
|
9087
|
+
identity_value: string;
|
|
9088
|
+
/** @description The channel this entry covers. Null means every channel — that is what entries added through this API always are. A specific channel appears when someone opted out of that channel alone. */
|
|
9089
|
+
channel: string | null;
|
|
9090
|
+
/** @description Why the address was blocked. */
|
|
9091
|
+
reason: string;
|
|
9092
|
+
/** @description Where the entry came from. "api" is one you added. Anything else was recorded when the person opted out themselves, and is not removable by default. */
|
|
9093
|
+
source: string | null;
|
|
9094
|
+
/** Format: date-time */
|
|
9095
|
+
created_at: string;
|
|
9096
|
+
/** @description When the block lifts automatically. Null means it never does. */
|
|
9097
|
+
expires_at: string | null;
|
|
9098
|
+
};
|
|
8750
9099
|
SaveContactOutput: {
|
|
8751
9100
|
/** Format: uuid */
|
|
8752
9101
|
id?: string;
|
|
@@ -9052,6 +9401,7 @@ export interface components {
|
|
|
9052
9401
|
[key: string]: unknown;
|
|
9053
9402
|
} | null;
|
|
9054
9403
|
whatsapp_template_request?: unknown | null;
|
|
9404
|
+
assist_mode?: boolean;
|
|
9055
9405
|
whatsapp_template_snapshot?: unknown | null;
|
|
9056
9406
|
rule_violation_reflections?: {
|
|
9057
9407
|
rule_name: string;
|
|
@@ -9904,6 +10254,17 @@ export interface components {
|
|
|
9904
10254
|
CreateSequenceOutput: {
|
|
9905
10255
|
id: string;
|
|
9906
10256
|
};
|
|
10257
|
+
ExitContactFromSequenceOutputDto: {
|
|
10258
|
+
/**
|
|
10259
|
+
* @description `exited` — the contact was removed and no further steps will be scheduled for them. `not_enrolled` — the contact is not currently in this sequence (already removed, already replied, or finished it), so nothing changed. `contact_not_found` — no contact in your workspace matches that identifier, which usually means the email or phone number does not match the one we hold.
|
|
10260
|
+
* @enum {string}
|
|
10261
|
+
*/
|
|
10262
|
+
outcome: "exited" | "not_enrolled" | "contact_not_found";
|
|
10263
|
+
/** @description How many enrollments were stopped. A continuous sequence can hold the same person more than once, and all of them are stopped together. */
|
|
10264
|
+
exited_enrollments: number;
|
|
10265
|
+
/** @description The contact records the identifier matched, for your own reconciliation. */
|
|
10266
|
+
contact_ids: string[];
|
|
10267
|
+
};
|
|
9907
10268
|
TagPublicResponseDto: {
|
|
9908
10269
|
/** @description The tag name (unique per org) */
|
|
9909
10270
|
tag_name: string;
|
|
@@ -10532,6 +10893,16 @@ export interface components {
|
|
|
10532
10893
|
page: number;
|
|
10533
10894
|
has_more: boolean;
|
|
10534
10895
|
};
|
|
10896
|
+
RemoveFromOutboundBlocklistOutputDto: {
|
|
10897
|
+
/** @description How many entries were removed. */
|
|
10898
|
+
removed: number;
|
|
10899
|
+
/** @description How many matching entries were left in place because they were not added through this API. When this is above zero the address is still blocked — retry with include_provider_entries=true if you intend to remove those too. */
|
|
10900
|
+
skipped: number;
|
|
10901
|
+
};
|
|
10902
|
+
CheckOutboundBlocklistOutputDto: {
|
|
10903
|
+
blocked: boolean;
|
|
10904
|
+
entries: components["schemas"]["OutboundBlocklistEntryDto"][];
|
|
10905
|
+
};
|
|
10535
10906
|
GetCustomDomainsOutput: {
|
|
10536
10907
|
domainName: string;
|
|
10537
10908
|
domainNameVerificationStatus: string | null;
|
|
@@ -12027,6 +12398,41 @@ export interface operations {
|
|
|
12027
12398
|
};
|
|
12028
12399
|
};
|
|
12029
12400
|
};
|
|
12401
|
+
setCompanyOwner: {
|
|
12402
|
+
parameters: {
|
|
12403
|
+
query?: never;
|
|
12404
|
+
header?: never;
|
|
12405
|
+
path: {
|
|
12406
|
+
external_id: string;
|
|
12407
|
+
};
|
|
12408
|
+
cookie?: never;
|
|
12409
|
+
};
|
|
12410
|
+
requestBody: {
|
|
12411
|
+
content: {
|
|
12412
|
+
"application/json": components["schemas"]["SetCompanyOwnerDto"];
|
|
12413
|
+
};
|
|
12414
|
+
};
|
|
12415
|
+
responses: {
|
|
12416
|
+
/** @description Default Response */
|
|
12417
|
+
200: {
|
|
12418
|
+
headers: {
|
|
12419
|
+
[name: string]: unknown;
|
|
12420
|
+
};
|
|
12421
|
+
content: {
|
|
12422
|
+
"application/json": components["schemas"]["Company"];
|
|
12423
|
+
};
|
|
12424
|
+
};
|
|
12425
|
+
/** @description Internal Server Error */
|
|
12426
|
+
500: {
|
|
12427
|
+
headers: {
|
|
12428
|
+
[name: string]: unknown;
|
|
12429
|
+
};
|
|
12430
|
+
content: {
|
|
12431
|
+
"application/json": components["schemas"]["ErrorDto"];
|
|
12432
|
+
};
|
|
12433
|
+
};
|
|
12434
|
+
};
|
|
12435
|
+
};
|
|
12030
12436
|
listContacts: {
|
|
12031
12437
|
parameters: {
|
|
12032
12438
|
query?: {
|
|
@@ -13789,16 +14195,157 @@ export interface operations {
|
|
|
13789
14195
|
};
|
|
13790
14196
|
};
|
|
13791
14197
|
};
|
|
13792
|
-
|
|
14198
|
+
listOutboundBlocklist: {
|
|
13793
14199
|
parameters: {
|
|
13794
|
-
query?:
|
|
14200
|
+
query?: {
|
|
14201
|
+
/** @description What kind of address this is. "phone" is stored in international format, "email" is lowercased, and "whatsapp_user_id" is the WhatsApp id of a contact whose phone number is hidden. */
|
|
14202
|
+
identity_type?: "phone" | "email" | "whatsapp_user_id";
|
|
14203
|
+
/** @description Cursor from a previous response. */
|
|
14204
|
+
cursor?: string;
|
|
14205
|
+
limit?: number;
|
|
14206
|
+
};
|
|
13795
14207
|
header?: never;
|
|
13796
14208
|
path?: never;
|
|
13797
14209
|
cookie?: never;
|
|
13798
14210
|
};
|
|
13799
|
-
requestBody
|
|
13800
|
-
|
|
13801
|
-
|
|
14211
|
+
requestBody?: never;
|
|
14212
|
+
responses: {
|
|
14213
|
+
/** @description Default Response */
|
|
14214
|
+
200: {
|
|
14215
|
+
headers: {
|
|
14216
|
+
[name: string]: unknown;
|
|
14217
|
+
};
|
|
14218
|
+
content: {
|
|
14219
|
+
"application/json": {
|
|
14220
|
+
items: components["schemas"]["OutboundBlocklistEntryDto"][];
|
|
14221
|
+
next: string | null;
|
|
14222
|
+
};
|
|
14223
|
+
};
|
|
14224
|
+
};
|
|
14225
|
+
/** @description Internal Server Error */
|
|
14226
|
+
500: {
|
|
14227
|
+
headers: {
|
|
14228
|
+
[name: string]: unknown;
|
|
14229
|
+
};
|
|
14230
|
+
content: {
|
|
14231
|
+
"application/json": components["schemas"]["ErrorDto"];
|
|
14232
|
+
};
|
|
14233
|
+
};
|
|
14234
|
+
};
|
|
14235
|
+
};
|
|
14236
|
+
addToOutboundBlocklist: {
|
|
14237
|
+
parameters: {
|
|
14238
|
+
query?: never;
|
|
14239
|
+
header?: never;
|
|
14240
|
+
path?: never;
|
|
14241
|
+
cookie?: never;
|
|
14242
|
+
};
|
|
14243
|
+
requestBody: {
|
|
14244
|
+
content: {
|
|
14245
|
+
"application/json": components["schemas"]["AddToOutboundBlocklistDto"];
|
|
14246
|
+
};
|
|
14247
|
+
};
|
|
14248
|
+
responses: {
|
|
14249
|
+
/** @description Default Response */
|
|
14250
|
+
201: {
|
|
14251
|
+
headers: {
|
|
14252
|
+
[name: string]: unknown;
|
|
14253
|
+
};
|
|
14254
|
+
content: {
|
|
14255
|
+
"application/json": components["schemas"]["OutboundBlocklistEntryDto"];
|
|
14256
|
+
};
|
|
14257
|
+
};
|
|
14258
|
+
/** @description Internal Server Error */
|
|
14259
|
+
500: {
|
|
14260
|
+
headers: {
|
|
14261
|
+
[name: string]: unknown;
|
|
14262
|
+
};
|
|
14263
|
+
content: {
|
|
14264
|
+
"application/json": components["schemas"]["ErrorDto"];
|
|
14265
|
+
};
|
|
14266
|
+
};
|
|
14267
|
+
};
|
|
14268
|
+
};
|
|
14269
|
+
removeFromOutboundBlocklist: {
|
|
14270
|
+
parameters: {
|
|
14271
|
+
query: {
|
|
14272
|
+
/** @description What kind of address this is. "phone" is stored in international format, "email" is lowercased, and "whatsapp_user_id" is the WhatsApp id of a contact whose phone number is hidden. */
|
|
14273
|
+
identity_type: "phone" | "email" | "whatsapp_user_id";
|
|
14274
|
+
/** @description The address itself — e.g. "+962790007001" or "lead@example.com". */
|
|
14275
|
+
identity_value: string;
|
|
14276
|
+
/** @description Send "true" to also remove entries recorded when the person opted out themselves, and entries scoped to a single channel. Accepts "true" or "false"; defaults to "false". */
|
|
14277
|
+
include_provider_entries?: string;
|
|
14278
|
+
};
|
|
14279
|
+
header?: never;
|
|
14280
|
+
path?: never;
|
|
14281
|
+
cookie?: never;
|
|
14282
|
+
};
|
|
14283
|
+
requestBody?: never;
|
|
14284
|
+
responses: {
|
|
14285
|
+
/** @description Default Response */
|
|
14286
|
+
200: {
|
|
14287
|
+
headers: {
|
|
14288
|
+
[name: string]: unknown;
|
|
14289
|
+
};
|
|
14290
|
+
content: {
|
|
14291
|
+
"application/json": components["schemas"]["RemoveFromOutboundBlocklistOutputDto"];
|
|
14292
|
+
};
|
|
14293
|
+
};
|
|
14294
|
+
/** @description Internal Server Error */
|
|
14295
|
+
500: {
|
|
14296
|
+
headers: {
|
|
14297
|
+
[name: string]: unknown;
|
|
14298
|
+
};
|
|
14299
|
+
content: {
|
|
14300
|
+
"application/json": components["schemas"]["ErrorDto"];
|
|
14301
|
+
};
|
|
14302
|
+
};
|
|
14303
|
+
};
|
|
14304
|
+
};
|
|
14305
|
+
checkOutboundBlocklist: {
|
|
14306
|
+
parameters: {
|
|
14307
|
+
query: {
|
|
14308
|
+
/** @description What kind of address this is. "phone" is stored in international format, "email" is lowercased, and "whatsapp_user_id" is the WhatsApp id of a contact whose phone number is hidden. */
|
|
14309
|
+
identity_type: "phone" | "email" | "whatsapp_user_id";
|
|
14310
|
+
/** @description The address itself — e.g. "+962790007001" or "lead@example.com". */
|
|
14311
|
+
identity_value: string;
|
|
14312
|
+
};
|
|
14313
|
+
header?: never;
|
|
14314
|
+
path?: never;
|
|
14315
|
+
cookie?: never;
|
|
14316
|
+
};
|
|
14317
|
+
requestBody?: never;
|
|
14318
|
+
responses: {
|
|
14319
|
+
/** @description Default Response */
|
|
14320
|
+
200: {
|
|
14321
|
+
headers: {
|
|
14322
|
+
[name: string]: unknown;
|
|
14323
|
+
};
|
|
14324
|
+
content: {
|
|
14325
|
+
"application/json": components["schemas"]["CheckOutboundBlocklistOutputDto"];
|
|
14326
|
+
};
|
|
14327
|
+
};
|
|
14328
|
+
/** @description Internal Server Error */
|
|
14329
|
+
500: {
|
|
14330
|
+
headers: {
|
|
14331
|
+
[name: string]: unknown;
|
|
14332
|
+
};
|
|
14333
|
+
content: {
|
|
14334
|
+
"application/json": components["schemas"]["ErrorDto"];
|
|
14335
|
+
};
|
|
14336
|
+
};
|
|
14337
|
+
};
|
|
14338
|
+
};
|
|
14339
|
+
sendEmail: {
|
|
14340
|
+
parameters: {
|
|
14341
|
+
query?: never;
|
|
14342
|
+
header?: never;
|
|
14343
|
+
path?: never;
|
|
14344
|
+
cookie?: never;
|
|
14345
|
+
};
|
|
14346
|
+
requestBody: {
|
|
14347
|
+
content: {
|
|
14348
|
+
"application/json": components["schemas"]["SendEmailInput"];
|
|
13802
14349
|
};
|
|
13803
14350
|
};
|
|
13804
14351
|
responses: {
|
|
@@ -16683,6 +17230,42 @@ export interface operations {
|
|
|
16683
17230
|
};
|
|
16684
17231
|
};
|
|
16685
17232
|
};
|
|
17233
|
+
exitContactFromSequence: {
|
|
17234
|
+
parameters: {
|
|
17235
|
+
query?: never;
|
|
17236
|
+
header?: never;
|
|
17237
|
+
path: {
|
|
17238
|
+
/** @description The unique identifier of the sequence */
|
|
17239
|
+
sequence_id: string;
|
|
17240
|
+
};
|
|
17241
|
+
cookie?: never;
|
|
17242
|
+
};
|
|
17243
|
+
requestBody: {
|
|
17244
|
+
content: {
|
|
17245
|
+
"application/json": components["schemas"]["ExitContactFromSequenceDto"];
|
|
17246
|
+
};
|
|
17247
|
+
};
|
|
17248
|
+
responses: {
|
|
17249
|
+
/** @description Default Response */
|
|
17250
|
+
201: {
|
|
17251
|
+
headers: {
|
|
17252
|
+
[name: string]: unknown;
|
|
17253
|
+
};
|
|
17254
|
+
content: {
|
|
17255
|
+
"application/json": components["schemas"]["ExitContactFromSequenceOutputDto"];
|
|
17256
|
+
};
|
|
17257
|
+
};
|
|
17258
|
+
/** @description Internal Server Error */
|
|
17259
|
+
500: {
|
|
17260
|
+
headers: {
|
|
17261
|
+
[name: string]: unknown;
|
|
17262
|
+
};
|
|
17263
|
+
content: {
|
|
17264
|
+
"application/json": components["schemas"]["ErrorDto"];
|
|
17265
|
+
};
|
|
17266
|
+
};
|
|
17267
|
+
};
|
|
17268
|
+
};
|
|
16686
17269
|
getTeams: {
|
|
16687
17270
|
parameters: {
|
|
16688
17271
|
query?: never;
|
|
@@ -19477,7 +20060,7 @@ export interface operations {
|
|
|
19477
20060
|
timezone?: string;
|
|
19478
20061
|
policy_id?: string;
|
|
19479
20062
|
team_id?: string;
|
|
19480
|
-
channel?: "web" | "email" | "phone_voice" | "slack" | "sms" | "whatsapp" | "instagram" | "messenger" | "api" | "web_voice" | "twitter" | "twitter_mentions";
|
|
20063
|
+
channel?: "web" | "email" | "phone_voice" | "slack" | "sms" | "whatsapp" | "instagram" | "messenger" | "api" | "web_voice" | "twitter" | "twitter_mentions" | "app_review";
|
|
19481
20064
|
agent_id?: number;
|
|
19482
20065
|
};
|
|
19483
20066
|
header?: never;
|
|
@@ -19514,7 +20097,7 @@ export interface operations {
|
|
|
19514
20097
|
timezone?: string;
|
|
19515
20098
|
policy_id?: string;
|
|
19516
20099
|
team_id?: string;
|
|
19517
|
-
channel?: "web" | "email" | "phone_voice" | "slack" | "sms" | "whatsapp" | "instagram" | "messenger" | "api" | "web_voice" | "twitter" | "twitter_mentions";
|
|
20100
|
+
channel?: "web" | "email" | "phone_voice" | "slack" | "sms" | "whatsapp" | "instagram" | "messenger" | "api" | "web_voice" | "twitter" | "twitter_mentions" | "app_review";
|
|
19518
20101
|
agent_id?: number;
|
|
19519
20102
|
group_by: "policy" | "team" | "agent" | "channel";
|
|
19520
20103
|
};
|
|
@@ -19552,7 +20135,7 @@ export interface operations {
|
|
|
19552
20135
|
timezone?: string;
|
|
19553
20136
|
policy_id?: string;
|
|
19554
20137
|
team_id?: string;
|
|
19555
|
-
channel?: "web" | "email" | "phone_voice" | "slack" | "sms" | "whatsapp" | "instagram" | "messenger" | "api" | "web_voice" | "twitter" | "twitter_mentions";
|
|
20138
|
+
channel?: "web" | "email" | "phone_voice" | "slack" | "sms" | "whatsapp" | "instagram" | "messenger" | "api" | "web_voice" | "twitter" | "twitter_mentions" | "app_review";
|
|
19556
20139
|
agent_id?: number;
|
|
19557
20140
|
granularity?: "day" | "week";
|
|
19558
20141
|
};
|
|
@@ -19590,7 +20173,7 @@ export interface operations {
|
|
|
19590
20173
|
timezone?: string;
|
|
19591
20174
|
policy_id?: string;
|
|
19592
20175
|
team_id?: string;
|
|
19593
|
-
channel?: "web" | "email" | "phone_voice" | "slack" | "sms" | "whatsapp" | "instagram" | "messenger" | "api" | "web_voice" | "twitter" | "twitter_mentions";
|
|
20176
|
+
channel?: "web" | "email" | "phone_voice" | "slack" | "sms" | "whatsapp" | "instagram" | "messenger" | "api" | "web_voice" | "twitter" | "twitter_mentions" | "app_review";
|
|
19594
20177
|
agent_id?: number;
|
|
19595
20178
|
};
|
|
19596
20179
|
header?: never;
|
|
@@ -19913,6 +20496,167 @@ export interface operations {
|
|
|
19913
20496
|
};
|
|
19914
20497
|
};
|
|
19915
20498
|
};
|
|
20499
|
+
listSalesforceAiReplyTemplates: {
|
|
20500
|
+
parameters: {
|
|
20501
|
+
query?: never;
|
|
20502
|
+
header?: never;
|
|
20503
|
+
path?: never;
|
|
20504
|
+
cookie?: never;
|
|
20505
|
+
};
|
|
20506
|
+
requestBody?: never;
|
|
20507
|
+
responses: {
|
|
20508
|
+
/** @description Default Response */
|
|
20509
|
+
200: {
|
|
20510
|
+
headers: {
|
|
20511
|
+
[name: string]: unknown;
|
|
20512
|
+
};
|
|
20513
|
+
content: {
|
|
20514
|
+
"application/json": components["schemas"]["SalesforceAiReplyTemplatesListDto"];
|
|
20515
|
+
};
|
|
20516
|
+
};
|
|
20517
|
+
/** @description Internal Server Error */
|
|
20518
|
+
500: {
|
|
20519
|
+
headers: {
|
|
20520
|
+
[name: string]: unknown;
|
|
20521
|
+
};
|
|
20522
|
+
content: {
|
|
20523
|
+
"application/json": components["schemas"]["ErrorDto"];
|
|
20524
|
+
};
|
|
20525
|
+
};
|
|
20526
|
+
};
|
|
20527
|
+
};
|
|
20528
|
+
createSalesforceAiReplyTemplate: {
|
|
20529
|
+
parameters: {
|
|
20530
|
+
query?: never;
|
|
20531
|
+
header?: never;
|
|
20532
|
+
path?: never;
|
|
20533
|
+
cookie?: never;
|
|
20534
|
+
};
|
|
20535
|
+
requestBody: {
|
|
20536
|
+
content: {
|
|
20537
|
+
"application/json": components["schemas"]["CreateSalesforceAiReplyTemplateDto"];
|
|
20538
|
+
};
|
|
20539
|
+
};
|
|
20540
|
+
responses: {
|
|
20541
|
+
/** @description Default Response */
|
|
20542
|
+
201: {
|
|
20543
|
+
headers: {
|
|
20544
|
+
[name: string]: unknown;
|
|
20545
|
+
};
|
|
20546
|
+
content: {
|
|
20547
|
+
"application/json": components["schemas"]["SalesforceAiReplyTemplateDto"];
|
|
20548
|
+
};
|
|
20549
|
+
};
|
|
20550
|
+
/** @description Internal Server Error */
|
|
20551
|
+
500: {
|
|
20552
|
+
headers: {
|
|
20553
|
+
[name: string]: unknown;
|
|
20554
|
+
};
|
|
20555
|
+
content: {
|
|
20556
|
+
"application/json": components["schemas"]["ErrorDto"];
|
|
20557
|
+
};
|
|
20558
|
+
};
|
|
20559
|
+
};
|
|
20560
|
+
};
|
|
20561
|
+
deleteSalesforceAiReplyTemplate: {
|
|
20562
|
+
parameters: {
|
|
20563
|
+
query?: never;
|
|
20564
|
+
header?: never;
|
|
20565
|
+
path: {
|
|
20566
|
+
/** @description Template ID */
|
|
20567
|
+
id: string;
|
|
20568
|
+
};
|
|
20569
|
+
cookie?: never;
|
|
20570
|
+
};
|
|
20571
|
+
requestBody?: never;
|
|
20572
|
+
responses: {
|
|
20573
|
+
/** @description Default Response */
|
|
20574
|
+
204: {
|
|
20575
|
+
headers: {
|
|
20576
|
+
[name: string]: unknown;
|
|
20577
|
+
};
|
|
20578
|
+
content?: never;
|
|
20579
|
+
};
|
|
20580
|
+
/** @description Internal Server Error */
|
|
20581
|
+
500: {
|
|
20582
|
+
headers: {
|
|
20583
|
+
[name: string]: unknown;
|
|
20584
|
+
};
|
|
20585
|
+
content: {
|
|
20586
|
+
"application/json": components["schemas"]["ErrorDto"];
|
|
20587
|
+
};
|
|
20588
|
+
};
|
|
20589
|
+
};
|
|
20590
|
+
};
|
|
20591
|
+
updateSalesforceAiReplyTemplate: {
|
|
20592
|
+
parameters: {
|
|
20593
|
+
query?: never;
|
|
20594
|
+
header?: never;
|
|
20595
|
+
path: {
|
|
20596
|
+
/** @description Template ID */
|
|
20597
|
+
id: string;
|
|
20598
|
+
};
|
|
20599
|
+
cookie?: never;
|
|
20600
|
+
};
|
|
20601
|
+
requestBody: {
|
|
20602
|
+
content: {
|
|
20603
|
+
"application/json": components["schemas"]["UpdateSalesforceAiReplyTemplateDto"];
|
|
20604
|
+
};
|
|
20605
|
+
};
|
|
20606
|
+
responses: {
|
|
20607
|
+
/** @description Default Response */
|
|
20608
|
+
200: {
|
|
20609
|
+
headers: {
|
|
20610
|
+
[name: string]: unknown;
|
|
20611
|
+
};
|
|
20612
|
+
content: {
|
|
20613
|
+
"application/json": components["schemas"]["SalesforceAiReplyTemplateDto"];
|
|
20614
|
+
};
|
|
20615
|
+
};
|
|
20616
|
+
/** @description Internal Server Error */
|
|
20617
|
+
500: {
|
|
20618
|
+
headers: {
|
|
20619
|
+
[name: string]: unknown;
|
|
20620
|
+
};
|
|
20621
|
+
content: {
|
|
20622
|
+
"application/json": components["schemas"]["ErrorDto"];
|
|
20623
|
+
};
|
|
20624
|
+
};
|
|
20625
|
+
};
|
|
20626
|
+
};
|
|
20627
|
+
previewSalesforceAiReplyTemplate: {
|
|
20628
|
+
parameters: {
|
|
20629
|
+
query?: never;
|
|
20630
|
+
header?: never;
|
|
20631
|
+
path?: never;
|
|
20632
|
+
cookie?: never;
|
|
20633
|
+
};
|
|
20634
|
+
requestBody: {
|
|
20635
|
+
content: {
|
|
20636
|
+
"application/json": components["schemas"]["PreviewSalesforceAiReplyTemplateDto"];
|
|
20637
|
+
};
|
|
20638
|
+
};
|
|
20639
|
+
responses: {
|
|
20640
|
+
/** @description Default Response */
|
|
20641
|
+
200: {
|
|
20642
|
+
headers: {
|
|
20643
|
+
[name: string]: unknown;
|
|
20644
|
+
};
|
|
20645
|
+
content: {
|
|
20646
|
+
"application/json": components["schemas"]["SalesforceAiReplyTemplatePreviewDto"];
|
|
20647
|
+
};
|
|
20648
|
+
};
|
|
20649
|
+
/** @description Internal Server Error */
|
|
20650
|
+
500: {
|
|
20651
|
+
headers: {
|
|
20652
|
+
[name: string]: unknown;
|
|
20653
|
+
};
|
|
20654
|
+
content: {
|
|
20655
|
+
"application/json": components["schemas"]["ErrorDto"];
|
|
20656
|
+
};
|
|
20657
|
+
};
|
|
20658
|
+
};
|
|
20659
|
+
};
|
|
19916
20660
|
coworkerNotifyTeam: {
|
|
19917
20661
|
parameters: {
|
|
19918
20662
|
query?: never;
|