@taiger-common/model 1.0.53 → 1.0.55

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 (89) hide show
  1. package/dist/cjs/api/account.js +33 -0
  2. package/dist/cjs/api/applications.js +44 -0
  3. package/dist/cjs/api/audit.js +6 -0
  4. package/dist/cjs/api/auth.js +17 -0
  5. package/dist/cjs/api/common.js +28 -1
  6. package/dist/cjs/api/communications.js +13 -0
  7. package/dist/cjs/api/courses.js +21 -0
  8. package/dist/cjs/api/crm.js +85 -0
  9. package/dist/cjs/api/documentThreads.js +42 -0
  10. package/dist/cjs/api/documentations.js +31 -0
  11. package/dist/cjs/api/events.js +20 -0
  12. package/dist/cjs/api/interviews.js +33 -0
  13. package/dist/cjs/api/meetings.js +18 -0
  14. package/dist/cjs/api/notes.js +6 -0
  15. package/dist/cjs/api/permissions.js +7 -0
  16. package/dist/cjs/api/portals.js +22 -0
  17. package/dist/cjs/api/programRequirements.js +24 -0
  18. package/dist/cjs/api/programs.js +91 -0
  19. package/dist/cjs/api/search.js +22 -0
  20. package/dist/cjs/api/serialized.js +44 -0
  21. package/dist/cjs/api/students.js +27 -0
  22. package/dist/cjs/api/teams.js +46 -0
  23. package/dist/cjs/api/tickets.js +19 -0
  24. package/dist/cjs/api/users.js +40 -0
  25. package/dist/cjs/api/widgets.js +19 -0
  26. package/dist/cjs/index.js +1 -0
  27. package/dist/cjs/schema/index.js +22 -0
  28. package/dist/cjs/schema/models.js +518 -0
  29. package/dist/cjs/schema/serialized.js +202 -0
  30. package/dist/esm/api/account.js +32 -1
  31. package/dist/esm/api/applications.js +43 -1
  32. package/dist/esm/api/audit.js +5 -1
  33. package/dist/esm/api/auth.js +16 -1
  34. package/dist/esm/api/common.js +24 -1
  35. package/dist/esm/api/communications.js +12 -1
  36. package/dist/esm/api/courses.js +20 -1
  37. package/dist/esm/api/crm.js +84 -1
  38. package/dist/esm/api/documentThreads.js +41 -1
  39. package/dist/esm/api/documentations.js +30 -1
  40. package/dist/esm/api/events.js +19 -1
  41. package/dist/esm/api/interviews.js +32 -1
  42. package/dist/esm/api/meetings.js +17 -1
  43. package/dist/esm/api/notes.js +5 -1
  44. package/dist/esm/api/permissions.js +6 -1
  45. package/dist/esm/api/portals.js +21 -1
  46. package/dist/esm/api/programRequirements.js +23 -1
  47. package/dist/esm/api/programs.js +90 -1
  48. package/dist/esm/api/search.js +21 -1
  49. package/dist/esm/api/serialized.js +9 -1
  50. package/dist/esm/api/students.js +26 -1
  51. package/dist/esm/api/teams.js +45 -1
  52. package/dist/esm/api/tickets.js +18 -1
  53. package/dist/esm/api/users.js +39 -1
  54. package/dist/esm/api/widgets.js +18 -1
  55. package/dist/esm/index.js +1 -0
  56. package/dist/esm/schema/index.js +6 -0
  57. package/dist/esm/schema/models.js +515 -0
  58. package/dist/esm/schema/serialized.js +199 -0
  59. package/dist/types/api/account.d.ts +485 -30
  60. package/dist/types/api/applications.d.ts +3392 -39
  61. package/dist/types/api/audit.d.ts +88 -3
  62. package/dist/types/api/auth.d.ts +3402 -14
  63. package/dist/types/api/common.d.ts +68 -8
  64. package/dist/types/api/communications.d.ts +609 -10
  65. package/dist/types/api/courses.d.ts +781 -15
  66. package/dist/types/api/crm.d.ts +1091 -85
  67. package/dist/types/api/documentThreads.d.ts +38228 -39
  68. package/dist/types/api/documentations.d.ts +913 -24
  69. package/dist/types/api/events.d.ts +7191 -17
  70. package/dist/types/api/interviews.d.ts +785 -30
  71. package/dist/types/api/meetings.d.ts +45 -16
  72. package/dist/types/api/notes.d.ts +83 -4
  73. package/dist/types/api/permissions.d.ts +193 -4
  74. package/dist/types/api/portals.d.ts +764 -17
  75. package/dist/types/api/programRequirements.d.ts +2675 -19
  76. package/dist/types/api/programs.d.ts +3019 -96
  77. package/dist/types/api/search.d.ts +286 -20
  78. package/dist/types/api/serialized.d.ts +3 -152
  79. package/dist/types/api/students.d.ts +289 -24
  80. package/dist/types/api/teams.d.ts +3652 -45
  81. package/dist/types/api/tickets.d.ts +948 -14
  82. package/dist/types/api/users.d.ts +6948 -39
  83. package/dist/types/api/widgets.d.ts +221 -16
  84. package/dist/types/index.d.ts +1 -0
  85. package/dist/types/schema/index.d.ts +6 -0
  86. package/dist/types/schema/models.d.ts +2028 -0
  87. package/dist/types/schema/serialized.d.ts +8813 -0
  88. package/dist/umd/index.js +1 -1
  89. package/package.json +4 -2
