@aibrains/shared-types 0.1.0

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 (158) hide show
  1. package/README.md +170 -0
  2. package/dist/index.d.ts +48 -0
  3. package/dist/index.d.ts.map +1 -0
  4. package/dist/index.js +74 -0
  5. package/dist/index.js.map +1 -0
  6. package/dist/mappers/edfi/calendar.mapper.d.ts +158 -0
  7. package/dist/mappers/edfi/calendar.mapper.d.ts.map +1 -0
  8. package/dist/mappers/edfi/calendar.mapper.js +235 -0
  9. package/dist/mappers/edfi/calendar.mapper.js.map +1 -0
  10. package/dist/mappers/edfi/credential.mapper.d.ts +50 -0
  11. package/dist/mappers/edfi/credential.mapper.d.ts.map +1 -0
  12. package/dist/mappers/edfi/credential.mapper.js +123 -0
  13. package/dist/mappers/edfi/credential.mapper.js.map +1 -0
  14. package/dist/mappers/edfi/index.d.ts +10 -0
  15. package/dist/mappers/edfi/index.d.ts.map +1 -0
  16. package/dist/mappers/edfi/index.js +26 -0
  17. package/dist/mappers/edfi/index.js.map +1 -0
  18. package/dist/mappers/edfi/staff.mapper.d.ts +96 -0
  19. package/dist/mappers/edfi/staff.mapper.d.ts.map +1 -0
  20. package/dist/mappers/edfi/staff.mapper.js +138 -0
  21. package/dist/mappers/edfi/staff.mapper.js.map +1 -0
  22. package/dist/mappers/index.d.ts +7 -0
  23. package/dist/mappers/index.d.ts.map +1 -0
  24. package/dist/mappers/index.js +23 -0
  25. package/dist/mappers/index.js.map +1 -0
  26. package/dist/schemas/academics/assignment.schema.d.ts +1463 -0
  27. package/dist/schemas/academics/assignment.schema.d.ts.map +1 -0
  28. package/dist/schemas/academics/assignment.schema.js +195 -0
  29. package/dist/schemas/academics/assignment.schema.js.map +1 -0
  30. package/dist/schemas/academics/attendance.schema.d.ts +762 -0
  31. package/dist/schemas/academics/attendance.schema.d.ts.map +1 -0
  32. package/dist/schemas/academics/attendance.schema.js +250 -0
  33. package/dist/schemas/academics/attendance.schema.js.map +1 -0
  34. package/dist/schemas/academics/classroom.schema.d.ts +742 -0
  35. package/dist/schemas/academics/classroom.schema.d.ts.map +1 -0
  36. package/dist/schemas/academics/classroom.schema.js +164 -0
  37. package/dist/schemas/academics/classroom.schema.js.map +1 -0
  38. package/dist/schemas/academics/course-section.schema.d.ts +388 -0
  39. package/dist/schemas/academics/course-section.schema.d.ts.map +1 -0
  40. package/dist/schemas/academics/course-section.schema.js +128 -0
  41. package/dist/schemas/academics/course-section.schema.js.map +1 -0
  42. package/dist/schemas/academics/course.schema.d.ts +778 -0
  43. package/dist/schemas/academics/course.schema.d.ts.map +1 -0
  44. package/dist/schemas/academics/course.schema.js +207 -0
  45. package/dist/schemas/academics/course.schema.js.map +1 -0
  46. package/dist/schemas/academics/grade.schema.d.ts +848 -0
  47. package/dist/schemas/academics/grade.schema.d.ts.map +1 -0
  48. package/dist/schemas/academics/grade.schema.js +251 -0
  49. package/dist/schemas/academics/grade.schema.js.map +1 -0
  50. package/dist/schemas/academics/index.d.ts +13 -0
  51. package/dist/schemas/academics/index.d.ts.map +1 -0
  52. package/dist/schemas/academics/index.js +29 -0
  53. package/dist/schemas/academics/index.js.map +1 -0
  54. package/dist/schemas/academics/student.schema.d.ts +2891 -0
  55. package/dist/schemas/academics/student.schema.d.ts.map +1 -0
  56. package/dist/schemas/academics/student.schema.js +249 -0
  57. package/dist/schemas/academics/student.schema.js.map +1 -0
  58. package/dist/schemas/common.d.ts +183 -0
  59. package/dist/schemas/common.d.ts.map +1 -0
  60. package/dist/schemas/common.js +126 -0
  61. package/dist/schemas/common.js.map +1 -0
  62. package/dist/schemas/enrollment/enrollment.schema.d.ts +2799 -0
  63. package/dist/schemas/enrollment/enrollment.schema.d.ts.map +1 -0
  64. package/dist/schemas/enrollment/enrollment.schema.js +435 -0
  65. package/dist/schemas/enrollment/enrollment.schema.js.map +1 -0
  66. package/dist/schemas/enrollment/index.d.ts +7 -0
  67. package/dist/schemas/enrollment/index.d.ts.map +1 -0
  68. package/dist/schemas/enrollment/index.js +23 -0
  69. package/dist/schemas/enrollment/index.js.map +1 -0
  70. package/dist/schemas/identity/academic-year.schema.d.ts +546 -0
  71. package/dist/schemas/identity/academic-year.schema.d.ts.map +1 -0
  72. package/dist/schemas/identity/academic-year.schema.js +137 -0
  73. package/dist/schemas/identity/academic-year.schema.js.map +1 -0
  74. package/dist/schemas/identity/auth.schema.d.ts +670 -0
  75. package/dist/schemas/identity/auth.schema.d.ts.map +1 -0
  76. package/dist/schemas/identity/auth.schema.js +126 -0
  77. package/dist/schemas/identity/auth.schema.js.map +1 -0
  78. package/dist/schemas/identity/bell-schedule.schema.d.ts +630 -0
  79. package/dist/schemas/identity/bell-schedule.schema.d.ts.map +1 -0
  80. package/dist/schemas/identity/bell-schedule.schema.js +143 -0
  81. package/dist/schemas/identity/bell-schedule.schema.js.map +1 -0
  82. package/dist/schemas/identity/calendar-date.schema.d.ts +830 -0
  83. package/dist/schemas/identity/calendar-date.schema.d.ts.map +1 -0
  84. package/dist/schemas/identity/calendar-date.schema.js +208 -0
  85. package/dist/schemas/identity/calendar-date.schema.js.map +1 -0
  86. package/dist/schemas/identity/credential.schema.d.ts +472 -0
  87. package/dist/schemas/identity/credential.schema.d.ts.map +1 -0
  88. package/dist/schemas/identity/credential.schema.js +200 -0
  89. package/dist/schemas/identity/credential.schema.js.map +1 -0
  90. package/dist/schemas/identity/department.schema.d.ts +567 -0
  91. package/dist/schemas/identity/department.schema.d.ts.map +1 -0
  92. package/dist/schemas/identity/department.schema.js +113 -0
  93. package/dist/schemas/identity/department.schema.js.map +1 -0
  94. package/dist/schemas/identity/index.d.ts +21 -0
  95. package/dist/schemas/identity/index.d.ts.map +1 -0
  96. package/dist/schemas/identity/index.js +39 -0
  97. package/dist/schemas/identity/index.js.map +1 -0
  98. package/dist/schemas/identity/leave.schema.d.ts +725 -0
  99. package/dist/schemas/identity/leave.schema.d.ts.map +1 -0
  100. package/dist/schemas/identity/leave.schema.js +204 -0
  101. package/dist/schemas/identity/leave.schema.js.map +1 -0
  102. package/dist/schemas/identity/role.schema.d.ts +356 -0
  103. package/dist/schemas/identity/role.schema.d.ts.map +1 -0
  104. package/dist/schemas/identity/role.schema.js +124 -0
  105. package/dist/schemas/identity/role.schema.js.map +1 -0
  106. package/dist/schemas/identity/school-year.schema.d.ts +303 -0
  107. package/dist/schemas/identity/school-year.schema.d.ts.map +1 -0
  108. package/dist/schemas/identity/school-year.schema.js +59 -0
  109. package/dist/schemas/identity/school-year.schema.js.map +1 -0
  110. package/dist/schemas/identity/school.schema.d.ts +844 -0
  111. package/dist/schemas/identity/school.schema.d.ts.map +1 -0
  112. package/dist/schemas/identity/school.schema.js +139 -0
  113. package/dist/schemas/identity/school.schema.js.map +1 -0
  114. package/dist/schemas/identity/security.schema.d.ts +422 -0
  115. package/dist/schemas/identity/security.schema.d.ts.map +1 -0
  116. package/dist/schemas/identity/security.schema.js +151 -0
  117. package/dist/schemas/identity/security.schema.js.map +1 -0
  118. package/dist/schemas/identity/session.schema.d.ts +193 -0
  119. package/dist/schemas/identity/session.schema.d.ts.map +1 -0
  120. package/dist/schemas/identity/session.schema.js +59 -0
  121. package/dist/schemas/identity/session.schema.js.map +1 -0
  122. package/dist/schemas/identity/staff.schema.d.ts +1037 -0
  123. package/dist/schemas/identity/staff.schema.d.ts.map +1 -0
  124. package/dist/schemas/identity/staff.schema.js +251 -0
  125. package/dist/schemas/identity/staff.schema.js.map +1 -0
  126. package/dist/schemas/identity/tenant.schema.d.ts +313 -0
  127. package/dist/schemas/identity/tenant.schema.d.ts.map +1 -0
  128. package/dist/schemas/identity/tenant.schema.js +81 -0
  129. package/dist/schemas/identity/tenant.schema.js.map +1 -0
  130. package/dist/schemas/identity/user.schema.d.ts +921 -0
  131. package/dist/schemas/identity/user.schema.d.ts.map +1 -0
  132. package/dist/schemas/identity/user.schema.js +201 -0
  133. package/dist/schemas/identity/user.schema.js.map +1 -0
  134. package/dist/schemas/index.d.ts +10 -0
  135. package/dist/schemas/index.d.ts.map +1 -0
  136. package/dist/schemas/index.js +26 -0
  137. package/dist/schemas/index.js.map +1 -0
  138. package/dist/validators/academic-year.d.ts +90 -0
  139. package/dist/validators/academic-year.d.ts.map +1 -0
  140. package/dist/validators/academic-year.js +190 -0
  141. package/dist/validators/academic-year.js.map +1 -0
  142. package/dist/validators/date-range.d.ts +142 -0
  143. package/dist/validators/date-range.d.ts.map +1 -0
  144. package/dist/validators/date-range.js +170 -0
  145. package/dist/validators/date-range.js.map +1 -0
  146. package/dist/validators/grade-level.d.ts +80 -0
  147. package/dist/validators/grade-level.d.ts.map +1 -0
  148. package/dist/validators/grade-level.js +157 -0
  149. package/dist/validators/grade-level.js.map +1 -0
  150. package/dist/validators/index.d.ts +10 -0
  151. package/dist/validators/index.d.ts.map +1 -0
  152. package/dist/validators/index.js +26 -0
  153. package/dist/validators/index.js.map +1 -0
  154. package/dist/validators/password.d.ts +60 -0
  155. package/dist/validators/password.d.ts.map +1 -0
  156. package/dist/validators/password.js +81 -0
  157. package/dist/validators/password.js.map +1 -0
  158. package/package.json +50 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"staff.schema.d.ts","sourceRoot":"","sources":["../../../src/schemas/identity/staff.schema.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,251 @@
1
+ "use strict";
2
+ /**
3
+ * Staff Schemas - Identity Service
4
+ *
5
+ * Zod schemas for staff management DTOs with Ed-Fi core fields alignment.
6
+ * Ed-Fi Data Standard: https://docs.ed-fi.org/reference/data-exchange/data-standard/
7
+ */
8
+ Object.defineProperty(exports, "__esModule", { value: true });
9
+ exports.updateEmploymentStatusSchema = exports.assignStaffToSchoolSchema = exports.staffFilterSchema = exports.staffListResponseSchema = exports.staffResponseSchema = exports.updateStaffSchema = exports.createStaffSchema = exports.staffEmergencyContactSchema = exports.staffSchoolAssignmentSchema = exports.staffTelephoneSchema = exports.staffElectronicMailSchema = exports.staffAddressSchema = exports.staffGenderSchema = exports.staffStatusSchema = exports.employmentTypeSchema = exports.employmentStatusSchema = exports.staffRoleSchema = void 0;
10
+ const zod_1 = require("zod");
11
+ const common_1 = require("../common");
12
+ // ============================================
13
+ // Enums (Ed-Fi aligned where applicable)
14
+ // ============================================
15
+ /**
16
+ * Staff role within the organization
17
+ */
18
+ exports.staffRoleSchema = zod_1.z.enum([
19
+ 'teacher',
20
+ 'principal',
21
+ 'vice_principal',
22
+ 'counselor',
23
+ 'librarian',
24
+ 'nurse',
25
+ 'admin_staff',
26
+ 'support_staff',
27
+ 'it_staff',
28
+ 'substitute',
29
+ 'contractor',
30
+ ]);
31
+ /**
32
+ * Employment status (Ed-Fi: employmentStatusDescriptor)
33
+ */
34
+ exports.employmentStatusSchema = zod_1.z.enum([
35
+ 'active',
36
+ 'on_leave',
37
+ 'suspended',
38
+ 'terminated',
39
+ 'retired',
40
+ 'resigned',
41
+ ]);
42
+ /**
43
+ * Employment type
44
+ */
45
+ exports.employmentTypeSchema = zod_1.z.enum([
46
+ 'full_time',
47
+ 'part_time',
48
+ 'contract',
49
+ 'temporary',
50
+ 'volunteer',
51
+ ]);
52
+ /**
53
+ * Staff status in the system
54
+ */
55
+ exports.staffStatusSchema = zod_1.z.enum([
56
+ 'active',
57
+ 'inactive',
58
+ 'pending',
59
+ ]);
60
+ /**
61
+ * Staff gender identity (Ed-Fi aligned)
62
+ */
63
+ exports.staffGenderSchema = zod_1.z.enum([
64
+ 'male',
65
+ 'female',
66
+ 'non_binary',
67
+ 'prefer_not_to_say',
68
+ ]);
69
+ // ============================================
70
+ // Staff Address Schema (Ed-Fi aligned)
71
+ // ============================================
72
+ exports.staffAddressSchema = zod_1.z.object({
73
+ addressTypeDescriptor: zod_1.z.enum(['home', 'mailing', 'work', 'temporary']).optional(),
74
+ streetNumberName: zod_1.z.string().max(150).optional(), // Ed-Fi: streetNumberName
75
+ apartmentRoomSuiteNumber: zod_1.z.string().max(50).optional(),
76
+ city: zod_1.z.string().max(30).optional(),
77
+ stateAbbreviationDescriptor: zod_1.z.string().max(50).optional(),
78
+ postalCode: zod_1.z.string().max(17).optional(),
79
+ country: zod_1.z.string().max(50).optional(),
80
+ });
81
+ // ============================================
82
+ // Staff Electronic Mail (Ed-Fi aligned)
83
+ // ============================================
84
+ exports.staffElectronicMailSchema = zod_1.z.object({
85
+ electronicMailAddress: common_1.emailSchema,
86
+ electronicMailTypeDescriptor: zod_1.z.enum(['work', 'personal', 'other']).optional(),
87
+ primaryEmailAddressIndicator: zod_1.z.boolean().optional(),
88
+ });
89
+ // ============================================
90
+ // Staff Telephone (Ed-Fi aligned)
91
+ // ============================================
92
+ exports.staffTelephoneSchema = zod_1.z.object({
93
+ telephoneNumber: zod_1.z.string().max(24),
94
+ telephoneNumberTypeDescriptor: zod_1.z.enum(['home', 'mobile', 'work', 'fax', 'emergency']).optional(),
95
+ orderOfPriority: zod_1.z.number().int().min(1).optional(),
96
+ });
97
+ // ============================================
98
+ // Staff School Assignment
99
+ // ============================================
100
+ exports.staffSchoolAssignmentSchema = zod_1.z.object({
101
+ schoolId: zod_1.z.string().uuid(),
102
+ schoolName: zod_1.z.string().optional(),
103
+ role: exports.staffRoleSchema,
104
+ department: zod_1.z.string().max(100).optional(),
105
+ isPrimary: zod_1.z.boolean().default(false),
106
+ beginDate: common_1.dateSchema,
107
+ endDate: common_1.dateSchema.optional(),
108
+ positionTitle: zod_1.z.string().max(100).optional(),
109
+ fullTimeEquivalency: zod_1.z.number().min(0).max(1).optional(), // Ed-Fi: FTE
110
+ });
111
+ // ============================================
112
+ // Staff Emergency Contact
113
+ // ============================================
114
+ exports.staffEmergencyContactSchema = zod_1.z.object({
115
+ name: zod_1.z.string().min(1).max(100),
116
+ relationship: zod_1.z.string().max(50),
117
+ phone: zod_1.z.string().max(24),
118
+ alternatePhone: zod_1.z.string().max(24).optional(),
119
+ email: common_1.emailSchema.optional(),
120
+ });
121
+ // ============================================
122
+ // Create Staff Schema
123
+ // ============================================
124
+ exports.createStaffSchema = zod_1.z.object({
125
+ // User-Staff Bridge
126
+ userId: zod_1.z.string().uuid().optional(), // Linked Cognito user ID
127
+ // Ed-Fi Core Fields
128
+ staffUniqueId: zod_1.z.string().min(1).max(50), // Ed-Fi: staffUniqueId (employee number, state ID)
129
+ firstName: zod_1.z.string().min(1).max(75), // Ed-Fi: firstName
130
+ lastSurname: zod_1.z.string().min(1).max(75), // Ed-Fi: lastSurname
131
+ middleName: zod_1.z.string().max(75).optional(), // Ed-Fi: middleName
132
+ generationCodeSuffix: zod_1.z.string().max(10).optional(), // Ed-Fi: generationCodeSuffix (Jr., Sr., III)
133
+ maidenName: zod_1.z.string().max(75).optional(), // Ed-Fi: maidenName
134
+ birthDate: common_1.dateSchema.optional(), // Ed-Fi: birthDate
135
+ // Demographics (Ed-Fi aligned)
136
+ gender: exports.staffGenderSchema.optional(),
137
+ hispanicLatinoEthnicity: zod_1.z.boolean().optional(), // Ed-Fi compliance
138
+ // EdForge Extensions
139
+ primarySchoolId: zod_1.z.string().uuid(), // Primary school assignment
140
+ role: exports.staffRoleSchema,
141
+ employmentType: exports.employmentTypeSchema.default('full_time'),
142
+ hireDate: common_1.dateSchema,
143
+ // Contact Information
144
+ email: common_1.emailSchema,
145
+ phone: zod_1.z.string().max(24).optional(),
146
+ addresses: zod_1.z.array(exports.staffAddressSchema).optional(),
147
+ telephones: zod_1.z.array(exports.staffTelephoneSchema).optional(),
148
+ // Employment Details
149
+ department: zod_1.z.string().max(100).optional(),
150
+ title: zod_1.z.string().max(100).optional(),
151
+ // Professional
152
+ highlyQualifiedTeacher: zod_1.z.boolean().optional(), // Ed-Fi compliance
153
+ yearsOfPriorTeachingExperience: zod_1.z.number().int().min(0).optional(),
154
+ yearsOfPriorProfessionalExperience: zod_1.z.number().int().min(0).optional(),
155
+ // Emergency
156
+ emergencyContacts: zod_1.z.array(exports.staffEmergencyContactSchema).optional(),
157
+ });
158
+ // ============================================
159
+ // Update Staff Schema
160
+ // ============================================
161
+ exports.updateStaffSchema = exports.createStaffSchema.partial().omit({
162
+ staffUniqueId: true, // Cannot change unique ID
163
+ primarySchoolId: true, // Use assignment endpoints
164
+ }).extend({
165
+ employmentStatus: exports.employmentStatusSchema.optional(),
166
+ terminationDate: common_1.dateSchema.optional(),
167
+ terminationReason: zod_1.z.string().max(255).optional(),
168
+ status: exports.staffStatusSchema.optional(),
169
+ });
170
+ // ============================================
171
+ // Staff Response Schema
172
+ // ============================================
173
+ exports.staffResponseSchema = zod_1.z.object({
174
+ // Identifiers
175
+ staffId: zod_1.z.string().uuid(),
176
+ staffUniqueId: zod_1.z.string(),
177
+ tenantId: zod_1.z.string().uuid(),
178
+ userId: zod_1.z.string().uuid().optional(), // Linked Cognito user ID
179
+ // Ed-Fi Core Demographics
180
+ firstName: zod_1.z.string(),
181
+ lastSurname: zod_1.z.string(),
182
+ middleName: zod_1.z.string().optional(),
183
+ generationCodeSuffix: zod_1.z.string().optional(),
184
+ birthDate: zod_1.z.string().optional(),
185
+ gender: exports.staffGenderSchema.optional(),
186
+ // Contact
187
+ email: zod_1.z.string(),
188
+ phone: zod_1.z.string().optional(),
189
+ addresses: zod_1.z.array(exports.staffAddressSchema).optional(),
190
+ // Employment
191
+ primarySchoolId: zod_1.z.string().uuid(),
192
+ primarySchoolName: zod_1.z.string().optional(),
193
+ schoolAssignments: zod_1.z.array(exports.staffSchoolAssignmentSchema).optional(),
194
+ role: exports.staffRoleSchema,
195
+ employmentType: exports.employmentTypeSchema,
196
+ employmentStatus: exports.employmentStatusSchema,
197
+ hireDate: zod_1.z.string(),
198
+ terminationDate: zod_1.z.string().optional(),
199
+ department: zod_1.z.string().optional(),
200
+ title: zod_1.z.string().optional(),
201
+ // Professional
202
+ highlyQualifiedTeacher: zod_1.z.boolean().optional(),
203
+ yearsOfPriorTeachingExperience: zod_1.z.number().optional(),
204
+ // System
205
+ status: exports.staffStatusSchema,
206
+ credentialsCount: zod_1.z.number().optional(),
207
+ // Ed-Fi Compliance
208
+ hispanicLatinoEthnicity: zod_1.z.boolean().optional(),
209
+ // Metadata
210
+ createdAt: zod_1.z.string(),
211
+ updatedAt: zod_1.z.string(),
212
+ });
213
+ // ============================================
214
+ // Staff List Response
215
+ // ============================================
216
+ exports.staffListResponseSchema = (0, common_1.createPaginatedResponseSchema)(exports.staffResponseSchema);
217
+ // ============================================
218
+ // Staff Filter Schema
219
+ // ============================================
220
+ exports.staffFilterSchema = zod_1.z.object({
221
+ schoolId: zod_1.z.string().uuid().optional(),
222
+ role: exports.staffRoleSchema.optional(),
223
+ employmentStatus: exports.employmentStatusSchema.optional(),
224
+ department: zod_1.z.string().optional(),
225
+ search: zod_1.z.string().optional(), // Search by name, email
226
+ limit: zod_1.z.coerce.number().min(1).max(100).default(20),
227
+ cursor: zod_1.z.string().optional(),
228
+ });
229
+ // ============================================
230
+ // Staff Assignment Schema (for multi-school)
231
+ // ============================================
232
+ exports.assignStaffToSchoolSchema = zod_1.z.object({
233
+ schoolId: zod_1.z.string().uuid(),
234
+ role: exports.staffRoleSchema,
235
+ department: zod_1.z.string().max(100).optional(),
236
+ isPrimary: zod_1.z.boolean().default(false),
237
+ beginDate: common_1.dateSchema,
238
+ endDate: common_1.dateSchema.optional(),
239
+ positionTitle: zod_1.z.string().max(100).optional(),
240
+ fullTimeEquivalency: zod_1.z.number().min(0).max(1).optional(),
241
+ });
242
+ // ============================================
243
+ // Employment Status Update
244
+ // ============================================
245
+ exports.updateEmploymentStatusSchema = zod_1.z.object({
246
+ employmentStatus: exports.employmentStatusSchema,
247
+ effectiveDate: common_1.dateSchema,
248
+ reason: zod_1.z.string().max(255).optional(),
249
+ notes: zod_1.z.string().max(1000).optional(),
250
+ });
251
+ //# sourceMappingURL=staff.schema.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"staff.schema.js","sourceRoot":"","sources":["../../../src/schemas/identity/staff.schema.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,313 @@
1
+ /**
2
+ * Tenant Schemas - Identity Service
3
+ *
4
+ * Zod schemas for tenant management DTOs.
5
+ */
6
+ import { z } from 'zod';
7
+ export declare const tenantTierSchema: z.ZodEnum<["basic", "premium", "advanced"]>;
8
+ export type TenantTier = z.infer<typeof tenantTierSchema>;
9
+ export declare const tenantStatusSchema: z.ZodEnum<["active", "inactive", "suspended", "trial"]>;
10
+ export type TenantStatus = z.infer<typeof tenantStatusSchema>;
11
+ export declare const tenantAddressSchema: z.ZodObject<{
12
+ street1: z.ZodString;
13
+ street2: z.ZodOptional<z.ZodString>;
14
+ city: z.ZodString;
15
+ state: z.ZodString;
16
+ zipCode: z.ZodString;
17
+ country: z.ZodOptional<z.ZodDefault<z.ZodString>>;
18
+ }, "strip", z.ZodTypeAny, {
19
+ street1: string;
20
+ city: string;
21
+ state: string;
22
+ zipCode: string;
23
+ street2?: string | undefined;
24
+ country?: string | undefined;
25
+ }, {
26
+ street1: string;
27
+ city: string;
28
+ state: string;
29
+ zipCode: string;
30
+ street2?: string | undefined;
31
+ country?: string | undefined;
32
+ }>;
33
+ export type TenantAddressDto = z.infer<typeof tenantAddressSchema>;
34
+ export declare const tenantBrandingSchema: z.ZodObject<{
35
+ logoUrl: z.ZodOptional<z.ZodString>;
36
+ faviconUrl: z.ZodOptional<z.ZodString>;
37
+ primaryColor: z.ZodOptional<z.ZodString>;
38
+ secondaryColor: z.ZodOptional<z.ZodString>;
39
+ customDomain: z.ZodOptional<z.ZodString>;
40
+ }, "strip", z.ZodTypeAny, {
41
+ logoUrl?: string | undefined;
42
+ faviconUrl?: string | undefined;
43
+ primaryColor?: string | undefined;
44
+ secondaryColor?: string | undefined;
45
+ customDomain?: string | undefined;
46
+ }, {
47
+ logoUrl?: string | undefined;
48
+ faviconUrl?: string | undefined;
49
+ primaryColor?: string | undefined;
50
+ secondaryColor?: string | undefined;
51
+ customDomain?: string | undefined;
52
+ }>;
53
+ export type TenantBrandingDto = z.infer<typeof tenantBrandingSchema>;
54
+ export declare const updateTenantSchema: z.ZodObject<{
55
+ name: z.ZodOptional<z.ZodString>;
56
+ contactEmail: z.ZodOptional<z.ZodString>;
57
+ contactPhone: z.ZodOptional<z.ZodString>;
58
+ address: z.ZodOptional<z.ZodObject<{
59
+ street1: z.ZodString;
60
+ street2: z.ZodOptional<z.ZodString>;
61
+ city: z.ZodString;
62
+ state: z.ZodString;
63
+ zipCode: z.ZodString;
64
+ country: z.ZodOptional<z.ZodDefault<z.ZodString>>;
65
+ }, "strip", z.ZodTypeAny, {
66
+ street1: string;
67
+ city: string;
68
+ state: string;
69
+ zipCode: string;
70
+ street2?: string | undefined;
71
+ country?: string | undefined;
72
+ }, {
73
+ street1: string;
74
+ city: string;
75
+ state: string;
76
+ zipCode: string;
77
+ street2?: string | undefined;
78
+ country?: string | undefined;
79
+ }>>;
80
+ status: z.ZodOptional<z.ZodEnum<["active", "inactive", "suspended", "trial"]>>;
81
+ branding: z.ZodOptional<z.ZodObject<{
82
+ logoUrl: z.ZodOptional<z.ZodString>;
83
+ faviconUrl: z.ZodOptional<z.ZodString>;
84
+ primaryColor: z.ZodOptional<z.ZodString>;
85
+ secondaryColor: z.ZodOptional<z.ZodString>;
86
+ customDomain: z.ZodOptional<z.ZodString>;
87
+ }, "strip", z.ZodTypeAny, {
88
+ logoUrl?: string | undefined;
89
+ faviconUrl?: string | undefined;
90
+ primaryColor?: string | undefined;
91
+ secondaryColor?: string | undefined;
92
+ customDomain?: string | undefined;
93
+ }, {
94
+ logoUrl?: string | undefined;
95
+ faviconUrl?: string | undefined;
96
+ primaryColor?: string | undefined;
97
+ secondaryColor?: string | undefined;
98
+ customDomain?: string | undefined;
99
+ }>>;
100
+ }, "strip", z.ZodTypeAny, {
101
+ status?: "active" | "inactive" | "suspended" | "trial" | undefined;
102
+ name?: string | undefined;
103
+ address?: {
104
+ street1: string;
105
+ city: string;
106
+ state: string;
107
+ zipCode: string;
108
+ street2?: string | undefined;
109
+ country?: string | undefined;
110
+ } | undefined;
111
+ contactEmail?: string | undefined;
112
+ contactPhone?: string | undefined;
113
+ branding?: {
114
+ logoUrl?: string | undefined;
115
+ faviconUrl?: string | undefined;
116
+ primaryColor?: string | undefined;
117
+ secondaryColor?: string | undefined;
118
+ customDomain?: string | undefined;
119
+ } | undefined;
120
+ }, {
121
+ status?: "active" | "inactive" | "suspended" | "trial" | undefined;
122
+ name?: string | undefined;
123
+ address?: {
124
+ street1: string;
125
+ city: string;
126
+ state: string;
127
+ zipCode: string;
128
+ street2?: string | undefined;
129
+ country?: string | undefined;
130
+ } | undefined;
131
+ contactEmail?: string | undefined;
132
+ contactPhone?: string | undefined;
133
+ branding?: {
134
+ logoUrl?: string | undefined;
135
+ faviconUrl?: string | undefined;
136
+ primaryColor?: string | undefined;
137
+ secondaryColor?: string | undefined;
138
+ customDomain?: string | undefined;
139
+ } | undefined;
140
+ }>;
141
+ export type UpdateTenantDto = z.infer<typeof updateTenantSchema>;
142
+ export declare const tenantResponseSchema: z.ZodObject<{
143
+ tenantId: z.ZodString;
144
+ name: z.ZodString;
145
+ subdomain: z.ZodString;
146
+ contactEmail: z.ZodString;
147
+ contactPhone: z.ZodOptional<z.ZodString>;
148
+ address: z.ZodOptional<z.ZodObject<{
149
+ street1: z.ZodString;
150
+ street2: z.ZodOptional<z.ZodString>;
151
+ city: z.ZodString;
152
+ state: z.ZodString;
153
+ zipCode: z.ZodString;
154
+ country: z.ZodOptional<z.ZodDefault<z.ZodString>>;
155
+ }, "strip", z.ZodTypeAny, {
156
+ street1: string;
157
+ city: string;
158
+ state: string;
159
+ zipCode: string;
160
+ street2?: string | undefined;
161
+ country?: string | undefined;
162
+ }, {
163
+ street1: string;
164
+ city: string;
165
+ state: string;
166
+ zipCode: string;
167
+ street2?: string | undefined;
168
+ country?: string | undefined;
169
+ }>>;
170
+ tier: z.ZodEnum<["basic", "premium", "advanced"]>;
171
+ status: z.ZodEnum<["active", "inactive", "suspended", "trial"]>;
172
+ features: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodBoolean>>;
173
+ limits: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodNumber>>;
174
+ branding: z.ZodOptional<z.ZodObject<{
175
+ logoUrl: z.ZodOptional<z.ZodString>;
176
+ faviconUrl: z.ZodOptional<z.ZodString>;
177
+ primaryColor: z.ZodOptional<z.ZodString>;
178
+ secondaryColor: z.ZodOptional<z.ZodString>;
179
+ customDomain: z.ZodOptional<z.ZodString>;
180
+ }, "strip", z.ZodTypeAny, {
181
+ logoUrl?: string | undefined;
182
+ faviconUrl?: string | undefined;
183
+ primaryColor?: string | undefined;
184
+ secondaryColor?: string | undefined;
185
+ customDomain?: string | undefined;
186
+ }, {
187
+ logoUrl?: string | undefined;
188
+ faviconUrl?: string | undefined;
189
+ primaryColor?: string | undefined;
190
+ secondaryColor?: string | undefined;
191
+ customDomain?: string | undefined;
192
+ }>>;
193
+ schoolCount: z.ZodOptional<z.ZodNumber>;
194
+ userCount: z.ZodOptional<z.ZodNumber>;
195
+ studentCount: z.ZodOptional<z.ZodNumber>;
196
+ createdAt: z.ZodString;
197
+ updatedAt: z.ZodString;
198
+ }, "strip", z.ZodTypeAny, {
199
+ status: "active" | "inactive" | "suspended" | "trial";
200
+ tenantId: string;
201
+ createdAt: string;
202
+ updatedAt: string;
203
+ name: string;
204
+ contactEmail: string;
205
+ subdomain: string;
206
+ tier: "basic" | "premium" | "advanced";
207
+ address?: {
208
+ street1: string;
209
+ city: string;
210
+ state: string;
211
+ zipCode: string;
212
+ street2?: string | undefined;
213
+ country?: string | undefined;
214
+ } | undefined;
215
+ studentCount?: number | undefined;
216
+ contactPhone?: string | undefined;
217
+ branding?: {
218
+ logoUrl?: string | undefined;
219
+ faviconUrl?: string | undefined;
220
+ primaryColor?: string | undefined;
221
+ secondaryColor?: string | undefined;
222
+ customDomain?: string | undefined;
223
+ } | undefined;
224
+ features?: Record<string, boolean> | undefined;
225
+ limits?: Record<string, number> | undefined;
226
+ schoolCount?: number | undefined;
227
+ userCount?: number | undefined;
228
+ }, {
229
+ status: "active" | "inactive" | "suspended" | "trial";
230
+ tenantId: string;
231
+ createdAt: string;
232
+ updatedAt: string;
233
+ name: string;
234
+ contactEmail: string;
235
+ subdomain: string;
236
+ tier: "basic" | "premium" | "advanced";
237
+ address?: {
238
+ street1: string;
239
+ city: string;
240
+ state: string;
241
+ zipCode: string;
242
+ street2?: string | undefined;
243
+ country?: string | undefined;
244
+ } | undefined;
245
+ studentCount?: number | undefined;
246
+ contactPhone?: string | undefined;
247
+ branding?: {
248
+ logoUrl?: string | undefined;
249
+ faviconUrl?: string | undefined;
250
+ primaryColor?: string | undefined;
251
+ secondaryColor?: string | undefined;
252
+ customDomain?: string | undefined;
253
+ } | undefined;
254
+ features?: Record<string, boolean> | undefined;
255
+ limits?: Record<string, number> | undefined;
256
+ schoolCount?: number | undefined;
257
+ userCount?: number | undefined;
258
+ }>;
259
+ export type TenantResponseDto = z.infer<typeof tenantResponseSchema>;
260
+ export declare const tenantLookupResponseSchema: z.ZodObject<{
261
+ tenantId: z.ZodString;
262
+ name: z.ZodString;
263
+ subdomain: z.ZodString;
264
+ tier: z.ZodEnum<["basic", "premium", "advanced"]>;
265
+ status: z.ZodEnum<["active", "inactive", "suspended", "trial"]>;
266
+ branding: z.ZodOptional<z.ZodObject<{
267
+ logoUrl: z.ZodOptional<z.ZodString>;
268
+ faviconUrl: z.ZodOptional<z.ZodString>;
269
+ primaryColor: z.ZodOptional<z.ZodString>;
270
+ secondaryColor: z.ZodOptional<z.ZodString>;
271
+ customDomain: z.ZodOptional<z.ZodString>;
272
+ }, "strip", z.ZodTypeAny, {
273
+ logoUrl?: string | undefined;
274
+ faviconUrl?: string | undefined;
275
+ primaryColor?: string | undefined;
276
+ secondaryColor?: string | undefined;
277
+ customDomain?: string | undefined;
278
+ }, {
279
+ logoUrl?: string | undefined;
280
+ faviconUrl?: string | undefined;
281
+ primaryColor?: string | undefined;
282
+ secondaryColor?: string | undefined;
283
+ customDomain?: string | undefined;
284
+ }>>;
285
+ }, "strip", z.ZodTypeAny, {
286
+ status: "active" | "inactive" | "suspended" | "trial";
287
+ tenantId: string;
288
+ name: string;
289
+ subdomain: string;
290
+ tier: "basic" | "premium" | "advanced";
291
+ branding?: {
292
+ logoUrl?: string | undefined;
293
+ faviconUrl?: string | undefined;
294
+ primaryColor?: string | undefined;
295
+ secondaryColor?: string | undefined;
296
+ customDomain?: string | undefined;
297
+ } | undefined;
298
+ }, {
299
+ status: "active" | "inactive" | "suspended" | "trial";
300
+ tenantId: string;
301
+ name: string;
302
+ subdomain: string;
303
+ tier: "basic" | "premium" | "advanced";
304
+ branding?: {
305
+ logoUrl?: string | undefined;
306
+ faviconUrl?: string | undefined;
307
+ primaryColor?: string | undefined;
308
+ secondaryColor?: string | undefined;
309
+ customDomain?: string | undefined;
310
+ } | undefined;
311
+ }>;
312
+ export type TenantLookupResponseDto = z.infer<typeof tenantLookupResponseSchema>;
313
+ //# sourceMappingURL=tenant.schema.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tenant.schema.d.ts","sourceRoot":"","sources":["../../../src/schemas/identity/tenant.schema.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAOxB,eAAO,MAAM,gBAAgB,6CAA2C,CAAC;AACzE,MAAM,MAAM,UAAU,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,gBAAgB,CAAC,CAAC;AAE1D,eAAO,MAAM,kBAAkB,yDAAuD,CAAC;AACvF,MAAM,MAAM,YAAY,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,kBAAkB,CAAC,CAAC;AAM9D,eAAO,MAAM,mBAAmB;;;;;;;;;;;;;;;;;;;;;EAO9B,CAAC;AAEH,MAAM,MAAM,gBAAgB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,mBAAmB,CAAC,CAAC;AAQnE,eAAO,MAAM,oBAAoB;;;;;;;;;;;;;;;;;;EAM/B,CAAC;AAEH,MAAM,MAAM,iBAAiB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,oBAAoB,CAAC,CAAC;AAMrE,eAAO,MAAM,kBAAkB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAO7B,CAAC;AAEH,MAAM,MAAM,eAAe,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,kBAAkB,CAAC,CAAC;AAMjE,eAAO,MAAM,oBAAoB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAiB/B,CAAC;AAEH,MAAM,MAAM,iBAAiB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,oBAAoB,CAAC,CAAC;AAMrE,eAAO,MAAM,0BAA0B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAOrC,CAAC;AAEH,MAAM,MAAM,uBAAuB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,0BAA0B,CAAC,CAAC"}
@@ -0,0 +1,81 @@
1
+ "use strict";
2
+ /**
3
+ * Tenant Schemas - Identity Service
4
+ *
5
+ * Zod schemas for tenant management DTOs.
6
+ */
7
+ Object.defineProperty(exports, "__esModule", { value: true });
8
+ exports.tenantLookupResponseSchema = exports.tenantResponseSchema = exports.updateTenantSchema = exports.tenantBrandingSchema = exports.tenantAddressSchema = exports.tenantStatusSchema = exports.tenantTierSchema = void 0;
9
+ const zod_1 = require("zod");
10
+ const common_1 = require("../common");
11
+ // ============================================
12
+ // Enums
13
+ // ============================================
14
+ exports.tenantTierSchema = zod_1.z.enum(['basic', 'premium', 'advanced']);
15
+ exports.tenantStatusSchema = zod_1.z.enum(['active', 'inactive', 'suspended', 'trial']);
16
+ // ============================================
17
+ // Tenant Address Schema
18
+ // ============================================
19
+ exports.tenantAddressSchema = zod_1.z.object({
20
+ street1: zod_1.z.string().min(1),
21
+ street2: zod_1.z.string().optional(),
22
+ city: zod_1.z.string().min(1),
23
+ state: zod_1.z.string().min(1),
24
+ zipCode: zod_1.z.string().min(1),
25
+ country: zod_1.z.string().default('USA').optional(),
26
+ });
27
+ // ============================================
28
+ // Tenant Branding Schema
29
+ // ============================================
30
+ const hexColorRegex = /^#[0-9A-Fa-f]{6}$/;
31
+ exports.tenantBrandingSchema = zod_1.z.object({
32
+ logoUrl: common_1.urlSchema.optional(),
33
+ faviconUrl: common_1.urlSchema.optional(),
34
+ primaryColor: zod_1.z.string().regex(hexColorRegex, 'Must be a valid hex color (#RRGGBB)').optional(),
35
+ secondaryColor: zod_1.z.string().regex(hexColorRegex, 'Must be a valid hex color (#RRGGBB)').optional(),
36
+ customDomain: zod_1.z.string().optional(),
37
+ });
38
+ // ============================================
39
+ // Update Tenant Schema
40
+ // ============================================
41
+ exports.updateTenantSchema = zod_1.z.object({
42
+ name: zod_1.z.string().min(2).max(100).optional(),
43
+ contactEmail: common_1.emailSchema.optional(),
44
+ contactPhone: zod_1.z.string().optional(),
45
+ address: exports.tenantAddressSchema.optional(),
46
+ status: exports.tenantStatusSchema.optional(),
47
+ branding: exports.tenantBrandingSchema.optional(),
48
+ });
49
+ // ============================================
50
+ // Tenant Response Schema
51
+ // ============================================
52
+ exports.tenantResponseSchema = zod_1.z.object({
53
+ tenantId: zod_1.z.string(),
54
+ name: zod_1.z.string(),
55
+ subdomain: zod_1.z.string(),
56
+ contactEmail: zod_1.z.string().email(),
57
+ contactPhone: zod_1.z.string().optional(),
58
+ address: exports.tenantAddressSchema.optional(),
59
+ tier: exports.tenantTierSchema,
60
+ status: exports.tenantStatusSchema,
61
+ features: zod_1.z.record(zod_1.z.boolean()).optional(),
62
+ limits: zod_1.z.record(zod_1.z.number()).optional(),
63
+ branding: exports.tenantBrandingSchema.optional(),
64
+ schoolCount: zod_1.z.number().int().min(0).optional(),
65
+ userCount: zod_1.z.number().int().min(0).optional(),
66
+ studentCount: zod_1.z.number().int().min(0).optional(),
67
+ createdAt: common_1.isoDateSchema,
68
+ updatedAt: common_1.isoDateSchema,
69
+ });
70
+ // ============================================
71
+ // Tenant Lookup Response Schema
72
+ // ============================================
73
+ exports.tenantLookupResponseSchema = zod_1.z.object({
74
+ tenantId: zod_1.z.string(),
75
+ name: zod_1.z.string(),
76
+ subdomain: zod_1.z.string(),
77
+ tier: exports.tenantTierSchema,
78
+ status: exports.tenantStatusSchema,
79
+ branding: exports.tenantBrandingSchema.optional(),
80
+ });
81
+ //# sourceMappingURL=tenant.schema.js.map