@besales/mcp 0.47.1 → 0.48.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.
@@ -7059,13 +7059,15 @@ export interface paths {
7059
7059
  cookie?: never;
7060
7060
  };
7061
7061
  /**
7062
- * История запусков — наша отправка и волны по файлу одним списком
7063
- * @description Scope `read:campaigns`.
7062
+ * История запусков — ручная отправка, волны, авторассылка и автоприём одним списком
7063
+ * @description Scope `read:campaigns`. Ручная отправка пакетом — одна строка с `batch`, автоприём регистраций — одна строка на день с `registrationDay`.
7064
7064
  */
7065
7065
  get: {
7066
7066
  parameters: {
7067
7067
  query?: {
7068
7068
  mailingVariantId?: string;
7069
+ /** @description Откуда запуск: manual — ручная отправка, wave — волна по файлу, schedule — авторассылка, registration — автоприём регистраций. Пусто = все четыре. */
7070
+ origin?: "manual" | "wave" | "schedule" | "registration";
7069
7071
  limit?: number;
7070
7072
  };
7071
7073
  header?: never;
@@ -8420,7 +8422,7 @@ export interface paths {
8420
8422
  [name: string]: unknown;
8421
8423
  };
8422
8424
  content: {
8423
- "application/json": components["schemas"]["PlatformSetupMutationResult"];
8425
+ "application/json": components["schemas"]["FollowUpSequenceUpsertResult"];
8424
8426
  };
8425
8427
  };
8426
8428
  };
@@ -8466,7 +8468,7 @@ export interface paths {
8466
8468
  [name: string]: unknown;
8467
8469
  };
8468
8470
  content: {
8469
- "application/json": components["schemas"]["PlatformSetupMutationResult"];
8471
+ "application/json": components["schemas"]["FollowUpSequenceUpsertResult"];
8470
8472
  };
8471
8473
  };
8472
8474
  };
