@escapenavigator/types 2.1.6 → 2.1.8

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.
Files changed (132) hide show
  1. package/dist/admin/aggregator-order/aggregator-order.ro.d.ts +16 -0
  2. package/dist/admin/aggregator-order/aggregator-order.ro.js +16 -0
  3. package/dist/admin/aggregator-order/create-aggregator-order.dto.d.ts +6 -0
  4. package/dist/admin/aggregator-order/create-aggregator-order.dto.js +6 -0
  5. package/dist/agregator/agregator-find-questroom-by-title.ro.js +4 -1
  6. package/dist/agregator/agregator-questroom-card.ro.d.ts +17 -0
  7. package/dist/agregator/agregator-questroom-card.ro.js +36 -2
  8. package/dist/agregator/agregator-questroom.ro.d.ts +2 -0
  9. package/dist/agregator/agregator-questroom.ro.js +14 -1
  10. package/dist/client/update-client-billing-defaults.dto.d.ts +5 -0
  11. package/dist/client/update-client-billing-defaults.dto.js +35 -0
  12. package/dist/constants/navigator-certificate-nominal-bounds.d.ts +8 -0
  13. package/dist/constants/navigator-certificate-nominal-bounds.js +45 -0
  14. package/dist/integrations/admin-integration.ro.d.ts +122 -0
  15. package/dist/integrations/admin-integration.ro.js +2 -0
  16. package/dist/integrations/booking-mode.enum.d.ts +24 -0
  17. package/dist/integrations/booking-mode.enum.js +28 -0
  18. package/dist/integrations/connect-integration.dto.d.ts +44 -0
  19. package/dist/integrations/connect-integration.dto.js +101 -0
  20. package/dist/integrations/connection-status.enum.d.ts +30 -0
  21. package/dist/integrations/connection-status.enum.js +34 -0
  22. package/dist/integrations/connector-capabilities.d.ts +85 -0
  23. package/dist/integrations/connector-capabilities.js +2 -0
  24. package/dist/integrations/credential-field.d.ts +80 -0
  25. package/dist/integrations/credential-field.js +2 -0
  26. package/dist/integrations/crm-integration-status.ro.d.ts +70 -0
  27. package/dist/integrations/crm-integration-status.ro.js +43 -0
  28. package/dist/integrations/incident-status.enum.d.ts +31 -0
  29. package/dist/integrations/incident-status.enum.js +36 -0
  30. package/dist/integrations/incident-type.enum.d.ts +30 -0
  31. package/dist/integrations/incident-type.enum.js +34 -0
  32. package/dist/integrations/integration-request-status.enum.d.ts +22 -0
  33. package/dist/integrations/integration-request-status.enum.js +26 -0
  34. package/dist/integrations/normalized-slot.d.ts +79 -0
  35. package/dist/integrations/normalized-slot.js +2 -0
  36. package/dist/integrations/partner-wire.d.ts +124 -0
  37. package/dist/integrations/partner-wire.js +26 -0
  38. package/dist/integrations/partners-booking-v1-schedule.dto.d.ts +11 -0
  39. package/dist/integrations/partners-booking-v1-schedule.dto.js +43 -0
  40. package/dist/integrations/partners-booking-v1.d.ts +124 -0
  41. package/dist/integrations/partners-booking-v1.js +2 -0
  42. package/dist/integrations/pending-booking-request.ro.d.ts +32 -0
  43. package/dist/integrations/pending-booking-request.ro.js +2 -0
  44. package/dist/integrations/provider-code.enum.d.ts +37 -0
  45. package/dist/integrations/provider-code.enum.js +41 -0
  46. package/dist/integrations/resource-match-status.enum.d.ts +25 -0
  47. package/dist/integrations/resource-match-status.enum.js +29 -0
  48. package/dist/integrations/run-operation.enum.d.ts +22 -0
  49. package/dist/integrations/run-operation.enum.js +26 -0
  50. package/dist/integrations/run-outcome.enum.d.ts +23 -0
  51. package/dist/integrations/run-outcome.enum.js +27 -0
  52. package/dist/navigator-certificate/create-navigator-certificate-sale.dto.d.ts +2 -2
  53. package/dist/navigator-certificate/create-navigator-certificate-sale.dto.js +4 -2
  54. package/dist/navigator-certificate/create-navigator-certificate-template.dto.d.ts +3 -2
  55. package/dist/navigator-certificate/create-navigator-certificate-template.dto.js +10 -2
  56. package/dist/navigator-certificate/enum/navigator-certificate-tag-nav-mode.enum.d.ts +5 -0
  57. package/dist/navigator-certificate/enum/navigator-certificate-tag-nav-mode.enum.js +9 -0
  58. package/dist/navigator-certificate/enum/navigator-certificate-tag-slug.enum.d.ts +23 -0
  59. package/dist/navigator-certificate/enum/navigator-certificate-tag-slug.enum.js +27 -0
  60. package/dist/navigator-certificate/index.d.ts +6 -0
  61. package/dist/navigator-certificate/index.js +6 -0
  62. package/dist/navigator-certificate/navigator-certificate-tag-catalog.d.ts +8 -0
  63. package/dist/navigator-certificate/navigator-certificate-tag-catalog.js +107 -0
  64. package/dist/navigator-certificate/navigator-certificate-tag-season.d.ts +8 -0
  65. package/dist/navigator-certificate/navigator-certificate-tag-season.js +86 -0
  66. package/dist/navigator-certificate/navigator-certificate-tag.ro.d.ts +8 -0
  67. package/dist/navigator-certificate/navigator-certificate-tag.ro.js +31 -0
  68. package/dist/navigator-certificate/navigator-certificate-template.ro.d.ts +3 -2
  69. package/dist/navigator-certificate/navigator-certificate-template.ro.js +5 -1
  70. package/dist/navigator-certificate/navigator-certificate-templates.ro.d.ts +16 -0
  71. package/dist/navigator-certificate/navigator-certificate-templates.ro.js +54 -1
  72. package/dist/navigator-certificate/update-navigator-certificate-tag.dto.d.ts +5 -0
  73. package/dist/navigator-certificate/update-navigator-certificate-tag.dto.js +30 -0
  74. package/dist/navigator-certificate/update-navigator-certificate-template.dto.d.ts +3 -2
  75. package/dist/navigator-certificate/update-navigator-certificate-template.dto.js +9 -2
  76. package/dist/openapi/external-booking/openapi-external-quote.dto.d.ts +22 -0
  77. package/dist/openapi/external-booking/openapi-external-quote.dto.js +43 -0
  78. package/dist/openapi/external-booking/openapi-external-quote.ro.d.ts +65 -0
  79. package/dist/openapi/external-booking/openapi-external-quote.ro.js +83 -0
  80. package/dist/openapi/morty/morty-timeslot.ro.js +13 -0
  81. package/dist/openapi/shared/openapi-questroom.ro.d.ts +1 -0
  82. package/dist/openapi/shared/openapi-questroom.ro.js +4 -0
  83. package/dist/openapi/slots/openapi-slot-add-hold.dto.d.ts +9 -0
  84. package/dist/openapi/slots/openapi-slot-add-hold.dto.js +6 -0
  85. package/dist/openapi/slots/openapi-slot-hold.ro.d.ts +50 -0
  86. package/dist/openapi/slots/openapi-slot-hold.ro.js +37 -0
  87. package/dist/openapi/slots/openapi-widget-slot.ro.d.ts +16 -1
  88. package/dist/openapi/slots/openapi-widget-slot.ro.js +11 -0
  89. package/dist/openapi/widget/bookeo/openapi-widget-bookeo-get-prices.dto.d.ts +9 -0
  90. package/dist/openapi/widget/bookeo/openapi-widget-bookeo-get-prices.dto.js +6 -0
  91. package/dist/openapi/widget/bookeo/openapi-widget-create-bookeo-order.dto.d.ts +19 -0
  92. package/dist/openapi/widget/bookeo/openapi-widget-create-bookeo-order.dto.js +18 -0
  93. package/dist/order/update-order.dto.d.ts +4 -0
  94. package/dist/order/update-order.dto.js +24 -0
  95. package/dist/parse-results/booking-provider-signatures.d.ts +35 -0
  96. package/dist/parse-results/booking-provider-signatures.js +93 -0
  97. package/dist/player/player-leaderboard.ro.d.ts +20 -0
  98. package/dist/player/player-leaderboard.ro.js +81 -0
  99. package/dist/player/player.ro.d.ts +30 -1
  100. package/dist/player/player.ro.js +85 -1
  101. package/dist/profile/admin-profile.ro.d.ts +3 -0
  102. package/dist/profile/admin-profile.ro.js +9 -0
  103. package/dist/profile/create-profile.dto.d.ts +1 -0
  104. package/dist/profile/create-profile.dto.js +6 -0
  105. package/dist/profile/enum/navigator-certificate-program.enum.d.ts +5 -0
  106. package/dist/profile/enum/navigator-certificate-program.enum.js +9 -0
  107. package/dist/profile/profile.ro.d.ts +2 -0
  108. package/dist/profile/profile.ro.js +5 -0
  109. package/dist/profile/query-admin-profile.dto.d.ts +2 -0
  110. package/dist/profile/query-admin-profile.dto.js +4 -0
  111. package/dist/questroom/agregator-questroom.ro.d.ts +1 -0
  112. package/dist/questroom/create-questroom-admin.dto.d.ts +1 -0
  113. package/dist/questroom/create-questroom-admin.dto.js +6 -0
  114. package/dist/questroom/create-questroom.dto.d.ts +4 -0
  115. package/dist/questroom/create-questroom.dto.js +6 -0
  116. package/dist/questroom/questroom.ro.d.ts +1 -0
  117. package/dist/questroom/questroom.ro.js +4 -0
  118. package/dist/questroom/questrooms-list-admin.ro.d.ts +2 -0
  119. package/dist/questroom/questrooms-list-admin.ro.js +8 -0
  120. package/dist/rating-badge/create-rating-badge.dto.d.ts +9 -0
  121. package/dist/{questroom/bind-bookeo.dto.js → rating-badge/create-rating-badge.dto.js} +8 -7
  122. package/dist/rating-badge/enum/rating-badge-status.enum.d.ts +6 -0
  123. package/dist/rating-badge/enum/rating-badge-status.enum.js +10 -0
  124. package/dist/rating-badge/ranking-overview.ro.d.ts +65 -0
  125. package/dist/rating-badge/ranking-overview.ro.js +249 -0
  126. package/dist/rating-badge/rating-badge-admin.ro.d.ts +7 -0
  127. package/dist/rating-badge/rating-badge-admin.ro.js +33 -0
  128. package/dist/rating-badge/rating-badge.ro.d.ts +12 -0
  129. package/dist/rating-badge/rating-badge.ro.js +50 -0
  130. package/dist/tsconfig.build.tsbuildinfo +1 -1
  131. package/package.json +2 -2
  132. package/dist/questroom/bind-bookeo.dto.d.ts +0 -4
