@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.
- package/README.md +170 -0
- package/dist/index.d.ts +48 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +74 -0
- package/dist/index.js.map +1 -0
- package/dist/mappers/edfi/calendar.mapper.d.ts +158 -0
- package/dist/mappers/edfi/calendar.mapper.d.ts.map +1 -0
- package/dist/mappers/edfi/calendar.mapper.js +235 -0
- package/dist/mappers/edfi/calendar.mapper.js.map +1 -0
- package/dist/mappers/edfi/credential.mapper.d.ts +50 -0
- package/dist/mappers/edfi/credential.mapper.d.ts.map +1 -0
- package/dist/mappers/edfi/credential.mapper.js +123 -0
- package/dist/mappers/edfi/credential.mapper.js.map +1 -0
- package/dist/mappers/edfi/index.d.ts +10 -0
- package/dist/mappers/edfi/index.d.ts.map +1 -0
- package/dist/mappers/edfi/index.js +26 -0
- package/dist/mappers/edfi/index.js.map +1 -0
- package/dist/mappers/edfi/staff.mapper.d.ts +96 -0
- package/dist/mappers/edfi/staff.mapper.d.ts.map +1 -0
- package/dist/mappers/edfi/staff.mapper.js +138 -0
- package/dist/mappers/edfi/staff.mapper.js.map +1 -0
- package/dist/mappers/index.d.ts +7 -0
- package/dist/mappers/index.d.ts.map +1 -0
- package/dist/mappers/index.js +23 -0
- package/dist/mappers/index.js.map +1 -0
- package/dist/schemas/academics/assignment.schema.d.ts +1463 -0
- package/dist/schemas/academics/assignment.schema.d.ts.map +1 -0
- package/dist/schemas/academics/assignment.schema.js +195 -0
- package/dist/schemas/academics/assignment.schema.js.map +1 -0
- package/dist/schemas/academics/attendance.schema.d.ts +762 -0
- package/dist/schemas/academics/attendance.schema.d.ts.map +1 -0
- package/dist/schemas/academics/attendance.schema.js +250 -0
- package/dist/schemas/academics/attendance.schema.js.map +1 -0
- package/dist/schemas/academics/classroom.schema.d.ts +742 -0
- package/dist/schemas/academics/classroom.schema.d.ts.map +1 -0
- package/dist/schemas/academics/classroom.schema.js +164 -0
- package/dist/schemas/academics/classroom.schema.js.map +1 -0
- package/dist/schemas/academics/course-section.schema.d.ts +388 -0
- package/dist/schemas/academics/course-section.schema.d.ts.map +1 -0
- package/dist/schemas/academics/course-section.schema.js +128 -0
- package/dist/schemas/academics/course-section.schema.js.map +1 -0
- package/dist/schemas/academics/course.schema.d.ts +778 -0
- package/dist/schemas/academics/course.schema.d.ts.map +1 -0
- package/dist/schemas/academics/course.schema.js +207 -0
- package/dist/schemas/academics/course.schema.js.map +1 -0
- package/dist/schemas/academics/grade.schema.d.ts +848 -0
- package/dist/schemas/academics/grade.schema.d.ts.map +1 -0
- package/dist/schemas/academics/grade.schema.js +251 -0
- package/dist/schemas/academics/grade.schema.js.map +1 -0
- package/dist/schemas/academics/index.d.ts +13 -0
- package/dist/schemas/academics/index.d.ts.map +1 -0
- package/dist/schemas/academics/index.js +29 -0
- package/dist/schemas/academics/index.js.map +1 -0
- package/dist/schemas/academics/student.schema.d.ts +2891 -0
- package/dist/schemas/academics/student.schema.d.ts.map +1 -0
- package/dist/schemas/academics/student.schema.js +249 -0
- package/dist/schemas/academics/student.schema.js.map +1 -0
- package/dist/schemas/common.d.ts +183 -0
- package/dist/schemas/common.d.ts.map +1 -0
- package/dist/schemas/common.js +126 -0
- package/dist/schemas/common.js.map +1 -0
- package/dist/schemas/enrollment/enrollment.schema.d.ts +2799 -0
- package/dist/schemas/enrollment/enrollment.schema.d.ts.map +1 -0
- package/dist/schemas/enrollment/enrollment.schema.js +435 -0
- package/dist/schemas/enrollment/enrollment.schema.js.map +1 -0
- package/dist/schemas/enrollment/index.d.ts +7 -0
- package/dist/schemas/enrollment/index.d.ts.map +1 -0
- package/dist/schemas/enrollment/index.js +23 -0
- package/dist/schemas/enrollment/index.js.map +1 -0
- package/dist/schemas/identity/academic-year.schema.d.ts +546 -0
- package/dist/schemas/identity/academic-year.schema.d.ts.map +1 -0
- package/dist/schemas/identity/academic-year.schema.js +137 -0
- package/dist/schemas/identity/academic-year.schema.js.map +1 -0
- package/dist/schemas/identity/auth.schema.d.ts +670 -0
- package/dist/schemas/identity/auth.schema.d.ts.map +1 -0
- package/dist/schemas/identity/auth.schema.js +126 -0
- package/dist/schemas/identity/auth.schema.js.map +1 -0
- package/dist/schemas/identity/bell-schedule.schema.d.ts +630 -0
- package/dist/schemas/identity/bell-schedule.schema.d.ts.map +1 -0
- package/dist/schemas/identity/bell-schedule.schema.js +143 -0
- package/dist/schemas/identity/bell-schedule.schema.js.map +1 -0
- package/dist/schemas/identity/calendar-date.schema.d.ts +830 -0
- package/dist/schemas/identity/calendar-date.schema.d.ts.map +1 -0
- package/dist/schemas/identity/calendar-date.schema.js +208 -0
- package/dist/schemas/identity/calendar-date.schema.js.map +1 -0
- package/dist/schemas/identity/credential.schema.d.ts +472 -0
- package/dist/schemas/identity/credential.schema.d.ts.map +1 -0
- package/dist/schemas/identity/credential.schema.js +200 -0
- package/dist/schemas/identity/credential.schema.js.map +1 -0
- package/dist/schemas/identity/department.schema.d.ts +567 -0
- package/dist/schemas/identity/department.schema.d.ts.map +1 -0
- package/dist/schemas/identity/department.schema.js +113 -0
- package/dist/schemas/identity/department.schema.js.map +1 -0
- package/dist/schemas/identity/index.d.ts +21 -0
- package/dist/schemas/identity/index.d.ts.map +1 -0
- package/dist/schemas/identity/index.js +39 -0
- package/dist/schemas/identity/index.js.map +1 -0
- package/dist/schemas/identity/leave.schema.d.ts +725 -0
- package/dist/schemas/identity/leave.schema.d.ts.map +1 -0
- package/dist/schemas/identity/leave.schema.js +204 -0
- package/dist/schemas/identity/leave.schema.js.map +1 -0
- package/dist/schemas/identity/role.schema.d.ts +356 -0
- package/dist/schemas/identity/role.schema.d.ts.map +1 -0
- package/dist/schemas/identity/role.schema.js +124 -0
- package/dist/schemas/identity/role.schema.js.map +1 -0
- package/dist/schemas/identity/school-year.schema.d.ts +303 -0
- package/dist/schemas/identity/school-year.schema.d.ts.map +1 -0
- package/dist/schemas/identity/school-year.schema.js +59 -0
- package/dist/schemas/identity/school-year.schema.js.map +1 -0
- package/dist/schemas/identity/school.schema.d.ts +844 -0
- package/dist/schemas/identity/school.schema.d.ts.map +1 -0
- package/dist/schemas/identity/school.schema.js +139 -0
- package/dist/schemas/identity/school.schema.js.map +1 -0
- package/dist/schemas/identity/security.schema.d.ts +422 -0
- package/dist/schemas/identity/security.schema.d.ts.map +1 -0
- package/dist/schemas/identity/security.schema.js +151 -0
- package/dist/schemas/identity/security.schema.js.map +1 -0
- package/dist/schemas/identity/session.schema.d.ts +193 -0
- package/dist/schemas/identity/session.schema.d.ts.map +1 -0
- package/dist/schemas/identity/session.schema.js +59 -0
- package/dist/schemas/identity/session.schema.js.map +1 -0
- package/dist/schemas/identity/staff.schema.d.ts +1037 -0
- package/dist/schemas/identity/staff.schema.d.ts.map +1 -0
- package/dist/schemas/identity/staff.schema.js +251 -0
- package/dist/schemas/identity/staff.schema.js.map +1 -0
- package/dist/schemas/identity/tenant.schema.d.ts +313 -0
- package/dist/schemas/identity/tenant.schema.d.ts.map +1 -0
- package/dist/schemas/identity/tenant.schema.js +81 -0
- package/dist/schemas/identity/tenant.schema.js.map +1 -0
- package/dist/schemas/identity/user.schema.d.ts +921 -0
- package/dist/schemas/identity/user.schema.d.ts.map +1 -0
- package/dist/schemas/identity/user.schema.js +201 -0
- package/dist/schemas/identity/user.schema.js.map +1 -0
- package/dist/schemas/index.d.ts +10 -0
- package/dist/schemas/index.d.ts.map +1 -0
- package/dist/schemas/index.js +26 -0
- package/dist/schemas/index.js.map +1 -0
- package/dist/validators/academic-year.d.ts +90 -0
- package/dist/validators/academic-year.d.ts.map +1 -0
- package/dist/validators/academic-year.js +190 -0
- package/dist/validators/academic-year.js.map +1 -0
- package/dist/validators/date-range.d.ts +142 -0
- package/dist/validators/date-range.d.ts.map +1 -0
- package/dist/validators/date-range.js +170 -0
- package/dist/validators/date-range.js.map +1 -0
- package/dist/validators/grade-level.d.ts +80 -0
- package/dist/validators/grade-level.d.ts.map +1 -0
- package/dist/validators/grade-level.js +157 -0
- package/dist/validators/grade-level.js.map +1 -0
- package/dist/validators/index.d.ts +10 -0
- package/dist/validators/index.d.ts.map +1 -0
- package/dist/validators/index.js +26 -0
- package/dist/validators/index.js.map +1 -0
- package/dist/validators/password.d.ts +60 -0
- package/dist/validators/password.d.ts.map +1 -0
- package/dist/validators/password.js +81 -0
- package/dist/validators/password.js.map +1 -0
- 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":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAcxB;;GAEG;AACH,eAAO,MAAM,eAAe,kKAY1B,CAAC;AACH,MAAM,MAAM,SAAS,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,eAAe,CAAC,CAAC;AAExD;;GAEG;AACH,eAAO,MAAM,sBAAsB,qFAOjC,CAAC;AACH,MAAM,MAAM,gBAAgB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,sBAAsB,CAAC,CAAC;AAEtE;;GAEG;AACH,eAAO,MAAM,oBAAoB,6EAM/B,CAAC;AACH,MAAM,MAAM,cAAc,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,oBAAoB,CAAC,CAAC;AAElE;;GAEG;AACH,eAAO,MAAM,iBAAiB,8CAI5B,CAAC;AACH,MAAM,MAAM,WAAW,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,iBAAiB,CAAC,CAAC;AAE5D;;GAEG;AACH,eAAO,MAAM,iBAAiB,kEAK5B,CAAC;AACH,MAAM,MAAM,WAAW,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,iBAAiB,CAAC,CAAC;AAM5D,eAAO,MAAM,kBAAkB;;;;;;;;;;;;;;;;;;;;;;;;EAQ7B,CAAC;AACH,MAAM,MAAM,YAAY,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,kBAAkB,CAAC,CAAC;AAM9D,eAAO,MAAM,yBAAyB;;;;;;;;;;;;EAIpC,CAAC;AACH,MAAM,MAAM,mBAAmB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,yBAAyB,CAAC,CAAC;AAM5E,eAAO,MAAM,oBAAoB;;;;;;;;;;;;EAI/B,CAAC;AACH,MAAM,MAAM,cAAc,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,oBAAoB,CAAC,CAAC;AAMlE,eAAO,MAAM,2BAA2B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAUtC,CAAC;AACH,MAAM,MAAM,qBAAqB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,2BAA2B,CAAC,CAAC;AAMhF,eAAO,MAAM,2BAA2B;;;;;;;;;;;;;;;;;;EAMtC,CAAC;AACH,MAAM,MAAM,qBAAqB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,2BAA2B,CAAC,CAAC;AAMhF,eAAO,MAAM,iBAAiB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAwC5B,CAAC;AAEH,MAAM,MAAM,cAAc,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,iBAAiB,CAAC,CAAC;AAM/D,eAAO,MAAM,iBAAiB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAQ5B,CAAC;AAEH,MAAM,MAAM,cAAc,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,iBAAiB,CAAC,CAAC;AAM/D,eAAO,MAAM,mBAAmB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EA8C9B,CAAC;AAEH,MAAM,MAAM,gBAAgB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,mBAAmB,CAAC,CAAC;AAMnE,eAAO,MAAM,uBAAuB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAAqD,CAAC;AAC1F,MAAM,MAAM,oBAAoB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,uBAAuB,CAAC,CAAC;AAM3E,eAAO,MAAM,iBAAiB;;;;;;;;;;;;;;;;;;;;;;;;EAQ5B,CAAC;AAEH,MAAM,MAAM,cAAc,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,iBAAiB,CAAC,CAAC;AAM/D,eAAO,MAAM,yBAAyB;;;;;;;;;;;;;;;;;;;;;;;;;;;EASpC,CAAC;AAEH,MAAM,MAAM,sBAAsB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,yBAAyB,CAAC,CAAC;AAM/E,eAAO,MAAM,4BAA4B;;;;;;;;;;;;;;;EAKvC,CAAC;AAEH,MAAM,MAAM,yBAAyB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,4BAA4B,CAAC,CAAC"}
|
|
@@ -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
|