@getcommunity/gc-validators 0.0.215 → 0.0.217

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 (86) hide show
  1. package/dist/chunk-CKQMccvm.cjs +28 -0
  2. package/dist/constants.cjs +461 -438
  3. package/dist/constants.cjs.map +1 -1
  4. package/dist/constants.d.cts +2 -233
  5. package/dist/constants.d.mts +2 -0
  6. package/dist/constants.mjs +355 -0
  7. package/dist/constants.mjs.map +1 -0
  8. package/dist/index-B6pNPQrV.d.mts +4192 -0
  9. package/dist/index-CQtazKyX.d.cts +4192 -0
  10. package/dist/index-CiWVYf_f.d.cts +292 -0
  11. package/dist/index-DOR_It7I.d.mts +292 -0
  12. package/dist/index.cjs +350 -1388
  13. package/dist/index.d.cts +3 -10
  14. package/dist/index.d.mts +3 -0
  15. package/dist/index.mjs +6 -0
  16. package/dist/permissions.cjs +757 -30
  17. package/dist/permissions.cjs.map +1 -1
  18. package/dist/permissions.d.cts +2 -747
  19. package/dist/permissions.d.mts +2 -0
  20. package/dist/permissions.mjs +753 -0
  21. package/dist/permissions.mjs.map +1 -0
  22. package/dist/schemas.cjs +1781 -896
  23. package/dist/schemas.cjs.map +1 -1
  24. package/dist/schemas.d.cts +2 -1935
  25. package/dist/schemas.d.mts +2 -0
  26. package/dist/schemas.mjs +1559 -0
  27. package/dist/schemas.mjs.map +1 -0
  28. package/dist/types.cjs +0 -6
  29. package/dist/types.d.cts +2 -851
  30. package/dist/types.d.mts +2 -0
  31. package/dist/types.mjs +1 -0
  32. package/dist/utilities.cjs +76 -38
  33. package/dist/utilities.cjs.map +1 -1
  34. package/dist/utilities.d.cts +2 -26
  35. package/dist/utilities.d.mts +2 -0
  36. package/dist/utilities.mjs +68 -0
  37. package/dist/utilities.mjs.map +1 -0
  38. package/package.json +5 -6
  39. package/dist/chunk-57PRSDKM.cjs +0 -368
  40. package/dist/chunk-57PRSDKM.cjs.map +0 -1
  41. package/dist/chunk-7CI3M2JM.js +0 -3
  42. package/dist/chunk-7CI3M2JM.js.map +0 -1
  43. package/dist/chunk-ABPKJ5AP.js +0 -259
  44. package/dist/chunk-ABPKJ5AP.js.map +0 -1
  45. package/dist/chunk-BYTL5J7D.js +0 -2606
  46. package/dist/chunk-BYTL5J7D.js.map +0 -1
  47. package/dist/chunk-CDBT3J75.cjs +0 -4
  48. package/dist/chunk-CDBT3J75.cjs.map +0 -1
  49. package/dist/chunk-DU5WCXJJ.js +0 -685
  50. package/dist/chunk-DU5WCXJJ.js.map +0 -1
  51. package/dist/chunk-IMI6XEMX.cjs +0 -2849
  52. package/dist/chunk-IMI6XEMX.cjs.map +0 -1
  53. package/dist/chunk-NMDMJZPF.cjs +0 -692
  54. package/dist/chunk-NMDMJZPF.cjs.map +0 -1
  55. package/dist/chunk-NNLSUHMQ.js +0 -63
  56. package/dist/chunk-NNLSUHMQ.js.map +0 -1
  57. package/dist/chunk-UAQWYRXG.cjs +0 -92
  58. package/dist/chunk-UAQWYRXG.cjs.map +0 -1
  59. package/dist/comment.document-HT6qJLh5.d.cts +0 -468
  60. package/dist/comment.document-xCsfHOer.d.ts +0 -468
  61. package/dist/constants.d.ts +0 -233
  62. package/dist/constants.js +0 -3
  63. package/dist/constants.js.map +0 -1
  64. package/dist/font.constants-BVwxlH3J.d.cts +0 -52
  65. package/dist/font.constants-BVwxlH3J.d.ts +0 -52
  66. package/dist/index.cjs.map +0 -1
  67. package/dist/index.d.ts +0 -10
  68. package/dist/index.js +0 -7
  69. package/dist/index.js.map +0 -1
  70. package/dist/permission.constants-B99nobws.d.cts +0 -30
  71. package/dist/permission.constants-B99nobws.d.ts +0 -30
  72. package/dist/permissions.d.ts +0 -747
  73. package/dist/permissions.js +0 -3
  74. package/dist/permissions.js.map +0 -1
  75. package/dist/response-8Bkawql4.d.cts +0 -56
  76. package/dist/response-8Bkawql4.d.ts +0 -56
  77. package/dist/schemas.d.ts +0 -1935
  78. package/dist/schemas.js +0 -5
  79. package/dist/schemas.js.map +0 -1
  80. package/dist/types.cjs.map +0 -1
  81. package/dist/types.d.ts +0 -851
  82. package/dist/types.js +0 -3
  83. package/dist/types.js.map +0 -1
  84. package/dist/utilities.d.ts +0 -26
  85. package/dist/utilities.js +0 -3
  86. package/dist/utilities.js.map +0 -1