@@ -0,0 +1,5 @@
1
+ import { NavigatorCertificateTagNavModeEnum } from './enum/navigator-certificate-tag-nav-mode.enum';
2
+ export declare class UpdateNavigatorCertificateTagDto {
3
+ navMode?: NavigatorCertificateTagNavModeEnum;
4
+ sortOrder?: number;
5
+ }
@@ -0,0 +1,30 @@
1
+ "use strict";
2
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
3
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
6
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
7
+ };
8
+ var __metadata = (this && this.__metadata) || function (k, v) {
9
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
10
+ };
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ exports.UpdateNavigatorCertificateTagDto = void 0;
13
+ const class_transformer_1 = require("class-transformer");
14
+ const class_validator_1 = require("class-validator");
15
+ const navigator_certificate_tag_nav_mode_enum_1 = require("./enum/navigator-certificate-tag-nav-mode.enum");
16
+ class UpdateNavigatorCertificateTagDto {
17
+ }
18
+ exports.UpdateNavigatorCertificateTagDto = UpdateNavigatorCertificateTagDto;
19
+ __decorate([
20
+ (0, class_validator_1.IsOptional)(),
21
+ (0, class_validator_1.IsEnum)(navigator_certificate_tag_nav_mode_enum_1.NavigatorCertificateTagNavModeEnum),
22
+ (0, class_transformer_1.Expose)(),
23
+ __metadata("design:type", String)
24
+ ], UpdateNavigatorCertificateTagDto.prototype, "navMode", void 0);
25
+ __decorate([
26
+ (0, class_validator_1.IsOptional)(),
27
+ (0, class_validator_1.IsNumber)(),
28
+ (0, class_transformer_1.Expose)(),
29
+ __metadata("design:type", Number)
30
+ ], UpdateNavigatorCertificateTagDto.prototype, "sortOrder", void 0);
@@ -1,6 +1,7 @@
1
- import { CountriesEnum } from '../shared/enum/countries.enum';
1
+ import { NavigatorCertificateTagSlugEnum } from './enum/navigator-certificate-tag-slug.enum';
2
2
  export declare class UpdateNavigatorCertificateTemplateDto {
3
3
  order?: number;
4
4
  image?: string;
5
- countries?: CountriesEnum[];
5
+ featured?: boolean;
6
+ tags?: NavigatorCertificateTagSlugEnum[];
6
7
  }
