@besales/mcp 0.45.0 → 0.47.0
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/README.md +96 -55
- package/dist/auth/connection-store.d.ts +21 -1
- package/dist/auth/connection-store.js +46 -2
- package/dist/auth/connection-store.js.map +1 -1
- package/dist/auth/oauth-client.d.ts +5 -1
- package/dist/auth/oauth-client.js +22 -12
- package/dist/auth/oauth-client.js.map +1 -1
- package/dist/cli.js +14 -5
- package/dist/cli.js.map +1 -1
- package/dist/http/api-client.d.ts +16 -1
- package/dist/http/api-client.js +50 -2
- package/dist/http/api-client.js.map +1 -1
- package/dist/instructions/server-instructions.d.ts +4 -13
- package/dist/instructions/server-instructions.js +68 -274
- package/dist/instructions/server-instructions.js.map +1 -1
- package/dist/prompts/registry.d.ts +15 -0
- package/dist/prompts/registry.js +83 -0
- package/dist/prompts/registry.js.map +1 -0
- package/dist/resources/concepts/feedback-sheets.md +7 -4
- package/dist/resources/concepts/handoff.md +4 -1
- package/dist/resources/concepts/sandbox.md +14 -5
- package/dist/resources/concepts/triggers.md +6 -2
- package/dist/resources/concepts/workbook-classification.md +26 -21
- package/dist/resources/docs/campaigns.md +20 -0
- package/dist/resources/docs/crm-integration.md +3 -1
- package/dist/resources/docs/follow-up.md +19 -0
- package/dist/resources/docs/platforms.md +2 -2
- package/dist/resources/docs/routing.md +18 -0
- package/dist/resources/docs/task-state.md +30 -0
- package/dist/resources/docs/trigger-actions.md +28 -0
- package/dist/resources/docs/variables.md +18 -0
- package/dist/resources/registry.js +51 -2
- package/dist/resources/registry.js.map +1 -1
- package/dist/resources/workflows/compare-models.md +4 -3
- package/dist/resources/workflows/connect-crm-from-scratch.md +8 -0
- package/dist/resources/workflows/extract-from-document.md +8 -1
- package/dist/resources/workflows/iterate-with-sandbox.md +5 -2
- package/dist/resources/workflows/platform-setup-from-scratch.md +90 -2
- package/dist/resources/workflows/production-readiness-check.md +22 -18
- package/dist/schemas/mcp-tools.json +1537 -177
- package/dist/server.d.ts +2 -0
- package/dist/server.js +8 -2
- package/dist/server.js.map +1 -1
- package/dist/tasks/task-state-store.d.ts +68 -0
- package/dist/tasks/task-state-store.js +278 -0
- package/dist/tasks/task-state-store.js.map +1 -0
- package/dist/tools/annotations.d.ts +7 -0
- package/dist/tools/annotations.js +16 -0
- package/dist/tools/annotations.js.map +1 -0
- package/dist/tools/contracts.js +7 -1
- package/dist/tools/contracts.js.map +1 -1
- package/dist/tools/definitions/agent-design.d.ts +49 -20
- package/dist/tools/definitions/agent-design.js +192 -19
- package/dist/tools/definitions/agent-design.js.map +1 -1
- package/dist/tools/definitions/analytics.d.ts +40 -0
- package/dist/tools/definitions/analytics.js +233 -0
- package/dist/tools/definitions/analytics.js.map +1 -0
- package/dist/tools/definitions/broadcast-analytics.d.ts +5 -4
- package/dist/tools/definitions/broadcast-analytics.js +26 -4
- package/dist/tools/definitions/broadcast-analytics.js.map +1 -1
- package/dist/tools/definitions/broadcast-mailing-variants.d.ts +2 -0
- package/dist/tools/definitions/broadcast-mailing-variants.js +10 -0
- package/dist/tools/definitions/broadcast-mailing-variants.js.map +1 -1
- package/dist/tools/definitions/broadcast-scheduler.d.ts +20 -1
- package/dist/tools/definitions/broadcast-scheduler.js +134 -8
- package/dist/tools/definitions/broadcast-scheduler.js.map +1 -1
- package/dist/tools/definitions/contacts.d.ts +15 -0
- package/dist/tools/definitions/contacts.js +84 -0
- package/dist/tools/definitions/contacts.js.map +1 -0
- package/dist/tools/definitions/crm-platform.d.ts +2 -0
- package/dist/tools/definitions/crm-platform.js +95 -5
- package/dist/tools/definitions/crm-platform.js.map +1 -1
- package/dist/tools/definitions/datasource.d.ts +1 -0
- package/dist/tools/definitions/datasource.js +16 -1
- package/dist/tools/definitions/datasource.js.map +1 -1
- package/dist/tools/definitions/dialogue-audit.d.ts +2 -2
- package/dist/tools/definitions/dialogue-audit.js +54 -16
- package/dist/tools/definitions/dialogue-audit.js.map +1 -1
- package/dist/tools/definitions/dialogue-export.d.ts +1 -1
- package/dist/tools/definitions/dialogue-export.js +12 -0
- package/dist/tools/definitions/dialogue-export.js.map +1 -1
- package/dist/tools/definitions/external-api-channels.js +39 -12
- package/dist/tools/definitions/external-api-channels.js.map +1 -1
- package/dist/tools/definitions/follow-up-funnel-test.js +4 -0
- package/dist/tools/definitions/follow-up-funnel-test.js.map +1 -1
- package/dist/tools/definitions/follow-up-setup.js +3 -0
- package/dist/tools/definitions/follow-up-setup.js.map +1 -1
- package/dist/tools/definitions/follow-up.d.ts +1 -1
- package/dist/tools/definitions/follow-up.js +6 -0
- package/dist/tools/definitions/follow-up.js.map +1 -1
- package/dist/tools/definitions/getcourse-anchor-refresh.d.ts +3 -0
- package/dist/tools/definitions/getcourse-anchor-refresh.js +29 -2
- package/dist/tools/definitions/getcourse-anchor-refresh.js.map +1 -1
- package/dist/tools/definitions/getcourse-cold-welcome.d.ts +20 -2
- package/dist/tools/definitions/getcourse-cold-welcome.js +128 -7
- package/dist/tools/definitions/getcourse-cold-welcome.js.map +1 -1
- package/dist/tools/definitions/getcourse-wave.js +14 -0
- package/dist/tools/definitions/getcourse-wave.js.map +1 -1
- package/dist/tools/definitions/help.d.ts +8 -0
- package/dist/tools/definitions/help.js +219 -0
- package/dist/tools/definitions/help.js.map +1 -0
- package/dist/tools/definitions/knowledge.d.ts +27 -5
- package/dist/tools/definitions/knowledge.js +200 -33
- package/dist/tools/definitions/knowledge.js.map +1 -1
- package/dist/tools/definitions/link-tracking.js +31 -0
- package/dist/tools/definitions/link-tracking.js.map +1 -1
- package/dist/tools/definitions/model-comparison.js +12 -3
- package/dist/tools/definitions/model-comparison.js.map +1 -1
- package/dist/tools/definitions/operational-overview.d.ts +3 -0
- package/dist/tools/definitions/operational-overview.js +23 -0
- package/dist/tools/definitions/operational-overview.js.map +1 -0
- package/dist/tools/definitions/operator-workflow.d.ts +20 -0
- package/dist/tools/definitions/operator-workflow.js +114 -0
- package/dist/tools/definitions/operator-workflow.js.map +1 -0
- package/dist/tools/definitions/platform-setup.d.ts +54 -3
- package/dist/tools/definitions/platform-setup.js +211 -5
- package/dist/tools/definitions/platform-setup.js.map +1 -1
- package/dist/tools/definitions/scheduled-tasks.js +2 -0
- package/dist/tools/definitions/scheduled-tasks.js.map +1 -1
- package/dist/tools/definitions/session.js +103 -5
- package/dist/tools/definitions/session.js.map +1 -1
- package/dist/tools/definitions/shared.d.ts +272 -10
- package/dist/tools/definitions/shared.js +154 -8
- package/dist/tools/definitions/shared.js.map +1 -1
- package/dist/tools/definitions/task-state.d.ts +76 -0
- package/dist/tools/definitions/task-state.js +301 -0
- package/dist/tools/definitions/task-state.js.map +1 -0
- package/dist/tools/definitions/trigger-contact-claims.d.ts +7 -0
- package/dist/tools/definitions/trigger-contact-claims.js +60 -0
- package/dist/tools/definitions/trigger-contact-claims.js.map +1 -0
- package/dist/tools/definitions.d.ts +334 -35
- package/dist/tools/definitions.js +14 -0
- package/dist/tools/definitions.js.map +1 -1
- package/dist/tools/description-localization.d.ts +2 -0
- package/dist/tools/description-localization.js +46 -0
- package/dist/tools/description-localization.js.map +1 -0
- package/dist/tools/incomplete-list.d.ts +23 -0
- package/dist/tools/incomplete-list.js +39 -0
- package/dist/tools/incomplete-list.js.map +1 -0
- package/dist/tools/inventory.d.ts +10 -0
- package/dist/tools/inventory.js +49 -0
- package/dist/tools/inventory.js.map +1 -0
- package/dist/tools/registry-mapping-cases-core.js +122 -4
- package/dist/tools/registry-mapping-cases-core.js.map +1 -1
- package/dist/tools/registry-mapping-cases-platform.js +69 -0
- package/dist/tools/registry-mapping-cases-platform.js.map +1 -1
- package/dist/tools/registry.d.ts +2 -0
- package/dist/tools/registry.js +60 -8
- package/dist/tools/registry.js.map +1 -1
- package/dist/tools/result-envelope.d.ts +46 -0
- package/dist/tools/result-envelope.js +184 -0
- package/dist/tools/result-envelope.js.map +1 -0
- package/dist/tools/result.d.ts +41 -3
- package/dist/tools/result.js +229 -27
- package/dist/tools/result.js.map +1 -1
- package/dist/tools/tool-title.d.ts +2 -0
- package/dist/tools/tool-title.js +12 -0
- package/dist/tools/tool-title.js.map +1 -0
- package/dist/tools/toolsets.d.ts +37 -0
- package/dist/tools/toolsets.js +64 -0
- package/dist/tools/toolsets.js.map +1 -0
- package/dist/tools/trigger-action-config.js +4 -0
- package/dist/tools/trigger-action-config.js.map +1 -1
- package/dist/tools/verify-with.d.ts +5 -0
- package/dist/tools/verify-with.js +36 -0
- package/dist/tools/verify-with.js.map +1 -0
- package/dist/types/api-contract.gen.d.ts +2612 -332
- package/dist/utils/logger.d.ts +11 -0
- package/dist/utils/logger.js +64 -8
- package/dist/utils/logger.js.map +1 -1
- package/docs/agent-usage-guide.full.ru.md +21 -15
- package/docs/agent-usage-guide.ru.md +24 -16
- package/docs/async-operation-lifecycle.md +46 -0
- package/docs/connect.ru.md +120 -0
- package/docs/evals/model-behavior-scorecard.md +80 -0
- package/docs/failure-semantics.md +56 -0
- package/docs/help-navigation.md +48 -0
- package/docs/host-compatibility-matrix.md +153 -0
- package/docs/host-setup.md +22 -6
- package/docs/operation-coverage.md +114 -0
- package/docs/pii-policy.md +46 -0
- package/docs/response-size-budget.md +150 -0
- package/docs/task-state.md +58 -0
- package/docs/tool-effects.md +46 -0
- package/docs/tool-surface.md +91 -0
- package/package.json +6 -2
- package/scripts/model-eval-server.js +213 -0
- package/scripts/probe-mcp-protocol.js +134 -0
- package/scripts/run-model-eval.js +447 -0
|
@@ -3,6 +3,23 @@
|
|
|
3
3
|
* Do not make direct changes to the file.
|
|
4
4
|
*/
|
|
5
5
|
export interface paths {
|
|
6
|
+
"/api/v2/agents/{agentId}/readiness": {
|
|
7
|
+
parameters: {
|
|
8
|
+
query?: never;
|
|
9
|
+
header?: never;
|
|
10
|
+
path?: never;
|
|
11
|
+
cookie?: never;
|
|
12
|
+
};
|
|
13
|
+
/** Доказательная готовность выбранного агента и текущей версии конфигурации */
|
|
14
|
+
get: operations["AgentReadinessController_get"];
|
|
15
|
+
put?: never;
|
|
16
|
+
post?: never;
|
|
17
|
+
delete?: never;
|
|
18
|
+
options?: never;
|
|
19
|
+
head?: never;
|
|
20
|
+
patch?: never;
|
|
21
|
+
trace?: never;
|
|
22
|
+
};
|
|
6
23
|
"/api/v2/auth/login": {
|
|
7
24
|
parameters: {
|
|
8
25
|
query?: never;
|
|
@@ -235,8 +252,8 @@ export interface paths {
|
|
|
235
252
|
/** @description PKCE S256 challenge — SHA256(code_verifier) base64url-encoded */
|
|
236
253
|
code_challenge: string;
|
|
237
254
|
code_challenge_method: "S256";
|
|
238
|
-
/** @description Requested scopes: base `mcp:*` plus any subset of the optional scopes, in the canonical order `mcp:platform-setup`, `mcp:funnel-test`, `read:campaigns`, `launch:campaigns`. `mcp:*` enables PromptHub/ICP/Sandbox/Knowledge tools; `mcp:platform-setup` enables Platform Setup Bridge mutations; `mcp:funnel-test` permits frozen-plan funnel tests that can send real messages; `read:campaigns` covers cold-welcome preview and broadcast reads; `launch:campaigns` covers cold-welcome/broadcast launches. `besales-mcp connect` always requests the widest string. INVARIANT: a new scope is APPENDED to the optional list — never swapped in for an existing one, or every reconnect silently narrows live keys. */
|
|
239
|
-
scope: "mcp:*" | "mcp:* mcp:platform-setup" | "mcp:* mcp:funnel-test" | "mcp:* mcp:platform-setup mcp:funnel-test" | "mcp:* read:campaigns" | "mcp:* mcp:platform-setup read:campaigns" | "mcp:* mcp:funnel-test read:campaigns" | "mcp:* mcp:platform-setup mcp:funnel-test read:campaigns" | "mcp:* launch:campaigns" | "mcp:* mcp:platform-setup launch:campaigns" | "mcp:* mcp:funnel-test launch:campaigns" | "mcp:* mcp:platform-setup mcp:funnel-test launch:campaigns" | "mcp:* read:campaigns launch:campaigns" | "mcp:* mcp:platform-setup read:campaigns launch:campaigns" | "mcp:* mcp:funnel-test read:campaigns launch:campaigns" | "mcp:* mcp:platform-setup mcp:funnel-test read:campaigns launch:campaigns";
|
|
255
|
+
/** @description Requested scopes: base `mcp:*` plus any subset of the optional scopes, in the canonical order `mcp:platform-setup`, `mcp:funnel-test`, `read:campaigns`, `launch:campaigns`, `read:contacts`, `write:operators`. `mcp:*` enables PromptHub/ICP/Sandbox/Knowledge tools; `mcp:platform-setup` enables Platform Setup Bridge mutations; `mcp:funnel-test` permits frozen-plan funnel tests that can send real messages; `read:campaigns` covers cold-welcome preview and broadcast reads; `launch:campaigns` covers cold-welcome/broadcast launches; `read:contacts` covers contact search, cards and safe diagnostics; `write:operators` permits a CAS-protected local workspace-operator assignment without sending messages. `besales-mcp connect` always requests the widest string. INVARIANT: a new scope is APPENDED to the optional list — never swapped in for an existing one, or every reconnect silently narrows live keys. */
|
|
256
|
+
scope: "mcp:*" | "mcp:* mcp:platform-setup" | "mcp:* mcp:funnel-test" | "mcp:* mcp:platform-setup mcp:funnel-test" | "mcp:* read:campaigns" | "mcp:* mcp:platform-setup read:campaigns" | "mcp:* mcp:funnel-test read:campaigns" | "mcp:* mcp:platform-setup mcp:funnel-test read:campaigns" | "mcp:* launch:campaigns" | "mcp:* mcp:platform-setup launch:campaigns" | "mcp:* mcp:funnel-test launch:campaigns" | "mcp:* mcp:platform-setup mcp:funnel-test launch:campaigns" | "mcp:* read:campaigns launch:campaigns" | "mcp:* mcp:platform-setup read:campaigns launch:campaigns" | "mcp:* mcp:funnel-test read:campaigns launch:campaigns" | "mcp:* mcp:platform-setup mcp:funnel-test read:campaigns launch:campaigns" | "mcp:* read:contacts" | "mcp:* mcp:platform-setup read:contacts" | "mcp:* mcp:funnel-test read:contacts" | "mcp:* mcp:platform-setup mcp:funnel-test read:contacts" | "mcp:* read:campaigns read:contacts" | "mcp:* mcp:platform-setup read:campaigns read:contacts" | "mcp:* mcp:funnel-test read:campaigns read:contacts" | "mcp:* mcp:platform-setup mcp:funnel-test read:campaigns read:contacts" | "mcp:* launch:campaigns read:contacts" | "mcp:* mcp:platform-setup launch:campaigns read:contacts" | "mcp:* mcp:funnel-test launch:campaigns read:contacts" | "mcp:* mcp:platform-setup mcp:funnel-test launch:campaigns read:contacts" | "mcp:* read:campaigns launch:campaigns read:contacts" | "mcp:* mcp:platform-setup read:campaigns launch:campaigns read:contacts" | "mcp:* mcp:funnel-test read:campaigns launch:campaigns read:contacts" | "mcp:* mcp:platform-setup mcp:funnel-test read:campaigns launch:campaigns read:contacts" | "mcp:* write:operators" | "mcp:* mcp:platform-setup write:operators" | "mcp:* mcp:funnel-test write:operators" | "mcp:* mcp:platform-setup mcp:funnel-test write:operators" | "mcp:* read:campaigns write:operators" | "mcp:* mcp:platform-setup read:campaigns write:operators" | "mcp:* mcp:funnel-test read:campaigns write:operators" | "mcp:* mcp:platform-setup mcp:funnel-test read:campaigns write:operators" | "mcp:* launch:campaigns write:operators" | "mcp:* mcp:platform-setup launch:campaigns write:operators" | "mcp:* mcp:funnel-test launch:campaigns write:operators" | "mcp:* mcp:platform-setup mcp:funnel-test launch:campaigns write:operators" | "mcp:* read:campaigns launch:campaigns write:operators" | "mcp:* mcp:platform-setup read:campaigns launch:campaigns write:operators" | "mcp:* mcp:funnel-test read:campaigns launch:campaigns write:operators" | "mcp:* mcp:platform-setup mcp:funnel-test read:campaigns launch:campaigns write:operators" | "mcp:* read:contacts write:operators" | "mcp:* mcp:platform-setup read:contacts write:operators" | "mcp:* mcp:funnel-test read:contacts write:operators" | "mcp:* mcp:platform-setup mcp:funnel-test read:contacts write:operators" | "mcp:* read:campaigns read:contacts write:operators" | "mcp:* mcp:platform-setup read:campaigns read:contacts write:operators" | "mcp:* mcp:funnel-test read:campaigns read:contacts write:operators" | "mcp:* mcp:platform-setup mcp:funnel-test read:campaigns read:contacts write:operators" | "mcp:* launch:campaigns read:contacts write:operators" | "mcp:* mcp:platform-setup launch:campaigns read:contacts write:operators" | "mcp:* mcp:funnel-test launch:campaigns read:contacts write:operators" | "mcp:* mcp:platform-setup mcp:funnel-test launch:campaigns read:contacts write:operators" | "mcp:* read:campaigns launch:campaigns read:contacts write:operators" | "mcp:* mcp:platform-setup read:campaigns launch:campaigns read:contacts write:operators" | "mcp:* mcp:funnel-test read:campaigns launch:campaigns read:contacts write:operators" | "mcp:* mcp:platform-setup mcp:funnel-test read:campaigns launch:campaigns read:contacts write:operators";
|
|
240
257
|
};
|
|
241
258
|
header?: never;
|
|
242
259
|
path?: never;
|
|
@@ -450,6 +467,10 @@ export interface paths {
|
|
|
450
467
|
api_key: string;
|
|
451
468
|
/** Format: uuid */
|
|
452
469
|
workspace_id: string;
|
|
470
|
+
/** @description Workspace name captured at token exchange for local human-readable selection */
|
|
471
|
+
workspace_name: string;
|
|
472
|
+
/** @description Masked account email (for example, o***@example.com); never contains the raw email */
|
|
473
|
+
account_label: string | null;
|
|
453
474
|
/**
|
|
454
475
|
* Format: date-time
|
|
455
476
|
* @description API key expiration (90 days from now)
|
|
@@ -477,6 +498,59 @@ export interface paths {
|
|
|
477
498
|
patch?: never;
|
|
478
499
|
trace?: never;
|
|
479
500
|
};
|
|
501
|
+
"/api/v2/auth/mcp-context": {
|
|
502
|
+
parameters: {
|
|
503
|
+
query?: never;
|
|
504
|
+
header?: never;
|
|
505
|
+
path?: never;
|
|
506
|
+
cookie?: never;
|
|
507
|
+
};
|
|
508
|
+
/**
|
|
509
|
+
* Read safe labels for the current MCP connection
|
|
510
|
+
* @description Lightweight alternative to workspace overview for local workspace selection.
|
|
511
|
+
*/
|
|
512
|
+
get: {
|
|
513
|
+
parameters: {
|
|
514
|
+
query?: never;
|
|
515
|
+
header?: never;
|
|
516
|
+
path?: never;
|
|
517
|
+
cookie?: never;
|
|
518
|
+
};
|
|
519
|
+
requestBody?: never;
|
|
520
|
+
responses: {
|
|
521
|
+
/** @description Current workspace and masked account label */
|
|
522
|
+
200: {
|
|
523
|
+
headers: {
|
|
524
|
+
[name: string]: unknown;
|
|
525
|
+
};
|
|
526
|
+
content: {
|
|
527
|
+
"application/json": {
|
|
528
|
+
/** Format: uuid */
|
|
529
|
+
workspace_id: string;
|
|
530
|
+
workspace_name: string;
|
|
531
|
+
account_label: string | null;
|
|
532
|
+
/** @description Effective scopes of this exact MCP key */
|
|
533
|
+
scopes: string[];
|
|
534
|
+
};
|
|
535
|
+
};
|
|
536
|
+
};
|
|
537
|
+
/** @description MCP key is missing, revoked, or belongs to another workspace */
|
|
538
|
+
403: {
|
|
539
|
+
headers: {
|
|
540
|
+
[name: string]: unknown;
|
|
541
|
+
};
|
|
542
|
+
content?: never;
|
|
543
|
+
};
|
|
544
|
+
};
|
|
545
|
+
};
|
|
546
|
+
put?: never;
|
|
547
|
+
post?: never;
|
|
548
|
+
delete?: never;
|
|
549
|
+
options?: never;
|
|
550
|
+
head?: never;
|
|
551
|
+
patch?: never;
|
|
552
|
+
trace?: never;
|
|
553
|
+
};
|
|
480
554
|
"/api/v2/auth/mcp-connections": {
|
|
481
555
|
parameters: {
|
|
482
556
|
query?: never;
|
|
@@ -890,6 +964,28 @@ export interface paths {
|
|
|
890
964
|
patch?: never;
|
|
891
965
|
trace?: never;
|
|
892
966
|
};
|
|
967
|
+
"/api/v2/workspaces/{workspaceId}/navigation": {
|
|
968
|
+
parameters: {
|
|
969
|
+
query?: never;
|
|
970
|
+
header?: never;
|
|
971
|
+
path?: never;
|
|
972
|
+
cookie?: never;
|
|
973
|
+
};
|
|
974
|
+
get?: never;
|
|
975
|
+
put?: never;
|
|
976
|
+
/**
|
|
977
|
+
* Выбрать один следующий шаг по намерению и живому overview
|
|
978
|
+
* @description Read-only навигатор. Учитывает тип бота, уже выбранные объекты и текущее состояние
|
|
979
|
+
* workspace. Возвращает конкретный MCP tool, аргументы, необходимый ввод человека и способ
|
|
980
|
+
* проверки; сам мутацию не выполняет и readiness не подменяет.
|
|
981
|
+
*/
|
|
982
|
+
post: operations["navigateWorkspaceTask"];
|
|
983
|
+
delete?: never;
|
|
984
|
+
options?: never;
|
|
985
|
+
head?: never;
|
|
986
|
+
patch?: never;
|
|
987
|
+
trace?: never;
|
|
988
|
+
};
|
|
893
989
|
"/api/v2/setup-sessions": {
|
|
894
990
|
parameters: {
|
|
895
991
|
query?: never;
|
|
@@ -5018,8 +5114,13 @@ export interface paths {
|
|
|
5018
5114
|
/**
|
|
5019
5115
|
* S3.8: Apply batch patch operations + reset activity TTL (24h)
|
|
5020
5116
|
* @description Применяет операции к draft.currentContent через `applyPromptPatchOperations`.
|
|
5021
|
-
* Resets TTL на каждом вызове (activity-based 24h). Возвращает
|
|
5022
|
-
* `
|
|
5117
|
+
* Resets TTL на каждом вызове (activity-based 24h). Возвращает `appliedCount` +
|
|
5118
|
+
* `skippedCount` (anchor не нашёлся → ops пропущены) и `diff` — построчную
|
|
5119
|
+
* разницу «до → после».
|
|
5120
|
+
*
|
|
5121
|
+
* Текст черновика в ответе НЕ отдаётся: клиент прочитал промпт целиком при создании
|
|
5122
|
+
* черновика, а здесь ждёт подтверждения правки. Перечитать полностью —
|
|
5123
|
+
* `GET /prompt/drafts/{draftId}`.
|
|
5023
5124
|
*
|
|
5024
5125
|
* Growth guard: операции, увеличивающие размер >30% от baseContent → пропускаются
|
|
5025
5126
|
* с skippedCount > 0.
|
|
@@ -5084,6 +5185,10 @@ export interface paths {
|
|
|
5084
5185
|
*
|
|
5085
5186
|
* Idempotency: повторный commit того же draft возвращает existing newVersion
|
|
5086
5187
|
* (детектируется через 410 Gone + GET draft → COMMITTED).
|
|
5188
|
+
*
|
|
5189
|
+
* Ответ несёт только адресацию новой версии (`id` + `version`) и метаданные
|
|
5190
|
+
* черновика: `draft.currentContent` и `newVersion.content` — две копии одного
|
|
5191
|
+
* текста, который клиент сам и собрал.
|
|
5087
5192
|
*/
|
|
5088
5193
|
post: {
|
|
5089
5194
|
parameters: {
|
|
@@ -5413,7 +5518,10 @@ export interface paths {
|
|
|
5413
5518
|
/** Sanitized setup context with readiness flags */
|
|
5414
5519
|
get: {
|
|
5415
5520
|
parameters: {
|
|
5416
|
-
query?:
|
|
5521
|
+
query?: {
|
|
5522
|
+
/** @description Секции снимка через запятую; agent_summaries исключает полный промпт. */
|
|
5523
|
+
sections?: string;
|
|
5524
|
+
};
|
|
5417
5525
|
header?: never;
|
|
5418
5526
|
path: {
|
|
5419
5527
|
platformId: components["parameters"]["PlatformIdPath"];
|
|
@@ -5440,6 +5548,49 @@ export interface paths {
|
|
|
5440
5548
|
patch?: never;
|
|
5441
5549
|
trace?: never;
|
|
5442
5550
|
};
|
|
5551
|
+
"/api/v2/platforms/{platformId}/setup/trigger-action-catalog": {
|
|
5552
|
+
parameters: {
|
|
5553
|
+
query?: never;
|
|
5554
|
+
header?: never;
|
|
5555
|
+
path?: never;
|
|
5556
|
+
cookie?: never;
|
|
5557
|
+
};
|
|
5558
|
+
/**
|
|
5559
|
+
* Current trigger action schemas, examples and dependencies
|
|
5560
|
+
* @description Каталог строится из боевого `CreateTriggerActionDto` и `TRIGGER_ACTION_CONFIG`.
|
|
5561
|
+
* `actionType` позволяет запросить один тип без загрузки всех схем.
|
|
5562
|
+
*/
|
|
5563
|
+
get: {
|
|
5564
|
+
parameters: {
|
|
5565
|
+
query?: {
|
|
5566
|
+
actionType?: string;
|
|
5567
|
+
};
|
|
5568
|
+
header?: never;
|
|
5569
|
+
path: {
|
|
5570
|
+
platformId: components["parameters"]["PlatformIdPath"];
|
|
5571
|
+
};
|
|
5572
|
+
cookie?: never;
|
|
5573
|
+
};
|
|
5574
|
+
requestBody?: never;
|
|
5575
|
+
responses: {
|
|
5576
|
+
200: {
|
|
5577
|
+
headers: {
|
|
5578
|
+
[name: string]: unknown;
|
|
5579
|
+
};
|
|
5580
|
+
content: {
|
|
5581
|
+
"application/json": components["schemas"]["TriggerActionCatalogResponse"];
|
|
5582
|
+
};
|
|
5583
|
+
};
|
|
5584
|
+
};
|
|
5585
|
+
};
|
|
5586
|
+
put?: never;
|
|
5587
|
+
post?: never;
|
|
5588
|
+
delete?: never;
|
|
5589
|
+
options?: never;
|
|
5590
|
+
head?: never;
|
|
5591
|
+
patch?: never;
|
|
5592
|
+
trace?: never;
|
|
5593
|
+
};
|
|
5443
5594
|
"/api/v2/platforms/{platformId}/agents": {
|
|
5444
5595
|
parameters: {
|
|
5445
5596
|
query?: never;
|
|
@@ -5450,7 +5601,14 @@ export interface paths {
|
|
|
5450
5601
|
/** List agents attached to existing platform */
|
|
5451
5602
|
get: {
|
|
5452
5603
|
parameters: {
|
|
5453
|
-
query?:
|
|
5604
|
+
query?: {
|
|
5605
|
+
/** @description Размер страницы; без него список отдаётся целиком. */
|
|
5606
|
+
limit?: number;
|
|
5607
|
+
/** @description Курсор из предыдущего ответа. */
|
|
5608
|
+
cursor?: string;
|
|
5609
|
+
/** @description Поиск без учёта регистра по name или displayName. */
|
|
5610
|
+
q?: string;
|
|
5611
|
+
};
|
|
5454
5612
|
header?: never;
|
|
5455
5613
|
path: {
|
|
5456
5614
|
platformId: components["parameters"]["PlatformIdPath"];
|
|
@@ -6331,6 +6489,26 @@ export interface paths {
|
|
|
6331
6489
|
patch?: never;
|
|
6332
6490
|
trace?: never;
|
|
6333
6491
|
};
|
|
6492
|
+
"/api/v2/workspaces/{workspaceId}/getcourse-cold-welcome/touch-history/{gcUserId}": {
|
|
6493
|
+
parameters: {
|
|
6494
|
+
query?: never;
|
|
6495
|
+
header?: never;
|
|
6496
|
+
path?: never;
|
|
6497
|
+
cookie?: never;
|
|
6498
|
+
};
|
|
6499
|
+
/**
|
|
6500
|
+
* What we have already sent this person, and by what right
|
|
6501
|
+
* @description Three sources with DIFFERENT keys, joined into one answer. `touches` is the touch journal: a RIGHT taken BEFORE transport, so a row exists even for an attempt that never sent (UNKNOWN, stuck CLAIMED). `sends` is the recipient registry: written AFTER delivery and best-effort, so its absence does NOT prove non-delivery. `firstWelcomeAt` is the earliest mark across the person cards. Do not add `touches` and `sends` together — they answer different questions.
|
|
6502
|
+
*/
|
|
6503
|
+
get: operations["getContactTouchHistory"];
|
|
6504
|
+
put?: never;
|
|
6505
|
+
post?: never;
|
|
6506
|
+
delete?: never;
|
|
6507
|
+
options?: never;
|
|
6508
|
+
head?: never;
|
|
6509
|
+
patch?: never;
|
|
6510
|
+
trace?: never;
|
|
6511
|
+
};
|
|
6334
6512
|
"/api/v2/workspaces/{workspaceId}/getcourse-cold-welcome/preview": {
|
|
6335
6513
|
parameters: {
|
|
6336
6514
|
query?: never;
|
|
@@ -6528,6 +6706,49 @@ export interface paths {
|
|
|
6528
6706
|
patch?: never;
|
|
6529
6707
|
trace?: never;
|
|
6530
6708
|
};
|
|
6709
|
+
"/api/v2/workspaces/{workspaceId}/getcourse-anchor-refresh/{correlationId}": {
|
|
6710
|
+
parameters: {
|
|
6711
|
+
query?: never;
|
|
6712
|
+
header?: never;
|
|
6713
|
+
path?: never;
|
|
6714
|
+
cookie?: never;
|
|
6715
|
+
};
|
|
6716
|
+
/**
|
|
6717
|
+
* Статус фонового перечитывания календарных якорей
|
|
6718
|
+
* @description Retained 24 часа. STALLED означает, что фоновый процесс больше не владеет lock; часть дат могла быть переписана, поэтому перед повтором нужен аудит по correlationId. Отмены нет: уже выполненные частичные перезаписи необратимы. Scope `read:campaigns`.
|
|
6719
|
+
*/
|
|
6720
|
+
get: {
|
|
6721
|
+
parameters: {
|
|
6722
|
+
query?: never;
|
|
6723
|
+
header?: never;
|
|
6724
|
+
path: {
|
|
6725
|
+
workspaceId: components["parameters"]["WorkspaceIdPath"];
|
|
6726
|
+
correlationId: string;
|
|
6727
|
+
};
|
|
6728
|
+
cookie?: never;
|
|
6729
|
+
};
|
|
6730
|
+
requestBody?: never;
|
|
6731
|
+
responses: {
|
|
6732
|
+
/** @description Состояние и terminal result/error */
|
|
6733
|
+
200: {
|
|
6734
|
+
headers: {
|
|
6735
|
+
[name: string]: unknown;
|
|
6736
|
+
};
|
|
6737
|
+
content: {
|
|
6738
|
+
"application/json": components["schemas"]["GetCourseAnchorRefreshStatusResponse"];
|
|
6739
|
+
};
|
|
6740
|
+
};
|
|
6741
|
+
404: components["responses"]["NotFound"];
|
|
6742
|
+
};
|
|
6743
|
+
};
|
|
6744
|
+
put?: never;
|
|
6745
|
+
post?: never;
|
|
6746
|
+
delete?: never;
|
|
6747
|
+
options?: never;
|
|
6748
|
+
head?: never;
|
|
6749
|
+
patch?: never;
|
|
6750
|
+
trace?: never;
|
|
6751
|
+
};
|
|
6531
6752
|
"/api/v2/workspaces/{workspaceId}/getcourse-cold-welcome/batch": {
|
|
6532
6753
|
parameters: {
|
|
6533
6754
|
query?: never;
|
|
@@ -8765,8 +8986,8 @@ export interface paths {
|
|
|
8765
8986
|
get?: never;
|
|
8766
8987
|
put?: never;
|
|
8767
8988
|
/**
|
|
8768
|
-
* Создать External API канал
|
|
8769
|
-
* @description
|
|
8989
|
+
* Создать External API канал и выдать browser-handoff ссылку
|
|
8990
|
+
* @description Секреты не проходят через API/MCP-ответ. Scope `mcp:platform-setup` (или UI JWT).
|
|
8770
8991
|
*/
|
|
8771
8992
|
post: {
|
|
8772
8993
|
parameters: {
|
|
@@ -8783,13 +9004,13 @@ export interface paths {
|
|
|
8783
9004
|
};
|
|
8784
9005
|
};
|
|
8785
9006
|
responses: {
|
|
8786
|
-
/** @description Канал
|
|
9007
|
+
/** @description Канал создан; credentials покажет вошедшему человеку одноразовая страница */
|
|
8787
9008
|
201: {
|
|
8788
9009
|
headers: {
|
|
8789
9010
|
[name: string]: unknown;
|
|
8790
9011
|
};
|
|
8791
9012
|
content: {
|
|
8792
|
-
"application/json": components["schemas"]["
|
|
9013
|
+
"application/json": components["schemas"]["ExternalApiChannelCreated"];
|
|
8793
9014
|
};
|
|
8794
9015
|
};
|
|
8795
9016
|
};
|
|
@@ -8809,7 +9030,7 @@ export interface paths {
|
|
|
8809
9030
|
};
|
|
8810
9031
|
get?: never;
|
|
8811
9032
|
put?: never;
|
|
8812
|
-
/**
|
|
9033
|
+
/** Выдать browser-handoff ссылку на перевыпуск bsl-ключа */
|
|
8813
9034
|
post: {
|
|
8814
9035
|
parameters: {
|
|
8815
9036
|
query?: never;
|
|
@@ -8822,15 +9043,13 @@ export interface paths {
|
|
|
8822
9043
|
};
|
|
8823
9044
|
requestBody?: never;
|
|
8824
9045
|
responses: {
|
|
8825
|
-
/** @description
|
|
9046
|
+
/** @description Ротация произойдёт только при открытии одноразовой страницы */
|
|
8826
9047
|
201: {
|
|
8827
9048
|
headers: {
|
|
8828
9049
|
[name: string]: unknown;
|
|
8829
9050
|
};
|
|
8830
9051
|
content: {
|
|
8831
|
-
"application/json":
|
|
8832
|
-
apiKey: string;
|
|
8833
|
-
};
|
|
9052
|
+
"application/json": components["schemas"]["IssuedCredentialReveal"];
|
|
8834
9053
|
};
|
|
8835
9054
|
};
|
|
8836
9055
|
};
|
|
@@ -8850,7 +9069,7 @@ export interface paths {
|
|
|
8850
9069
|
};
|
|
8851
9070
|
get?: never;
|
|
8852
9071
|
put?: never;
|
|
8853
|
-
/**
|
|
9072
|
+
/** Выдать browser-handoff ссылку на замену webhook-secret */
|
|
8854
9073
|
post: {
|
|
8855
9074
|
parameters: {
|
|
8856
9075
|
query?: never;
|
|
@@ -8863,15 +9082,13 @@ export interface paths {
|
|
|
8863
9082
|
};
|
|
8864
9083
|
requestBody?: never;
|
|
8865
9084
|
responses: {
|
|
8866
|
-
/** @description
|
|
9085
|
+
/** @description Замена произойдёт только при открытии одноразовой страницы */
|
|
8867
9086
|
201: {
|
|
8868
9087
|
headers: {
|
|
8869
9088
|
[name: string]: unknown;
|
|
8870
9089
|
};
|
|
8871
9090
|
content: {
|
|
8872
|
-
"application/json":
|
|
8873
|
-
webhookSecret: string;
|
|
8874
|
-
};
|
|
9091
|
+
"application/json": components["schemas"]["IssuedCredentialReveal"];
|
|
8875
9092
|
};
|
|
8876
9093
|
};
|
|
8877
9094
|
};
|
|
@@ -9149,6 +9366,81 @@ export interface paths {
|
|
|
9149
9366
|
patch?: never;
|
|
9150
9367
|
trace?: never;
|
|
9151
9368
|
};
|
|
9369
|
+
"/api/v2/contacts/{contactId}/diagnostics": {
|
|
9370
|
+
parameters: {
|
|
9371
|
+
query?: never;
|
|
9372
|
+
header?: never;
|
|
9373
|
+
path?: never;
|
|
9374
|
+
cookie?: never;
|
|
9375
|
+
};
|
|
9376
|
+
/**
|
|
9377
|
+
* Диагностика причин молчания, operator workflow, действий и доставки
|
|
9378
|
+
* @description MCP-only read: возвращает метаданные и сохранённые evidence без тел сообщений, аргументов/результатов инструментов и raw error text. Отсутствующий production RAG trace помечается unknown, а не нулём.
|
|
9379
|
+
*/
|
|
9380
|
+
get: {
|
|
9381
|
+
parameters: {
|
|
9382
|
+
query?: {
|
|
9383
|
+
messageId?: string;
|
|
9384
|
+
};
|
|
9385
|
+
header?: never;
|
|
9386
|
+
path: {
|
|
9387
|
+
contactId: string;
|
|
9388
|
+
};
|
|
9389
|
+
cookie?: never;
|
|
9390
|
+
};
|
|
9391
|
+
requestBody?: never;
|
|
9392
|
+
responses: {
|
|
9393
|
+
200: {
|
|
9394
|
+
headers: {
|
|
9395
|
+
[name: string]: unknown;
|
|
9396
|
+
};
|
|
9397
|
+
content: {
|
|
9398
|
+
"application/json": {
|
|
9399
|
+
contact: {
|
|
9400
|
+
[key: string]: unknown;
|
|
9401
|
+
};
|
|
9402
|
+
platform: {
|
|
9403
|
+
[key: string]: unknown;
|
|
9404
|
+
} | null;
|
|
9405
|
+
message: {
|
|
9406
|
+
[key: string]: unknown;
|
|
9407
|
+
} | null;
|
|
9408
|
+
agent: {
|
|
9409
|
+
[key: string]: unknown;
|
|
9410
|
+
} | null;
|
|
9411
|
+
operatorEvents: {
|
|
9412
|
+
[key: string]: unknown;
|
|
9413
|
+
}[];
|
|
9414
|
+
triggerExecutions: {
|
|
9415
|
+
[key: string]: unknown;
|
|
9416
|
+
}[];
|
|
9417
|
+
toolExecutions: {
|
|
9418
|
+
[key: string]: unknown;
|
|
9419
|
+
}[];
|
|
9420
|
+
evidence: {
|
|
9421
|
+
[key: string]: unknown;
|
|
9422
|
+
};
|
|
9423
|
+
limitations: string[];
|
|
9424
|
+
};
|
|
9425
|
+
};
|
|
9426
|
+
};
|
|
9427
|
+
/** @description Контакт или выбранное сообщение не найдено в workspace */
|
|
9428
|
+
404: {
|
|
9429
|
+
headers: {
|
|
9430
|
+
[name: string]: unknown;
|
|
9431
|
+
};
|
|
9432
|
+
content?: never;
|
|
9433
|
+
};
|
|
9434
|
+
};
|
|
9435
|
+
};
|
|
9436
|
+
put?: never;
|
|
9437
|
+
post?: never;
|
|
9438
|
+
delete?: never;
|
|
9439
|
+
options?: never;
|
|
9440
|
+
head?: never;
|
|
9441
|
+
patch?: never;
|
|
9442
|
+
trace?: never;
|
|
9443
|
+
};
|
|
9152
9444
|
"/api/v2/contacts/import": {
|
|
9153
9445
|
parameters: {
|
|
9154
9446
|
query?: never;
|
|
@@ -9237,35 +9529,77 @@ export interface paths {
|
|
|
9237
9529
|
patch?: never;
|
|
9238
9530
|
trace?: never;
|
|
9239
9531
|
};
|
|
9240
|
-
"/api/v2/
|
|
9532
|
+
"/api/v2/workspaces/{workspaceId}/getcourse-contact-imports/{jobId}": {
|
|
9241
9533
|
parameters: {
|
|
9242
9534
|
query?: never;
|
|
9243
9535
|
header?: never;
|
|
9244
9536
|
path?: never;
|
|
9245
9537
|
cookie?: never;
|
|
9246
9538
|
};
|
|
9247
|
-
|
|
9248
|
-
|
|
9249
|
-
|
|
9250
|
-
|
|
9539
|
+
/**
|
|
9540
|
+
* Статус импорта GetCourse-контактов или одиночной cold-welcome отправки
|
|
9541
|
+
* @description Возвращает только ImportJob типа GETCOURSE_CONTACTS в указанном workspace. PARTIAL и FAILED выводятся из terminal counters. Scope `launch:campaigns`, потому что этот же ключ запускает обе операции и `mcp:*` намеренно не включает массовое чтение контактов.
|
|
9542
|
+
*/
|
|
9543
|
+
get: {
|
|
9251
9544
|
parameters: {
|
|
9252
9545
|
query?: never;
|
|
9253
9546
|
header?: never;
|
|
9254
|
-
path
|
|
9255
|
-
|
|
9256
|
-
|
|
9257
|
-
requestBody?: {
|
|
9258
|
-
content: {
|
|
9259
|
-
"application/json": components["schemas"]["ContactExportRequest"];
|
|
9547
|
+
path: {
|
|
9548
|
+
workspaceId: components["parameters"]["WorkspaceIdPath"];
|
|
9549
|
+
jobId: string;
|
|
9260
9550
|
};
|
|
9551
|
+
cookie?: never;
|
|
9261
9552
|
};
|
|
9553
|
+
requestBody?: never;
|
|
9262
9554
|
responses: {
|
|
9263
|
-
|
|
9555
|
+
200: {
|
|
9264
9556
|
headers: {
|
|
9265
9557
|
[name: string]: unknown;
|
|
9266
9558
|
};
|
|
9267
9559
|
content: {
|
|
9268
|
-
"application/json": components["schemas"]["
|
|
9560
|
+
"application/json": components["schemas"]["GetCourseContactImportStatusResponse"];
|
|
9561
|
+
};
|
|
9562
|
+
};
|
|
9563
|
+
404: components["responses"]["NotFound"];
|
|
9564
|
+
};
|
|
9565
|
+
};
|
|
9566
|
+
put?: never;
|
|
9567
|
+
post?: never;
|
|
9568
|
+
delete?: never;
|
|
9569
|
+
options?: never;
|
|
9570
|
+
head?: never;
|
|
9571
|
+
patch?: never;
|
|
9572
|
+
trace?: never;
|
|
9573
|
+
};
|
|
9574
|
+
"/api/v2/contacts/export": {
|
|
9575
|
+
parameters: {
|
|
9576
|
+
query?: never;
|
|
9577
|
+
header?: never;
|
|
9578
|
+
path?: never;
|
|
9579
|
+
cookie?: never;
|
|
9580
|
+
};
|
|
9581
|
+
get?: never;
|
|
9582
|
+
put?: never;
|
|
9583
|
+
/** Export contacts by filter */
|
|
9584
|
+
post: {
|
|
9585
|
+
parameters: {
|
|
9586
|
+
query?: never;
|
|
9587
|
+
header?: never;
|
|
9588
|
+
path?: never;
|
|
9589
|
+
cookie?: never;
|
|
9590
|
+
};
|
|
9591
|
+
requestBody?: {
|
|
9592
|
+
content: {
|
|
9593
|
+
"application/json": components["schemas"]["ContactExportRequest"];
|
|
9594
|
+
};
|
|
9595
|
+
};
|
|
9596
|
+
responses: {
|
|
9597
|
+
202: {
|
|
9598
|
+
headers: {
|
|
9599
|
+
[name: string]: unknown;
|
|
9600
|
+
};
|
|
9601
|
+
content: {
|
|
9602
|
+
"application/json": components["schemas"]["AsyncJobResponse"];
|
|
9269
9603
|
};
|
|
9270
9604
|
};
|
|
9271
9605
|
};
|
|
@@ -9315,6 +9649,118 @@ export interface paths {
|
|
|
9315
9649
|
patch?: never;
|
|
9316
9650
|
trace?: never;
|
|
9317
9651
|
};
|
|
9652
|
+
"/api/v2/contacts/{contactId}/trigger-claims": {
|
|
9653
|
+
parameters: {
|
|
9654
|
+
query?: never;
|
|
9655
|
+
header?: never;
|
|
9656
|
+
path?: never;
|
|
9657
|
+
cookie?: never;
|
|
9658
|
+
};
|
|
9659
|
+
/**
|
|
9660
|
+
* List burnt one-time trigger claims for contact
|
|
9661
|
+
* @description Права одноразовых триггеров (AgentTrigger.runOncePerContact), уже занятые этим контактом. canReset=false означает, что право держит идущий прогон.
|
|
9662
|
+
*/
|
|
9663
|
+
get: {
|
|
9664
|
+
parameters: {
|
|
9665
|
+
query?: never;
|
|
9666
|
+
header?: never;
|
|
9667
|
+
path: {
|
|
9668
|
+
contactId: string;
|
|
9669
|
+
};
|
|
9670
|
+
cookie?: never;
|
|
9671
|
+
};
|
|
9672
|
+
requestBody?: never;
|
|
9673
|
+
responses: {
|
|
9674
|
+
200: {
|
|
9675
|
+
headers: {
|
|
9676
|
+
[name: string]: unknown;
|
|
9677
|
+
};
|
|
9678
|
+
content: {
|
|
9679
|
+
"application/json": components["schemas"]["TriggerContactClaimsPage"];
|
|
9680
|
+
};
|
|
9681
|
+
};
|
|
9682
|
+
/** @description Контакт не найден в воркспейсе */
|
|
9683
|
+
404: {
|
|
9684
|
+
headers: {
|
|
9685
|
+
[name: string]: unknown;
|
|
9686
|
+
};
|
|
9687
|
+
content?: never;
|
|
9688
|
+
};
|
|
9689
|
+
};
|
|
9690
|
+
};
|
|
9691
|
+
put?: never;
|
|
9692
|
+
post?: never;
|
|
9693
|
+
delete?: never;
|
|
9694
|
+
options?: never;
|
|
9695
|
+
head?: never;
|
|
9696
|
+
patch?: never;
|
|
9697
|
+
trace?: never;
|
|
9698
|
+
};
|
|
9699
|
+
"/api/v2/contacts/{contactId}/trigger-claims/{triggerId}": {
|
|
9700
|
+
parameters: {
|
|
9701
|
+
query?: never;
|
|
9702
|
+
header?: never;
|
|
9703
|
+
path?: never;
|
|
9704
|
+
cookie?: never;
|
|
9705
|
+
};
|
|
9706
|
+
get?: never;
|
|
9707
|
+
put?: never;
|
|
9708
|
+
post?: never;
|
|
9709
|
+
/**
|
|
9710
|
+
* Allow a one-time trigger to fire for the contact again
|
|
9711
|
+
* @description Возвращает контакту сожжённое право. Снимается ТОЛЬКО status=COMPLETED: право со status=IN_PROGRESS держит владелец, а его finalize адресует пару «триггер+контакт», и удаление такой строки дало бы двух владельцев и повторные необратимые действия.
|
|
9712
|
+
*/
|
|
9713
|
+
delete: {
|
|
9714
|
+
parameters: {
|
|
9715
|
+
query?: never;
|
|
9716
|
+
header?: never;
|
|
9717
|
+
path: {
|
|
9718
|
+
contactId: string;
|
|
9719
|
+
triggerId: string;
|
|
9720
|
+
};
|
|
9721
|
+
cookie?: never;
|
|
9722
|
+
};
|
|
9723
|
+
requestBody: {
|
|
9724
|
+
content: {
|
|
9725
|
+
"application/json": components["schemas"]["ResetTriggerClaimRequest"];
|
|
9726
|
+
};
|
|
9727
|
+
};
|
|
9728
|
+
responses: {
|
|
9729
|
+
/** @description Право возвращено */
|
|
9730
|
+
204: {
|
|
9731
|
+
headers: {
|
|
9732
|
+
[name: string]: unknown;
|
|
9733
|
+
};
|
|
9734
|
+
content?: never;
|
|
9735
|
+
};
|
|
9736
|
+
/** @description Нет explicitConfirmation */
|
|
9737
|
+
400: {
|
|
9738
|
+
headers: {
|
|
9739
|
+
[name: string]: unknown;
|
|
9740
|
+
};
|
|
9741
|
+
content?: never;
|
|
9742
|
+
};
|
|
9743
|
+
/** @description Контакт не найден либо право не занято */
|
|
9744
|
+
404: {
|
|
9745
|
+
headers: {
|
|
9746
|
+
[name: string]: unknown;
|
|
9747
|
+
};
|
|
9748
|
+
content?: never;
|
|
9749
|
+
};
|
|
9750
|
+
/** @description Право держит прогон триггера */
|
|
9751
|
+
409: {
|
|
9752
|
+
headers: {
|
|
9753
|
+
[name: string]: unknown;
|
|
9754
|
+
};
|
|
9755
|
+
content?: never;
|
|
9756
|
+
};
|
|
9757
|
+
};
|
|
9758
|
+
};
|
|
9759
|
+
options?: never;
|
|
9760
|
+
head?: never;
|
|
9761
|
+
patch?: never;
|
|
9762
|
+
trace?: never;
|
|
9763
|
+
};
|
|
9318
9764
|
"/api/v2/contacts/{contactId}/merge-history": {
|
|
9319
9765
|
parameters: {
|
|
9320
9766
|
query?: never;
|
|
@@ -9933,7 +10379,7 @@ export interface paths {
|
|
|
9933
10379
|
parameters: {
|
|
9934
10380
|
query?: {
|
|
9935
10381
|
includeArchived?: boolean;
|
|
9936
|
-
/** @description Глубина сводки в
|
|
10382
|
+
/** @description Глубина сводки в днях. НЕ ЗАДАН — за всё время. Прежде подставлялось окно 60 дней, и оно расходилось само с собой: выданное раньше него показывалось как «выдано 0», тогда как выручка в той же строке считалась за всё время. */
|
|
9937
10383
|
days?: number;
|
|
9938
10384
|
limit?: number;
|
|
9939
10385
|
offset?: number;
|
|
@@ -10099,6 +10545,7 @@ export interface paths {
|
|
|
10099
10545
|
get: {
|
|
10100
10546
|
parameters: {
|
|
10101
10547
|
query?: {
|
|
10548
|
+
/** @description Глубина разреза в днях; не задан — за всё время */
|
|
10102
10549
|
days?: number;
|
|
10103
10550
|
};
|
|
10104
10551
|
header?: never;
|
|
@@ -10129,6 +10576,51 @@ export interface paths {
|
|
|
10129
10576
|
patch?: never;
|
|
10130
10577
|
trace?: never;
|
|
10131
10578
|
};
|
|
10579
|
+
"/api/v2/workspaces/{workspaceId}/tracked-links/{linkId}/reach": {
|
|
10580
|
+
parameters: {
|
|
10581
|
+
query?: never;
|
|
10582
|
+
header?: never;
|
|
10583
|
+
path?: never;
|
|
10584
|
+
cookie?: never;
|
|
10585
|
+
};
|
|
10586
|
+
/**
|
|
10587
|
+
* Разрез ссылки по месту применения
|
|
10588
|
+
* @description Где ссылка работала: площадка и агент, через которых она уходила людям. Отвечает на «где», тогда как /breakdown — на «после какого касания». Оси независимые: одна выдача принадлежит ровно одной площадке и одному агенту, а тип источника — отдельное измерение. ⚠️ null в оси — это «не определён», отдельная строка, а не ноль: у контакта могло не быть ни одного ответа агента. ⚠️ Пустое имя при заполненном id значит, что площадку или агента удалили: id хранится снимком без внешнего ключа, чтобы история кликов пережила удаление.
|
|
10589
|
+
*/
|
|
10590
|
+
get: {
|
|
10591
|
+
parameters: {
|
|
10592
|
+
query?: {
|
|
10593
|
+
/** @description Глубина разреза в днях; не задан — за всё время */
|
|
10594
|
+
days?: number;
|
|
10595
|
+
};
|
|
10596
|
+
header?: never;
|
|
10597
|
+
path: {
|
|
10598
|
+
workspaceId: components["parameters"]["BroadcastWorkspaceId"];
|
|
10599
|
+
linkId: components["parameters"]["TrackedLinkIdPath"];
|
|
10600
|
+
};
|
|
10601
|
+
cookie?: never;
|
|
10602
|
+
};
|
|
10603
|
+
requestBody?: never;
|
|
10604
|
+
responses: {
|
|
10605
|
+
/** @description OK */
|
|
10606
|
+
200: {
|
|
10607
|
+
headers: {
|
|
10608
|
+
[name: string]: unknown;
|
|
10609
|
+
};
|
|
10610
|
+
content: {
|
|
10611
|
+
"application/json": components["schemas"]["TrackedLinkReachBreakdown"][];
|
|
10612
|
+
};
|
|
10613
|
+
};
|
|
10614
|
+
};
|
|
10615
|
+
};
|
|
10616
|
+
put?: never;
|
|
10617
|
+
post?: never;
|
|
10618
|
+
delete?: never;
|
|
10619
|
+
options?: never;
|
|
10620
|
+
head?: never;
|
|
10621
|
+
patch?: never;
|
|
10622
|
+
trace?: never;
|
|
10623
|
+
};
|
|
10132
10624
|
"/api/v2/workspaces/{workspaceId}/tracked-links/{linkId}/clicks": {
|
|
10133
10625
|
parameters: {
|
|
10134
10626
|
query?: never;
|
|
@@ -10143,6 +10635,7 @@ export interface paths {
|
|
|
10143
10635
|
get: {
|
|
10144
10636
|
parameters: {
|
|
10145
10637
|
query?: {
|
|
10638
|
+
/** @description Глубина разреза в днях; не задан — за всё время */
|
|
10146
10639
|
days?: number;
|
|
10147
10640
|
page?: number;
|
|
10148
10641
|
pageSize?: number;
|
|
@@ -10290,6 +10783,8 @@ export interface paths {
|
|
|
10290
10783
|
mailingVariantId?: components["parameters"]["BroadcastMailingVariantId"];
|
|
10291
10784
|
/** @description Механизм запуска: `wave` — доставляет процесс школы (мы штампуем поля сделки), `cold_welcome` — пишем первыми сами. Мультивыбор; ОБА значения = фильтра нет. У строки получателя механизм берётся из её собственного режима, у сделки и кандидата — из когорты по import job (нет метки и нет холодных получателей = wave). */
|
|
10292
10785
|
mechanism?: components["parameters"]["BroadcastMechanism"];
|
|
10786
|
+
/** @description ЧТО ЗАПУСТИЛО отправку: `manual` — оператор нажал «Запустить», `registration` — автоприём регистрации по order-вебхуку школы, `schedule` — ночной прогон планировщика. Мультивыбор; выбраны все = фильтра нет. Это ДРУГАЯ ось, а не уточнение механизма: механизм отвечает «чем доставляли». Любой выбор ИСКЛЮЧАЕТ волны школы целиком — у них запускающего в этом смысле нет. */
|
|
10787
|
+
launchSource?: components["parameters"]["BroadcastLaunchSource"];
|
|
10293
10788
|
/** @description Мультивыбор: повторяйте параметр (`?x=A&x=B`). Одиночное значение остаётся валидным. */
|
|
10294
10789
|
product?: components["parameters"]["BroadcastProduct"];
|
|
10295
10790
|
/** @description Добавляет строки без продукта. Можно сочетать с product: значения и NULL объединяются через OR. */
|
|
@@ -10298,8 +10793,10 @@ export interface paths {
|
|
|
10298
10793
|
freshness?: components["parameters"]["BroadcastFreshness"];
|
|
10299
10794
|
/** @description Мессенджеры волны (транспорты GetCourse + UNKNOWN — канал не определён), мультивыбор. Деньги фильтруются по скалярному каналу сделки. */
|
|
10300
10795
|
channels?: components["parameters"]["BroadcastChannels"];
|
|
10301
|
-
/** @description cohort — дата запуска; period — дата
|
|
10302
|
-
view?: "cohort" | "period";
|
|
10796
|
+
/** @description cohort — дата запуска; period — дата события; entry — дата входа в сегмент (segment_entered_at). В entry строки без даты входа выпадают всегда, включая mode=all. */
|
|
10797
|
+
view?: "cohort" | "period" | "entry";
|
|
10798
|
+
/** @description day — календарные бакеты; period — один компактный бакет __period__ за весь диапазон. */
|
|
10799
|
+
granularity?: "day" | "period";
|
|
10303
10800
|
};
|
|
10304
10801
|
header?: never;
|
|
10305
10802
|
path: {
|
|
@@ -10590,6 +11087,8 @@ export interface paths {
|
|
|
10590
11087
|
mailingVariantId?: components["parameters"]["BroadcastMailingVariantId"];
|
|
10591
11088
|
/** @description Механизм запуска: `wave` — доставляет процесс школы (мы штампуем поля сделки), `cold_welcome` — пишем первыми сами. Мультивыбор; ОБА значения = фильтра нет. У строки получателя механизм берётся из её собственного режима, у сделки и кандидата — из когорты по import job (нет метки и нет холодных получателей = wave). */
|
|
10592
11089
|
mechanism?: components["parameters"]["BroadcastMechanism"];
|
|
11090
|
+
/** @description ЧТО ЗАПУСТИЛО отправку: `manual` — оператор нажал «Запустить», `registration` — автоприём регистрации по order-вебхуку школы, `schedule` — ночной прогон планировщика. Мультивыбор; выбраны все = фильтра нет. Это ДРУГАЯ ось, а не уточнение механизма: механизм отвечает «чем доставляли». Любой выбор ИСКЛЮЧАЕТ волны школы целиком — у них запускающего в этом смысле нет. */
|
|
11091
|
+
launchSource?: components["parameters"]["BroadcastLaunchSource"];
|
|
10593
11092
|
/** @description Мультивыбор: повторяйте параметр (`?x=A&x=B`). Одиночное значение остаётся валидным. */
|
|
10594
11093
|
product?: components["parameters"]["BroadcastProduct"];
|
|
10595
11094
|
/** @description Добавляет строки без продукта. Можно сочетать с product: значения и NULL объединяются через OR. */
|
|
@@ -10654,6 +11153,8 @@ export interface paths {
|
|
|
10654
11153
|
mailingVariantId?: components["parameters"]["BroadcastMailingVariantId"];
|
|
10655
11154
|
/** @description Механизм запуска: `wave` — доставляет процесс школы (мы штампуем поля сделки), `cold_welcome` — пишем первыми сами. Мультивыбор; ОБА значения = фильтра нет. У строки получателя механизм берётся из её собственного режима, у сделки и кандидата — из когорты по import job (нет метки и нет холодных получателей = wave). */
|
|
10656
11155
|
mechanism?: components["parameters"]["BroadcastMechanism"];
|
|
11156
|
+
/** @description ЧТО ЗАПУСТИЛО отправку: `manual` — оператор нажал «Запустить», `registration` — автоприём регистрации по order-вебхуку школы, `schedule` — ночной прогон планировщика. Мультивыбор; выбраны все = фильтра нет. Это ДРУГАЯ ось, а не уточнение механизма: механизм отвечает «чем доставляли». Любой выбор ИСКЛЮЧАЕТ волны школы целиком — у них запускающего в этом смысле нет. */
|
|
11157
|
+
launchSource?: components["parameters"]["BroadcastLaunchSource"];
|
|
10657
11158
|
/** @description Мультивыбор: повторяйте параметр (`?x=A&x=B`). Одиночное значение остаётся валидным. */
|
|
10658
11159
|
product?: components["parameters"]["BroadcastProduct"];
|
|
10659
11160
|
/** @description Добавляет строки без продукта. Можно сочетать с product: значения и NULL объединяются через OR. */
|
|
@@ -10662,7 +11163,7 @@ export interface paths {
|
|
|
10662
11163
|
freshness?: components["parameters"]["BroadcastFreshness"];
|
|
10663
11164
|
/** @description Мессенджеры волны (транспорты GetCourse + UNKNOWN — канал не определён), мультивыбор. Деньги фильтруются по скалярному каналу сделки. */
|
|
10664
11165
|
channels?: components["parameters"]["BroadcastChannels"];
|
|
10665
|
-
/** @description cohort — дата запуска; period — дата
|
|
11166
|
+
/** @description cohort — дата запуска; period — дата события; entry — дата входа в сегмент (segment_entered_at: регистрация, конец серии, предсписок). В entry строки без даты входа выпадают всегда, включая mode=all, а события атрибутируются когортно. */
|
|
10666
11167
|
view?: components["parameters"]["BroadcastView"];
|
|
10667
11168
|
/** @description Конкретный день кликнутой ячейки (МСК). */
|
|
10668
11169
|
date?: components["parameters"]["BroadcastDate"];
|
|
@@ -10696,17 +11197,23 @@ export interface paths {
|
|
|
10696
11197
|
patch?: never;
|
|
10697
11198
|
trace?: never;
|
|
10698
11199
|
};
|
|
10699
|
-
"/api/v2/workspaces/{workspaceId}/broadcast-analytics/
|
|
11200
|
+
"/api/v2/workspaces/{workspaceId}/broadcast-analytics/unique-contacts": {
|
|
10700
11201
|
parameters: {
|
|
10701
11202
|
query?: never;
|
|
10702
11203
|
header?: never;
|
|
10703
11204
|
path?: never;
|
|
10704
11205
|
cookie?: never;
|
|
10705
11206
|
};
|
|
10706
|
-
/**
|
|
11207
|
+
/**
|
|
11208
|
+
* Уникальных контактов за период (НЕ аддитивно)
|
|
11209
|
+
* @description Сколько РАЗНЫХ людей стоит за «Отправлено» той же выборки. Периметр совпадает с тоталом
|
|
11210
|
+
* sent; отличие только в единице счёта: строка реестра это «волна × контакт», а тут считается
|
|
11211
|
+
* контакт. Складывать по дням/сегментам/продуктам НЕЛЬЗЯ — один человек живёт в каждой группе,
|
|
11212
|
+
* куда ему уходила волна.
|
|
11213
|
+
*/
|
|
10707
11214
|
get: {
|
|
10708
11215
|
parameters: {
|
|
10709
|
-
query
|
|
11216
|
+
query?: {
|
|
10710
11217
|
mode?: components["parameters"]["BroadcastPeriodMode"];
|
|
10711
11218
|
days?: components["parameters"]["BroadcastDays"];
|
|
10712
11219
|
/** @description Начальная календарная дата МСК для mode=range. */
|
|
@@ -10724,6 +11231,8 @@ export interface paths {
|
|
|
10724
11231
|
mailingVariantId?: components["parameters"]["BroadcastMailingVariantId"];
|
|
10725
11232
|
/** @description Механизм запуска: `wave` — доставляет процесс школы (мы штампуем поля сделки), `cold_welcome` — пишем первыми сами. Мультивыбор; ОБА значения = фильтра нет. У строки получателя механизм берётся из её собственного режима, у сделки и кандидата — из когорты по import job (нет метки и нет холодных получателей = wave). */
|
|
10726
11233
|
mechanism?: components["parameters"]["BroadcastMechanism"];
|
|
11234
|
+
/** @description ЧТО ЗАПУСТИЛО отправку: `manual` — оператор нажал «Запустить», `registration` — автоприём регистрации по order-вебхуку школы, `schedule` — ночной прогон планировщика. Мультивыбор; выбраны все = фильтра нет. Это ДРУГАЯ ось, а не уточнение механизма: механизм отвечает «чем доставляли». Любой выбор ИСКЛЮЧАЕТ волны школы целиком — у них запускающего в этом смысле нет. */
|
|
11235
|
+
launchSource?: components["parameters"]["BroadcastLaunchSource"];
|
|
10727
11236
|
/** @description Мультивыбор: повторяйте параметр (`?x=A&x=B`). Одиночное значение остаётся валидным. */
|
|
10728
11237
|
product?: components["parameters"]["BroadcastProduct"];
|
|
10729
11238
|
/** @description Добавляет строки без продукта. Можно сочетать с product: значения и NULL объединяются через OR. */
|
|
@@ -10732,24 +11241,8 @@ export interface paths {
|
|
|
10732
11241
|
freshness?: components["parameters"]["BroadcastFreshness"];
|
|
10733
11242
|
/** @description Мессенджеры волны (транспорты GetCourse + UNKNOWN — канал не определён), мультивыбор. Деньги фильтруются по скалярному каналу сделки. */
|
|
10734
11243
|
channels?: components["parameters"]["BroadcastChannels"];
|
|
10735
|
-
/** @description cohort — дата запуска; period — дата
|
|
11244
|
+
/** @description cohort — дата запуска; period — дата события; entry — дата входа в сегмент (segment_entered_at: регистрация, конец серии, предсписок). В entry строки без даты входа выпадают всегда, включая mode=all, а события атрибутируются когортно. */
|
|
10736
11245
|
view?: components["parameters"]["BroadcastView"];
|
|
10737
|
-
/** @description Конкретный день кликнутой ячейки (МСК). */
|
|
10738
|
-
date?: components["parameters"]["BroadcastDate"];
|
|
10739
|
-
/** @description Канал кликнутой ячейки; пусто = общий итог. */
|
|
10740
|
-
channel?: components["parameters"]["BroadcastChannel"];
|
|
10741
|
-
/** @description ID конкретной волны. */
|
|
10742
|
-
importJobId?: components["parameters"]["BroadcastImportJobId"];
|
|
10743
|
-
page?: components["parameters"]["BroadcastPage"];
|
|
10744
|
-
pageSize?: components["parameters"]["BroadcastPageSize"];
|
|
10745
|
-
/** @description Колонка серверной сортировки списка получателей. */
|
|
10746
|
-
sortBy?: components["parameters"]["BroadcastRecipientSortBy"];
|
|
10747
|
-
/** @description Направление серверной сортировки списка получателей. */
|
|
10748
|
-
sortOrder?: components["parameters"]["BroadcastRecipientSortOrder"];
|
|
10749
|
-
/** @description Сузить выборку одной отслеживаемой ссылкой. Уточнение оператора внутри окна: применяется и к списку, и к счётчику — «показано N из M» обязано сходиться. */
|
|
10750
|
-
linkId?: string;
|
|
10751
|
-
metric: "sent" | "delivered" | "entered" | "deepDialog" | "linkIssued" | "clicked" | "handedOff" | "notDelivered" | "notSent";
|
|
10752
|
-
reason?: "NO_MESSENGER" | "ACTIVE_INVOICE_SAME_PRODUCT" | "ACTIVE_DEAL_SAME_PRODUCT" | "PAID_SAME_PRODUCT" | "ACTIVE_DEAL_OTHER_PRODUCT" | "MANAGER_ASSIGNED_ACTIVE_DEAL" | "PRODUCT_CONTEXT_MISSING" | "GETCOURSE_CHECK_ERROR" | "ALREADY_SENT" | "USER_NOT_FOUND";
|
|
10753
11246
|
};
|
|
10754
11247
|
header?: never;
|
|
10755
11248
|
path: {
|
|
@@ -10765,7 +11258,7 @@ export interface paths {
|
|
|
10765
11258
|
[name: string]: unknown;
|
|
10766
11259
|
};
|
|
10767
11260
|
content: {
|
|
10768
|
-
"application/json": components["schemas"]["
|
|
11261
|
+
"application/json": components["schemas"]["BroadcastUniqueContacts"];
|
|
10769
11262
|
};
|
|
10770
11263
|
};
|
|
10771
11264
|
};
|
|
@@ -10778,17 +11271,23 @@ export interface paths {
|
|
|
10778
11271
|
patch?: never;
|
|
10779
11272
|
trace?: never;
|
|
10780
11273
|
};
|
|
10781
|
-
"/api/v2/workspaces/{workspaceId}/broadcast-analytics/
|
|
11274
|
+
"/api/v2/workspaces/{workspaceId}/broadcast-analytics/per-person": {
|
|
10782
11275
|
parameters: {
|
|
10783
11276
|
query?: never;
|
|
10784
11277
|
header?: never;
|
|
10785
11278
|
path?: never;
|
|
10786
11279
|
cookie?: never;
|
|
10787
11280
|
};
|
|
10788
|
-
/**
|
|
11281
|
+
/**
|
|
11282
|
+
* Итоги верхних карточек по уникальным контактам за период
|
|
11283
|
+
* @description Счётчики верхних карточек «Обзора», дедуплицированные по chat_user_id за весь выбранный
|
|
11284
|
+
* период. Ручная историческая статистика не входит: её агрегированные строки не несут
|
|
11285
|
+
* идентификатора контакта. Денежные суммы не пересчитываются и в этот ответ не включены.
|
|
11286
|
+
* Результат НЕ аддитивен — складывать его по дням или измерениям нельзя.
|
|
11287
|
+
*/
|
|
10789
11288
|
get: {
|
|
10790
11289
|
parameters: {
|
|
10791
|
-
query
|
|
11290
|
+
query?: {
|
|
10792
11291
|
mode?: components["parameters"]["BroadcastPeriodMode"];
|
|
10793
11292
|
days?: components["parameters"]["BroadcastDays"];
|
|
10794
11293
|
/** @description Начальная календарная дата МСК для mode=range. */
|
|
@@ -10806,6 +11305,8 @@ export interface paths {
|
|
|
10806
11305
|
mailingVariantId?: components["parameters"]["BroadcastMailingVariantId"];
|
|
10807
11306
|
/** @description Механизм запуска: `wave` — доставляет процесс школы (мы штампуем поля сделки), `cold_welcome` — пишем первыми сами. Мультивыбор; ОБА значения = фильтра нет. У строки получателя механизм берётся из её собственного режима, у сделки и кандидата — из когорты по import job (нет метки и нет холодных получателей = wave). */
|
|
10808
11307
|
mechanism?: components["parameters"]["BroadcastMechanism"];
|
|
11308
|
+
/** @description ЧТО ЗАПУСТИЛО отправку: `manual` — оператор нажал «Запустить», `registration` — автоприём регистрации по order-вебхуку школы, `schedule` — ночной прогон планировщика. Мультивыбор; выбраны все = фильтра нет. Это ДРУГАЯ ось, а не уточнение механизма: механизм отвечает «чем доставляли». Любой выбор ИСКЛЮЧАЕТ волны школы целиком — у них запускающего в этом смысле нет. */
|
|
11309
|
+
launchSource?: components["parameters"]["BroadcastLaunchSource"];
|
|
10809
11310
|
/** @description Мультивыбор: повторяйте параметр (`?x=A&x=B`). Одиночное значение остаётся валидным. */
|
|
10810
11311
|
product?: components["parameters"]["BroadcastProduct"];
|
|
10811
11312
|
/** @description Добавляет строки без продукта. Можно сочетать с product: значения и NULL объединяются через OR. */
|
|
@@ -10814,21 +11315,8 @@ export interface paths {
|
|
|
10814
11315
|
freshness?: components["parameters"]["BroadcastFreshness"];
|
|
10815
11316
|
/** @description Мессенджеры волны (транспорты GetCourse + UNKNOWN — канал не определён), мультивыбор. Деньги фильтруются по скалярному каналу сделки. */
|
|
10816
11317
|
channels?: components["parameters"]["BroadcastChannels"];
|
|
10817
|
-
/** @description cohort — дата запуска; period — дата
|
|
11318
|
+
/** @description cohort — дата запуска; period — дата события; entry — дата входа в сегмент (segment_entered_at: регистрация, конец серии, предсписок). В entry строки без даты входа выпадают всегда, включая mode=all, а события атрибутируются когортно. */
|
|
10818
11319
|
view?: components["parameters"]["BroadcastView"];
|
|
10819
|
-
/** @description Конкретный день кликнутой ячейки (МСК). */
|
|
10820
|
-
date?: components["parameters"]["BroadcastDate"];
|
|
10821
|
-
/** @description Канал кликнутой ячейки; пусто = общий итог. */
|
|
10822
|
-
channel?: components["parameters"]["BroadcastChannel"];
|
|
10823
|
-
/** @description ID конкретной волны. */
|
|
10824
|
-
importJobId?: components["parameters"]["BroadcastImportJobId"];
|
|
10825
|
-
page?: components["parameters"]["BroadcastPage"];
|
|
10826
|
-
pageSize?: components["parameters"]["BroadcastPageSize"];
|
|
10827
|
-
/** @description Колонка серверной сортировки списка сделок и оплат. */
|
|
10828
|
-
sortBy?: components["parameters"]["BroadcastDealSortBy"];
|
|
10829
|
-
/** @description Направление серверной сортировки списка сделок и оплат. */
|
|
10830
|
-
sortOrder?: components["parameters"]["BroadcastDealSortOrder"];
|
|
10831
|
-
metric: "issued" | "paid" | "withoutCohort";
|
|
10832
11320
|
};
|
|
10833
11321
|
header?: never;
|
|
10834
11322
|
path: {
|
|
@@ -10844,7 +11332,7 @@ export interface paths {
|
|
|
10844
11332
|
[name: string]: unknown;
|
|
10845
11333
|
};
|
|
10846
11334
|
content: {
|
|
10847
|
-
"application/json": components["schemas"]["
|
|
11335
|
+
"application/json": components["schemas"]["BroadcastPerPersonMetrics"];
|
|
10848
11336
|
};
|
|
10849
11337
|
};
|
|
10850
11338
|
};
|
|
@@ -10857,17 +11345,17 @@ export interface paths {
|
|
|
10857
11345
|
patch?: never;
|
|
10858
11346
|
trace?: never;
|
|
10859
11347
|
};
|
|
10860
|
-
"/api/v2/workspaces/{workspaceId}/broadcast-analytics/
|
|
11348
|
+
"/api/v2/workspaces/{workspaceId}/broadcast-analytics/recipients": {
|
|
10861
11349
|
parameters: {
|
|
10862
11350
|
query?: never;
|
|
10863
11351
|
header?: never;
|
|
10864
11352
|
path?: never;
|
|
10865
11353
|
cookie?: never;
|
|
10866
11354
|
};
|
|
10867
|
-
/**
|
|
11355
|
+
/** Drill-down получателей по метрике */
|
|
10868
11356
|
get: {
|
|
10869
11357
|
parameters: {
|
|
10870
|
-
query
|
|
11358
|
+
query: {
|
|
10871
11359
|
mode?: components["parameters"]["BroadcastPeriodMode"];
|
|
10872
11360
|
days?: components["parameters"]["BroadcastDays"];
|
|
10873
11361
|
/** @description Начальная календарная дата МСК для mode=range. */
|
|
@@ -10885,6 +11373,8 @@ export interface paths {
|
|
|
10885
11373
|
mailingVariantId?: components["parameters"]["BroadcastMailingVariantId"];
|
|
10886
11374
|
/** @description Механизм запуска: `wave` — доставляет процесс школы (мы штампуем поля сделки), `cold_welcome` — пишем первыми сами. Мультивыбор; ОБА значения = фильтра нет. У строки получателя механизм берётся из её собственного режима, у сделки и кандидата — из когорты по import job (нет метки и нет холодных получателей = wave). */
|
|
10887
11375
|
mechanism?: components["parameters"]["BroadcastMechanism"];
|
|
11376
|
+
/** @description ЧТО ЗАПУСТИЛО отправку: `manual` — оператор нажал «Запустить», `registration` — автоприём регистрации по order-вебхуку школы, `schedule` — ночной прогон планировщика. Мультивыбор; выбраны все = фильтра нет. Это ДРУГАЯ ось, а не уточнение механизма: механизм отвечает «чем доставляли». Любой выбор ИСКЛЮЧАЕТ волны школы целиком — у них запускающего в этом смысле нет. */
|
|
11377
|
+
launchSource?: components["parameters"]["BroadcastLaunchSource"];
|
|
10888
11378
|
/** @description Мультивыбор: повторяйте параметр (`?x=A&x=B`). Одиночное значение остаётся валидным. */
|
|
10889
11379
|
product?: components["parameters"]["BroadcastProduct"];
|
|
10890
11380
|
/** @description Добавляет строки без продукта. Можно сочетать с product: значения и NULL объединяются через OR. */
|
|
@@ -10893,7 +11383,7 @@ export interface paths {
|
|
|
10893
11383
|
freshness?: components["parameters"]["BroadcastFreshness"];
|
|
10894
11384
|
/** @description Мессенджеры волны (транспорты GetCourse + UNKNOWN — канал не определён), мультивыбор. Деньги фильтруются по скалярному каналу сделки. */
|
|
10895
11385
|
channels?: components["parameters"]["BroadcastChannels"];
|
|
10896
|
-
/** @description cohort — дата запуска; period — дата
|
|
11386
|
+
/** @description cohort — дата запуска; period — дата события; entry — дата входа в сегмент (segment_entered_at: регистрация, конец серии, предсписок). В entry строки без даты входа выпадают всегда, включая mode=all, а события атрибутируются когортно. */
|
|
10897
11387
|
view?: components["parameters"]["BroadcastView"];
|
|
10898
11388
|
/** @description Конкретный день кликнутой ячейки (МСК). */
|
|
10899
11389
|
date?: components["parameters"]["BroadcastDate"];
|
|
@@ -10903,8 +11393,17 @@ export interface paths {
|
|
|
10903
11393
|
importJobId?: components["parameters"]["BroadcastImportJobId"];
|
|
10904
11394
|
page?: components["parameters"]["BroadcastPage"];
|
|
10905
11395
|
pageSize?: components["parameters"]["BroadcastPageSize"];
|
|
10906
|
-
/** @description
|
|
10907
|
-
|
|
11396
|
+
/** @description Колонка серверной сортировки списка получателей. */
|
|
11397
|
+
sortBy?: components["parameters"]["BroadcastRecipientSortBy"];
|
|
11398
|
+
/** @description Направление серверной сортировки списка получателей. */
|
|
11399
|
+
sortOrder?: components["parameters"]["BroadcastRecipientSortOrder"];
|
|
11400
|
+
/** @description Сузить выборку одной отслеживаемой ссылкой. Уточнение оператора внутри окна: применяется и к списку, и к счётчику — «показано N из M» обязано сходиться. */
|
|
11401
|
+
linkId?: string;
|
|
11402
|
+
metric: "sent" | "delivered" | "entered" | "deepDialog" | "linkIssued" | "clicked" | "handedOff" | "notDelivered" | "notSent";
|
|
11403
|
+
/** @description Откуда брать неотправленных при metric=notSent: preflight — проверка волны школы, schedule — журнал подач авторассылки, ownSend — след отсева ручной холодной отправки. Причины трёх источников живут в разных таблицах. У ownSend список бывает короче числа причины: число — агрегат задачи и полно за всю историю, а построчный след начинается с выкатки (см. tracedCount у причины). */
|
|
11404
|
+
reasonSource?: "preflight" | "schedule" | "ownSend";
|
|
11405
|
+
/** @description Код причины неотправки. Словарь выбирает reasonSource: у preflight это GetCourseWavePreflightReason (NO_MESSENGER, ALREADY_SENT, USER_NOT_FOUND и т.д. — другой код там отвергается, потому что значение кастуется в enum прямо в SQL); у schedule это исход подачи, у ownSend — исход прогона (SKIPPED_BOT_SILENCED и т.д.), и у этих двух проверяется только форма кода: заглавные латинские буквы, цифры и подчёркивания. */
|
|
11406
|
+
reason?: string;
|
|
10908
11407
|
};
|
|
10909
11408
|
header?: never;
|
|
10910
11409
|
path: {
|
|
@@ -10920,7 +11419,7 @@ export interface paths {
|
|
|
10920
11419
|
[name: string]: unknown;
|
|
10921
11420
|
};
|
|
10922
11421
|
content: {
|
|
10923
|
-
"application/json": components["schemas"]["
|
|
11422
|
+
"application/json": components["schemas"]["BroadcastRecipientsDrilldownResponse"];
|
|
10924
11423
|
};
|
|
10925
11424
|
};
|
|
10926
11425
|
};
|
|
@@ -10933,17 +11432,17 @@ export interface paths {
|
|
|
10933
11432
|
patch?: never;
|
|
10934
11433
|
trace?: never;
|
|
10935
11434
|
};
|
|
10936
|
-
"/api/v2/workspaces/{workspaceId}/broadcast-analytics/
|
|
11435
|
+
"/api/v2/workspaces/{workspaceId}/broadcast-analytics/deals": {
|
|
10937
11436
|
parameters: {
|
|
10938
11437
|
query?: never;
|
|
10939
11438
|
header?: never;
|
|
10940
11439
|
path?: never;
|
|
10941
11440
|
cookie?: never;
|
|
10942
11441
|
};
|
|
10943
|
-
/** Drill-down
|
|
11442
|
+
/** Drill-down сделок и оплат */
|
|
10944
11443
|
get: {
|
|
10945
11444
|
parameters: {
|
|
10946
|
-
query
|
|
11445
|
+
query: {
|
|
10947
11446
|
mode?: components["parameters"]["BroadcastPeriodMode"];
|
|
10948
11447
|
days?: components["parameters"]["BroadcastDays"];
|
|
10949
11448
|
/** @description Начальная календарная дата МСК для mode=range. */
|
|
@@ -10961,6 +11460,8 @@ export interface paths {
|
|
|
10961
11460
|
mailingVariantId?: components["parameters"]["BroadcastMailingVariantId"];
|
|
10962
11461
|
/** @description Механизм запуска: `wave` — доставляет процесс школы (мы штампуем поля сделки), `cold_welcome` — пишем первыми сами. Мультивыбор; ОБА значения = фильтра нет. У строки получателя механизм берётся из её собственного режима, у сделки и кандидата — из когорты по import job (нет метки и нет холодных получателей = wave). */
|
|
10963
11462
|
mechanism?: components["parameters"]["BroadcastMechanism"];
|
|
11463
|
+
/** @description ЧТО ЗАПУСТИЛО отправку: `manual` — оператор нажал «Запустить», `registration` — автоприём регистрации по order-вебхуку школы, `schedule` — ночной прогон планировщика. Мультивыбор; выбраны все = фильтра нет. Это ДРУГАЯ ось, а не уточнение механизма: механизм отвечает «чем доставляли». Любой выбор ИСКЛЮЧАЕТ волны школы целиком — у них запускающего в этом смысле нет. */
|
|
11464
|
+
launchSource?: components["parameters"]["BroadcastLaunchSource"];
|
|
10964
11465
|
/** @description Мультивыбор: повторяйте параметр (`?x=A&x=B`). Одиночное значение остаётся валидным. */
|
|
10965
11466
|
product?: components["parameters"]["BroadcastProduct"];
|
|
10966
11467
|
/** @description Добавляет строки без продукта. Можно сочетать с product: значения и NULL объединяются через OR. */
|
|
@@ -10969,7 +11470,7 @@ export interface paths {
|
|
|
10969
11470
|
freshness?: components["parameters"]["BroadcastFreshness"];
|
|
10970
11471
|
/** @description Мессенджеры волны (транспорты GetCourse + UNKNOWN — канал не определён), мультивыбор. Деньги фильтруются по скалярному каналу сделки. */
|
|
10971
11472
|
channels?: components["parameters"]["BroadcastChannels"];
|
|
10972
|
-
/** @description cohort — дата запуска; period — дата
|
|
11473
|
+
/** @description cohort — дата запуска; period — дата события; entry — дата входа в сегмент (segment_entered_at: регистрация, конец серии, предсписок). В entry строки без даты входа выпадают всегда, включая mode=all, а события атрибутируются когортно. */
|
|
10973
11474
|
view?: components["parameters"]["BroadcastView"];
|
|
10974
11475
|
/** @description Конкретный день кликнутой ячейки (МСК). */
|
|
10975
11476
|
date?: components["parameters"]["BroadcastDate"];
|
|
@@ -10977,12 +11478,13 @@ export interface paths {
|
|
|
10977
11478
|
channel?: components["parameters"]["BroadcastChannel"];
|
|
10978
11479
|
/** @description ID конкретной волны. */
|
|
10979
11480
|
importJobId?: components["parameters"]["BroadcastImportJobId"];
|
|
10980
|
-
/** @description Колонка сортировки косвенных оплат — те же, что у вкладки «Оплаты», минус `confidence`/`matchReason`: атрибуции по сделке у кандидата нет, её признал оператор. */
|
|
10981
|
-
sortBy?: components["parameters"]["BroadcastIndirectSortBy"];
|
|
10982
|
-
/** @description Направление серверной сортировки списка сделок и оплат. */
|
|
10983
|
-
sortOrder?: components["parameters"]["BroadcastDealSortOrder"];
|
|
10984
11481
|
page?: components["parameters"]["BroadcastPage"];
|
|
10985
11482
|
pageSize?: components["parameters"]["BroadcastPageSize"];
|
|
11483
|
+
/** @description Колонка серверной сортировки списка сделок и оплат. */
|
|
11484
|
+
sortBy?: components["parameters"]["BroadcastDealSortBy"];
|
|
11485
|
+
/** @description Направление серверной сортировки списка сделок и оплат. */
|
|
11486
|
+
sortOrder?: components["parameters"]["BroadcastDealSortOrder"];
|
|
11487
|
+
metric: "issued" | "paid" | "withoutCohort";
|
|
10986
11488
|
};
|
|
10987
11489
|
header?: never;
|
|
10988
11490
|
path: {
|
|
@@ -10998,7 +11500,7 @@ export interface paths {
|
|
|
10998
11500
|
[name: string]: unknown;
|
|
10999
11501
|
};
|
|
11000
11502
|
content: {
|
|
11001
|
-
"application/json": components["schemas"]["
|
|
11503
|
+
"application/json": components["schemas"]["BroadcastDealsDrilldownResponse"];
|
|
11002
11504
|
};
|
|
11003
11505
|
};
|
|
11004
11506
|
};
|
|
@@ -11011,7 +11513,165 @@ export interface paths {
|
|
|
11011
11513
|
patch?: never;
|
|
11012
11514
|
trace?: never;
|
|
11013
11515
|
};
|
|
11014
|
-
"/api/v2/workspaces/{workspaceId}/broadcast-analytics/
|
|
11516
|
+
"/api/v2/workspaces/{workspaceId}/broadcast-analytics/action-failures": {
|
|
11517
|
+
parameters: {
|
|
11518
|
+
query?: never;
|
|
11519
|
+
header?: never;
|
|
11520
|
+
path?: never;
|
|
11521
|
+
cookie?: never;
|
|
11522
|
+
};
|
|
11523
|
+
/** Production-ошибки действий выбранных рассылок */
|
|
11524
|
+
get: {
|
|
11525
|
+
parameters: {
|
|
11526
|
+
query?: {
|
|
11527
|
+
mode?: components["parameters"]["BroadcastPeriodMode"];
|
|
11528
|
+
days?: components["parameters"]["BroadcastDays"];
|
|
11529
|
+
/** @description Начальная календарная дата МСК для mode=range. */
|
|
11530
|
+
from?: components["parameters"]["BroadcastFrom"];
|
|
11531
|
+
/** @description Конечная календарная дата МСК для mode=range. */
|
|
11532
|
+
to?: components["parameters"]["BroadcastTo"];
|
|
11533
|
+
platformId?: components["parameters"]["BroadcastPlatformId"];
|
|
11534
|
+
/** @description Мультивыбор: повторяйте параметр (`?x=A&x=B`). Одиночное значение остаётся валидным. */
|
|
11535
|
+
funnel?: components["parameters"]["BroadcastFunnel"];
|
|
11536
|
+
/** @description Добавляет строки без воронки. Можно сочетать с funnel: значения и NULL объединяются через OR. */
|
|
11537
|
+
funnelMode?: components["parameters"]["BroadcastFunnelMode"];
|
|
11538
|
+
/** @description Мультивыбор: повторяйте параметр (`?x=A&x=B`). Одиночное значение остаётся валидным. */
|
|
11539
|
+
segment?: components["parameters"]["BroadcastSegment"];
|
|
11540
|
+
/** @description Один или несколько ID именованных вариантов рассылки. */
|
|
11541
|
+
mailingVariantId?: components["parameters"]["BroadcastMailingVariantId"];
|
|
11542
|
+
/** @description Механизм запуска: `wave` — доставляет процесс школы (мы штампуем поля сделки), `cold_welcome` — пишем первыми сами. Мультивыбор; ОБА значения = фильтра нет. У строки получателя механизм берётся из её собственного режима, у сделки и кандидата — из когорты по import job (нет метки и нет холодных получателей = wave). */
|
|
11543
|
+
mechanism?: components["parameters"]["BroadcastMechanism"];
|
|
11544
|
+
/** @description ЧТО ЗАПУСТИЛО отправку: `manual` — оператор нажал «Запустить», `registration` — автоприём регистрации по order-вебхуку школы, `schedule` — ночной прогон планировщика. Мультивыбор; выбраны все = фильтра нет. Это ДРУГАЯ ось, а не уточнение механизма: механизм отвечает «чем доставляли». Любой выбор ИСКЛЮЧАЕТ волны школы целиком — у них запускающего в этом смысле нет. */
|
|
11545
|
+
launchSource?: components["parameters"]["BroadcastLaunchSource"];
|
|
11546
|
+
/** @description Мультивыбор: повторяйте параметр (`?x=A&x=B`). Одиночное значение остаётся валидным. */
|
|
11547
|
+
product?: components["parameters"]["BroadcastProduct"];
|
|
11548
|
+
/** @description Добавляет строки без продукта. Можно сочетать с product: значения и NULL объединяются через OR. */
|
|
11549
|
+
productMode?: components["parameters"]["BroadcastProductMode"];
|
|
11550
|
+
/** @description Корзины свежести лида (мультивыбор). Под фильтром из ВСЕХ метрик выпадают контакты с неизвестным возрастом. Выбраны все корзины = фильтра нет. */
|
|
11551
|
+
freshness?: components["parameters"]["BroadcastFreshness"];
|
|
11552
|
+
/** @description Мессенджеры волны (транспорты GetCourse + UNKNOWN — канал не определён), мультивыбор. Деньги фильтруются по скалярному каналу сделки. */
|
|
11553
|
+
channels?: components["parameters"]["BroadcastChannels"];
|
|
11554
|
+
/** @description cohort — дата запуска; period — дата события; entry — дата входа в сегмент (segment_entered_at: регистрация, конец серии, предсписок). В entry строки без даты входа выпадают всегда, включая mode=all, а события атрибутируются когортно. */
|
|
11555
|
+
view?: components["parameters"]["BroadcastView"];
|
|
11556
|
+
/** @description Конкретный день кликнутой ячейки (МСК). */
|
|
11557
|
+
date?: components["parameters"]["BroadcastDate"];
|
|
11558
|
+
/** @description Канал кликнутой ячейки; пусто = общий итог. */
|
|
11559
|
+
channel?: components["parameters"]["BroadcastChannel"];
|
|
11560
|
+
/** @description ID конкретной волны. */
|
|
11561
|
+
importJobId?: components["parameters"]["BroadcastImportJobId"];
|
|
11562
|
+
page?: components["parameters"]["BroadcastPage"];
|
|
11563
|
+
pageSize?: components["parameters"]["BroadcastPageSize"];
|
|
11564
|
+
/** @description Точный ActionType; пусто = все типы. */
|
|
11565
|
+
actionType?: string;
|
|
11566
|
+
};
|
|
11567
|
+
header?: never;
|
|
11568
|
+
path: {
|
|
11569
|
+
workspaceId: components["parameters"]["BroadcastWorkspaceId"];
|
|
11570
|
+
};
|
|
11571
|
+
cookie?: never;
|
|
11572
|
+
};
|
|
11573
|
+
requestBody?: never;
|
|
11574
|
+
responses: {
|
|
11575
|
+
/** @description OK */
|
|
11576
|
+
200: {
|
|
11577
|
+
headers: {
|
|
11578
|
+
[name: string]: unknown;
|
|
11579
|
+
};
|
|
11580
|
+
content: {
|
|
11581
|
+
"application/json": components["schemas"]["BroadcastActionFailuresResponse"];
|
|
11582
|
+
};
|
|
11583
|
+
};
|
|
11584
|
+
};
|
|
11585
|
+
};
|
|
11586
|
+
put?: never;
|
|
11587
|
+
post?: never;
|
|
11588
|
+
delete?: never;
|
|
11589
|
+
options?: never;
|
|
11590
|
+
head?: never;
|
|
11591
|
+
patch?: never;
|
|
11592
|
+
trace?: never;
|
|
11593
|
+
};
|
|
11594
|
+
"/api/v2/workspaces/{workspaceId}/broadcast-analytics/indirect-payments": {
|
|
11595
|
+
parameters: {
|
|
11596
|
+
query?: never;
|
|
11597
|
+
header?: never;
|
|
11598
|
+
path?: never;
|
|
11599
|
+
cookie?: never;
|
|
11600
|
+
};
|
|
11601
|
+
/** Drill-down косвенных оплат */
|
|
11602
|
+
get: {
|
|
11603
|
+
parameters: {
|
|
11604
|
+
query?: {
|
|
11605
|
+
mode?: components["parameters"]["BroadcastPeriodMode"];
|
|
11606
|
+
days?: components["parameters"]["BroadcastDays"];
|
|
11607
|
+
/** @description Начальная календарная дата МСК для mode=range. */
|
|
11608
|
+
from?: components["parameters"]["BroadcastFrom"];
|
|
11609
|
+
/** @description Конечная календарная дата МСК для mode=range. */
|
|
11610
|
+
to?: components["parameters"]["BroadcastTo"];
|
|
11611
|
+
platformId?: components["parameters"]["BroadcastPlatformId"];
|
|
11612
|
+
/** @description Мультивыбор: повторяйте параметр (`?x=A&x=B`). Одиночное значение остаётся валидным. */
|
|
11613
|
+
funnel?: components["parameters"]["BroadcastFunnel"];
|
|
11614
|
+
/** @description Добавляет строки без воронки. Можно сочетать с funnel: значения и NULL объединяются через OR. */
|
|
11615
|
+
funnelMode?: components["parameters"]["BroadcastFunnelMode"];
|
|
11616
|
+
/** @description Мультивыбор: повторяйте параметр (`?x=A&x=B`). Одиночное значение остаётся валидным. */
|
|
11617
|
+
segment?: components["parameters"]["BroadcastSegment"];
|
|
11618
|
+
/** @description Один или несколько ID именованных вариантов рассылки. */
|
|
11619
|
+
mailingVariantId?: components["parameters"]["BroadcastMailingVariantId"];
|
|
11620
|
+
/** @description Механизм запуска: `wave` — доставляет процесс школы (мы штампуем поля сделки), `cold_welcome` — пишем первыми сами. Мультивыбор; ОБА значения = фильтра нет. У строки получателя механизм берётся из её собственного режима, у сделки и кандидата — из когорты по import job (нет метки и нет холодных получателей = wave). */
|
|
11621
|
+
mechanism?: components["parameters"]["BroadcastMechanism"];
|
|
11622
|
+
/** @description ЧТО ЗАПУСТИЛО отправку: `manual` — оператор нажал «Запустить», `registration` — автоприём регистрации по order-вебхуку школы, `schedule` — ночной прогон планировщика. Мультивыбор; выбраны все = фильтра нет. Это ДРУГАЯ ось, а не уточнение механизма: механизм отвечает «чем доставляли». Любой выбор ИСКЛЮЧАЕТ волны школы целиком — у них запускающего в этом смысле нет. */
|
|
11623
|
+
launchSource?: components["parameters"]["BroadcastLaunchSource"];
|
|
11624
|
+
/** @description Мультивыбор: повторяйте параметр (`?x=A&x=B`). Одиночное значение остаётся валидным. */
|
|
11625
|
+
product?: components["parameters"]["BroadcastProduct"];
|
|
11626
|
+
/** @description Добавляет строки без продукта. Можно сочетать с product: значения и NULL объединяются через OR. */
|
|
11627
|
+
productMode?: components["parameters"]["BroadcastProductMode"];
|
|
11628
|
+
/** @description Корзины свежести лида (мультивыбор). Под фильтром из ВСЕХ метрик выпадают контакты с неизвестным возрастом. Выбраны все корзины = фильтра нет. */
|
|
11629
|
+
freshness?: components["parameters"]["BroadcastFreshness"];
|
|
11630
|
+
/** @description Мессенджеры волны (транспорты GetCourse + UNKNOWN — канал не определён), мультивыбор. Деньги фильтруются по скалярному каналу сделки. */
|
|
11631
|
+
channels?: components["parameters"]["BroadcastChannels"];
|
|
11632
|
+
/** @description cohort — дата запуска; period — дата события; entry — дата входа в сегмент (segment_entered_at: регистрация, конец серии, предсписок). В entry строки без даты входа выпадают всегда, включая mode=all, а события атрибутируются когортно. */
|
|
11633
|
+
view?: components["parameters"]["BroadcastView"];
|
|
11634
|
+
/** @description Конкретный день кликнутой ячейки (МСК). */
|
|
11635
|
+
date?: components["parameters"]["BroadcastDate"];
|
|
11636
|
+
/** @description Канал кликнутой ячейки; пусто = общий итог. */
|
|
11637
|
+
channel?: components["parameters"]["BroadcastChannel"];
|
|
11638
|
+
/** @description ID конкретной волны. */
|
|
11639
|
+
importJobId?: components["parameters"]["BroadcastImportJobId"];
|
|
11640
|
+
/** @description Колонка сортировки косвенных оплат — те же, что у вкладки «Оплаты», минус `confidence`/`matchReason`: атрибуции по сделке у кандидата нет, её признал оператор. */
|
|
11641
|
+
sortBy?: components["parameters"]["BroadcastIndirectSortBy"];
|
|
11642
|
+
/** @description Направление серверной сортировки списка сделок и оплат. */
|
|
11643
|
+
sortOrder?: components["parameters"]["BroadcastDealSortOrder"];
|
|
11644
|
+
page?: components["parameters"]["BroadcastPage"];
|
|
11645
|
+
pageSize?: components["parameters"]["BroadcastPageSize"];
|
|
11646
|
+
};
|
|
11647
|
+
header?: never;
|
|
11648
|
+
path: {
|
|
11649
|
+
workspaceId: components["parameters"]["BroadcastWorkspaceId"];
|
|
11650
|
+
};
|
|
11651
|
+
cookie?: never;
|
|
11652
|
+
};
|
|
11653
|
+
requestBody?: never;
|
|
11654
|
+
responses: {
|
|
11655
|
+
/** @description OK */
|
|
11656
|
+
200: {
|
|
11657
|
+
headers: {
|
|
11658
|
+
[name: string]: unknown;
|
|
11659
|
+
};
|
|
11660
|
+
content: {
|
|
11661
|
+
"application/json": components["schemas"]["BroadcastIndirectPaymentsResponse"];
|
|
11662
|
+
};
|
|
11663
|
+
};
|
|
11664
|
+
};
|
|
11665
|
+
};
|
|
11666
|
+
put?: never;
|
|
11667
|
+
post?: never;
|
|
11668
|
+
delete?: never;
|
|
11669
|
+
options?: never;
|
|
11670
|
+
head?: never;
|
|
11671
|
+
patch?: never;
|
|
11672
|
+
trace?: never;
|
|
11673
|
+
};
|
|
11674
|
+
"/api/v2/workspaces/{workspaceId}/broadcast-analytics/potential-payments": {
|
|
11015
11675
|
parameters: {
|
|
11016
11676
|
query?: never;
|
|
11017
11677
|
header?: never;
|
|
@@ -11039,6 +11699,8 @@ export interface paths {
|
|
|
11039
11699
|
mailingVariantId?: components["parameters"]["BroadcastMailingVariantId"];
|
|
11040
11700
|
/** @description Механизм запуска: `wave` — доставляет процесс школы (мы штампуем поля сделки), `cold_welcome` — пишем первыми сами. Мультивыбор; ОБА значения = фильтра нет. У строки получателя механизм берётся из её собственного режима, у сделки и кандидата — из когорты по import job (нет метки и нет холодных получателей = wave). */
|
|
11041
11701
|
mechanism?: components["parameters"]["BroadcastMechanism"];
|
|
11702
|
+
/** @description ЧТО ЗАПУСТИЛО отправку: `manual` — оператор нажал «Запустить», `registration` — автоприём регистрации по order-вебхуку школы, `schedule` — ночной прогон планировщика. Мультивыбор; выбраны все = фильтра нет. Это ДРУГАЯ ось, а не уточнение механизма: механизм отвечает «чем доставляли». Любой выбор ИСКЛЮЧАЕТ волны школы целиком — у них запускающего в этом смысле нет. */
|
|
11703
|
+
launchSource?: components["parameters"]["BroadcastLaunchSource"];
|
|
11042
11704
|
/** @description Мультивыбор: повторяйте параметр (`?x=A&x=B`). Одиночное значение остаётся валидным. */
|
|
11043
11705
|
product?: components["parameters"]["BroadcastProduct"];
|
|
11044
11706
|
/** @description Добавляет строки без продукта. Можно сочетать с product: значения и NULL объединяются через OR. */
|
|
@@ -11047,7 +11709,7 @@ export interface paths {
|
|
|
11047
11709
|
freshness?: components["parameters"]["BroadcastFreshness"];
|
|
11048
11710
|
/** @description Мессенджеры волны (транспорты GetCourse + UNKNOWN — канал не определён), мультивыбор. Деньги фильтруются по скалярному каналу сделки. */
|
|
11049
11711
|
channels?: components["parameters"]["BroadcastChannels"];
|
|
11050
|
-
/** @description cohort — дата запуска; period — дата
|
|
11712
|
+
/** @description cohort — дата запуска; period — дата события; entry — дата входа в сегмент (segment_entered_at: регистрация, конец серии, предсписок). В entry строки без даты входа выпадают всегда, включая mode=all, а события атрибутируются когортно. */
|
|
11051
11713
|
view?: components["parameters"]["BroadcastView"];
|
|
11052
11714
|
/** @description Конкретный день кликнутой ячейки (МСК). */
|
|
11053
11715
|
date?: components["parameters"]["BroadcastDate"];
|
|
@@ -11113,6 +11775,8 @@ export interface paths {
|
|
|
11113
11775
|
mailingVariantId?: components["parameters"]["BroadcastMailingVariantId"];
|
|
11114
11776
|
/** @description Механизм запуска: `wave` — доставляет процесс школы (мы штампуем поля сделки), `cold_welcome` — пишем первыми сами. Мультивыбор; ОБА значения = фильтра нет. У строки получателя механизм берётся из её собственного режима, у сделки и кандидата — из когорты по import job (нет метки и нет холодных получателей = wave). */
|
|
11115
11777
|
mechanism?: components["parameters"]["BroadcastMechanism"];
|
|
11778
|
+
/** @description ЧТО ЗАПУСТИЛО отправку: `manual` — оператор нажал «Запустить», `registration` — автоприём регистрации по order-вебхуку школы, `schedule` — ночной прогон планировщика. Мультивыбор; выбраны все = фильтра нет. Это ДРУГАЯ ось, а не уточнение механизма: механизм отвечает «чем доставляли». Любой выбор ИСКЛЮЧАЕТ волны школы целиком — у них запускающего в этом смысле нет. */
|
|
11779
|
+
launchSource?: components["parameters"]["BroadcastLaunchSource"];
|
|
11116
11780
|
/** @description Мультивыбор: повторяйте параметр (`?x=A&x=B`). Одиночное значение остаётся валидным. */
|
|
11117
11781
|
product?: components["parameters"]["BroadcastProduct"];
|
|
11118
11782
|
/** @description Добавляет строки без продукта. Можно сочетать с product: значения и NULL объединяются через OR. */
|
|
@@ -11121,7 +11785,7 @@ export interface paths {
|
|
|
11121
11785
|
freshness?: components["parameters"]["BroadcastFreshness"];
|
|
11122
11786
|
/** @description Мессенджеры волны (транспорты GetCourse + UNKNOWN — канал не определён), мультивыбор. Деньги фильтруются по скалярному каналу сделки. */
|
|
11123
11787
|
channels?: components["parameters"]["BroadcastChannels"];
|
|
11124
|
-
/** @description cohort — дата запуска; period — дата
|
|
11788
|
+
/** @description cohort — дата запуска; period — дата события; entry — дата входа в сегмент (segment_entered_at: регистрация, конец серии, предсписок). В entry строки без даты входа выпадают всегда, включая mode=all, а события атрибутируются когортно. */
|
|
11125
11789
|
view?: components["parameters"]["BroadcastView"];
|
|
11126
11790
|
};
|
|
11127
11791
|
header?: never;
|
|
@@ -11179,6 +11843,8 @@ export interface paths {
|
|
|
11179
11843
|
mailingVariantId?: components["parameters"]["BroadcastMailingVariantId"];
|
|
11180
11844
|
/** @description Механизм запуска: `wave` — доставляет процесс школы (мы штампуем поля сделки), `cold_welcome` — пишем первыми сами. Мультивыбор; ОБА значения = фильтра нет. У строки получателя механизм берётся из её собственного режима, у сделки и кандидата — из когорты по import job (нет метки и нет холодных получателей = wave). */
|
|
11181
11845
|
mechanism?: components["parameters"]["BroadcastMechanism"];
|
|
11846
|
+
/** @description ЧТО ЗАПУСТИЛО отправку: `manual` — оператор нажал «Запустить», `registration` — автоприём регистрации по order-вебхуку школы, `schedule` — ночной прогон планировщика. Мультивыбор; выбраны все = фильтра нет. Это ДРУГАЯ ось, а не уточнение механизма: механизм отвечает «чем доставляли». Любой выбор ИСКЛЮЧАЕТ волны школы целиком — у них запускающего в этом смысле нет. */
|
|
11847
|
+
launchSource?: components["parameters"]["BroadcastLaunchSource"];
|
|
11182
11848
|
/** @description Мультивыбор: повторяйте параметр (`?x=A&x=B`). Одиночное значение остаётся валидным. */
|
|
11183
11849
|
product?: components["parameters"]["BroadcastProduct"];
|
|
11184
11850
|
/** @description Добавляет строки без продукта. Можно сочетать с product: значения и NULL объединяются через OR. */
|
|
@@ -11187,7 +11853,7 @@ export interface paths {
|
|
|
11187
11853
|
freshness?: components["parameters"]["BroadcastFreshness"];
|
|
11188
11854
|
/** @description Мессенджеры волны (транспорты GetCourse + UNKNOWN — канал не определён), мультивыбор. Деньги фильтруются по скалярному каналу сделки. */
|
|
11189
11855
|
channels?: components["parameters"]["BroadcastChannels"];
|
|
11190
|
-
/** @description cohort — дата запуска; period — дата
|
|
11856
|
+
/** @description cohort — дата запуска; period — дата события; entry — дата входа в сегмент (segment_entered_at: регистрация, конец серии, предсписок). В entry строки без даты входа выпадают всегда, включая mode=all, а события атрибутируются когортно. */
|
|
11191
11857
|
view?: components["parameters"]["BroadcastView"];
|
|
11192
11858
|
};
|
|
11193
11859
|
header?: never;
|
|
@@ -11245,6 +11911,8 @@ export interface paths {
|
|
|
11245
11911
|
mailingVariantId?: components["parameters"]["BroadcastMailingVariantId"];
|
|
11246
11912
|
/** @description Механизм запуска: `wave` — доставляет процесс школы (мы штампуем поля сделки), `cold_welcome` — пишем первыми сами. Мультивыбор; ОБА значения = фильтра нет. У строки получателя механизм берётся из её собственного режима, у сделки и кандидата — из когорты по import job (нет метки и нет холодных получателей = wave). */
|
|
11247
11913
|
mechanism?: components["parameters"]["BroadcastMechanism"];
|
|
11914
|
+
/** @description ЧТО ЗАПУСТИЛО отправку: `manual` — оператор нажал «Запустить», `registration` — автоприём регистрации по order-вебхуку школы, `schedule` — ночной прогон планировщика. Мультивыбор; выбраны все = фильтра нет. Это ДРУГАЯ ось, а не уточнение механизма: механизм отвечает «чем доставляли». Любой выбор ИСКЛЮЧАЕТ волны школы целиком — у них запускающего в этом смысле нет. */
|
|
11915
|
+
launchSource?: components["parameters"]["BroadcastLaunchSource"];
|
|
11248
11916
|
/** @description Мультивыбор: повторяйте параметр (`?x=A&x=B`). Одиночное значение остаётся валидным. */
|
|
11249
11917
|
product?: components["parameters"]["BroadcastProduct"];
|
|
11250
11918
|
/** @description Добавляет строки без продукта. Можно сочетать с product: значения и NULL объединяются через OR. */
|
|
@@ -11253,7 +11921,7 @@ export interface paths {
|
|
|
11253
11921
|
freshness?: components["parameters"]["BroadcastFreshness"];
|
|
11254
11922
|
/** @description Мессенджеры волны (транспорты GetCourse + UNKNOWN — канал не определён), мультивыбор. Деньги фильтруются по скалярному каналу сделки. */
|
|
11255
11923
|
channels?: components["parameters"]["BroadcastChannels"];
|
|
11256
|
-
/** @description cohort — дата запуска; period — дата
|
|
11924
|
+
/** @description cohort — дата запуска; period — дата события; entry — дата входа в сегмент (segment_entered_at: регистрация, конец серии, предсписок). В entry строки без даты входа выпадают всегда, включая mode=all, а события атрибутируются когортно. */
|
|
11257
11925
|
view?: components["parameters"]["BroadcastView"];
|
|
11258
11926
|
};
|
|
11259
11927
|
header?: never;
|
|
@@ -11311,6 +11979,8 @@ export interface paths {
|
|
|
11311
11979
|
mailingVariantId?: components["parameters"]["BroadcastMailingVariantId"];
|
|
11312
11980
|
/** @description Механизм запуска: `wave` — доставляет процесс школы (мы штампуем поля сделки), `cold_welcome` — пишем первыми сами. Мультивыбор; ОБА значения = фильтра нет. У строки получателя механизм берётся из её собственного режима, у сделки и кандидата — из когорты по import job (нет метки и нет холодных получателей = wave). */
|
|
11313
11981
|
mechanism?: components["parameters"]["BroadcastMechanism"];
|
|
11982
|
+
/** @description ЧТО ЗАПУСТИЛО отправку: `manual` — оператор нажал «Запустить», `registration` — автоприём регистрации по order-вебхуку школы, `schedule` — ночной прогон планировщика. Мультивыбор; выбраны все = фильтра нет. Это ДРУГАЯ ось, а не уточнение механизма: механизм отвечает «чем доставляли». Любой выбор ИСКЛЮЧАЕТ волны школы целиком — у них запускающего в этом смысле нет. */
|
|
11983
|
+
launchSource?: components["parameters"]["BroadcastLaunchSource"];
|
|
11314
11984
|
/** @description Мультивыбор: повторяйте параметр (`?x=A&x=B`). Одиночное значение остаётся валидным. */
|
|
11315
11985
|
product?: components["parameters"]["BroadcastProduct"];
|
|
11316
11986
|
/** @description Добавляет строки без продукта. Можно сочетать с product: значения и NULL объединяются через OR. */
|
|
@@ -11319,7 +11989,7 @@ export interface paths {
|
|
|
11319
11989
|
freshness?: components["parameters"]["BroadcastFreshness"];
|
|
11320
11990
|
/** @description Мессенджеры волны (транспорты GetCourse + UNKNOWN — канал не определён), мультивыбор. Деньги фильтруются по скалярному каналу сделки. */
|
|
11321
11991
|
channels?: components["parameters"]["BroadcastChannels"];
|
|
11322
|
-
/** @description cohort — дата запуска; period — дата
|
|
11992
|
+
/** @description cohort — дата запуска; period — дата события; entry — дата входа в сегмент (segment_entered_at: регистрация, конец серии, предсписок). В entry строки без даты входа выпадают всегда, включая mode=all, а события атрибутируются когортно. */
|
|
11323
11993
|
view?: components["parameters"]["BroadcastView"];
|
|
11324
11994
|
};
|
|
11325
11995
|
header?: never;
|
|
@@ -11380,6 +12050,8 @@ export interface paths {
|
|
|
11380
12050
|
mailingVariantId?: components["parameters"]["BroadcastMailingVariantId"];
|
|
11381
12051
|
/** @description Механизм запуска: `wave` — доставляет процесс школы (мы штампуем поля сделки), `cold_welcome` — пишем первыми сами. Мультивыбор; ОБА значения = фильтра нет. У строки получателя механизм берётся из её собственного режима, у сделки и кандидата — из когорты по import job (нет метки и нет холодных получателей = wave). */
|
|
11382
12052
|
mechanism?: components["parameters"]["BroadcastMechanism"];
|
|
12053
|
+
/** @description ЧТО ЗАПУСТИЛО отправку: `manual` — оператор нажал «Запустить», `registration` — автоприём регистрации по order-вебхуку школы, `schedule` — ночной прогон планировщика. Мультивыбор; выбраны все = фильтра нет. Это ДРУГАЯ ось, а не уточнение механизма: механизм отвечает «чем доставляли». Любой выбор ИСКЛЮЧАЕТ волны школы целиком — у них запускающего в этом смысле нет. */
|
|
12054
|
+
launchSource?: components["parameters"]["BroadcastLaunchSource"];
|
|
11383
12055
|
/** @description Мультивыбор: повторяйте параметр (`?x=A&x=B`). Одиночное значение остаётся валидным. */
|
|
11384
12056
|
product?: components["parameters"]["BroadcastProduct"];
|
|
11385
12057
|
/** @description Добавляет строки без продукта. Можно сочетать с product: значения и NULL объединяются через OR. */
|
|
@@ -11457,6 +12129,8 @@ export interface paths {
|
|
|
11457
12129
|
mailingVariantId?: components["parameters"]["BroadcastMailingVariantId"];
|
|
11458
12130
|
/** @description Механизм запуска: `wave` — доставляет процесс школы (мы штампуем поля сделки), `cold_welcome` — пишем первыми сами. Мультивыбор; ОБА значения = фильтра нет. У строки получателя механизм берётся из её собственного режима, у сделки и кандидата — из когорты по import job (нет метки и нет холодных получателей = wave). */
|
|
11459
12131
|
mechanism?: components["parameters"]["BroadcastMechanism"];
|
|
12132
|
+
/** @description ЧТО ЗАПУСТИЛО отправку: `manual` — оператор нажал «Запустить», `registration` — автоприём регистрации по order-вебхуку школы, `schedule` — ночной прогон планировщика. Мультивыбор; выбраны все = фильтра нет. Это ДРУГАЯ ось, а не уточнение механизма: механизм отвечает «чем доставляли». Любой выбор ИСКЛЮЧАЕТ волны школы целиком — у них запускающего в этом смысле нет. */
|
|
12133
|
+
launchSource?: components["parameters"]["BroadcastLaunchSource"];
|
|
11460
12134
|
/** @description Мультивыбор: повторяйте параметр (`?x=A&x=B`). Одиночное значение остаётся валидным. */
|
|
11461
12135
|
product?: components["parameters"]["BroadcastProduct"];
|
|
11462
12136
|
/** @description Добавляет строки без продукта. Можно сочетать с product: значения и NULL объединяются через OR. */
|
|
@@ -12053,6 +12727,71 @@ export interface paths {
|
|
|
12053
12727
|
patch?: never;
|
|
12054
12728
|
trace?: never;
|
|
12055
12729
|
};
|
|
12730
|
+
"/api/v2/workspaces/{workspaceId}/workbooks/{workbookId}/sheets/read": {
|
|
12731
|
+
parameters: {
|
|
12732
|
+
query?: never;
|
|
12733
|
+
header?: never;
|
|
12734
|
+
path?: never;
|
|
12735
|
+
cookie?: never;
|
|
12736
|
+
};
|
|
12737
|
+
/**
|
|
12738
|
+
* Постранично прочитать диапазон листа без записи в знания
|
|
12739
|
+
* @description Inspect возвращает только sample. Этот endpoint читает поздние строки и колонки,
|
|
12740
|
+
* возвращает явные признаки продолжения и fingerprint страницы. Для Google Sheets
|
|
12741
|
+
* точные total могут быть неизвестны и тогда возвращаются null.
|
|
12742
|
+
*/
|
|
12743
|
+
get: {
|
|
12744
|
+
parameters: {
|
|
12745
|
+
query?: {
|
|
12746
|
+
sheetTitle?: string;
|
|
12747
|
+
sheetGid?: number;
|
|
12748
|
+
sheetIndex?: number;
|
|
12749
|
+
rowOffset?: number;
|
|
12750
|
+
rowLimit?: number;
|
|
12751
|
+
columnOffset?: number;
|
|
12752
|
+
columnLimit?: number;
|
|
12753
|
+
};
|
|
12754
|
+
header?: never;
|
|
12755
|
+
path: {
|
|
12756
|
+
workspaceId: components["parameters"]["WorkspaceIdPath"];
|
|
12757
|
+
workbookId: string;
|
|
12758
|
+
};
|
|
12759
|
+
cookie?: never;
|
|
12760
|
+
};
|
|
12761
|
+
requestBody?: never;
|
|
12762
|
+
responses: {
|
|
12763
|
+
200: {
|
|
12764
|
+
headers: {
|
|
12765
|
+
[name: string]: unknown;
|
|
12766
|
+
};
|
|
12767
|
+
content: {
|
|
12768
|
+
"application/json": components["schemas"]["WorkbookSheetPage"];
|
|
12769
|
+
};
|
|
12770
|
+
};
|
|
12771
|
+
/** @description Селектор листа неоднозначен или не подходит типу книги */
|
|
12772
|
+
400: {
|
|
12773
|
+
headers: {
|
|
12774
|
+
[name: string]: unknown;
|
|
12775
|
+
};
|
|
12776
|
+
content?: never;
|
|
12777
|
+
};
|
|
12778
|
+
/** @description SourceWorkbook */
|
|
12779
|
+
404: {
|
|
12780
|
+
headers: {
|
|
12781
|
+
[name: string]: unknown;
|
|
12782
|
+
};
|
|
12783
|
+
content?: never;
|
|
12784
|
+
};
|
|
12785
|
+
};
|
|
12786
|
+
};
|
|
12787
|
+
put?: never;
|
|
12788
|
+
post?: never;
|
|
12789
|
+
delete?: never;
|
|
12790
|
+
options?: never;
|
|
12791
|
+
head?: never;
|
|
12792
|
+
patch?: never;
|
|
12793
|
+
trace?: never;
|
|
12794
|
+
};
|
|
12056
12795
|
"/api/v2/workspaces/{workspaceId}/workbooks/{workbookId}/extract-amocrm-leads": {
|
|
12057
12796
|
parameters: {
|
|
12058
12797
|
query?: never;
|
|
@@ -12433,7 +13172,7 @@ export interface paths {
|
|
|
12433
13172
|
put?: never;
|
|
12434
13173
|
/**
|
|
12435
13174
|
* Переиндексация knowledge space (re-embed Qa + KnowledgeChunk → Pinecone)
|
|
12436
|
-
* @description Идемпотентная фоновая пересборка векторов из Postgres — восстанавливает поиск после рассинхрона Postgres↔Pinecone (v1.5 Increment 15). Возвращает job_id сразу; итог фоновой BullMQ-задачи
|
|
13175
|
+
* @description Идемпотентная фоновая пересборка векторов из Postgres — восстанавливает поиск после рассинхрона Postgres↔Pinecone (v1.5 Increment 15). Возвращает job_id сразу; итог фоновой BullMQ-задачи доступен через status endpoint в течение 24 часов.
|
|
12437
13176
|
*/
|
|
12438
13177
|
post: {
|
|
12439
13178
|
parameters: {
|
|
@@ -12467,6 +13206,44 @@ export interface paths {
|
|
|
12467
13206
|
patch?: never;
|
|
12468
13207
|
trace?: never;
|
|
12469
13208
|
};
|
|
13209
|
+
"/api/v2/workspaces/{workspaceId}/knowledge-spaces/{knowledgeSpaceId}/reindex/status": {
|
|
13210
|
+
parameters: {
|
|
13211
|
+
query?: never;
|
|
13212
|
+
header?: never;
|
|
13213
|
+
path?: never;
|
|
13214
|
+
cookie?: never;
|
|
13215
|
+
};
|
|
13216
|
+
/** Статус фоновой переиндексации knowledge space */
|
|
13217
|
+
get: {
|
|
13218
|
+
parameters: {
|
|
13219
|
+
query?: never;
|
|
13220
|
+
header?: never;
|
|
13221
|
+
path: {
|
|
13222
|
+
workspaceId: components["parameters"]["WorkspaceIdPath"];
|
|
13223
|
+
knowledgeSpaceId: string;
|
|
13224
|
+
};
|
|
13225
|
+
cookie?: never;
|
|
13226
|
+
};
|
|
13227
|
+
requestBody?: never;
|
|
13228
|
+
responses: {
|
|
13229
|
+
200: {
|
|
13230
|
+
headers: {
|
|
13231
|
+
[name: string]: unknown;
|
|
13232
|
+
};
|
|
13233
|
+
content: {
|
|
13234
|
+
"application/json": components["schemas"]["AsyncJobStatusResponse"];
|
|
13235
|
+
};
|
|
13236
|
+
};
|
|
13237
|
+
};
|
|
13238
|
+
};
|
|
13239
|
+
put?: never;
|
|
13240
|
+
post?: never;
|
|
13241
|
+
delete?: never;
|
|
13242
|
+
options?: never;
|
|
13243
|
+
head?: never;
|
|
13244
|
+
patch?: never;
|
|
13245
|
+
trace?: never;
|
|
13246
|
+
};
|
|
12470
13247
|
"/api/v2/workspaces/{workspaceId}/knowledge-spaces/{knowledgeSpaceId}/channel-links": {
|
|
12471
13248
|
parameters: {
|
|
12472
13249
|
query?: never;
|
|
@@ -13451,30 +14228,22 @@ export interface paths {
|
|
|
13451
14228
|
patch?: never;
|
|
13452
14229
|
trace?: never;
|
|
13453
14230
|
};
|
|
13454
|
-
"/api/v2/workspaces/{workspaceId}/
|
|
14231
|
+
"/api/v2/workspaces/{workspaceId}/knowledge-spaces/{knowledgeSpaceId}/tables/{tableId}/reindex/status": {
|
|
13455
14232
|
parameters: {
|
|
13456
14233
|
query?: never;
|
|
13457
14234
|
header?: never;
|
|
13458
14235
|
path?: never;
|
|
13459
14236
|
cookie?: never;
|
|
13460
14237
|
};
|
|
13461
|
-
/**
|
|
13462
|
-
* List variables (WORKSPACE or CHANNEL scope)
|
|
13463
|
-
* @description scope=WORKSPACE возвращает все WorkspaceVariable workspace.
|
|
13464
|
-
* scope=CHANNEL требует platformId и возвращает CustomVariable одной платформы (filter: all|variables|constants).
|
|
13465
|
-
*/
|
|
14238
|
+
/** Статус фоновой переиндексации knowledge table */
|
|
13466
14239
|
get: {
|
|
13467
14240
|
parameters: {
|
|
13468
|
-
query
|
|
13469
|
-
scope: "WORKSPACE" | "CHANNEL";
|
|
13470
|
-
/** @description Required when scope=CHANNEL */
|
|
13471
|
-
platformId?: string;
|
|
13472
|
-
/** @description CHANNEL scope only; default=all */
|
|
13473
|
-
filter?: "all" | "variables" | "constants";
|
|
13474
|
-
};
|
|
14241
|
+
query?: never;
|
|
13475
14242
|
header?: never;
|
|
13476
14243
|
path: {
|
|
13477
14244
|
workspaceId: components["parameters"]["WorkspaceIdPath"];
|
|
14245
|
+
knowledgeSpaceId: string;
|
|
14246
|
+
tableId: string;
|
|
13478
14247
|
};
|
|
13479
14248
|
cookie?: never;
|
|
13480
14249
|
};
|
|
@@ -13485,10 +14254,57 @@ export interface paths {
|
|
|
13485
14254
|
[name: string]: unknown;
|
|
13486
14255
|
};
|
|
13487
14256
|
content: {
|
|
13488
|
-
"application/json": components["schemas"]["
|
|
14257
|
+
"application/json": components["schemas"]["AsyncJobStatusResponse"];
|
|
13489
14258
|
};
|
|
13490
14259
|
};
|
|
13491
|
-
|
|
14260
|
+
};
|
|
14261
|
+
};
|
|
14262
|
+
put?: never;
|
|
14263
|
+
post?: never;
|
|
14264
|
+
delete?: never;
|
|
14265
|
+
options?: never;
|
|
14266
|
+
head?: never;
|
|
14267
|
+
patch?: never;
|
|
14268
|
+
trace?: never;
|
|
14269
|
+
};
|
|
14270
|
+
"/api/v2/workspaces/{workspaceId}/variables": {
|
|
14271
|
+
parameters: {
|
|
14272
|
+
query?: never;
|
|
14273
|
+
header?: never;
|
|
14274
|
+
path?: never;
|
|
14275
|
+
cookie?: never;
|
|
14276
|
+
};
|
|
14277
|
+
/**
|
|
14278
|
+
* List variables (WORKSPACE or CHANNEL scope)
|
|
14279
|
+
* @description scope=WORKSPACE возвращает все WorkspaceVariable workspace.
|
|
14280
|
+
* scope=CHANNEL требует platformId и возвращает CustomVariable одной платформы (filter: all|variables|constants).
|
|
14281
|
+
*/
|
|
14282
|
+
get: {
|
|
14283
|
+
parameters: {
|
|
14284
|
+
query: {
|
|
14285
|
+
scope: "WORKSPACE" | "CHANNEL";
|
|
14286
|
+
/** @description Required when scope=CHANNEL */
|
|
14287
|
+
platformId?: string;
|
|
14288
|
+
/** @description CHANNEL scope only; default=all */
|
|
14289
|
+
filter?: "all" | "variables" | "constants";
|
|
14290
|
+
};
|
|
14291
|
+
header?: never;
|
|
14292
|
+
path: {
|
|
14293
|
+
workspaceId: components["parameters"]["WorkspaceIdPath"];
|
|
14294
|
+
};
|
|
14295
|
+
cookie?: never;
|
|
14296
|
+
};
|
|
14297
|
+
requestBody?: never;
|
|
14298
|
+
responses: {
|
|
14299
|
+
200: {
|
|
14300
|
+
headers: {
|
|
14301
|
+
[name: string]: unknown;
|
|
14302
|
+
};
|
|
14303
|
+
content: {
|
|
14304
|
+
"application/json": components["schemas"]["ListVariablesResponse"];
|
|
14305
|
+
};
|
|
14306
|
+
};
|
|
14307
|
+
/** @description scope=CHANNEL без platformId */
|
|
13492
14308
|
400: {
|
|
13493
14309
|
headers: {
|
|
13494
14310
|
[name: string]: unknown;
|
|
@@ -15681,6 +16497,26 @@ export interface paths {
|
|
|
15681
16497
|
patch?: never;
|
|
15682
16498
|
trace?: never;
|
|
15683
16499
|
};
|
|
16500
|
+
"/api/v2/workspaces/{workspaceId}/amocrm/channel-registration": {
|
|
16501
|
+
parameters: {
|
|
16502
|
+
query?: never;
|
|
16503
|
+
header?: never;
|
|
16504
|
+
path?: never;
|
|
16505
|
+
cookie?: never;
|
|
16506
|
+
};
|
|
16507
|
+
/**
|
|
16508
|
+
* AmoCRM chat-channel registration request (webhook URL + support email template)
|
|
16509
|
+
* @description Чтобы переписка бота появлялась в карточке сделки AmoCRM, их поддержка должна ЗАРЕГИСТРИРОВАТЬ канал по письму заданной формы; channelId/channelSecretKey выдают только так. Текст письма и адрес вебхука собирает бэкенд (канон ai-aniomaly/src/core/application/crms/amocrm/constants/amocrm-channel-registration.constants.ts) — тем же ответом пользуется страница AmoCRM в интерфейсе. Копий у клиентов нет намеренно: письмо регистрирует адрес, на который потом идут входящие, и разошедшийся текст дал бы канал, смотрящий не туда, — это обнаружилось бы только пропажей сообщений.
|
|
16510
|
+
*/
|
|
16511
|
+
get: operations["getAmoCrmChannelRegistration"];
|
|
16512
|
+
put?: never;
|
|
16513
|
+
post?: never;
|
|
16514
|
+
delete?: never;
|
|
16515
|
+
options?: never;
|
|
16516
|
+
head?: never;
|
|
16517
|
+
patch?: never;
|
|
16518
|
+
trace?: never;
|
|
16519
|
+
};
|
|
15684
16520
|
"/api/v2/workspaces/{workspaceId}/crms/{crmId}/field-mapping": {
|
|
15685
16521
|
parameters: {
|
|
15686
16522
|
query?: never;
|
|
@@ -18983,106 +19819,576 @@ export interface paths {
|
|
|
18983
19819
|
patch?: never;
|
|
18984
19820
|
trace?: never;
|
|
18985
19821
|
};
|
|
18986
|
-
}
|
|
18987
|
-
|
|
18988
|
-
|
|
18989
|
-
|
|
18990
|
-
|
|
18991
|
-
|
|
18992
|
-
preamble?: string;
|
|
18993
|
-
graph: components["schemas"]["ScriptGraph"];
|
|
18994
|
-
};
|
|
18995
|
-
AgentScriptGraphResponse: {
|
|
18996
|
-
/** @description false если у агента нет §6 «Скрипт диалога» (пустой/legacy промпт) */
|
|
18997
|
-
present: boolean;
|
|
18998
|
-
scriptGraph: components["schemas"]["ScriptGraph"] | null;
|
|
19822
|
+
"/api/v2/workspaces/{workspaceId}/analytics/inbound/{report}": {
|
|
19823
|
+
parameters: {
|
|
19824
|
+
query?: never;
|
|
19825
|
+
header?: never;
|
|
19826
|
+
path?: never;
|
|
19827
|
+
cookie?: never;
|
|
18999
19828
|
};
|
|
19000
|
-
|
|
19001
|
-
|
|
19002
|
-
|
|
19003
|
-
|
|
19829
|
+
/** Агрегаты органических входящих диалогов */
|
|
19830
|
+
get: operations["getInboundAnalytics"];
|
|
19831
|
+
put?: never;
|
|
19832
|
+
post?: never;
|
|
19833
|
+
delete?: never;
|
|
19834
|
+
options?: never;
|
|
19835
|
+
head?: never;
|
|
19836
|
+
patch?: never;
|
|
19837
|
+
trace?: never;
|
|
19838
|
+
};
|
|
19839
|
+
"/api/v2/workspaces/{workspaceId}/analytics/funnel/{report}": {
|
|
19840
|
+
parameters: {
|
|
19841
|
+
query?: never;
|
|
19842
|
+
header?: never;
|
|
19843
|
+
path?: never;
|
|
19844
|
+
cookie?: never;
|
|
19004
19845
|
};
|
|
19005
|
-
|
|
19006
|
-
|
|
19007
|
-
|
|
19846
|
+
/** Мета, сводка или недельные когорты воронки площадки */
|
|
19847
|
+
get: operations["getFunnelAnalytics"];
|
|
19848
|
+
put?: never;
|
|
19849
|
+
post?: never;
|
|
19850
|
+
delete?: never;
|
|
19851
|
+
options?: never;
|
|
19852
|
+
head?: never;
|
|
19853
|
+
patch?: never;
|
|
19854
|
+
trace?: never;
|
|
19855
|
+
};
|
|
19856
|
+
"/api/v2/workspaces/{workspaceId}/analytics/costs/{report}": {
|
|
19857
|
+
parameters: {
|
|
19858
|
+
query?: never;
|
|
19859
|
+
header?: never;
|
|
19860
|
+
path?: never;
|
|
19861
|
+
cookie?: never;
|
|
19008
19862
|
};
|
|
19009
|
-
|
|
19010
|
-
|
|
19011
|
-
|
|
19012
|
-
|
|
19013
|
-
|
|
19014
|
-
|
|
19015
|
-
|
|
19016
|
-
|
|
19017
|
-
|
|
19863
|
+
/** Фактический AI usage ledger и его разрезы */
|
|
19864
|
+
get: operations["getAiCosts"];
|
|
19865
|
+
put?: never;
|
|
19866
|
+
post?: never;
|
|
19867
|
+
delete?: never;
|
|
19868
|
+
options?: never;
|
|
19869
|
+
head?: never;
|
|
19870
|
+
patch?: never;
|
|
19871
|
+
trace?: never;
|
|
19872
|
+
};
|
|
19873
|
+
"/api/v2/workspaces/{workspaceId}/custom-reports": {
|
|
19874
|
+
parameters: {
|
|
19875
|
+
query?: never;
|
|
19876
|
+
header?: never;
|
|
19877
|
+
path?: never;
|
|
19878
|
+
cookie?: never;
|
|
19018
19879
|
};
|
|
19019
|
-
|
|
19020
|
-
|
|
19021
|
-
|
|
19022
|
-
|
|
19880
|
+
/** Список сохранённых кастомных отчётов */
|
|
19881
|
+
get: operations["listCustomReports"];
|
|
19882
|
+
put?: never;
|
|
19883
|
+
post?: never;
|
|
19884
|
+
delete?: never;
|
|
19885
|
+
options?: never;
|
|
19886
|
+
head?: never;
|
|
19887
|
+
patch?: never;
|
|
19888
|
+
trace?: never;
|
|
19889
|
+
};
|
|
19890
|
+
"/api/v2/workspaces/{workspaceId}/custom-reports/{reportId}": {
|
|
19891
|
+
parameters: {
|
|
19892
|
+
query?: never;
|
|
19893
|
+
header?: never;
|
|
19894
|
+
path?: never;
|
|
19895
|
+
cookie?: never;
|
|
19023
19896
|
};
|
|
19024
|
-
|
|
19025
|
-
|
|
19026
|
-
|
|
19027
|
-
|
|
19028
|
-
|
|
19029
|
-
|
|
19030
|
-
|
|
19031
|
-
|
|
19032
|
-
|
|
19033
|
-
|
|
19034
|
-
|
|
19035
|
-
|
|
19897
|
+
/** Определение сохранённого кастомного отчёта */
|
|
19898
|
+
get: operations["getCustomReport"];
|
|
19899
|
+
put?: never;
|
|
19900
|
+
post?: never;
|
|
19901
|
+
delete?: never;
|
|
19902
|
+
options?: never;
|
|
19903
|
+
head?: never;
|
|
19904
|
+
patch?: never;
|
|
19905
|
+
trace?: never;
|
|
19906
|
+
};
|
|
19907
|
+
"/api/v2/workspaces/{workspaceId}/custom-reports/{reportId}/report": {
|
|
19908
|
+
parameters: {
|
|
19909
|
+
query?: never;
|
|
19910
|
+
header?: never;
|
|
19911
|
+
path?: never;
|
|
19912
|
+
cookie?: never;
|
|
19036
19913
|
};
|
|
19037
|
-
|
|
19038
|
-
|
|
19039
|
-
|
|
19040
|
-
|
|
19041
|
-
|
|
19042
|
-
|
|
19043
|
-
|
|
19044
|
-
|
|
19045
|
-
|
|
19046
|
-
|
|
19047
|
-
|
|
19048
|
-
|
|
19049
|
-
|
|
19050
|
-
|
|
19051
|
-
|
|
19052
|
-
|
|
19914
|
+
/**
|
|
19915
|
+
* Живой расчёт сохранённой таблицы за период
|
|
19916
|
+
* @description Для источника «Перс воронка» дополнительно возвращает единый snapshot: calculatedAt, executionDbSnapshot, currentStepsFingerprint и reportUpdatedAt. Все четыре значения нужно без изменений передать в drill-down; у legacy-источников snapshot-поля отсутствуют.
|
|
19917
|
+
*/
|
|
19918
|
+
get: operations["getCustomReportData"];
|
|
19919
|
+
put?: never;
|
|
19920
|
+
post?: never;
|
|
19921
|
+
delete?: never;
|
|
19922
|
+
options?: never;
|
|
19923
|
+
head?: never;
|
|
19924
|
+
patch?: never;
|
|
19925
|
+
trace?: never;
|
|
19926
|
+
};
|
|
19927
|
+
"/api/v2/workspaces/{workspaceId}/operational-overview": {
|
|
19928
|
+
parameters: {
|
|
19929
|
+
query?: never;
|
|
19930
|
+
header?: never;
|
|
19931
|
+
path?: never;
|
|
19932
|
+
cookie?: never;
|
|
19053
19933
|
};
|
|
19054
|
-
/**
|
|
19055
|
-
|
|
19056
|
-
|
|
19057
|
-
|
|
19058
|
-
|
|
19059
|
-
|
|
19060
|
-
|
|
19061
|
-
|
|
19062
|
-
|
|
19063
|
-
|
|
19064
|
-
|
|
19065
|
-
|
|
19066
|
-
|
|
19067
|
-
|
|
19068
|
-
|
|
19069
|
-
|
|
19070
|
-
|
|
19071
|
-
|
|
19072
|
-
|
|
19073
|
-
segmentEnteredAt?: string;
|
|
19934
|
+
/**
|
|
19935
|
+
* Эксплуатационная сводка воркспейса
|
|
19936
|
+
* @description Возвращает состояние follow-up цепочек, расписаний и последних задач, безопасные метаданные ошибок действий и предупреждения с drill-down. Очередь операторов включается только когда effective scopes текущего вызова содержат read:conversations; иначе ответ явно сообщает missingScope.
|
|
19937
|
+
*/
|
|
19938
|
+
get: operations["getWorkspaceOperationalOverview"];
|
|
19939
|
+
put?: never;
|
|
19940
|
+
post?: never;
|
|
19941
|
+
delete?: never;
|
|
19942
|
+
options?: never;
|
|
19943
|
+
head?: never;
|
|
19944
|
+
patch?: never;
|
|
19945
|
+
trace?: never;
|
|
19946
|
+
};
|
|
19947
|
+
"/api/v2/workspaces/{workspaceId}/workspace-operators": {
|
|
19948
|
+
parameters: {
|
|
19949
|
+
query?: never;
|
|
19950
|
+
header?: never;
|
|
19951
|
+
path?: never;
|
|
19952
|
+
cookie?: never;
|
|
19074
19953
|
};
|
|
19075
|
-
|
|
19076
|
-
|
|
19077
|
-
|
|
19078
|
-
|
|
19079
|
-
|
|
19080
|
-
|
|
19081
|
-
|
|
19082
|
-
|
|
19083
|
-
|
|
19084
|
-
|
|
19085
|
-
|
|
19954
|
+
/** Системные операторы Besales для фильтра и назначения */
|
|
19955
|
+
get: operations["listWorkspaceOperatorsForWorkflow"];
|
|
19956
|
+
put?: never;
|
|
19957
|
+
post?: never;
|
|
19958
|
+
delete?: never;
|
|
19959
|
+
options?: never;
|
|
19960
|
+
head?: never;
|
|
19961
|
+
patch?: never;
|
|
19962
|
+
trace?: never;
|
|
19963
|
+
};
|
|
19964
|
+
"/api/v2/workspaces/{workspaceId}/operator-queue": {
|
|
19965
|
+
parameters: {
|
|
19966
|
+
query?: never;
|
|
19967
|
+
header?: never;
|
|
19968
|
+
path?: never;
|
|
19969
|
+
cookie?: never;
|
|
19970
|
+
};
|
|
19971
|
+
/** Пагинированная очередь живых операторов */
|
|
19972
|
+
get: operations["listWorkspaceOperatorQueue"];
|
|
19973
|
+
put?: never;
|
|
19974
|
+
post?: never;
|
|
19975
|
+
delete?: never;
|
|
19976
|
+
options?: never;
|
|
19977
|
+
head?: never;
|
|
19978
|
+
patch?: never;
|
|
19979
|
+
trace?: never;
|
|
19980
|
+
};
|
|
19981
|
+
"/api/v2/workspaces/{workspaceId}/chats/{contactId}/operator-assignment": {
|
|
19982
|
+
parameters: {
|
|
19983
|
+
query?: never;
|
|
19984
|
+
header?: never;
|
|
19985
|
+
path?: never;
|
|
19986
|
+
cookie?: never;
|
|
19987
|
+
};
|
|
19988
|
+
/** Текущее назначение оператора и CAS-версия */
|
|
19989
|
+
get: operations["getWorkspaceOperatorAssignment"];
|
|
19990
|
+
put?: never;
|
|
19991
|
+
post?: never;
|
|
19992
|
+
delete?: never;
|
|
19993
|
+
options?: never;
|
|
19994
|
+
head?: never;
|
|
19995
|
+
/**
|
|
19996
|
+
* Назначить, переназначить или снять системного оператора
|
|
19997
|
+
* @description CAS-операция меняет только локальное назначение Besales. Она не меняет CRM operator, operatorStatus и не отправляет сообщение.
|
|
19998
|
+
*/
|
|
19999
|
+
patch: operations["updateWorkspaceOperatorAssignment"];
|
|
20000
|
+
trace?: never;
|
|
20001
|
+
};
|
|
20002
|
+
"/api/v2/workspaces/{workspaceId}/custom-reports/{reportId}/drilldown": {
|
|
20003
|
+
parameters: {
|
|
20004
|
+
query?: never;
|
|
20005
|
+
header?: never;
|
|
20006
|
+
path?: never;
|
|
20007
|
+
cookie?: never;
|
|
20008
|
+
};
|
|
20009
|
+
/**
|
|
20010
|
+
* Контакты и сделки за числом сохранённой таблицы
|
|
20011
|
+
* @description Возвращает конкретные исполнения, контакты или сделки за числовой ячейкой источников «Обзор», «Фоллоу-апы» и «Перс воронка». Сервер перечитывает определение отчёта и проверяет updatedAt; сводная передаёт полный путь строки. Snapshot и fingerprint обязательны только для personalized-источника. Для процентной колонки раскрывается фактический числитель.
|
|
20012
|
+
*/
|
|
20013
|
+
get: operations["getCustomReportDrilldown"];
|
|
20014
|
+
put?: never;
|
|
20015
|
+
post?: never;
|
|
20016
|
+
delete?: never;
|
|
20017
|
+
options?: never;
|
|
20018
|
+
head?: never;
|
|
20019
|
+
patch?: never;
|
|
20020
|
+
trace?: never;
|
|
20021
|
+
};
|
|
20022
|
+
}
|
|
20023
|
+
export type webhooks = Record<string, never>;
|
|
20024
|
+
export interface components {
|
|
20025
|
+
schemas: {
|
|
20026
|
+
TriggerContactClaim: {
|
|
20027
|
+
/** Format: uuid */
|
|
20028
|
+
triggerId: string;
|
|
20029
|
+
triggerName: string;
|
|
20030
|
+
/** Format: uuid */
|
|
20031
|
+
agentId: string;
|
|
20032
|
+
agentName: string | null;
|
|
20033
|
+
/** @enum {string} */
|
|
20034
|
+
status: "IN_PROGRESS" | "COMPLETED";
|
|
20035
|
+
/** Format: date-time */
|
|
20036
|
+
claimedAt: string;
|
|
20037
|
+
/** @description false у status=IN_PROGRESS — право держит владелец */
|
|
20038
|
+
canReset: boolean;
|
|
20039
|
+
/** @enum {string|null} */
|
|
20040
|
+
blockedReason: "RUNNING" | null;
|
|
20041
|
+
triggerIsEnabled: boolean;
|
|
20042
|
+
/** @description Осталась ли включённой настройка «сработать один раз». Право переживает её выключение: тогда строка висит, но триггер срабатывает как обычный. */
|
|
20043
|
+
stillOneTime: boolean;
|
|
20044
|
+
};
|
|
20045
|
+
TriggerContactClaimsPage: {
|
|
20046
|
+
claims: components["schemas"]["TriggerContactClaim"][];
|
|
20047
|
+
truncated: boolean;
|
|
20048
|
+
};
|
|
20049
|
+
ResetTriggerClaimRequest: {
|
|
20050
|
+
/**
|
|
20051
|
+
* @description Обязательное подтверждение: триггер сможет повторить необратимые действия во внешних системах. Проверяется на сервере, а не только в MCP-клиенте.
|
|
20052
|
+
* @enum {boolean}
|
|
20053
|
+
*/
|
|
20054
|
+
explicitConfirmation: true;
|
|
20055
|
+
};
|
|
20056
|
+
CustomReportMetricValues: {
|
|
20057
|
+
[key: string]: number | null;
|
|
20058
|
+
};
|
|
20059
|
+
CustomReportBucket: {
|
|
20060
|
+
/** Format: date */
|
|
20061
|
+
key: string;
|
|
20062
|
+
/** Format: date */
|
|
20063
|
+
from: string;
|
|
20064
|
+
/** Format: date */
|
|
20065
|
+
to: string;
|
|
20066
|
+
partial: boolean;
|
|
20067
|
+
rows: {
|
|
20068
|
+
[key: string]: components["schemas"]["CustomReportMetricValues"];
|
|
20069
|
+
};
|
|
20070
|
+
total: components["schemas"]["CustomReportMetricValues"];
|
|
20071
|
+
comparableReliable?: boolean;
|
|
20072
|
+
};
|
|
20073
|
+
CustomReportGrandTotal: {
|
|
20074
|
+
/** Format: date */
|
|
20075
|
+
from: string;
|
|
20076
|
+
/** Format: date */
|
|
20077
|
+
to: string;
|
|
20078
|
+
rows: {
|
|
20079
|
+
[key: string]: components["schemas"]["CustomReportMetricValues"];
|
|
20080
|
+
};
|
|
20081
|
+
total: components["schemas"]["CustomReportMetricValues"];
|
|
20082
|
+
comparableReliable?: boolean;
|
|
20083
|
+
};
|
|
20084
|
+
CustomReportDrilldownSnapshot: {
|
|
20085
|
+
/** Format: date-time */
|
|
20086
|
+
calculatedAt: string;
|
|
20087
|
+
executionDbSnapshot: string;
|
|
20088
|
+
currentStepsFingerprint: string;
|
|
20089
|
+
/** Format: date-time */
|
|
20090
|
+
reportUpdatedAt: string;
|
|
20091
|
+
};
|
|
20092
|
+
CustomReportStepSchedule: {
|
|
20093
|
+
/** @enum {string} */
|
|
20094
|
+
kind: "offset" | "clock" | "beforeMeeting" | "unknown";
|
|
20095
|
+
minutes?: number;
|
|
20096
|
+
dayOffset?: number;
|
|
20097
|
+
atTime?: string;
|
|
20098
|
+
};
|
|
20099
|
+
/** @description Pass-through ответа канонической UI-витрины. Конкретная форма зависит от report и сохраняется без пересчёта адаптером; nullable и unknown-поля имеют доменный смысл. */
|
|
20100
|
+
AnalyticsAggregateResponse: {
|
|
20101
|
+
[key: string]: unknown;
|
|
20102
|
+
};
|
|
20103
|
+
OperationalOverviewWarning: {
|
|
20104
|
+
/** @enum {string} */
|
|
20105
|
+
severity: "info" | "warning" | "critical";
|
|
20106
|
+
code: string;
|
|
20107
|
+
sourceType: string;
|
|
20108
|
+
sourceId: string;
|
|
20109
|
+
/** Format: date-time */
|
|
20110
|
+
occurredAt: string | null;
|
|
20111
|
+
reason: string;
|
|
20112
|
+
drilldown: {
|
|
20113
|
+
type: string;
|
|
20114
|
+
id: string;
|
|
20115
|
+
};
|
|
20116
|
+
};
|
|
20117
|
+
OperationalOverviewResponse: {
|
|
20118
|
+
/** Format: date-time */
|
|
20119
|
+
generatedAt: string;
|
|
20120
|
+
summary: {
|
|
20121
|
+
[key: string]: number;
|
|
20122
|
+
};
|
|
20123
|
+
followUp: {
|
|
20124
|
+
[key: string]: unknown;
|
|
20125
|
+
};
|
|
20126
|
+
schedules: {
|
|
20127
|
+
[key: string]: unknown;
|
|
20128
|
+
}[];
|
|
20129
|
+
jobs: {
|
|
20130
|
+
[key: string]: unknown;
|
|
20131
|
+
}[];
|
|
20132
|
+
actionErrors: {
|
|
20133
|
+
[key: string]: unknown;
|
|
20134
|
+
}[];
|
|
20135
|
+
operatorQueue: {
|
|
20136
|
+
[key: string]: unknown;
|
|
20137
|
+
};
|
|
20138
|
+
warnings: components["schemas"]["OperationalOverviewWarning"][];
|
|
20139
|
+
};
|
|
20140
|
+
WorkspaceOperatorOption: {
|
|
20141
|
+
/** Format: uuid */
|
|
20142
|
+
id: string;
|
|
20143
|
+
displayName: string | null;
|
|
20144
|
+
assignable: boolean;
|
|
20145
|
+
/** @enum {string} */
|
|
20146
|
+
operatorType: "WORKSPACE";
|
|
20147
|
+
};
|
|
20148
|
+
WorkspaceOperatorIdentity: {
|
|
20149
|
+
/** Format: uuid */
|
|
20150
|
+
id: string;
|
|
20151
|
+
displayName: string | null;
|
|
20152
|
+
};
|
|
20153
|
+
OperatorWorkflowEvidence: {
|
|
20154
|
+
/** Format: uuid */
|
|
20155
|
+
id: string;
|
|
20156
|
+
/** @enum {string} */
|
|
20157
|
+
eventType: "OPERATOR_TAKEOVER" | "FINISH_RESOLVED";
|
|
20158
|
+
/** Format: date-time */
|
|
20159
|
+
occurredAt: string;
|
|
20160
|
+
};
|
|
20161
|
+
WorkspaceOperatorAssignmentState: {
|
|
20162
|
+
/** Format: uuid */
|
|
20163
|
+
contactId: string;
|
|
20164
|
+
/** @enum {string|null} */
|
|
20165
|
+
status: "WAITING_OPERATOR" | "IN_PROGRESS" | "WAITING_CUSTOMER" | "RESOLVED" | null;
|
|
20166
|
+
/** Format: date-time */
|
|
20167
|
+
statusUpdatedAt: string | null;
|
|
20168
|
+
/** Format: uuid */
|
|
20169
|
+
workspaceOperatorId: string | null;
|
|
20170
|
+
/** Format: date-time */
|
|
20171
|
+
assignedAt: string | null;
|
|
20172
|
+
operatorDisplayName: string | null;
|
|
20173
|
+
workflowEvidence: components["schemas"]["OperatorWorkflowEvidence"] | null;
|
|
20174
|
+
};
|
|
20175
|
+
OperatorQueueResponse: {
|
|
20176
|
+
data: {
|
|
20177
|
+
[key: string]: unknown;
|
|
20178
|
+
}[];
|
|
20179
|
+
page: number;
|
|
20180
|
+
limit: number;
|
|
20181
|
+
total: number;
|
|
20182
|
+
hasMore: boolean;
|
|
20183
|
+
};
|
|
20184
|
+
UpdateWorkspaceOperatorAssignment: {
|
|
20185
|
+
/** Format: uuid */
|
|
20186
|
+
workspaceOperatorId: string | null;
|
|
20187
|
+
/** Format: uuid */
|
|
20188
|
+
expectedWorkspaceOperatorId: string | null;
|
|
20189
|
+
/** Format: date-time */
|
|
20190
|
+
expectedAssignedOperatorAt: string | null;
|
|
20191
|
+
};
|
|
20192
|
+
WorkspaceOperatorAssignmentResult: {
|
|
20193
|
+
changed: boolean;
|
|
20194
|
+
assignedOperator: components["schemas"]["WorkspaceOperatorIdentity"] | null;
|
|
20195
|
+
/** Format: date-time */
|
|
20196
|
+
assignedOperatorAt: string | null;
|
|
20197
|
+
};
|
|
20198
|
+
CustomReportDefinition: {
|
|
20199
|
+
/** Format: uuid */
|
|
20200
|
+
id: string;
|
|
20201
|
+
name: string;
|
|
20202
|
+
sourceKey: string;
|
|
20203
|
+
section: string;
|
|
20204
|
+
view: string;
|
|
20205
|
+
filters: {
|
|
20206
|
+
[key: string]: unknown;
|
|
20207
|
+
};
|
|
20208
|
+
dimensionValues: string[];
|
|
20209
|
+
rowDimensions: string[];
|
|
20210
|
+
metricKeys: string[];
|
|
20211
|
+
/** Format: date-time */
|
|
20212
|
+
archivedAt?: string | null;
|
|
20213
|
+
/** Format: date-time */
|
|
20214
|
+
createdAt?: string;
|
|
20215
|
+
/** Format: date-time */
|
|
20216
|
+
updatedAt: string;
|
|
20217
|
+
};
|
|
20218
|
+
CustomReportDataResponse: {
|
|
20219
|
+
metricKeys: string[];
|
|
20220
|
+
dimensionValues: string[];
|
|
20221
|
+
buckets: components["schemas"]["CustomReportBucket"][];
|
|
20222
|
+
grandTotal: components["schemas"]["CustomReportGrandTotal"] | null;
|
|
20223
|
+
availableDimensionValues: string[];
|
|
20224
|
+
availableMetricKeys: string[];
|
|
20225
|
+
dimensionLabels?: {
|
|
20226
|
+
[key: string]: string;
|
|
20227
|
+
};
|
|
20228
|
+
rowSequenceNames?: {
|
|
20229
|
+
[key: string]: string;
|
|
20230
|
+
};
|
|
20231
|
+
/** @description Только personalized-funnel: безопасное расписание шага по адресу строки. Текст сообщения, условия, variable hints и вложения не возвращаются. */
|
|
20232
|
+
rowStepSchedules?: {
|
|
20233
|
+
[key: string]: components["schemas"]["CustomReportStepSchedule"];
|
|
20234
|
+
};
|
|
20235
|
+
/** Format: date-time */
|
|
20236
|
+
historyStartsAt?: string | null;
|
|
20237
|
+
nestedRows?: {
|
|
20238
|
+
[key: string]: unknown;
|
|
20239
|
+
}[];
|
|
20240
|
+
nestedTruncated?: boolean;
|
|
20241
|
+
nestedTotalRowCount?: number;
|
|
20242
|
+
/** Format: date-time */
|
|
20243
|
+
calculatedAt?: string;
|
|
20244
|
+
executionDbSnapshot?: string;
|
|
20245
|
+
currentStepsFingerprint?: string;
|
|
20246
|
+
/** Format: date-time */
|
|
20247
|
+
reportUpdatedAt?: string;
|
|
20248
|
+
};
|
|
20249
|
+
CustomReportDrilldownLink: {
|
|
20250
|
+
/** @description Идентификатор выдачи ссылки; для агрегированных источников может быть составным. */
|
|
20251
|
+
issueId: string;
|
|
20252
|
+
name: string;
|
|
20253
|
+
/** Format: uri */
|
|
20254
|
+
targetUrl: string;
|
|
20255
|
+
/** Format: date-time */
|
|
20256
|
+
clickedAt: string | null;
|
|
20257
|
+
};
|
|
20258
|
+
CustomReportDrilldownRow: {
|
|
20259
|
+
id: string;
|
|
20260
|
+
/** Format: uuid */
|
|
20261
|
+
chatUserId: string | null;
|
|
20262
|
+
contactName: string | null;
|
|
20263
|
+
contactPhone: string | null;
|
|
20264
|
+
/** Format: date-time */
|
|
20265
|
+
happenedAt: string | null;
|
|
20266
|
+
status: string | null;
|
|
20267
|
+
failedCondition: string | null;
|
|
20268
|
+
failedValue: string | null;
|
|
20269
|
+
/** Format: uri */
|
|
20270
|
+
getcourseUserUrl: string | null;
|
|
20271
|
+
/** Format: uri */
|
|
20272
|
+
getcourseDealUrl: string | null;
|
|
20273
|
+
/**
|
|
20274
|
+
* Format: uri
|
|
20275
|
+
* @description Сделка/лид в активной AmoCRM или Bitrix24.
|
|
20276
|
+
*/
|
|
20277
|
+
crmUrl: string | null;
|
|
20278
|
+
links: components["schemas"]["CustomReportDrilldownLink"][];
|
|
20279
|
+
};
|
|
20280
|
+
CustomReportDrilldownResponse: {
|
|
20281
|
+
items: components["schemas"]["CustomReportDrilldownRow"][];
|
|
20282
|
+
total: number;
|
|
20283
|
+
/** @description Фактический числитель для процентной колонки. */
|
|
20284
|
+
resolvedMetricKey: string;
|
|
20285
|
+
};
|
|
20286
|
+
/**
|
|
20287
|
+
* @description Минимальная длина включительного period-окна, на котором считаются доли исходов custom-reports и карточек «Обзора». Литеральный тип механически связывает backend и frontend через сгенерированный API-контракт.
|
|
20288
|
+
* @enum {integer}
|
|
20289
|
+
*/
|
|
20290
|
+
CustomReportOutcomeRateMinWindowDays: 21;
|
|
20291
|
+
/**
|
|
20292
|
+
* @description Канонические доли исходов, которые в period-режиме доступны только на окне не короче CustomReportOutcomeRateMinWindowDays. Исчерпывающие backend/frontend-реестры типизированы этим enum, поэтому удаление или добавление ключа только на одной стороне ломает компиляцию.
|
|
20293
|
+
* @enum {string}
|
|
20294
|
+
*/
|
|
20295
|
+
CustomReportOutcomeRateMetric: "clickedRate" | "enteredDialogRate" | "replyRate" | "deepDialogRate" | "handedRate" | "paidRate";
|
|
20296
|
+
UpdateDialogScriptRequest: {
|
|
20297
|
+
/** @description Вводная проза §6 до первой ветки (опц.) */
|
|
20298
|
+
preamble?: string;
|
|
20299
|
+
graph: components["schemas"]["ScriptGraph"];
|
|
20300
|
+
};
|
|
20301
|
+
AgentScriptGraphResponse: {
|
|
20302
|
+
/** @description false если у агента нет §6 «Скрипт диалога» (пустой/legacy промпт) */
|
|
20303
|
+
present: boolean;
|
|
20304
|
+
scriptGraph: components["schemas"]["ScriptGraph"] | null;
|
|
20305
|
+
};
|
|
20306
|
+
ScriptGraph: {
|
|
20307
|
+
stages: components["schemas"]["ScriptStage"][];
|
|
20308
|
+
nodes: components["schemas"]["ScriptNode"][];
|
|
20309
|
+
edges: components["schemas"]["ScriptEdge"][];
|
|
20310
|
+
};
|
|
20311
|
+
ScriptStage: {
|
|
20312
|
+
id: string;
|
|
20313
|
+
name: string;
|
|
20314
|
+
};
|
|
20315
|
+
ScriptNode: {
|
|
20316
|
+
/** @description id узла = id ветки §6 (A, D2, …) */
|
|
20317
|
+
id: string;
|
|
20318
|
+
stageId: string;
|
|
20319
|
+
title: string;
|
|
20320
|
+
instruction: string;
|
|
20321
|
+
/** @description свободный лейбл состояния воронки */
|
|
20322
|
+
leadStateTag?: string | null;
|
|
20323
|
+
branchId: string;
|
|
20324
|
+
};
|
|
20325
|
+
ScriptEdge: {
|
|
20326
|
+
from: string;
|
|
20327
|
+
to: string;
|
|
20328
|
+
condition?: string | null;
|
|
20329
|
+
};
|
|
20330
|
+
ErrorResponse: {
|
|
20331
|
+
error: {
|
|
20332
|
+
/** @example VALIDATION_FAILED */
|
|
20333
|
+
code: string;
|
|
20334
|
+
/** @example Field "name" is required */
|
|
20335
|
+
message: string;
|
|
20336
|
+
details?: {
|
|
20337
|
+
[key: string]: unknown;
|
|
20338
|
+
};
|
|
20339
|
+
/** Format: uuid */
|
|
20340
|
+
requestId?: string;
|
|
20341
|
+
};
|
|
20342
|
+
};
|
|
20343
|
+
ValidationErrorResponse: components["schemas"]["ErrorResponse"] & {
|
|
20344
|
+
error?: {
|
|
20345
|
+
/**
|
|
20346
|
+
* @example {
|
|
20347
|
+
* "name": [
|
|
20348
|
+
* "Field is required"
|
|
20349
|
+
* ],
|
|
20350
|
+
* "email": [
|
|
20351
|
+
* "Invalid email format"
|
|
20352
|
+
* ]
|
|
20353
|
+
* }
|
|
20354
|
+
*/
|
|
20355
|
+
fieldErrors?: {
|
|
20356
|
+
[key: string]: string[];
|
|
20357
|
+
};
|
|
20358
|
+
};
|
|
20359
|
+
};
|
|
20360
|
+
/** @enum {string} */
|
|
20361
|
+
GetCourseWaveRunState: "QUEUED" | "PENDING" | "STEP1" | "STEP2" | "COMPLETED" | "FAILED" | "CANCELLING" | "CANCELLED";
|
|
20362
|
+
/** @enum {string} */
|
|
20363
|
+
GetCourseWaveRunContactStatus: "PENDING" | "CLAIMED" | "SENT" | "SKIPPED" | "FAILED" | "UNKNOWN";
|
|
20364
|
+
GetCourseWaveRunContactInput: {
|
|
20365
|
+
/** @description GetCourse user id */
|
|
20366
|
+
contactId: string;
|
|
20367
|
+
/** @description Registration deal id для свежего пина Шага 1 */
|
|
20368
|
+
dealId?: string;
|
|
20369
|
+
transport?: components["schemas"]["GetCourseTransport"];
|
|
20370
|
+
dialogId?: string;
|
|
20371
|
+
/** Format: email */
|
|
20372
|
+
email?: string;
|
|
20373
|
+
phone?: string;
|
|
20374
|
+
firstName?: string;
|
|
20375
|
+
lastName?: string;
|
|
20376
|
+
/** Format: date-time */
|
|
20377
|
+
leadLastActiveAt?: string;
|
|
20378
|
+
/** Format: date-time */
|
|
20379
|
+
segmentEnteredAt?: string;
|
|
20380
|
+
};
|
|
20381
|
+
GetCourseWaveRunPreflightOptions: {
|
|
20382
|
+
/** @default true */
|
|
20383
|
+
enabled: boolean;
|
|
20384
|
+
productTitle?: string;
|
|
20385
|
+
productMatchKey?: string;
|
|
20386
|
+
offerId?: number;
|
|
20387
|
+
/**
|
|
20388
|
+
* @default warn
|
|
20389
|
+
* @enum {string}
|
|
20390
|
+
*/
|
|
20391
|
+
otherProductActiveDealMode: "warn" | "block" | "ignore";
|
|
19086
20392
|
};
|
|
19087
20393
|
GetCourseWaveRunLaunchRequest: {
|
|
19088
20394
|
/** Format: uuid */
|
|
@@ -19103,6 +20409,10 @@ export interface components {
|
|
|
19103
20409
|
*/
|
|
19104
20410
|
launchType: "status";
|
|
19105
20411
|
channels: components["schemas"]["GetCourseTransport"][];
|
|
20412
|
+
/**
|
|
20413
|
+
* @description Воронка ШКОЛЫ в форме «f11 — ДБО / NR / ВК / In Stream» — код fNN обязателен. ⚠️ Это НЕ когорта и НЕ подпись запуска: «reg-no-show», «post-web|дбо» сюда класть нельзя — тип отбора идёт в segment, продукт в productCode, подпись запуска в cohortLabel. Ось «Воронка» сравнивается по коду, поэтому значение без кода становится отдельной «воронкой» и засоряет фильтр аналитики.
|
|
20414
|
+
* @example f11 — ДБО / NR / ВК / In Stream
|
|
20415
|
+
*/
|
|
19106
20416
|
funnel?: string;
|
|
19107
20417
|
segment?: string;
|
|
19108
20418
|
/** @description Явное бизнес-правило отбора; требует segment. */
|
|
@@ -19168,6 +20478,8 @@ export interface components {
|
|
|
19168
20478
|
* @description Точный момент входа контакта в когорту (ISO 8601, зона ОБЯЗАТЕЛЬНА — …Z либо ±ЧЧ:ММ). На нём считается свежесть в «Аналитике рассылок»: возраст = время отправки минус segmentEnteredAt. Заполняется, когда предсписок собран ПРАВИЛОМ и у каждой строки есть свой момент события (например eventAt регистрации). Не передан — возраст строки остаётся неизвестным. Дату запуска сюда подставлять нельзя: она схлопнула бы месяцы когорт в одну корзину.
|
|
19169
20479
|
*/
|
|
19170
20480
|
segmentEnteredAt?: string;
|
|
20481
|
+
/** @description Воронка ЭТОГО контакта (например «f11 — ДБО / NR / ВК / In Stream»). Заполняется, когда файл собран из НЕСКОЛЬКИХ воронок: одна метка на запуск заставляла писать в поле воронки когорту («reg-no-show|дбо»), и фильтр по воронке переставал отвечать на свой вопрос — по f11 он показывал ноль отправок за 30 дней при 3267 регистрациях (замер 02.09.2026). Когорта и продукт лежат в своих полях segment и productCode. Не передана — берётся воронка запуска (funnel). */
|
|
20482
|
+
funnel?: string;
|
|
19171
20483
|
};
|
|
19172
20484
|
/** @description Ровно одна аудитория — createdAfter ЛИБО contacts. */
|
|
19173
20485
|
GetCourseColdWelcomePreviewRequest: {
|
|
@@ -19185,6 +20497,10 @@ export interface components {
|
|
|
19185
20497
|
createdAfter?: string;
|
|
19186
20498
|
contacts?: components["schemas"]["GetCourseColdWelcomeContact"][];
|
|
19187
20499
|
channels?: components["schemas"]["GetCourseTransport"][];
|
|
20500
|
+
/** @description Метка сегмента запуска. Ею считается правило «этим сегментом человеку уже уходило»: без неё прогноз правил (policyForecast) по этому правилу структурно пуст, и ноль читается как «проверили, никого». Аудиторию метка не отбирает. */
|
|
20501
|
+
segment?: string;
|
|
20502
|
+
/** @description Разовый текст запуска — им считается правило «тот же текст не дважды» (журнал касаний ключуется отпечатком шаблона). Для запуска с сохранённой рассылкой не нужен: текст берётся из неё тем же резолвером, что на старте, включая посегментные тексты. */
|
|
20503
|
+
message?: string;
|
|
19188
20504
|
/** @deprecated */
|
|
19189
20505
|
channelsMode?: components["schemas"]["ColdWelcomeChannelsMode"];
|
|
19190
20506
|
};
|
|
@@ -19195,6 +20511,23 @@ export interface components {
|
|
|
19195
20511
|
*/
|
|
19196
20512
|
ColdWelcomeChannelsMode: "RESTRICT" | "ADD";
|
|
19197
20513
|
GetCourseColdWelcomePreviewResponse: {
|
|
20514
|
+
/** @description ПРОГНОЗ ПРАВИЛ ОТПРАВКИ на момент запроса, а не обещание. Блокирует одна точка — пересчёт правил постранично вплотную к транспорту, и между предпросмотром и отправкой человек успевает зарегистрироваться на эфир или получить это же касание другим запуском. Причины ВЗАИМНО ИСКЛЮЧАЮТ друг друга (сервер возвращает первую сработавшую), поэтому сумма — это ЛЮДИ, а не срабатывания. Считается по МЕТКЕ и ТЕКСТУ запроса: без segment (и без message у запуска разовым текстом) соответствующие правила дают нули. */
|
|
20515
|
+
policyForecast?: {
|
|
20516
|
+
blockedBy: {
|
|
20517
|
+
/** @description Этим сегментом человеку уже уходило НАШЕЙ отправкой. Периметр строго наш (волна школы тем же ярлыком отправкой здесь не считается — иначе запрет накрыл бы 37 % отправок; замер прода 10.09.2026). */
|
|
20518
|
+
alreadySentSegment: number;
|
|
20519
|
+
/** @description Уже получал «Первое сообщение» — оно одноразово НА ЧЕЛОВЕКА. */
|
|
20520
|
+
alreadyGreeted: number;
|
|
20521
|
+
/** @description Идёт эпизод регистрации: приветствие ДОЛЖНЫ и не отдали либо подготовлен повторный вход на новый эфир. Считается ПО ЧЕЛОВЕКУ, без скоупа площадки. */
|
|
20522
|
+
activeEpisode: number;
|
|
20523
|
+
/** @description Тихий период: человека трогали (нашей отправкой либо шагом календарной цепочки) внутри окна. Окно резолвится настройками — перекрытие рассылки, затем площадка, затем воркспейс, затем 0. По умолчанию 0, то есть правило выключено, пока оператор его не выставит; рекомендация — 7 суток. Волна школы касанием НЕ считается. Расписания судятся своим cooldownDays. */
|
|
20524
|
+
cooldown: number;
|
|
20525
|
+
};
|
|
20526
|
+
/** @description Тот же ТЕКСТ уже занят в журнале касаний под ДРУГИМ ярлыком. Отдельно от blockedBy: это не правило владельца, а атомарное право — «тот же текст не дважды» держится строкой журнала, а не читающей проверкой. */
|
|
20527
|
+
touchClaimed: number;
|
|
20528
|
+
/** @description ИНФОРМАЦИЯ, а не запрет: этим же ярлыком человека рассылал ВНЕШНИЙ механизм — волна школы своими процессами либо шаблон Wazzup. Наш догон в мессенджерах уйдёт как обычно: так работает штатный процесс. В отсев это число НЕ входит. */
|
|
20529
|
+
externalWaveTouched: number;
|
|
20530
|
+
};
|
|
19198
20531
|
/** @description Выбранные каналы, которых НЕТ в allowlist площадки: они не уедут ни в каком режиме. Чинится галочкой в настройках площадки, поэтому возвращаются ИМЕНАМИ, а не числом. */
|
|
19199
20532
|
channelsNotAllowedByPlatform?: components["schemas"]["GetCourseTransport"][];
|
|
19200
20533
|
/** @description Сколько ещё МОЖЕТ получить первое сообщение. */
|
|
@@ -19203,6 +20536,8 @@ export interface components {
|
|
|
19203
20536
|
alreadyWelcomed: number;
|
|
19204
20537
|
/** @description Всего найдено под границей. */
|
|
19205
20538
|
foundContacts: number;
|
|
20539
|
+
/** @description Строк файла БЕЗ момента входа в сегмент (segment_entered_at). Такой контакт не попадёт ни в один период оси «вход в сегмент» на «Аналитике коммуникации» — он невидим ровно там, где спрашивают «сколько людей пришло за месяц». Предупреждение, а не запрет: у аудитории, заданной границей даты или файлом без события, момента входа нет вовсе. Считается по СЫРЫМ строкам запроса, чтобы число сходилось с файлом. */
|
|
20540
|
+
rowsWithoutSegmentEntry?: number;
|
|
19206
20541
|
};
|
|
19207
20542
|
/** @description Не больше ОДНОЙ аудитории: contacts (поимённый список) ЛИБО currentAnchorValue (когорта). Без обеих — вся площадка (все контакты с непустым якорем). */
|
|
19208
20543
|
GetCourseAnchorRefreshRequest: {
|
|
@@ -19241,6 +20576,28 @@ export interface components {
|
|
|
19241
20576
|
alreadyRunning: boolean;
|
|
19242
20577
|
refreshableVariables: string[];
|
|
19243
20578
|
};
|
|
20579
|
+
GetCourseAnchorRefreshStatusResponse: {
|
|
20580
|
+
correlationId: string;
|
|
20581
|
+
/** Format: uuid */
|
|
20582
|
+
platformId: string;
|
|
20583
|
+
/** @enum {string} */
|
|
20584
|
+
status: "RUNNING" | "COMPLETED" | "FAILED" | "STALLED";
|
|
20585
|
+
result: {
|
|
20586
|
+
correlationId: string;
|
|
20587
|
+
contactsScanned: number;
|
|
20588
|
+
outcomes: {
|
|
20589
|
+
[key: string]: number;
|
|
20590
|
+
};
|
|
20591
|
+
changedByVariable: {
|
|
20592
|
+
[key: string]: number;
|
|
20593
|
+
};
|
|
20594
|
+
} | null;
|
|
20595
|
+
error: string | null;
|
|
20596
|
+
/** Format: date-time */
|
|
20597
|
+
startedAt: string;
|
|
20598
|
+
/** Format: date-time */
|
|
20599
|
+
finishedAt: string | null;
|
|
20600
|
+
};
|
|
19244
20601
|
/** @description Ровно один источник текста (message ЛИБО mailingVariantId) и ровно одна аудитория (createdAfter ЛИБО contacts). */
|
|
19245
20602
|
GetCourseColdWelcomeLaunchRequest: {
|
|
19246
20603
|
/**
|
|
@@ -19265,6 +20622,10 @@ export interface components {
|
|
|
19265
20622
|
/** @description Метка сегмента. Аудиторию НЕ отбирает. Если у рассылки есть текст именно для этого сегмента, он выбирает текст запуска — и тогда аудитория обязана быть файловой. */
|
|
19266
20623
|
segment?: string;
|
|
19267
20624
|
productCode?: string;
|
|
20625
|
+
/**
|
|
20626
|
+
* @description Воронка ШКОЛЫ в форме «f11 — ДБО / NR / ВК / In Stream» — код fNN обязателен. ⚠️ Это НЕ когорта и НЕ подпись запуска: «reg-no-show», «post-web|дбо» сюда класть нельзя — тип отбора идёт в segment, продукт в productCode, подпись запуска в cohortLabel. Ось «Воронка» сравнивается по коду, поэтому значение без кода становится отдельной «воронкой» и засоряет фильтр аналитики.
|
|
20627
|
+
* @example f11 — ДБО / NR / ВК / In Stream
|
|
20628
|
+
*/
|
|
19268
20629
|
funnel?: string;
|
|
19269
20630
|
/** @description Человекочитаемое имя ЭТОГО запуска — подпись когорты в «Аналитике рассылок». Не имя рассылки и не метка сегмента: те одинаковы у всех запусков, а разрез «по запускам» строится именно по подписи. Пусто — подпись собирается из даты запуска, имени рассылки и меток, так что запуски всё равно остаются различимыми. */
|
|
19270
20631
|
cohortLabel?: string;
|
|
@@ -19281,6 +20642,10 @@ export interface components {
|
|
|
19281
20642
|
/** @description Он же выбирает текст, если у рассылки есть посегментные тексты. */
|
|
19282
20643
|
segment?: string;
|
|
19283
20644
|
productCode?: string;
|
|
20645
|
+
/**
|
|
20646
|
+
* @description Воронка ШКОЛЫ в форме «f11 — ДБО / NR / ВК / In Stream» — код fNN обязателен. ⚠️ Это НЕ когорта и НЕ подпись запуска: «reg-no-show», «post-web|дбо» сюда класть нельзя — тип отбора идёт в segment, продукт в productCode, подпись запуска в cohortLabel. Ось «Воронка» сравнивается по коду, поэтому значение без кода становится отдельной «воронкой» и засоряет фильтр аналитики.
|
|
20647
|
+
* @example f11 — ДБО / NR / ВК / In Stream
|
|
20648
|
+
*/
|
|
19284
20649
|
funnel?: string;
|
|
19285
20650
|
/** @description Подпись запуска ЭТОГО блока. У пакета каждый сегмент — отдельный запуск со своей задачей и когортой, поэтому подпись задаётся посегментно; общая на пакет схлопнула бы их в отчёте в одну корзину. */
|
|
19286
20651
|
cohortLabel?: string;
|
|
@@ -19301,12 +20666,27 @@ export interface components {
|
|
|
19301
20666
|
channels?: components["schemas"]["GetCourseTransport"][];
|
|
19302
20667
|
/** @deprecated */
|
|
19303
20668
|
channelsMode?: components["schemas"]["ColdWelcomeChannelsMode"];
|
|
20669
|
+
/** @description Перекрытие предохранителей на ЭТОТ пакет (аварийный обход). Ключ не передан — берётся настройка площадки. Снимок кладётся в строку durable-плана, поэтому resume после рестарта едет с тем же решением. */
|
|
20670
|
+
guards?: components["schemas"]["OutboundGuardModes"];
|
|
19304
20671
|
};
|
|
20672
|
+
/** @description Предохранители холодных отправок. Не писать, пока идёт вебинарная серия человека, пока с ним работает менеджер по действующей заявке и если он уже оплатил ЭТОТ продукт. Пропуск ключа = не трогать; null = «не настраивали» (действует дефолт: activeSeries BLOCK, остальные WARN). Подробности — docs/features/outbound-guards.md. */
|
|
20673
|
+
OutboundGuardModes: {
|
|
20674
|
+
activeSeries?: components["schemas"]["OutboundGuardMode"];
|
|
20675
|
+
activeApplication?: components["schemas"]["OutboundGuardMode"];
|
|
20676
|
+
paid?: components["schemas"]["OutboundGuardMode"];
|
|
20677
|
+
};
|
|
20678
|
+
/**
|
|
20679
|
+
* @description OFF — правило не работает; WARN — причина пишется в аудит, отправка идёт; BLOCK — отправка останавливается.
|
|
20680
|
+
* @enum {string|null}
|
|
20681
|
+
*/
|
|
20682
|
+
OutboundGuardMode: "OFF" | "WARN" | "BLOCK" | null;
|
|
19305
20683
|
GetCourseColdWelcomeBatchResponse: {
|
|
19306
20684
|
/** Format: uuid */
|
|
19307
20685
|
batchId: string;
|
|
19308
20686
|
/** @description Сколько сегментов поставлено в очередь */
|
|
19309
20687
|
segments: number;
|
|
20688
|
+
/** @description Строк файла БЕЗ момента входа в сегмент (segment_entered_at). Такой контакт не попадёт ни в один период оси «вход в сегмент» на «Аналитике коммуникации» — он невидим ровно там, где спрашивают «сколько людей пришло за месяц». Предупреждение, а не запрет: у аудитории, заданной границей даты или файлом без события, момента входа нет вовсе. Считается по СЫРЫМ строкам запроса, чтобы число сходилось с файлом. */
|
|
20689
|
+
rowsWithoutSegmentEntry?: number;
|
|
19310
20690
|
};
|
|
19311
20691
|
GetCourseColdWelcomeBatchSegmentStatus: {
|
|
19312
20692
|
position: number;
|
|
@@ -19389,6 +20769,10 @@ export interface components {
|
|
|
19389
20769
|
outcomes?: {
|
|
19390
20770
|
[key: string]: number;
|
|
19391
20771
|
} | null;
|
|
20772
|
+
/** @description Сколько контактов каждого исхода разбирается ПОИМЁННО — по построчному следу отсева. Ключи те же, что в outcomes, но только у неотправленных: у SENT след это строка реестра получателей. Числа исходов остаются в outcomes (агрегат полон за всю историю), а след начинается с 02.09.2026, поэтому у прежних запусков здесь пусто — витрина по этому полю решает, открывать ли список. Null у волны и у прогона расписания: у них свои носители. */
|
|
20773
|
+
tracedOutcomes?: {
|
|
20774
|
+
[key: string]: number;
|
|
20775
|
+
} | null;
|
|
19392
20776
|
/** @description Сколько отправок ушло ВСЛЕПУЮ: канал взят резервным транспортом площадки, а не доказан привязками контакта или его ответом. Это ПОДМНОЖЕСТВО sentCount, а не отдельный исход — сообщение ушло. Без него «доставлено в мессенджер» и «упало в личный кабинет сайта» в истории неразличимы. null — у волн (отправляет процесс школы) и у запусков до появления счётчика; это НЕ то же, что 0. */
|
|
19393
20777
|
sentWithoutChannelEvidence?: number | null;
|
|
19394
20778
|
/** Format: date-time */
|
|
@@ -19471,6 +20855,10 @@ export interface components {
|
|
|
19471
20855
|
*/
|
|
19472
20856
|
launchType: "status";
|
|
19473
20857
|
channels: components["schemas"]["GetCourseTransport"][];
|
|
20858
|
+
/**
|
|
20859
|
+
* @description Воронка ШКОЛЫ в форме «f11 — ДБО / NR / ВК / In Stream» — код fNN обязателен. ⚠️ Это НЕ когорта и НЕ подпись запуска: «reg-no-show», «post-web|дбо» сюда класть нельзя — тип отбора идёт в segment, продукт в productCode, подпись запуска в cohortLabel. Ось «Воронка» сравнивается по коду, поэтому значение без кода становится отдельной «воронкой» и засоряет фильтр аналитики.
|
|
20860
|
+
* @example f11 — ДБО / NR / ВК / In Stream
|
|
20861
|
+
*/
|
|
19474
20862
|
funnel?: string;
|
|
19475
20863
|
segment?: string;
|
|
19476
20864
|
/** @description Явное бизнес-правило отбора; требует segment. */
|
|
@@ -19582,6 +20970,32 @@ export interface components {
|
|
|
19582
20970
|
} & {
|
|
19583
20971
|
[key: string]: unknown;
|
|
19584
20972
|
};
|
|
20973
|
+
TriggerActionCatalogItem: {
|
|
20974
|
+
actionType: string;
|
|
20975
|
+
title: string;
|
|
20976
|
+
configInputKey: string | null;
|
|
20977
|
+
responseRelation: string | null;
|
|
20978
|
+
configRequired: boolean;
|
|
20979
|
+
/** @enum {string} */
|
|
20980
|
+
requiredScope: "mcp:platform-setup";
|
|
20981
|
+
requiredRelations: string[];
|
|
20982
|
+
effect: string;
|
|
20983
|
+
verification: string;
|
|
20984
|
+
actionSchema: {
|
|
20985
|
+
[key: string]: unknown;
|
|
20986
|
+
};
|
|
20987
|
+
minimalExample: {
|
|
20988
|
+
[key: string]: unknown;
|
|
20989
|
+
};
|
|
20990
|
+
};
|
|
20991
|
+
TriggerActionCatalogResponse: {
|
|
20992
|
+
/** @enum {string} */
|
|
20993
|
+
source: "CreateTriggerActionDto+TRIGGER_ACTION_CONFIG";
|
|
20994
|
+
/** @enum {boolean} */
|
|
20995
|
+
complete: true;
|
|
20996
|
+
total: number;
|
|
20997
|
+
items: components["schemas"]["TriggerActionCatalogItem"][];
|
|
20998
|
+
};
|
|
19585
20999
|
ConfirmableSetupMutation: {
|
|
19586
21000
|
explicitConfirmation?: boolean;
|
|
19587
21001
|
confirmationReason?: string;
|
|
@@ -19977,6 +21391,14 @@ export interface components {
|
|
|
19977
21391
|
comparableSent: number;
|
|
19978
21392
|
/** @description Ответили в пределах равного горизонта */
|
|
19979
21393
|
horizonReplied: number;
|
|
21394
|
+
/**
|
|
21395
|
+
* @description Отреагировали ХОТЬ КАК-ТО в том же горизонте: ответили ИЛИ перешли по ссылке
|
|
21396
|
+
* этого касания. Всегда >= horizonReplied, разность — те, кто НЕ ответил, но кликнул.
|
|
21397
|
+
* ⚠️ Складывать horizonReplied и linkClicked вместо этого нельзя: ответивший часто
|
|
21398
|
+
* ещё и кликает, и сумма задваивала бы его. Знаменатель тот же (comparableSent),
|
|
21399
|
+
* включая касания без ссылки: это доля отреагировавших на касание, а не CTR ссылки.
|
|
21400
|
+
*/
|
|
21401
|
+
horizonEngaged: number;
|
|
19980
21402
|
/** @description Прервано чужим касанием до конца горизонта */
|
|
19981
21403
|
censored: number;
|
|
19982
21404
|
/** @description Доля вырезанных от СОЗРЕВШЕГО пула (comparableSent + censored) */
|
|
@@ -20172,6 +21594,34 @@ export interface components {
|
|
|
20172
21594
|
} | null;
|
|
20173
21595
|
replyToStoryMentions?: boolean;
|
|
20174
21596
|
};
|
|
21597
|
+
funnelAnalytics?: {
|
|
21598
|
+
/** @description Тройка стадий «отправлено → одобрено | отклонено» (у Aslzar — скоринг рассрочки). null — сбросить ворота: блок перестаёт рисоваться. */
|
|
21599
|
+
decisionGate?: {
|
|
21600
|
+
submitted: {
|
|
21601
|
+
pipelineCrmId: string;
|
|
21602
|
+
pipelineId: number;
|
|
21603
|
+
statusId: number;
|
|
21604
|
+
};
|
|
21605
|
+
approved: {
|
|
21606
|
+
pipelineCrmId: string;
|
|
21607
|
+
pipelineId: number;
|
|
21608
|
+
statusId: number;
|
|
21609
|
+
};
|
|
21610
|
+
rejected: {
|
|
21611
|
+
pipelineCrmId: string;
|
|
21612
|
+
pipelineId: number;
|
|
21613
|
+
statusId: number;
|
|
21614
|
+
};
|
|
21615
|
+
} | null;
|
|
21616
|
+
/** @description Целевая стадия карточки «Путь до стадии». null — сбросить выбор. */
|
|
21617
|
+
pathTargetStage?: {
|
|
21618
|
+
pipelineCrmId: string;
|
|
21619
|
+
pipelineId: number;
|
|
21620
|
+
statusId: number;
|
|
21621
|
+
} | null;
|
|
21622
|
+
engagedInboundCount?: number | null;
|
|
21623
|
+
stuckThresholdHours?: number | null;
|
|
21624
|
+
};
|
|
20175
21625
|
/** @description Closes Phase B gap для name/offMessage/timezone/isActive. Any channel type. */
|
|
20176
21626
|
generalSettings?: {
|
|
20177
21627
|
name?: string | null;
|
|
@@ -20226,6 +21676,11 @@ export interface components {
|
|
|
20226
21676
|
channels?: components["schemas"]["GetCourseWaveFieldBinding"];
|
|
20227
21677
|
} | null;
|
|
20228
21678
|
deliveryCheckEnabled?: boolean;
|
|
21679
|
+
guardActiveSeries?: components["schemas"]["OutboundGuardMode"];
|
|
21680
|
+
guardActiveApplication?: components["schemas"]["OutboundGuardMode"];
|
|
21681
|
+
guardPaid?: components["schemas"]["OutboundGuardMode"];
|
|
21682
|
+
/** @description Quiet period in days after ANY touch OF OURS (a send or a calendar-chain follow-up step). Counted PER PERSON across the workspace; a school wave does NOT count as a touch (measured: the wide perimeter would have blocked 15.3% of our sends). null = not configured, effective value 0 (rule disabled); the owner recommends 7. Schedules are NOT judged by this number — they have their own cooldownDays. */
|
|
21683
|
+
quietDays?: number | null;
|
|
20229
21684
|
/** @description Transport → exact deal custom field NAME (read API returns no field ids). Clear with {}. */
|
|
20230
21685
|
deliveryFieldMap?: {
|
|
20231
21686
|
[key: string]: string;
|
|
@@ -20411,6 +21866,50 @@ export interface components {
|
|
|
20411
21866
|
suggestedNextPhase: "1" | "2" | "3" | "4" | "5" | "6" | null;
|
|
20412
21867
|
};
|
|
20413
21868
|
};
|
|
21869
|
+
WorkspaceNavigationRequest: {
|
|
21870
|
+
/** @enum {string} */
|
|
21871
|
+
intent: "CREATE_BOT" | "IMPROVE_AGENT" | "DIAGNOSE_CONTACT" | "AUDIT_DIALOGUES" | "CAMPAIGN_REPORT" | "CONNECT_CRM" | "CONNECT_DATASOURCE" | "CONFIGURE_FOLLOWUP" | "CONTINUE_TASK" | "FREEFORM";
|
|
21872
|
+
/** @enum {string} */
|
|
21873
|
+
botType?: "FAQ" | "SALES" | "BOOKING" | "OUTBOUND" | "SUPPORT" | "UNKNOWN";
|
|
21874
|
+
/** Format: uuid */
|
|
21875
|
+
platformId?: string;
|
|
21876
|
+
/** Format: uuid */
|
|
21877
|
+
agentId?: string;
|
|
21878
|
+
/** Format: uuid */
|
|
21879
|
+
contactId?: string;
|
|
21880
|
+
/** Format: uuid */
|
|
21881
|
+
taskId?: string;
|
|
21882
|
+
question?: string;
|
|
21883
|
+
};
|
|
21884
|
+
WorkspaceNavigationResponse: {
|
|
21885
|
+
objective: string;
|
|
21886
|
+
intent: components["schemas"]["WorkspaceNavigationRequest"]["intent"];
|
|
21887
|
+
/** @enum {string|null} */
|
|
21888
|
+
botType: "FAQ" | "SALES" | "BOOKING" | "OUTBOUND" | "SUPPORT" | "UNKNOWN" | null;
|
|
21889
|
+
selectedObjects: {
|
|
21890
|
+
type: string;
|
|
21891
|
+
id: string;
|
|
21892
|
+
label: string | null;
|
|
21893
|
+
}[];
|
|
21894
|
+
completed: string[];
|
|
21895
|
+
missing: string[];
|
|
21896
|
+
requiredUserInput: {
|
|
21897
|
+
field: string;
|
|
21898
|
+
reason: string;
|
|
21899
|
+
options?: string[];
|
|
21900
|
+
}[];
|
|
21901
|
+
next: {
|
|
21902
|
+
tool: string;
|
|
21903
|
+
arguments: {
|
|
21904
|
+
[key: string]: unknown;
|
|
21905
|
+
};
|
|
21906
|
+
reason: string;
|
|
21907
|
+
verifyWith: string;
|
|
21908
|
+
} | null;
|
|
21909
|
+
finishCondition: string;
|
|
21910
|
+
/** @enum {string} */
|
|
21911
|
+
evidenceSource: "live_workspace_overview";
|
|
21912
|
+
};
|
|
20414
21913
|
CreateSetupSessionRequest: {
|
|
20415
21914
|
/** Format: uuid */
|
|
20416
21915
|
workspaceId: string;
|
|
@@ -20809,6 +22308,8 @@ export interface components {
|
|
|
20809
22308
|
writtenAt?: string;
|
|
20810
22309
|
};
|
|
20811
22310
|
StartSandboxRunRequest: {
|
|
22311
|
+
/** @description Неактивированный системный промпт для изолированной проверки. Допустим только при options.mode=single_agent, действует лишь внутри sandbox run и не меняет production AgentChat или PromptVersion. */
|
|
22312
|
+
candidatePrompt?: string;
|
|
20812
22313
|
/** @description Test scenarios to run (default — all linked to agent's ICP) */
|
|
20813
22314
|
scenarioIds?: string[];
|
|
20814
22315
|
options?: {
|
|
@@ -20925,6 +22426,20 @@ export interface components {
|
|
|
20925
22426
|
pipelineTransitionsLog?: Record<string, never>[];
|
|
20926
22427
|
toolCallLog?: Record<string, never>[];
|
|
20927
22428
|
ragTestResults?: Record<string, never>[];
|
|
22429
|
+
/** @description Рубрика прогона: `TestScenario.situations` сценариев этого прогона, как их написал автор. Строки role=agent — ОЖИДАЕМОЕ поведение агента; рантайм их не исполняет (`extractTurns` берёт только role=client/user), и `passRate` их не измеряет — он считает лишь долю turn-ов с непустым ответом. Заполняется только на findings-instructions (`/sandbox/runs/{runId}/findings/instructions`); `GET /sandbox-runs/{runId}` поле не отдаёт. Отсутствие поля = «рубрика не читалась», пустой `situations` = «у сценария нет реплик». Сценария, удалённого после прогона, здесь нет вовсе — хотя в `perScenarioMetrics` он остаётся. */
|
|
22430
|
+
scenarioExpectations?: {
|
|
22431
|
+
/** Format: uuid */
|
|
22432
|
+
scenarioId: string;
|
|
22433
|
+
scenarioName?: string;
|
|
22434
|
+
/** @description Что именно проверяет сценарий — часть рубрики, а не подпись. */
|
|
22435
|
+
description?: string | null;
|
|
22436
|
+
/** @description Реплики в исходном порядке (role=client — вход, role=agent — ожидание). Порядок и есть привязка ожидания к turn-у: индекс транскрипта смещается при OUTBOUND-seeding, поэтому готового номера turn-а здесь нет намеренно. */
|
|
22437
|
+
situations: {
|
|
22438
|
+
/** @enum {string} */
|
|
22439
|
+
role?: "client" | "agent";
|
|
22440
|
+
text?: string;
|
|
22441
|
+
}[];
|
|
22442
|
+
}[];
|
|
20928
22443
|
};
|
|
20929
22444
|
/** @description A single router decision recorded for one turn of a sandbox run. */
|
|
20930
22445
|
SandboxRoutingLogEntry: {
|
|
@@ -21459,8 +22974,65 @@ export interface components {
|
|
|
21459
22974
|
PatchDraftOperationsRequest: {
|
|
21460
22975
|
operations: components["schemas"]["PromptPatchOperation"][];
|
|
21461
22976
|
};
|
|
22977
|
+
/**
|
|
22978
|
+
* @description Черновик БЕЗ `currentContent` и без истории `operations[]`.
|
|
22979
|
+
*
|
|
22980
|
+
* Полный текст отдают `POST /prompt/drafts` (первое чтение промпта) и
|
|
22981
|
+
* `GET /prompt/drafts/{draftId}` (перечитать по требованию). Эхо текста в ответе
|
|
22982
|
+
* КАЖДОГО `_apply`/`_commit` — накладные расходы: клиент уже прочитал промпт на
|
|
22983
|
+
* старте, а история операций повторяет то, что он сам же и отправил.
|
|
22984
|
+
*/
|
|
22985
|
+
PromptDraftMeta: {
|
|
22986
|
+
/** Format: uuid */
|
|
22987
|
+
id: string;
|
|
22988
|
+
/** Format: uuid */
|
|
22989
|
+
agentId: string;
|
|
22990
|
+
status: components["schemas"]["PromptDraftStatus"];
|
|
22991
|
+
/** Format: uuid */
|
|
22992
|
+
baseVersionId: string;
|
|
22993
|
+
baseContentHash: string;
|
|
22994
|
+
/** Format: uuid */
|
|
22995
|
+
committedVersionId?: string | null;
|
|
22996
|
+
/**
|
|
22997
|
+
* @description Длина `currentContent`. Сверяется с остатком `GET /prompt/headroom`
|
|
22998
|
+
* без чтения самого текста.
|
|
22999
|
+
*/
|
|
23000
|
+
characters: number;
|
|
23001
|
+
/** @description Сколько patch-операций накоплено черновиком за всю жизнь. */
|
|
23002
|
+
operationsCount: number;
|
|
23003
|
+
/** Format: date-time */
|
|
23004
|
+
expiresAt: string;
|
|
23005
|
+
/** Format: date-time */
|
|
23006
|
+
updatedAt: string;
|
|
23007
|
+
};
|
|
23008
|
+
/** @description Построчная разница состояния черновика ДО и ПОСЛЕ применённых операций. */
|
|
23009
|
+
PromptPatchDiff: {
|
|
23010
|
+
/**
|
|
23011
|
+
* @description Текст черновика реально изменился.
|
|
23012
|
+
*
|
|
23013
|
+
* Отдельный признак обязателен: `removedLines`/`addedLines` — multiset-разность
|
|
23014
|
+
* строк, и `move_text_after_text` (как и правка одних пробелов) даёт ПУСТОЙ дифф
|
|
23015
|
+
* при изменившемся тексте. Без этого поля пустые списки читались бы как
|
|
23016
|
+
* «ничего не применилось».
|
|
23017
|
+
*/
|
|
23018
|
+
contentChanged: boolean;
|
|
23019
|
+
/**
|
|
23020
|
+
* @description Насколько вырос (отрицательное — сжался) черновик, в символах.
|
|
23021
|
+
* Абсолютная длина — `draft.characters`, чтобы одно число не жило в двух полях.
|
|
23022
|
+
*/
|
|
23023
|
+
charactersDelta: number;
|
|
23024
|
+
/** @description Строки, исчезнувшие из черновика. */
|
|
23025
|
+
removedLines: components["schemas"]["PromptDiffLine"][];
|
|
23026
|
+
/** @description Строки, появившиеся в черновике. */
|
|
23027
|
+
addedLines: components["schemas"]["PromptDiffLine"][];
|
|
23028
|
+
/**
|
|
23029
|
+
* @description Списки обрезаны по потолку строк на сторону (`PROMPT_PATCH_DIFF_MAX_LINES`).
|
|
23030
|
+
* Полный текст читать через `GET /prompt/drafts/{draftId}`.
|
|
23031
|
+
*/
|
|
23032
|
+
truncated: boolean;
|
|
23033
|
+
};
|
|
21462
23034
|
PromptDraftPatchResponse: {
|
|
21463
|
-
draft: components["schemas"]["
|
|
23035
|
+
draft: components["schemas"]["PromptDraftMeta"];
|
|
21464
23036
|
/** @description Сколько ops успешно применились */
|
|
21465
23037
|
appliedCount: number;
|
|
21466
23038
|
/**
|
|
@@ -21468,15 +23040,23 @@ export interface components {
|
|
|
21468
23040
|
* Клиент должен показать warning если > 0.
|
|
21469
23041
|
*/
|
|
21470
23042
|
skippedCount: number;
|
|
23043
|
+
diff: components["schemas"]["PromptPatchDiff"];
|
|
21471
23044
|
};
|
|
21472
23045
|
PromptDraftCommitResponse: {
|
|
21473
|
-
draft: components["schemas"]["
|
|
23046
|
+
draft: components["schemas"]["PromptDraftMeta"];
|
|
23047
|
+
/**
|
|
23048
|
+
* @description Только адресация новой версии. `content` намеренно НЕ отдаётся: это была бы
|
|
23049
|
+
* вторая копия текста, который клиент сам и собрал.
|
|
23050
|
+
*/
|
|
21474
23051
|
newVersion: {
|
|
21475
23052
|
/** Format: uuid */
|
|
21476
23053
|
id: string;
|
|
21477
|
-
/**
|
|
21478
|
-
|
|
21479
|
-
|
|
23054
|
+
/**
|
|
23055
|
+
* @description `null` — идемпотентный повтор commit'а (draft уже был COMMITTED): номер версии
|
|
23056
|
+
* на этом пути неизвестен, черновик его не несёт. Внутренний сентинел `-1` наружу
|
|
23057
|
+
* НЕ выпускается: в JSON он неотличим от настоящего номера версии.
|
|
23058
|
+
*/
|
|
23059
|
+
version: number | null;
|
|
21480
23060
|
};
|
|
21481
23061
|
};
|
|
21482
23062
|
/** @enum {string} */
|
|
@@ -21530,15 +23110,21 @@ export interface components {
|
|
|
21530
23110
|
callbackUrl?: string;
|
|
21531
23111
|
sourceChannel?: string;
|
|
21532
23112
|
};
|
|
21533
|
-
|
|
23113
|
+
IssuedCredentialReveal: {
|
|
23114
|
+
/** @description Одноразовая ссылка для вошедшего человека */
|
|
23115
|
+
revealUrl: string;
|
|
23116
|
+
/** Format: date-time */
|
|
23117
|
+
revealExpiresAt: string;
|
|
23118
|
+
};
|
|
23119
|
+
ExternalApiChannelCreated: {
|
|
21534
23120
|
/** Format: uuid */
|
|
21535
23121
|
channelId: string;
|
|
21536
|
-
/** @description Bearer-ключ партнёра для входящих (показывается ОДИН раз) */
|
|
21537
|
-
apiKey: string;
|
|
21538
|
-
/** @description Секрет HMAC-подписи колбэков (показывается ОДИН раз) */
|
|
21539
|
-
webhookSecret: string;
|
|
21540
23122
|
/** @description Путь приёма входящих: /api/v2/channels/{channelId}/messages */
|
|
21541
23123
|
ingestPath: string;
|
|
23124
|
+
/** @description Одноразовая ссылка для вошедшего человека */
|
|
23125
|
+
revealUrl: string;
|
|
23126
|
+
/** Format: date-time */
|
|
23127
|
+
revealExpiresAt: string;
|
|
21542
23128
|
};
|
|
21543
23129
|
/** @enum {string} */
|
|
21544
23130
|
CallDirection: "Inbound" | "Outbound";
|
|
@@ -21762,9 +23348,11 @@ export interface components {
|
|
|
21762
23348
|
[key: string]: unknown;
|
|
21763
23349
|
} | null;
|
|
21764
23350
|
/** @enum {string|null} */
|
|
21765
|
-
llmProvider?: "openai" | "yandex-gpt" | "deepseek" | "xai" | "zai" | "moonshot" | "alibaba" | "anthropic" | "cerebras" | null;
|
|
23351
|
+
llmProvider?: "openai" | "yandex-gpt" | "deepseek" | "groq" | "openrouter" | "xai" | "zai" | "moonshot" | "alibaba" | "anthropic" | "cerebras" | null;
|
|
21766
23352
|
llmModel?: string | null;
|
|
21767
23353
|
/** @enum {string|null} */
|
|
23354
|
+
llmReasoningEffort?: "none" | "low" | "medium" | "high" | null;
|
|
23355
|
+
/** @enum {string|null} */
|
|
21768
23356
|
realtimeProvider?: "openai" | "yandex" | "google" | "phonic" | "xai" | null;
|
|
21769
23357
|
realtimeModel?: string | null;
|
|
21770
23358
|
realtimeVoice?: string | null;
|
|
@@ -21785,10 +23373,8 @@ export interface components {
|
|
|
21785
23373
|
fillerStatus?: string | null;
|
|
21786
23374
|
vadProvider?: string | null;
|
|
21787
23375
|
turnDetector?: string | null;
|
|
21788
|
-
/** @description
|
|
21789
|
-
turnTakingConfig?:
|
|
21790
|
-
[key: string]: unknown;
|
|
21791
|
-
} | null;
|
|
23376
|
+
/** @description Typed ручки turn-taking/barge-in (A2) */
|
|
23377
|
+
turnTakingConfig?: components["schemas"]["VoiceProfileTurnTakingConfig"] | null;
|
|
21792
23378
|
sentimentAnalysisEnabled: boolean;
|
|
21793
23379
|
ttsFailoverEnabled: boolean;
|
|
21794
23380
|
recordingCopyEnabled: boolean;
|
|
@@ -22363,6 +23949,11 @@ export interface components {
|
|
|
22363
23949
|
/** @description Ручки turn-taking/barge-in (A2): typed-схема входа (незнакомые ключи отвергаются, диапазоны зеркалят клампы воркера). Время — мс. */
|
|
22364
23950
|
VoiceProfileTurnTakingConfig: {
|
|
22365
23951
|
allowInterruptions?: boolean;
|
|
23952
|
+
/**
|
|
23953
|
+
* @description CASCADE: adaptive требует STT с aligned transcript и LiveKit Cloud/dev runtime; внешний production worker использует VAD. REALTIME использует нативный turn detection
|
|
23954
|
+
* @enum {string}
|
|
23955
|
+
*/
|
|
23956
|
+
interruptionMode?: "vad" | "adaptive";
|
|
22366
23957
|
minInterruptionDuration?: number;
|
|
22367
23958
|
minInterruptionWords?: number;
|
|
22368
23959
|
minEndpointingDelay?: number;
|
|
@@ -22411,8 +24002,10 @@ export interface components {
|
|
|
22411
24002
|
ttsPronunciationCaseSensitive?: boolean;
|
|
22412
24003
|
ttsProviderSettings?: components["schemas"]["VoiceProfileTtsProviderSettings"];
|
|
22413
24004
|
/** @enum {string} */
|
|
22414
|
-
llmProvider?: "openai" | "yandex-gpt" | "deepseek" | "xai" | "zai" | "moonshot" | "alibaba" | "anthropic" | "cerebras";
|
|
24005
|
+
llmProvider?: "openai" | "yandex-gpt" | "deepseek" | "groq" | "openrouter" | "xai" | "zai" | "moonshot" | "alibaba" | "anthropic" | "cerebras";
|
|
22415
24006
|
llmModel?: string;
|
|
24007
|
+
/** @enum {string|null} */
|
|
24008
|
+
llmReasoningEffort?: "none" | "low" | "medium" | "high" | null;
|
|
22416
24009
|
/** @enum {string} */
|
|
22417
24010
|
realtimeProvider?: "openai" | "yandex" | "google" | "phonic" | "xai";
|
|
22418
24011
|
realtimeModel?: string;
|
|
@@ -22500,9 +24093,11 @@ export interface components {
|
|
|
22500
24093
|
[key: string]: unknown;
|
|
22501
24094
|
} | null;
|
|
22502
24095
|
/** @enum {string|null} */
|
|
22503
|
-
llmProvider?: "openai" | "yandex-gpt" | "deepseek" | "xai" | "zai" | "moonshot" | "alibaba" | "anthropic" | "cerebras" | null;
|
|
24096
|
+
llmProvider?: "openai" | "yandex-gpt" | "deepseek" | "groq" | "openrouter" | "xai" | "zai" | "moonshot" | "alibaba" | "anthropic" | "cerebras" | null;
|
|
22504
24097
|
llmModel?: string | null;
|
|
22505
24098
|
/** @enum {string|null} */
|
|
24099
|
+
llmReasoningEffort?: "none" | "low" | "medium" | "high" | null;
|
|
24100
|
+
/** @enum {string|null} */
|
|
22506
24101
|
realtimeProvider?: "openai" | "yandex" | "google" | "phonic" | "xai" | null;
|
|
22507
24102
|
realtimeModel?: string | null;
|
|
22508
24103
|
realtimeVoice?: string | null;
|
|
@@ -22524,10 +24119,8 @@ export interface components {
|
|
|
22524
24119
|
telephonyFilterEnabled: boolean;
|
|
22525
24120
|
vadProvider?: string | null;
|
|
22526
24121
|
turnDetector?: string | null;
|
|
22527
|
-
/** @description
|
|
22528
|
-
turnTakingConfig?:
|
|
22529
|
-
[key: string]: unknown;
|
|
22530
|
-
} | null;
|
|
24122
|
+
/** @description Typed ручки turn-taking/barge-in (A2) */
|
|
24123
|
+
turnTakingConfig?: components["schemas"]["VoiceProfileTurnTakingConfig"] | null;
|
|
22531
24124
|
/** @description Сентимент-анализ user-реплик (A1) */
|
|
22532
24125
|
sentimentAnalysisEnabled: boolean;
|
|
22533
24126
|
/** @description false (дефолт) — отказ TTS завершает звонок, голос не подменяется */
|
|
@@ -22681,6 +24274,8 @@ export interface components {
|
|
|
22681
24274
|
/** Format: uuid */
|
|
22682
24275
|
platformId?: string;
|
|
22683
24276
|
inputTokens?: number;
|
|
24277
|
+
/** @description Часть inputTokens, прочитанная из provider prompt cache */
|
|
24278
|
+
cacheReadTokens?: number;
|
|
22684
24279
|
outputTokens?: number;
|
|
22685
24280
|
totalTokens?: number;
|
|
22686
24281
|
inputAudioSeconds?: number;
|
|
@@ -22964,6 +24559,23 @@ export interface components {
|
|
|
22964
24559
|
checkerEnabled?: boolean;
|
|
22965
24560
|
errorReasons?: string[];
|
|
22966
24561
|
};
|
|
24562
|
+
GetCourseContactImportStatusResponse: {
|
|
24563
|
+
/** Format: uuid */
|
|
24564
|
+
id: string;
|
|
24565
|
+
/** Format: uuid */
|
|
24566
|
+
workspaceId: string;
|
|
24567
|
+
/** @enum {string} */
|
|
24568
|
+
status: "RUNNING" | "COMPLETED" | "PARTIAL" | "FAILED";
|
|
24569
|
+
totalRows: number;
|
|
24570
|
+
processedRows: number;
|
|
24571
|
+
successCount: number;
|
|
24572
|
+
failedCount: number;
|
|
24573
|
+
errorReasons: string[];
|
|
24574
|
+
/** Format: date-time */
|
|
24575
|
+
createdAt: string;
|
|
24576
|
+
/** Format: date-time */
|
|
24577
|
+
completedAt: string | null;
|
|
24578
|
+
};
|
|
22967
24579
|
ContactExportRequest: {
|
|
22968
24580
|
/** Format: uuid */
|
|
22969
24581
|
workspaceId?: string;
|
|
@@ -23062,7 +24674,7 @@ export interface components {
|
|
|
23062
24674
|
isBotActive?: boolean;
|
|
23063
24675
|
isFollowUpActive?: boolean;
|
|
23064
24676
|
/** @enum {string|null} */
|
|
23065
|
-
lastWorkLogEvent?: "START" | "IN_PROCESS" | "FINISH_WIN" | "FINISH_LOST" | "FAILED" | "OPERATOR_TAKEOVER" | "FINISH_AUTO" | null;
|
|
24677
|
+
lastWorkLogEvent?: "START" | "IN_PROCESS" | "FINISH_WIN" | "FINISH_LOST" | "FAILED" | "OPERATOR_TAKEOVER" | "FINISH_AUTO" | "FINISH_RESOLVED" | null;
|
|
23066
24678
|
/**
|
|
23067
24679
|
* Format: date-time
|
|
23068
24680
|
* @description Время последней отправки волны/рассылки этому контакту (BroadcastRecipient.receivedAt). Опорная точка атрибуции: от неё считается «сколько прошло до ответа клиента и до оплаты». null — контакт в волны не попадал.
|
|
@@ -23209,6 +24821,8 @@ export interface components {
|
|
|
23209
24821
|
defaultPlatformId: string | null;
|
|
23210
24822
|
defaultChannels: string[];
|
|
23211
24823
|
defaultDealFields: Record<string, never> | null;
|
|
24824
|
+
/** @description Quiet-period override for this mailing, in days. 0 means "this text may be sent inside the quiet period" — that IS the permission. null means the mailing does not override; the platform setting applies, then the workspace one, then 0. */
|
|
24825
|
+
quietDaysOverride: number | null;
|
|
23212
24826
|
};
|
|
23213
24827
|
CreateBroadcastMailingVariantRequest: {
|
|
23214
24828
|
name: string;
|
|
@@ -23225,6 +24839,8 @@ export interface components {
|
|
|
23225
24839
|
defaultPlatformId?: string | null;
|
|
23226
24840
|
defaultChannels?: string[];
|
|
23227
24841
|
defaultDealFields?: Record<string, never> | null;
|
|
24842
|
+
/** @description Quiet-period override for this mailing, in days. 0 means "this text may be sent inside the quiet period" — that IS the permission. null means the mailing does not override; the platform setting applies, then the workspace one, then 0. */
|
|
24843
|
+
quietDaysOverride?: number | null;
|
|
23228
24844
|
};
|
|
23229
24845
|
UpdateBroadcastMailingVariantRequest: {
|
|
23230
24846
|
name?: string;
|
|
@@ -23242,6 +24858,8 @@ export interface components {
|
|
|
23242
24858
|
defaultPlatformId?: string | null;
|
|
23243
24859
|
defaultChannels?: string[];
|
|
23244
24860
|
defaultDealFields?: Record<string, never> | null;
|
|
24861
|
+
/** @description Quiet-period override for this mailing, in days. 0 means "this text may be sent inside the quiet period" — that IS the permission. null means the mailing does not override; the platform setting applies, then the workspace one, then 0. */
|
|
24862
|
+
quietDaysOverride?: number | null;
|
|
23245
24863
|
};
|
|
23246
24864
|
WorkspaceLinkDomain: {
|
|
23247
24865
|
/**
|
|
@@ -23352,6 +24970,18 @@ export interface components {
|
|
|
23352
24970
|
paid: number;
|
|
23353
24971
|
paidAmount: number;
|
|
23354
24972
|
};
|
|
24973
|
+
TrackedLinkReachBreakdown: {
|
|
24974
|
+
platformId: string | null;
|
|
24975
|
+
platformName: string | null;
|
|
24976
|
+
/** @description Площадка удалена. Отдельный признак, а не пустое имя: Platform.name nullable, и живая безымянная площадка существует. */
|
|
24977
|
+
platformDeleted: boolean;
|
|
24978
|
+
agentId: string | null;
|
|
24979
|
+
agentName: string | null;
|
|
24980
|
+
/** @description Агент удалён; выдачи и клики сохранены */
|
|
24981
|
+
agentDeleted: boolean;
|
|
24982
|
+
issued: number;
|
|
24983
|
+
clicked: number;
|
|
24984
|
+
};
|
|
23355
24985
|
TrackedLinkClickEvents: {
|
|
23356
24986
|
items: components["schemas"]["TrackedLinkClickEvent"][];
|
|
23357
24987
|
total: number;
|
|
@@ -23404,11 +25034,82 @@ export interface components {
|
|
|
23404
25034
|
data: components["schemas"]["BroadcastMetricRow"][];
|
|
23405
25035
|
/** @description Итоги без channel-unnest; использовать для общей цифры вместо суммы data по каналам. */
|
|
23406
25036
|
totals: components["schemas"]["BroadcastMetricRow"][];
|
|
25037
|
+
/** @description Разрез по площадкам за ВЕСЬ период (без дней). Считается третьим набором тех же GROUPING SETS, что и totals, поэтому сходится с ними по построению. Дней тут нет намеренно: sent/received client-distinct и по дням не аддитивны. Ручная историческая статистика не входит — площадки у неё нет. */
|
|
25038
|
+
platformTotals?: components["schemas"]["BroadcastPlatformTotal"][];
|
|
23407
25039
|
channels: string[];
|
|
23408
25040
|
funnels: string[];
|
|
23409
25041
|
segments: string[];
|
|
23410
25042
|
products: string[];
|
|
23411
25043
|
};
|
|
25044
|
+
BroadcastPlatformTotal: {
|
|
25045
|
+
/**
|
|
25046
|
+
* Format: uuid
|
|
25047
|
+
* @description ID площадки рассылки; null — у строки площадка не проставлена.
|
|
25048
|
+
*/
|
|
25049
|
+
platformId: string | null;
|
|
25050
|
+
/** @description Воронка волны. Разрез несёт её, потому что страница фильтрует воронки клиентски. */
|
|
25051
|
+
funnel: string | null;
|
|
25052
|
+
sent: number;
|
|
25053
|
+
received: number;
|
|
25054
|
+
enteredDialog: number;
|
|
25055
|
+
handedOff: number;
|
|
25056
|
+
paid: number;
|
|
25057
|
+
paidAmount: number;
|
|
25058
|
+
};
|
|
25059
|
+
BroadcastUniqueContacts: {
|
|
25060
|
+
/**
|
|
25061
|
+
* @description Уникальных контактов (DISTINCT chat_user_id) в периметре «Отправлено». НЕ аддитивно —
|
|
25062
|
+
* сумма по группам больше правды (замер 26.08.2026: по дням +43 %, по сегментам +27 %).
|
|
25063
|
+
*/
|
|
25064
|
+
uniqueContacts: number;
|
|
25065
|
+
/**
|
|
25066
|
+
* @description Только при view=entry. Сколько строк за тот же период было ОТПРАВЛЕНО и сколько из них
|
|
25067
|
+
* не имеет даты входа в сегмент — эти строки не попадают ни в один период режима.
|
|
25068
|
+
* Отсутствие поля означает «вопрос не задавался», а не «все даты известны».
|
|
25069
|
+
*/
|
|
25070
|
+
entryCoverage?: {
|
|
25071
|
+
sentRows: number;
|
|
25072
|
+
rowsWithoutEntry: number;
|
|
25073
|
+
};
|
|
25074
|
+
};
|
|
25075
|
+
BroadcastPerPersonMetrics: {
|
|
25076
|
+
/**
|
|
25077
|
+
* @description Уникальные контакты, которым отправляли.
|
|
25078
|
+
* @example 32737
|
|
25079
|
+
*/
|
|
25080
|
+
sent: number;
|
|
25081
|
+
/**
|
|
25082
|
+
* @description Уникальные контакты с засчитанной доставкой.
|
|
25083
|
+
* @example 29825
|
|
25084
|
+
*/
|
|
25085
|
+
received: number;
|
|
25086
|
+
/**
|
|
25087
|
+
* @description Уникальные контакты, вступившие в диалог.
|
|
25088
|
+
* @example 4430
|
|
25089
|
+
*/
|
|
25090
|
+
enteredDialog: number;
|
|
25091
|
+
/** @description Уникальные контакты с глубоким диалогом. */
|
|
25092
|
+
deepDialog: number;
|
|
25093
|
+
/** @description Уникальные контакты с выданной отслеживаемой ссылкой. */
|
|
25094
|
+
linkIssued: number;
|
|
25095
|
+
/** @description Уникальные контакты, кликнувшие по отслеживаемой ссылке. */
|
|
25096
|
+
clicked: number;
|
|
25097
|
+
/** @description Уникальные контакты, переданные менеджеру. */
|
|
25098
|
+
handedOff: number;
|
|
25099
|
+
/** @description Уникальные контакты с выставленным счётом. */
|
|
25100
|
+
issued: number;
|
|
25101
|
+
/**
|
|
25102
|
+
* @description Уникальные контакты с прямой оплатой.
|
|
25103
|
+
* @example 71
|
|
25104
|
+
*/
|
|
25105
|
+
paid: number;
|
|
25106
|
+
/** @description Уникальные контакты с оплатой, подтверждённой оператором. */
|
|
25107
|
+
confirmedByOperator: number;
|
|
25108
|
+
/** @description Уникальные контакты с косвенной оплатой. */
|
|
25109
|
+
indirect: number;
|
|
25110
|
+
/** @description Уникальные контакты с возможной оплатой, ожидающей решения. */
|
|
25111
|
+
potential: number;
|
|
25112
|
+
};
|
|
23412
25113
|
BroadcastSegmentCatalogItem: {
|
|
23413
25114
|
/** Format: uuid */
|
|
23414
25115
|
id: string;
|
|
@@ -23459,7 +25160,9 @@ export interface components {
|
|
|
23459
25160
|
indirect: number;
|
|
23460
25161
|
indirectAmount: number;
|
|
23461
25162
|
notSent: {
|
|
23462
|
-
|
|
25163
|
+
/** @description Всего не отправлено по этой волне. null — «не выяснено», а НЕ ноль: активен фильтр по измерению (воронка/сегмент/продукт), а снимок волны его не несёт — волна охватила несколько воронок. Отсев принадлежит ВОЛНЕ, у отсеянного своей воронки нет (он отсеян до отправки), поэтому какой воронке достался этот отсев — неизвестно. Ноль означал бы «никого не отсеяли», а полное число волны — цифру, за которой откроется пустой список. */
|
|
25164
|
+
total: number | null;
|
|
25165
|
+
/** @description Пусто, когда total = null. */
|
|
23463
25166
|
byReason: {
|
|
23464
25167
|
[key: string]: number;
|
|
23465
25168
|
};
|
|
@@ -23469,8 +25172,16 @@ export interface components {
|
|
|
23469
25172
|
items: components["schemas"]["BroadcastCohortRow"][];
|
|
23470
25173
|
};
|
|
23471
25174
|
BroadcastSkipReason: {
|
|
25175
|
+
/** @description Код причины из словаря СВОЕГО источника: у preflight это GetCourseWavePreflightReason, у наших отправок — ColdWelcomeOutcome и собственные исходы прогона. Словари не пересекаются, подпись ищется по source. */
|
|
23472
25176
|
reason: string;
|
|
25177
|
+
/**
|
|
25178
|
+
* @description Чем отсеян: preflight — проверка волны школы, ownSend — ручная холодная отправка, schedule — авторассылка.
|
|
25179
|
+
* @enum {string}
|
|
25180
|
+
*/
|
|
25181
|
+
source: "preflight" | "ownSend" | "schedule";
|
|
23473
25182
|
count: number;
|
|
25183
|
+
/** @description Сколько из count разбирается ПОИМЁННО. Есть только у ownSend: его число — агрегат задачи (полон за всю историю), а построчный след начинается с выкатки, поэтому у старых запусков он законно 0. Витрина открывает список только там, где значение больше нуля, и подписывает «поимённо N из M», когда след неполон. У preflight и schedule поля нет: у них само число и есть сумма построчных строк. */
|
|
25184
|
+
tracedCount?: number;
|
|
23474
25185
|
};
|
|
23475
25186
|
BroadcastSkipDayProduct: {
|
|
23476
25187
|
/** Format: date */
|
|
@@ -23483,6 +25194,8 @@ export interface components {
|
|
|
23483
25194
|
total: number;
|
|
23484
25195
|
failedDelivery: number;
|
|
23485
25196
|
byDayProduct: components["schemas"]["BroadcastSkipDayProduct"][];
|
|
25197
|
+
/** @description Отсев волн, который выбранный фильтр по измерению не относит ни к одному своему значению: волна охватила несколько воронок/сегментов/продуктов, и снимок оставил ось пустой. Отсев принадлежит ВОЛНЕ — у отсеянного контакта своей воронки нет, он отсеян до отправки и строки реестра не имеет. Показывать обязательно: у Ксаматы за август 2026 таких 7157 из 9674, то есть разрез по воронкам покрывает лишь четверть отсева. 0 — фильтра по измерению нет либо распределено всё. */
|
|
25198
|
+
unattributed: number;
|
|
23486
25199
|
};
|
|
23487
25200
|
BroadcastRecipientItem: {
|
|
23488
25201
|
/** Format: uuid */
|
|
@@ -23737,7 +25450,7 @@ export interface components {
|
|
|
23737
25450
|
/** @enum {string} */
|
|
23738
25451
|
PaymentCandidateStatus: "PENDING" | "CONFIRMED" | "CONFIRMED_INDIRECT" | "REJECTED";
|
|
23739
25452
|
/**
|
|
23740
|
-
* @description Корзина доказательности возможной оплаты — чем подтверждается участие агента в окне «отправка волны → оплата». DEEP_DIALOG: 3+ реплики клиента и
|
|
25453
|
+
* @description Корзина доказательности возможной оплаты — чем подтверждается участие агента в окне «отправка волны → оплата». DEEP_DIALOG: 3+ реплики клиента и минимум два доставленных ответа AI-агента именно на реплику клиента. SHORT_DIALOG: клиент писал и агент отвечал на реплику, но порог глубокого диалога не достигнут. NO_AGENT_REPLY: клиент писал, доставленного ответа AI-агента на его реплику не зафиксировано. SILENT: клиент не отвечал. UNKNOWN: сигналы ещё не посчитаны.
|
|
23741
25454
|
* @enum {string}
|
|
23742
25455
|
*/
|
|
23743
25456
|
PaymentEvidenceBucket: "DEEP_DIALOG" | "SHORT_DIALOG" | "NO_AGENT_REPLY" | "SILENT" | "UNKNOWN";
|
|
@@ -23949,6 +25662,7 @@ export interface components {
|
|
|
23949
25662
|
clientRepliedBeforePayment: boolean | null;
|
|
23950
25663
|
dialogueInboundCount: number | null;
|
|
23951
25664
|
dialogueAgentReplyCount: number | null;
|
|
25665
|
+
dialogueAgentResponsiveCount: number | null;
|
|
23952
25666
|
dialogueOperatorMessageCount: number | null;
|
|
23953
25667
|
dialogueOtherOutgoingCount: number | null;
|
|
23954
25668
|
evidenceBucket: components["schemas"]["PaymentEvidenceBucket"];
|
|
@@ -24182,6 +25896,24 @@ export interface components {
|
|
|
24182
25896
|
/** Format: date-time */
|
|
24183
25897
|
created_at: string;
|
|
24184
25898
|
};
|
|
25899
|
+
AmoCrmChannelRegistrationResponse: {
|
|
25900
|
+
/**
|
|
25901
|
+
* @description Адрес вебхука канала для этого воркспейса (пункт 2 письма)
|
|
25902
|
+
* @example https://core.besales.ai/api/webhook/amocrm/055a9626-548b-42bd-8132-afb17925f168
|
|
25903
|
+
*/
|
|
25904
|
+
webhookUrl: string;
|
|
25905
|
+
/** @description Текст письма в поддержку AmoCRM целиком, с местами под данные аккаунта */
|
|
25906
|
+
emailTemplate: string;
|
|
25907
|
+
/**
|
|
25908
|
+
* @description Места в письме, которые заполняет человек: их знает только владелец аккаунта. Отдаются списком, чтобы клиент предупредил о них явно, а не надеялся, что человек заметит угловые скобки.
|
|
25909
|
+
* @example [
|
|
25910
|
+
* "<номер учётной записи>",
|
|
25911
|
+
* "<картинку прикладываю>",
|
|
25912
|
+
* "<Id интеграции>"
|
|
25913
|
+
* ]
|
|
25914
|
+
*/
|
|
25915
|
+
placeholders: string[];
|
|
25916
|
+
};
|
|
24185
25917
|
CrmListResponse: {
|
|
24186
25918
|
crms: components["schemas"]["CrmListItem"][];
|
|
24187
25919
|
};
|
|
@@ -24440,13 +26172,14 @@ export interface components {
|
|
|
24440
26172
|
SandboxFinding: {
|
|
24441
26173
|
/** Format: uuid */
|
|
24442
26174
|
scenarioId?: string | null;
|
|
26175
|
+
turnIndex?: number;
|
|
24443
26176
|
/** @enum {string} */
|
|
24444
|
-
category: "hallucination" | "wrong_action" | "wrong_routing" | "
|
|
26177
|
+
category: "hallucination" | "wrong_action" | "wrong_routing" | "missed_context" | "rag_miss" | "bad_tone" | "off_topic" | "contradiction" | "other";
|
|
24445
26178
|
/** @enum {string} */
|
|
24446
26179
|
severity: "low" | "medium" | "critical";
|
|
24447
|
-
|
|
24448
|
-
|
|
24449
|
-
|
|
26180
|
+
description: string;
|
|
26181
|
+
evidence?: string;
|
|
26182
|
+
recommendation?: string;
|
|
24450
26183
|
};
|
|
24451
26184
|
/** @enum {string} */
|
|
24452
26185
|
SourceWorkbookKind: "XLSX_UPLOAD" | "GOOGLE_SHEETS";
|
|
@@ -24501,11 +26234,22 @@ export interface components {
|
|
|
24501
26234
|
/** @description Для Google Sheets — числовой gid */
|
|
24502
26235
|
sheetGid?: number;
|
|
24503
26236
|
sheetIndex: number;
|
|
24504
|
-
rowCount: number;
|
|
24505
|
-
columnCount: number;
|
|
26237
|
+
rowCount: number | null;
|
|
26238
|
+
columnCount: number | null;
|
|
26239
|
+
dimensionsKnown: boolean;
|
|
26240
|
+
/** @description Источник содержит строки за доступной parser-границей. */
|
|
26241
|
+
rowsTruncated?: boolean;
|
|
26242
|
+
/** @description Граница полного обхода Google grid; может включать пустые строки. */
|
|
26243
|
+
scanUpperBoundRowCount?: number;
|
|
26244
|
+
/** @description Граница полного обхода Google grid; может включать пустые колонки. */
|
|
26245
|
+
scanUpperBoundColumnCount?: number;
|
|
24506
26246
|
sampleRows: components["schemas"]["SheetCellMetadata"][][];
|
|
24507
26247
|
hyperlinkStats: components["schemas"]["ColumnLinkStats"][];
|
|
24508
26248
|
truncated: boolean;
|
|
26249
|
+
readError?: {
|
|
26250
|
+
code: string;
|
|
26251
|
+
message: string;
|
|
26252
|
+
};
|
|
24509
26253
|
};
|
|
24510
26254
|
InspectWorkbookResponse: {
|
|
24511
26255
|
workbook: components["schemas"]["SourceWorkbook"];
|
|
@@ -24513,6 +26257,35 @@ export interface components {
|
|
|
24513
26257
|
totalSampleCells: number;
|
|
24514
26258
|
globallyTruncated: boolean;
|
|
24515
26259
|
};
|
|
26260
|
+
WorkbookSheetPage: {
|
|
26261
|
+
/** Format: uuid */
|
|
26262
|
+
workbookId: string;
|
|
26263
|
+
sourceIdentity: string;
|
|
26264
|
+
sheetTitle: string;
|
|
26265
|
+
sheetGid?: number;
|
|
26266
|
+
sheetIndex: number;
|
|
26267
|
+
rowOffset: number;
|
|
26268
|
+
rowLimit: number;
|
|
26269
|
+
returnedRowCount: number;
|
|
26270
|
+
columnOffset: number;
|
|
26271
|
+
columnLimit: number;
|
|
26272
|
+
returnedColumnCount: number;
|
|
26273
|
+
totalRowCount: number | null;
|
|
26274
|
+
totalColumnCount: number | null;
|
|
26275
|
+
dimensionsKnown: boolean;
|
|
26276
|
+
/** @description Часть источника лежит за доступной scan-границей; полный вывод делать нельзя. */
|
|
26277
|
+
sourceTruncated?: boolean;
|
|
26278
|
+
/** @description Граница, до которой надо пройти rowOffset для полного обхода. */
|
|
26279
|
+
scanUpperBoundRowCount: number;
|
|
26280
|
+
/** @description Граница, до которой надо пройти columnOffset для полного обхода. */
|
|
26281
|
+
scanUpperBoundColumnCount: number;
|
|
26282
|
+
rows: components["schemas"]["SheetCellMetadata"][][];
|
|
26283
|
+
hasMoreRows: boolean;
|
|
26284
|
+
hasMoreColumns: boolean;
|
|
26285
|
+
nextRowOffset: number | null;
|
|
26286
|
+
nextColumnOffset: number | null;
|
|
26287
|
+
pageFingerprint: string;
|
|
26288
|
+
};
|
|
24516
26289
|
WorkbookInspectError: {
|
|
24517
26290
|
/** @enum {string} */
|
|
24518
26291
|
error: "google_sheets_not_shared";
|
|
@@ -24958,8 +26731,9 @@ export interface components {
|
|
|
24958
26731
|
limit?: number;
|
|
24959
26732
|
};
|
|
24960
26733
|
KnowledgeTableReindexResponse: {
|
|
26734
|
+
job_id: string;
|
|
24961
26735
|
/**
|
|
24962
|
-
* @description QUEUED — reindex поставлен в фоновую очередь (для крупных источников вроде каталога 1С); опрашивай GET .../tables/:id
|
|
26736
|
+
* @description QUEUED — reindex поставлен в фоновую очередь (для крупных источников вроде каталога 1С); опрашивай GET .../tables/:id/reindex/status для подтверждения завершения. INDEXED/SKIPPED — legacy синхронный результат.
|
|
24963
26737
|
* @enum {string}
|
|
24964
26738
|
*/
|
|
24965
26739
|
status: "QUEUED" | "INDEXED" | "SKIPPED";
|
|
@@ -24967,6 +26741,20 @@ export interface components {
|
|
|
24967
26741
|
/** Format: date-time */
|
|
24968
26742
|
indexed_at: string;
|
|
24969
26743
|
};
|
|
26744
|
+
AsyncJobStatusResponse: {
|
|
26745
|
+
job_id: string;
|
|
26746
|
+
/** @enum {string} */
|
|
26747
|
+
status: "QUEUED" | "RUNNING" | "COMPLETED" | "FAILED" | "EXPIRED";
|
|
26748
|
+
progress: unknown;
|
|
26749
|
+
result: unknown;
|
|
26750
|
+
error: string | null;
|
|
26751
|
+
/** Format: date-time */
|
|
26752
|
+
queued_at: string | null;
|
|
26753
|
+
/** Format: date-time */
|
|
26754
|
+
started_at: string | null;
|
|
26755
|
+
/** Format: date-time */
|
|
26756
|
+
finished_at: string | null;
|
|
26757
|
+
};
|
|
24970
26758
|
/** @enum {string} */
|
|
24971
26759
|
VariableType: "TEXT" | "NUMBER" | "FLOAT" | "BOOLEAN";
|
|
24972
26760
|
VariableResponse: {
|
|
@@ -25531,16 +27319,18 @@ export interface components {
|
|
|
25531
27319
|
BroadcastMailingVariantId: string[];
|
|
25532
27320
|
/** @description Механизм запуска: `wave` — доставляет процесс школы (мы штампуем поля сделки), `cold_welcome` — пишем первыми сами. Мультивыбор; ОБА значения = фильтра нет. У строки получателя механизм берётся из её собственного режима, у сделки и кандидата — из когорты по import job (нет метки и нет холодных получателей = wave). */
|
|
25533
27321
|
BroadcastMechanism: ("wave" | "cold_welcome")[];
|
|
27322
|
+
/** @description ЧТО ЗАПУСТИЛО отправку: `manual` — оператор нажал «Запустить», `registration` — автоприём регистрации по order-вебхуку школы, `schedule` — ночной прогон планировщика. Мультивыбор; выбраны все = фильтра нет. Это ДРУГАЯ ось, а не уточнение механизма: механизм отвечает «чем доставляли». Любой выбор ИСКЛЮЧАЕТ волны школы целиком — у них запускающего в этом смысле нет. */
|
|
27323
|
+
BroadcastLaunchSource: ("manual" | "registration" | "schedule")[];
|
|
25534
27324
|
/** @description Мультивыбор: повторяйте параметр (`?x=A&x=B`). Одиночное значение остаётся валидным. */
|
|
25535
27325
|
BroadcastProduct: string[];
|
|
25536
27326
|
/** @description Добавляет строки без продукта. Можно сочетать с product: значения и NULL объединяются через OR. */
|
|
25537
27327
|
BroadcastProductMode: "none";
|
|
25538
27328
|
/** @description Корзины свежести лида (мультивыбор). Под фильтром из ВСЕХ метрик выпадают контакты с неизвестным возрастом. Выбраны все корзины = фильтра нет. */
|
|
25539
|
-
BroadcastFreshness: ("0-7" | "8-14" | "15-30" | "31+")[];
|
|
27329
|
+
BroadcastFreshness: ("0-7" | "8-14" | "15-30" | "31-45" | "46-60" | "61+")[];
|
|
25540
27330
|
/** @description Мессенджеры волны (транспорты GetCourse + UNKNOWN — канал не определён), мультивыбор. Деньги фильтруются по скалярному каналу сделки. */
|
|
25541
27331
|
BroadcastChannels: string[];
|
|
25542
|
-
/** @description cohort — дата запуска; period — дата
|
|
25543
|
-
BroadcastView: "cohort" | "period";
|
|
27332
|
+
/** @description cohort — дата запуска; period — дата события; entry — дата входа в сегмент (segment_entered_at: регистрация, конец серии, предсписок). В entry строки без даты входа выпадают всегда, включая mode=all, а события атрибутируются когортно. */
|
|
27333
|
+
BroadcastView: "cohort" | "period" | "entry";
|
|
25544
27334
|
/** @description Конкретный день кликнутой ячейки (МСК). */
|
|
25545
27335
|
BroadcastDate: string;
|
|
25546
27336
|
/** @description Канал кликнутой ячейки; пусто = общий итог. */
|
|
@@ -25593,217 +27383,707 @@ export interface components {
|
|
|
25593
27383
|
*/
|
|
25594
27384
|
ExecutionModeHeader: "external" | "internal";
|
|
25595
27385
|
};
|
|
25596
|
-
requestBodies: never;
|
|
25597
|
-
headers: never;
|
|
25598
|
-
pathItems: never;
|
|
25599
|
-
}
|
|
25600
|
-
export type $defs = Record<string, never>;
|
|
25601
|
-
export interface operations {
|
|
25602
|
-
|
|
27386
|
+
requestBodies: never;
|
|
27387
|
+
headers: never;
|
|
27388
|
+
pathItems: never;
|
|
27389
|
+
}
|
|
27390
|
+
export type $defs = Record<string, never>;
|
|
27391
|
+
export interface operations {
|
|
27392
|
+
AgentReadinessController_get: {
|
|
27393
|
+
parameters: {
|
|
27394
|
+
query?: never;
|
|
27395
|
+
header?: never;
|
|
27396
|
+
path: {
|
|
27397
|
+
agentId: string;
|
|
27398
|
+
};
|
|
27399
|
+
cookie?: never;
|
|
27400
|
+
};
|
|
27401
|
+
requestBody?: never;
|
|
27402
|
+
responses: {
|
|
27403
|
+
/** @description NOT_PROVEN с отдельными gates; configurationCurrent null до фиксации полной версии зависимых настроек, promptAndAgentCurrent проверяет только промпт и запись агента */
|
|
27404
|
+
200: {
|
|
27405
|
+
headers: {
|
|
27406
|
+
[name: string]: unknown;
|
|
27407
|
+
};
|
|
27408
|
+
content?: never;
|
|
27409
|
+
};
|
|
27410
|
+
};
|
|
27411
|
+
};
|
|
27412
|
+
navigateWorkspaceTask: {
|
|
27413
|
+
parameters: {
|
|
27414
|
+
query?: never;
|
|
27415
|
+
header?: never;
|
|
27416
|
+
path: {
|
|
27417
|
+
workspaceId: components["parameters"]["WorkspaceIdPath"];
|
|
27418
|
+
};
|
|
27419
|
+
cookie?: never;
|
|
27420
|
+
};
|
|
27421
|
+
requestBody: {
|
|
27422
|
+
content: {
|
|
27423
|
+
"application/json": components["schemas"]["WorkspaceNavigationRequest"];
|
|
27424
|
+
};
|
|
27425
|
+
};
|
|
27426
|
+
responses: {
|
|
27427
|
+
200: {
|
|
27428
|
+
headers: {
|
|
27429
|
+
[name: string]: unknown;
|
|
27430
|
+
};
|
|
27431
|
+
content: {
|
|
27432
|
+
"application/json": components["schemas"]["WorkspaceNavigationResponse"];
|
|
27433
|
+
};
|
|
27434
|
+
};
|
|
27435
|
+
};
|
|
27436
|
+
};
|
|
27437
|
+
startIcpAudioImportRun: {
|
|
27438
|
+
parameters: {
|
|
27439
|
+
query?: never;
|
|
27440
|
+
header?: never;
|
|
27441
|
+
path?: never;
|
|
27442
|
+
cookie?: never;
|
|
27443
|
+
};
|
|
27444
|
+
requestBody: {
|
|
27445
|
+
content: {
|
|
27446
|
+
"application/json": components["schemas"]["StartIcpAudioImportRequest"];
|
|
27447
|
+
};
|
|
27448
|
+
};
|
|
27449
|
+
responses: {
|
|
27450
|
+
/** @description Run accepted, items scheduled */
|
|
27451
|
+
202: {
|
|
27452
|
+
headers: {
|
|
27453
|
+
[name: string]: unknown;
|
|
27454
|
+
};
|
|
27455
|
+
content: {
|
|
27456
|
+
"application/json": components["schemas"]["IcpAudioImportRunResponse"];
|
|
27457
|
+
};
|
|
27458
|
+
};
|
|
27459
|
+
/** @description Validation error — invalid source config или 0 enumerable items */
|
|
27460
|
+
400: {
|
|
27461
|
+
headers: {
|
|
27462
|
+
[name: string]: unknown;
|
|
27463
|
+
};
|
|
27464
|
+
content?: never;
|
|
27465
|
+
};
|
|
27466
|
+
/** @description ICP profile not found in workspace */
|
|
27467
|
+
404: {
|
|
27468
|
+
headers: {
|
|
27469
|
+
[name: string]: unknown;
|
|
27470
|
+
};
|
|
27471
|
+
content?: never;
|
|
27472
|
+
};
|
|
27473
|
+
};
|
|
27474
|
+
};
|
|
27475
|
+
getIcpAudioImportRun: {
|
|
27476
|
+
parameters: {
|
|
27477
|
+
query?: never;
|
|
27478
|
+
header?: never;
|
|
27479
|
+
path: {
|
|
27480
|
+
runId: string;
|
|
27481
|
+
};
|
|
27482
|
+
cookie?: never;
|
|
27483
|
+
};
|
|
27484
|
+
requestBody?: never;
|
|
27485
|
+
responses: {
|
|
27486
|
+
200: {
|
|
27487
|
+
headers: {
|
|
27488
|
+
[name: string]: unknown;
|
|
27489
|
+
};
|
|
27490
|
+
content: {
|
|
27491
|
+
"application/json": components["schemas"]["IcpAudioImportRunResponse"];
|
|
27492
|
+
};
|
|
27493
|
+
};
|
|
27494
|
+
/** @description Run not found in workspace */
|
|
27495
|
+
404: {
|
|
27496
|
+
headers: {
|
|
27497
|
+
[name: string]: unknown;
|
|
27498
|
+
};
|
|
27499
|
+
content?: never;
|
|
27500
|
+
};
|
|
27501
|
+
};
|
|
27502
|
+
};
|
|
27503
|
+
deleteIcpAudioRetention: {
|
|
27504
|
+
parameters: {
|
|
27505
|
+
query?: never;
|
|
27506
|
+
header: {
|
|
27507
|
+
/** @description Workspace ID */
|
|
27508
|
+
"X-Tenant-Id": string;
|
|
27509
|
+
};
|
|
27510
|
+
path?: never;
|
|
27511
|
+
cookie?: never;
|
|
27512
|
+
};
|
|
27513
|
+
requestBody: {
|
|
27514
|
+
content: {
|
|
27515
|
+
"application/json": components["schemas"]["DeleteIcpAudioRequest"];
|
|
27516
|
+
};
|
|
27517
|
+
};
|
|
27518
|
+
responses: {
|
|
27519
|
+
/** @description Object deleted (или уже отсутствовал — idempotent) */
|
|
27520
|
+
204: {
|
|
27521
|
+
headers: {
|
|
27522
|
+
[name: string]: unknown;
|
|
27523
|
+
};
|
|
27524
|
+
content?: never;
|
|
27525
|
+
};
|
|
27526
|
+
/** @description Invalid transcription-service JWT */
|
|
27527
|
+
401: {
|
|
27528
|
+
headers: {
|
|
27529
|
+
[name: string]: unknown;
|
|
27530
|
+
};
|
|
27531
|
+
content?: never;
|
|
27532
|
+
};
|
|
27533
|
+
/** @description Workspace mismatch */
|
|
27534
|
+
403: {
|
|
27535
|
+
headers: {
|
|
27536
|
+
[name: string]: unknown;
|
|
27537
|
+
};
|
|
27538
|
+
content?: never;
|
|
27539
|
+
};
|
|
27540
|
+
};
|
|
27541
|
+
};
|
|
27542
|
+
recordTranscriptionUsageEvent: {
|
|
27543
|
+
parameters: {
|
|
27544
|
+
query?: never;
|
|
27545
|
+
header: {
|
|
27546
|
+
"X-Tenant-Id": string;
|
|
27547
|
+
"Idempotency-Key"?: string;
|
|
27548
|
+
};
|
|
27549
|
+
path?: never;
|
|
27550
|
+
cookie?: never;
|
|
27551
|
+
};
|
|
27552
|
+
requestBody: {
|
|
27553
|
+
content: {
|
|
27554
|
+
"application/json": components["schemas"]["TranscriptionUsageEventRequest"];
|
|
27555
|
+
};
|
|
27556
|
+
};
|
|
27557
|
+
responses: {
|
|
27558
|
+
/** @description Batch accepted, per-job events written */
|
|
27559
|
+
202: {
|
|
27560
|
+
headers: {
|
|
27561
|
+
[name: string]: unknown;
|
|
27562
|
+
};
|
|
27563
|
+
content?: never;
|
|
27564
|
+
};
|
|
27565
|
+
/** @description Validation error */
|
|
27566
|
+
400: {
|
|
27567
|
+
headers: {
|
|
27568
|
+
[name: string]: unknown;
|
|
27569
|
+
};
|
|
27570
|
+
content?: never;
|
|
27571
|
+
};
|
|
27572
|
+
/** @description Invalid transcription-service JWT */
|
|
27573
|
+
401: {
|
|
27574
|
+
headers: {
|
|
27575
|
+
[name: string]: unknown;
|
|
27576
|
+
};
|
|
27577
|
+
content?: never;
|
|
27578
|
+
};
|
|
27579
|
+
/** @description Workspace mismatch */
|
|
27580
|
+
403: {
|
|
27581
|
+
headers: {
|
|
27582
|
+
[name: string]: unknown;
|
|
27583
|
+
};
|
|
27584
|
+
content?: never;
|
|
27585
|
+
};
|
|
27586
|
+
};
|
|
27587
|
+
};
|
|
27588
|
+
getContactTouchHistory: {
|
|
27589
|
+
parameters: {
|
|
27590
|
+
query?: never;
|
|
27591
|
+
header?: never;
|
|
27592
|
+
path: {
|
|
27593
|
+
workspaceId: components["parameters"]["WorkspaceIdPath"];
|
|
27594
|
+
/** @description GetCourse school-side person id (getcourse_user_id). */
|
|
27595
|
+
gcUserId: number;
|
|
27596
|
+
};
|
|
27597
|
+
cookie?: never;
|
|
27598
|
+
};
|
|
27599
|
+
requestBody?: never;
|
|
27600
|
+
responses: {
|
|
27601
|
+
/** @description OK */
|
|
27602
|
+
200: {
|
|
27603
|
+
headers: {
|
|
27604
|
+
[name: string]: unknown;
|
|
27605
|
+
};
|
|
27606
|
+
content: {
|
|
27607
|
+
"application/json": {
|
|
27608
|
+
getcourseUserId: number;
|
|
27609
|
+
/** Format: date-time */
|
|
27610
|
+
firstWelcomeAt: string | null;
|
|
27611
|
+
/** @description More journal rows exist than fit in this response. */
|
|
27612
|
+
truncated: boolean;
|
|
27613
|
+
touches: {
|
|
27614
|
+
/** @description Touch name = the right key. Four kinds: a segment label, `text:<template fingerprint>`, `registration:<deal>`, and `legacy:welcome` (a right restored by backfill for the period before the journal existed). */
|
|
27615
|
+
touchKey: string;
|
|
27616
|
+
/** @enum {string} */
|
|
27617
|
+
kind: "FIRST" | "REPEAT" | "REGISTRATION";
|
|
27618
|
+
/** @enum {string} */
|
|
27619
|
+
status: "CLAIMED" | "SENT" | "UNKNOWN" | "RELEASED";
|
|
27620
|
+
/** Format: date-time */
|
|
27621
|
+
claimedAt: string;
|
|
27622
|
+
/** Format: date-time */
|
|
27623
|
+
sentAt: string | null;
|
|
27624
|
+
/** @description Empty for rows written before 2026-09-09 — the column did not exist yet. */
|
|
27625
|
+
mailingName: string | null;
|
|
27626
|
+
/** Format: uuid */
|
|
27627
|
+
platformId: string | null;
|
|
27628
|
+
lastError: string | null;
|
|
27629
|
+
}[];
|
|
27630
|
+
sends: {
|
|
27631
|
+
segment: string | null;
|
|
27632
|
+
/** @enum {string} */
|
|
27633
|
+
mode: "cold_welcome" | "registration_welcome" | "scheduled";
|
|
27634
|
+
/** Format: date-time */
|
|
27635
|
+
receivedAt: string;
|
|
27636
|
+
/** Format: uuid */
|
|
27637
|
+
platformId: string | null;
|
|
27638
|
+
}[];
|
|
27639
|
+
};
|
|
27640
|
+
};
|
|
27641
|
+
};
|
|
27642
|
+
};
|
|
27643
|
+
};
|
|
27644
|
+
listWorkspaceDataSources: {
|
|
27645
|
+
parameters: {
|
|
27646
|
+
query?: never;
|
|
27647
|
+
header?: never;
|
|
27648
|
+
path: {
|
|
27649
|
+
workspaceId: components["parameters"]["WorkspaceIdPath"];
|
|
27650
|
+
};
|
|
27651
|
+
cookie?: never;
|
|
27652
|
+
};
|
|
27653
|
+
requestBody?: never;
|
|
27654
|
+
responses: {
|
|
27655
|
+
200: {
|
|
27656
|
+
headers: {
|
|
27657
|
+
[name: string]: unknown;
|
|
27658
|
+
};
|
|
27659
|
+
content: {
|
|
27660
|
+
"application/json": {
|
|
27661
|
+
data_sources?: {
|
|
27662
|
+
/** Format: uuid */
|
|
27663
|
+
id?: string;
|
|
27664
|
+
type?: string;
|
|
27665
|
+
name?: string;
|
|
27666
|
+
/** @description Health-статус (ACTIVE/ERROR/INACTIVE) */
|
|
27667
|
+
status?: string;
|
|
27668
|
+
/** @description Намерение админа вкл/выкл */
|
|
27669
|
+
enabled?: boolean;
|
|
27670
|
+
base_url?: string | null;
|
|
27671
|
+
/** Format: date-time */
|
|
27672
|
+
created_at?: string;
|
|
27673
|
+
}[];
|
|
27674
|
+
};
|
|
27675
|
+
};
|
|
27676
|
+
};
|
|
27677
|
+
};
|
|
27678
|
+
};
|
|
27679
|
+
listWorkspaceCrms: {
|
|
25603
27680
|
parameters: {
|
|
25604
27681
|
query?: never;
|
|
25605
27682
|
header?: never;
|
|
25606
|
-
path
|
|
25607
|
-
|
|
25608
|
-
};
|
|
25609
|
-
requestBody: {
|
|
25610
|
-
content: {
|
|
25611
|
-
"application/json": components["schemas"]["StartIcpAudioImportRequest"];
|
|
27683
|
+
path: {
|
|
27684
|
+
workspaceId: string;
|
|
25612
27685
|
};
|
|
27686
|
+
cookie?: never;
|
|
25613
27687
|
};
|
|
27688
|
+
requestBody?: never;
|
|
25614
27689
|
responses: {
|
|
25615
|
-
|
|
25616
|
-
202: {
|
|
27690
|
+
200: {
|
|
25617
27691
|
headers: {
|
|
25618
27692
|
[name: string]: unknown;
|
|
25619
27693
|
};
|
|
25620
27694
|
content: {
|
|
25621
|
-
"application/json": components["schemas"]["
|
|
27695
|
+
"application/json": components["schemas"]["CrmListResponse"];
|
|
25622
27696
|
};
|
|
25623
27697
|
};
|
|
25624
|
-
|
|
25625
|
-
|
|
27698
|
+
};
|
|
27699
|
+
};
|
|
27700
|
+
getAmoCrmChannelRegistration: {
|
|
27701
|
+
parameters: {
|
|
27702
|
+
query?: never;
|
|
27703
|
+
header?: never;
|
|
27704
|
+
path: {
|
|
27705
|
+
workspaceId: components["parameters"]["WorkspaceIdPath"];
|
|
27706
|
+
};
|
|
27707
|
+
cookie?: never;
|
|
27708
|
+
};
|
|
27709
|
+
requestBody?: never;
|
|
27710
|
+
responses: {
|
|
27711
|
+
200: {
|
|
25626
27712
|
headers: {
|
|
25627
27713
|
[name: string]: unknown;
|
|
25628
27714
|
};
|
|
25629
|
-
content
|
|
27715
|
+
content: {
|
|
27716
|
+
"application/json": components["schemas"]["AmoCrmChannelRegistrationResponse"];
|
|
27717
|
+
};
|
|
25630
27718
|
};
|
|
25631
|
-
|
|
25632
|
-
|
|
27719
|
+
};
|
|
27720
|
+
};
|
|
27721
|
+
getInboundAnalytics: {
|
|
27722
|
+
parameters: {
|
|
27723
|
+
query?: {
|
|
27724
|
+
platformId?: string;
|
|
27725
|
+
channels?: string[];
|
|
27726
|
+
mode?: "all" | "days" | "range";
|
|
27727
|
+
days?: number;
|
|
27728
|
+
from?: string;
|
|
27729
|
+
to?: string;
|
|
27730
|
+
};
|
|
27731
|
+
header?: never;
|
|
27732
|
+
path: {
|
|
27733
|
+
workspaceId: components["parameters"]["WorkspaceIdPath"];
|
|
27734
|
+
report: "summary" | "topics" | "speed" | "money" | "cycle" | "quality";
|
|
27735
|
+
};
|
|
27736
|
+
cookie?: never;
|
|
27737
|
+
};
|
|
27738
|
+
requestBody?: never;
|
|
27739
|
+
responses: {
|
|
27740
|
+
/** @description Канонический ответ выбранной входящей витрины; null не заменяется нулём. */
|
|
27741
|
+
200: {
|
|
25633
27742
|
headers: {
|
|
25634
27743
|
[name: string]: unknown;
|
|
25635
27744
|
};
|
|
25636
|
-
content
|
|
27745
|
+
content: {
|
|
27746
|
+
"application/json": components["schemas"]["AnalyticsAggregateResponse"];
|
|
27747
|
+
};
|
|
25637
27748
|
};
|
|
27749
|
+
400: components["responses"]["ValidationError"];
|
|
27750
|
+
401: components["responses"]["Unauthorized"];
|
|
27751
|
+
403: components["responses"]["Forbidden"];
|
|
25638
27752
|
};
|
|
25639
27753
|
};
|
|
25640
|
-
|
|
27754
|
+
getFunnelAnalytics: {
|
|
25641
27755
|
parameters: {
|
|
25642
|
-
query
|
|
27756
|
+
query: {
|
|
27757
|
+
platformId: string;
|
|
27758
|
+
from?: string;
|
|
27759
|
+
to?: string;
|
|
27760
|
+
view?: "cohort" | "period";
|
|
27761
|
+
managerId?: number;
|
|
27762
|
+
};
|
|
25643
27763
|
header?: never;
|
|
25644
27764
|
path: {
|
|
25645
|
-
|
|
27765
|
+
workspaceId: components["parameters"]["WorkspaceIdPath"];
|
|
27766
|
+
report: "meta" | "summary" | "cohorts";
|
|
25646
27767
|
};
|
|
25647
27768
|
cookie?: never;
|
|
25648
27769
|
};
|
|
25649
27770
|
requestBody?: never;
|
|
25650
27771
|
responses: {
|
|
27772
|
+
/** @description Канонический ответ воронки с неизменным view и зерном. */
|
|
25651
27773
|
200: {
|
|
25652
27774
|
headers: {
|
|
25653
27775
|
[name: string]: unknown;
|
|
25654
27776
|
};
|
|
25655
27777
|
content: {
|
|
25656
|
-
"application/json": components["schemas"]["
|
|
27778
|
+
"application/json": components["schemas"]["AnalyticsAggregateResponse"];
|
|
25657
27779
|
};
|
|
25658
27780
|
};
|
|
25659
|
-
|
|
25660
|
-
|
|
27781
|
+
400: components["responses"]["ValidationError"];
|
|
27782
|
+
401: components["responses"]["Unauthorized"];
|
|
27783
|
+
403: components["responses"]["Forbidden"];
|
|
27784
|
+
404: components["responses"]["NotFound"];
|
|
27785
|
+
};
|
|
27786
|
+
};
|
|
27787
|
+
getAiCosts: {
|
|
27788
|
+
parameters: {
|
|
27789
|
+
query?: {
|
|
27790
|
+
mode?: "all" | "days" | "range";
|
|
27791
|
+
days?: number;
|
|
27792
|
+
from?: string;
|
|
27793
|
+
to?: string;
|
|
27794
|
+
scope?: "production" | "with_tests";
|
|
27795
|
+
groupBy?: "customer" | "platform" | "tag" | "operation" | "provider";
|
|
27796
|
+
page?: number;
|
|
27797
|
+
limit?: number;
|
|
27798
|
+
};
|
|
27799
|
+
header?: never;
|
|
27800
|
+
path: {
|
|
27801
|
+
workspaceId: components["parameters"]["WorkspaceIdPath"];
|
|
27802
|
+
report: "summary" | "tasks" | "breakdown";
|
|
27803
|
+
};
|
|
27804
|
+
cookie?: never;
|
|
27805
|
+
};
|
|
27806
|
+
requestBody?: never;
|
|
27807
|
+
responses: {
|
|
27808
|
+
/** @description Ledger с отдельным числом priced и unpriced usage events. */
|
|
27809
|
+
200: {
|
|
25661
27810
|
headers: {
|
|
25662
27811
|
[name: string]: unknown;
|
|
25663
27812
|
};
|
|
25664
|
-
content
|
|
27813
|
+
content: {
|
|
27814
|
+
"application/json": components["schemas"]["AnalyticsAggregateResponse"];
|
|
27815
|
+
};
|
|
25665
27816
|
};
|
|
27817
|
+
400: components["responses"]["ValidationError"];
|
|
27818
|
+
401: components["responses"]["Unauthorized"];
|
|
27819
|
+
403: components["responses"]["Forbidden"];
|
|
25666
27820
|
};
|
|
25667
27821
|
};
|
|
25668
|
-
|
|
27822
|
+
listCustomReports: {
|
|
25669
27823
|
parameters: {
|
|
25670
27824
|
query?: never;
|
|
25671
|
-
header
|
|
25672
|
-
|
|
25673
|
-
"
|
|
27825
|
+
header?: never;
|
|
27826
|
+
path: {
|
|
27827
|
+
workspaceId: components["parameters"]["WorkspaceIdPath"];
|
|
25674
27828
|
};
|
|
25675
|
-
path?: never;
|
|
25676
27829
|
cookie?: never;
|
|
25677
27830
|
};
|
|
25678
|
-
requestBody
|
|
25679
|
-
content: {
|
|
25680
|
-
"application/json": components["schemas"]["DeleteIcpAudioRequest"];
|
|
25681
|
-
};
|
|
25682
|
-
};
|
|
27831
|
+
requestBody?: never;
|
|
25683
27832
|
responses: {
|
|
25684
|
-
/** @description
|
|
25685
|
-
|
|
27833
|
+
/** @description Неархивированные определения отчётов. */
|
|
27834
|
+
200: {
|
|
25686
27835
|
headers: {
|
|
25687
27836
|
[name: string]: unknown;
|
|
25688
27837
|
};
|
|
25689
|
-
content
|
|
27838
|
+
content: {
|
|
27839
|
+
"application/json": {
|
|
27840
|
+
items: components["schemas"]["CustomReportDefinition"][];
|
|
27841
|
+
};
|
|
27842
|
+
};
|
|
25690
27843
|
};
|
|
25691
|
-
|
|
25692
|
-
|
|
27844
|
+
401: components["responses"]["Unauthorized"];
|
|
27845
|
+
403: components["responses"]["Forbidden"];
|
|
27846
|
+
};
|
|
27847
|
+
};
|
|
27848
|
+
getCustomReport: {
|
|
27849
|
+
parameters: {
|
|
27850
|
+
query?: never;
|
|
27851
|
+
header?: never;
|
|
27852
|
+
path: {
|
|
27853
|
+
workspaceId: components["parameters"]["WorkspaceIdPath"];
|
|
27854
|
+
reportId: string;
|
|
27855
|
+
};
|
|
27856
|
+
cookie?: never;
|
|
27857
|
+
};
|
|
27858
|
+
requestBody?: never;
|
|
27859
|
+
responses: {
|
|
27860
|
+
/** @description Определение и версия отчёта. */
|
|
27861
|
+
200: {
|
|
25693
27862
|
headers: {
|
|
25694
27863
|
[name: string]: unknown;
|
|
25695
27864
|
};
|
|
25696
|
-
content
|
|
27865
|
+
content: {
|
|
27866
|
+
"application/json": components["schemas"]["CustomReportDefinition"];
|
|
27867
|
+
};
|
|
25697
27868
|
};
|
|
25698
|
-
|
|
25699
|
-
403:
|
|
27869
|
+
401: components["responses"]["Unauthorized"];
|
|
27870
|
+
403: components["responses"]["Forbidden"];
|
|
27871
|
+
404: components["responses"]["NotFound"];
|
|
27872
|
+
};
|
|
27873
|
+
};
|
|
27874
|
+
getCustomReportData: {
|
|
27875
|
+
parameters: {
|
|
27876
|
+
query: {
|
|
27877
|
+
from: string;
|
|
27878
|
+
to: string;
|
|
27879
|
+
granularity?: "day" | "week" | "month" | "total";
|
|
27880
|
+
};
|
|
27881
|
+
header?: never;
|
|
27882
|
+
path: {
|
|
27883
|
+
workspaceId: components["parameters"]["WorkspaceIdPath"];
|
|
27884
|
+
reportId: string;
|
|
27885
|
+
};
|
|
27886
|
+
cookie?: never;
|
|
27887
|
+
};
|
|
27888
|
+
requestBody?: never;
|
|
27889
|
+
responses: {
|
|
27890
|
+
/** @description Данные таблицы и snapshot точного drill-down, если источник его поддерживает. */
|
|
27891
|
+
200: {
|
|
25700
27892
|
headers: {
|
|
25701
27893
|
[name: string]: unknown;
|
|
25702
27894
|
};
|
|
25703
|
-
content
|
|
27895
|
+
content: {
|
|
27896
|
+
"application/json": components["schemas"]["CustomReportDataResponse"];
|
|
27897
|
+
};
|
|
25704
27898
|
};
|
|
27899
|
+
400: components["responses"]["ValidationError"];
|
|
27900
|
+
401: components["responses"]["Unauthorized"];
|
|
27901
|
+
403: components["responses"]["Forbidden"];
|
|
27902
|
+
404: components["responses"]["NotFound"];
|
|
25705
27903
|
};
|
|
25706
27904
|
};
|
|
25707
|
-
|
|
27905
|
+
getWorkspaceOperationalOverview: {
|
|
25708
27906
|
parameters: {
|
|
25709
27907
|
query?: never;
|
|
25710
|
-
header
|
|
25711
|
-
|
|
25712
|
-
"
|
|
27908
|
+
header?: never;
|
|
27909
|
+
path: {
|
|
27910
|
+
workspaceId: components["parameters"]["WorkspaceIdPath"];
|
|
25713
27911
|
};
|
|
25714
|
-
path?: never;
|
|
25715
27912
|
cookie?: never;
|
|
25716
27913
|
};
|
|
25717
|
-
requestBody
|
|
25718
|
-
content: {
|
|
25719
|
-
"application/json": components["schemas"]["TranscriptionUsageEventRequest"];
|
|
25720
|
-
};
|
|
25721
|
-
};
|
|
27914
|
+
requestBody?: never;
|
|
25722
27915
|
responses: {
|
|
25723
|
-
/** @description
|
|
25724
|
-
|
|
27916
|
+
/** @description Текущее состояние и приоритетные предупреждения. */
|
|
27917
|
+
200: {
|
|
25725
27918
|
headers: {
|
|
25726
27919
|
[name: string]: unknown;
|
|
25727
27920
|
};
|
|
25728
|
-
content
|
|
25729
|
-
|
|
25730
|
-
/** @description Validation error */
|
|
25731
|
-
400: {
|
|
25732
|
-
headers: {
|
|
25733
|
-
[name: string]: unknown;
|
|
27921
|
+
content: {
|
|
27922
|
+
"application/json": components["schemas"]["OperationalOverviewResponse"];
|
|
25734
27923
|
};
|
|
25735
|
-
content?: never;
|
|
25736
27924
|
};
|
|
25737
|
-
|
|
25738
|
-
|
|
27925
|
+
401: components["responses"]["Unauthorized"];
|
|
27926
|
+
403: components["responses"]["Forbidden"];
|
|
27927
|
+
};
|
|
27928
|
+
};
|
|
27929
|
+
listWorkspaceOperatorsForWorkflow: {
|
|
27930
|
+
parameters: {
|
|
27931
|
+
query?: never;
|
|
27932
|
+
header?: never;
|
|
27933
|
+
path: {
|
|
27934
|
+
workspaceId: components["parameters"]["WorkspaceIdPath"];
|
|
27935
|
+
};
|
|
27936
|
+
cookie?: never;
|
|
27937
|
+
};
|
|
27938
|
+
requestBody?: never;
|
|
27939
|
+
responses: {
|
|
27940
|
+
/** @description Только workspace operators; CRM operators в ответ не входят. */
|
|
27941
|
+
200: {
|
|
25739
27942
|
headers: {
|
|
25740
27943
|
[name: string]: unknown;
|
|
25741
27944
|
};
|
|
25742
|
-
content
|
|
27945
|
+
content: {
|
|
27946
|
+
"application/json": components["schemas"]["WorkspaceOperatorOption"][];
|
|
27947
|
+
};
|
|
25743
27948
|
};
|
|
25744
|
-
|
|
25745
|
-
403:
|
|
27949
|
+
401: components["responses"]["Unauthorized"];
|
|
27950
|
+
403: components["responses"]["Forbidden"];
|
|
27951
|
+
};
|
|
27952
|
+
};
|
|
27953
|
+
listWorkspaceOperatorQueue: {
|
|
27954
|
+
parameters: {
|
|
27955
|
+
query?: {
|
|
27956
|
+
status?: "WAITING_OPERATOR" | "IN_PROGRESS" | "WAITING_CUSTOMER" | "RESOLVED";
|
|
27957
|
+
workspaceOperatorId?: string;
|
|
27958
|
+
contactId?: string;
|
|
27959
|
+
page?: number;
|
|
27960
|
+
limit?: number;
|
|
27961
|
+
};
|
|
27962
|
+
header?: never;
|
|
27963
|
+
path: {
|
|
27964
|
+
workspaceId: components["parameters"]["WorkspaceIdPath"];
|
|
27965
|
+
};
|
|
27966
|
+
cookie?: never;
|
|
27967
|
+
};
|
|
27968
|
+
requestBody?: never;
|
|
27969
|
+
responses: {
|
|
27970
|
+
/** @description Текущее состояние и последнее связанное доказательство workflow. */
|
|
27971
|
+
200: {
|
|
25746
27972
|
headers: {
|
|
25747
27973
|
[name: string]: unknown;
|
|
25748
27974
|
};
|
|
25749
|
-
content
|
|
27975
|
+
content: {
|
|
27976
|
+
"application/json": components["schemas"]["OperatorQueueResponse"];
|
|
27977
|
+
};
|
|
25750
27978
|
};
|
|
27979
|
+
401: components["responses"]["Unauthorized"];
|
|
27980
|
+
403: components["responses"]["Forbidden"];
|
|
25751
27981
|
};
|
|
25752
27982
|
};
|
|
25753
|
-
|
|
27983
|
+
getWorkspaceOperatorAssignment: {
|
|
25754
27984
|
parameters: {
|
|
25755
27985
|
query?: never;
|
|
25756
27986
|
header?: never;
|
|
25757
27987
|
path: {
|
|
25758
27988
|
workspaceId: components["parameters"]["WorkspaceIdPath"];
|
|
27989
|
+
contactId: string;
|
|
25759
27990
|
};
|
|
25760
27991
|
cookie?: never;
|
|
25761
27992
|
};
|
|
25762
27993
|
requestBody?: never;
|
|
25763
27994
|
responses: {
|
|
27995
|
+
/** @description Назначение, статус и доказательство workflow. */
|
|
25764
27996
|
200: {
|
|
25765
27997
|
headers: {
|
|
25766
27998
|
[name: string]: unknown;
|
|
25767
27999
|
};
|
|
25768
28000
|
content: {
|
|
25769
|
-
"application/json":
|
|
25770
|
-
data_sources?: {
|
|
25771
|
-
/** Format: uuid */
|
|
25772
|
-
id?: string;
|
|
25773
|
-
type?: string;
|
|
25774
|
-
name?: string;
|
|
25775
|
-
/** @description Health-статус (ACTIVE/ERROR/INACTIVE) */
|
|
25776
|
-
status?: string;
|
|
25777
|
-
/** @description Намерение админа вкл/выкл */
|
|
25778
|
-
enabled?: boolean;
|
|
25779
|
-
base_url?: string | null;
|
|
25780
|
-
/** Format: date-time */
|
|
25781
|
-
created_at?: string;
|
|
25782
|
-
}[];
|
|
25783
|
-
};
|
|
28001
|
+
"application/json": components["schemas"]["WorkspaceOperatorAssignmentState"];
|
|
25784
28002
|
};
|
|
25785
28003
|
};
|
|
28004
|
+
401: components["responses"]["Unauthorized"];
|
|
28005
|
+
403: components["responses"]["Forbidden"];
|
|
28006
|
+
404: components["responses"]["NotFound"];
|
|
25786
28007
|
};
|
|
25787
28008
|
};
|
|
25788
|
-
|
|
28009
|
+
updateWorkspaceOperatorAssignment: {
|
|
25789
28010
|
parameters: {
|
|
25790
28011
|
query?: never;
|
|
25791
28012
|
header?: never;
|
|
25792
28013
|
path: {
|
|
25793
|
-
workspaceId:
|
|
28014
|
+
workspaceId: components["parameters"]["WorkspaceIdPath"];
|
|
28015
|
+
contactId: string;
|
|
28016
|
+
};
|
|
28017
|
+
cookie?: never;
|
|
28018
|
+
};
|
|
28019
|
+
requestBody: {
|
|
28020
|
+
content: {
|
|
28021
|
+
"application/json": components["schemas"]["UpdateWorkspaceOperatorAssignment"];
|
|
28022
|
+
};
|
|
28023
|
+
};
|
|
28024
|
+
responses: {
|
|
28025
|
+
/** @description Фактически сохранённое назначение. */
|
|
28026
|
+
200: {
|
|
28027
|
+
headers: {
|
|
28028
|
+
[name: string]: unknown;
|
|
28029
|
+
};
|
|
28030
|
+
content: {
|
|
28031
|
+
"application/json": components["schemas"]["WorkspaceOperatorAssignmentResult"];
|
|
28032
|
+
};
|
|
28033
|
+
};
|
|
28034
|
+
401: components["responses"]["Unauthorized"];
|
|
28035
|
+
403: components["responses"]["Forbidden"];
|
|
28036
|
+
404: components["responses"]["NotFound"];
|
|
28037
|
+
409: components["responses"]["Conflict"];
|
|
28038
|
+
};
|
|
28039
|
+
};
|
|
28040
|
+
getCustomReportDrilldown: {
|
|
28041
|
+
parameters: {
|
|
28042
|
+
query: {
|
|
28043
|
+
/** @description Начало бакета, YYYY-MM-DD, включительно. */
|
|
28044
|
+
bucketFrom: string;
|
|
28045
|
+
/** @description Конец бакета, YYYY-MM-DD, включительно. */
|
|
28046
|
+
bucketTo: string;
|
|
28047
|
+
/** @description Сохранённая колонка таблицы. */
|
|
28048
|
+
metricKey: string;
|
|
28049
|
+
/** @description Сохранённая строка; отсутствие означает итог бакета. */
|
|
28050
|
+
dimensionValue?: string;
|
|
28051
|
+
/** @description Снимок из ответа живого отчёта; обязателен для источников дожимов. */
|
|
28052
|
+
calculatedAt?: string;
|
|
28053
|
+
/** @description JSON-путь строки сводной; отсутствие означает общий итог. */
|
|
28054
|
+
rowPath?: string;
|
|
28055
|
+
/** @description Непрозрачный MVCC-снимок PostgreSQL из ответа живого отчёта. */
|
|
28056
|
+
executionDbSnapshot?: string;
|
|
28057
|
+
/** @description Fingerprint актуальных шагов и атрибуции из ответа живого отчёта. */
|
|
28058
|
+
expectedCurrentStepsFingerprint?: string;
|
|
28059
|
+
/** @description updatedAt определения из ответа живого отчёта. */
|
|
28060
|
+
expectedReportUpdatedAt: string;
|
|
28061
|
+
limit?: number;
|
|
28062
|
+
offset?: number;
|
|
28063
|
+
};
|
|
28064
|
+
header?: never;
|
|
28065
|
+
path: {
|
|
28066
|
+
workspaceId: components["parameters"]["WorkspaceIdPath"];
|
|
28067
|
+
reportId: string;
|
|
25794
28068
|
};
|
|
25795
28069
|
cookie?: never;
|
|
25796
28070
|
};
|
|
25797
28071
|
requestBody?: never;
|
|
25798
28072
|
responses: {
|
|
28073
|
+
/** @description Страница исполнений за выбранной ячейкой. */
|
|
25799
28074
|
200: {
|
|
25800
28075
|
headers: {
|
|
25801
28076
|
[name: string]: unknown;
|
|
25802
28077
|
};
|
|
25803
28078
|
content: {
|
|
25804
|
-
"application/json": components["schemas"]["
|
|
28079
|
+
"application/json": components["schemas"]["CustomReportDrilldownResponse"];
|
|
25805
28080
|
};
|
|
25806
28081
|
};
|
|
28082
|
+
400: components["responses"]["ValidationError"];
|
|
28083
|
+
401: components["responses"]["Unauthorized"];
|
|
28084
|
+
403: components["responses"]["Forbidden"];
|
|
28085
|
+
404: components["responses"]["NotFound"];
|
|
28086
|
+
409: components["responses"]["Conflict"];
|
|
25807
28087
|
};
|
|
25808
28088
|
};
|
|
25809
28089
|
}
|