@@ -0,0 +1,1559 @@
1
+ import { ClientProjectPhaseOptions, ClientProjectStatusOptions, CommentApprovalStatusOptions, ERROR_MESSAGE_COMMA_SEPPARATED_URLS, ERROR_MESSAGE_INVALID_URL, ERROR_MESSAGE_ONE_PROJECT_STATUS, ERROR_MESSAGE_REGEX_PHONE, ERROR_MESSAGE_REGEX_URL_SLUG, ERROR_MESSAGE_REGEX_UTM_VALUE, ERROR_MESSAGE_ROBOT, ERROR_MESSAGE_URL_NO_QUERY_PARAMS, ERROR_MESSAGE_URL_PREFIX, ERROR_MESSAGE_UTM_URL, IsValidClientClassificationSelectOptions, LIMIT_LONG_STRING_MAX_LENGTH, LIMIT_MAX_DESTINATION, LIMIT_MAX_UTM_CAMPAIGN, LIMIT_MAX_UTM_CONTENT, LIMIT_MAX_UTM_CREATIVE_FORMAT, LIMIT_MAX_UTM_ID, LIMIT_MAX_UTM_MEDIUM, LIMIT_MAX_UTM_SOURCE, LIMIT_MONDAY_WORKSPACE_PAGINATION_MAX_SIZE, LIMIT_PAGINATION_MAX_SIZE, LIMIT_REDIRECT_PAGINATION_DEFAULT_SIZE, LIMIT_UTM_TRACKING_LINK_PAGINATION_MAX_SIZE, REGEX_NANP_PHONE, REGEX_URL_SLUG, REGEX_UTM_VALUE, ReportCommentReasonOptions } from "./constants.mjs";
2
+ import { CLIENT_ENTITY_SCOPES } from "./permissions.mjs";
3
+ import * as v from "valibot";
4
+ //#region src/schemas/shared.validators.ts
5
+ /**
6
+ * Basic number validator
7
+ */
8
+ const VNumberNullable = () => v.optional(v.nullable(v.number()));
9
+ const VIntegerNullable = () => v.optional(v.nullable(v.pipe(v.number(), v.integer())));
10
+ /**
11
+ * Basic string validator with trim and min length
12
+ */
13
+ const VString = (minLength = 1) => v.pipe(v.string(), v.trim(), v.minLength(minLength));
14
+ /**
15
+ * String validator with trim, min length, and max length (Short)
16
+ */
17
+ const VStringShort = (minLength = 1) => v.pipe(v.string(), v.trim(), v.minLength(minLength), v.maxLength(255));
18
+ /**
19
+ * String validator with trim, min length, and max length (Long)
20
+ */
21
+ const VStringLong = (minLength = 1) => v.pipe(v.string(), v.trim(), v.minLength(minLength), v.maxLength(LIMIT_LONG_STRING_MAX_LENGTH));
22
+ /**
23
+ * String validator with trim, and max length
24
+ */
25
+ const VStringMax = (maxLength = 255) => v.pipe(v.string(), v.trim(), v.maxLength(maxLength));
26
+ /**
27
+ * String validator with trim, and max length
28
+ */
29
+ const VStringMaxRegex = (maxLength = 255, pattern, message) => v.pipe(v.string(), v.trim(), v.maxLength(maxLength), v.regex(pattern, message));
30
+ /**
31
+ * String validator with trim, min length, and max length
32
+ */
33
+ const VStringMinMax = (minLength = 1, maxLength = 255) => v.pipe(v.string(), v.trim(), v.minLength(minLength), v.maxLength(maxLength));
34
+ /**
35
+ * String validator with trim, min length, max length, and regex pattern
36
+ */
37
+ const VStringMinMaxRegex = (minLength = 1, maxLength = 255, pattern, message) => v.pipe(v.string(), v.trim(), v.minLength(minLength), v.maxLength(maxLength), v.regex(pattern, message));
38
+ /**
39
+ * Optional Nullable String validator (Long)
40
+ */
41
+ const VStringLongNullable = (minLength = 1) => v.optional(v.nullable(v.pipe(v.string(), v.trim(), v.minLength(minLength), v.maxLength(LIMIT_LONG_STRING_MAX_LENGTH))));
42
+ /**
43
+ * Optional Nullable String validator
44
+ * Commonly used for optional fields that might be null in the database or API
45
+ */
46
+ const VStringShortNullable = (minLength = 1) => v.optional(v.nullable(v.pipe(v.string(), v.trim(), v.minLength(minLength), v.maxLength(255))));
47
+ /**
48
+ * URL Validator
49
+ * Checks for http/https prefix and valid URL format
50
+ */
51
+ const VStringUrl = () => v.pipe(v.string(), v.trim(), v.startsWith("http", ERROR_MESSAGE_URL_PREFIX), v.url(ERROR_MESSAGE_INVALID_URL));
52
+ /**
53
+ * UTM URL Validator
54
+ * Checks for valid URL format that does contain utm params
55
+ */
56
+ const VStringUrlUtm = () => v.pipe(v.string(), v.trim(), v.url(ERROR_MESSAGE_INVALID_URL), v.check((input) => {
57
+ return input.includes("utm_");
58
+ }, ERROR_MESSAGE_UTM_URL));
59
+ /**
60
+ * URL no utm params Validator
61
+ * Checks for valid URL format that does not contain utm params
62
+ */
63
+ const VStringUrlNoUtm = () => v.pipe(v.string(), v.trim(), v.url(ERROR_MESSAGE_INVALID_URL), v.check((input) => {
64
+ if (input === "") return false;
65
+ return input.indexOf("?") === -1;
66
+ }, ERROR_MESSAGE_URL_NO_QUERY_PARAMS));
67
+ /**
68
+ * Optional Nullable URL Validator
69
+ */
70
+ const VStringUrlNullable = () => v.optional(v.nullable(v.pipe(v.string(), v.trim(), v.startsWith("http", ERROR_MESSAGE_URL_PREFIX), v.url(ERROR_MESSAGE_INVALID_URL))));
71
+ /**
72
+ * Slug Validator
73
+ */
74
+ const VStringSlug = () => v.pipe(v.string(), v.trim(), v.minLength(1), v.maxLength(255), v.regex(REGEX_URL_SLUG, ERROR_MESSAGE_REGEX_URL_SLUG));
75
+ /**
76
+ * Email Validator
77
+ */
78
+ const VStringEmail = () => v.pipe(v.string(), v.trim(), v.minLength(5), v.maxLength(255), v.email());
79
+ /**
80
+ * Phone Validator (NANP)
81
+ */
82
+ const VStringPhone = () => v.pipe(v.string(), v.trim(), v.minLength(7), v.maxLength(24), v.regex(REGEX_NANP_PHONE, ERROR_MESSAGE_REGEX_PHONE));
83
+ /**
84
+ * Optional Nullable Phone Validator
85
+ */
86
+ const VStringPhoneNullable = () => v.optional(v.nullable(VStringPhone()));
87
+ /**
88
+ * Pagination Page Validator
89
+ */
90
+ const VPage = () => v.optional(v.pipe(v.number(), v.minValue(1)));
91
+ /**
92
+ * Pagination Size Validator
93
+ */
94
+ const VSize = (maxSize) => v.optional(v.pipe(v.number(), v.minValue(1), v.maxValue(maxSize)));
95
+ //#endregion
96
+ //#region src/schemas/blog.schemas.ts
97
+ const BlogPostSortKeys = [
98
+ "id",
99
+ "title",
100
+ "slug",
101
+ "is_live",
102
+ "is_featured",
103
+ "is_public",
104
+ "published",
105
+ "createdAt",
106
+ "updatedAt"
107
+ ];
108
+ const QuerySortBlogPosts = v.optional(v.pipe(v.array(v.picklist(BlogPostSortKeys.flatMap((k) => [`${k}:ASC`, `${k}:DESC`]))), v.maxLength(BlogPostSortKeys.length)));
109
+ const QueryStrapiSearchBlogPosts = v.object({
110
+ page: VPage(),
111
+ size: VSize(20),
112
+ search: v.optional(VStringShort(0)),
113
+ category: v.optional(VStringShort(0)),
114
+ tags: v.optional(v.array(VStringShort())),
115
+ status: v.optional(v.picklist(["draft", "published"])),
116
+ sort: QuerySortBlogPosts
117
+ });
118
+ const QueryStrapiSearchBlogPostsBySlug = v.object({
119
+ slug: VStringShort(),
120
+ status: v.optional(v.picklist(["draft", "published"]), "published"),
121
+ sort: QuerySortBlogPosts
122
+ });
123
+ //#endregion
124
+ //#region src/schemas/category.schemas.ts
125
+ const CategorySortKeys = [
126
+ "id",
127
+ "label",
128
+ "slug",
129
+ "createdAt",
130
+ "updatedAt"
131
+ ];
132
+ const QuerySortCategories = v.optional(v.pipe(v.array(v.picklist(CategorySortKeys.flatMap((k) => [`${k}:ASC`, `${k}:DESC`]))), v.maxLength(CategorySortKeys.length)));
133
+ const QueryStrapiSearchCategories = v.object({
134
+ page: VPage(),
135
+ size: VSize(20),
136
+ label: v.optional(VStringMax()),
137
+ slug: v.optional(VStringMax()),
138
+ sort: QuerySortCategories
139
+ });
140
+ const SCreateCategoryDocument = v.object({
141
+ label: VStringMinMax(1, 255),
142
+ slug: VStringMinMaxRegex(1, 255, REGEX_URL_SLUG, ERROR_MESSAGE_REGEX_URL_SLUG)
143
+ });
144
+ const SUpdateCategoryDocument = v.object({
145
+ label: v.optional(VStringMinMax(1, 255)),
146
+ slug: v.optional(VStringMinMaxRegex(1, 255, REGEX_URL_SLUG, ERROR_MESSAGE_REGEX_URL_SLUG))
147
+ });
148
+ const SUpdateCategoryDocumentRequest = v.object({
149
+ documentId: VStringMinMax(1, 255),
150
+ data: SUpdateCategoryDocument
151
+ });
152
+ //#endregion
153
+ //#region src/schemas/client-content-pillar.schemas.ts
154
+ const ClientContentPillarSortKeys = [
155
+ "id",
156
+ "is_active",
157
+ "content_pillar.title",
158
+ "content_pillar.slug",
159
+ "createdAt",
160
+ "updatedAt"
161
+ ];
162
+ const QuerySortClientContentPillars = v.optional(v.pipe(v.array(v.picklist(ClientContentPillarSortKeys.flatMap((k) => [`${k}:ASC`, `${k}:DESC`]))), v.maxLength(ClientContentPillarSortKeys.length)));
163
+ const QueryStrapiSearchClientContentPillars = v.object({
164
+ page: VPage(),
165
+ size: VSize(100),
166
+ is_active: v.optional(v.boolean()),
167
+ client_id: v.optional(VStringMinMax(1, 255)),
168
+ content_pillar_id: v.optional(VStringMinMax(1, 255)),
169
+ sort: QuerySortClientContentPillars
170
+ });
171
+ const SCreateClientContentPillarDocument = v.object({
172
+ client: VStringMinMax(1, 255),
173
+ content_pillar: VStringMinMax(1, 255),
174
+ is_active: v.optional(v.boolean())
175
+ });
176
+ const SUpdateClientContentPillarDocument = v.object({ is_active: v.optional(v.boolean()) });
177
+ const SUpdateClientContentPillarDocumentRequest = v.object({
178
+ documentId: VStringMinMax(1, 255),
179
+ data: SUpdateClientContentPillarDocument
180
+ });
181
+ //#endregion
182
+ //#region src/schemas/client-media-platform-content-type.schemas.ts
183
+ const ClientMediaPlatformContentTypeSortKeys = [
184
+ "id",
185
+ "is_active",
186
+ "is_organic_social",
187
+ "is_paid_media",
188
+ "client_media_platform.media_platform.title",
189
+ "client_media_platform.media_platform.slug",
190
+ "media_content_type.title",
191
+ "media_content_type.slug",
192
+ "createdAt",
193
+ "updatedAt"
194
+ ];
195
+ const QuerySortClientMediaPlatformContentTypes = v.optional(v.pipe(v.array(v.picklist(ClientMediaPlatformContentTypeSortKeys.flatMap((k) => [`${k}:ASC`, `${k}:DESC`]))), v.maxLength(ClientMediaPlatformContentTypeSortKeys.length)));
196
+ const QueryStrapiSearchClientMediaPlatformContentTypes = v.object({
197
+ page: VPage(),
198
+ size: VSize(100),
199
+ is_active: v.optional(v.boolean()),
200
+ is_organic_social: v.optional(v.boolean()),
201
+ is_paid_media: v.optional(v.boolean()),
202
+ client_media_platform_id: v.optional(VStringMinMax(1, 255)),
203
+ media_content_type_id: v.optional(VStringMinMax(1, 255)),
204
+ sort: QuerySortClientMediaPlatformContentTypes
205
+ });
206
+ const SCreateClientMediaPlatformContentTypeDocument = v.object({
207
+ client_media_platform: VStringMinMax(1, 255),
208
+ media_content_type: VStringMinMax(1, 255),
209
+ is_active: v.boolean(),
210
+ is_organic_social: v.boolean(),
211
+ is_paid_media: v.boolean()
212
+ });
213
+ const SUpdateClientMediaPlatformContentTypeDocument = v.object({
214
+ is_active: v.optional(v.boolean()),
215
+ is_organic_social: v.optional(v.boolean()),
216
+ is_paid_media: v.optional(v.boolean())
217
+ });
218
+ const SUpdateClientMediaPlatformContentTypeDocumentRequest = v.object({
219
+ documentId: VStringMinMax(1, 255),
220
+ data: SUpdateClientMediaPlatformContentTypeDocument
221
+ });
222
+ //#endregion
223
+ //#region src/schemas/client-media-platform.schemas.ts
224
+ const ClientMediaPlatformSortKeys = [
225
+ "id",
226
+ "is_active",
227
+ "is_organic_social",
228
+ "is_paid_media",
229
+ "media_platform.title",
230
+ "media_platform.slug",
231
+ "media_content_types.title",
232
+ "media_content_types.slug",
233
+ "createdAt",
234
+ "updatedAt"
235
+ ];
236
+ const QuerySortClientMediaPlatforms = v.optional(v.pipe(v.array(v.picklist(ClientMediaPlatformSortKeys.flatMap((k) => [`${k}:ASC`, `${k}:DESC`]))), v.maxLength(ClientMediaPlatformSortKeys.length)));
237
+ const QueryStrapiSearchClientMediaPlatforms = v.object({
238
+ page: VPage(),
239
+ size: VSize(100),
240
+ is_active: v.optional(v.boolean()),
241
+ client_id: v.optional(VStringMinMax(1, 255)),
242
+ media_platform_id: v.optional(VStringMinMax(1, 255)),
243
+ media_content_types: v.optional(v.pipe(v.array(VStringMinMax(1, 255)), v.minLength(1))),
244
+ sort: QuerySortClientMediaPlatforms
245
+ });
246
+ const SCreateClientMediaPlatformDocument = v.object({
247
+ client: VStringMinMax(1, 255),
248
+ media_platform: VStringMinMax(1, 255),
249
+ media_content_types: v.pipe(v.array(VStringMinMax(1, 255)), v.minLength(1)),
250
+ is_active: v.boolean()
251
+ });
252
+ const SUpdateClientMediaPlatformDocument = v.object({ is_active: v.optional(v.boolean()) });
253
+ const SUpdateClientMediaPlatformDocumentRequest = v.object({
254
+ documentId: VStringMinMax(1, 255),
255
+ data: SUpdateClientMediaPlatformDocument
256
+ });
257
+ const SAssociateMediaContentTypesToClientMediaPlatform = v.object({
258
+ client_media_platform: VStringMinMax(1, 255),
259
+ media_content_types: v.pipe(v.array(VStringMinMax(1, 255)), v.minLength(1))
260
+ });
261
+ //#endregion
262
+ //#region src/schemas/client-project.schemas.ts
263
+ const ClientProjectSortKeys = [
264
+ "id",
265
+ "title",
266
+ "slug",
267
+ "is_active",
268
+ "is_hidden",
269
+ "project_phase",
270
+ "project_url",
271
+ "project_type",
272
+ "project_pricing",
273
+ "project_address",
274
+ "phone_number",
275
+ "num_of_models",
276
+ "num_of_units_remain",
277
+ "buyer_profile",
278
+ "social_organic_start_date",
279
+ "paid_media_start_date",
280
+ "go_date",
281
+ "createdAt",
282
+ "updatedAt"
283
+ ];
284
+ const QuerySortClientProjects = v.optional(v.pipe(v.array(v.picklist(ClientProjectSortKeys.flatMap((k) => [`${k}:ASC`, `${k}:DESC`]))), v.maxLength(ClientProjectSortKeys.length)));
285
+ const QueryStrapiSearchClientProjects = v.object({
286
+ page: VPage(),
287
+ size: VSize(100),
288
+ client_id: v.optional(VStringShort()),
289
+ title: v.optional(VStringMax()),
290
+ slug: v.optional(VStringSlug()),
291
+ is_active: v.optional(v.boolean()),
292
+ is_hidden: v.optional(v.boolean()),
293
+ project_status: v.optional(v.pipe(v.array(v.optional(v.picklist(ClientProjectStatusOptions), ClientProjectStatusOptions[0])), v.minLength(1), v.maxLength(1))),
294
+ project_phase: v.optional(v.picklist(ClientProjectPhaseOptions)),
295
+ project_url: v.optional(VStringUrl()),
296
+ project_type: v.optional(VStringMax()),
297
+ project_pricing: v.optional(VStringMax(255)),
298
+ project_address: v.optional(VStringMax()),
299
+ phone_number: v.optional(VStringPhone()),
300
+ num_of_models: VIntegerNullable(),
301
+ num_of_units_remain: VIntegerNullable(),
302
+ buyer_profile: v.optional(VStringMax()),
303
+ social_organic_start_date: v.optional(v.pipe(v.string(), v.isoDate())),
304
+ paid_media_start_date: v.optional(v.pipe(v.string(), v.isoDate())),
305
+ go_date: v.optional(v.pipe(v.string(), v.isoDate())),
306
+ sort: QuerySortClientProjects
307
+ });
308
+ const SCreateClientProjectDocument = v.object({
309
+ clients: v.pipe(v.array(VStringShort()), v.minLength(1)),
310
+ title: VStringShort(),
311
+ slug: VStringSlug(),
312
+ is_active: v.boolean(),
313
+ is_hidden: v.boolean(),
314
+ project_status: v.pipe(v.array(v.optional(v.picklist(ClientProjectStatusOptions), ClientProjectStatusOptions[0])), v.minLength(1, ERROR_MESSAGE_ONE_PROJECT_STATUS), v.maxLength(1, ERROR_MESSAGE_ONE_PROJECT_STATUS)),
315
+ project_phase: v.picklist(ClientProjectPhaseOptions),
316
+ project_url: VStringUrlNullable(),
317
+ project_type: v.optional(v.nullable(VStringMax())),
318
+ project_pricing: v.optional(v.nullable(VStringMax())),
319
+ project_address: v.optional(v.nullable(VStringMax())),
320
+ phone_number: VStringPhoneNullable(),
321
+ num_of_models: VIntegerNullable(),
322
+ num_of_units_remain: VIntegerNullable(),
323
+ buyer_profile: v.optional(v.nullable(VStringMax())),
324
+ social_organic_start_date: v.optional(v.nullable(v.pipe(v.string(), v.isoDate()))),
325
+ paid_media_start_date: v.optional(v.nullable(v.pipe(v.string(), v.isoDate()))),
326
+ go_date: v.optional(v.nullable(v.pipe(v.string(), v.isoDate())))
327
+ });
328
+ const SUpdateClientProjectDocument = v.object({
329
+ clients: v.optional(v.pipe(v.array(VStringShort()), v.minLength(1))),
330
+ title: v.optional(VStringShort()),
331
+ slug: v.optional(VStringSlug()),
332
+ is_active: v.optional(v.boolean()),
333
+ is_hidden: v.optional(v.boolean()),
334
+ project_status: v.optional(v.pipe(v.array(v.optional(v.picklist(ClientProjectStatusOptions), ClientProjectStatusOptions[0])), v.minLength(1, ERROR_MESSAGE_ONE_PROJECT_STATUS), v.maxLength(1, ERROR_MESSAGE_ONE_PROJECT_STATUS))),
335
+ project_phase: v.optional(v.picklist(ClientProjectPhaseOptions)),
336
+ project_url: VStringUrlNullable(),
337
+ project_type: v.optional(v.nullable(VStringMax())),
338
+ project_pricing: v.optional(v.nullable(VStringMax())),
339
+ project_address: v.optional(v.nullable(VStringMax())),
340
+ phone_number: VStringPhoneNullable(),
341
+ num_of_models: VIntegerNullable(),
342
+ num_of_units_remain: VIntegerNullable(),
343
+ buyer_profile: v.optional(v.nullable(VStringMax())),
344
+ social_organic_start_date: v.optional(v.nullable(v.pipe(v.string(), v.isoDate()))),
345
+ paid_media_start_date: v.optional(v.nullable(v.pipe(v.string(), v.isoDate()))),
346
+ go_date: v.optional(v.nullable(v.pipe(v.string(), v.isoDate())))
347
+ });
348
+ const SUpdateClientProjectDocumentRequest = v.object({
349
+ documentId: VStringShort(),
350
+ data: SUpdateClientProjectDocument
351
+ });
352
+ const SAssociateClientToClientProjectDocument = v.object({
353
+ client: VStringShort(),
354
+ client_project: VStringShort()
355
+ });
356
+ //#endregion
357
+ //#region src/schemas/client-report.schemas.ts
358
+ const ClientReportSortKeys = [
359
+ "id",
360
+ "title",
361
+ "is_active",
362
+ "is_external",
363
+ "is_hidden",
364
+ "createdAt",
365
+ "updatedAt"
366
+ ];
367
+ const QuerySortClientReports = v.optional(v.pipe(v.array(v.picklist(ClientReportSortKeys.flatMap((k) => [`${k}:ASC`, `${k}:DESC`]))), v.maxLength(ClientReportSortKeys.length)));
368
+ const QueryStrapiSearchClientReports = v.object({
369
+ page: VPage(),
370
+ size: VSize(100),
371
+ title: v.optional(VStringMax()),
372
+ report_id: v.optional(VStringMax()),
373
+ is_active: v.optional(v.boolean()),
374
+ is_external: v.optional(v.boolean()),
375
+ is_hidden: v.optional(v.boolean()),
376
+ client_id: v.optional(VStringMinMax(1, 255)),
377
+ sort: QuerySortClientReports
378
+ });
379
+ const SCreateClientReportDocument = v.object({
380
+ clients: v.pipe(v.array(VStringMinMax(1, 255)), v.minLength(1)),
381
+ title: VStringMinMax(1, 255),
382
+ report_id: v.pipe(VStringMinMaxRegex(1, 255, REGEX_URL_SLUG, ERROR_MESSAGE_REGEX_URL_SLUG)),
383
+ is_active: v.optional(v.boolean(), true),
384
+ is_external: v.optional(v.boolean(), false),
385
+ is_hidden: v.optional(v.boolean(), false),
386
+ scopes: v.optional(v.pipe(v.array(v.string("Please provide a valid list of scopes."))), ["user:*"])
387
+ });
388
+ const SUpdateClientReportDocument = v.object({
389
+ clients: v.optional(v.pipe(v.array(VStringMinMax(1, 255)), v.minLength(1))),
390
+ title: v.optional(VStringMinMax(1, 255)),
391
+ report_id: v.optional(VStringMinMaxRegex(1, 255, REGEX_URL_SLUG, ERROR_MESSAGE_REGEX_URL_SLUG)),
392
+ is_active: v.optional(v.boolean()),
393
+ is_external: v.optional(v.boolean()),
394
+ is_hidden: v.optional(v.boolean()),
395
+ scopes: v.optional(v.pipe(v.array(v.string("Please provide a valid list of scopes."))), ["user:*"])
396
+ });
397
+ const SUpdateClientReportDocumentRequest = v.object({
398
+ documentId: VStringMinMax(1, 255),
399
+ data: SUpdateClientReportDocument
400
+ });
401
+ //#endregion
402
+ //#region src/schemas/client-styleguide.schemas.ts
403
+ const ClientStyleguideSortKeys = [
404
+ "id",
405
+ "title",
406
+ "createdAt",
407
+ "updatedAt"
408
+ ];
409
+ const QuerySortClientStyleguides = v.optional(v.pipe(v.array(v.picklist(ClientStyleguideSortKeys.flatMap((k) => [`${k}:ASC`, `${k}:DESC`]))), v.maxLength(ClientStyleguideSortKeys.length)));
410
+ const QueryStrapiSearchClientStyleguide = v.object({
411
+ page: VPage(),
412
+ size: VSize(100),
413
+ title: v.optional(VStringMax()),
414
+ is_active: v.optional(v.boolean()),
415
+ client_id: v.optional(VStringMinMax(1, 255)),
416
+ sort: QuerySortClientStyleguides
417
+ });
418
+ const SCreateClientStyleguideDocument = v.object({
419
+ client: VStringMinMax(1, 255),
420
+ title: VStringMinMax(1, 255),
421
+ is_active: v.optional(v.boolean(), true)
422
+ });
423
+ const SUpdateClientStyleguideDocument = v.object({
424
+ client: v.optional(VStringMinMax(1, 255)),
425
+ title: v.optional(VStringMinMax(1, 255)),
426
+ is_active: v.optional(v.boolean())
427
+ });
428
+ const SUpdateClientStyleguideDocumentRequest = v.object({
429
+ documentId: VStringMinMax(1, 255),
430
+ data: SUpdateClientStyleguideDocument
431
+ });
432
+ //#endregion
433
+ //#region src/schemas/client-user.schemas.ts
434
+ const ClientUserSortKeys = [
435
+ "id",
436
+ "client.title",
437
+ "client.teamwork_id",
438
+ "client.teamwork_name",
439
+ "client.is_active",
440
+ "client.allow_create_utm_link",
441
+ "client.is_paid_media",
442
+ "client.is_organic_social",
443
+ "user.username",
444
+ "user.email",
445
+ "user.confirmed",
446
+ "user.blocked",
447
+ "createdAt",
448
+ "updatedAt"
449
+ ];
450
+ const QuerySortClientUsers = v.optional(v.pipe(v.array(v.picklist(ClientUserSortKeys.flatMap((k) => [`${k}:ASC`, `${k}:DESC`]))), v.maxLength(ClientUserSortKeys.length)));
451
+ const SQueryListClientUserDocuments = v.object({
452
+ documentId: v.pipe(v.string(), v.minLength(1), v.maxLength(255)),
453
+ page: VPage(),
454
+ size: VSize(100)
455
+ });
456
+ const SCreateClientUserDocument = v.object({
457
+ client: VStringMinMax(1, 255),
458
+ user: VStringMinMax(1, 255),
459
+ scopes: v.pipe(v.array(v.pipe(v.string(), v.picklist(CLIENT_ENTITY_SCOPES)), "Please provide a valid list of scopes."), v.maxLength(CLIENT_ENTITY_SCOPES.length, "You cannot provide more scopes than there are available."))
460
+ });
461
+ const SUpdateClientUserDocument = v.object({ scopes: v.pipe(v.array(v.pipe(v.string(), v.picklist(CLIENT_ENTITY_SCOPES)), "Please provide a valid list of scopes."), v.maxLength(CLIENT_ENTITY_SCOPES.length, "You cannot provide more scopes than there are available.")) });
462
+ const SUpdateClientUserDocumentRequest = v.object({
463
+ documentId: VStringMinMax(1, 255),
464
+ data: SUpdateClientUserDocument
465
+ });
466
+ const SVerifyClientUserDocument = v.object({
467
+ client: VStringMinMax(1, 255),
468
+ user: VStringMinMax(1, 255)
469
+ });
470
+ //#endregion
471
+ //#region src/schemas/client.schemas.ts
472
+ const ClientSortKeys = [
473
+ "id",
474
+ "title",
475
+ "teamwork_id",
476
+ "teamwork_name",
477
+ "utm_sheet_id",
478
+ "is_active",
479
+ "is_hidden",
480
+ "is_featured",
481
+ "allow_create_utm_link",
482
+ "is_organic_social",
483
+ "is_paid_media",
484
+ "createdAt",
485
+ "updatedAt"
486
+ ];
487
+ const QuerySortClients = v.optional(v.pipe(v.array(v.picklist(ClientSortKeys.flatMap((k) => [`${k}:ASC`, `${k}:DESC`]))), v.maxLength(ClientSortKeys.length)));
488
+ const QueryStrapiSearchClients = v.object({
489
+ page: VPage(),
490
+ size: VSize(100),
491
+ title: v.optional(VStringMax()),
492
+ teamwork_id: v.optional(VStringMax()),
493
+ teamwork_name: v.optional(VStringMax()),
494
+ gainapp_id: v.optional(VStringMax()),
495
+ utm_sheet_id: v.optional(VStringMax()),
496
+ is_active: v.optional(v.boolean()),
497
+ is_hidden: v.optional(v.boolean()),
498
+ is_featured: v.optional(v.boolean()),
499
+ allow_create_utm_link: v.optional(v.boolean()),
500
+ is_paid_media: v.optional(v.boolean()),
501
+ is_organic_social: v.optional(v.boolean()),
502
+ classification: v.optional(v.pipe(v.array(v.picklist(IsValidClientClassificationSelectOptions)), v.maxLength(IsValidClientClassificationSelectOptions.length))),
503
+ sort: QuerySortClients
504
+ });
505
+ const SCreateClientDocument = v.object({
506
+ title: VStringMinMax(1, 255),
507
+ teamwork_id: VStringMinMax(1, 255),
508
+ teamwork_name: VStringMinMax(1, 255),
509
+ gainapp_id: v.optional(v.nullable(VStringMinMax(1, 255))),
510
+ utm_sheet_id: v.optional(VStringMinMax(1, 255)),
511
+ is_active: v.boolean(),
512
+ is_hidden: v.boolean(),
513
+ is_featured: v.boolean(),
514
+ allow_create_utm_link: v.boolean(),
515
+ is_organic_social: v.boolean(),
516
+ is_paid_media: v.boolean(),
517
+ classification: v.optional(v.pipe(v.array(v.picklist(IsValidClientClassificationSelectOptions)), v.maxLength(IsValidClientClassificationSelectOptions.length)))
518
+ });
519
+ const SUpdateClientDocument = v.object({
520
+ title: v.optional(VStringMinMax(1, 255)),
521
+ teamwork_id: v.optional(VStringMinMax(1, 255)),
522
+ teamwork_name: v.optional(VStringMinMax(1, 255)),
523
+ gainapp_id: v.optional(v.nullable(VStringMinMax(1, 255))),
524
+ utm_sheet_id: v.optional(VStringMinMax(1, 255)),
525
+ is_active: v.optional(v.boolean()),
526
+ is_hidden: v.optional(v.boolean()),
527
+ is_featured: v.optional(v.boolean()),
528
+ allow_create_utm_link: v.optional(v.boolean()),
529
+ is_organic_social: v.optional(v.boolean()),
530
+ is_paid_media: v.optional(v.boolean()),
531
+ classification: v.optional(v.pipe(v.array(v.picklist(IsValidClientClassificationSelectOptions)), v.maxLength(IsValidClientClassificationSelectOptions.length)))
532
+ });
533
+ const SUpdateClientDocumentRequest = v.object({
534
+ documentId: VStringMinMax(1, 255),
535
+ data: SUpdateClientDocument
536
+ });
537
+ //#endregion
538
+ //#region src/schemas/comment.schemas.ts
539
+ const StrapiCommentSortKeys = [
540
+ "id",
541
+ "content",
542
+ "blocked",
543
+ "blockedThread",
544
+ "approvalStatus",
545
+ "createdAt",
546
+ "updatedAt"
547
+ ];
548
+ const QuerySortStrapiComments = v.optional(v.pipe(v.array(v.picklist(StrapiCommentSortKeys.flatMap((k) => [`${k}:ASC`, `${k}:DESC`]))), v.maxLength(StrapiCommentSortKeys.length)));
549
+ const QueryFilterStrapiComments = v.object({
550
+ approvalStatus: v.optional(v.object({ eq: v.picklist(CommentApprovalStatusOptions) })),
551
+ authorName: v.optional(v.object({ containsi: v.pipe(v.string(), v.trim(), v.maxLength(255)) })),
552
+ authorEmail: v.optional(v.object({ containsi: v.pipe(v.string(), v.trim(), v.maxLength(255)) })),
553
+ blocked: v.optional(v.object({ eq: v.boolean() })),
554
+ blockedThread: v.optional(v.object({ eq: v.boolean() })),
555
+ content: v.optional(v.object({ containsi: v.pipe(v.string(), v.trim(), v.maxLength(255)) })),
556
+ removed: v.optional(v.object({ eq: v.boolean() }))
557
+ });
558
+ const QueryStrapiCommentsInHeirarchy = v.object({
559
+ relation: VStringMinMax(1, 255),
560
+ sort: QuerySortStrapiComments,
561
+ filters: v.optional(QueryFilterStrapiComments),
562
+ nested_levels: v.optional(VPage())
563
+ });
564
+ const QueryStrapiCommentsFlat = v.object({
565
+ relation: VStringMinMax(1, 255),
566
+ filters: v.optional(QueryFilterStrapiComments),
567
+ pagination: v.optional(v.object({
568
+ page: VPage(),
569
+ pageSize: v.optional(VSize(LIMIT_PAGINATION_MAX_SIZE))
570
+ })),
571
+ sort: QuerySortStrapiComments
572
+ });
573
+ const SCreateCommentDocument = v.object({
574
+ relation: VStringMinMax(1, 255),
575
+ content: VStringMinMax(1, LIMIT_LONG_STRING_MAX_LENGTH),
576
+ author: v.object({
577
+ id: v.number(),
578
+ name: VStringMinMax(1, 255)
579
+ }),
580
+ threadOf: v.optional(v.number())
581
+ });
582
+ const SUpdateCommentDocument = v.object({
583
+ relation: VStringMinMax(1, 255),
584
+ id: v.number(),
585
+ content: VStringMinMax(1, LIMIT_LONG_STRING_MAX_LENGTH),
586
+ author: v.object({ id: v.number() })
587
+ });
588
+ const SDeleteCommentDocument = v.object({
589
+ relation: VStringMinMax(1, 255),
590
+ id: v.number(),
591
+ author: v.object({ id: v.number() })
592
+ });
593
+ const SReportCommentDocument = v.object({
594
+ relation: VStringMinMax(1, 255),
595
+ commentId: v.number(),
596
+ content: VStringMinMax(1, LIMIT_LONG_STRING_MAX_LENGTH),
597
+ reason: v.picklist(ReportCommentReasonOptions, "You must select a valid reason for reporting this comment.")
598
+ });
599
+ //#endregion
600
+ //#region src/schemas/content-pillar.schemas.ts
601
+ const ContentPillarSortKeys = [
602
+ "id",
603
+ "title",
604
+ "slug",
605
+ "createdAt",
606
+ "updatedAt"
607
+ ];
608
+ const QuerySortContentPillars = v.optional(v.pipe(v.array(v.picklist(ContentPillarSortKeys.flatMap((k) => [`${k}:ASC`, `${k}:DESC`]))), v.maxLength(ContentPillarSortKeys.length)));
609
+ const QueryStrapiSearchContentPillars = v.object({
610
+ page: VPage(),
611
+ size: VSize(LIMIT_PAGINATION_MAX_SIZE),
612
+ title: v.optional(VStringMax()),
613
+ slug: v.optional(VStringMax()),
614
+ sort: QuerySortContentPillars
615
+ });
616
+ const SCreateContentPillarDocument = v.object({
617
+ title: VStringMinMax(1, 255),
618
+ slug: VStringMinMaxRegex(1, 255, REGEX_URL_SLUG, ERROR_MESSAGE_REGEX_URL_SLUG),
619
+ description: v.optional(v.nullable(VStringMax(255)))
620
+ });
621
+ const SUpdateContentPillarDocument = v.object({
622
+ title: v.optional(VStringMinMax(1, 255)),
623
+ slug: v.optional(VStringMinMaxRegex(1, 255, REGEX_URL_SLUG, ERROR_MESSAGE_REGEX_URL_SLUG)),
624
+ description: v.optional(v.nullable(VStringMax(255)))
625
+ });
626
+ const SUpdateContentPillarDocumentRequest = v.object({
627
+ documentId: VStringMinMax(1, 255),
628
+ data: SUpdateContentPillarDocument
629
+ });
630
+ //#endregion
631
+ //#region src/schemas/gcflytour-snap.schemas.ts
632
+ const GCFlyTourSnapSortKeys = [
633
+ "id",
634
+ "title",
635
+ "slug",
636
+ "utm_key",
637
+ "is_active",
638
+ "is_hidden",
639
+ "createdAt",
640
+ "updatedAt"
641
+ ];
642
+ const QuerySortGCFlyTourSnaps = v.optional(v.pipe(v.array(v.picklist(GCFlyTourSnapSortKeys.flatMap((k) => [`${k}:ASC`, `${k}:DESC`]))), v.maxLength(GCFlyTourSnapSortKeys.length)));
643
+ const QueryStrapiSearchGCFlyTourSnaps = v.object({
644
+ page: VPage(),
645
+ size: VSize(LIMIT_PAGINATION_MAX_SIZE),
646
+ title: v.optional(VStringMax()),
647
+ slug: v.optional(VStringMax()),
648
+ utm_key: v.optional(VStringMinMaxRegex(1, 255, REGEX_UTM_VALUE, ERROR_MESSAGE_REGEX_UTM_VALUE)),
649
+ is_active: v.optional(v.boolean()),
650
+ is_hidden: v.optional(v.boolean()),
651
+ gcflytour: v.optional(VStringMinMax(1, 255)),
652
+ gcflytours: v.optional(v.pipe(v.array(VStringMinMax(1, 255)), v.minLength(1))),
653
+ sort: QuerySortGCFlyTourSnaps
654
+ });
655
+ const SCreateGCFlyTourSnapDocument = v.object({
656
+ title: VStringMinMax(1, 255),
657
+ slug: v.pipe(VStringMinMaxRegex(1, 255, REGEX_URL_SLUG, ERROR_MESSAGE_REGEX_URL_SLUG)),
658
+ description: v.optional(v.nullable(VStringMax(255))),
659
+ utm_key: v.optional(v.nullable(VStringMinMaxRegex(1, 255, REGEX_UTM_VALUE, ERROR_MESSAGE_REGEX_UTM_VALUE))),
660
+ is_active: v.boolean(),
661
+ is_hidden: v.boolean(),
662
+ gcflytour: VStringMinMax(1, 255)
663
+ });
664
+ const SUpdateGCFlyTourSnapDocument = v.object({
665
+ title: v.optional(VStringMinMax(1, 255)),
666
+ slug: v.optional(VStringMinMaxRegex(1, 255, REGEX_URL_SLUG, ERROR_MESSAGE_REGEX_URL_SLUG)),
667
+ description: v.optional(v.nullable(VStringMax(255))),
668
+ utm_key: v.optional(v.nullable(VStringMinMaxRegex(1, 255, REGEX_UTM_VALUE, ERROR_MESSAGE_REGEX_UTM_VALUE))),
669
+ is_active: v.optional(v.boolean()),
670
+ is_hidden: v.optional(v.boolean()),
671
+ gcflytour: v.optional(VStringMinMax(1, 255))
672
+ });
673
+ const SUpdateGCFlyTourSnapDocumentRequest = v.object({
674
+ documentId: VStringMinMax(1, 255),
675
+ data: SUpdateGCFlyTourSnapDocument
676
+ });
677
+ //#endregion
678
+ //#region src/schemas/gcflytour.schemas.ts
679
+ const GCFlyTourSortKeys = [
680
+ "id",
681
+ "title",
682
+ "slug",
683
+ "utm_key",
684
+ "is_active",
685
+ "is_hidden",
686
+ "createdAt",
687
+ "updatedAt"
688
+ ];
689
+ const QuerySortGCFlyTours = v.optional(v.pipe(v.array(v.picklist(GCFlyTourSortKeys.flatMap((k) => [`${k}:ASC`, `${k}:DESC`]))), v.maxLength(GCFlyTourSortKeys.length)));
690
+ const QueryStrapiSearchGCFlyTours = v.object({
691
+ page: VPage(),
692
+ size: VSize(LIMIT_PAGINATION_MAX_SIZE),
693
+ title: v.optional(VStringMax()),
694
+ slug: v.optional(VStringMax()),
695
+ utm_key: v.optional(VStringMinMaxRegex(1, 255, REGEX_UTM_VALUE, ERROR_MESSAGE_REGEX_UTM_VALUE)),
696
+ is_active: v.optional(v.boolean()),
697
+ is_hidden: v.optional(v.boolean()),
698
+ clients: v.optional(v.pipe(v.array(VStringMinMax(1, 255)), v.minLength(1))),
699
+ sort: QuerySortGCFlyTours
700
+ });
701
+ const SCreateGCFlyTourDocument = v.object({
702
+ title: VStringMinMax(1, 255),
703
+ slug: VStringMinMaxRegex(1, 255, REGEX_URL_SLUG, ERROR_MESSAGE_REGEX_URL_SLUG),
704
+ description: v.optional(v.nullable(VStringMax(255))),
705
+ utm_key: v.optional(v.nullable(VStringMinMaxRegex(1, 255, REGEX_UTM_VALUE, ERROR_MESSAGE_REGEX_UTM_VALUE))),
706
+ is_active: v.boolean(),
707
+ is_hidden: v.boolean(),
708
+ clients: v.optional(v.pipe(v.array(VStringMinMax(1, 255)), v.minLength(1)))
709
+ });
710
+ const SUpdateGCFlyTourDocument = v.object({
711
+ title: v.optional(VStringMinMax(1, 255)),
712
+ slug: v.optional(VStringMinMaxRegex(1, 255, REGEX_URL_SLUG, ERROR_MESSAGE_REGEX_URL_SLUG)),
713
+ description: v.optional(v.nullable(VStringMax(255))),
714
+ utm_key: v.optional(v.nullable(VStringMinMaxRegex(1, 255, REGEX_UTM_VALUE, ERROR_MESSAGE_REGEX_UTM_VALUE))),
715
+ is_active: v.optional(v.boolean()),
716
+ is_hidden: v.optional(v.boolean()),
717
+ clients: v.optional(v.pipe(v.array(VStringMinMax(1, 255)), v.minLength(1)))
718
+ });
719
+ const SUpdateGCFlyTourDocumentRequest = v.object({
720
+ documentId: VStringMinMax(1, 255),
721
+ data: SUpdateGCFlyTourDocument
722
+ });
723
+ const SAssociateClientsToGCFlyTour = v.object({
724
+ gcflytour: VStringMinMax(1, 255),
725
+ clients: v.pipe(v.array(VStringMinMax(1, 255)), v.minLength(1))
726
+ });
727
+ const SAssociateGcFlyTourSnapsToGCFlyTour = v.object({
728
+ gcflytour: VStringMinMax(1, 255),
729
+ gcflytour_snaps: v.pipe(v.array(VStringMinMax(1, 255)), v.minLength(1))
730
+ });
731
+ //#endregion
732
+ //#region src/schemas/generic.schemas.ts
733
+ const EntitySortKeys = [
734
+ "id",
735
+ "createdAt",
736
+ "updatedAt"
737
+ ];
738
+ const QuerySortEntities = v.optional(v.pipe(v.array(v.picklist(EntitySortKeys.flatMap((k) => [`${k}:ASC`, `${k}:DESC`]))), v.maxLength(EntitySortKeys.length)));
739
+ const QueryStrapiPaginated = v.object({
740
+ page: VPage(),
741
+ size: VSize(LIMIT_PAGINATION_MAX_SIZE),
742
+ sort: QuerySortEntities
743
+ });
744
+ const QueryStrapiById = v.object({ id: v.number() });
745
+ const QueryStrapiByDocumentId = v.object({ documentId: VStringShort() });
746
+ const QueryStrapiBySlug = v.object({
747
+ slug: VStringShort(),
748
+ sort: QuerySortEntities
749
+ });
750
+ const QueryStrapiByEmail = v.object({
751
+ email: VStringEmail(),
752
+ sort: QuerySortEntities
753
+ });
754
+ const QueryStrapiByPhone = v.object({
755
+ phone: VStringPhone(),
756
+ sort: QuerySortEntities
757
+ });
758
+ const QueryStrapiByName = v.object({
759
+ name: VStringShort(),
760
+ sort: QuerySortEntities
761
+ });
762
+ //#endregion
763
+ //#region src/schemas/lead.schemas.ts
764
+ const SCreateLeadDocument = v.object({
765
+ first_name: VStringMinMax(1, 255),
766
+ last_name: VStringMinMax(1, 255),
767
+ email: VStringEmail(),
768
+ phone: VStringPhone(),
769
+ company: VStringMinMax(1, 255),
770
+ title: VStringMinMax(1, 255),
771
+ message: VStringMax(LIMIT_LONG_STRING_MAX_LENGTH),
772
+ product_interest: VStringMax(255),
773
+ email_consent: v.boolean(),
774
+ sms_consent: v.boolean(),
775
+ on_page: VStringMax(LIMIT_MAX_DESTINATION),
776
+ captcha: VStringMax(LIMIT_LONG_STRING_MAX_LENGTH)
777
+ });
778
+ const SUpdateLeadDocument = v.object({
779
+ first_name: v.optional(VStringMinMax(1, 255)),
780
+ last_name: v.optional(VStringMinMax(1, 255)),
781
+ email: v.optional(VStringEmail()),
782
+ phone: v.optional(VStringPhone()),
783
+ company: v.optional(VStringMinMax(1, 255)),
784
+ title: v.optional(VStringMinMax(1, 255)),
785
+ message: v.optional(VStringMax(LIMIT_LONG_STRING_MAX_LENGTH)),
786
+ product_interest: v.optional(v.nullable(VStringMax(255))),
787
+ email_consent: v.optional(v.boolean()),
788
+ sms_consent: v.optional(v.boolean()),
789
+ on_page: v.optional(VStringMax(LIMIT_MAX_DESTINATION)),
790
+ captcha: VStringMax(LIMIT_LONG_STRING_MAX_LENGTH)
791
+ });
792
+ const SUpdateLeadRequest = v.object({
793
+ documentId: VStringMinMax(1, 255),
794
+ data: SUpdateLeadDocument
795
+ });
796
+ //#endregion
797
+ //#region src/schemas/media-content-type.schemas.ts
798
+ const MediaContentTypeSortKeys = [
799
+ "id",
800
+ "title",
801
+ "slug",
802
+ "utm_key",
803
+ "is_active",
804
+ "is_organic_social",
805
+ "is_paid_media",
806
+ "createdAt",
807
+ "updatedAt"
808
+ ];
809
+ const QuerySortMediaContentType = v.optional(v.pipe(v.array(v.picklist(MediaContentTypeSortKeys.flatMap((k) => [`${k}:ASC`, `${k}:DESC`]))), v.maxLength(MediaContentTypeSortKeys.length)));
810
+ const QueryStrapiSearchMediaContentTypes = v.object({
811
+ page: VPage(),
812
+ size: VSize(LIMIT_PAGINATION_MAX_SIZE),
813
+ title: v.optional(VStringMax()),
814
+ slug: v.optional(VStringMax()),
815
+ utm_key: v.optional(VStringMinMaxRegex(1, 255, REGEX_UTM_VALUE, ERROR_MESSAGE_REGEX_UTM_VALUE)),
816
+ is_active: v.optional(v.boolean()),
817
+ is_organic_social: v.optional(v.boolean()),
818
+ is_paid_media: v.optional(v.boolean()),
819
+ media_platforms: v.optional(v.pipe(v.array(VStringMinMax(1, 255)), v.minLength(1))),
820
+ sort: QuerySortMediaContentType
821
+ });
822
+ const SCreateMediaContentTypeDocument = v.object({
823
+ title: VStringMinMax(1, 255),
824
+ slug: v.pipe(VStringMinMaxRegex(1, 255, REGEX_URL_SLUG, ERROR_MESSAGE_REGEX_URL_SLUG)),
825
+ utm_key: v.optional(v.nullable(VStringMinMaxRegex(1, 255, REGEX_UTM_VALUE, ERROR_MESSAGE_REGEX_UTM_VALUE))),
826
+ is_active: v.boolean(),
827
+ is_organic_social: v.boolean(),
828
+ is_paid_media: v.boolean(),
829
+ description: v.optional(v.nullable(VStringMax(255)))
830
+ });
831
+ const SUpdateMediaContentTypeDocument = v.object({
832
+ title: v.optional(VStringMinMax(1, 255)),
833
+ slug: v.optional(VStringMinMaxRegex(1, 255, REGEX_URL_SLUG, ERROR_MESSAGE_REGEX_URL_SLUG)),
834
+ utm_key: v.optional(v.nullable(VStringMinMaxRegex(1, 255, REGEX_UTM_VALUE, ERROR_MESSAGE_REGEX_UTM_VALUE))),
835
+ is_active: v.optional(v.boolean()),
836
+ is_organic_social: v.optional(v.boolean()),
837
+ is_paid_media: v.optional(v.boolean()),
838
+ description: v.optional(v.nullable(VStringMax(255)))
839
+ });
840
+ const SUpdateMediaContentTypeDocumentRequest = v.object({
841
+ documentId: VStringMinMax(1, 255),
842
+ data: SUpdateMediaContentTypeDocument
843
+ });
844
+ const SAssociateMediaPlatformsToMediaContentType = v.object({
845
+ media_content_type: VStringMinMax(1, 255),
846
+ media_platforms: v.pipe(v.array(VStringMinMax(1, 255)), v.minLength(1))
847
+ });
848
+ const SAssociateClientMediaPlatformContentTypesToMediaContentType = v.object({
849
+ media_content_type: VStringMinMax(1, 255),
850
+ client_media_platform_content_types: v.pipe(v.array(VStringMinMax(1, 255)), v.minLength(1))
851
+ });
852
+ //#endregion
853
+ //#region src/schemas/media-platform.schemas.ts
854
+ const MediaPlatformSortKeys = [
855
+ "id",
856
+ "title",
857
+ "slug",
858
+ "utm_key",
859
+ "is_active",
860
+ "is_organic_social",
861
+ "is_paid_media",
862
+ "createdAt",
863
+ "updatedAt"
864
+ ];
865
+ const QuerySortMediaPlatforms = v.optional(v.pipe(v.array(v.picklist(MediaPlatformSortKeys.flatMap((k) => [`${k}:ASC`, `${k}:DESC`]))), v.maxLength(MediaPlatformSortKeys.length)));
866
+ const QueryStrapiSearchMediaPlatforms = v.object({
867
+ page: VPage(),
868
+ size: VSize(LIMIT_PAGINATION_MAX_SIZE),
869
+ title: v.optional(VStringMax()),
870
+ slug: v.optional(VStringMax()),
871
+ utm_key: v.optional(VStringMinMaxRegex(1, 255, REGEX_UTM_VALUE, ERROR_MESSAGE_REGEX_UTM_VALUE)),
872
+ is_active: v.optional(v.boolean()),
873
+ is_organic_social: v.optional(v.boolean()),
874
+ is_paid_media: v.optional(v.boolean()),
875
+ media_content_types: v.optional(v.pipe(v.array(VStringMinMax(1, 255)), v.minLength(1))),
876
+ sort: QuerySortMediaPlatforms
877
+ });
878
+ const SCreateMediaPlatformDocument = v.object({
879
+ title: VStringMinMax(1, 255),
880
+ slug: v.pipe(VStringMinMaxRegex(1, 255, REGEX_URL_SLUG, ERROR_MESSAGE_REGEX_URL_SLUG)),
881
+ utm_key: v.optional(v.nullable(VStringMinMaxRegex(1, 255, REGEX_UTM_VALUE, ERROR_MESSAGE_REGEX_UTM_VALUE))),
882
+ is_active: v.boolean(),
883
+ is_organic_social: v.boolean(),
884
+ is_paid_media: v.boolean(),
885
+ description: v.optional(v.nullable(VStringMax(255)))
886
+ });
887
+ const SUpdateMediaPlatformDocument = v.object({
888
+ title: v.optional(VStringMinMax(1, 255)),
889
+ slug: v.optional(VStringMinMaxRegex(1, 255, REGEX_URL_SLUG, ERROR_MESSAGE_REGEX_URL_SLUG)),
890
+ utm_key: v.optional(v.nullable(VStringMinMaxRegex(1, 255, REGEX_UTM_VALUE, ERROR_MESSAGE_REGEX_UTM_VALUE))),
891
+ is_active: v.optional(v.boolean()),
892
+ is_organic_social: v.optional(v.boolean()),
893
+ is_paid_media: v.optional(v.boolean()),
894
+ description: v.optional(v.nullable(VStringMax(255)))
895
+ });
896
+ const SUpdateMediaPlatformDocumentRequest = v.object({
897
+ documentId: VStringMinMax(1, 255),
898
+ data: SUpdateMediaPlatformDocument
899
+ });
900
+ const SAssociateMediaContentTypesToMediaPlatform = v.object({
901
+ media_platform: VStringMinMax(1, 255),
902
+ media_content_types: v.pipe(v.array(VStringMinMax(1, 255)), v.minLength(1))
903
+ });
904
+ //#endregion
905
+ //#region src/schemas/monday-workspace.schemas.ts
906
+ const MondayWorkspaceSortKeys = [
907
+ "id",
908
+ "clients.title",
909
+ "clients.teamwork_name",
910
+ "title",
911
+ "workspace_id",
912
+ "createdAt",
913
+ "updatedAt"
914
+ ];
915
+ const QuerySortMondayWorkspaces = v.optional(v.pipe(v.array(v.picklist(MondayWorkspaceSortKeys.flatMap((k) => [`${k}:ASC`, `${k}:DESC`]))), v.maxLength(MondayWorkspaceSortKeys.length)));
916
+ const QueryStrapiSearchMondayWorkspaces = v.object({
917
+ page: VPage(),
918
+ size: VSize(LIMIT_MONDAY_WORKSPACE_PAGINATION_MAX_SIZE),
919
+ clients: v.optional(v.pipe(v.array(VStringShort()), v.minLength(1))),
920
+ title: v.optional(VStringMax()),
921
+ workspace_id: v.optional(VStringMax()),
922
+ sort: QuerySortMondayWorkspaces
923
+ });
924
+ const SCreateMondayWorkspaceDocument = v.object({
925
+ clients: v.pipe(v.array(VStringShort()), v.minLength(1)),
926
+ title: VStringShort(),
927
+ workspace_id: VStringMinMaxRegex(1, 255, REGEX_UTM_VALUE, ERROR_MESSAGE_REGEX_UTM_VALUE)
928
+ });
929
+ const SUpdateMondayWorkspaceDocument = v.object({
930
+ clients: v.optional(v.pipe(v.array(VStringShort()), v.minLength(1))),
931
+ title: v.optional(VStringShort()),
932
+ workspace_id: v.optional(VStringMinMaxRegex(1, 255, REGEX_UTM_VALUE, ERROR_MESSAGE_REGEX_UTM_VALUE))
933
+ });
934
+ const SUpdateMondayWorkspaceDocumentRequest = v.object({
935
+ documentId: VStringShort(),
936
+ data: SUpdateMondayWorkspaceDocument
937
+ });
938
+ //#endregion
939
+ //#region src/schemas/newsletter.schemas.ts
940
+ const SCreateNewsletterSignup = v.object({
941
+ first_name: VStringMinMax(1, 255),
942
+ last_name: VStringMinMax(1, 255),
943
+ email: VStringEmail(),
944
+ download_key: v.pipe(v.string(), v.trim(), v.maxLength(255)),
945
+ product_interest: v.pipe(v.string(ERROR_MESSAGE_ROBOT), v.trim(), v.maxLength(255)),
946
+ email_consent: v.boolean(),
947
+ sms_consent: v.boolean(),
948
+ on_page: VStringMax(LIMIT_MAX_DESTINATION),
949
+ captcha: VStringMax(LIMIT_LONG_STRING_MAX_LENGTH),
950
+ middle_name: v.string()
951
+ });
952
+ const SCreateNewsletterSignupDocument = v.object({
953
+ first_name: VStringMinMax(1, 255),
954
+ last_name: VStringMinMax(1, 255),
955
+ email: VStringEmail(),
956
+ download_key: v.optional(v.nullable(VStringMax())),
957
+ product_interest: v.optional(v.nullable(VStringMax(255))),
958
+ email_consent: v.boolean(),
959
+ sms_consent: v.boolean(),
960
+ on_page: VStringMax(LIMIT_MAX_DESTINATION),
961
+ captcha: VStringMax(LIMIT_LONG_STRING_MAX_LENGTH)
962
+ });
963
+ const SUpdateNewsletterSignupDocument = v.object({
964
+ first_name: v.optional(VStringMinMax(1, 255)),
965
+ last_name: v.optional(VStringMinMax(1, 255)),
966
+ email: v.optional(VStringEmail()),
967
+ download_key: v.optional(v.nullable(VStringMax())),
968
+ product_interest: v.optional(v.nullable(VStringMax(255))),
969
+ email_consent: v.optional(v.boolean()),
970
+ sms_consent: v.optional(v.boolean()),
971
+ on_page: v.optional(VStringMax(LIMIT_MAX_DESTINATION)),
972
+ captcha: VStringMax(LIMIT_LONG_STRING_MAX_LENGTH)
973
+ });
974
+ const SUpdateNewsletterSignupRequest = v.object({
975
+ documentId: VStringMinMax(1, 255),
976
+ data: SUpdateNewsletterSignupDocument
977
+ });
978
+ //#endregion
979
+ //#region src/schemas/resume.schemas.ts
980
+ const checkIsValidUrlList = (input) => {
981
+ if (input === "") return true;
982
+ const urls = input.split(",");
983
+ if (urls.length > 0) {
984
+ const truthy = [];
985
+ for (let i = 0; i < urls.length; i++) {
986
+ const result = v.safeParse(v.pipe(v.string(), v.trim(), v.startsWith("http", ERROR_MESSAGE_URL_PREFIX), v.url(ERROR_MESSAGE_INVALID_URL)), urls[i]);
987
+ truthy.push(result.success);
988
+ }
989
+ return truthy.every((item) => item === true);
990
+ }
991
+ return false;
992
+ };
993
+ const SValidFileObject = v.object({
994
+ id: v.number(),
995
+ src: v.optional(v.string())
996
+ });
997
+ const SValidSocialProfiles = v.pipe(v.string(), v.trim(), v.maxLength(LIMIT_LONG_STRING_MAX_LENGTH), v.check(checkIsValidUrlList, ERROR_MESSAGE_COMMA_SEPPARATED_URLS));
998
+ const SCreateResume = v.object({
999
+ first_name: VStringMinMax(1, 255),
1000
+ last_name: VStringMinMax(1, 255),
1001
+ email: VStringEmail(),
1002
+ phone: v.optional(VStringPhone()),
1003
+ message: VStringMax(LIMIT_LONG_STRING_MAX_LENGTH),
1004
+ social_profiles: v.optional(SValidSocialProfiles),
1005
+ file: v.nullable(v.pipe(v.file("Please upload a PDF or Word document."), v.mimeType([
1006
+ "application/pdf",
1007
+ "application/msword",
1008
+ "application/vnd.openxmlformats-officedocument.wordprocessingml.document",
1009
+ "application/rtf",
1010
+ "text/plain",
1011
+ "application/vnd.oasis.opendocument.text"
1012
+ ], "Please upload a PDF or Word document."))),
1013
+ email_consent: v.boolean(),
1014
+ sms_consent: v.boolean(),
1015
+ on_page: VStringMax(LIMIT_MAX_DESTINATION),
1016
+ captcha: VStringMax(LIMIT_LONG_STRING_MAX_LENGTH)
1017
+ });
1018
+ const SCreateResumeInfo = v.object({
1019
+ first_name: VStringMinMax(1, 255),
1020
+ last_name: VStringMinMax(1, 255),
1021
+ email: VStringEmail(),
1022
+ phone: v.optional(VStringPhone()),
1023
+ message: VStringMax(LIMIT_LONG_STRING_MAX_LENGTH),
1024
+ social_profiles: v.optional(SValidSocialProfiles),
1025
+ file: SValidFileObject,
1026
+ email_consent: v.boolean(),
1027
+ sms_consent: v.boolean(),
1028
+ on_page: VStringMax(LIMIT_MAX_DESTINATION),
1029
+ captcha: VStringMax(LIMIT_LONG_STRING_MAX_LENGTH)
1030
+ });
1031
+ const SCreateResumeInfoDocument = v.object({
1032
+ first_name: VStringMinMax(1, 255),
1033
+ last_name: VStringMinMax(1, 255),
1034
+ email: VStringEmail(),
1035
+ phone: VStringPhoneNullable(),
1036
+ message: VStringMax(LIMIT_LONG_STRING_MAX_LENGTH),
1037
+ social_profiles: v.optional(SValidSocialProfiles),
1038
+ file: SValidFileObject,
1039
+ email_consent: v.boolean(),
1040
+ sms_consent: v.boolean(),
1041
+ on_page: VStringMax(LIMIT_MAX_DESTINATION),
1042
+ captcha: VStringMax(LIMIT_LONG_STRING_MAX_LENGTH)
1043
+ });
1044
+ const SUpdateResumeInfo = v.object({
1045
+ first_name: v.optional(VStringMinMax(1, 255)),
1046
+ last_name: v.optional(VStringMinMax(1, 255)),
1047
+ email: v.optional(VStringEmail()),
1048
+ phone: VStringPhoneNullable(),
1049
+ message: v.optional(VStringMax(LIMIT_LONG_STRING_MAX_LENGTH)),
1050
+ social_profiles: v.optional(v.nullable(v.optional(SValidSocialProfiles))),
1051
+ file: v.optional(SValidFileObject),
1052
+ email_consent: v.optional(v.boolean()),
1053
+ sms_consent: v.optional(v.boolean()),
1054
+ on_page: v.optional(VStringMax(LIMIT_MAX_DESTINATION)),
1055
+ captcha: VStringMax(LIMIT_LONG_STRING_MAX_LENGTH)
1056
+ });
1057
+ const SUpdateResumeInfoDocument = v.object({
1058
+ first_name: v.optional(VStringMinMax(1, 255)),
1059
+ last_name: v.optional(VStringMinMax(1, 255)),
1060
+ email: v.optional(VStringEmail()),
1061
+ phone: v.optional(VStringPhone()),
1062
+ message: v.optional(VStringMax(LIMIT_LONG_STRING_MAX_LENGTH)),
1063
+ social_profiles: v.optional(v.optional(SValidSocialProfiles)),
1064
+ file: v.optional(SValidFileObject),
1065
+ email_consent: v.optional(v.boolean()),
1066
+ sms_consent: v.optional(v.boolean()),
1067
+ on_page: v.optional(VStringMax(LIMIT_MAX_DESTINATION)),
1068
+ captcha: VStringMax(LIMIT_LONG_STRING_MAX_LENGTH)
1069
+ });
1070
+ const SUpdateResumeInfoRequest = v.object({
1071
+ documentId: VStringMinMax(1, 255),
1072
+ data: SUpdateResumeInfo
1073
+ });
1074
+ //#endregion
1075
+ //#region src/schemas/sharpspring.schemas.ts
1076
+ const SharpSpringSignUpToDownload = v.object({
1077
+ first_name: VStringMinMax(1, 255),
1078
+ last_name: VStringMinMax(1, 255),
1079
+ email: VStringEmail(),
1080
+ download_key: VStringMax(255),
1081
+ email_consent: v.boolean(),
1082
+ on_page: VStringMax(LIMIT_MAX_DESTINATION),
1083
+ captcha: VStringMax(LIMIT_LONG_STRING_MAX_LENGTH),
1084
+ middle_name: v.string()
1085
+ });
1086
+ //#endregion
1087
+ //#region src/schemas/strapi-associate-relations.schemas.ts
1088
+ const SEntityRelationPositionBefore = v.object({ before: VStringMinMax(1, 255) });
1089
+ const SEntityRelationPositionAfter = v.object({ after: VStringMinMax(1, 255) });
1090
+ const SEntityRelationPositionStart = v.object({ start: v.boolean() });
1091
+ const SEntityRelationPositionEnd = v.object({ end: v.boolean() });
1092
+ const SEntityRelationPosition = v.fallback(v.pipe(v.union([
1093
+ SEntityRelationPositionBefore,
1094
+ SEntityRelationPositionAfter,
1095
+ SEntityRelationPositionStart,
1096
+ SEntityRelationPositionEnd
1097
+ ])), { end: true });
1098
+ const SEntityRelation = v.object({
1099
+ documentId: VStringMinMax(1, 255),
1100
+ position: v.optional(SEntityRelationPosition)
1101
+ });
1102
+ const SConnectManyEntityRelation = v.object({ connect: v.pipe(v.array(v.union([VStringMinMax(1, 255), SEntityRelation])), v.minLength(1), v.maxLength(100)) });
1103
+ const SDisconnectManyEntityRelation = v.object({ disconnect: v.pipe(v.array(v.union([VStringMinMax(1, 255), SEntityRelation])), v.minLength(1), v.maxLength(100)) });
1104
+ const SSetManyEntityRelation = v.object({ set: v.pipe(v.array(v.union([VStringMinMax(1, 255), SEntityRelation])), v.minLength(1)) });
1105
+ const SConnectOneEntityRelation = v.object({ connect: v.union([VStringMinMax(1, 255), SEntityRelation]) });
1106
+ const SDisconnectOneEntityRelation = v.object({ disconnect: v.union([VStringMinMax(1, 255), SEntityRelation]) });
1107
+ const SSetOneEntityRelation = v.object({ set: v.union([VStringMinMax(1, 255), SEntityRelation]) });
1108
+ //#endregion
1109
+ //#region src/schemas/strapi-media-upload.schemas.ts
1110
+ /**
1111
+ * @documentation [Strapi Rest API Upload Files](https://docs.strapi.io/cms/api/rest/upload)
1112
+ */
1113
+ const SValidFileUpload10MB = v.pipe(v.file(), v.minSize(1), v.maxSize(10485760, `File size cannot exceed 10MB.`));
1114
+ const SCreateStrapiMediaUploadDocument = v.object({
1115
+ files: SValidFileUpload10MB,
1116
+ ref: VStringMax(),
1117
+ refId: VStringMinMax(1, 255),
1118
+ field: VStringMax()
1119
+ });
1120
+ const SCreateMultipleStrapiMediaUploadDocument = v.object({
1121
+ files: v.pipe(v.array(SValidFileUpload10MB), v.minLength(1)),
1122
+ ref: VStringMax(),
1123
+ refId: VStringMinMax(1, 255),
1124
+ field: VStringMax()
1125
+ });
1126
+ const SUpdateStrapiMediaFileInfo = v.object({
1127
+ name: VStringMinMax(1, 255),
1128
+ alternativeText: v.optional(VStringMinMax(1, 255)),
1129
+ caption: v.optional(VStringMinMax(1, 255))
1130
+ });
1131
+ //#endregion
1132
+ //#region src/schemas/tag.schemas.ts
1133
+ const TagSortKeys = [
1134
+ "id",
1135
+ "label",
1136
+ "slug",
1137
+ "createdAt",
1138
+ "updatedAt"
1139
+ ];
1140
+ const QuerySortTags = v.optional(v.pipe(v.array(v.picklist(TagSortKeys.flatMap((k) => [`${k}:ASC`, `${k}:DESC`]))), v.maxLength(TagSortKeys.length)));
1141
+ const QueryStrapiSearchTags = v.object({
1142
+ page: VPage(),
1143
+ size: VSize(20),
1144
+ label: v.optional(VStringMax()),
1145
+ slug: v.optional(VStringMax()),
1146
+ sort: QuerySortTags
1147
+ });
1148
+ const SCreateTagDocument = v.object({
1149
+ label: VStringMinMax(1, 255),
1150
+ slug: v.pipe(VStringMinMaxRegex(1, 255, REGEX_URL_SLUG, ERROR_MESSAGE_REGEX_URL_SLUG))
1151
+ });
1152
+ const SUpdateTagDocument = v.object({
1153
+ label: v.optional(VStringMinMax(1, 255)),
1154
+ slug: v.optional(VStringMinMaxRegex(1, 255, REGEX_URL_SLUG, ERROR_MESSAGE_REGEX_URL_SLUG))
1155
+ });
1156
+ const SUpdateTagDocumentRequest = v.object({
1157
+ documentId: VStringMinMax(1, 255),
1158
+ data: SUpdateTagDocument
1159
+ });
1160
+ //#endregion
1161
+ //#region src/schemas/team-member.schemas.ts
1162
+ const TeamMemberSortKeys = [
1163
+ "id",
1164
+ "name",
1165
+ "order",
1166
+ "tier",
1167
+ "group",
1168
+ "is_employed",
1169
+ "createdAt",
1170
+ "updatedAt"
1171
+ ];
1172
+ const QuerySortTeamMembers = v.optional(v.pipe(v.array(v.picklist(TeamMemberSortKeys.flatMap((k) => [`${k}:ASC`, `${k}:DESC`]))), v.maxLength(TeamMemberSortKeys.length)));
1173
+ const QueryStrapiSearchTeamMembers = v.object({
1174
+ page: VPage(),
1175
+ size: VSize(20),
1176
+ name: v.optional(VStringMax()),
1177
+ slug: v.optional(VStringMax()),
1178
+ order: VIntegerNullable(),
1179
+ tier: v.optional(v.picklist([
1180
+ "owner",
1181
+ "manager",
1182
+ "employee"
1183
+ ])),
1184
+ group: v.optional(v.picklist([
1185
+ "account",
1186
+ "media",
1187
+ "creative"
1188
+ ])),
1189
+ is_employed: v.optional(v.boolean()),
1190
+ sort: QuerySortTeamMembers
1191
+ });
1192
+ //#endregion
1193
+ //#region src/schemas/teamwork.schemas.ts
1194
+ const TeamworkProjectHealthSelectSortOptions = [{
1195
+ label: "Name",
1196
+ value: "name"
1197
+ }, {
1198
+ label: "Health",
1199
+ value: "health"
1200
+ }];
1201
+ const TeamworkProjectHealthProjectStatusOptions = [
1202
+ {
1203
+ label: "Active",
1204
+ value: "active",
1205
+ description: "Projects that are currently active"
1206
+ },
1207
+ {
1208
+ label: "Current",
1209
+ value: "current",
1210
+ description: "Projects that are currently ongoing"
1211
+ },
1212
+ {
1213
+ label: "Late",
1214
+ value: "late",
1215
+ description: "Projects that are behind schedule"
1216
+ },
1217
+ {
1218
+ label: "Upcoming",
1219
+ value: "upcoming",
1220
+ description: "Projects that are scheduled to start soon"
1221
+ },
1222
+ {
1223
+ label: "Completed",
1224
+ value: "completed",
1225
+ description: "Projects that have been completed"
1226
+ },
1227
+ {
1228
+ label: "Archived",
1229
+ value: "archived",
1230
+ description: "Projects that have been archived"
1231
+ }
1232
+ ];
1233
+ const QuerySortTeamworkProjectHealth = v.optional(v.object({
1234
+ key: v.picklist(TeamworkProjectHealthSelectSortOptions.map((option) => option.value)),
1235
+ order: v.picklist(["ASC", "DESC"])
1236
+ }));
1237
+ const QueryStrapiSearchTeamworkProjectHealth = v.object({
1238
+ page: VPage(),
1239
+ size: VSize(100),
1240
+ lastPeriodDays: VIntegerNullable(),
1241
+ searchTerm: v.optional(VStringMax()),
1242
+ excludeTagIds: v.optional(v.array(VStringMinMax(1, 255))),
1243
+ includeArchivedProjects: v.optional(v.boolean()),
1244
+ projectCategoryIds: v.optional(v.array(VStringMinMax(1, 255))),
1245
+ projectCompanyIds: v.optional(v.array(VStringMinMax(1, 255))),
1246
+ projectTagIds: v.optional(v.array(VStringMinMax(1, 255))),
1247
+ projectHealths: v.optional(VStringMax()),
1248
+ projectStatuses: v.optional(v.picklist(TeamworkProjectHealthProjectStatusOptions.map((option) => option.value)), TeamworkProjectHealthProjectStatusOptions[0].value),
1249
+ sort: QuerySortTeamworkProjectHealth
1250
+ });
1251
+ //#endregion
1252
+ //#region src/schemas/trend.schemas.ts
1253
+ const SUpdateTrendsLikes = v.object({
1254
+ documentId: v.string(),
1255
+ likes: v.number()
1256
+ });
1257
+ //#endregion
1258
+ //#region src/schemas/url-redirect.schemas.ts
1259
+ const UrlRedirectSortKeys = [
1260
+ "id",
1261
+ "from",
1262
+ "to",
1263
+ "status_code",
1264
+ "query_params",
1265
+ "is_active",
1266
+ "createdAt",
1267
+ "updatedAt"
1268
+ ];
1269
+ const QuerySortUrlRedirects = v.optional(v.pipe(v.array(v.picklist(UrlRedirectSortKeys.flatMap((k) => [`${k}:ASC`, `${k}:DESC`]))), v.maxLength(UrlRedirectSortKeys.length)));
1270
+ const QueryStrapiPaginatedUrlRedirects = v.object({
1271
+ page: v.fallback(v.optional(VPage(), 1), 1),
1272
+ size: v.fallback(v.optional(v.pipe(v.number(), v.minValue(1), v.maxValue(20)), LIMIT_REDIRECT_PAGINATION_DEFAULT_SIZE), LIMIT_REDIRECT_PAGINATION_DEFAULT_SIZE),
1273
+ sort: QuerySortUrlRedirects
1274
+ });
1275
+ const QueryStrapiUrlRedirectsByFrom = v.object({ from: v.string() });
1276
+ //#endregion
1277
+ //#region src/schemas/user-account.schemas.ts
1278
+ const SReadUserAccountById = v.object({ id: v.number() });
1279
+ const SReadUserAccountByDocumentId = v.object({ documentId: VStringMinMax(1, 255) });
1280
+ const SUpdateUserAccount = v.object({
1281
+ documentId: VStringMinMax(1, 255),
1282
+ first_name: VStringMinMax(1, 255),
1283
+ last_name: VStringMinMax(1, 255),
1284
+ preferred_name: v.nullable(VStringMinMax(1, 255))
1285
+ });
1286
+ const SUpdateUserAccountFirstName = v.object({
1287
+ documentId: VStringMinMax(1, 255),
1288
+ first_name: VStringMinMax(1, 255)
1289
+ });
1290
+ const SUpdateUserAccountLastName = v.object({
1291
+ documentId: VStringMinMax(1, 255),
1292
+ last_name: VStringMinMax(1, 255)
1293
+ });
1294
+ const SUpdateUserAccountPreferredName = v.object({
1295
+ documentId: VStringMinMax(1, 255),
1296
+ preferred_name: v.nullable(VStringMinMax(1, 255))
1297
+ });
1298
+ //#endregion
1299
+ //#region src/schemas/user-auth.schemas.ts
1300
+ const SUserToken = v.object({ token: v.string() });
1301
+ const SLoginUser = v.object({
1302
+ identifier: VStringEmail(),
1303
+ password: VStringMinMax(8, 255)
1304
+ });
1305
+ const SRegisterUser = v.object({
1306
+ username: VStringMinMaxRegex(3, 255, REGEX_UTM_VALUE, "username must be alphanumeric"),
1307
+ email: VStringEmail(),
1308
+ password: VStringMinMax(8, 255)
1309
+ });
1310
+ const SForgotUserPassword = v.object({ email: VStringEmail() });
1311
+ const SRequestConfirmEmail = v.object({ email: VStringEmail() });
1312
+ const SResetUserPassword = v.object({
1313
+ password: VStringMinMax(8, 255),
1314
+ passwordConfirmation: VStringMinMax(8, 255),
1315
+ code: v.string()
1316
+ });
1317
+ const SChangePassword = v.pipe(v.object({
1318
+ currentPassword: VStringMinMax(8, 255),
1319
+ password: VStringMinMax(8, 255),
1320
+ passwordConfirmation: VStringMinMax(8, 255)
1321
+ }), v.forward(v.partialCheck([["password"], ["passwordConfirmation"]], (input) => input.password === input.passwordConfirmation, "Your new passwords do not match."), ["passwordConfirmation"]));
1322
+ const SAuthRawAccessToken = v.object({
1323
+ access_token: v.optional(v.string()),
1324
+ expires_in: VIntegerNullable(),
1325
+ scope: v.optional(v.string()),
1326
+ token_type: v.optional(v.string()),
1327
+ id_token: v.optional(v.string())
1328
+ });
1329
+ const SAuthConnectProviderRedirectSearch = v.object({
1330
+ id_token: v.string(),
1331
+ access_token: v.string(),
1332
+ raw: v.optional(SAuthRawAccessToken)
1333
+ });
1334
+ const SAuthConnectProviderConfirmation = v.object({
1335
+ provider: v.string(),
1336
+ search: SAuthConnectProviderRedirectSearch
1337
+ });
1338
+ //#endregion
1339
+ //#region src/schemas/user.schemas.ts
1340
+ const UserSortKeys = [
1341
+ "id",
1342
+ "username",
1343
+ "email",
1344
+ "confirmed",
1345
+ "blocked",
1346
+ "createdAt",
1347
+ "updatedAt"
1348
+ ];
1349
+ const QuerySortUsers = v.optional(v.pipe(v.array(v.picklist(UserSortKeys.flatMap((k) => [`${k}:ASC`, `${k}:DESC`]))), v.maxLength(UserSortKeys.length)));
1350
+ const QueryStrapiUsers = v.object({
1351
+ page: VPage(),
1352
+ size: VSize(10),
1353
+ sort: QuerySortUsers
1354
+ });
1355
+ const QueryStrapiUsersByIdentifier = v.object({
1356
+ identifier: VStringShort(0),
1357
+ page: VPage(),
1358
+ size: VSize(10)
1359
+ });
1360
+ const SCreateUserDocument = v.object({
1361
+ username: VStringMinMaxRegex(3, 255, REGEX_UTM_VALUE, "username must be alphanumeric"),
1362
+ email: VStringEmail(),
1363
+ password: VStringMinMax(8, 255),
1364
+ blocked: v.boolean(),
1365
+ confirmed: v.boolean(),
1366
+ role: v.number()
1367
+ });
1368
+ //#endregion
1369
+ //#region src/schemas/utm-link-builder.schemas.ts
1370
+ const SUtmLinkBuilderPartCampaignDateOptions = [
1371
+ "annually",
1372
+ "quarterly",
1373
+ "monthly",
1374
+ "on a specific date",
1375
+ "no date"
1376
+ ];
1377
+ const SUtmLinkBuilderTableForm = v.object({
1378
+ creator: VStringMinMax(1, 255),
1379
+ client: VStringMinMax(1, 255),
1380
+ url_destinations: v.pipe(v.array(v.object({ url: v.pipe(v.string(), v.trim(), v.url(ERROR_MESSAGE_INVALID_URL), v.check((input) => {
1381
+ if (input === "") return false;
1382
+ return input.indexOf("?") === -1;
1383
+ }, ERROR_MESSAGE_URL_NO_QUERY_PARAMS)) })), v.minLength(1), v.maxLength(100)),
1384
+ sources: v.pipe(v.array(VStringMinMax(1, 255)), v.minLength(1), v.maxLength(10)),
1385
+ mediums: v.pipe(v.array(VStringMinMax(1, 255)), v.minLength(1), v.maxLength(10)),
1386
+ campaign: v.object({
1387
+ campaign_phase: VStringMinMax(1, 255),
1388
+ campaign_product: v.optional(VStringMax()),
1389
+ campaign_targeting: v.optional(v.pipe(v.array(VStringMaxRegex(255, REGEX_UTM_VALUE, ERROR_MESSAGE_REGEX_UTM_VALUE)), v.maxLength(10))),
1390
+ campaign_key: v.optional(VStringMaxRegex(255, REGEX_UTM_VALUE, ERROR_MESSAGE_REGEX_UTM_VALUE)),
1391
+ campaign_date: v.object({
1392
+ format: v.picklist(SUtmLinkBuilderPartCampaignDateOptions),
1393
+ value: v.object({
1394
+ year: v.number(),
1395
+ quarter: VIntegerNullable(),
1396
+ month: VIntegerNullable(),
1397
+ day: VIntegerNullable()
1398
+ })
1399
+ })
1400
+ }),
1401
+ contents: v.optional(VStringMinMax(1, 255)),
1402
+ creative_formats: v.optional(v.pipe(v.array(v.object({
1403
+ creative_format: v.optional(VStringMinMax(1, 255)),
1404
+ creative_format_variants: v.optional(v.array(VStringMinMax(1, 255)))
1405
+ })), v.minLength(1), v.maxLength(10))),
1406
+ id: v.optional(VStringMinMax(1, 255)),
1407
+ notes: v.optional(VStringMax())
1408
+ });
1409
+ //#endregion
1410
+ //#region src/schemas/utm-tracking-link.schemas.ts
1411
+ const UtmTrackingLinkSortKeys = [
1412
+ "id",
1413
+ "creator",
1414
+ "client",
1415
+ "url_destination",
1416
+ "utm_medium",
1417
+ "utm_source",
1418
+ "utm_campaign",
1419
+ "utm_content",
1420
+ "utm_creative_format",
1421
+ "utm_id",
1422
+ "campaign_phase",
1423
+ "campaign_product",
1424
+ "campaign_targeting",
1425
+ "campaign_key",
1426
+ "creative_format",
1427
+ "creative_format_variants",
1428
+ "url",
1429
+ "is_active",
1430
+ "createdAt",
1431
+ "updatedAt"
1432
+ ];
1433
+ const QuerySortUtmTrackingLinks = v.optional(v.pipe(v.array(v.picklist(UtmTrackingLinkSortKeys.flatMap((k) => [`${k}:ASC`, `${k}:DESC`]))), v.maxLength(UtmTrackingLinkSortKeys.length)));
1434
+ const QueryStrapiSearchUtmTrackingLinks = v.object({
1435
+ page: VPage(),
1436
+ size: VSize(LIMIT_UTM_TRACKING_LINK_PAGINATION_MAX_SIZE),
1437
+ client_id: v.optional(VStringShort()),
1438
+ creator_id: v.optional(VStringShort()),
1439
+ url_destination: v.optional(v.pipe(v.string(), v.trim(), v.url(ERROR_MESSAGE_INVALID_URL), v.check((input) => {
1440
+ if (input === "") return false;
1441
+ return input.indexOf("?") === -1;
1442
+ }, ERROR_MESSAGE_URL_NO_QUERY_PARAMS))),
1443
+ utm_medium: v.optional(VStringMinMaxRegex(1, LIMIT_MAX_UTM_MEDIUM, REGEX_UTM_VALUE, ERROR_MESSAGE_REGEX_UTM_VALUE)),
1444
+ utm_source: v.optional(VStringMinMaxRegex(1, LIMIT_MAX_UTM_SOURCE, REGEX_UTM_VALUE, ERROR_MESSAGE_REGEX_UTM_VALUE)),
1445
+ utm_campaign: v.optional(VStringMinMaxRegex(1, LIMIT_MAX_UTM_CAMPAIGN, REGEX_UTM_VALUE, ERROR_MESSAGE_REGEX_UTM_VALUE)),
1446
+ utm_content: v.optional(VStringMinMaxRegex(1, LIMIT_MAX_UTM_CONTENT, REGEX_UTM_VALUE, ERROR_MESSAGE_REGEX_UTM_VALUE)),
1447
+ utm_creative_format: v.optional(VStringMinMaxRegex(1, LIMIT_MAX_UTM_CREATIVE_FORMAT, REGEX_UTM_VALUE, ERROR_MESSAGE_REGEX_UTM_VALUE)),
1448
+ utm_id: v.optional(VStringMinMaxRegex(1, LIMIT_MAX_UTM_ID, REGEX_UTM_VALUE, ERROR_MESSAGE_REGEX_UTM_VALUE)),
1449
+ campaign_phase: v.optional(VStringShort(0)),
1450
+ campaign_product: v.optional(VStringShort(0)),
1451
+ campaign_targeting: v.optional(VStringShort(0)),
1452
+ campaign_key: v.optional(VStringShort(0)),
1453
+ creative_format: v.optional(VStringShort(0)),
1454
+ creative_format_variants: v.optional(v.array(VStringShort())),
1455
+ url: v.optional(v.pipe(v.string(), v.trim(), v.url(ERROR_MESSAGE_INVALID_URL), v.check((input) => {
1456
+ return input.includes("utm_");
1457
+ }, ERROR_MESSAGE_UTM_URL))),
1458
+ is_active: v.optional(v.boolean()),
1459
+ notes: v.optional(VStringShort(0)),
1460
+ sort: QuerySortUtmTrackingLinks
1461
+ });
1462
+ const SCreateUtmTrackingLinkDocument = v.object({
1463
+ creator: VStringShort(),
1464
+ client: VStringShort(),
1465
+ url_destination: VStringUrlNoUtm(),
1466
+ utm_source: VStringMinMaxRegex(1, LIMIT_MAX_UTM_SOURCE, REGEX_UTM_VALUE, ERROR_MESSAGE_REGEX_UTM_VALUE),
1467
+ utm_medium: VStringMinMaxRegex(1, LIMIT_MAX_UTM_MEDIUM, REGEX_UTM_VALUE, ERROR_MESSAGE_REGEX_UTM_VALUE),
1468
+ utm_campaign: VStringMinMaxRegex(1, LIMIT_MAX_UTM_CAMPAIGN, REGEX_UTM_VALUE, ERROR_MESSAGE_REGEX_UTM_VALUE),
1469
+ utm_content: VStringShortNullable(),
1470
+ utm_creative_format: VStringShortNullable(),
1471
+ utm_id: VStringShortNullable(),
1472
+ campaign_phase: VStringShort(),
1473
+ campaign_product: VStringShortNullable(),
1474
+ campaign_targeting: v.optional(v.nullable(v.pipe(v.array(VStringShort()), v.transform((value) => value.join(","))))),
1475
+ campaign_key: v.optional(v.nullable(VStringMinMaxRegex(1, 255, REGEX_UTM_VALUE, ERROR_MESSAGE_REGEX_UTM_VALUE))),
1476
+ creative_format: VStringShortNullable(),
1477
+ creative_format_variants: v.optional(v.nullable(v.pipe(v.array(VStringShort()), v.transform((value) => value.join(","))))),
1478
+ url: v.pipe(v.string(), v.trim(), v.url(ERROR_MESSAGE_INVALID_URL), v.check((input) => {
1479
+ return input.includes("utm_");
1480
+ }, ERROR_MESSAGE_UTM_URL)),
1481
+ is_active: v.boolean(),
1482
+ notes: VStringLongNullable()
1483
+ });
1484
+ const SCreateUtmTrackingLinkDocumentRequest = v.object({
1485
+ creator: VStringShort(),
1486
+ client: VStringShort(),
1487
+ url_destination: VStringUrlNoUtm(),
1488
+ utm_source: VStringMinMaxRegex(1, LIMIT_MAX_UTM_SOURCE, REGEX_UTM_VALUE, ERROR_MESSAGE_REGEX_UTM_VALUE),
1489
+ utm_medium: VStringMinMaxRegex(1, LIMIT_MAX_UTM_MEDIUM, REGEX_UTM_VALUE, ERROR_MESSAGE_REGEX_UTM_VALUE),
1490
+ utm_campaign: VStringMinMaxRegex(1, LIMIT_MAX_UTM_CAMPAIGN, REGEX_UTM_VALUE, ERROR_MESSAGE_REGEX_UTM_VALUE),
1491
+ utm_content: v.optional(v.nullable(VStringMinMax(1, 255))),
1492
+ utm_creative_format: v.optional(v.nullable(VStringMinMax(1, 255))),
1493
+ utm_id: v.optional(v.nullable(VStringMinMax(1, 255))),
1494
+ campaign_phase: VStringShort(),
1495
+ campaign_product: v.optional(v.nullable(VStringMinMax(1, 255))),
1496
+ campaign_targeting: VStringShortNullable(),
1497
+ campaign_key: v.optional(v.nullable(VStringMinMaxRegex(1, 255, REGEX_UTM_VALUE, ERROR_MESSAGE_REGEX_UTM_VALUE))),
1498
+ creative_format: v.optional(v.nullable(VStringMinMax(1, 255))),
1499
+ creative_format_variants: VStringShortNullable(),
1500
+ url: v.pipe(v.string(), v.trim(), v.url(ERROR_MESSAGE_INVALID_URL), v.check((input) => {
1501
+ return input.includes("utm_");
1502
+ }, ERROR_MESSAGE_UTM_URL)),
1503
+ is_active: v.boolean(),
1504
+ notes: v.optional(v.nullable(VStringMinMaxRegex(1, LIMIT_LONG_STRING_MAX_LENGTH, REGEX_UTM_VALUE, ERROR_MESSAGE_REGEX_UTM_VALUE)))
1505
+ });
1506
+ const SCreateUtmTrackingLinkParts = v.object({
1507
+ url_destination: VStringUrlNoUtm(),
1508
+ utm_source: VStringMinMaxRegex(1, LIMIT_MAX_UTM_SOURCE, REGEX_UTM_VALUE, ERROR_MESSAGE_REGEX_UTM_VALUE),
1509
+ utm_medium: VStringMinMaxRegex(1, LIMIT_MAX_UTM_MEDIUM, REGEX_UTM_VALUE, ERROR_MESSAGE_REGEX_UTM_VALUE),
1510
+ utm_campaign: VStringMinMaxRegex(1, LIMIT_MAX_UTM_CAMPAIGN, REGEX_UTM_VALUE, ERROR_MESSAGE_REGEX_UTM_VALUE),
1511
+ utm_content: v.optional(v.nullable(VStringMinMax(1, 255))),
1512
+ utm_creative_format: v.optional(v.nullable(VStringMinMax(1, 255))),
1513
+ utm_id: v.optional(v.nullable(VStringMinMax(1, 255))),
1514
+ campaign_phase: VStringShort(),
1515
+ campaign_product: v.optional(v.nullable(VStringMinMax(1, 255))),
1516
+ campaign_targeting: v.optional(v.nullable(v.pipe(v.array(VStringShort()), v.transform((value) => value.join(","))))),
1517
+ campaign_key: v.optional(VStringMinMaxRegex(1, 255, REGEX_UTM_VALUE, ERROR_MESSAGE_REGEX_UTM_VALUE)),
1518
+ creative_format: v.optional(v.nullable(VStringMinMax(1, 255))),
1519
+ creative_format_variants: v.optional(v.nullable(v.pipe(v.array(VStringShort()), v.transform((value) => value.join(","))))),
1520
+ url: VStringUrlUtm(),
1521
+ is_active: v.boolean(),
1522
+ notes: v.optional(v.nullable(VStringMinMaxRegex(1, LIMIT_LONG_STRING_MAX_LENGTH, REGEX_UTM_VALUE, ERROR_MESSAGE_REGEX_UTM_VALUE)))
1523
+ });
1524
+ const SFormCreateMultipleUtmTrackingLinkDocuments = v.object({
1525
+ creator: VStringShort(),
1526
+ client: VStringShort(),
1527
+ links: v.pipe(v.array(SCreateUtmTrackingLinkParts), v.minLength(1), v.maxLength(100))
1528
+ });
1529
+ const SReadUtmTrackingLinkDocumentByUrl = v.object({ url: v.pipe(v.string(), v.trim(), v.url(ERROR_MESSAGE_INVALID_URL), v.check((input) => {
1530
+ return input.includes("utm_");
1531
+ }, ERROR_MESSAGE_UTM_URL)) });
1532
+ const SUpdateUtmTrackingLinkDocument = v.object({
1533
+ creator: v.optional(VStringShort()),
1534
+ client: v.optional(VStringShort()),
1535
+ url_destination: VStringUrlNoUtm(),
1536
+ utm_source: VStringMinMaxRegex(1, LIMIT_MAX_UTM_SOURCE, REGEX_UTM_VALUE, ERROR_MESSAGE_REGEX_UTM_VALUE),
1537
+ utm_medium: VStringMinMaxRegex(1, LIMIT_MAX_UTM_MEDIUM, REGEX_UTM_VALUE, ERROR_MESSAGE_REGEX_UTM_VALUE),
1538
+ utm_campaign: VStringMinMaxRegex(1, LIMIT_MAX_UTM_CAMPAIGN, REGEX_UTM_VALUE, ERROR_MESSAGE_REGEX_UTM_VALUE),
1539
+ utm_content: v.optional(v.nullable(VStringMinMax(1, 255))),
1540
+ utm_creative_format: v.optional(v.nullable(VStringMinMax(1, 255))),
1541
+ utm_id: v.optional(v.nullable(VStringMinMax(1, 255))),
1542
+ campaign_phase: VStringShort(),
1543
+ campaign_product: v.optional(v.nullable(VStringMinMax(1, 255))),
1544
+ campaign_targeting: v.optional(v.nullable(v.pipe(v.array(VStringShort()), v.transform((value) => value.join(","))))),
1545
+ campaign_key: v.optional(v.nullable(VStringMinMaxRegex(1, 255, REGEX_UTM_VALUE, ERROR_MESSAGE_REGEX_UTM_VALUE))),
1546
+ creative_format: v.optional(v.nullable(VStringMinMax(1, 255))),
1547
+ creative_format_variants: v.optional(v.nullable(v.pipe(v.array(VStringShort()), v.transform((value) => value.join(","))))),
1548
+ url: VStringUrlUtm(),
1549
+ is_active: v.boolean(),
1550
+ notes: v.optional(v.nullable(VStringMinMaxRegex(1, LIMIT_LONG_STRING_MAX_LENGTH, REGEX_UTM_VALUE, ERROR_MESSAGE_REGEX_UTM_VALUE)))
1551
+ });
1552
+ const SUpdateUtmTrackingLinkDocumentRequest = v.object({
1553
+ documentId: VStringShort(),
1554
+ data: SUpdateUtmTrackingLinkDocument
1555
+ });
1556
+ //#endregion
1557
+ export { BlogPostSortKeys, CategorySortKeys, ClientContentPillarSortKeys, ClientMediaPlatformContentTypeSortKeys, ClientMediaPlatformSortKeys, ClientProjectSortKeys, ClientReportSortKeys, ClientSortKeys, ClientStyleguideSortKeys, ClientUserSortKeys, ContentPillarSortKeys, EntitySortKeys, GCFlyTourSnapSortKeys, GCFlyTourSortKeys, MediaContentTypeSortKeys, MediaPlatformSortKeys, MondayWorkspaceSortKeys, QueryFilterStrapiComments, QuerySortBlogPosts, QuerySortCategories, QuerySortClientContentPillars, QuerySortClientMediaPlatformContentTypes, QuerySortClientMediaPlatforms, QuerySortClientProjects, QuerySortClientReports, QuerySortClientStyleguides, QuerySortClientUsers, QuerySortClients, QuerySortContentPillars, QuerySortEntities, QuerySortGCFlyTourSnaps, QuerySortGCFlyTours, QuerySortMediaContentType, QuerySortMediaPlatforms, QuerySortMondayWorkspaces, QuerySortStrapiComments, QuerySortTags, QuerySortTeamMembers, QuerySortTeamworkProjectHealth, QuerySortUrlRedirects, QuerySortUsers, QuerySortUtmTrackingLinks, QueryStrapiByDocumentId, QueryStrapiByEmail, QueryStrapiById, QueryStrapiByName, QueryStrapiByPhone, QueryStrapiBySlug, QueryStrapiCommentsFlat, QueryStrapiCommentsInHeirarchy, QueryStrapiPaginated, QueryStrapiPaginatedUrlRedirects, QueryStrapiSearchBlogPosts, QueryStrapiSearchBlogPostsBySlug, QueryStrapiSearchCategories, QueryStrapiSearchClientContentPillars, QueryStrapiSearchClientMediaPlatformContentTypes, QueryStrapiSearchClientMediaPlatforms, QueryStrapiSearchClientProjects, QueryStrapiSearchClientReports, QueryStrapiSearchClientStyleguide, QueryStrapiSearchClients, QueryStrapiSearchContentPillars, QueryStrapiSearchGCFlyTourSnaps, QueryStrapiSearchGCFlyTours, QueryStrapiSearchMediaContentTypes, QueryStrapiSearchMediaPlatforms, QueryStrapiSearchMondayWorkspaces, QueryStrapiSearchTags, QueryStrapiSearchTeamMembers, QueryStrapiSearchTeamworkProjectHealth, QueryStrapiSearchUtmTrackingLinks, QueryStrapiUrlRedirectsByFrom, QueryStrapiUsers, QueryStrapiUsersByIdentifier, SAssociateClientMediaPlatformContentTypesToMediaContentType, SAssociateClientToClientProjectDocument, SAssociateClientsToGCFlyTour, SAssociateGcFlyTourSnapsToGCFlyTour, SAssociateMediaContentTypesToClientMediaPlatform, SAssociateMediaContentTypesToMediaPlatform, SAssociateMediaPlatformsToMediaContentType, SAuthConnectProviderConfirmation, SAuthConnectProviderRedirectSearch, SAuthRawAccessToken, SChangePassword, SConnectManyEntityRelation, SConnectOneEntityRelation, SCreateCategoryDocument, SCreateClientContentPillarDocument, SCreateClientDocument, SCreateClientMediaPlatformContentTypeDocument, SCreateClientMediaPlatformDocument, SCreateClientProjectDocument, SCreateClientReportDocument, SCreateClientStyleguideDocument, SCreateClientUserDocument, SCreateCommentDocument, SCreateContentPillarDocument, SCreateGCFlyTourDocument, SCreateGCFlyTourSnapDocument, SCreateLeadDocument, SCreateMediaContentTypeDocument, SCreateMediaPlatformDocument, SCreateMondayWorkspaceDocument, SCreateMultipleStrapiMediaUploadDocument, SCreateNewsletterSignup, SCreateNewsletterSignupDocument, SCreateResume, SCreateResumeInfo, SCreateResumeInfoDocument, SCreateStrapiMediaUploadDocument, SCreateTagDocument, SCreateUserDocument, SCreateUtmTrackingLinkDocument, SCreateUtmTrackingLinkDocumentRequest, SCreateUtmTrackingLinkParts, SDeleteCommentDocument, SDisconnectManyEntityRelation, SDisconnectOneEntityRelation, SEntityRelation, SEntityRelationPosition, SEntityRelationPositionAfter, SEntityRelationPositionBefore, SEntityRelationPositionEnd, SEntityRelationPositionStart, SForgotUserPassword, SFormCreateMultipleUtmTrackingLinkDocuments, SLoginUser, SQueryListClientUserDocuments, SReadUserAccountByDocumentId, SReadUserAccountById, SReadUtmTrackingLinkDocumentByUrl, SRegisterUser, SReportCommentDocument, SRequestConfirmEmail, SResetUserPassword, SSetManyEntityRelation, SSetOneEntityRelation, SUpdateCategoryDocument, SUpdateCategoryDocumentRequest, SUpdateClientContentPillarDocument, SUpdateClientContentPillarDocumentRequest, SUpdateClientDocument, SUpdateClientDocumentRequest, SUpdateClientMediaPlatformContentTypeDocument, SUpdateClientMediaPlatformContentTypeDocumentRequest, SUpdateClientMediaPlatformDocument, SUpdateClientMediaPlatformDocumentRequest, SUpdateClientProjectDocument, SUpdateClientProjectDocumentRequest, SUpdateClientReportDocument, SUpdateClientReportDocumentRequest, SUpdateClientStyleguideDocument, SUpdateClientStyleguideDocumentRequest, SUpdateClientUserDocument, SUpdateClientUserDocumentRequest, SUpdateCommentDocument, SUpdateContentPillarDocument, SUpdateContentPillarDocumentRequest, SUpdateGCFlyTourDocument, SUpdateGCFlyTourDocumentRequest, SUpdateGCFlyTourSnapDocument, SUpdateGCFlyTourSnapDocumentRequest, SUpdateLeadDocument, SUpdateLeadRequest, SUpdateMediaContentTypeDocument, SUpdateMediaContentTypeDocumentRequest, SUpdateMediaPlatformDocument, SUpdateMediaPlatformDocumentRequest, SUpdateMondayWorkspaceDocument, SUpdateMondayWorkspaceDocumentRequest, SUpdateNewsletterSignupDocument, SUpdateNewsletterSignupRequest, SUpdateResumeInfo, SUpdateResumeInfoDocument, SUpdateResumeInfoRequest, SUpdateStrapiMediaFileInfo, SUpdateTagDocument, SUpdateTagDocumentRequest, SUpdateTrendsLikes, SUpdateUserAccount, SUpdateUserAccountFirstName, SUpdateUserAccountLastName, SUpdateUserAccountPreferredName, SUpdateUtmTrackingLinkDocument, SUpdateUtmTrackingLinkDocumentRequest, SUserToken, SUtmLinkBuilderPartCampaignDateOptions, SUtmLinkBuilderTableForm, SVerifyClientUserDocument, SharpSpringSignUpToDownload, StrapiCommentSortKeys, TagSortKeys, TeamMemberSortKeys, TeamworkProjectHealthProjectStatusOptions, TeamworkProjectHealthSelectSortOptions, UrlRedirectSortKeys, UserSortKeys, UtmTrackingLinkSortKeys, VIntegerNullable, VNumberNullable, VPage, VSize, VString, VStringEmail, VStringLong, VStringLongNullable, VStringMax, VStringMaxRegex, VStringMinMax, VStringMinMaxRegex, VStringPhone, VStringPhoneNullable, VStringShort, VStringShortNullable, VStringSlug, VStringUrl, VStringUrlNoUtm, VStringUrlNullable, VStringUrlUtm, checkIsValidUrlList };
1558
+
1559
+ //# sourceMappingURL=schemas.mjs.map