@@ -11484,6 +11486,8 @@ export interface paths {
11484
11486
  freshness?: components["parameters"]["BroadcastFreshness"];
11485
11487
  /** @description Мессенджеры волны (транспорты GetCourse + UNKNOWN — канал не определён), мультивыбор. Деньги фильтруются по скалярному каналу сделки. */
11486
11488
  channels?: components["parameters"]["BroadcastChannels"];
11489
+ /** @description Чьи деньги показывать. `outbound` — рассылок: органические заказы и карточки оплат с органическим якорем исключены. `inbound` — органических диалогов: без `platformId` это все входящие площадки воркспейса, `channels` читает канал ВХОДЯЩИХ контакта, период — по дате оплаты, волновые измерения у органики пусты. */
11490
+ origin?: components["parameters"]["BroadcastPaymentOrigin"];
11487
11491
  /** @description cohort — дата запуска; period — дата события; entry — дата входа в сегмент (segment_entered_at: регистрация, конец серии, предсписок). В entry строки без даты входа выпадают всегда, включая mode=all, а события атрибутируются когортно. */
11488
11492
  view?: components["parameters"]["BroadcastView"];
11489
11493
  /** @description Конкретный день кликнутой ячейки (МСК). */
@@ -11643,6 +11647,8 @@ export interface paths {
11643
11647
  freshness?: components["parameters"]["BroadcastFreshness"];
11644
11648
  /** @description Мессенджеры волны (транспорты GetCourse + UNKNOWN — канал не определён), мультивыбор. Деньги фильтруются по скалярному каналу сделки. */
11645
11649
  channels?: components["parameters"]["BroadcastChannels"];
11650
+ /** @description Чьи деньги показывать. `outbound` — рассылок: органические заказы и карточки оплат с органическим якорем исключены. `inbound` — органических диалогов: без `platformId` это все входящие площадки воркспейса, `channels` читает канал ВХОДЯЩИХ контакта, период — по дате оплаты, волновые измерения у органики пусты. */
11651
+ origin?: components["parameters"]["BroadcastPaymentOrigin"];
11646
11652
  /** @description cohort — дата запуска; period — дата события; entry — дата входа в сегмент (segment_entered_at: регистрация, конец серии, предсписок). В entry строки без даты входа выпадают всегда, включая mode=all, а события атрибутируются когортно. */
11647
11653
  view?: components["parameters"]["BroadcastView"];
11648
11654
  /** @description Конкретный день кликнутой ячейки (МСК). */
@@ -11723,6 +11729,8 @@ export interface paths {
11723
11729
  freshness?: components["parameters"]["BroadcastFreshness"];
11724
11730
  /** @description Мессенджеры волны (транспорты GetCourse + UNKNOWN — канал не определён), мультивыбор. Деньги фильтруются по скалярному каналу сделки. */
11725
11731
  channels?: components["parameters"]["BroadcastChannels"];
11732
+ /** @description Чьи деньги показывать. `outbound` — рассылок: органические заказы и карточки оплат с органическим якорем исключены. `inbound` — органических диалогов: без `platformId` это все входящие площадки воркспейса, `channels` читает канал ВХОДЯЩИХ контакта, период — по дате оплаты, волновые измерения у органики пусты. */
11733
+ origin?: components["parameters"]["BroadcastPaymentOrigin"];
11726
11734
  /** @description cohort — дата запуска; period — дата события; entry — дата входа в сегмент (segment_entered_at: регистрация, конец серии, предсписок). В entry строки без даты входа выпадают всегда, включая mode=all, а события атрибутируются когортно. */
11727
11735
  view?: components["parameters"]["BroadcastView"];
11728
11736
  /** @description Конкретный день кликнутой ячейки (МСК). */
@@ -12074,6 +12082,8 @@ export interface paths {
12074
12082
  freshness?: components["parameters"]["BroadcastFreshness"];
12075
12083
  /** @description Мессенджеры волны (транспорты GetCourse + UNKNOWN — канал не определён), мультивыбор. Деньги фильтруются по скалярному каналу сделки. */
12076
12084
  channels?: components["parameters"]["BroadcastChannels"];
12085
+ /** @description Чьи деньги показывать. `outbound` — рассылок: органические заказы и карточки оплат с органическим якорем исключены. `inbound` — органических диалогов: без `platformId` это все входящие площадки воркспейса, `channels` читает канал ВХОДЯЩИХ контакта, период — по дате оплаты, волновые измерения у органики пусты. */
12086
+ origin?: components["parameters"]["BroadcastPaymentOrigin"];
12077
12087
  /** @description Сегмент очереди. `resolved` = `confirmed` + `rejected` одним списком; UI пользуется раздельными сегментами, выгрузке чаще нужен общий. */
12078
12088
  view?: "decidable" | "external_mailing" | "excluded" | "confirmed" | "rejected" | "resolved" | "potential";
12079
12089
  /** @description Режим атрибуции для сегмента `potential`: `cohort` датирует по волне, `period` — по оплате. Отдельное имя потому, что `view` занят сегмент-переключателем; остальные сегменты параметр игнорируют. */
@@ -12153,6 +12163,8 @@ export interface paths {
12153
12163
  freshness?: components["parameters"]["BroadcastFreshness"];
12154
12164
  /** @description Мессенджеры волны (транспорты GetCourse + UNKNOWN — канал не определён), мультивыбор. Деньги фильтруются по скалярному каналу сделки. */
12155
12165
  channels?: components["parameters"]["BroadcastChannels"];
12166
+ /** @description Чьи деньги показывать. `outbound` — рассылок: органические заказы и карточки оплат с органическим якорем исключены. `inbound` — органических диалогов: без `platformId` это все входящие площадки воркспейса, `channels` читает канал ВХОДЯЩИХ контакта, период — по дате оплаты, волновые измерения у органики пусты. */
12167
+ origin?: components["parameters"]["BroadcastPaymentOrigin"];
12156
12168
  };
12157
12169
  header?: never;
12158
12170
  path: {
@@ -20487,6 +20499,11 @@ export interface components {
20487
20499
  contactId: string;
20488
20500
  /** @description Пин заказа для штампа полей сделки. */
20489
20501
  dealId?: string;
20502
+ /**
20503
+ * Format: date-time
20504
+ * @description Момент регистрации, по которой человек попал в сегмент (ISO 8601, зона ОБЯЗАТЕЛЬНА): предохранитель держит только заявки и оплаты после этой регистрации, более ранние не держат. Не передан — заявки и оплаты судятся за всю историю человека (с 15.09.2026).
20505
+ */
20506
+ registeredAt?: string;
20490
20507
  /**
20491
20508
  * Format: date-time
20492
20509
  * @description Точный момент входа контакта в когорту (ISO 8601, зона ОБЯЗАТЕЛЬНА — …Z либо ±ЧЧ:ММ). На нём считается свежесть в «Аналитике рассылок»: возраст = время отправки минус segmentEnteredAt. Заполняется, когда предсписок собран ПРАВИЛОМ и у каждой строки есть свой момент события (например eventAt регистрации). Не передан — возраст строки остаётся неизвестным. Дату запуска сюда подставлять нельзя: она схлопнула бы месяцы когорт в одну корзину.
@@ -20534,10 +20551,12 @@ export interface components {
20534
20551
  alreadyGreeted: number;
20535
20552
  /** @description Идёт эпизод регистрации: приветствие ДОЛЖНЫ и не отдали либо подготовлен повторный вход на новый эфир. Считается ПО ЧЕЛОВЕКУ, без скоупа площадки. */
20536
20553
  activeEpisode: number;
20554
+ /** @description Пауза повтора сегмента (с 16.09.2026): этим сегментом человеку уже писали, после отправки он зарегистрировался снова, и расписание повторит ему сегмент, но пауза после прошлой отправки ещё не прошла. Только у запуска расписания с включённым повтором; у ручного запуска всегда 0. */
20555
+ resendPause: number;
20537
20556
  /** @description Тихий период: человека трогали (нашей отправкой либо шагом календарной цепочки) внутри окна. Окно резолвится настройками — перекрытие рассылки, затем площадка, затем воркспейс, затем 0. По умолчанию 0, то есть правило выключено, пока оператор его не выставит; рекомендация — 7 суток. Волна школы касанием НЕ считается. Расписания судятся своим cooldownDays. */
20538
20557
  cooldown: number;
20539
20558
  };
20540
- /** @description Тот же ТЕКСТ уже занят в журнале касаний под ДРУГИМ ярлыком. Отдельно от blockedBy: это не правило владельца, а атомарное право — «тот же текст не дважды» держится строкой журнала, а не читающей проверкой. */
20559
+ /** @description Касание этого сегмента уже занято в журнале касаний под другим именем (строка продолжения до 16.09.2026, старое продолжение этим текстом без ярлыка) либо тот же ТЕКСТ уходил человеку любым сегментом меньше трёх суток назад. Только у продолжения расписания; отдельно от blockedBy: claim журнала такие строки не видит, их держит читающая проверка. */
20541
20560
  touchClaimed: number;
20542
20561
  /** @description ИНФОРМАЦИЯ, а не запрет: этим же ярлыком человека рассылал ВНЕШНИЙ механизм — волна школы своими процессами либо шаблон Wazzup. Наш догон в мессенджерах уйдёт как обычно: так работает штатный процесс. В отсев это число НЕ входит. */
20543
20562
  externalWaveTouched: number;
@@ -20789,11 +20808,47 @@ export interface components {
20789
20808
  } | null;
20790
20809
  /** @description Сколько отправок ушло ВСЛЕПУЮ: канал взят резервным транспортом площадки, а не доказан привязками контакта или его ответом. Это ПОДМНОЖЕСТВО sentCount, а не отдельный исход — сообщение ушло. Без него «доставлено в мессенджер» и «упало в личный кабинет сайта» в истории неразличимы. null — у волн (отправляет процесс школы) и у запусков до появления счётчика; это НЕ то же, что 0. */
20791
20810
  sentWithoutChannelEvidence?: number | null;
20811
+ /** @description Ручная отправка пакетом: id строки = batchId, блоки — внутри. Null у одиночной отправки (и у пакета из одного блока), волн, авторассылки и автоприёма. У такой строки tracedOutcomes — null: поимённый разбор у блоков. */
20812
+ batch?: components["schemas"]["BroadcastLaunchBatch"] | null;
20813
+ /** @description Автоприём регистраций за день. sentCount = totalContacts = отправлено за день; status=running значит «день ещё идёт». Null у остальных источников. */
20814
+ registrationDay?: components["schemas"]["BroadcastLaunchRegistrationDay"] | null;
20792
20815
  /** Format: date-time */
20793
20816
  createdAt: string;
20794
20817
  /** Format: date-time */
20795
20818
  completedAt?: string | null;
20796
20819
  };
20820
+ BroadcastLaunchBatch: {
20821
+ /** Format: uuid */
20822
+ batchId: string;
20823
+ /** @description Блоки в порядке исполнения, включая ещё не стартовавшие. */
20824
+ blocks: components["schemas"]["BroadcastLaunchBatchBlock"][];
20825
+ };
20826
+ BroadcastLaunchBatchBlock: {
20827
+ position: number;
20828
+ /** @description Задача блока; null — блок ещё не стартовал. */
20829
+ importJobId: string | null;
20830
+ segment?: string | null;
20831
+ productCode?: string | null;
20832
+ funnel?: string | null;
20833
+ /** @enum {string} */
20834
+ status: "pending" | "running" | "completed" | "cancelled" | "failed";
20835
+ totalContacts: number;
20836
+ sentCount: number;
20837
+ failedCount: number;
20838
+ outcomes?: {
20839
+ [key: string]: number;
20840
+ } | null;
20841
+ tracedOutcomes?: {
20842
+ [key: string]: number;
20843
+ } | null;
20844
+ };
20845
+ BroadcastLaunchRegistrationDay: {
20846
+ /**
20847
+ * Format: date
20848
+ * @description Календарный день МСК корзины
20849
+ */
20850
+ day: string;
20851
+ };
20797
20852
  BroadcastLaunchesPage: {
20798
20853
  items: components["schemas"]["BroadcastLaunch"][];
20799
20854
  hasMore: boolean;
@@ -20984,6 +21039,20 @@ export interface components {
20984
21039
  } & {
20985
21040
  [key: string]: unknown;
20986
21041
  };
21042
+ FollowUpSequenceUpsertResult: components["schemas"]["PlatformSetupMutationResult"] & {
21043
+ /** @description Предупреждения к записанной цепочке. Поле есть, только когда предупреждения есть; запись при этом УЖЕ выполнена — повторять вызов не нужно. */
21044
+ warnings?: components["schemas"]["FollowUpStatusModeWarning"][];
21045
+ };
21046
+ /** @description Режим отбора «по статусу CRM» (filterMode=status или поле не задано) на этой площадке никого не выберет. Не запрет: по настройкам нельзя предсказать, что статусы не появятся. */
21047
+ FollowUpStatusModeWarning: {
21048
+ /**
21049
+ * @description NO_ACTIVE_CRM — в воркспейсе нет активной CRM; NO_CONTACT_STATUSES — контакты на площадке есть, но ни у одного нет статуса CRM.
21050
+ * @enum {string}
21051
+ */
21052
+ code: "FOLLOW_UP_STATUS_MODE_NO_ACTIVE_CRM" | "FOLLOW_UP_STATUS_MODE_NO_CONTACT_STATUSES";
21053
+ /** @description Самодостаточное объяснение с альтернативами (eventType или variable). */
21054
+ message: string;
21055
+ };
20987
21056
  TriggerActionCatalogItem: {
20988
21057
  actionType: string;
20989
21058
  title: string;
@@ -24963,7 +25032,7 @@ export interface components {
24963
25032
  name: string;
24964
25033
  /** @description Латиница, цифры, дефис, подчёркивание. Уникален в воркспейсе. */
24965
25034
  slug: string;
24966
- /** @description Абсолютный http(s)-адрес; иные схемы отвергаются. В ЗНАЧЕНИЯ query-параметров можно подставлять переменные контакта: {firstName}, {lastName}, {fullName}, {username}, {email}, {phone}, {getcourseUserId}, {getcourseDealId} — например ?email={email}&param1={getcourseUserId}&autologin=1. Переменная обязана составлять ЦЕЛОЕ значение параметра; в хосте, пути, фрагменте, имени параметра или вперемешку с текстом она отвергается (400). Подстановка происходит при ОТПРАВКЕ через плейсхолдер {{link:slug}}: в анонимном staticUrl переменные вычищаются, потому что за ним нет конкретного человека. Пустое у контакта значение убирает параметр из адреса целиком. */
25035
+ /** @description Абсолютный http(s)-адрес; иные схемы отвергаются. В ЗНАЧЕНИЯ query-параметров можно подставлять переменные контакта: {firstName}, {lastName}, {fullName}, {username}, {email}, {phone}, {getcourseUserId}, {getcourseDealId}, а также номер шага дожима {followUpStep} (p1, p2… — вне дожима параметр выпадает) — например ?email={email}&param1={getcourseUserId}&autologin=1. Переменная обязана составлять ЦЕЛОЕ значение параметра; в хосте, пути, фрагменте, имени параметра или вперемешку с текстом она отвергается (400). Подстановка происходит при ОТПРАВКЕ через плейсхолдер {{link:slug}}: в анонимном staticUrl переменные вычищаются, потому что за ним нет конкретного человека. Пустое у контакта значение убирает параметр из адреса целиком. */
24967
25036
  targetUrl: string;
24968
25037
  productCode?: string;
24969
25038
  };
@@ -26796,6 +26865,8 @@ export interface components {
26796
26865
  isConstant: boolean | null;
26797
26866
  /** @description CHANNEL scope (isConstant=true) only */
26798
26867
  constantValue: string | null;
26868
+ /** @description Value substituted instead of constantValue for a person we have already written to — cold mailings only (e.g. "это снова Светлана." instead of the full introduction). CHANNEL scope constants only; null otherwise. Absent in responses of backends before 16.09.2026. */
26869
+ repeatConstantValue?: string | null;
26799
26870
  /** Format: date-time */
26800
26871
  createdAt: string;
26801
26872
  /** Format: date-time */
@@ -26823,6 +26894,8 @@ export interface components {
26823
26894
  isConstant?: boolean;
26824
26895
  /** @description Required when scope=CHANNEL AND isConstant=true */
26825
26896
  constantValue?: string;
26897
+ /** @description CHANNEL scope with isConstant=true only. Value for a person we have already written to (cold mailings only). No curly braces; empty string or null — no value. */
26898
+ repeatConstantValue?: string | null;
26826
26899
  };
26827
26900
  UpdateVariableRequest: {
26828
26901
  /** @enum {string} */
@@ -26838,6 +26911,8 @@ export interface components {
26838
26911
  value?: string | null;
26839
26912
  /** @description CHANNEL scope only; null clears */
26840
26913
  constantValue?: string | null;
26914
+ /** @description CHANNEL scope constants only (checked against the stored variable). Value for a person we have already written to (cold mailings only). No curly braces; empty string or null clears. Unsetting isConstant clears it. */
26915
+ repeatConstantValue?: string | null;
26841
26916
  };
26842
26917
  DeleteVariableRequest: {
26843
26918
  /** @enum {string} */
@@ -27347,6 +27422,8 @@ export interface components {
27347
27422
  BroadcastFreshness: ("0-7" | "8-14" | "15-30" | "31-45" | "46-60" | "61+")[];
27348
27423
  /** @description Мессенджеры волны (транспорты GetCourse + UNKNOWN — канал не определён), мультивыбор. Деньги фильтруются по скалярному каналу сделки. */
27349
27424
  BroadcastChannels: string[];
27425
+ /** @description Чьи деньги показывать. `outbound` — рассылок: органические заказы и карточки оплат с органическим якорем исключены. `inbound` — органических диалогов: без `platformId` это все входящие площадки воркспейса, `channels` читает канал ВХОДЯЩИХ контакта, период — по дате оплаты, волновые измерения у органики пусты. */
27426
+ BroadcastPaymentOrigin: "outbound" | "inbound";
27350
27427
  /** @description cohort — дата запуска; period — дата события; entry — дата входа в сегмент (segment_entered_at: регистрация, конец серии, предсписок). В entry строки без даты входа выпадают всегда, включая mode=all, а события атрибутируются когортно. */
27351
27428
  BroadcastView: "cohort" | "period" | "entry";
27352
27429
  /** @description Конкретный день кликнутой ячейки (МСК). */
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@besales/mcp",
3
- "version": "0.47.1",
3
+ "version": "0.48.0",
4
4
  "description": "Model Context Protocol server for Animaly / Besales",
5
5
  "license": "MIT",
6
6
  "homepage": "https://github.com/be-sales/mcp#readme",