@purpleschool/gptbot 0.7.74 → 0.7.75
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/build/commands/auth/register-user.command.js +17 -1
- package/build/commands/auth/vk-login.command.js +17 -1
- package/build/commands/auth/yandex-login.command.js +17 -1
- package/build/commands/product/buy-product.command.js +24 -1
- package/build/commands/subscription/buy-subscription.command.js +24 -1
- package/build/commands/telegram-auth/create-telegram-auth-link.command.js +15 -1
- package/build/commands/telegram-profile/auth-with-telegram-web-app.command.js +6 -0
- package/build/models/user-referrals.schema.js +6 -0
- package/commands/auth/register-user.command.ts +22 -1
- package/commands/auth/vk-login.command.ts +22 -1
- package/commands/auth/yandex-login.command.ts +22 -1
- package/commands/product/buy-product.command.ts +37 -9
- package/commands/subscription/buy-subscription.command.ts +37 -9
- package/commands/telegram-auth/create-telegram-auth-link.command.ts +20 -1
- package/commands/telegram-profile/auth-with-telegram-web-app.command.ts +6 -0
- package/models/user-referrals.schema.ts +6 -0
- package/package.json +1 -1
|
@@ -9,7 +9,23 @@ var RegisterUserCommand;
|
|
|
9
9
|
.extend({
|
|
10
10
|
utm: models_1.UtmSchema.optional(),
|
|
11
11
|
})
|
|
12
|
-
.merge(models_1.UserReferralsSchema)
|
|
12
|
+
.merge(models_1.UserReferralsSchema)
|
|
13
|
+
.refine((data) => {
|
|
14
|
+
const hasAdmitadUid = !!data.admitadUid;
|
|
15
|
+
const hasAdmitadClickDate = !!data.admitadClickDate;
|
|
16
|
+
return hasAdmitadUid === hasAdmitadClickDate;
|
|
17
|
+
}, {
|
|
18
|
+
message: 'admitadUid and admitadClickDate must be provided together',
|
|
19
|
+
path: ['admitadUid'],
|
|
20
|
+
})
|
|
21
|
+
.refine((data) => {
|
|
22
|
+
if (!data.admitadClickDate)
|
|
23
|
+
return true;
|
|
24
|
+
return new Date(data.admitadClickDate).getTime() <= Date.now();
|
|
25
|
+
}, {
|
|
26
|
+
message: 'admitadClickDate cannot be in the future',
|
|
27
|
+
path: ['admitadClickDate'],
|
|
28
|
+
});
|
|
13
29
|
RegisterUserCommand.ResponseSchema = zod_1.z.object({
|
|
14
30
|
data: zod_1.z.object({
|
|
15
31
|
accessToken: zod_1.z.string(),
|
|
@@ -12,7 +12,23 @@ var VKLoginCommand;
|
|
|
12
12
|
device_id: zod_1.z.string(),
|
|
13
13
|
state: zod_1.z.string(),
|
|
14
14
|
})
|
|
15
|
-
.merge(models_1.UserReferralsSchema)
|
|
15
|
+
.merge(models_1.UserReferralsSchema)
|
|
16
|
+
.refine((data) => {
|
|
17
|
+
const hasAdmitadUid = !!data.admitadUid;
|
|
18
|
+
const hasAdmitadClickDate = !!data.admitadClickDate;
|
|
19
|
+
return hasAdmitadUid === hasAdmitadClickDate;
|
|
20
|
+
}, {
|
|
21
|
+
message: 'admitadUid and admitadClickDate must be provided together',
|
|
22
|
+
path: ['admitadUid'],
|
|
23
|
+
})
|
|
24
|
+
.refine((data) => {
|
|
25
|
+
if (!data.admitadClickDate)
|
|
26
|
+
return true;
|
|
27
|
+
return new Date(data.admitadClickDate).getTime() <= Date.now();
|
|
28
|
+
}, {
|
|
29
|
+
message: 'admitadClickDate cannot be in the future',
|
|
30
|
+
path: ['admitadClickDate'],
|
|
31
|
+
});
|
|
16
32
|
VKLoginCommand.ResponseSchema = zod_1.z.object({
|
|
17
33
|
data: zod_1.z.object({
|
|
18
34
|
accessToken: zod_1.z.string(),
|
|
@@ -10,7 +10,23 @@ var YandexLoginCommand;
|
|
|
10
10
|
code: zod_1.z.string(),
|
|
11
11
|
code_verifier: zod_1.z.string(),
|
|
12
12
|
})
|
|
13
|
-
.merge(models_1.UserReferralsSchema)
|
|
13
|
+
.merge(models_1.UserReferralsSchema)
|
|
14
|
+
.refine((data) => {
|
|
15
|
+
const hasAdmitadUid = !!data.admitadUid;
|
|
16
|
+
const hasAdmitadClickDate = !!data.admitadClickDate;
|
|
17
|
+
return hasAdmitadUid === hasAdmitadClickDate;
|
|
18
|
+
}, {
|
|
19
|
+
message: 'admitadUid and admitadClickDate must be provided together',
|
|
20
|
+
path: ['admitadUid'],
|
|
21
|
+
})
|
|
22
|
+
.refine((data) => {
|
|
23
|
+
if (!data.admitadClickDate)
|
|
24
|
+
return true;
|
|
25
|
+
return new Date(data.admitadClickDate).getTime() <= Date.now();
|
|
26
|
+
}, {
|
|
27
|
+
message: 'admitadClickDate cannot be in the future',
|
|
28
|
+
path: ['admitadClickDate'],
|
|
29
|
+
});
|
|
14
30
|
YandexLoginCommand.ResponseSchema = zod_1.z.object({
|
|
15
31
|
data: zod_1.z.object({
|
|
16
32
|
accessToken: zod_1.z.string(),
|
|
@@ -26,7 +26,8 @@ var BuyProductCommand;
|
|
|
26
26
|
electronic: zod_1.z.number(),
|
|
27
27
|
}),
|
|
28
28
|
});
|
|
29
|
-
BuyProductCommand.RequestFastSchema = zod_1.z
|
|
29
|
+
BuyProductCommand.RequestFastSchema = zod_1.z
|
|
30
|
+
.object({
|
|
30
31
|
email: zod_1.z.string().email(),
|
|
31
32
|
partnerId: zod_1.z.string().uuid().optional(),
|
|
32
33
|
promocode: zod_1.z.string().optional(),
|
|
@@ -34,6 +35,28 @@ var BuyProductCommand;
|
|
|
34
35
|
webmasterReferralProvidedAt: zod_1.z
|
|
35
36
|
.preprocess((val) => (typeof val === 'string' ? new Date(val) : val), zod_1.z.date())
|
|
36
37
|
.optional(),
|
|
38
|
+
admitadUid: zod_1.z.string().optional(),
|
|
39
|
+
admitadClickDate: zod_1.z
|
|
40
|
+
.string()
|
|
41
|
+
.datetime()
|
|
42
|
+
.transform((date) => new Date(date))
|
|
43
|
+
.optional(),
|
|
44
|
+
})
|
|
45
|
+
.refine((data) => {
|
|
46
|
+
const hasAdmitadUid = !!data.admitadUid;
|
|
47
|
+
const hasAdmitadClickDate = !!data.admitadClickDate;
|
|
48
|
+
return hasAdmitadUid === hasAdmitadClickDate;
|
|
49
|
+
}, {
|
|
50
|
+
message: 'admitadUid and admitadClickDate must be provided together',
|
|
51
|
+
path: ['admitadUid'],
|
|
52
|
+
})
|
|
53
|
+
.refine((data) => {
|
|
54
|
+
if (!data.admitadClickDate)
|
|
55
|
+
return true;
|
|
56
|
+
return new Date(data.admitadClickDate).getTime() <= Date.now();
|
|
57
|
+
}, {
|
|
58
|
+
message: 'admitadClickDate cannot be in the future',
|
|
59
|
+
path: ['admitadClickDate'],
|
|
37
60
|
});
|
|
38
61
|
BuyProductCommand.ResponseSchema = zod_1.z.object({
|
|
39
62
|
publicId: zod_1.z.string(),
|
|
@@ -12,7 +12,8 @@ var BuySubscriptionCommand;
|
|
|
12
12
|
useDiscount: zod_1.z.boolean(),
|
|
13
13
|
promocode: zod_1.z.string().optional(),
|
|
14
14
|
});
|
|
15
|
-
BuySubscriptionCommand.RequestFastSchema = zod_1.z
|
|
15
|
+
BuySubscriptionCommand.RequestFastSchema = zod_1.z
|
|
16
|
+
.object({
|
|
16
17
|
email: zod_1.z.string().email(),
|
|
17
18
|
partnerId: zod_1.z.string().uuid().optional(),
|
|
18
19
|
promocode: zod_1.z.string().optional(),
|
|
@@ -20,6 +21,28 @@ var BuySubscriptionCommand;
|
|
|
20
21
|
webmasterReferralProvidedAt: zod_1.z
|
|
21
22
|
.preprocess((val) => (typeof val === 'string' ? new Date(val) : val), zod_1.z.date())
|
|
22
23
|
.optional(),
|
|
24
|
+
admitadUid: zod_1.z.string().optional(),
|
|
25
|
+
admitadClickDate: zod_1.z
|
|
26
|
+
.string()
|
|
27
|
+
.datetime()
|
|
28
|
+
.transform((date) => new Date(date))
|
|
29
|
+
.optional(),
|
|
30
|
+
})
|
|
31
|
+
.refine((data) => {
|
|
32
|
+
const hasAdmitadUid = !!data.admitadUid;
|
|
33
|
+
const hasAdmitadClickDate = !!data.admitadClickDate;
|
|
34
|
+
return hasAdmitadUid === hasAdmitadClickDate;
|
|
35
|
+
}, {
|
|
36
|
+
message: 'admitadUid and admitadClickDate must be provided together',
|
|
37
|
+
path: ['admitadUid'],
|
|
38
|
+
})
|
|
39
|
+
.refine((data) => {
|
|
40
|
+
if (!data.admitadClickDate)
|
|
41
|
+
return true;
|
|
42
|
+
return new Date(data.admitadClickDate).getTime() <= Date.now();
|
|
43
|
+
}, {
|
|
44
|
+
message: 'admitadClickDate cannot be in the future',
|
|
45
|
+
path: ['admitadClickDate'],
|
|
23
46
|
});
|
|
24
47
|
const IReceiptOrderSchema = zod_1.z.object({
|
|
25
48
|
items: zod_1.z.array(zod_1.z.object({
|
|
@@ -5,7 +5,21 @@ const zod_1 = require("zod");
|
|
|
5
5
|
const models_1 = require("../../models");
|
|
6
6
|
var CreateTelegramAuthLinkCommand;
|
|
7
7
|
(function (CreateTelegramAuthLinkCommand) {
|
|
8
|
-
CreateTelegramAuthLinkCommand.RequestSchema = models_1.UserReferralsSchema
|
|
8
|
+
CreateTelegramAuthLinkCommand.RequestSchema = models_1.UserReferralsSchema.refine((data) => {
|
|
9
|
+
const hasAdmitadUid = !!data.admitadUid;
|
|
10
|
+
const hasAdmitadClickDate = !!data.admitadClickDate;
|
|
11
|
+
return hasAdmitadUid === hasAdmitadClickDate;
|
|
12
|
+
}, {
|
|
13
|
+
message: 'admitadUid and admitadClickDate must be provided together',
|
|
14
|
+
path: ['admitadUid'],
|
|
15
|
+
}).refine((data) => {
|
|
16
|
+
if (!data.admitadClickDate)
|
|
17
|
+
return true;
|
|
18
|
+
return new Date(data.admitadClickDate).getTime() <= Date.now();
|
|
19
|
+
}, {
|
|
20
|
+
message: 'admitadClickDate cannot be in the future',
|
|
21
|
+
path: ['admitadClickDate'],
|
|
22
|
+
});
|
|
9
23
|
CreateTelegramAuthLinkCommand.ResponseSchema = zod_1.z.object({
|
|
10
24
|
data: zod_1.z.object({
|
|
11
25
|
uuid: zod_1.z.string().uuid(),
|
|
@@ -14,6 +14,12 @@ var AuthWithTelegramWebAppCommand;
|
|
|
14
14
|
.preprocess((val) => (typeof val === 'string' ? new Date(val) : val), zod_1.z.date())
|
|
15
15
|
.optional(),
|
|
16
16
|
utm: models_1.UtmSchema.optional(),
|
|
17
|
+
admitadUid: zod_1.z.string().optional(),
|
|
18
|
+
admitadClickDate: zod_1.z
|
|
19
|
+
.string()
|
|
20
|
+
.datetime()
|
|
21
|
+
.transform((date) => new Date(date))
|
|
22
|
+
.optional(),
|
|
17
23
|
});
|
|
18
24
|
AuthWithTelegramWebAppCommand.ResponseSchema = zod_1.z.object({
|
|
19
25
|
data: zod_1.z.object({
|
|
@@ -12,4 +12,10 @@ exports.UserReferralsSchema = zod_1.default.object({
|
|
|
12
12
|
.string()
|
|
13
13
|
.transform((date) => new Date(date))
|
|
14
14
|
.optional(),
|
|
15
|
+
admitadUid: zod_1.default.string().optional(),
|
|
16
|
+
admitadClickDate: zod_1.default
|
|
17
|
+
.string()
|
|
18
|
+
.datetime()
|
|
19
|
+
.transform((date) => new Date(date))
|
|
20
|
+
.optional(),
|
|
15
21
|
});
|
|
@@ -6,7 +6,28 @@ export namespace RegisterUserCommand {
|
|
|
6
6
|
.extend({
|
|
7
7
|
utm: UtmSchema.optional(),
|
|
8
8
|
})
|
|
9
|
-
.merge(UserReferralsSchema)
|
|
9
|
+
.merge(UserReferralsSchema)
|
|
10
|
+
.refine(
|
|
11
|
+
(data) => {
|
|
12
|
+
const hasAdmitadUid = !!data.admitadUid;
|
|
13
|
+
const hasAdmitadClickDate = !!data.admitadClickDate;
|
|
14
|
+
return hasAdmitadUid === hasAdmitadClickDate;
|
|
15
|
+
},
|
|
16
|
+
{
|
|
17
|
+
message: 'admitadUid and admitadClickDate must be provided together',
|
|
18
|
+
path: ['admitadUid'],
|
|
19
|
+
},
|
|
20
|
+
)
|
|
21
|
+
.refine(
|
|
22
|
+
(data) => {
|
|
23
|
+
if (!data.admitadClickDate) return true;
|
|
24
|
+
return new Date(data.admitadClickDate).getTime() <= Date.now();
|
|
25
|
+
},
|
|
26
|
+
{
|
|
27
|
+
message: 'admitadClickDate cannot be in the future',
|
|
28
|
+
path: ['admitadClickDate'],
|
|
29
|
+
},
|
|
30
|
+
);
|
|
10
31
|
|
|
11
32
|
export type Request = z.infer<typeof RequestSchema>;
|
|
12
33
|
|
|
@@ -9,7 +9,28 @@ export namespace VKLoginCommand {
|
|
|
9
9
|
device_id: z.string(),
|
|
10
10
|
state: z.string(),
|
|
11
11
|
})
|
|
12
|
-
.merge(UserReferralsSchema)
|
|
12
|
+
.merge(UserReferralsSchema)
|
|
13
|
+
.refine(
|
|
14
|
+
(data) => {
|
|
15
|
+
const hasAdmitadUid = !!data.admitadUid;
|
|
16
|
+
const hasAdmitadClickDate = !!data.admitadClickDate;
|
|
17
|
+
return hasAdmitadUid === hasAdmitadClickDate;
|
|
18
|
+
},
|
|
19
|
+
{
|
|
20
|
+
message: 'admitadUid and admitadClickDate must be provided together',
|
|
21
|
+
path: ['admitadUid'],
|
|
22
|
+
},
|
|
23
|
+
)
|
|
24
|
+
.refine(
|
|
25
|
+
(data) => {
|
|
26
|
+
if (!data.admitadClickDate) return true;
|
|
27
|
+
return new Date(data.admitadClickDate).getTime() <= Date.now();
|
|
28
|
+
},
|
|
29
|
+
{
|
|
30
|
+
message: 'admitadClickDate cannot be in the future',
|
|
31
|
+
path: ['admitadClickDate'],
|
|
32
|
+
},
|
|
33
|
+
);
|
|
13
34
|
|
|
14
35
|
export type Request = z.infer<typeof RequestSchema>;
|
|
15
36
|
|
|
@@ -7,7 +7,28 @@ export namespace YandexLoginCommand {
|
|
|
7
7
|
code: z.string(),
|
|
8
8
|
code_verifier: z.string(),
|
|
9
9
|
})
|
|
10
|
-
.merge(UserReferralsSchema)
|
|
10
|
+
.merge(UserReferralsSchema)
|
|
11
|
+
.refine(
|
|
12
|
+
(data) => {
|
|
13
|
+
const hasAdmitadUid = !!data.admitadUid;
|
|
14
|
+
const hasAdmitadClickDate = !!data.admitadClickDate;
|
|
15
|
+
return hasAdmitadUid === hasAdmitadClickDate;
|
|
16
|
+
},
|
|
17
|
+
{
|
|
18
|
+
message: 'admitadUid and admitadClickDate must be provided together',
|
|
19
|
+
path: ['admitadUid'],
|
|
20
|
+
},
|
|
21
|
+
)
|
|
22
|
+
.refine(
|
|
23
|
+
(data) => {
|
|
24
|
+
if (!data.admitadClickDate) return true;
|
|
25
|
+
return new Date(data.admitadClickDate).getTime() <= Date.now();
|
|
26
|
+
},
|
|
27
|
+
{
|
|
28
|
+
message: 'admitadClickDate cannot be in the future',
|
|
29
|
+
path: ['admitadClickDate'],
|
|
30
|
+
},
|
|
31
|
+
);
|
|
11
32
|
|
|
12
33
|
export type Request = z.infer<typeof RequestSchema>;
|
|
13
34
|
|
|
@@ -32,15 +32,43 @@ export namespace BuyProductCommand {
|
|
|
32
32
|
}),
|
|
33
33
|
});
|
|
34
34
|
|
|
35
|
-
export const RequestFastSchema = z
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
35
|
+
export const RequestFastSchema = z
|
|
36
|
+
.object({
|
|
37
|
+
email: z.string().email(),
|
|
38
|
+
partnerId: z.string().uuid().optional(),
|
|
39
|
+
promocode: z.string().optional(),
|
|
40
|
+
webmasterAlias: z.string().optional(),
|
|
41
|
+
webmasterReferralProvidedAt: z
|
|
42
|
+
.preprocess((val) => (typeof val === 'string' ? new Date(val) : val), z.date())
|
|
43
|
+
.optional(),
|
|
44
|
+
admitadUid: z.string().optional(),
|
|
45
|
+
admitadClickDate: z
|
|
46
|
+
.string()
|
|
47
|
+
.datetime()
|
|
48
|
+
.transform((date) => new Date(date))
|
|
49
|
+
.optional(),
|
|
50
|
+
})
|
|
51
|
+
.refine(
|
|
52
|
+
(data) => {
|
|
53
|
+
const hasAdmitadUid = !!data.admitadUid;
|
|
54
|
+
const hasAdmitadClickDate = !!data.admitadClickDate;
|
|
55
|
+
return hasAdmitadUid === hasAdmitadClickDate;
|
|
56
|
+
},
|
|
57
|
+
{
|
|
58
|
+
message: 'admitadUid and admitadClickDate must be provided together',
|
|
59
|
+
path: ['admitadUid'],
|
|
60
|
+
},
|
|
61
|
+
)
|
|
62
|
+
.refine(
|
|
63
|
+
(data) => {
|
|
64
|
+
if (!data.admitadClickDate) return true;
|
|
65
|
+
return new Date(data.admitadClickDate).getTime() <= Date.now();
|
|
66
|
+
},
|
|
67
|
+
{
|
|
68
|
+
message: 'admitadClickDate cannot be in the future',
|
|
69
|
+
path: ['admitadClickDate'],
|
|
70
|
+
},
|
|
71
|
+
);
|
|
44
72
|
|
|
45
73
|
export type RequestFast = z.infer<typeof RequestFastSchema>;
|
|
46
74
|
export const ResponseSchema = z.object({
|
|
@@ -12,15 +12,43 @@ export namespace BuySubscriptionCommand {
|
|
|
12
12
|
});
|
|
13
13
|
|
|
14
14
|
export type Request = z.infer<typeof RequestSchema>;
|
|
15
|
-
export const RequestFastSchema = z
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
15
|
+
export const RequestFastSchema = z
|
|
16
|
+
.object({
|
|
17
|
+
email: z.string().email(),
|
|
18
|
+
partnerId: z.string().uuid().optional(),
|
|
19
|
+
promocode: z.string().optional(),
|
|
20
|
+
webmasterAlias: z.string().optional(),
|
|
21
|
+
webmasterReferralProvidedAt: z
|
|
22
|
+
.preprocess((val) => (typeof val === 'string' ? new Date(val) : val), z.date())
|
|
23
|
+
.optional(),
|
|
24
|
+
admitadUid: z.string().optional(),
|
|
25
|
+
admitadClickDate: z
|
|
26
|
+
.string()
|
|
27
|
+
.datetime()
|
|
28
|
+
.transform((date) => new Date(date))
|
|
29
|
+
.optional(),
|
|
30
|
+
})
|
|
31
|
+
.refine(
|
|
32
|
+
(data) => {
|
|
33
|
+
const hasAdmitadUid = !!data.admitadUid;
|
|
34
|
+
const hasAdmitadClickDate = !!data.admitadClickDate;
|
|
35
|
+
return hasAdmitadUid === hasAdmitadClickDate;
|
|
36
|
+
},
|
|
37
|
+
{
|
|
38
|
+
message: 'admitadUid and admitadClickDate must be provided together',
|
|
39
|
+
path: ['admitadUid'],
|
|
40
|
+
},
|
|
41
|
+
)
|
|
42
|
+
.refine(
|
|
43
|
+
(data) => {
|
|
44
|
+
if (!data.admitadClickDate) return true;
|
|
45
|
+
return new Date(data.admitadClickDate).getTime() <= Date.now();
|
|
46
|
+
},
|
|
47
|
+
{
|
|
48
|
+
message: 'admitadClickDate cannot be in the future',
|
|
49
|
+
path: ['admitadClickDate'],
|
|
50
|
+
},
|
|
51
|
+
);
|
|
24
52
|
|
|
25
53
|
export type RequestFast = z.infer<typeof RequestFastSchema>;
|
|
26
54
|
|
|
@@ -2,7 +2,26 @@ import { z } from 'zod';
|
|
|
2
2
|
import { UserReferralsSchema } from '../../models';
|
|
3
3
|
|
|
4
4
|
export namespace CreateTelegramAuthLinkCommand {
|
|
5
|
-
export const RequestSchema = UserReferralsSchema
|
|
5
|
+
export const RequestSchema = UserReferralsSchema.refine(
|
|
6
|
+
(data) => {
|
|
7
|
+
const hasAdmitadUid = !!data.admitadUid;
|
|
8
|
+
const hasAdmitadClickDate = !!data.admitadClickDate;
|
|
9
|
+
return hasAdmitadUid === hasAdmitadClickDate;
|
|
10
|
+
},
|
|
11
|
+
{
|
|
12
|
+
message: 'admitadUid and admitadClickDate must be provided together',
|
|
13
|
+
path: ['admitadUid'],
|
|
14
|
+
},
|
|
15
|
+
).refine(
|
|
16
|
+
(data) => {
|
|
17
|
+
if (!data.admitadClickDate) return true;
|
|
18
|
+
return new Date(data.admitadClickDate).getTime() <= Date.now();
|
|
19
|
+
},
|
|
20
|
+
{
|
|
21
|
+
message: 'admitadClickDate cannot be in the future',
|
|
22
|
+
path: ['admitadClickDate'],
|
|
23
|
+
},
|
|
24
|
+
);
|
|
6
25
|
|
|
7
26
|
export type Request = z.infer<typeof RequestSchema>;
|
|
8
27
|
|
|
@@ -11,6 +11,12 @@ export namespace AuthWithTelegramWebAppCommand {
|
|
|
11
11
|
.preprocess((val) => (typeof val === 'string' ? new Date(val) : val), z.date())
|
|
12
12
|
.optional(),
|
|
13
13
|
utm: UtmSchema.optional(),
|
|
14
|
+
admitadUid: z.string().optional(),
|
|
15
|
+
admitadClickDate: z
|
|
16
|
+
.string()
|
|
17
|
+
.datetime()
|
|
18
|
+
.transform((date) => new Date(date))
|
|
19
|
+
.optional(),
|
|
14
20
|
});
|
|
15
21
|
|
|
16
22
|
export type Request = z.infer<typeof RequestBodySchema>;
|
|
@@ -7,4 +7,10 @@ export const UserReferralsSchema = z.object({
|
|
|
7
7
|
.string()
|
|
8
8
|
.transform((date) => new Date(date))
|
|
9
9
|
.optional(),
|
|
10
|
+
admitadUid: z.string().optional(),
|
|
11
|
+
admitadClickDate: z
|
|
12
|
+
.string()
|
|
13
|
+
.datetime()
|
|
14
|
+
.transform((date) => new Date(date))
|
|
15
|
+
.optional(),
|
|
10
16
|
});
|