@zyacreatives/shared 2.2.65 → 2.2.67

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.
@@ -1,127 +1,202 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.GetJobsOutputSchema = exports.GetJobsInputSchema = exports.GetCreatedJobsOutputSchema = exports.NormalizedJobSchema = exports.UpdateJobInputSchema = exports.UpdateGigJobInputSchema = exports.UpdateRoleJobInputSchema = exports.CreateGigJobInputSchema = exports.CreateRoleJobInputSchema = exports.CreateJobInputSchema = exports.JobWithRoleDetailsEntitySchema = exports.RoleJobEntitySchema = exports.JobWithGigDetailsEntitySchema = exports.GigJobEntitySchema = exports.JobEntitySchema = exports.JobIdSchema = exports.BaseJobEntitySchema = exports.MinimalJobEntitySchema = void 0;
4
- const zod_1 = require("zod");
3
+ exports.JobSearchDocumentSchema = exports.GetJobsOutputSchema = exports.GetJobsInputSchema = exports.GetCreatedJobsOutputSchema = exports.NormalizedJobSchema = exports.UpdateJobInputSchema = exports.UpdateGigJobInputSchema = exports.UpdateRoleJobInputSchema = exports.CreateGigJobInputSchema = exports.CreateRoleJobInputSchema = exports.CreateJobInputSchema = exports.JobWithRoleDetailsEntitySchema = exports.RoleJobEntitySchema = exports.JobWithGigDetailsEntitySchema = exports.GigJobEntitySchema = exports.JobEntitySchema = exports.JobIdSchema = exports.BaseJobEntitySchema = exports.MinimalJobEntitySchema = void 0;
4
+ const zod_openapi_1 = require("@hono/zod-openapi");
5
5
  const constants_1 = require("../constants");
