@escapenavigator/types 2.0.15 → 2.0.17
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/certificate-v2/certificate-design.ro.d.ts +1 -0
- package/dist/certificate-v2/certificate-design.ro.js +4 -0
- package/dist/certificate-v2/create-certificate-design.dto.d.ts +1 -0
- package/dist/certificate-v2/create-certificate-design.dto.js +6 -0
- package/dist/city/city.ro.d.ts +2 -0
- package/dist/city/update-city.dto.d.ts +2 -0
- package/dist/city/update-city.dto.js +6 -0
- package/dist/city-attraction/city-attraction-locale.ro.d.ts +3 -0
- package/dist/city-attraction/generate-attraction-audio.dto.d.ts +10 -0
- package/dist/city-attraction/generate-attraction-audio.dto.js +45 -0
- package/dist/city-attraction/generate-attraction-audio.ro.d.ts +3 -0
- package/dist/city-attraction/generate-attraction-audio.ro.js +2 -0
- package/dist/city-attraction/upsert-city-attraction-locale.dto.d.ts +2 -0
- package/dist/city-attraction/upsert-city-attraction-locale.dto.js +13 -0
- package/dist/city-person/city-person-attraction-link.dto.d.ts +1 -1
- package/dist/city-person/city-person-attraction-link.ro.d.ts +1 -1
- package/dist/city-person/city-person-locale.ro.d.ts +1 -1
- package/dist/city-person/upsert-city-person-locale.dto.d.ts +1 -1
- package/dist/openapi/certificates-v2/openapi-certificate-design.ro.d.ts +1 -0
- package/dist/openapi/certificates-v2/openapi-certificate-design.ro.js +4 -0
- package/dist/openapi/city-player/city-explore.ro.d.ts +98 -0
- package/dist/openapi/city-player/city-explore.ro.js +2 -0
- package/dist/openapi/city-player/city-player.ro.d.ts +11 -0
- package/dist/openapi/widget/openapi-resolve-promocode.ro.d.ts +2 -0
- package/dist/openapi/widget/openapi-resolve-promocode.ro.js +4 -0
- package/dist/openapi/widget/openapi-widget-info.ro.d.ts +6 -9
- package/dist/openapi/widget/openapi-widget-info.ro.js +4 -32
- package/dist/partners-portal/create-partner-attraction.dto.d.ts +1 -1
- package/dist/partners-portal/partner-city-quest.ro.d.ts +1 -1
- package/dist/profile/marketing-automation/marketing-automation-capabilities.js +2 -1
- package/dist/profile/marketing-automation/marketing-automation-config.dto.d.ts +2 -1
- package/dist/profile/notification-chanel/notification-chanel.ro.d.ts +3 -0
- package/dist/profile/notification-chanel/notification-chanel.ro.js +6 -0
- package/dist/profile/notification-chanel/test-notification-chanel.dto.d.ts +6 -0
- package/dist/profile/notification-chanel/test-notification-chanel.dto.js +29 -0
- package/dist/profile/notification-chanel/webhook-health.ro.d.ts +36 -0
- package/dist/profile/notification-chanel/webhook-health.ro.js +54 -0
- package/dist/profile/notification-chanel/webhook-test-result.ro.d.ts +11 -0
- package/dist/profile/notification-chanel/webhook-test-result.ro.js +42 -0
- package/dist/promocode/create-promocode.dto.d.ts +5 -0
- package/dist/promocode/create-promocode.dto.js +18 -3
- package/dist/promocode/emun/promocode-type.enum.d.ts +7 -1
- package/dist/promocode/emun/promocode-type.enum.js +6 -0
- package/dist/promocode/promocode.ro.d.ts +1 -0
- package/dist/promocode/promocode.ro.js +4 -0
- package/dist/tsconfig.build.tsbuildinfo +1 -1
- package/dist/widget/create-widget.dto.d.ts +1 -0
- package/dist/widget/create-widget.dto.js +7 -0
- package/dist/widget/widget.ro.d.ts +5 -0
- package/package.json +2 -2
|
@@ -43,6 +43,10 @@ __decorate([
|
|
|
43
43
|
(0, class_transformer_1.Expose)(),
|
|
44
44
|
__metadata("design:type", Boolean)
|
|
45
45
|
], CertificateDesignRO.prototype, "availablePickup", void 0);
|
|
46
|
+
__decorate([
|
|
47
|
+
(0, class_transformer_1.Expose)(),
|
|
48
|
+
__metadata("design:type", Boolean)
|
|
49
|
+
], CertificateDesignRO.prototype, "allowCustomNominal", void 0);
|
|
46
50
|
__decorate([
|
|
47
51
|
(0, class_transformer_1.Expose)(),
|
|
48
52
|
__metadata("design:type", String)
|
|
@@ -56,6 +56,12 @@ __decorate([
|
|
|
56
56
|
(0, class_transformer_1.Expose)(),
|
|
57
57
|
__metadata("design:type", Boolean)
|
|
58
58
|
], CreateCertificateDesignDto.prototype, "availablePickup", void 0);
|
|
59
|
+
__decorate([
|
|
60
|
+
(0, class_validator_1.IsBoolean)(),
|
|
61
|
+
(0, class_transformer_1.Transform)(({ value }) => checkBoolean({ value }, true)),
|
|
62
|
+
(0, class_transformer_1.Expose)(),
|
|
63
|
+
__metadata("design:type", Boolean)
|
|
64
|
+
], CreateCertificateDesignDto.prototype, "allowCustomNominal", void 0);
|
|
59
65
|
__decorate([
|
|
60
66
|
(0, class_validator_1.ValidateIf)((o) => !!o.pdfLink),
|
|
61
67
|
(0, class_validator_1.IsUrl)(),
|
package/dist/city/city.ro.d.ts
CHANGED
|
@@ -13,6 +13,8 @@ export declare class UpdateCityDto {
|
|
|
13
13
|
isAgglomeration?: boolean;
|
|
14
14
|
/** В городе есть метро. Управляет fetch-ом Places API для локаций. */
|
|
15
15
|
hasSubway?: boolean;
|
|
16
|
+
/** Город доступен в Routale Player (стартовый каталог и поиск). */
|
|
17
|
+
readyForRoutell?: boolean;
|
|
16
18
|
/**
|
|
17
19
|
* Город-родитель в агломерации. `null` снимает привязку.
|
|
18
20
|
* Положительное число — id центра в той же стране (валидируется на бэке).
|
|
@@ -53,6 +53,12 @@ __decorate([
|
|
|
53
53
|
(0, class_transformer_1.Expose)(),
|
|
54
54
|
__metadata("design:type", Boolean)
|
|
55
55
|
], UpdateCityDto.prototype, "hasSubway", void 0);
|
|
56
|
+
__decorate([
|
|
57
|
+
(0, class_validator_1.IsOptional)(),
|
|
58
|
+
(0, class_validator_1.IsBoolean)(),
|
|
59
|
+
(0, class_transformer_1.Expose)(),
|
|
60
|
+
__metadata("design:type", Boolean)
|
|
61
|
+
], UpdateCityDto.prototype, "readyForRoutell", void 0);
|
|
56
62
|
__decorate([
|
|
57
63
|
(0, class_validator_1.IsOptional)(),
|
|
58
64
|
(0, class_validator_1.IsInt)(),
|
|
@@ -9,6 +9,9 @@ export type CityAttractionLocaleRO = ResponseObject & {
|
|
|
9
9
|
description: string | null;
|
|
10
10
|
knownFor: string | null;
|
|
11
11
|
content: AttractionContent | null;
|
|
12
|
+
/** Озвучка guideTalk для языка локали. */
|
|
13
|
+
guideAudioUrl: string | null;
|
|
14
|
+
guideAudioDurationSec: number | null;
|
|
12
15
|
status: AttractionLocaleStatusEnum;
|
|
13
16
|
contentGeneratedAt: Date | null;
|
|
14
17
|
contentPromptVersion: string | null;
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { RiddleTtsMoodEnum } from '../questroom-riddle/enum/riddle-tts-mood.enum';
|
|
2
|
+
import { RiddleTtsVoiceEnum } from '../questroom-riddle/enum/riddle-tts-voice.enum';
|
|
3
|
+
import { Languages } from '../shared/enum/languages.enum';
|
|
4
|
+
export declare class GenerateAttractionAudioDto {
|
|
5
|
+
language: Languages;
|
|
6
|
+
/** Текст для озвучки. Если не передан — берётся locale.content.guideTalk. */
|
|
7
|
+
text?: string;
|
|
8
|
+
voice?: RiddleTtsVoiceEnum;
|
|
9
|
+
mood?: RiddleTtsMoodEnum;
|
|
10
|
+
}
|
|
@@ -0,0 +1,45 @@
|
|
|
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.GenerateAttractionAudioDto = void 0;
|
|
13
|
+
const class_transformer_1 = require("class-transformer");
|
|
14
|
+
const class_validator_1 = require("class-validator");
|
|
15
|
+
const riddle_tts_mood_enum_1 = require("../questroom-riddle/enum/riddle-tts-mood.enum");
|
|
16
|
+
const riddle_tts_voice_enum_1 = require("../questroom-riddle/enum/riddle-tts-voice.enum");
|
|
17
|
+
const languages_enum_1 = require("../shared/enum/languages.enum");
|
|
18
|
+
class GenerateAttractionAudioDto {
|
|
19
|
+
}
|
|
20
|
+
exports.GenerateAttractionAudioDto = GenerateAttractionAudioDto;
|
|
21
|
+
__decorate([
|
|
22
|
+
(0, class_validator_1.IsEnum)(languages_enum_1.Languages),
|
|
23
|
+
(0, class_transformer_1.Expose)(),
|
|
24
|
+
__metadata("design:type", String)
|
|
25
|
+
], GenerateAttractionAudioDto.prototype, "language", void 0);
|
|
26
|
+
__decorate([
|
|
27
|
+
(0, class_validator_1.IsOptional)(),
|
|
28
|
+
(0, class_validator_1.IsString)(),
|
|
29
|
+
(0, class_validator_1.MinLength)(1),
|
|
30
|
+
(0, class_validator_1.MaxLength)(12000),
|
|
31
|
+
(0, class_transformer_1.Expose)(),
|
|
32
|
+
__metadata("design:type", String)
|
|
33
|
+
], GenerateAttractionAudioDto.prototype, "text", void 0);
|
|
34
|
+
__decorate([
|
|
35
|
+
(0, class_validator_1.IsOptional)(),
|
|
36
|
+
(0, class_validator_1.IsEnum)(riddle_tts_voice_enum_1.RiddleTtsVoiceEnum),
|
|
37
|
+
(0, class_transformer_1.Expose)(),
|
|
38
|
+
__metadata("design:type", String)
|
|
39
|
+
], GenerateAttractionAudioDto.prototype, "voice", void 0);
|
|
40
|
+
__decorate([
|
|
41
|
+
(0, class_validator_1.IsOptional)(),
|
|
42
|
+
(0, class_validator_1.IsEnum)(riddle_tts_mood_enum_1.RiddleTtsMoodEnum),
|
|
43
|
+
(0, class_transformer_1.Expose)(),
|
|
44
|
+
__metadata("design:type", String)
|
|
45
|
+
], GenerateAttractionAudioDto.prototype, "mood", void 0);
|
|
@@ -7,6 +7,8 @@ export declare class UpsertCityAttractionLocaleDto {
|
|
|
7
7
|
description?: string | null;
|
|
8
8
|
knownFor?: string | null;
|
|
9
9
|
content?: AttractionContent | null;
|
|
10
|
+
guideAudioUrl?: string | null;
|
|
11
|
+
guideAudioDurationSec?: number | null;
|
|
10
12
|
status?: AttractionLocaleStatusEnum;
|
|
11
13
|
}
|
|
12
14
|
export declare class GenerateAttractionContentDto {
|
|
@@ -46,6 +46,19 @@ __decorate([
|
|
|
46
46
|
(0, class_transformer_1.Expose)(),
|
|
47
47
|
__metadata("design:type", Object)
|
|
48
48
|
], UpsertCityAttractionLocaleDto.prototype, "content", void 0);
|
|
49
|
+
__decorate([
|
|
50
|
+
(0, class_validator_1.IsOptional)(),
|
|
51
|
+
(0, class_validator_1.IsString)(),
|
|
52
|
+
(0, class_transformer_1.Expose)(),
|
|
53
|
+
__metadata("design:type", String)
|
|
54
|
+
], UpsertCityAttractionLocaleDto.prototype, "guideAudioUrl", void 0);
|
|
55
|
+
__decorate([
|
|
56
|
+
(0, class_validator_1.IsOptional)(),
|
|
57
|
+
(0, class_validator_1.IsInt)(),
|
|
58
|
+
(0, class_validator_1.Min)(0),
|
|
59
|
+
(0, class_transformer_1.Expose)(),
|
|
60
|
+
__metadata("design:type", Number)
|
|
61
|
+
], UpsertCityAttractionLocaleDto.prototype, "guideAudioDurationSec", void 0);
|
|
49
62
|
__decorate([
|
|
50
63
|
(0, class_validator_1.IsOptional)(),
|
|
51
64
|
(0, class_validator_1.IsEnum)(attraction_locale_status_enum_1.AttractionLocaleStatusEnum),
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { PersonAttractionFactsByLang } from './person-attraction-facts';
|
|
2
1
|
import { PersonAttractionRoleEnum } from './enum/person-attraction-role.enum';
|
|
2
|
+
import { PersonAttractionFactsByLang } from './person-attraction-facts';
|
|
3
3
|
export declare class CityPersonAttractionLinkDto {
|
|
4
4
|
attractionId: number;
|
|
5
5
|
role: PersonAttractionRoleEnum;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { ResponseObject } from '../shared/ro';
|
|
2
|
-
import { PersonAttractionFactsByLang } from './person-attraction-facts';
|
|
3
2
|
import { PersonAttractionRoleEnum } from './enum/person-attraction-role.enum';
|
|
3
|
+
import { PersonAttractionFactsByLang } from './person-attraction-facts';
|
|
4
4
|
export type CityPersonAttractionLinkRO = ResponseObject & {
|
|
5
5
|
personId: number;
|
|
6
6
|
attractionId: number;
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { Languages } from '../shared/enum/languages.enum';
|
|
2
2
|
import { ResponseObject } from '../shared/ro';
|
|
3
|
-
import { PersonLocaleFact } from './person-locale-fact';
|
|
4
3
|
import { PersonLocaleStatusEnum } from './enum/person-locale-status.enum';
|
|
4
|
+
import { PersonLocaleFact } from './person-locale-fact';
|
|
5
5
|
export type CityPersonLocaleRO = ResponseObject & {
|
|
6
6
|
personId: number;
|
|
7
7
|
language: Languages;
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { Languages } from '../shared/enum/languages.enum';
|
|
2
|
-
import { PersonLocaleFact } from './person-locale-fact';
|
|
3
2
|
import { PersonFactKindEnum } from './enum/person-fact-kind.enum';
|
|
4
3
|
import { PersonLocaleStatusEnum } from './enum/person-locale-status.enum';
|
|
4
|
+
import { PersonLocaleFact } from './person-locale-fact';
|
|
5
5
|
export declare class PersonLocaleFactDto {
|
|
6
6
|
id: string;
|
|
7
7
|
kind: PersonFactKindEnum;
|
|
@@ -42,6 +42,10 @@ __decorate([
|
|
|
42
42
|
(0, class_transformer_1.Expose)(),
|
|
43
43
|
__metadata("design:type", Boolean)
|
|
44
44
|
], OpenapiCertificateDesignRO.prototype, "availablePickup", void 0);
|
|
45
|
+
__decorate([
|
|
46
|
+
(0, class_transformer_1.Expose)(),
|
|
47
|
+
__metadata("design:type", Boolean)
|
|
48
|
+
], OpenapiCertificateDesignRO.prototype, "allowCustomNominal", void 0);
|
|
45
49
|
__decorate([
|
|
46
50
|
(0, class_transformer_1.Expose)(),
|
|
47
51
|
__metadata("design:type", String)
|
|
@@ -0,0 +1,98 @@
|
|
|
1
|
+
import { AttractionCategoryEnum } from '../../city-attraction/enum/attraction-category.enum';
|
|
2
|
+
import { PersonLocaleFact } from '../../city-person/person-locale-fact';
|
|
3
|
+
import { PersonAttractionRoleEnum } from '../../city-person/enum/person-attraction-role.enum';
|
|
4
|
+
import { PersonDomainEnum } from '../../city-person/enum/person-domain.enum';
|
|
5
|
+
import { PersonOccupationEnum } from '../../city-person/enum/person-occupation.enum';
|
|
6
|
+
/** Карточка личности в списке города. */
|
|
7
|
+
export type CityPlayerPersonListItemRO = {
|
|
8
|
+
personId: number;
|
|
9
|
+
name: string;
|
|
10
|
+
knownFor: string | null;
|
|
11
|
+
photoUrl: string | null;
|
|
12
|
+
domains: PersonDomainEnum[];
|
|
13
|
+
occupations: PersonOccupationEnum[];
|
|
14
|
+
birthYear: number | null;
|
|
15
|
+
deathYear: number | null;
|
|
16
|
+
};
|
|
17
|
+
export type CityPlayerPeopleRO = {
|
|
18
|
+
cityId: number;
|
|
19
|
+
city: string;
|
|
20
|
+
people: CityPlayerPersonListItemRO[];
|
|
21
|
+
};
|
|
22
|
+
/** Место, связанное с личностью. */
|
|
23
|
+
export type CityPlayerPersonPlaceRO = {
|
|
24
|
+
attractionId: number;
|
|
25
|
+
title: string;
|
|
26
|
+
knownFor: string | null;
|
|
27
|
+
photoUrl: string | null;
|
|
28
|
+
cityId: number;
|
|
29
|
+
cityTitle: string | null;
|
|
30
|
+
/** true — место в городе, с которого открыли личность. */
|
|
31
|
+
isCurrentCity: boolean;
|
|
32
|
+
role: PersonAttractionRoleEnum;
|
|
33
|
+
yearFrom: number | null;
|
|
34
|
+
yearTo: number | null;
|
|
35
|
+
note: string | null;
|
|
36
|
+
lat: number | null;
|
|
37
|
+
lng: number | null;
|
|
38
|
+
};
|
|
39
|
+
/** Детальная страница личности. */
|
|
40
|
+
export type CityPlayerPersonDetailRO = {
|
|
41
|
+
personId: number;
|
|
42
|
+
name: string;
|
|
43
|
+
knownFor: string | null;
|
|
44
|
+
description: string | null;
|
|
45
|
+
photoUrl: string | null;
|
|
46
|
+
photos: string[];
|
|
47
|
+
domains: PersonDomainEnum[];
|
|
48
|
+
occupations: PersonOccupationEnum[];
|
|
49
|
+
birthYear: number | null;
|
|
50
|
+
deathYear: number | null;
|
|
51
|
+
facts: PersonLocaleFact[];
|
|
52
|
+
places: CityPlayerPersonPlaceRO[];
|
|
53
|
+
};
|
|
54
|
+
/** Точка на карте свободного маршрута / шторка. */
|
|
55
|
+
export type CityPlayerAttractionCardRO = {
|
|
56
|
+
emoji: string;
|
|
57
|
+
title: string;
|
|
58
|
+
body: string;
|
|
59
|
+
};
|
|
60
|
+
export type CityPlayerAttractionFunFactRO = {
|
|
61
|
+
emoji?: string;
|
|
62
|
+
title?: string;
|
|
63
|
+
body: string;
|
|
64
|
+
};
|
|
65
|
+
/** Личность, связанная с точкой на карте. */
|
|
66
|
+
export type CityPlayerAttractionPersonRO = {
|
|
67
|
+
personId: number;
|
|
68
|
+
name: string;
|
|
69
|
+
photoUrl: string | null;
|
|
70
|
+
};
|
|
71
|
+
export type CityPlayerAttractionMapItemRO = {
|
|
72
|
+
attractionId: number;
|
|
73
|
+
title: string;
|
|
74
|
+
knownFor: string | null;
|
|
75
|
+
description: string | null;
|
|
76
|
+
category: AttractionCategoryEnum;
|
|
77
|
+
address: string | null;
|
|
78
|
+
photoUrl: string | null;
|
|
79
|
+
photos: string[];
|
|
80
|
+
lat: number;
|
|
81
|
+
lng: number;
|
|
82
|
+
hook: string | null;
|
|
83
|
+
guideTalk: string | null;
|
|
84
|
+
guideAudioUrl: string | null;
|
|
85
|
+
guideAudioDurationSec: number | null;
|
|
86
|
+
cards: CityPlayerAttractionCardRO[];
|
|
87
|
+
funFact: CityPlayerAttractionFunFactRO | null;
|
|
88
|
+
lookFor: string[];
|
|
89
|
+
/** Люди, связанные с этим местом (для маркеров рядом с точкой). */
|
|
90
|
+
people: CityPlayerAttractionPersonRO[];
|
|
91
|
+
};
|
|
92
|
+
export type CityPlayerAttractionsMapRO = {
|
|
93
|
+
cityId: number;
|
|
94
|
+
city: string;
|
|
95
|
+
lat: number | null;
|
|
96
|
+
lng: number | null;
|
|
97
|
+
attractions: CityPlayerAttractionMapItemRO[];
|
|
98
|
+
};
|
|
@@ -65,6 +65,17 @@ export type CityPlayerCatalogCityRO = {
|
|
|
65
65
|
country?: CountriesEnum | null;
|
|
66
66
|
/** Фото города из `CityEntity.photo`. */
|
|
67
67
|
photoUrl?: string | null;
|
|
68
|
+
/** Широта центра города (GeoJSON Point → lat). */
|
|
69
|
+
lat?: number | null;
|
|
70
|
+
/** Долгота центра города (GeoJSON Point → lng). */
|
|
71
|
+
lng?: number | null;
|
|
72
|
+
/**
|
|
73
|
+
* Расстояние до пользователя в км (если в catalog переданы lat/lng).
|
|
74
|
+
* null — геолокация недоступна или у города нет координат.
|
|
75
|
+
*/
|
|
76
|
+
distanceKm?: number | null;
|
|
77
|
+
/** Город в радиусе 50 км от пользователя. */
|
|
78
|
+
isNearby?: boolean;
|
|
68
79
|
games: CityPlayerCatalogGameRO[];
|
|
69
80
|
};
|
|
70
81
|
/** @deprecated Группировка по странам больше не используется в player catalog. */
|
|
@@ -17,6 +17,8 @@ export declare class OpenapiPromocodeWidgetRO {
|
|
|
17
17
|
availableForCertificates: boolean;
|
|
18
18
|
canUseWithOtherPromocodes: boolean;
|
|
19
19
|
canUseWithOtherCertificates: boolean;
|
|
20
|
+
/** Промокод требует онлайн-оплаты заказа (оплата на месте недоступна). */
|
|
21
|
+
onlinePaymentOnly: boolean;
|
|
20
22
|
allQuestrooms: boolean;
|
|
21
23
|
questroomsIds: number[];
|
|
22
24
|
validFrom?: string;
|
|
@@ -59,6 +59,10 @@ __decorate([
|
|
|
59
59
|
(0, class_transformer_1.Expose)(),
|
|
60
60
|
__metadata("design:type", Boolean)
|
|
61
61
|
], OpenapiPromocodeWidgetRO.prototype, "canUseWithOtherCertificates", void 0);
|
|
62
|
+
__decorate([
|
|
63
|
+
(0, class_transformer_1.Expose)(),
|
|
64
|
+
__metadata("design:type", Boolean)
|
|
65
|
+
], OpenapiPromocodeWidgetRO.prototype, "onlinePaymentOnly", void 0);
|
|
62
66
|
__decorate([
|
|
63
67
|
(0, class_transformer_1.Expose)(),
|
|
64
68
|
__metadata("design:type", Boolean)
|
|
@@ -23,14 +23,6 @@ declare class Customization {
|
|
|
23
23
|
widgetFontFamily?: string;
|
|
24
24
|
bgColor?: string;
|
|
25
25
|
}
|
|
26
|
-
declare class MailchimpLocale {
|
|
27
|
-
text: string;
|
|
28
|
-
language: Languages;
|
|
29
|
-
}
|
|
30
|
-
declare class Mailchimp {
|
|
31
|
-
locales: MailchimpLocale[];
|
|
32
|
-
token: string;
|
|
33
|
-
}
|
|
34
26
|
declare class CustomFiled {
|
|
35
27
|
id: number;
|
|
36
28
|
title: string;
|
|
@@ -70,6 +62,12 @@ export declare class OpenapiWidgetInfoRO {
|
|
|
70
62
|
* Единственный источник данных для подарочных сертификатов в виджете.
|
|
71
63
|
*/
|
|
72
64
|
certificatesShop?: OpenapiCertificatesShopRO;
|
|
65
|
+
/**
|
|
66
|
+
* Виджет продаёт один конкретный дизайн сертификата. В этом режиме
|
|
67
|
+
* `certificatesShop.designs` уже отфильтрован до одного элемента, а виджет
|
|
68
|
+
* скрывает шаг выбора дизайна (остаются номиналы и способы доставки).
|
|
69
|
+
*/
|
|
70
|
+
certificateDesignId?: number | null;
|
|
73
71
|
profile: Profile;
|
|
74
72
|
ga4Id?: string;
|
|
75
73
|
gaCoversationId?: string;
|
|
@@ -83,7 +81,6 @@ export declare class OpenapiWidgetInfoRO {
|
|
|
83
81
|
snapPixelEnabled?: boolean;
|
|
84
82
|
snapPixelId?: string;
|
|
85
83
|
customization: Customization;
|
|
86
|
-
mailchimp?: string | Mailchimp;
|
|
87
84
|
daysAhead?: number;
|
|
88
85
|
buttonTooltipText?: string;
|
|
89
86
|
showOtherQuests?: boolean;
|
|
@@ -67,27 +67,6 @@ __decorate([
|
|
|
67
67
|
(0, class_transformer_1.Expose)(),
|
|
68
68
|
__metadata("design:type", String)
|
|
69
69
|
], Customization.prototype, "bgColor", void 0);
|
|
70
|
-
class MailchimpLocale {
|
|
71
|
-
}
|
|
72
|
-
__decorate([
|
|
73
|
-
(0, class_transformer_1.Expose)(),
|
|
74
|
-
__metadata("design:type", String)
|
|
75
|
-
], MailchimpLocale.prototype, "text", void 0);
|
|
76
|
-
__decorate([
|
|
77
|
-
(0, class_transformer_1.Expose)(),
|
|
78
|
-
__metadata("design:type", String)
|
|
79
|
-
], MailchimpLocale.prototype, "language", void 0);
|
|
80
|
-
class Mailchimp {
|
|
81
|
-
}
|
|
82
|
-
__decorate([
|
|
83
|
-
(0, class_transformer_1.Expose)(),
|
|
84
|
-
(0, class_transformer_1.Type)(() => MailchimpLocale),
|
|
85
|
-
__metadata("design:type", Array)
|
|
86
|
-
], Mailchimp.prototype, "locales", void 0);
|
|
87
|
-
__decorate([
|
|
88
|
-
(0, class_transformer_1.Expose)(),
|
|
89
|
-
__metadata("design:type", String)
|
|
90
|
-
], Mailchimp.prototype, "token", void 0);
|
|
91
70
|
class CustomFiled {
|
|
92
71
|
}
|
|
93
72
|
__decorate([
|
|
@@ -205,6 +184,10 @@ __decorate([
|
|
|
205
184
|
(0, class_transformer_1.Type)(() => openapi_certificates_shop_ro_1.OpenapiCertificatesShopRO),
|
|
206
185
|
__metadata("design:type", openapi_certificates_shop_ro_1.OpenapiCertificatesShopRO)
|
|
207
186
|
], OpenapiWidgetInfoRO.prototype, "certificatesShop", void 0);
|
|
187
|
+
__decorate([
|
|
188
|
+
(0, class_transformer_1.Expose)(),
|
|
189
|
+
__metadata("design:type", Number)
|
|
190
|
+
], OpenapiWidgetInfoRO.prototype, "certificateDesignId", void 0);
|
|
208
191
|
__decorate([
|
|
209
192
|
(0, class_transformer_1.Expose)(),
|
|
210
193
|
(0, class_transformer_1.Type)(() => Profile),
|
|
@@ -259,17 +242,6 @@ __decorate([
|
|
|
259
242
|
(0, class_transformer_1.Type)(() => Customization),
|
|
260
243
|
__metadata("design:type", Customization)
|
|
261
244
|
], OpenapiWidgetInfoRO.prototype, "customization", void 0);
|
|
262
|
-
__decorate([
|
|
263
|
-
(0, class_transformer_1.Expose)(),
|
|
264
|
-
(0, class_transformer_1.Type)(() => Mailchimp),
|
|
265
|
-
(0, class_transformer_1.Transform)(({ value, obj }) => {
|
|
266
|
-
var _a, _b;
|
|
267
|
-
if (!(value === null || value === void 0 ? void 0 : value.token))
|
|
268
|
-
return null;
|
|
269
|
-
return ((_b = (_a = value === null || value === void 0 ? void 0 : value.locales) === null || _a === void 0 ? void 0 : _a.find((l) => l.language === obj.language)) === null || _b === void 0 ? void 0 : _b.text) || 'default';
|
|
270
|
-
}),
|
|
271
|
-
__metadata("design:type", Object)
|
|
272
|
-
], OpenapiWidgetInfoRO.prototype, "mailchimp", void 0);
|
|
273
245
|
__decorate([
|
|
274
246
|
(0, class_transformer_1.Expose)(),
|
|
275
247
|
__metadata("design:type", Number)
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
+
import { AttractionRouteMeta } from '../city-attraction/attraction-route-meta';
|
|
1
2
|
import { AttractionCategoryEnum } from '../city-attraction/enum/attraction-category.enum';
|
|
2
3
|
import { AttractionFameEnum } from '../city-attraction/enum/attraction-fame.enum';
|
|
3
4
|
import { AttractionIndoorOutdoorEnum } from '../city-attraction/enum/attraction-indoor-outdoor.enum';
|
|
4
|
-
import { AttractionRouteMeta } from '../city-attraction/attraction-route-meta';
|
|
5
5
|
import { AttractionRouteRoleEnum } from '../city-attraction/enum/attraction-route-role.enum';
|
|
6
6
|
/**
|
|
7
7
|
* Partner-facing create payload. cityId/country come from the story;
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { CityQuestContent } from '../city-quest/city-quest-content';
|
|
2
1
|
import { CityQuestRO } from '../city-quest/city-quest.ro';
|
|
2
|
+
import { CityQuestContent } from '../city-quest/city-quest-content';
|
|
3
3
|
import { Languages } from '../shared/enum/languages.enum';
|
|
4
4
|
import { PartnerCityQuestStopDto } from './partner-city-quest.dto';
|
|
5
5
|
/** Partner editor view: quest meta + friendly stops (+ raw content for advanced). */
|
|
@@ -19,7 +19,8 @@ exports.MARKETING_AUTOMATION_CAPABILITIES = {
|
|
|
19
19
|
supportsDiscount: false,
|
|
20
20
|
},
|
|
21
21
|
[marketing_automation_type_enum_1.MarketingAutomationTypeEnum.RETARGETING]: {
|
|
22
|
-
|
|
22
|
+
// Точка отсчёта — момент покидания бронирования (не дата игры).
|
|
23
|
+
timing: { direction: 'after', unit: 'hours', min: 1, max: 72, default: 24 },
|
|
23
24
|
supportsSendImmediately: false,
|
|
24
25
|
supportsDiscount: true,
|
|
25
26
|
},
|
|
@@ -14,8 +14,9 @@ export declare class MarketingAutomationConfigDto {
|
|
|
14
14
|
* Единое поле тайминга: заменяет `sendAfter` / `sendBefore` /
|
|
15
15
|
* `sendBeforeDays`. Величина в натуральной единице типа (capabilities
|
|
16
16
|
* определяет, часы это или дни и в какую сторону от события).
|
|
17
|
+
* Для `retargeting` — часы после покидания бронирования (дефолт 24).
|
|
17
18
|
* `undefined` — у типов без настраиваемого тайминга
|
|
18
|
-
* (`
|
|
19
|
+
* (`custom_booking` — транзакционно).
|
|
19
20
|
*/
|
|
20
21
|
sendOffset?: number;
|
|
21
22
|
/**
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { RO } from '../../shared/ro-class';
|
|
2
2
|
import { NotificationTriggerEnum } from './notification-chanel-action.enum';
|
|
3
3
|
import { NotificationChanelTypeEnum } from './notification-chanel-type.enum';
|
|
4
|
+
import { WebhookHealthRO } from './webhook-health.ro';
|
|
4
5
|
export declare class NotificationChanelRO extends RO {
|
|
5
6
|
url: string;
|
|
6
7
|
userId: number;
|
|
@@ -10,4 +11,6 @@ export declare class NotificationChanelRO extends RO {
|
|
|
10
11
|
allLocations: boolean;
|
|
11
12
|
locationIds: number[];
|
|
12
13
|
profileId: number;
|
|
14
|
+
/** Здоровье доставки — только для каналов типа WEBHOOK. */
|
|
15
|
+
health?: WebhookHealthRO;
|
|
13
16
|
}
|
|
@@ -13,6 +13,7 @@ exports.NotificationChanelRO = void 0;
|
|
|
13
13
|
const class_transformer_1 = require("class-transformer");
|
|
14
14
|
const ro_class_1 = require("../../shared/ro-class");
|
|
15
15
|
const notification_chanel_type_enum_1 = require("./notification-chanel-type.enum");
|
|
16
|
+
const webhook_health_ro_1 = require("./webhook-health.ro");
|
|
16
17
|
class NotificationChanelRO extends ro_class_1.RO {
|
|
17
18
|
}
|
|
18
19
|
exports.NotificationChanelRO = NotificationChanelRO;
|
|
@@ -48,3 +49,8 @@ __decorate([
|
|
|
48
49
|
(0, class_transformer_1.Expose)(),
|
|
49
50
|
__metadata("design:type", Number)
|
|
50
51
|
], NotificationChanelRO.prototype, "profileId", void 0);
|
|
52
|
+
__decorate([
|
|
53
|
+
(0, class_transformer_1.Expose)(),
|
|
54
|
+
(0, class_transformer_1.Type)(() => webhook_health_ro_1.WebhookHealthRO),
|
|
55
|
+
__metadata("design:type", webhook_health_ro_1.WebhookHealthRO)
|
|
56
|
+
], NotificationChanelRO.prototype, "health", void 0);
|
|
@@ -0,0 +1,29 @@
|
|
|
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.TestNotificationChanelDto = void 0;
|
|
13
|
+
const class_transformer_1 = require("class-transformer");
|
|
14
|
+
const class_validator_1 = require("class-validator");
|
|
15
|
+
const notification_chanel_action_enum_1 = require("./notification-chanel-action.enum");
|
|
16
|
+
class TestNotificationChanelDto {
|
|
17
|
+
}
|
|
18
|
+
exports.TestNotificationChanelDto = TestNotificationChanelDto;
|
|
19
|
+
__decorate([
|
|
20
|
+
(0, class_validator_1.IsInt)(),
|
|
21
|
+
(0, class_transformer_1.Expose)(),
|
|
22
|
+
__metadata("design:type", Number)
|
|
23
|
+
], TestNotificationChanelDto.prototype, "orderId", void 0);
|
|
24
|
+
__decorate([
|
|
25
|
+
(0, class_validator_1.IsOptional)(),
|
|
26
|
+
(0, class_validator_1.IsEnum)(notification_chanel_action_enum_1.NotificationTriggerEnum),
|
|
27
|
+
(0, class_transformer_1.Expose)(),
|
|
28
|
+
__metadata("design:type", String)
|
|
29
|
+
], TestNotificationChanelDto.prototype, "trigger", void 0);
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import { NotificationTriggerEnum } from './notification-chanel-action.enum';
|
|
2
|
+
/** Классифицированный тип ошибки доставки вебхука (вместо сырых стектрейсов). */
|
|
3
|
+
export declare enum WebhookErrorKindEnum {
|
|
4
|
+
DNS = "dns",
|
|
5
|
+
REFUSED = "refused",
|
|
6
|
+
TIMEOUT = "timeout",
|
|
7
|
+
TLS = "tls",
|
|
8
|
+
HTTP_4XX = "http-4xx",
|
|
9
|
+
HTTP_5XX = "http-5xx",
|
|
10
|
+
INVALID_URL = "invalid-url",
|
|
11
|
+
OTHER = "other"
|
|
12
|
+
}
|
|
13
|
+
export declare enum WebhookHealthStatusEnum {
|
|
14
|
+
HEALTHY = "healthy",
|
|
15
|
+
DEGRADED = "degraded",
|
|
16
|
+
FAILING = "failing"
|
|
17
|
+
}
|
|
18
|
+
/** Одна запись в капнутом списке последних ошибок канала. */
|
|
19
|
+
export type WebhookRecentError = {
|
|
20
|
+
/** ISO-дата ошибки. */
|
|
21
|
+
at: string;
|
|
22
|
+
trigger: NotificationTriggerEnum | string;
|
|
23
|
+
kind: WebhookErrorKindEnum;
|
|
24
|
+
httpStatus?: number;
|
|
25
|
+
/** Обрезанное сообщение ошибки (для деталей, не для парсинга). */
|
|
26
|
+
message?: string;
|
|
27
|
+
orderId?: number;
|
|
28
|
+
certificateId?: number;
|
|
29
|
+
};
|
|
30
|
+
export declare class WebhookHealthRO {
|
|
31
|
+
status: WebhookHealthStatusEnum;
|
|
32
|
+
lastSuccessAt: string | null;
|
|
33
|
+
lastFailureAt: string | null;
|
|
34
|
+
consecutiveFailures: number;
|
|
35
|
+
recentErrors: WebhookRecentError[];
|
|
36
|
+
}
|