@@ -12,6 +12,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
12
12
  exports.UpdateNavigatorCertificateTemplateDto = void 0;
13
13
  const class_transformer_1 = require("class-transformer");
14
14
  const class_validator_1 = require("class-validator");
15
+ const navigator_certificate_tag_slug_enum_1 = require("./enum/navigator-certificate-tag-slug.enum");
15
16
  class UpdateNavigatorCertificateTemplateDto {
16
17
  }
17
18
  exports.UpdateNavigatorCertificateTemplateDto = UpdateNavigatorCertificateTemplateDto;
@@ -28,10 +29,16 @@ __decorate([
28
29
  (0, class_transformer_1.Expose)(),
29
30
  __metadata("design:type", String)
30
31
  ], UpdateNavigatorCertificateTemplateDto.prototype, "image", void 0);
32
+ __decorate([
33
+ (0, class_validator_1.IsOptional)(),
34
+ (0, class_validator_1.IsBoolean)(),
35
+ (0, class_transformer_1.Expose)(),
36
+ __metadata("design:type", Boolean)
37
+ ], UpdateNavigatorCertificateTemplateDto.prototype, "featured", void 0);
31
38
  __decorate([
32
39
  (0, class_validator_1.IsOptional)(),
33
40
  (0, class_validator_1.IsArray)(),
34
- (0, class_validator_1.ArrayMinSize)(1),
41
+ (0, class_validator_1.IsEnum)(navigator_certificate_tag_slug_enum_1.NavigatorCertificateTagSlugEnum, { each: true }),
35
42
  (0, class_transformer_1.Expose)(),
36
43
  __metadata("design:type", Array)
37
- ], UpdateNavigatorCertificateTemplateDto.prototype, "countries", void 0);
44
+ ], UpdateNavigatorCertificateTemplateDto.prototype, "tags", void 0);
@@ -0,0 +1,22 @@
1
+ /**
2
+ * Запрос уточнения слота внешней системы перед записью.
3
+ *
4
+ * Одна ручка на всех провайдеров: что именно она спросит у чужой системы — цену,
5
+ * доступность или настоящее удержание — решают возможности коннектора, а не
6
+ * вызывающий. Виджету это знать не нужно и вредно: иначе каждая новая интеграция
7
+ * требовала бы правки виджета, а бандл виджета живёт в открытых вкладках сутками
8
+ * после деплоя.
9
+ */
10
+ export declare class OpenapiExternalQuoteDto {
11
+ questroomId: number;
12
+ /** Идентификатор слота в системе вендора — тот же, что пришёл в расписании. */
13
+ eventId: string;
14
+ /**
15
+ * Размер группы, если игрок его уже выбрал.
16
+ *
17
+ * Нужен только системам, которые считают сумму под конкретный состав и держат
18
+ * место под него же (Bookeo). Остальным он не требуется: они отдают цены на все
19
+ * допустимые размеры группы сразу, и игрок выбирает после.
20
+ */
21
+ players?: number;
22
+ }
@@ -0,0 +1,43 @@
1
+ "use strict";
2
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
3
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
6
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
7
+ };
8
+ var __metadata = (this && this.__metadata) || function (k, v) {
9
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
10
+ };
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ exports.OpenapiExternalQuoteDto = void 0;
13
+ const class_transformer_1 = require("class-transformer");
14
+ const class_validator_1 = require("class-validator");
15
+ const is_not_blank_1 = require("../../shared/is-not-blank");
16
+ /**
17
+ * Запрос уточнения слота внешней системы перед записью.
18
+ *
19
+ * Одна ручка на всех провайдеров: что именно она спросит у чужой системы — цену,
20
+ * доступность или настоящее удержание — решают возможности коннектора, а не
21
+ * вызывающий. Виджету это знать не нужно и вредно: иначе каждая новая интеграция
22
+ * требовала бы правки виджета, а бандл виджета живёт в открытых вкладках сутками
23
+ * после деплоя.
24
+ */
25
+ class OpenapiExternalQuoteDto {
26
+ }
27
+ exports.OpenapiExternalQuoteDto = OpenapiExternalQuoteDto;
28
+ __decorate([
29
+ (0, class_validator_1.IsPositive)(),
30
+ (0, class_transformer_1.Expose)(),
31
+ __metadata("design:type", Number)
32
+ ], OpenapiExternalQuoteDto.prototype, "questroomId", void 0);
33
+ __decorate([
34
+ (0, is_not_blank_1.IsNotBlank)(),
35
+ (0, class_transformer_1.Expose)(),
36
+ __metadata("design:type", String)
37
+ ], OpenapiExternalQuoteDto.prototype, "eventId", void 0);
38
+ __decorate([
39
+ (0, class_validator_1.IsPositive)(),
40
+ (0, class_validator_1.IsOptional)(),
41
+ (0, class_transformer_1.Expose)(),
42
+ __metadata("design:type", Number)
43
+ ], OpenapiExternalQuoteDto.prototype, "players", void 0);
@@ -0,0 +1,65 @@
1
+ import { IntegrationBookingModeEnum } from '../../integrations/booking-mode.enum';
2
+ /**
3
+ * Что известно про выбранный слот перед заполнением формы.
4
+ *
5
+ * Один ответ на всех провайдеров. Форма записи читает его как данные, а не как
6
+ * признак вендора: есть цены — рисует выбор размера группы, стоит
7
+ * `priceRequiresPlayers` — переспрашивает сумму при смене состава, пришёл
8
+ * `bookingMode: request` — предупреждает, что игру подтвердит человек. Ни одного
9
+ * `if (провайдер === …)` в виджете из этого не возникает, и следующая интеграция
10
+ * не потребует его правки.
11
+ */
12
+ export declare class OpenapiExternalQuoteRO {
13
+ /**
14
+ * Обслуживает ли квест ядро интеграций.
15
+ *
16
+ * `false` — уточнять нечего, и это не ошибка: у квеста, подключённого когда-то
17
+ * вручную, настройки лежат в легаси-таблицах, и записывать его нужно старой
18
+ * ручкой. Форма в этом случае работает как работала.
19
+ */
20
+ served: boolean;
21
+ /**
22
+ * Цены по размерам групп в минорных единицах: `{ '2': 5000, '4': 8800 }`.
23
+ *
24
+ * Формат намеренно совпадает с `slot.tariff.price` и `hold.prices`: три
25
+ * источника одних и тех же данных форма читает одним кодом, иначе появился бы
26
+ * третий способ ошибиться в валюте.
27
+ */
28
+ prices?: Record<string, number>;
29
+ /** Границы группы у вендора — бывают строже наших в каталоге. */
30
+ playersMin?: number;
31
+ playersMax?: number;
32
+ /** Свободные места на это время, если вендор их сообщает. */
33
+ seatsAvailable?: number;
34
+ /**
35
+ * Валюта вендора. Может расходиться с валютой профиля, и тогда форматировать
36
+ * сумму нужно по ней: иначе немецкий квест показывает евро рублями.
37
+ */
38
+ currency?: string;
39
+ /** Итоговая сумма, если вендор назвал её под запрошенный состав. */
40
+ price?: number;
41
+ /**
42
+ * Токен настоящего удержания у вендора — у систем, где место держится на их
43
+ * стороне. Форма обязана вернуть его вместе с бронью: без токена вендор бронь
44
+ * примет, но место между выбором времени и отправкой формы никто не держал.
45
+ */
46
+ holdToken?: string;
47
+ /** Когда удержание истечёт, UTC ISO. */
48
+ holdExpiresAt?: string;
49
+ /**
50
+ * Сумму вендор считает только под конкретный состав группы.
51
+ *
52
+ * `true` — форма обязана переспросить цену при смене числа игроков, и до
53
+ * выбора состава сумма неизвестна вовсе (так у Bookeo: «сколько стоит» и
54
+ * «держим место» у него один и тот же вызов).
55
+ */
56
+ priceRequiresPlayers: boolean;
57
+ /**
58
+ * Чем закончится отправка формы.
59
+ *
60
+ * `request` — бронь уедет заявкой, и игру подтвердит человек. Сказать об этом
61
+ * до заполнения формы честнее, чем после: игрок иначе прочитает «заявка
62
+ * отправлена» как отказ.
63
+ */
64
+ bookingMode?: IntegrationBookingModeEnum;
65
+ }
@@ -0,0 +1,83 @@
1
+ "use strict";
2
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
3
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
6
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
7
+ };
8
+ var __metadata = (this && this.__metadata) || function (k, v) {
9
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
10
+ };
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ exports.OpenapiExternalQuoteRO = void 0;
13
+ const swagger_1 = require("@nestjs/swagger");
14
+ const class_transformer_1 = require("class-transformer");
15
+ const booking_mode_enum_1 = require("../../integrations/booking-mode.enum");
16
+ /**
17
+ * Что известно про выбранный слот перед заполнением формы.
18
+ *
19
+ * Один ответ на всех провайдеров. Форма записи читает его как данные, а не как
20
+ * признак вендора: есть цены — рисует выбор размера группы, стоит
21
+ * `priceRequiresPlayers` — переспрашивает сумму при смене состава, пришёл
22
+ * `bookingMode: request` — предупреждает, что игру подтвердит человек. Ни одного
23
+ * `if (провайдер === …)` в виджете из этого не возникает, и следующая интеграция
24
+ * не потребует его правки.
25
+ */
26
+ class OpenapiExternalQuoteRO {
27
+ }
28
+ exports.OpenapiExternalQuoteRO = OpenapiExternalQuoteRO;
29
+ __decorate([
30
+ (0, swagger_1.ApiProperty)({ description: 'Whether the quest is served by the integrations core.' }),
31
+ (0, class_transformer_1.Expose)(),
32
+ __metadata("design:type", Boolean)
33
+ ], OpenapiExternalQuoteRO.prototype, "served", void 0);
34
+ __decorate([
35
+ (0, swagger_1.ApiProperty)({ required: false, example: { '2': 5000, '4': 8800 } }),
36
+ (0, class_transformer_1.Expose)(),
37
+ __metadata("design:type", Object)
38
+ ], OpenapiExternalQuoteRO.prototype, "prices", void 0);
39
+ __decorate([
40
+ (0, swagger_1.ApiProperty)({ required: false, example: 2 }),
41
+ (0, class_transformer_1.Expose)(),
42
+ __metadata("design:type", Number)
43
+ ], OpenapiExternalQuoteRO.prototype, "playersMin", void 0);
44
+ __decorate([
45
+ (0, swagger_1.ApiProperty)({ required: false, example: 6 }),
46
+ (0, class_transformer_1.Expose)(),
47
+ __metadata("design:type", Number)
48
+ ], OpenapiExternalQuoteRO.prototype, "playersMax", void 0);
49
+ __decorate([
50
+ (0, swagger_1.ApiProperty)({ required: false, example: 4 }),
51
+ (0, class_transformer_1.Expose)(),
52
+ __metadata("design:type", Number)
53
+ ], OpenapiExternalQuoteRO.prototype, "seatsAvailable", void 0);
54
+ __decorate([
55
+ (0, swagger_1.ApiProperty)({ required: false, example: 'EUR' }),
56
+ (0, class_transformer_1.Expose)(),
57
+ __metadata("design:type", String)
58
+ ], OpenapiExternalQuoteRO.prototype, "currency", void 0);
59
+ __decorate([
60
+ (0, swagger_1.ApiProperty)({ required: false, example: 8800 }),
61
+ (0, class_transformer_1.Expose)(),
62
+ __metadata("design:type", Number)
63
+ ], OpenapiExternalQuoteRO.prototype, "price", void 0);
64
+ __decorate([
65
+ (0, swagger_1.ApiProperty)({ required: false }),
66
+ (0, class_transformer_1.Expose)(),
67
+ __metadata("design:type", String)
68
+ ], OpenapiExternalQuoteRO.prototype, "holdToken", void 0);
69
+ __decorate([
70
+ (0, swagger_1.ApiProperty)({ required: false }),
71
+ (0, class_transformer_1.Expose)(),
72
+ __metadata("design:type", String)
73
+ ], OpenapiExternalQuoteRO.prototype, "holdExpiresAt", void 0);
74
+ __decorate([
75
+ (0, swagger_1.ApiProperty)({ example: false }),
76
+ (0, class_transformer_1.Expose)(),
77
+ __metadata("design:type", Boolean)
78
+ ], OpenapiExternalQuoteRO.prototype, "priceRequiresPlayers", void 0);
79
+ __decorate([
80
+ (0, swagger_1.ApiProperty)({ required: false, enum: booking_mode_enum_1.IntegrationBookingModeEnum }),
81
+ (0, class_transformer_1.Expose)(),
82
+ __metadata("design:type", String)
83
+ ], OpenapiExternalQuoteRO.prototype, "bookingMode", void 0);
@@ -127,3 +127,16 @@ __decorate([
127
127
  (0, class_transformer_1.Expose)(),
128
128
  __metadata("design:type", String)
129
129
  ], MortyTimeslotRO.prototype, "deadline", void 0);
