@homespot-sdk/validators 0.0.5

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/src/index.ts ADDED
@@ -0,0 +1,364 @@
1
+ import { makeApi, Zodios, type ZodiosOptions } from '@zodios/core';
2
+ import { z } from 'zod';
3
+
4
+ const SocialMediaRequest = z
5
+ .object({
6
+ type: z.enum([
7
+ 'FACEBOOK',
8
+ 'YOUTUBE',
9
+ 'INSTAGRAM',
10
+ 'TIKTOK',
11
+ 'LINKEDIN',
12
+ ]),
13
+ url: z.string().optional(),
14
+ })
15
+ .strict()
16
+ .passthrough();
17
+ const SocialMediasRequest = z
18
+ .object({ data: z.array(SocialMediaRequest).min(1).max(5) })
19
+ .strict()
20
+ .passthrough();
21
+ const RolesRequest = z
22
+ .object({
23
+ name: z.string().min(1),
24
+ description: z.string().min(1),
25
+ authorities: z.array(
26
+ z.enum([
27
+ 'properties_read',
28
+ 'properties_write',
29
+ 'agents_read',
30
+ 'agents_write',
31
+ ])
32
+ ),
33
+ })
34
+ .strict()
35
+ .passthrough();
36
+ const PhotoRequest = z
37
+ .object({
38
+ photo: z.string().min(0).max(255),
39
+ type: z.enum(['JPEG', 'JPG', 'PNG', 'WEBP']),
40
+ width: z.number().int().gte(10).lte(11000),
41
+ height: z.number().int().gte(10).lte(11000).optional(),
42
+ })
43
+ .strict()
44
+ .passthrough();
45
+ const AddressRequest = z
46
+ .object({
47
+ placeId: z.string().min(0).max(255),
48
+ cadastralCode: z.string().min(0).max(255),
49
+ fullName: z.string().min(0).max(500),
50
+ lat: z.number().gte(-90).lte(90),
51
+ lng: z.number().gte(-180).lte(180),
52
+ country: z.string().min(0).max(100),
53
+ city: z.string().min(0).max(100),
54
+ street: z.string().min(0).max(255),
55
+ })
56
+ .strict()
57
+ .passthrough();
58
+ const CreateAgencyRequest = z
59
+ .object({
60
+ name: z.string().min(1),
61
+ slogan: z.string().min(1),
62
+ logoUrl: z.string().min(1),
63
+ coverImage: z.string().min(1),
64
+ email: z.string().min(1).email(),
65
+ seats: z.number().int(),
66
+ domain: z.string().min(1),
67
+ phone: z.string().min(1),
68
+ website: z.string().min(1),
69
+ address: AddressRequest,
70
+ yearSince: z.number().int(),
71
+ })
72
+ .strict()
73
+ .passthrough();
74
+ const InviteMemberRequest = z
75
+ .object({ emails: z.array(z.string()).min(1) })
76
+ .strict()
77
+ .passthrough();
78
+ const PresignedUrlResponse = z
79
+ .object({ originalName: z.string(), key: z.string(), url: z.string() })
80
+ .strict()
81
+ .passthrough();
82
+ const PresignedUrlsResponse = z
83
+ .object({ data: z.array(PresignedUrlResponse) })
84
+ .strict()
85
+ .passthrough();
86
+ const IdResponse = z.object({ id: z.string() }).strict().passthrough();
87
+ const UploadAcknowledgmentResponse = z
88
+ .object({ success: z.array(z.string()), fail: z.array(z.string()) })
89
+ .strict()
90
+ .passthrough();
91
+ const InvitationViewResponse = z
92
+ .object({
93
+ invitationId: z.string().uuid(),
94
+ email: z.string(),
95
+ status: z.enum([
96
+ 'PENDING',
97
+ 'ACCEPTED',
98
+ 'REJECTED',
99
+ 'CANCELLED',
100
+ 'EXPIRED',
101
+ ]),
102
+ createdAt: z.string().datetime({ offset: true }),
103
+ expiresAt: z.string().datetime({ offset: true }),
104
+ acceptedAt: z.string().datetime({ offset: true }).optional(),
105
+ acceptedBy: z.string().optional(),
106
+ })
107
+ .strict()
108
+ .passthrough();
109
+
110
+ export const schemas = {
111
+ SocialMediaRequest,
112
+ SocialMediasRequest,
113
+ RolesRequest,
114
+ PhotoRequest,
115
+ AddressRequest,
116
+ CreateAgencyRequest,
117
+ InviteMemberRequest,
118
+ PresignedUrlResponse,
119
+ PresignedUrlsResponse,
120
+ IdResponse,
121
+ UploadAcknowledgmentResponse,
122
+ InvitationViewResponse,
123
+ };
124
+
125
+ const endpoints = makeApi([
126
+ {
127
+ method: 'post',
128
+ path: '/agency',
129
+ alias: 'createAgency',
130
+ requestFormat: 'json',
131
+ parameters: [
132
+ {
133
+ name: 'body',
134
+ type: 'Body',
135
+ schema: CreateAgencyRequest,
136
+ },
137
+ ],
138
+ response: z.void(),
139
+ },
140
+ {
141
+ method: 'get',
142
+ path: '/agency/:agencyId',
143
+ alias: 'getAgency',
144
+ requestFormat: 'json',
145
+ parameters: [
146
+ {
147
+ name: 'agencyId',
148
+ type: 'Path',
149
+ schema: z.string().uuid(),
150
+ },
151
+ ],
152
+ response: z.void(),
153
+ },
154
+ {
155
+ method: 'post',
156
+ path: '/agency/:agencyId/activate',
157
+ alias: 'activateAgency',
158
+ requestFormat: 'json',
159
+ parameters: [
160
+ {
161
+ name: 'agencyId',
162
+ type: 'Path',
163
+ schema: z.string().uuid(),
164
+ },
165
+ ],
166
+ response: z.void(),
167
+ },
168
+ {
169
+ method: 'get',
170
+ path: '/agency/:agencyId/invitation',
171
+ alias: 'getAllInvitations',
172
+ requestFormat: 'json',
173
+ parameters: [
174
+ {
175
+ name: 'agencyId',
176
+ type: 'Path',
177
+ schema: z.string().uuid(),
178
+ },
179
+ ],
180
+ response: z.void(),
181
+ },
182
+ {
183
+ method: 'post',
184
+ path: '/agency/:agencyId/invitation',
185
+ alias: 'inviteMember',
186
+ requestFormat: 'json',
187
+ parameters: [
188
+ {
189
+ name: 'body',
190
+ type: 'Body',
191
+ schema: InviteMemberRequest,
192
+ },
193
+ {
194
+ name: 'agencyId',
195
+ type: 'Path',
196
+ schema: z.string().uuid(),
197
+ },
198
+ ],
199
+ response: z.void(),
200
+ },
201
+ {
202
+ method: 'post',
203
+ path: '/agency/:agencyId/invitation/:invitationId',
204
+ alias: 'inviteAccepted',
205
+ requestFormat: 'json',
206
+ parameters: [
207
+ {
208
+ name: 'agencyId',
209
+ type: 'Path',
210
+ schema: z.string().uuid(),
211
+ },
212
+ {
213
+ name: 'invitationId',
214
+ type: 'Path',
215
+ schema: z.string().uuid(),
216
+ },
217
+ ],
218
+ response: z.void(),
219
+ },
220
+ {
221
+ method: 'put',
222
+ path: '/agency/:agencyId/presigned-urls',
223
+ alias: 'generatePresignedUrl',
224
+ requestFormat: 'json',
225
+ parameters: [
226
+ {
227
+ name: 'body',
228
+ type: 'Body',
229
+ schema: PhotoRequest,
230
+ },
231
+ {
232
+ name: 'agencyId',
233
+ type: 'Path',
234
+ schema: z.string().uuid(),
235
+ },
236
+ ],
237
+ response: z.void(),
238
+ },
239
+ {
240
+ method: 'post',
241
+ path: '/agency/:agencyId/presigned-urls/notify/cover',
242
+ alias: 'notifyCoverUploadCompletion',
243
+ requestFormat: 'json',
244
+ parameters: [
245
+ {
246
+ name: 'body',
247
+ type: 'Body',
248
+ schema: PhotoRequest,
249
+ },
250
+ {
251
+ name: 'agencyId',
252
+ type: 'Path',
253
+ schema: z.string().uuid(),
254
+ },
255
+ ],
256
+ response: z.void(),
257
+ },
258
+ {
259
+ method: 'post',
260
+ path: '/agency/:agencyId/presigned-urls/notify/logo',
261
+ alias: 'notifyLogoUploadCompletion',
262
+ requestFormat: 'json',
263
+ parameters: [
264
+ {
265
+ name: 'body',
266
+ type: 'Body',
267
+ schema: PhotoRequest,
268
+ },
269
+ {
270
+ name: 'agencyId',
271
+ type: 'Path',
272
+ schema: z.string().uuid(),
273
+ },
274
+ ],
275
+ response: z.void(),
276
+ },
277
+ {
278
+ method: 'post',
279
+ path: '/agency/:agencyId/roles',
280
+ alias: 'addRole',
281
+ requestFormat: 'json',
282
+ parameters: [
283
+ {
284
+ name: 'body',
285
+ type: 'Body',
286
+ schema: RolesRequest,
287
+ },
288
+ {
289
+ name: 'agencyId',
290
+ type: 'Path',
291
+ schema: z.string().uuid(),
292
+ },
293
+ ],
294
+ response: z.void(),
295
+ },
296
+ {
297
+ method: 'put',
298
+ path: '/agency/:agencyId/roles/:roleId',
299
+ alias: 'updateRole',
300
+ requestFormat: 'json',
301
+ parameters: [
302
+ {
303
+ name: 'body',
304
+ type: 'Body',
305
+ schema: RolesRequest,
306
+ },
307
+ {
308
+ name: 'agencyId',
309
+ type: 'Path',
310
+ schema: z.string().uuid(),
311
+ },
312
+ {
313
+ name: 'roleId',
314
+ type: 'Path',
315
+ schema: z.number().int(),
316
+ },
317
+ ],
318
+ response: z.void(),
319
+ },
320
+ {
321
+ method: 'delete',
322
+ path: '/agency/:agencyId/roles/:roleId',
323
+ alias: 'removeRole',
324
+ requestFormat: 'json',
325
+ parameters: [
326
+ {
327
+ name: 'agencyId',
328
+ type: 'Path',
329
+ schema: z.string().uuid(),
330
+ },
331
+ {
332
+ name: 'roleId',
333
+ type: 'Path',
334
+ schema: z.number().int(),
335
+ },
336
+ ],
337
+ response: z.void(),
338
+ },
339
+ {
340
+ method: 'put',
341
+ path: '/agency/:agencyId/social-media',
342
+ alias: 'updateSocialUrls',
343
+ requestFormat: 'json',
344
+ parameters: [
345
+ {
346
+ name: 'body',
347
+ type: 'Body',
348
+ schema: SocialMediasRequest,
349
+ },
350
+ {
351
+ name: 'agencyId',
352
+ type: 'Path',
353
+ schema: z.string().uuid(),
354
+ },
355
+ ],
356
+ response: z.void(),
357
+ },
358
+ ]);
359
+
360
+ export const api = new Zodios(endpoints);
361
+
362
+ export function createApiClient(baseUrl: string, options?: ZodiosOptions) {
363
+ return new Zodios(baseUrl, endpoints, options);
364
+ }
package/tsconfig.json ADDED
@@ -0,0 +1,13 @@
1
+ {
2
+ "compilerOptions": {
3
+ "target": "ES2019",
4
+ "module": "CommonJS",
5
+ "declaration": true,
6
+ "outDir": "./dist",
7
+ "strict": false,
8
+ "noImplicitAny": false,
9
+ "skipLibCheck": true,
10
+ "esModuleInterop": true
11
+ },
12
+ "include": ["src"]
13
+ }