@@ -0,0 +1,515 @@
1
+ /**
2
+ * Zod schemas for base model data shapes (API-safe, no Mongoose-specific types).
3
+ * Used by serialized.ts and API response schemas.
4
+ */
5
+ import { z } from 'zod';
6
+ // =========== User Sub-schemas ===========
7
+ export var UserNotificationSchema = z.object({
8
+ isRead_survey_not_complete: z.boolean().optional(),
9
+ isRead_uni_assist_task_assigned: z.boolean().optional(),
10
+ isRead_new_agent_assigned: z.boolean().optional(),
11
+ isRead_new_editor_assigned: z.boolean().optional(),
12
+ isRead_new_cvmlrl_tasks_created: z.boolean().optional(),
13
+ isRead_new_cvmlrl_messsage: z.boolean().optional(),
14
+ isRead_base_documents_missing: z.boolean().optional(),
15
+ isRead_base_documents_rejected: z.boolean().optional(),
16
+ isRead_new_programs_assigned: z.boolean().optional()
17
+ });
18
+ export var UserTaigeraiFileSchema = z.object({
19
+ name: z.string().optional(),
20
+ status: z.string().optional(),
21
+ file_category: z.string().optional(),
22
+ path: z.string().optional(),
23
+ updatedAt: z.coerce.date().optional()
24
+ });
25
+ export var UserTaigeraiFeedbackSchema = z.object({
26
+ message: z.string().optional(),
27
+ updatedAt: z.coerce.date().optional()
28
+ });
29
+ export var UserTaigeraiSchema = z.object({
30
+ input: UserTaigeraiFileSchema.optional(),
31
+ output: UserTaigeraiFileSchema.optional(),
32
+ feedback: UserTaigeraiFeedbackSchema.optional()
33
+ });
34
+ export var UserApplicationPreferenceSchema = z.object({
35
+ expected_application_date: z.string().optional(),
36
+ expected_application_semester: z.string().optional(),
37
+ target_program_language: z.string().optional(),
38
+ target_application_field: z.string().optional(),
39
+ targetApplicationSubjects: z.array(z.string()).optional(),
40
+ target_degree: z.string().optional(),
41
+ considered_privat_universities: z.string().optional(),
42
+ special_wished: z.string().optional(),
43
+ application_outside_germany: z.string().optional(),
44
+ updatedAt: z.coerce.date().optional()
45
+ });
46
+ export var UserAcademicBackgroundUniversitySchema = z.object({
47
+ high_school_isGraduated: z.string().optional(),
48
+ attended_high_school: z.string().optional(),
49
+ high_school_graduated_year: z.string().optional(),
50
+ attended_university: z.string().optional(),
51
+ attended_university_program: z.string().optional(),
52
+ isGraduated: z.string().optional(),
53
+ expected_grad_date: z.string().optional(),
54
+ Highest_GPA_Uni: z.number().optional(),
55
+ Passing_GPA_Uni: z.number().optional(),
56
+ My_GPA_Uni: z.number().optional(),
57
+ Has_Exchange_Experience: z.string().optional(),
58
+ isSecondGraduated: z.string().optional(),
59
+ expectedSecondDegreeGradDate: z.string().optional(),
60
+ attendedSecondDegreeUniversity: z.string().optional(),
61
+ attendedSecondDegreeProgram: z.string().optional(),
62
+ highestSecondDegreeGPA: z.number().optional(),
63
+ passingSecondDegreeGPA: z.number().optional(),
64
+ mySecondDegreeGPA: z.number().optional(),
65
+ Has_Internship_Experience: z.string().optional(),
66
+ Has_Working_Experience: z.string().optional(),
67
+ updatedAt: z.coerce.date().optional()
68
+ });
69
+ export var UserAcademicBackgroundLanguageSchema = z.object({
70
+ english_isPassed: z.string().optional(),
71
+ english_certificate: z.string().optional(),
72
+ english_score: z.string().optional(),
73
+ english_score_reading: z.string().optional(),
74
+ english_score_listening: z.string().optional(),
75
+ english_score_writing: z.string().optional(),
76
+ english_score_speaking: z.string().optional(),
77
+ english_test_date: z.string().optional(),
78
+ german_isPassed: z.string().optional(),
79
+ german_certificate: z.string().optional(),
80
+ german_score: z.string().optional(),
81
+ german_test_date: z.string().optional(),
82
+ gre_isPassed: z.string().optional(),
83
+ gre_certificate: z.string().optional(),
84
+ gre_score: z.string().optional(),
85
+ gre_test_date: z.string().optional(),
86
+ gmat_isPassed: z.string().optional(),
87
+ gmat_certificate: z.string().optional(),
88
+ gmat_score: z.string().optional(),
89
+ gmat_test_date: z.string().optional(),
90
+ updatedAt: z.coerce.date().optional()
91
+ });
92
+ export var UserAcademicBackgroundSchema = z.object({
93
+ university: UserAcademicBackgroundUniversitySchema.optional(),
94
+ language: UserAcademicBackgroundLanguageSchema.optional()
95
+ });
96
+ export var UserAttributeSchema = z.object({
97
+ value: z.number(),
98
+ name: z.string()
99
+ });
100
+ export var UserProfileItemSchema = z.object({
101
+ name: z.string(),
102
+ status: z.string().optional(),
103
+ required: z.boolean(),
104
+ path: z.string().optional(),
105
+ feedback: z.string().optional(),
106
+ updatedAt: z.coerce.date().optional()
107
+ });
108
+ export var UserGeneraldocsThreadSchema = z.object({
109
+ isFinalVersion: z.boolean().optional(),
110
+ latest_message_left_by_id: z.string().optional(),
111
+ doc_thread_id: z.string().optional(),
112
+ updatedAt: z.coerce.date().optional(),
113
+ createdAt: z.coerce.date().optional()
114
+ });
115
+ // =========== Course Schemas ===========
116
+ export var CourseAnalysisSchema = z.object({
117
+ path: z.string().optional(),
118
+ analyzed_course: z.array(z.string()).optional(),
119
+ isAnalysed: z.boolean().optional(),
120
+ isAnalysedV2: z.boolean().optional(),
121
+ pathV2: z.string().optional(),
122
+ updatedAtV2: z.coerce.date().optional(),
123
+ updatedAt: z.coerce.date().optional()
124
+ });
125
+ export var CourseSchema = z.object({
126
+ student_id: z.string().optional(),
127
+ name: z.string().optional(),
128
+ table_data_string: z.string().optional(),
129
+ table_data_string_locked: z.boolean().optional(),
130
+ table_data_string_taiger_guided: z.string().optional(),
131
+ updatedAt: z.coerce.date().optional(),
132
+ analysis: CourseAnalysisSchema.optional()
133
+ });
134
+ // =========== Application Sub-schemas ===========
135
+ export var ApplicationUniAssistSchema = z.object({
136
+ status: z.string().optional(),
137
+ vpd_file_path: z.string().optional(),
138
+ vpd_paid_confirmation_file_path: z.string().optional(),
139
+ vpd_paid_confirmation_file_status: z.string().optional(),
140
+ isPaid: z.boolean().optional(),
141
+ updatedAt: z.coerce.date().optional()
142
+ });
143
+ export var ApplicationPortalCredentialsSchema = z.object({
144
+ application_portal_a: z
145
+ .object({ account: z.string().optional(), password: z.string().optional() })
146
+ .optional(),
147
+ application_portal_b: z
148
+ .object({ account: z.string().optional(), password: z.string().optional() })
149
+ .optional()
150
+ });
151
+ export var ApplicationDocModificationThreadItemSchema = z.object({
152
+ isFinalVersion: z.boolean().optional(),
153
+ latest_message_left_by_id: z.string().optional(),
154
+ doc_thread_id: z.string().optional(),
155
+ updatedAt: z.coerce.date().optional(),
156
+ createdAt: z.coerce.date().optional()
157
+ });
158
+ export var ApplicationAdmissionLetterSchema = z.object({
159
+ status: z.string().optional(),
160
+ admission_file_path: z.string().optional(),
161
+ comments: z.string().optional(),
162
+ updatedAt: z.coerce.date().optional()
163
+ });
164
+ // =========== Program Schema ===========
165
+ export var ProgramSchema = z.object({
166
+ isArchiv: z.boolean().optional(),
167
+ isLocked: z.boolean().optional(),
168
+ school: z.string(),
169
+ program_name: z.string(),
170
+ programSubjects: z.array(z.string()).optional(),
171
+ degree: z.string().optional(),
172
+ semester: z.string().optional(),
173
+ lang: z.string().optional(),
174
+ gpa_requirement: z.string().optional(),
175
+ allowOnlyGraduatedApplicant: z.boolean().optional(),
176
+ application_start: z.string().optional(),
177
+ application_deadline: z.string().optional(),
178
+ uni_assist: z.string().optional(),
179
+ englishTestHandLater: z.boolean().optional(),
180
+ toefl: z.string().optional(),
181
+ toefl_reading: z.number().optional(),
182
+ toefl_listening: z.number().optional(),
183
+ toefl_writing: z.number().optional(),
184
+ toefl_speaking: z.number().optional(),
185
+ ielts: z.string().optional(),
186
+ ielts_reading: z.number().optional(),
187
+ ielts_listening: z.number().optional(),
188
+ ielts_writing: z.number().optional(),
189
+ ielts_speaking: z.number().optional(),
190
+ germanTestHandLater: z.boolean().optional(),
191
+ goetheZertifikat: z.string().optional(),
192
+ testdaf: z.string().optional(),
193
+ dsh: z.string().optional(),
194
+ gre: z.string().optional(),
195
+ gre_verbal: z.number().optional(),
196
+ gre_quantitative: z.number().optional(),
197
+ gre_analytical_writing: z.number().optional(),
198
+ gmat: z.string().optional(),
199
+ ml_required: z.string().optional(),
200
+ ml_requirements: z.string().optional(),
201
+ sop_required: z.string().optional(),
202
+ sop_requirements: z.string().optional(),
203
+ phs_required: z.string().optional(),
204
+ phs_requirements: z.string().optional(),
205
+ rl_required: z.string().optional(),
206
+ rl_requirements: z.string().optional(),
207
+ is_rl_specific: z.boolean().optional(),
208
+ essay_required: z.string().optional(),
209
+ essay_requirements: z.string().optional(),
210
+ essay_difficulty: z.string().optional(),
211
+ portfolio_required: z.string().optional(),
212
+ portfolio_requirements: z.string().optional(),
213
+ supplementary_form_required: z.string().optional(),
214
+ supplementary_form_requirements: z.string().optional(),
215
+ curriculum_analysis_required: z.string().optional(),
216
+ curriculum_analysis_requirements: z.string().optional(),
217
+ scholarship_form_required: z.string().optional(),
218
+ scholarship_form_requirements: z.string().optional(),
219
+ module_description_required: z.string().optional(),
220
+ ects_requirements: z.string().optional(),
221
+ special_notes: z.string().optional(),
222
+ comments: z.string().optional(),
223
+ application_portal_a: z.string().optional(),
224
+ application_portal_b: z.string().optional(),
225
+ application_portal_a_instructions: z.string().optional(),
226
+ application_portal_b_instructions: z.string().optional(),
227
+ uni_assist_link: z.string().optional(),
228
+ website: z.string().optional(),
229
+ fpso: z.string().optional(),
230
+ updatedAt: z.coerce.date().optional(),
231
+ whoupdated: z.string().optional(),
232
+ tuition_fees: z.string().optional(),
233
+ contact: z.string().optional(),
234
+ city: z.string().optional(),
235
+ country: z.string().optional(),
236
+ isPrivateSchool: z.boolean().optional(),
237
+ isPartnerSchool: z.boolean().optional(),
238
+ schoolType: z.string().optional(),
239
+ tags: z.array(z.string()).optional(),
240
+ url: z.string().optional(),
241
+ isNC: z.boolean().optional(),
242
+ zipCode: z.string().optional()
243
+ });
244
+ // =========== Documentation Schemas ===========
245
+ export var DocumentationSchema = z.object({
246
+ name: z.string().optional(),
247
+ title: z.string().optional(),
248
+ category: z.string().optional(),
249
+ author: z.string().optional(),
250
+ prop: z.string().optional(),
251
+ text: z.string().optional(),
252
+ country: z.string().optional(),
253
+ updatedAt: z.coerce.date().optional()
254
+ });
255
+ export var DocspageSchema = z.object({
256
+ name: z.string().optional(),
257
+ title: z.string().optional(),
258
+ category: z.string().optional(),
259
+ prop: z.string().optional(),
260
+ author: z.string().optional(),
261
+ text: z.string().optional(),
262
+ country: z.string().optional(),
263
+ updatedAt: z.coerce.date().optional()
264
+ });
265
+ export var InternaldocSchema = z.object({
266
+ name: z.string().optional(),
267
+ title: z.string().optional(),
268
+ category: z.string().optional(),
269
+ internal: z.boolean().optional(),
270
+ author: z.string().optional(),
271
+ text: z.string().optional(),
272
+ country: z.string().optional(),
273
+ updatedAt: z.coerce.date().optional()
274
+ });
275
+ // =========== Keywordset Schema ===========
276
+ export var KeywordsetKeywordsSchema = z.object({
277
+ zh: z.array(z.string()).optional(),
278
+ en: z.array(z.string()).optional()
279
+ });
280
+ export var KeywordsetSchema = z.object({
281
+ categoryName: z.string().optional(),
282
+ description: z.string().optional(),
283
+ keywords: KeywordsetKeywordsSchema.optional(),
284
+ antiKeywords: KeywordsetKeywordsSchema.optional()
285
+ });
286
+ // =========== SurveyInput Schema ===========
287
+ export var SurveyInputSurveyContentSchema = z.object({
288
+ questionId: z.string().optional(),
289
+ question: z.string().optional(),
290
+ answer: z.string().optional(),
291
+ type: z.enum(['word', 'sentence', 'paragraph', 'essay']).optional(),
292
+ contentType: z.string().optional()
293
+ });
294
+ export var SurveyInputSchema = z.object({
295
+ studentId: z.string(),
296
+ programId: z.string().optional(),
297
+ fileType: z.string(),
298
+ isFinalVersion: z.boolean().optional(),
299
+ surveyContent: z.array(SurveyInputSurveyContentSchema).optional(),
300
+ surveyStatus: z.enum(['empty', 'provided', 'generated', 'blocked']).optional(),
301
+ createdAt: z.coerce.date().optional(),
302
+ updatedAt: z.coerce.date().optional()
303
+ });
304
+ // =========== Template Schema ===========
305
+ export var TemplateSchema = z.object({
306
+ name: z.string(),
307
+ category_name: z.string(),
308
+ path: z.string(),
309
+ updatedAt: z.coerce.date().optional()
310
+ });
311
+ // =========== Basedocumentationslink Schema ===========
312
+ export var BasedocumentationslinkSchema = z.object({
313
+ key: z.string().optional(),
314
+ category: z.string().optional(),
315
+ link: z.string().optional(),
316
+ updatedAt: z.coerce.date().optional()
317
+ });
318
+ // =========== AllCourse Schema ===========
319
+ export var AllCourseSchema = z.object({
320
+ updatedBy: z.string(),
321
+ all_course_chinese: z.string(),
322
+ all_course_english: z.string(),
323
+ description: z.string()
324
+ });
325
+ // =========== Permission Schema ===========
326
+ export var PermissionSchema = z.object({
327
+ user_id: z.string().optional(),
328
+ taigerAiQuota: z.number().optional(),
329
+ canAssignEditors: z.boolean().optional(),
330
+ canUseTaiGerAI: z.boolean().optional(),
331
+ canModifyProgramList: z.boolean().optional(),
332
+ canModifyAllBaseDocuments: z.boolean().optional(),
333
+ canAccessAllChat: z.boolean().optional(),
334
+ canAssignAgents: z.boolean().optional(),
335
+ canModifyDocumentation: z.boolean().optional(),
336
+ canAccessStudentDatabase: z.boolean().optional(),
337
+ canAddUser: z.boolean().optional(),
338
+ canModifyUser: z.boolean().optional(),
339
+ isEssayWriters: z.boolean().optional(),
340
+ updatedAt: z.coerce.date().optional()
341
+ });
342
+ // =========== Note Schema ===========
343
+ export var NoteSchema = z.object({
344
+ student_id: z.string().optional(),
345
+ notes: z.string().optional(),
346
+ updatedAt: z.coerce.date().optional()
347
+ });
348
+ // =========== InterviewSurveyResponse Schema ===========
349
+ export var InterviewSurveyResponseResponseSchema = z.object({
350
+ questionId: z.string().optional(),
351
+ answer: z.number().optional()
352
+ });
353
+ export var InterviewSurveyResponseSchema = z.object({
354
+ student_id: z.string().optional(),
355
+ interview_id: z.string().optional(),
356
+ program_id: z.string().optional(),
357
+ responses: z.array(InterviewSurveyResponseResponseSchema).optional(),
358
+ isFinal: z.boolean().optional(),
359
+ interviewQuestions: z.string().optional(),
360
+ interviewFeedback: z.string().optional()
361
+ });
362
+ // =========== Ticket Schema ===========
363
+ export var TicketSchema = z.object({
364
+ requester_id: z.string(),
365
+ resolver_id: z.string().optional(),
366
+ program_id: z.string().optional(),
367
+ status: z.string().optional(),
368
+ type: z.string().optional(),
369
+ description: z.string().optional(),
370
+ feedback: z.string().optional(),
371
+ createdAt: z.coerce.date().optional()
372
+ });
373
+ // =========== Complaint Schema ===========
374
+ export var ComplaintMessageFileSchema = z.object({
375
+ name: z.string(),
376
+ path: z.string()
377
+ });
378
+ export var ComplaintMessageSchema = z.object({
379
+ user_id: z.string().optional(),
380
+ message: z.string().optional(),
381
+ createdAt: z.coerce.date().optional(),
382
+ file: z.array(ComplaintMessageFileSchema).optional(),
383
+ ignore_message: z.boolean().optional()
384
+ });
385
+ export var ComplaintSchema = z.object({
386
+ requester_id: z.string(),
387
+ status: z.string().optional(),
388
+ title: z.string().optional(),
389
+ category: z.string().optional(),
390
+ description: z.string().optional(),
391
+ messages: z.array(ComplaintMessageSchema).optional(),
392
+ createdAt: z.coerce.date().optional()
393
+ });
394
+ // =========== Event Schema ===========
395
+ // Named EventBaseSchema to avoid conflict with Mongoose EventSchema from src/model/Event.ts
396
+ export var EventBaseSchema = z.object({
397
+ requester_id: z.array(z.string()).optional(),
398
+ receiver_id: z.array(z.string()).optional(),
399
+ isConfirmedRequester: z.boolean().optional(),
400
+ isConfirmedReceiver: z.boolean().optional(),
401
+ meetingLink: z.string().optional(),
402
+ event_type: z.string().optional(),
403
+ title: z.string().optional(),
404
+ description: z.string().optional(),
405
+ start: z.coerce.date().optional(),
406
+ end: z.coerce.date().optional()
407
+ });
408
+ // =========== Interview Schema ===========
409
+ export var InterviewSchema = z.object({
410
+ student_id: z.string().optional(),
411
+ trainer_id: z.array(z.string()).optional(),
412
+ thread_id: z.string().optional(),
413
+ program_id: z.string().optional(),
414
+ event_id: z.string().optional(),
415
+ interview_description: z.string().optional(),
416
+ interviewer: z.string().optional(),
417
+ interview_duration: z.string().optional(),
418
+ interview_date: z.coerce.date().optional(),
419
+ isClosed: z.boolean().optional(),
420
+ start: z.coerce.date().optional(),
421
+ end: z.coerce.date().optional()
422
+ });
423
+ // =========== Communication Schema ===========
424
+ export var CommunicationFileSchema = z.object({
425
+ name: z.string(),
426
+ path: z.string()
427
+ });
428
+ export var CommunicationSchema = z.object({
429
+ student_id: z.string().optional(),
430
+ user_id: z.string().optional(),
431
+ message: z.string().optional(),
432
+ readBy: z.array(z.string()).optional(),
433
+ timeStampReadBy: z.unknown().optional(),
434
+ files: z.array(CommunicationFileSchema).optional(),
435
+ createdAt: z.coerce.date().optional(),
436
+ ignore_message: z.boolean().optional(),
437
+ ignoredMessageUpdatedAt: z.coerce.date().optional(),
438
+ ignoredMessageBy: z.string().optional()
439
+ });
440
+ // =========== DocumentThread Schema ===========
441
+ export var DocumentthreadMessageFileSchema = z.object({
442
+ name: z.string(),
443
+ path: z.string()
444
+ });
445
+ export var DocumentthreadMessageSchema = z.object({
446
+ user_id: z.string().optional(),
447
+ message: z.string().optional(),
448
+ createdAt: z.coerce.date().optional(),
449
+ file: z.array(DocumentthreadMessageFileSchema).optional(),
450
+ ignore_message: z.boolean().optional()
451
+ });
452
+ export var DocumentthreadSchema = z.object({
453
+ student_id: z.string(),
454
+ program_id: z.string().optional(),
455
+ application_id: z.string().optional(),
456
+ outsourced_user_id: z.array(z.string()).optional(),
457
+ pin_by_user_id: z.array(z.string()).optional(),
458
+ flag_by_user_id: z.array(z.string()).optional(),
459
+ file_type: z.string(),
460
+ isFinalVersion: z.boolean().optional(),
461
+ isOriginAuthorDeclarationConfirmedByStudent: z.boolean().optional(),
462
+ isOriginAuthorDeclarationConfirmedByStudentTimestamp: z.coerce.date().optional(),
463
+ messages: z.array(DocumentthreadMessageSchema).optional(),
464
+ essayReviewerIds: z.array(z.string()).optional(),
465
+ updatedAt: z.coerce.date().optional()
466
+ });
467
+ // =========== Audit Schema ===========
468
+ export var AuditSchema = z.object({
469
+ performedBy: z.string().optional(),
470
+ targetUserId: z.string().optional(),
471
+ targetDocumentThreadId: z.string().optional(),
472
+ interviewThreadId: z.string().optional(),
473
+ action: z.string().optional(),
474
+ field: z.string().optional(),
475
+ changes: z
476
+ .object({
477
+ before: z.unknown().optional(),
478
+ after: z.unknown().optional()
479
+ })
480
+ .optional()
481
+ });
482
+ // =========== ProgramRequirement Schema ===========
483
+ export var ProgramrequirementProgramCategorySchema = z.object({
484
+ program_category: z.string().optional(),
485
+ category_description: z.string().optional(),
486
+ requiredECTS: z.number().optional(),
487
+ keywordSets: z.array(z.string()).optional(),
488
+ maxScore: z.number().optional()
489
+ });
490
+ export var ProgramrequirementSchema = z.object({
491
+ programId: z.array(z.string()).optional(),
492
+ program_categories: z.array(ProgramrequirementProgramCategorySchema).optional(),
493
+ attributes: z.array(z.string()).optional(),
494
+ fpso: z.string().optional(),
495
+ admissionDescription: z.string().optional(),
496
+ gpaScoreBoundaryGPA: z.number().optional(),
497
+ gpaScore: z.number().optional(),
498
+ gpaMinScore: z.number().optional(),
499
+ coursesScore: z.number().optional(),
500
+ cvScore: z.number().optional(),
501
+ mlScore: z.number().optional(),
502
+ rlScore: z.number().optional(),
503
+ essayScore: z.number().optional(),
504
+ gmatScore: z.number().optional(),
505
+ greScore: z.number().optional(),
506
+ interviewScore: z.number().optional(),
507
+ workExperienceScore: z.number().optional(),
508
+ testScore: z.number().optional(),
509
+ firstRoundConsidered: z.array(z.string()).optional(),
510
+ secondRoundConsidered: z.array(z.string()).optional(),
511
+ directRejectionScore: z.number().optional(),
512
+ directAdmissionScore: z.number().optional(),
513
+ directRejectionSecondScore: z.number().optional(),
514
+ directAdmissionSecondScore: z.number().optional()
515
+ });