@dcl.ru/dtos
Version:
dcl.ru API v3 data transfer objects — types, enums and zod schemas
257 lines • 9.51 kB
JavaScript
import { z } from 'zod';
import { BadgeSchema, CategorySchema, GroupSchema, TagSchema } from './fronts.js';
export var SaleSchemas;
(function (SaleSchemas) {
SaleSchemas[SaleSchemas["Free"] = 1] = "Free";
SaleSchemas[SaleSchemas["Sale"] = 2] = "Sale";
SaleSchemas[SaleSchemas["Registration"] = 3] = "Registration";
SaleSchemas[SaleSchemas["ExternalSale"] = 4] = "ExternalSale";
SaleSchemas[SaleSchemas["ExternalRegistration"] = 5] = "ExternalRegistration";
SaleSchemas[SaleSchemas["Onsite"] = 6] = "Onsite";
})(SaleSchemas || (SaleSchemas = {}));
export const SaleSchemasEnumSchema = z.nativeEnum(SaleSchemas);
export var ImageTypes;
(function (ImageTypes) {
ImageTypes[ImageTypes["Original"] = 1] = "Original";
ImageTypes[ImageTypes["Micro"] = 2] = "Micro";
ImageTypes[ImageTypes["Thumbnail"] = 3] = "Thumbnail";
ImageTypes[ImageTypes["Card"] = 4] = "Card";
ImageTypes[ImageTypes["Regular"] = 5] = "Regular";
ImageTypes[ImageTypes["Background"] = 6] = "Background";
})(ImageTypes || (ImageTypes = {}));
export const ImageTypesEnumSchema = z.nativeEnum(ImageTypes);
export var AccessTypes;
(function (AccessTypes) {
AccessTypes[AccessTypes["Free"] = 1] = "Free";
AccessTypes[AccessTypes["Paid"] = 2] = "Paid";
AccessTypes[AccessTypes["Registration"] = 3] = "Registration";
})(AccessTypes || (AccessTypes = {}));
export const AccessTypesEnumSchema = z.nativeEnum(AccessTypes);
export var ProductStatuses;
(function (ProductStatuses) {
ProductStatuses[ProductStatuses["Active"] = 1] = "Active";
ProductStatuses[ProductStatuses["Passed"] = 2] = "Passed";
})(ProductStatuses || (ProductStatuses = {}));
export const ProductStatusesEnumSchema = z.nativeEnum(ProductStatuses);
export var ScheduleSlotTariffsStatuses;
(function (ScheduleSlotTariffsStatuses) {
ScheduleSlotTariffsStatuses[ScheduleSlotTariffsStatuses["AwaitingStart"] = 1] = "AwaitingStart";
ScheduleSlotTariffsStatuses[ScheduleSlotTariffsStatuses["Active"] = 2] = "Active";
ScheduleSlotTariffsStatuses[ScheduleSlotTariffsStatuses["SoldOut"] = 3] = "SoldOut";
})(ScheduleSlotTariffsStatuses || (ScheduleSlotTariffsStatuses = {}));
export const ScheduleSlotTariffsStatusesEnumSchema = z.nativeEnum(ScheduleSlotTariffsStatuses);
export var SoonFilter;
(function (SoonFilter) {
SoonFilter["Today"] = "\u0421\u0435\u0433\u043E\u0434\u043D\u044F";
SoonFilter["Tomorrow"] = "\u0417\u0430\u0432\u0442\u0440\u0430";
SoonFilter["Weekend"] = "\u0412\u044B\u0445\u043E\u0434\u043D\u044B\u0435";
})(SoonFilter || (SoonFilter = {}));
export const SoonFilterEnumSchema = z.nativeEnum(SoonFilter);
export const PeriodSchema = z.object({
from: z.coerce.date().nullable(),
until: z.coerce.date().nullable(),
});
export const PeriodTimeSchema = z.object({
from: z.string().nullable(),
until: z.string().nullable(),
});
export const ImageSchema = z.object({
id: z.coerce.number(),
type: ImageTypesEnumSchema,
url: z.string(),
altText: z.string(),
copyright: z.string().nullable(),
copyrightUrl: z.string().nullable(),
});
export const GeoSchema = z.object({
lat: z.coerce.number(),
lon: z.coerce.number(),
});
export const WorkingHourBreakSchema = z.object({
id: z.coerce.number(),
period: PeriodTimeSchema,
});
export const WorkingHourSchema = z.object({
id: z.coerce.number(),
dayOfWeek: z.coerce.number(),
period: PeriodTimeSchema,
breaks: WorkingHourBreakSchema.array(),
});
export const OpenPeriodExclusionSchema = z.object({
id: z.coerce.number(),
period: PeriodSchema,
});
export const OpenPeriodSchema = z.object({
id: z.coerce.number(),
period: PeriodSchema,
exclusions: OpenPeriodExclusionSchema.array(),
workingHours: WorkingHourSchema.array(),
});
export const InventoryItemSchema = z.object({
id: z.coerce.number(),
slug: z.string(),
name: z.string(),
category: CategorySchema,
description: z.string(),
accessType: AccessTypesEnumSchema,
ageRating: z.coerce.number(),
address: z.string(),
geo: GeoSchema,
mapUrl: z.string(),
outside: z.coerce.boolean(),
animalsAllowed: z.coerce.boolean(),
animalsRecommended: z.coerce.boolean(),
kidsAllowed: z.coerce.boolean(),
kidsRecommended: z.coerce.boolean(),
featured: z.coerce.boolean(),
images: ImageSchema.array(),
openPeriods: OpenPeriodSchema.array(),
});
export const InventoryItemFirstSchema = z.object({
id: z.coerce.number(),
slug: z.string(),
name: z.string(),
});
export const ProductSchema = z.object({
id: z.coerce.number(),
status: ProductStatusesEnumSchema,
slug: z.string(),
name: z.string(),
saleSchema: SaleSchemasEnumSchema.nullable(),
externalUrl: z.string().nullable(),
categories: CategorySchema.array(),
groups: GroupSchema.array(),
tags: TagSchema.array(),
badges: BadgeSchema.array(),
ageRating: z.coerce.number(),
scheduleSlotNext: PeriodSchema.nullable(),
scheduleSlotsMulti: z.coerce.boolean().nullable(),
lead: z.string().nullable(),
description: z.string().nullable(),
pushka: z.coerce.boolean().nullable(),
paused: z.coerce.boolean().nullable(),
priceFrom: z.coerce.number().nullable(),
soldOut: z.coerce.boolean().nullable(),
images: ImageSchema.array(),
inventoryItems: InventoryItemSchema.array(),
});
export const ProductCardSchema = z.object({
id: z.coerce.number(),
slug: z.string(),
name: z.string(),
ageRating: z.coerce.number(),
saleSchema: SaleSchemasEnumSchema,
featured: z.coerce.boolean(),
banner: z.coerce.boolean(),
pushka: z.coerce.boolean(),
paused: z.coerce.boolean(),
priceFrom: z.coerce.number().nullable(),
soldOut: z.coerce.boolean().nullable(),
scheduleSlotNext: PeriodSchema,
scheduleSlotsMulti: z.coerce.boolean(),
image: ImageSchema.nullable(),
inventoryItemFirst: InventoryItemFirstSchema,
inventoryItemsMulti: z.coerce.boolean(),
categories: CategorySchema.array(),
groups: GroupSchema.array(),
tags: TagSchema.array(),
badges: BadgeSchema.array(),
});
export const ProductCardPassedSchema = z.object({
id: z.coerce.number(),
slug: z.string(),
name: z.string(),
ageRating: z.coerce.number(),
image: ImageSchema.nullable(),
inventoryItemFirst: InventoryItemFirstSchema,
inventoryItemsMulti: z.coerce.boolean(),
categories: CategorySchema.array(),
groups: GroupSchema.array(),
tags: TagSchema.array(),
badges: BadgeSchema.array(),
});
export const ProductCardOnHomepageSchema = z.object({
id: z.coerce.number(),
slug: z.string(),
name: z.string(),
ageRating: z.coerce.number(),
saleSchema: SaleSchemasEnumSchema,
featured: z.coerce.boolean(),
banner: z.coerce.boolean(),
pushka: z.coerce.boolean(),
paused: z.coerce.boolean(),
priceFrom: z.coerce.number().nullable(),
soldOut: z.coerce.boolean(),
image: ImageSchema.nullable(),
inventoryItemFirst: InventoryItemFirstSchema,
inventoryItemsMulti: z.coerce.boolean(),
categories: CategorySchema.array(),
groups: GroupSchema.array(),
tags: TagSchema.array(),
badges: BadgeSchema.array(),
scheduleSlotNext: PeriodSchema,
scheduleSlotsMulti: z.coerce.boolean(),
scheduleSlotToday: PeriodSchema.nullable(),
scheduleSlotsTodayMulti: z.coerce.boolean().nullable(),
scheduleSlotTomorrow: PeriodSchema.nullable(),
scheduleSlotsTomorrowMulti: z.coerce.boolean().nullable(),
scheduleSlotWeekend: PeriodSchema.nullable(),
scheduleSlotsWeekendMulti: z.coerce.boolean().nullable(),
});
export const ScheduleSlotSchema = z.object({
id: z.coerce.number(),
slot: PeriodSchema,
capacityAvailable: z.coerce.number().nullable(),
soldOut: z.coerce.boolean().nullable(),
});
export const TariffSchema = z.object({
id: z.coerce.number(),
name: z.string(),
nameShort: z.string(),
nameFiscal: z.string(),
description: z.string().nullable(),
price: z.coerce.number(),
vatName: z.string().nullable(),
vatValue: z.coerce.number().nullable(),
multiplier: z.coerce.number(),
firstEnterWindow: PeriodSchema.nullable(),
lifetimeWindowAfterFirstEnter: PeriodSchema.nullable(),
exitEnterAllowed: z.coerce.boolean(),
ticketGrouping: z.coerce.boolean(),
limitPerPerson: z.coerce.number().nullable(),
quotaAvailable: z.coerce.number().nullable(),
soldOut: z.coerce.boolean(),
inventoryItems: InventoryItemSchema.array(),
});
export const TariffGroupSchema = z.object({
id: z.coerce.number(),
name: z.string(),
slug: z.string(),
tariffs: TariffSchema.array(),
});
export const ScheduleSlotTariffsSchema = z.object({
status: ScheduleSlotTariffsStatusesEnumSchema,
startOn: z.coerce.date().nullable(),
groups: TariffGroupSchema.array(),
});
export const PromocodeSchema = z.object({
id: z.coerce.number(),
promocode: z.string(),
tariffIds: z.coerce.number().array(),
fixedDiscount: z.coerce.number(),
proportionalDiscount: z.coerce.number(),
});
export const KzhnoBenefitSchema = z.object({
id: z.string(),
name: z.string(),
dateTo: z.coerce.date(),
});
export const KzhnoSchema = z.object({
cardNumber: z.string(),
isKzhnoCard: z.coerce.boolean(),
isActive: z.coerce.boolean(),
cardType: z.string(),
variant: z.string(),
benefits: KzhnoBenefitSchema.array(),
});
//# sourceMappingURL=products.js.map