6
- const JobSectionEnum = zod_1.z.enum(Object.values(constants_1.JOB_SECTIONS));
7
- exports.MinimalJobEntitySchema = zod_1.z.object({
8
- id: zod_1.z.cuid2(),
9
- title: zod_1.z.string(),
10
- brandId: zod_1.z.cuid2(),
11
- jobType: zod_1.z.enum(Object.values(constants_1.JOB_TYPE)),
6
+ const JobSectionEnum = zod_openapi_1.z
7
+ .enum(Object.values(constants_1.JOB_SECTIONS))
8
+ .openapi({ example: "PROFESSIONAL_INFORMATION" });
9
+ exports.MinimalJobEntitySchema = zod_openapi_1.z.object({
10
+ id: zod_openapi_1.z.cuid2().openapi({ example: "ckj1a2b3c0000job1" }),
11
+ title: zod_openapi_1.z.string().openapi({ example: "Senior Frontend Engineer" }),
12
+ brandId: zod_openapi_1.z.cuid2().openapi({ example: "ckj1a2b3c0000brnd" }),
13
+ jobType: zod_openapi_1.z
14
+ .enum(Object.values(constants_1.JOB_TYPE))
15
+ .openapi({ example: "ROLE" }),
12
16
  });
13
- exports.BaseJobEntitySchema = zod_1.z.object({
14
- id: zod_1.z.cuid2(),
15
- title: zod_1.z.string(),
16
- brandId: zod_1.z.cuid2(),
17
- jobType: zod_1.z.enum(Object.values(constants_1.JOB_TYPE)),
18
- employmentType: zod_1.z
17
+ exports.BaseJobEntitySchema = zod_openapi_1.z.object({
18
+ id: zod_openapi_1.z.cuid2().openapi({ example: "ckj1a2b3c0000job1" }),
19
+ title: zod_openapi_1.z.string().openapi({ example: "Senior Frontend Engineer" }),
20
+ brandId: zod_openapi_1.z.cuid2().openapi({ example: "ckj1a2b3c0000brnd" }),
21
+ jobType: zod_openapi_1.z
22
+ .enum(Object.values(constants_1.JOB_TYPE))
23
+ .openapi({ example: "ROLE" }),
24
+ employmentType: zod_openapi_1.z
19
25
  .enum(Object.values(constants_1.EMPLOYMENT_TYPE))
20
- .optional(),
21
- workMode: zod_1.z.enum(Object.values(constants_1.WORK_MODE)),
22
- status: zod_1.z.enum(Object.values(constants_1.JOB_STATUS)),
23
- gigType: zod_1.z
26
+ .optional()
27
+ .openapi({ example: "FULL_TIME" }),
28
+ workMode: zod_openapi_1.z
29
+ .enum(Object.values(constants_1.WORK_MODE))
30
+ .openapi({ example: "REMOTE" }),
31
+ status: zod_openapi_1.z
32
+ .enum(Object.values(constants_1.JOB_STATUS))
33
+ .openapi({ example: "OPEN" }),
34
+ gigType: zod_openapi_1.z
24
35
  .enum(Object.values(constants_1.GIG_TYPE))
25
- .optional(),
26
- location: zod_1.z.enum(Object.values(constants_1.JOB_LOCATIONS)),
27
- jobSections: zod_1.z
36
+ .optional()
37
+ .openapi({ example: "PROJECT_BASED" }),
38
+ location: zod_openapi_1.z
39
+ .enum(Object.values(constants_1.JOB_LOCATIONS))
40
+ .openapi({ example: "LAGOS" }),
41
+ jobSections: zod_openapi_1.z
28
42
  .array(JobSectionEnum)
29
43
  .default([
30
44
  constants_1.JOB_SECTIONS.PERSONAL_INFORMATION,
31
45
  constants_1.JOB_SECTIONS.PROFESSIONAL_INFORMATION,
32
46
  constants_1.JOB_SECTIONS.RESUME,
33
47
  constants_1.JOB_SECTIONS.COVER_LETTER,
34
- ]),
35
- createdAt: zod_1.z.date(),
36
- version: zod_1.z.int(),
37
- updatedAt: zod_1.z.date(),
48
+ ])
49
+ .openapi({
50
+ example: [
51
+ "PERSONAL_INFORMATION",
52
+ "PROFESSIONAL_INFORMATION",
53
+ "RESUME",
54
+ "COVER_LETTER",
55
+ ],
56
+ }),
57
+ createdAt: zod_openapi_1.z.date().openapi({ example: "2026-03-11T09:00:00.000Z" }),
58
+ version: zod_openapi_1.z.int().openapi({ example: 1 }),
59
+ updatedAt: zod_openapi_1.z.date().openapi({ example: "2026-03-11T09:00:00.000Z" }),
38
60
  });
39
- exports.JobIdSchema = zod_1.z.object({
40
- jobId: zod_1.z.cuid2(),
61
+ exports.JobIdSchema = zod_openapi_1.z.object({
62
+ jobId: zod_openapi_1.z.cuid2().openapi({ example: "ckj1a2b3c0000job1" }),
41
63
  });
42
- exports.JobEntitySchema = zod_1.z.object({
43
- id: zod_1.z.cuid2(),
44
- title: zod_1.z.string(),
45
- brandId: zod_1.z.cuid2(),
46
- brandName: zod_1.z.cuid2(),
47
- brandImgUrl: zod_1.z.cuid2().optional(),
48
- jobType: zod_1.z.enum(Object.values(constants_1.JOB_TYPE)),
49
- status: zod_1.z.enum(Object.values(constants_1.JOB_STATUS)),
50
- employmentType: zod_1.z
64
+ exports.JobEntitySchema = zod_openapi_1.z.object({
65
+ id: zod_openapi_1.z.cuid2().openapi({ example: "ckj1a2b3c0000job1" }),
66
+ title: zod_openapi_1.z.string().openapi({ example: "Senior Frontend Engineer" }),
67
+ brandId: zod_openapi_1.z.cuid2().openapi({ example: "ckj1a2b3c0000brnd" }),
68
+ brandName: zod_openapi_1.z.string().openapi({ example: "Acme Corp" }),
69
+ brandImgUrl: zod_openapi_1.z
70
+ .string()
71
+ .url()
72
+ .optional()
73
+ .openapi({ example: "https://example.com/logo.png" }),
74
+ jobType: zod_openapi_1.z
75
+ .enum(Object.values(constants_1.JOB_TYPE))
76
+ .openapi({ example: "ROLE" }),
77
+ status: zod_openapi_1.z
78
+ .enum(Object.values(constants_1.JOB_STATUS))
79
+ .openapi({ example: "OPEN" }),
80
+ employmentType: zod_openapi_1.z
51
81
  .enum(Object.values(constants_1.EMPLOYMENT_TYPE))
52
- .optional(),
53
- workMode: zod_1.z.enum(Object.values(constants_1.WORK_MODE)),
54
- gigType: zod_1.z
82
+ .optional()
83
+ .openapi({ example: "FULL_TIME" }),
84
+ workMode: zod_openapi_1.z
85
+ .enum(Object.values(constants_1.WORK_MODE))
86
+ .openapi({ example: "REMOTE" }),
87
+ gigType: zod_openapi_1.z
55
88
  .enum(Object.values(constants_1.GIG_TYPE))
56
- .optional(),
57
- location: zod_1.z.enum(Object.values(constants_1.JOB_LOCATIONS)),
58
- jobSections: zod_1.z
89
+ .optional()
90
+ .openapi({ example: "PROJECT_BASED" }),
91
+ location: zod_openapi_1.z
92
+ .enum(Object.values(constants_1.JOB_LOCATIONS))
93
+ .openapi({ example: "LAGOS" }),
94
+ jobSections: zod_openapi_1.z
59
95
  .array(JobSectionEnum)
60
96
  .default([
61
97
  constants_1.JOB_SECTIONS.PERSONAL_INFORMATION,
62
98
  constants_1.JOB_SECTIONS.PROFESSIONAL_INFORMATION,
63
99
  constants_1.JOB_SECTIONS.RESUME,
64
100
  constants_1.JOB_SECTIONS.COVER_LETTER,
65
- ]),
66
- isBookmarked: zod_1.z.boolean(),
67
- createdAt: zod_1.z.date(),
68
- version: zod_1.z.int(),
69
- updatedAt: zod_1.z.date(),
101
+ ])
102
+ .openapi({ example: ["PERSONAL_INFORMATION", "RESUME"] }),
103
+ isBookmarked: zod_openapi_1.z.boolean().openapi({ example: false }),
104
+ createdAt: zod_openapi_1.z.date().openapi({ example: "2026-03-11T09:00:00.000Z" }),
105
+ version: zod_openapi_1.z.int().openapi({ example: 1 }),
106
+ updatedAt: zod_openapi_1.z.date().openapi({ example: "2026-03-11T09:00:00.000Z" }),
70
107
  });
71
- exports.GigJobEntitySchema = zod_1.z.object({
72
- id: zod_1.z.cuid2(),
73
- jobType: zod_1.z.literal(constants_1.JOB_TYPE.GIG),
74
- overview: zod_1.z.string(),
75
- deliverables: zod_1.z.string(),
76
- employeeRequirements: zod_1.z.string().optional(),
77
- aboutCompany: zod_1.z.string().optional(),
78
- requiredSkills: zod_1.z.array(zod_1.z.string()),
79
- wagesMin: zod_1.z.number().optional(),
80
- wagesMax: zod_1.z.number().optional(),
81
- wagesCurrency: zod_1.z
108
+ exports.GigJobEntitySchema = zod_openapi_1.z.object({
109
+ id: zod_openapi_1.z.cuid2().openapi({ example: "ckj1a2b3c0000gig1" }),
110
+ jobType: zod_openapi_1.z.literal(constants_1.JOB_TYPE.GIG).openapi({ example: "GIG" }),
111
+ overview: zod_openapi_1.z
112
+ .string()
113
+ .openapi({ example: "We need a landing page redesigned." }),
114
+ deliverables: zod_openapi_1.z
115
+ .string()
116
+ .openapi({ example: "Figma files and exported assets." }),
117
+ employeeRequirements: zod_openapi_1.z
118
+ .string()
119
+ .optional()
120
+ .openapi({ example: "Must have 3+ years in UI/UX." }),
121
+ aboutCompany: zod_openapi_1.z
122
+ .string()
123
+ .optional()
124
+ .openapi({ example: "A fast-growing fintech startup." }),
125
+ requiredSkills: zod_openapi_1.z
126
+ .array(zod_openapi_1.z.string())
127
+ .openapi({ example: ["Figma", "UI Design"] }),
128
+ wagesMin: zod_openapi_1.z.number().optional().openapi({ example: 500 }),
129
+ wagesMax: zod_openapi_1.z.number().optional().openapi({ example: 1000 }),
130
+ wagesCurrency: zod_openapi_1.z
82
131
  .enum(Object.values(constants_1.WAGES_CURRENCY))
83
- .optional(),
84
- wagesType: zod_1.z
132
+ .optional()
133
+ .openapi({ example: "USD" }),
134
+ wagesType: zod_openapi_1.z
85
135
  .enum(Object.values(constants_1.WAGE_TYPES))
86
- .optional(),
136
+ .optional()
137
+ .openapi({ example: "FIXED" }),
87
138
  });
88
139
  exports.JobWithGigDetailsEntitySchema = exports.JobEntitySchema.extend(exports.GigJobEntitySchema.shape);
89
- exports.RoleJobEntitySchema = zod_1.z.object({
90
- id: zod_1.z.cuid2(),
91
- jobType: zod_1.z.literal(constants_1.JOB_TYPE.ROLE),
92
- experienceLevel: zod_1.z.enum(Object.values(constants_1.EXPERIENCE_LEVELS)),
93
- overview: zod_1.z.string(),
94
- keyResponsibilities: zod_1.z.string(),
95
- requiredSkills: zod_1.z.array(zod_1.z.string()),
96
- employeeRequirements: zod_1.z.string().optional(),
97
- companyBenefits: zod_1.z.string().optional(),
98
- wagesMin: zod_1.z.number().optional().nullable(),
99
- wagesMax: zod_1.z.number().optional().nullable(),
100
- wagesCurrency: zod_1.z
140
+ exports.RoleJobEntitySchema = zod_openapi_1.z.object({
141
+ id: zod_openapi_1.z.cuid2().openapi({ example: "ckj1a2b3c0000rol1" }),
142
+ jobType: zod_openapi_1.z.literal(constants_1.JOB_TYPE.ROLE).openapi({ example: "ROLE" }),
143
+ experienceLevel: zod_openapi_1.z
144
+ .enum(Object.values(constants_1.EXPERIENCE_LEVELS))
145
+ .openapi({ example: "SENIOR" }),
146
+ overview: zod_openapi_1.z
147
+ .string()
148
+ .openapi({ example: "Lead the development of our core product." }),
149
+ keyResponsibilities: zod_openapi_1.z
150
+ .string()
151
+ .openapi({ example: "Architect systems, mentor juniors." }),
152
+ requiredSkills: zod_openapi_1.z
153
+ .array(zod_openapi_1.z.string())
154
+ .openapi({ example: ["React", "TypeScript", "Node.js"] }),
155
+ employeeRequirements: zod_openapi_1.z
156
+ .string()
157
+ .optional()
158
+ .openapi({ example: "BS in Computer Science." }),
159
+ companyBenefits: zod_openapi_1.z
160
+ .string()
161
+ .optional()
162
+ .openapi({ example: "Health insurance, remote work." }),
163
+ wagesMin: zod_openapi_1.z.number().optional().nullable().openapi({ example: 80000 }),
164
+ wagesMax: zod_openapi_1.z.number().optional().nullable().openapi({ example: 120000 }),
165
+ wagesCurrency: zod_openapi_1.z
101
166
  .enum(Object.values(constants_1.WAGES_CURRENCY))
102
- .optional(),
103
- wagesType: zod_1.z
167
+ .optional()
168
+ .openapi({ example: "USD" }),
169
+ wagesType: zod_openapi_1.z
104
170
  .enum(Object.values(constants_1.WAGE_TYPES))
105
- .optional(),
171
+ .optional()
172
+ .openapi({ example: "YEARLY" }),
106
173
  });
107
174
  exports.JobWithRoleDetailsEntitySchema = exports.JobEntitySchema.extend(exports.RoleJobEntitySchema.shape);
108
- const CreateJobInputBaseSchema = zod_1.z.object({
109
- title: zod_1.z.string(),
110
- brandId: zod_1.z.cuid2(),
111
- jobType: zod_1.z.enum(Object.values(constants_1.JOB_TYPE)),
112
- employmentType: zod_1.z
175
+ const CreateJobInputBaseSchema = zod_openapi_1.z.object({
176
+ title: zod_openapi_1.z.string().openapi({ example: "Senior Frontend Engineer" }),
177
+ brandId: zod_openapi_1.z.cuid2().openapi({ example: "ckj1a2b3c0000brnd" }),
178
+ jobType: zod_openapi_1.z
179
+ .enum(Object.values(constants_1.JOB_TYPE))
180
+ .openapi({ example: "ROLE" }),
181
+ employmentType: zod_openapi_1.z
113
182
  .enum(Object.values(constants_1.EMPLOYMENT_TYPE))
114
- .optional(),
115
- workMode: zod_1.z.enum(Object.values(constants_1.WORK_MODE)),
116
- gigType: zod_1.z
183
+ .optional()
184
+ .openapi({ example: "FULL_TIME" }),
185
+ workMode: zod_openapi_1.z
186
+ .enum(Object.values(constants_1.WORK_MODE))
187
+ .openapi({ example: "REMOTE" }),
188
+ gigType: zod_openapi_1.z
117
189
  .enum(Object.values(constants_1.GIG_TYPE))
118
- .optional(),
119
- location: zod_1.z
190
+ .optional()
191
+ .openapi({ example: "PROJECT_BASED" }),
192
+ location: zod_openapi_1.z
120
193
  .enum(Object.values(constants_1.JOB_LOCATIONS))
121
- .default(constants_1.JOB_LOCATIONS.REMOTE),
122
- jobSections: zod_1.z
194
+ .default(constants_1.JOB_LOCATIONS.REMOTE)
195
+ .openapi({ example: "REMOTE" }),
196
+ jobSections: zod_openapi_1.z
123
197
  .array(JobSectionEnum)
124
- .min(1, { message: "At least one job section must be provided." }),
198
+ .min(1, { message: "At least one job section must be provided." })
199
+ .openapi({ example: ["PERSONAL_INFORMATION", "RESUME"] }),
125
200
  });
126
201
  exports.CreateJobInputSchema = CreateJobInputBaseSchema.superRefine((data, ctx) => {
127
202
  if (data.jobType === constants_1.JOB_TYPE.ROLE && !data.employmentType) {
@@ -147,99 +222,167 @@ exports.CreateJobInputSchema = CreateJobInputBaseSchema.superRefine((data, ctx)
147
222
  }
148
223
  return data;
149
224
  });
150
- exports.CreateRoleJobInputSchema = zod_1.z
225
+ exports.CreateRoleJobInputSchema = zod_openapi_1.z
151
226
  .object({
152
- id: zod_1.z.cuid2(),
153
- experienceLevel: zod_1.z.enum(Object.values(constants_1.EXPERIENCE_LEVELS)),
154
- overview: zod_1.z.string(),
155
- keyResponsibilities: zod_1.z.string(),
156
- requiredSkills: zod_1.z.array(zod_1.z.string()),
157
- employeeRequirements: zod_1.z.string().optional(),
158
- companyBenefits: zod_1.z.string().optional(),
159
- wagesMin: zod_1.z.number().optional().nullable(),
160
- wagesMax: zod_1.z.number().optional().nullable(),
161
- wagesCurrency: zod_1.z
227
+ id: zod_openapi_1.z.cuid2().openapi({ example: "ckj1a2b3c0000rol1" }),
228
+ experienceLevel: zod_openapi_1.z
229
+ .enum(Object.values(constants_1.EXPERIENCE_LEVELS))
230
+ .openapi({ example: "MID_LEVEL" }),
231
+ overview: zod_openapi_1.z
232
+ .string()
233
+ .openapi({ example: "Build cool features for our app." }),
234
+ keyResponsibilities: zod_openapi_1.z
235
+ .string()
236
+ .openapi({ example: "Write code, review PRs." }),
237
+ requiredSkills: zod_openapi_1.z
238
+ .array(zod_openapi_1.z.string())
239
+ .openapi({ example: ["JavaScript", "React"] }),
240
+ employeeRequirements: zod_openapi_1.z
241
+ .string()
242
+ .optional()
243
+ .openapi({ example: "Good communication skills." }),
244
+ companyBenefits: zod_openapi_1.z
245
+ .string()
246
+ .optional()
247
+ .openapi({ example: "Unlimited PTO." }),
248
+ wagesMin: zod_openapi_1.z.number().optional().nullable().openapi({ example: 60000 }),
249
+ wagesMax: zod_openapi_1.z.number().optional().nullable().openapi({ example: 90000 }),
250
+ wagesCurrency: zod_openapi_1.z
162
251
  .enum(Object.values(constants_1.WAGES_CURRENCY))
163
- .optional(),
164
- wagesType: zod_1.z
252
+ .optional()
253
+ .openapi({ example: "USD" }),
254
+ wagesType: zod_openapi_1.z
165
255
  .enum(Object.values(constants_1.WAGE_TYPES))
166
- .optional(),
256
+ .optional()
257
+ .openapi({ example: "YEARLY" }),
167
258
  })
168
259
  .refine(({ wagesMin, wagesMax }) => wagesMin == null || wagesMax == null || wagesMax > wagesMin, {
169
260
  message: "wagesMax must be greater than wagesMin",
170
261
  path: ["wagesMax"],
171
262
  });
172
- exports.CreateGigJobInputSchema = zod_1.z
263
+ exports.CreateGigJobInputSchema = zod_openapi_1.z
173
264
  .object({
174
- id: zod_1.z.cuid2(),
175
- overview: zod_1.z.string(),
176
- deliverables: zod_1.z.string(),
177
- employeeRequirements: zod_1.z.string().optional(),
178
- aboutCompany: zod_1.z.string().optional(),
179
- requiredSkills: zod_1.z.array(zod_1.z.string()),
180
- wagesMin: zod_1.z.number().optional().nullable(),
181
- wagesMax: zod_1.z.number().optional().nullable(),
182
- wagesCurrency: zod_1.z
265
+ id: zod_openapi_1.z.cuid2().openapi({ example: "ckj1a2b3c0000gig1" }),
266
+ overview: zod_openapi_1.z
267
+ .string()
268
+ .openapi({ example: "Need a logo designed for a new brand." }),
269
+ deliverables: zod_openapi_1.z
270
+ .string()
271
+ .openapi({ example: "Vector files, PNGs, and a brand guide." }),
272
+ employeeRequirements: zod_openapi_1.z
273
+ .string()
274
+ .optional()
275
+ .openapi({ example: "Portfolio required." }),
276
+ aboutCompany: zod_openapi_1.z
277
+ .string()
278
+ .optional()
279
+ .openapi({ example: "E-commerce store." }),
280
+ requiredSkills: zod_openapi_1.z
281
+ .array(zod_openapi_1.z.string())
282
+ .openapi({ example: ["Graphic Design", "Illustrator"] }),
283
+ wagesMin: zod_openapi_1.z.number().optional().nullable().openapi({ example: 100 }),
284
+ wagesMax: zod_openapi_1.z.number().optional().nullable().openapi({ example: 500 }),
285
+ wagesCurrency: zod_openapi_1.z
183
286
  .enum(Object.values(constants_1.WAGES_CURRENCY))
184
- .optional(),
185
- wagesType: zod_1.z
287
+ .optional()
288
+ .openapi({ example: "USD" }),
289
+ wagesType: zod_openapi_1.z
186
290
  .enum(Object.values(constants_1.WAGE_TYPES))
187
- .optional(),
291
+ .optional()
292
+ .openapi({ example: "FIXED" }),
188
293
  })
189
294
  .refine(({ wagesMin, wagesMax }) => wagesMin == null || wagesMax == null || wagesMax > wagesMin, {
190
295
  message: "wagesMax must be greater than wagesMin",
191
296
  path: ["wagesMax"],
192
297
  });
193
298
  exports.UpdateRoleJobInputSchema = exports.CreateRoleJobInputSchema.partial()
194
- .extend({ version: zod_1.z.int() })
299
+ .extend({ version: zod_openapi_1.z.int().openapi({ example: 2 }) })
195
300
  .required({ id: true });
196
301
  exports.UpdateGigJobInputSchema = exports.CreateGigJobInputSchema.partial()
197
- .extend({ version: zod_1.z.int() })
302
+ .extend({ version: zod_openapi_1.z.int().openapi({ example: 2 }) })
198
303
  .required({ id: true });
199
304
  exports.UpdateJobInputSchema = CreateJobInputBaseSchema.partial().extend({
200
- id: zod_1.z.cuid2(),
201
- status: zod_1.z
305
+ id: zod_openapi_1.z.cuid2().openapi({ example: "ckj1a2b3c0000job1" }),
306
+ status: zod_openapi_1.z
202
307
  .enum(Object.values(constants_1.JOB_STATUS))
203
- .optional(),
204
- version: zod_1.z.int(),
308
+ .optional()
309
+ .openapi({ example: "CLOSED" }),
310
+ version: zod_openapi_1.z.int().openapi({ example: 2 }),
205
311
  });
206
- exports.NormalizedJobSchema = zod_1.z.union([
312
+ exports.NormalizedJobSchema = zod_openapi_1.z.union([
207
313
  exports.JobWithGigDetailsEntitySchema,
208
314
  exports.JobEntitySchema,
209
315
  exports.JobWithRoleDetailsEntitySchema,
210
316
  ]);
211
- exports.GetCreatedJobsOutputSchema = zod_1.z.object({
212
- jobs: zod_1.z.array(exports.NormalizedJobSchema),
213
- noOfJobs: zod_1.z.number(),
214
- noOfActiveJobs: zod_1.z.number(),
215
- noOfArchivedJobs: zod_1.z.number(),
317
+ exports.GetCreatedJobsOutputSchema = zod_openapi_1.z.object({
318
+ jobs: zod_openapi_1.z.array(exports.NormalizedJobSchema).openapi({ example: [] }),
319
+ noOfJobs: zod_openapi_1.z.number().openapi({ example: 45 }),
320
+ noOfActiveJobs: zod_openapi_1.z.number().openapi({ example: 12 }),
321
+ noOfArchivedJobs: zod_openapi_1.z.number().openapi({ example: 33 }),
216
322
  });
217
- exports.GetJobsInputSchema = zod_1.z.object({
218
- q: zod_1.z.string().optional(),
219
- jobType: zod_1.z.enum(Object.values(constants_1.JOB_TYPE)).optional(),
220
- workMode: zod_1.z
323
+ exports.GetJobsInputSchema = zod_openapi_1.z.object({
324
+ q: zod_openapi_1.z.string().optional().openapi({ example: "frontend engineer" }),
325
+ jobType: zod_openapi_1.z
326
+ .enum(Object.values(constants_1.JOB_TYPE))
327
+ .optional()
328
+ .openapi({ example: "ROLE" }),
329
+ workMode: zod_openapi_1.z
221
330
  .string()
222
331
  .optional()
223
- .describe("Comma-separated values, e.g. 'Remote,Hybrid'"),
224
- location: zod_1.z
332
+ .describe("Comma-separated values, e.g. 'Remote,Hybrid'")
333
+ .openapi({ example: "Remote,Hybrid" }),
334
+ location: zod_openapi_1.z
225
335
  .enum(Object.values(constants_1.JOB_LOCATIONS))
226
- .optional(),
227
- employmentType: zod_1.z
336
+ .optional()
337
+ .openapi({ example: "LAGOS" }),
338
+ employmentType: zod_openapi_1.z
339
+ .string()
340
+ .optional()
341
+ .describe("Comma-separated values, e.g. 'Full Time,Freelance'")
342
+ .openapi({ example: "Full Time,Freelance" }),
343
+ gigType: zod_openapi_1.z
344
+ .enum(Object.values(constants_1.GIG_TYPE))
345
+ .optional()
346
+ .openapi({ example: "PROJECT_BASED" }),
347
+ requiredSkills: zod_openapi_1.z
228
348
  .string()
229
349
  .optional()
230
- .describe("Comma-separated values, e.g. 'Full Time,Freelance'"),
231
- gigType: zod_1.z.enum(Object.values(constants_1.GIG_TYPE)).optional(),
232
- requiredSkills: zod_1.z.string().optional().describe("Comma-separated skills"),
233
- status: zod_1.z.string().optional(),
234
- page: zod_1.z.coerce.number().min(1).default(1),
235
- limit: zod_1.z.coerce.number().min(1).max(100).default(20),
350
+ .describe("Comma-separated skills")
351
+ .openapi({ example: "React,TypeScript" }),
352
+ status: zod_openapi_1.z.string().optional().openapi({ example: "OPEN" }),
353
+ page: zod_openapi_1.z.coerce.number().min(1).default(1).openapi({ example: 1 }),
354
+ limit: zod_openapi_1.z.coerce.number().min(1).max(100).default(20).openapi({ example: 20 }),
355
+ });
356
+ exports.GetJobsOutputSchema = zod_openapi_1.z.object({
357
+ jobs: zod_openapi_1.z.array(exports.NormalizedJobSchema).openapi({ example: [] }),
358
+ total: zod_openapi_1.z.number().openapi({ example: 150 }),
359
+ page: zod_openapi_1.z.number().openapi({ example: 1 }),
360
+ limit: zod_openapi_1.z.number().openapi({ example: 20 }),
361
+ totalPages: zod_openapi_1.z.number().openapi({ example: 8 }),
362
+ hasNextPage: zod_openapi_1.z.boolean().openapi({ example: true }),
363
+ hasPrevPage: zod_openapi_1.z.boolean().openapi({ example: false }),
236
364
  });
237
- exports.GetJobsOutputSchema = zod_1.z.object({
238
- jobs: zod_1.z.array(exports.NormalizedJobSchema),
239
- total: zod_1.z.number(),
240
- page: zod_1.z.number(),
241
- limit: zod_1.z.number(),
242
- totalPages: zod_1.z.number(),
243
- hasNextPage: zod_1.z.boolean(),
244
- hasPrevPage: zod_1.z.boolean(),
365
+ exports.JobSearchDocumentSchema = zod_openapi_1.z.object({
366
+ id: zod_openapi_1.z.cuid2().openapi({ example: "ckj1a2b3c0000doc" }),
367
+ title: zod_openapi_1.z.string().openapi({ example: "Senior Frontend Engineer" }),
368
+ brandId: zod_openapi_1.z.cuid2().openapi({ example: "ckj1a2b3c0000brnd" }),
369
+ brandName: zod_openapi_1.z.string().openapi({ example: "Acme Corp" }),
370
+ brandImgUrl: zod_openapi_1.z.string().nullable().optional().openapi({ example: "https://example.com/logo.png" }),
371
+ jobType: zod_openapi_1.z.enum(["GIG", "ROLE"]).openapi({ example: "ROLE" }),
372
+ status: zod_openapi_1.z.string().optional().openapi({ example: "OPEN" }),
373
+ employmentType: zod_openapi_1.z.string().nullable().optional().openapi({ example: "FULL_TIME" }),
374
+ workMode: zod_openapi_1.z.string().openapi({ example: "REMOTE" }),
375
+ gigType: zod_openapi_1.z.string().nullable().optional().openapi({ example: "PROJECT_BASED" }),
376
+ location: zod_openapi_1.z.string().openapi({ example: "LAGOS" }),
377
+ overview: zod_openapi_1.z.string().openapi({ example: "Looking for a seasoned engineer to lead our product development." }),
378
+ requiredSkills: zod_openapi_1.z.array(zod_openapi_1.z.string()).openapi({ example: ["React", "TypeScript", "Next.js"] }),
379
+ wagesMin: zod_openapi_1.z.number().nullable().optional().openapi({ example: 80000 }),
380
+ wagesMax: zod_openapi_1.z.number().nullable().optional().openapi({ example: 120000 }),
381
+ wagesCurrency: zod_openapi_1.z.string().nullable().optional().openapi({ example: "USD" }),
382
+ wagesType: zod_openapi_1.z.string().nullable().optional().openapi({ example: "YEARLY" }),
383
+ createdAt: zod_openapi_1.z.string().openapi({ example: "2026-03-11T09:00:00.000Z" }),
384
+ updatedAt: zod_openapi_1.z.string().openapi({ example: "2026-03-11T09:00:00.000Z" }),
385
+ }).openapi({
386
+ title: "Job Search Document",
387
+ description: "Flattened schema used for indexing jobs in search engines.",
245
388
  });