130
+ /**
131
+ * Страховка на компиляции: то, что мы отдаём наружу, обязано быть корректным
132
+ * объектом Morty-стандарта. Пока схема жила в двух копиях (здесь и в
133
+ * `partner-client.service.ts`), переименовать или потерять поле в одной из них
134
+ * можно было незаметно — а мы обещаем партнёрам побайтовое зеркало и
135
+ * возможность переиспользовать их API для Morty как есть.
136
+ *
137
+ * Проверка односторонняя: canonical-тип шире (`product_id` там
138
+ * `number | string`, потому что входящие партнёры присылают и строки), и это
139
+ * нормально. Ломаться должно обратное — если RO разойдётся с контрактом.
140
+ */
141
+ const assertMortyTimeslotMatchesWire = (slot) => slot;
142
+ void assertMortyTimeslotMatchesWire;
@@ -50,6 +50,7 @@ export declare class OpenapiQuestroomRO {
50
50
  difficult: number;
51
51
  photo: string;
52
52
  photos: string[];
53
+ previewVideo?: string;
53
54
  legend: string;
54
55
  time: number;
55
56
  ticketSystem: boolean;
@@ -164,6 +164,10 @@ __decorate([
164
164
  (0, class_transformer_1.Expose)(),
165
165
  __metadata("design:type", Array)
166
166
  ], OpenapiQuestroomRO.prototype, "photos", void 0);
167
+ __decorate([
168
+ (0, class_transformer_1.Expose)(),
169
+ __metadata("design:type", String)
170
+ ], OpenapiQuestroomRO.prototype, "previewVideo", void 0);
167
171
  __decorate([
168
172
  (0, class_transformer_1.Expose)(),
169
173
  __metadata("design:type", String)
@@ -5,4 +5,13 @@ export declare class OpenapiSlotAddHoldDto {
5
5
  profileId: string;
6
6
  participants: number;
7
7
  productId: string;
8
+ /**
9
+ * Квест, чей слот держим. Нужен, чтобы уточнить цену и размер группы в
10
+ * системах, которые называют их по конкретному слоту, а не в расписании.
11
+ *
12
+ * Необязательное: старые бандлы виджета живут в открытых вкладках и на
13
+ * закешированных страницах ещё сутки после деплоя, и обязательное поле
14
+ * сломало бы им запись целиком. Без него уточнения просто не будет.
15
+ */
16
+ questroomId?: number;
8
17
  }
@@ -43,3 +43,9 @@ __decorate([
43
43
  (0, class_transformer_1.Expose)(),
44
44
  __metadata("design:type", String)
45
45
  ], OpenapiSlotAddHoldDto.prototype, "productId", void 0);
46
+ __decorate([
47
+ (0, class_validator_1.IsPositive)(),
48
+ (0, class_validator_1.IsOptional)(),
49
+ (0, class_transformer_1.Expose)(),
50
+ __metadata("design:type", Number)
51
+ ], OpenapiSlotAddHoldDto.prototype, "questroomId", void 0);
@@ -1,3 +1,4 @@
1
+ import { IntegrationBookingModeEnum } from '../../integrations/booking-mode.enum';
1
2
  import { SlotType } from './openapi-widget-slot.ro';
2
3
  export declare class OpenapiSlotHoldRO {
3
4
  id: string;
@@ -6,4 +7,53 @@ export declare class OpenapiSlotHoldRO {
6
7
  profileId: string;
7
8
  type: SlotType;
8
9
  expiration: Date;
10
+ /**
11
+ * Цены по размерам групп в минорных единицах: `{ '2': 5000, '4': 8800 }`.
12
+ *
13
+ * Приходит только от систем, которые называют цену по конкретному слоту, а не
14
+ * в расписании (Regiondo и подобные продают билеты, и сумма зависит от числа
15
+ * игроков). Спрашивать это заранее на всю неделю нельзя — запрос идёт на один
16
+ * слот, — поэтому цены уточняются здесь, на клике по выбранному времени.
17
+ *
18
+ * Формат совпадает с `slot.tariff.price`: форма записи читает оба источника
19
+ * одним кодом.
20
+ */
21
+ prices?: Record<string, number>;
22
+ /** Границы группы у вендора — могут быть строже наших в каталоге. */
23
+ playersMin?: number;
24
+ playersMax?: number;
25
+ /** Свободные места на это время, если вендор их сообщает. */
26
+ seatsAvailable?: number;
27
+ /**
28
+ * Валюта вендора. Указана, когда она может расходиться с валютой профиля:
29
+ * формат суммы берётся отсюда, иначе немецкий квест показывал бы евро рублями.
30
+ */
31
+ currency?: string;
32
+ /**
33
+ * Токен настоящего удержания у вендора — у систем, где место держится на их
34
+ * стороне (Bookeo). Форма обязана вернуть его вместе с бронью: без токена
35
+ * вендор бронь примет, но место между выбором времени и отправкой формы никто
36
+ * не держал, и слот мог уйти другому игроку.
37
+ */
38
+ externalHoldToken?: string;
39
+ /**
40
+ * Итоговая сумма из удержания, минорные единицы. У таких систем цену иначе не
41
+ * узнать — она появляется только внутри hold.
42
+ */
43
+ price?: number;
44
+ /**
45
+ * Сумму вендор считает только под конкретный состав группы, и до выбора она
46
+ * неизвестна вовсе (так у Bookeo: «сколько стоит» и «держим место» у него один
47
+ * и тот же вызов). Форма по этому признаку переспрашивает цену при смене числа
48
+ * игроков — иначе показала бы пустое место там, где игрок ждёт цифру.
49
+ */
50
+ priceRequiresPlayers?: boolean;
51
+ /**
52
+ * Чем закончится отправка формы: `instant` — игрок записан, `request` — уехала
53
+ * заявка, и игру подтверждает человек.
54
+ *
55
+ * Сказать об этом до заполнения формы честнее, чем после: «заявка отправлена»
56
+ * вместо ожидаемого «вы записаны» игрок читает как отказ.
57
+ */
58
+ bookingMode?: IntegrationBookingModeEnum;
9
59
  }
@@ -11,6 +11,7 @@ var __metadata = (this && this.__metadata) || function (k, v) {
11
11
  Object.defineProperty(exports, "__esModule", { value: true });
12
12
  exports.OpenapiSlotHoldRO = void 0;
13
13
  const class_transformer_1 = require("class-transformer");
14
+ const booking_mode_enum_1 = require("../../integrations/booking-mode.enum");
14
15
  class OpenapiSlotHoldRO {
15
16
  }
16
17
  exports.OpenapiSlotHoldRO = OpenapiSlotHoldRO;
@@ -38,3 +39,39 @@ __decorate([
38
39
  (0, class_transformer_1.Expose)(),
39
40
  __metadata("design:type", Date)
40
41
  ], OpenapiSlotHoldRO.prototype, "expiration", void 0);
42
+ __decorate([
43
+ (0, class_transformer_1.Expose)(),
44
+ __metadata("design:type", Object)
45
+ ], OpenapiSlotHoldRO.prototype, "prices", void 0);
46
+ __decorate([
47
+ (0, class_transformer_1.Expose)(),
48
+ __metadata("design:type", Number)
49
+ ], OpenapiSlotHoldRO.prototype, "playersMin", void 0);
50
+ __decorate([
51
+ (0, class_transformer_1.Expose)(),
52
+ __metadata("design:type", Number)
53
+ ], OpenapiSlotHoldRO.prototype, "playersMax", void 0);
54
+ __decorate([
55
+ (0, class_transformer_1.Expose)(),
56
+ __metadata("design:type", Number)
57
+ ], OpenapiSlotHoldRO.prototype, "seatsAvailable", void 0);
58
+ __decorate([
59
+ (0, class_transformer_1.Expose)(),
60
+ __metadata("design:type", String)
61
+ ], OpenapiSlotHoldRO.prototype, "currency", void 0);
62
+ __decorate([
63
+ (0, class_transformer_1.Expose)(),
64
+ __metadata("design:type", String)
65
+ ], OpenapiSlotHoldRO.prototype, "externalHoldToken", void 0);
66
+ __decorate([
67
+ (0, class_transformer_1.Expose)(),
68
+ __metadata("design:type", Number)
69
+ ], OpenapiSlotHoldRO.prototype, "price", void 0);
70
+ __decorate([
71
+ (0, class_transformer_1.Expose)(),
72
+ __metadata("design:type", Boolean)
73
+ ], OpenapiSlotHoldRO.prototype, "priceRequiresPlayers", void 0);
74
+ __decorate([
75
+ (0, class_transformer_1.Expose)(),
76
+ __metadata("design:type", String)
77
+ ], OpenapiSlotHoldRO.prototype, "bookingMode", void 0);
@@ -1,7 +1,7 @@
1
1
  import { SlotDiscountTypeEnum } from '../../slot/enum/slot-discount-type.enum';
2
2
  import { OpenapiBokingRuleRO } from '../shared/openapi-booking-rule.ro';
3
3
  import { OpenapiSlotTariffRO } from './openapi-slot-tariff.ro';
4
- export type SlotType = 'bookeo' | 'crm' | 'myerp' | 'kvestadmin' | 'partner';
4
+ export type SlotType = 'bookeo' | 'crm' | 'myerp' | 'kvestadmin' | 'partner' | 'regiondo' | 'octo';
5
5
  export declare class OpenapiSlotRO {
6
6
  type: SlotType;
7
7
  questroomId: number;
@@ -22,4 +22,19 @@ export declare class OpenapiSlotRO {
22
22
  rule?: OpenapiBokingRuleRO;
23
23
  privateEvent?: boolean;
24
24
  excludedUpsellingIds?: number[];
25
+ /**
26
+ * Слот пришёл из ядра интеграций (v2), и записывать по нему нужно едиными
27
+ * ручками `/openapi/external/booking/*`, а не ручкой конкретного вендора.
28
+ *
29
+ * **Зачем отдельный признак, если есть `type`.** `type` отвечает на другой
30
+ * вопрос — «чья это система», и одна и та же система бывает подключена дважды:
31
+ * квестом самостоятельно (доступы в `integration_connections`, обслуживает
32
+ * ядро) и когда-то нами вручную (настройки в легаси-таблицах, обслуживает
33
+ * старая ветка). Формы записи у них разные, потому что разные ручки, и
34
+ * различить их по `type` нельзя в принципе.
35
+ *
36
+ * Признак исчезнет вместе с легаси-ветками: когда все живые квесты переедут в
37
+ * ядро, единый путь останется единственным.
38
+ */
39
+ servedByCore?: boolean;
25
40
  }
@@ -24,6 +24,8 @@ var SType;
24
24
  SType["MYERP"] = "myerp";
25
25
  SType["KVESTADMIN"] = "kvestadmin";
26
26
  SType["PARTNER"] = "partner";
27
+ SType["REGIONDO"] = "regiondo";
28
+ SType["OCTO"] = "octo";
27
29
  })(SType || (SType = {}));
28
30
  class OpenapiSlotRO {
29
31
  }
@@ -204,3 +206,12 @@ __decorate([
204
206
  (0, class_transformer_1.Expose)(),
205
207
  __metadata("design:type", Array)
206
208
  ], OpenapiSlotRO.prototype, "excludedUpsellingIds", void 0);
209
+ __decorate([
210
+ (0, swagger_1.ApiProperty)({
211
+ description: 'When true, the slot is served by the integrations core and must be booked through `/openapi/external/booking/*` instead of a vendor-specific endpoint.',
212
+ required: false,
213
+ example: true,
214
+ }),
215
+ (0, class_transformer_1.Expose)(),
216
+ __metadata("design:type", Boolean)
217
+ ], OpenapiSlotRO.prototype, "servedByCore", void 0);
@@ -4,4 +4,13 @@ export declare class OpenapiSlotGetBookeoPriceDto {
4
4
  holdId: string;
5
5
  productId: string;
6
6
  profileId: string;
7
+ /**
8
+ * Квест, чей слот считаем. Нужен, чтобы понять, обслуживает ли его ядро v2:
9
+ * у самоподключившегося квеста легаси-ключа аккаунта нет, и цену приходится
10
+ * спрашивать через подключение.
11
+ *
12
+ * Необязательное — старые бандлы виджета живут в открытых вкладках ещё сутки
13
+ * после деплоя, и обязательное поле сломало бы им расчёт цены целиком.
14
+ */
15
+ questroomId?: number;
7
16
  }
@@ -41,3 +41,9 @@ __decorate([
41
41
  (0, class_transformer_1.Expose)(),
42
42
  __metadata("design:type", String)
43
43
  ], OpenapiSlotGetBookeoPriceDto.prototype, "profileId", void 0);
44
+ __decorate([
45
+ (0, class_validator_1.IsOptional)(),
46
+ (0, class_validator_1.IsPositive)(),
47
+ (0, class_transformer_1.Expose)(),
48
+ __metadata("design:type", Number)
49
+ ], OpenapiSlotGetBookeoPriceDto.prototype, "questroomId", void 0);
@@ -7,4 +7,23 @@ export declare class OpenapiCreateBookeoOrderDto extends ClientFormDto {
7
7
  participants: number;
8
8
  productId: string;
9
9
  previousHoldId: string;
10
+ /**
11
+ * Дата и время слота как есть (`yyyy-MM-dd` и `HH:mm`).
12
+ *
13
+ * Поле `date` выше — человекочитаемая строка для письма («31 December 2026,
14
+ * 18:00»), и разбирать её обратно, чтобы записать заказ, значит зависеть от
15
+ * языка и формата вывода. Заказ в v2 создаётся по этим двум полям.
16
+ *
17
+ * Необязательные: без них бронь идёт прежним путём, как у старых бандлов
18
+ * виджета в открытых вкладках.
19
+ */
20
+ slotDate?: string;
21
+ slotTime?: string;
22
+ /**
23
+ * Сумма, которую вендор назвал на шаге цены, минорные единицы. Приходит от
24
+ * клиента, потому что удержание живёт у вендора и второй раз его сумму не
25
+ * спросить, а заказу цена нужна: по ней считается комиссия и уходит письмо
26
+ * игроку.
27
+ */
28
+ price?: number;
10
29
  }
@@ -52,3 +52,21 @@ __decorate([
52
52
  (0, class_transformer_1.Expose)(),
53
53
  __metadata("design:type", String)
54
54
  ], OpenapiCreateBookeoOrderDto.prototype, "previousHoldId", void 0);
55
+ __decorate([
56
+ (0, class_validator_1.IsOptional)(),
57
+ (0, class_validator_1.IsString)(),
58
+ (0, class_transformer_1.Expose)(),
59
+ __metadata("design:type", String)
60
+ ], OpenapiCreateBookeoOrderDto.prototype, "slotDate", void 0);
61
+ __decorate([
62
+ (0, class_validator_1.IsOptional)(),
63
+ (0, class_validator_1.IsString)(),
64
+ (0, class_transformer_1.Expose)(),
65
+ __metadata("design:type", String)
66
+ ], OpenapiCreateBookeoOrderDto.prototype, "slotTime", void 0);
67
+ __decorate([
68
+ (0, class_validator_1.IsOptional)(),
69
+ (0, class_validator_1.IsPositive)(),
70
+ (0, class_transformer_1.Expose)(),
71
+ __metadata("design:type", Number)
72
+ ], OpenapiCreateBookeoOrderDto.prototype, "price", void 0);
@@ -6,4 +6,8 @@ export declare class UpdateOrderDto {
6
6
  mode?: string;
7
7
  locked?: boolean;
8
8
  additionalInfo?: string;
9
+ billedAsCompany?: boolean;
10
+ billingOrganizationName?: string | null;
11
+ billingTaxId?: string | null;
12
+ billingAddress?: string | null;
9
13
  }
@@ -47,3 +47,27 @@ __decorate([
47
47
  (0, class_transformer_1.Expose)(),
48
48
  __metadata("design:type", String)
49
49
  ], UpdateOrderDto.prototype, "additionalInfo", void 0);
50
+ __decorate([
51
+ (0, class_validator_1.IsOptional)(),
52
+ (0, class_validator_1.IsBoolean)(),
53
+ (0, class_transformer_1.Expose)(),
54
+ __metadata("design:type", Boolean)
55
+ ], UpdateOrderDto.prototype, "billedAsCompany", void 0);
56
+ __decorate([
57
+ (0, class_validator_1.IsOptional)(),
58
+ (0, class_validator_1.IsString)(),
59
+ (0, class_transformer_1.Expose)(),
60
+ __metadata("design:type", String)
61
+ ], UpdateOrderDto.prototype, "billingOrganizationName", void 0);
62
+ __decorate([
63
+ (0, class_validator_1.IsOptional)(),
64
+ (0, class_validator_1.IsString)(),
65
+ (0, class_transformer_1.Expose)(),
66
+ __metadata("design:type", String)
67
+ ], UpdateOrderDto.prototype, "billingTaxId", void 0);
68
+ __decorate([
69
+ (0, class_validator_1.IsOptional)(),
70
+ (0, class_validator_1.IsString)(),
71
+ (0, class_transformer_1.Expose)(),
72
+ __metadata("design:type", String)
73
+ ], UpdateOrderDto.prototype, "billingAddress", void 0);