@kl1/contracts 1.0.0 → 1.0.2

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 (106) hide show
  1. package/dist/index.js +1493 -496
  2. package/dist/index.js.map +1 -1
  3. package/dist/index.mjs +1487 -492
  4. package/dist/index.mjs.map +1 -1
  5. package/dist/src/attribute/index.d.ts +527 -65
  6. package/dist/src/attribute/index.d.ts.map +1 -1
  7. package/dist/src/attribute/schema.d.ts +91 -11
  8. package/dist/src/attribute/schema.d.ts.map +1 -1
  9. package/dist/src/attribute/validation.d.ts +13 -16
  10. package/dist/src/attribute/validation.d.ts.map +1 -1
  11. package/dist/src/attribute-option/schema.d.ts +5 -5
  12. package/dist/src/auth/index.d.ts +64 -29
  13. package/dist/src/auth/index.d.ts.map +1 -1
  14. package/dist/src/base-contract.d.ts +6 -6
  15. package/dist/src/base-contract.d.ts.map +1 -1
  16. package/dist/src/call-log/schema.d.ts +5 -5
  17. package/dist/src/call-log/validation.d.ts +2 -2
  18. package/dist/src/category/index.d.ts +193 -109
  19. package/dist/src/category/index.d.ts.map +1 -1
  20. package/dist/src/category/schema.d.ts +24 -2
  21. package/dist/src/category/schema.d.ts.map +1 -1
  22. package/dist/src/category/validation.d.ts +4 -4
  23. package/dist/src/chat/index.d.ts +2111 -0
  24. package/dist/src/chat/index.d.ts.map +1 -0
  25. package/dist/src/chat/schema.d.ts +1742 -0
  26. package/dist/src/chat/schema.d.ts.map +1 -0
  27. package/dist/src/chat/validation.d.ts +355 -0
  28. package/dist/src/chat/validation.d.ts.map +1 -0
  29. package/dist/src/company/schema.d.ts +3 -3
  30. package/dist/src/contact/schema.d.ts +3 -3
  31. package/dist/src/contact-email/schema.d.ts +3 -3
  32. package/dist/src/contact-phone/schema.d.ts +3 -3
  33. package/dist/src/contract.d.ts +6117 -599
  34. package/dist/src/contract.d.ts.map +1 -1
  35. package/dist/src/custom-field/schema.d.ts +5 -5
  36. package/dist/src/custom-field-upload/schema.d.ts +3 -3
  37. package/dist/src/cx-log/index.d.ts +64 -62
  38. package/dist/src/cx-log/index.d.ts.map +1 -1
  39. package/dist/src/cx-log/schema.d.ts +7 -7
  40. package/dist/src/cx-log/validation.d.ts +47 -47
  41. package/dist/src/cx-log/validation.d.ts.map +1 -1
  42. package/dist/src/evaluate-form/schema.d.ts +3 -3
  43. package/dist/src/extension/index.d.ts +547 -0
  44. package/dist/src/extension/index.d.ts.map +1 -0
  45. package/dist/src/extension/schema.d.ts +9 -9
  46. package/dist/src/extension/validation.d.ts +49 -0
  47. package/dist/src/extension/validation.d.ts.map +1 -0
  48. package/dist/src/group/schema.d.ts +3 -3
  49. package/dist/src/index.d.ts +2 -0
  50. package/dist/src/index.d.ts.map +1 -1
  51. package/dist/src/line/index.d.ts +86 -0
  52. package/dist/src/line/index.d.ts.map +1 -0
  53. package/dist/src/line/schema.d.ts +12 -0
  54. package/dist/src/line/schema.d.ts.map +1 -0
  55. package/dist/src/line/validation.d.ts +18 -0
  56. package/dist/src/line/validation.d.ts.map +1 -0
  57. package/dist/src/log-form/schema.d.ts +3 -3
  58. package/dist/src/mail/account-contract.d.ts +119 -119
  59. package/dist/src/mail/account-contract.d.ts.map +1 -1
  60. package/dist/src/mail/mail-contract.d.ts +622 -623
  61. package/dist/src/mail/mail-contract.d.ts.map +1 -1
  62. package/dist/src/mail/mail-server.d.ts.map +1 -1
  63. package/dist/src/mail/message-contract.d.ts.map +1 -1
  64. package/dist/src/mail/room-contract.d.ts.map +1 -1
  65. package/dist/src/mail/schemas/account.schema.d.ts +129 -129
  66. package/dist/src/permission/index.d.ts +95 -0
  67. package/dist/src/permission/index.d.ts.map +1 -0
  68. package/dist/src/permission/schema.d.ts +3 -3
  69. package/dist/src/platform-contact/schema.d.ts +5 -5
  70. package/dist/src/role/index.d.ts +545 -0
  71. package/dist/src/role/index.d.ts.map +1 -0
  72. package/dist/src/role/schema.d.ts +8 -8
  73. package/dist/src/role/validation.d.ts +37 -0
  74. package/dist/src/role/validation.d.ts.map +1 -0
  75. package/dist/src/tag/index.d.ts +286 -0
  76. package/dist/src/tag/index.d.ts.map +1 -0
  77. package/dist/src/tag/schema.d.ts +4 -3
  78. package/dist/src/tag/schema.d.ts.map +1 -1
  79. package/dist/src/tag/validation.d.ts +29 -0
  80. package/dist/src/tag/validation.d.ts.map +1 -0
  81. package/dist/src/tag-group/schema.d.ts +3 -3
  82. package/dist/src/telephony-cdr/schema.d.ts +5 -5
  83. package/dist/src/telephony-extension/index.d.ts +65 -0
  84. package/dist/src/telephony-extension/index.d.ts.map +1 -0
  85. package/dist/src/telephony-extension/schema.d.ts +18 -0
  86. package/dist/src/telephony-extension/schema.d.ts.map +1 -0
  87. package/dist/src/telephony-live-queue-call/schema.d.ts +3 -3
  88. package/dist/src/telephony-queue-call-count/schema.d.ts +3 -3
  89. package/dist/src/ticket/schema.d.ts +5 -5
  90. package/dist/src/types.d.ts +5 -0
  91. package/dist/src/types.d.ts.map +1 -0
  92. package/dist/src/upload/schema.d.ts +3 -3
  93. package/dist/src/user/index.d.ts +1064 -0
  94. package/dist/src/user/index.d.ts.map +1 -0
  95. package/dist/src/user/schema.d.ts +15 -15
  96. package/dist/src/user/schema.d.ts.map +1 -1
  97. package/dist/src/user/validation.d.ts +49 -0
  98. package/dist/src/user/validation.d.ts.map +1 -0
  99. package/dist/src/widget/index.d.ts +817 -0
  100. package/dist/src/widget/index.d.ts.map +1 -0
  101. package/dist/src/widget/schema.d.ts +20 -9
  102. package/dist/src/widget/schema.d.ts.map +1 -1
  103. package/dist/src/widget/validation.d.ts +63 -0
  104. package/dist/src/widget/validation.d.ts.map +1 -0
  105. package/dist/utils.d.ts +2 -2
  106. package/package.json +2 -1
package/dist/index.mjs CHANGED
@@ -1,9 +1,9 @@
1
1
  // src/contract.ts
2
- import { initContract as initContract10 } from "@ts-rest/core";
2
+ import { initContract as initContract19 } from "@ts-rest/core";
3
3
 
4
- // src/auth/index.ts
4
+ // src/attribute/index.ts
5
5
  import { initContract } from "@ts-rest/core";
6
- import { z as z5 } from "zod";
6
+ import { z as z4 } from "zod";
7
7
 
8
8
  // src/base-contract.ts
9
9
  import z from "zod";
@@ -11,12 +11,12 @@ var DefaultHeaderSchema = z.object({
11
11
  // biome-ignore lint/style/useNamingConvention: <explanation>
12
12
  "x-tenant": z.string({ required_error: "Tenant id is required" }),
13
13
  authorization: z.string()
14
- });
14
+ }).optional().nullable();
15
15
  var DefaultEntitySchema = z.object({
16
16
  id: z.string().uuid(),
17
17
  createdAt: z.date(),
18
18
  updatedAt: z.date(),
19
- deletedAt: z.date()
19
+ deletedAt: z.date().nullable()
20
20
  });
21
21
  var DefaultQueryParamsSchema = z.object({
22
22
  page: z.number().positive().default(1),
@@ -32,46 +32,202 @@ var DefaultErrorResponseSchema = z.object({
32
32
  var DefaultNotFoundSchema = DefaultErrorResponseSchema;
33
33
  var DefaultUnprocessibleSchema = DefaultErrorResponseSchema;
34
34
  var DefaultUnauthorizedSchema = DefaultErrorResponseSchema;
35
- var defaultResponses = {
35
+ var DefaultResponses = {
36
36
  401: DefaultUnauthorizedSchema,
37
37
  404: DefaultNotFoundSchema,
38
38
  422: DefaultUnprocessibleSchema
39
39
  };
40
40
 
41
+ // src/attribute/schema.ts
42
+ import z2 from "zod";
43
+ var AttributeTypeSchema = z2.union([
44
+ z2.literal("text"),
45
+ z2.literal("textarea"),
46
+ z2.literal("date"),
47
+ z2.literal("select"),
48
+ z2.literal("link"),
49
+ z2.literal("attachment")
50
+ ]);
51
+ var AttributeOptionSchema = z2.object({
52
+ label: z2.string(),
53
+ value: z2.string(),
54
+ isDefault: z2.boolean(),
55
+ position: z2.number()
56
+ });
57
+ var AttributeGroupSchema = DefaultEntitySchema.extend({
58
+ systemName: z2.string(),
59
+ displayName: z2.string()
60
+ });
61
+ var AttributeSchema = DefaultEntitySchema.extend({
62
+ systemName: z2.string(),
63
+ type: AttributeTypeSchema,
64
+ position: z2.number(),
65
+ isDefault: z2.boolean(),
66
+ isArchived: z2.boolean(),
67
+ isRequired: z2.boolean(),
68
+ isUnique: z2.boolean(),
69
+ options: z2.array(AttributeOptionSchema),
70
+ group: AttributeGroupSchema
71
+ });
72
+
73
+ // src/attribute/validation.ts
74
+ import { z as z3 } from "zod";
75
+ var CreateAttributeSchema = z3.object({
76
+ name: z3.string(),
77
+ type: AttributeTypeSchema,
78
+ isRequired: z3.boolean(),
79
+ isVisible: z3.boolean(),
80
+ group: z3.string(),
81
+ options: z3.array(AttributeOptionSchema)
82
+ });
83
+ var GetAttributesSchema = z3.object({
84
+ group: z3.string(),
85
+ visibleOnly: z3.boolean().default(false)
86
+ });
87
+ var UpdateAttributeSchema = CreateAttributeSchema;
88
+ var UpdatePositionSchema = z3.object({
89
+ attributes: z3.array(
90
+ z3.object({
91
+ // To update the attribute position, the backend need the IDs and the positions.
92
+ attributeId: z3.string(),
93
+ position: z3.number()
94
+ })
95
+ )
96
+ });
97
+
98
+ // src/attribute/index.ts
99
+ var attributeContract = initContract().router(
100
+ {
101
+ createAttribute: {
102
+ method: "POST",
103
+ path: "",
104
+ body: CreateAttributeSchema,
105
+ responses: {
106
+ 201: DefaultSuccessResponseSchema.extend({
107
+ attribute: AttributeSchema
108
+ }),
109
+ 500: DefaultErrorResponseSchema
110
+ },
111
+ headers: DefaultHeaderSchema
112
+ },
113
+ getAttributes: {
114
+ method: "GET",
115
+ path: "",
116
+ query: GetAttributesSchema,
117
+ responses: {
118
+ 200: DefaultSuccessResponseSchema.extend({
119
+ attributes: z4.array(AttributeSchema)
120
+ }),
121
+ 500: DefaultErrorResponseSchema
122
+ },
123
+ headers: DefaultHeaderSchema
124
+ },
125
+ updateAttribute: {
126
+ method: "PATCH",
127
+ path: "/:id",
128
+ pathParams: z4.object({ id: z4.string() }),
129
+ body: UpdateAttributeSchema,
130
+ responses: {
131
+ 200: DefaultSuccessResponseSchema.extend({
132
+ attribute: AttributeSchema
133
+ }),
134
+ 500: DefaultErrorResponseSchema
135
+ },
136
+ headers: DefaultHeaderSchema
137
+ },
138
+ changeVisibility: {
139
+ method: "PATCH",
140
+ path: "/visibility/:id",
141
+ pathParams: z4.object({ id: z4.string() }),
142
+ body: z4.object({ isVisible: z4.boolean() }),
143
+ responses: {
144
+ 200: DefaultSuccessResponseSchema.extend({
145
+ message: z4.string().optional()
146
+ }),
147
+ 500: DefaultErrorResponseSchema
148
+ },
149
+ headers: DefaultHeaderSchema
150
+ },
151
+ changeRequired: {
152
+ method: "PATCH",
153
+ path: "/required/:id",
154
+ pathParams: z4.object({ id: z4.string() }),
155
+ body: z4.object({ isRequired: z4.boolean() }),
156
+ responses: {
157
+ 200: DefaultSuccessResponseSchema.extend({
158
+ message: z4.string().optional()
159
+ }),
160
+ 500: DefaultErrorResponseSchema
161
+ },
162
+ headers: DefaultHeaderSchema
163
+ },
164
+ updatePosition: {
165
+ method: "PATCH",
166
+ path: "/position",
167
+ body: UpdatePositionSchema,
168
+ responses: {
169
+ 200: DefaultSuccessResponseSchema.extend({
170
+ message: z4.string().optional()
171
+ }),
172
+ 500: DefaultErrorResponseSchema
173
+ },
174
+ headers: DefaultHeaderSchema
175
+ },
176
+ deleteAttribute: {
177
+ method: "DELETE",
178
+ path: "/:id",
179
+ pathParams: z4.object({ id: z4.string() }),
180
+ body: z4.any().optional(),
181
+ responses: {
182
+ 200: DefaultSuccessResponseSchema.extend({ message: z4.string() }),
183
+ 500: DefaultErrorResponseSchema
184
+ },
185
+ headers: DefaultHeaderSchema
186
+ }
187
+ },
188
+ {
189
+ pathPrefix: "attributes"
190
+ }
191
+ );
192
+
193
+ // src/auth/index.ts
194
+ import { initContract as initContract2 } from "@ts-rest/core";
195
+ import { z as z8 } from "zod";
196
+
41
197
  // src/user/schema.ts
42
- import z4 from "zod";
198
+ import z7 from "zod";
43
199
 
44
200
  // src/role/schema.ts
45
- import z3 from "zod";
201
+ import z6 from "zod";
46
202
 
47
203
  // src/permission/schema.ts
48
- import z2 from "zod";
204
+ import z5 from "zod";
49
205
  var PermissionSchema = DefaultEntitySchema.extend({
50
- systemName: z2.string(),
51
- displayName: z2.string(),
52
- description: z2.string().nullable()
206
+ systemName: z5.string(),
207
+ displayName: z5.string(),
208
+ description: z5.string().nullable()
53
209
  });
54
210
 
55
211
  // src/role/schema.ts
56
212
  var RoleSchema = DefaultEntitySchema.extend({
57
- systemName: z3.string(),
58
- displayName: z3.string(),
59
- description: z3.string().nullable(),
60
- permissions: z3.array(PermissionSchema)
213
+ systemName: z6.string(),
214
+ displayName: z6.string(),
215
+ description: z6.string().nullable(),
216
+ permissions: z6.array(PermissionSchema)
61
217
  });
62
218
 
63
219
  // src/user/schema.ts
64
220
  var UserSchema = DefaultEntitySchema.extend({
65
- name: z4.string(),
66
- email: z4.string().email(),
67
- address: z4.string().nullable(),
68
- phone: z4.string().nullable(),
69
- notificationCount: z4.number().nullable(),
70
- roles: z4.array(RoleSchema)
221
+ name: z7.string(),
222
+ email: z7.string().email(),
223
+ address: z7.string().nullable(),
224
+ phone: z7.string().nullable(),
225
+ notificationCount: z7.number().nullable(),
226
+ roles: z7.array(RoleSchema)
71
227
  });
72
228
 
73
229
  // src/auth/index.ts
74
- var authContract = initContract().router(
230
+ var authContract = initContract2().router(
75
231
  {
76
232
  refreshToken: {
77
233
  method: "POST",
@@ -79,8 +235,8 @@ var authContract = initContract().router(
79
235
  headers: DefaultHeaderSchema,
80
236
  responses: {
81
237
  200: DefaultSuccessResponseSchema.extend({
82
- accessToken: z5.string(),
83
- refreshToken: z5.string()
238
+ accessToken: z8.string(),
239
+ refreshToken: z8.string()
84
240
  }),
85
241
  401: DefaultUnauthorizedSchema,
86
242
  404: DefaultNotFoundSchema,
@@ -94,8 +250,8 @@ var authContract = initContract().router(
94
250
  path: "/exchange-token",
95
251
  responses: {
96
252
  200: DefaultSuccessResponseSchema.extend({
97
- accessToken: z5.string(),
98
- refreshToken: z5.string()
253
+ accessToken: z8.string(),
254
+ refreshToken: z8.string()
99
255
  }),
100
256
  401: DefaultUnauthorizedSchema,
101
257
  404: DefaultNotFoundSchema,
@@ -111,7 +267,7 @@ var authContract = initContract().router(
111
267
  headers: DefaultHeaderSchema,
112
268
  responses: {
113
269
  200: DefaultSuccessResponseSchema.extend({
114
- message: z5.string()
270
+ message: z8.string()
115
271
  }),
116
272
  401: DefaultUnauthorizedSchema,
117
273
  404: DefaultNotFoundSchema,
@@ -133,258 +289,664 @@ var authContract = initContract().router(
133
289
  422: DefaultUnprocessibleSchema
134
290
  },
135
291
  summary: "Get current user"
292
+ },
293
+ getAuthUserRole: {
294
+ method: "GET",
295
+ path: "/user/role",
296
+ headers: DefaultHeaderSchema,
297
+ responses: {
298
+ 200: z8.array(z8.string()),
299
+ 400: z8.object({
300
+ message: z8.string()
301
+ }),
302
+ 401: DefaultUnauthorizedSchema
303
+ },
304
+ summary: "Get role by auth user which mean current login user roles"
136
305
  }
137
306
  },
138
307
  { pathPrefix: "auth" }
139
308
  );
140
309
 
141
- // src/mail/mail-contract.ts
142
- import { initContract as initContract6 } from "@ts-rest/core";
310
+ // src/category/index.ts
311
+ import { initContract as initContract3 } from "@ts-rest/core";
312
+ import z12 from "zod";
143
313
 
144
- // src/mail/room-contract.ts
145
- import { initContract as initContract2 } from "@ts-rest/core";
146
- import z6 from "zod";
147
- var roomContract = initContract2().router(
314
+ // utils.ts
315
+ import { z as z9 } from "zod";
316
+ var PaginationSchema = z9.object({
317
+ page: z9.number().default(1),
318
+ pageSize: z9.number().default(10),
319
+ total: z9.number(),
320
+ lastPage: z9.number().optional().nullable()
321
+ });
322
+ var WithPagination = (dataSchema) => {
323
+ return PaginationSchema.extend({
324
+ data: z9.array(dataSchema)
325
+ });
326
+ };
327
+
328
+ // src/category/schema.ts
329
+ import { z as z10 } from "zod";
330
+ var CategoryLevelSchema = z10.union([
331
+ z10.literal(1),
332
+ z10.literal(2),
333
+ z10.literal(3)
334
+ ]);
335
+ var CategorySchema = DefaultEntitySchema.extend({
336
+ value: z10.string(),
337
+ level: CategoryLevelSchema,
338
+ parentId: z10.string().nullable(),
339
+ childCategoryList: z10.array(
340
+ z10.object({
341
+ id: z10.string(),
342
+ value: z10.string(),
343
+ level: CategoryLevelSchema,
344
+ parentId: z10.string().nullable(),
345
+ childCategoryList: z10.array(
346
+ z10.object({
347
+ id: z10.string(),
348
+ value: z10.string(),
349
+ level: CategoryLevelSchema,
350
+ parentId: z10.string().nullable(),
351
+ childCategoryList: z10.array(z10.any())
352
+ // This is an empty array.
353
+ })
354
+ )
355
+ })
356
+ )
357
+ });
358
+ var CategoryLevelObjectSchema = z10.object({
359
+ id: z10.string(),
360
+ name: z10.string(),
361
+ level: CategoryLevelSchema
362
+ });
363
+
364
+ // src/category/validation.ts
365
+ import { z as z11 } from "zod";
366
+ var CreateCategorySchema = z11.object({
367
+ value: z11.string(),
368
+ level: CategoryLevelSchema,
369
+ parentId: z11.string().nullable()
370
+ });
371
+ var UpdateCategorySchema = z11.object({ value: z11.string() });
372
+ var CreateCategoryLevelSchema = z11.object({
373
+ name: z11.string(),
374
+ level: CategoryLevelSchema
375
+ });
376
+ var UpdateCategoryLevelSchema = z11.object({
377
+ id: z11.string(),
378
+ name: z11.string(),
379
+ level: CategoryLevelSchema
380
+ });
381
+
382
+ // src/category/index.ts
383
+ var categoryContract = initContract3().router(
148
384
  {
149
- create: {
385
+ createCategory: {
150
386
  method: "POST",
151
- path: "/",
387
+ path: "",
388
+ headers: DefaultHeaderSchema,
389
+ body: CreateCategorySchema,
152
390
  responses: {
153
- 200: DefaultSuccessResponseSchema.extend({
154
- message: z6.string()
391
+ 201: DefaultSuccessResponseSchema.extend({
392
+ category: CategorySchema
155
393
  }),
156
- ...defaultResponses
157
- },
158
- body: null,
159
- summary: "Create a new room for new incoming mail"
394
+ 500: DefaultErrorResponseSchema
395
+ }
160
396
  },
161
- get: {
397
+ getCategories: {
162
398
  method: "GET",
163
- path: "/:id",
164
- pathParams: z6.object({
165
- id: z6.string()
166
- }),
167
- responses: {
168
- 200: DefaultSuccessResponseSchema.extend({
169
- message: z6.string()
170
- }),
171
- ...defaultResponses
172
- },
173
- summary: "Get a mail room by id"
174
- },
175
- update: {
176
- method: "PATCH",
177
- path: "/:id",
178
- pathParams: z6.object({
179
- id: z6.string()
180
- }),
399
+ path: "",
400
+ query: z12.object({
401
+ page: z12.coerce.number().optional(),
402
+ pageSize: z12.coerce.number().optional()
403
+ }).optional(),
404
+ headers: DefaultHeaderSchema,
181
405
  responses: {
182
- 200: DefaultSuccessResponseSchema.extend({
183
- message: z6.string()
184
- }),
185
- ...defaultResponses
186
- },
187
- body: null,
188
- summary: "Update a mail room by id"
406
+ 200: WithPagination(CategorySchema),
407
+ 500: DefaultErrorResponseSchema
408
+ }
189
409
  },
190
- delete: {
410
+ updateCategory: {
191
411
  method: "PATCH",
192
412
  path: "/:id",
193
- pathParams: z6.object({
194
- id: z6.string()
195
- }),
196
- responses: {
197
- 200: DefaultSuccessResponseSchema.extend({
198
- message: z6.string()
199
- }),
200
- ...defaultResponses
201
- },
202
- body: null,
203
- summary: "Delete a mail room by id"
204
- }
205
- },
206
- {
207
- pathPrefix: "/room"
208
- }
209
- );
210
-
211
- // src/mail/message-contract.ts
212
- import { initContract as initContract3 } from "@ts-rest/core";
213
- import z7 from "zod";
214
- var messageContract = initContract3().router(
215
- {
216
- create: {
217
- method: "POST",
218
- path: "/",
413
+ pathParams: z12.object({ id: z12.string() }),
414
+ headers: DefaultHeaderSchema,
415
+ body: UpdateCategorySchema,
219
416
  responses: {
220
- 200: DefaultSuccessResponseSchema.extend({
221
- message: z7.string()
222
- }),
223
- ...defaultResponses
224
- },
225
- body: null,
226
- summary: "Add a new message into a room"
417
+ 200: DefaultSuccessResponseSchema.extend({ category: CategorySchema }),
418
+ 500: DefaultErrorResponseSchema
419
+ }
227
420
  },
228
- get: {
229
- method: "GET",
421
+ deleteCategory: {
422
+ method: "DELETE",
230
423
  path: "/:id",
231
- pathParams: z7.object({
232
- id: z7.string()
233
- }),
424
+ pathParams: z12.object({ id: z12.string() }),
425
+ headers: DefaultHeaderSchema,
426
+ body: z12.any().optional(),
234
427
  responses: {
235
428
  200: DefaultSuccessResponseSchema.extend({
236
- message: z7.string()
429
+ message: z12.string().optional()
237
430
  }),
238
- ...defaultResponses
239
- },
240
- summary: "Get a message by id"
431
+ 500: DefaultErrorResponseSchema
432
+ }
241
433
  },
242
- update: {
243
- method: "PATCH",
244
- path: "/:id",
245
- pathParams: z7.object({
246
- id: z7.string()
247
- }),
434
+ createCategoryLevel: {
435
+ method: "POST",
436
+ path: "/level",
437
+ headers: DefaultHeaderSchema,
438
+ body: CreateCategoryLevelSchema,
248
439
  responses: {
249
440
  200: DefaultSuccessResponseSchema.extend({
250
- message: z7.string()
441
+ categoryLevel: CategoryLevelObjectSchema
251
442
  }),
252
- ...defaultResponses
253
- },
254
- body: null,
255
- summary: "Update a message by id"
443
+ 500: DefaultErrorResponseSchema
444
+ }
256
445
  },
257
- delete: {
446
+ updateCategoryLevel: {
258
447
  method: "PATCH",
259
- path: "/:id",
260
- pathParams: z7.object({
261
- id: z7.string()
262
- }),
448
+ path: "/level/:id",
449
+ pathParams: z12.object({ id: z12.string() }),
450
+ headers: DefaultHeaderSchema,
451
+ body: UpdateCategoryLevelSchema,
263
452
  responses: {
264
453
  200: DefaultSuccessResponseSchema.extend({
265
- message: z7.string()
454
+ categoryLevel: CategoryLevelObjectSchema
266
455
  }),
267
- ...defaultResponses
268
- },
269
- body: null,
270
- summary: "Delete a message by id"
456
+ 500: DefaultErrorResponseSchema
457
+ }
271
458
  }
272
459
  },
273
460
  {
274
- pathPrefix: "/message"
461
+ pathPrefix: "categories"
275
462
  }
276
463
  );
277
464
 
278
- // src/mail/account-contract.ts
465
+ // src/chat/index.ts
279
466
  import { initContract as initContract4 } from "@ts-rest/core";
280
- import z9 from "zod";
467
+ import z19 from "zod";
281
468
 
282
- // src/mail/schemas/account.schema.ts
283
- import z8 from "zod";
284
- var mailServerSchema = z8.object({
285
- id: z8.string(),
286
- created_at: z8.string(),
287
- updated_at: z8.string(),
288
- deletedAt: z8.string().nullable(),
289
- tenant_id: z8.string(),
290
- name: z8.string(),
291
- smtpHost: z8.string(),
292
- smtpPort: z8.string(),
293
- smtpTlsPort: z8.string(),
294
- useTlsForSmtp: z8.boolean(),
295
- imapHost: z8.string(),
296
- imapPort: z8.string(),
297
- imapTlsPort: z8.string(),
298
- useTlsForImap: z8.boolean()
299
- });
300
- var mailAccountSchema = z8.object({
301
- id: z8.string(),
302
- created_at: z8.string(),
303
- updated_at: z8.string(),
304
- deletedAt: z8.date().nullable(),
305
- tenant_id: z8.string(),
306
- name: z8.string(),
307
- address: z8.string(),
308
- accountId: z8.string(),
309
- mailServerId: z8.string(),
310
- mailServer: mailServerSchema,
311
- state: z8.union([
312
- z8.literal("init"),
313
- z8.literal("syncing"),
314
- z8.literal("connecting"),
315
- z8.literal("connected"),
316
- z8.literal("disconnected"),
317
- z8.literal("authenticationError"),
318
- z8.literal("connectError"),
319
- z8.literal("unset")
320
- ])
469
+ // src/chat/schema.ts
470
+ import z16 from "zod";
471
+
472
+ // src/contact/schema.ts
473
+ import z13 from "zod";
474
+ var ContactSchema = DefaultEntitySchema.extend({
475
+ name: z13.string(),
476
+ address: z13.string().nullable(),
477
+ channel: z13.string().nullable(),
478
+ notes: z13.string().nullable(),
479
+ contactNumber: z13.string().nullable(),
480
+ companyId: z13.string().nullable(),
481
+ contactProfile: z13.string().nullable(),
482
+ socialProfileUrl: z13.string().nullable()
321
483
  });
322
- var accountContractsSchemas = {
323
- create: {
324
- input: z8.object({
325
- address: z8.string().email("Email address must be valid email."),
326
- name: z8.string().min(1, "Account name cannot be empty."),
327
- password: z8.string().min(1, "Password cannot be empty."),
328
- mailServerId: z8.string().uuid("Invalid mail_server_id")
329
- })
330
- },
331
- getById: {
332
- input: z8.object({
333
- id: z8.string().uuid()
334
- }),
335
- output: mailAccountSchema
336
- },
337
- getAll: {
338
- output: z8.array(mailAccountSchema)
339
- },
340
- update: {
341
- input: mailAccountSchema,
342
- output: mailAccountSchema
343
- },
344
- disconnect: {
345
- input: z8.object({
346
- id: z8.string().uuid()
347
- }),
348
- output: mailAccountSchema
349
- },
350
- reconnect: {
351
- input: z8.object({
352
- id: z8.string()
353
- }),
354
- output: mailAccountSchema
355
- },
356
- delete: {
357
- input: z8.object({
358
- id: z8.string()
359
- }),
360
- output: mailAccountSchema
361
- }
362
- };
363
484
 
364
- // src/mail/account-contract.ts
365
- var accountContract = initContract4().router(
366
- {
367
- //#region ........register account
368
- create: {
369
- method: "POST",
370
- path: "",
371
- responses: {
372
- 201: DefaultSuccessResponseSchema.extend({
373
- // data: accountContractsSchemas.create.output,
374
- message: z9.string()
375
- }),
376
- 400: z9.object({
377
- message: z9.string()
378
- }),
379
- 409: z9.object({
380
- message: z9.string()
381
- }),
382
- 500: z9.object({
383
- message: z9.string()
384
- }),
385
- ...defaultResponses
485
+ // src/tag/schema.ts
486
+ import z14 from "zod";
487
+ var TagSchema = DefaultEntitySchema.extend({
488
+ name: z14.string()
489
+ });
490
+ var TagGroupSchema = z14.union([
491
+ z14.literal("general"),
492
+ z14.literal("contact")
493
+ ]);
494
+
495
+ // src/upload/schema.ts
496
+ import z15 from "zod";
497
+ var UploadSchema = DefaultEntitySchema.extend({
498
+ bucketName: z15.string(),
499
+ fileName: z15.string(),
500
+ fileSize: z15.number(),
501
+ fileKey: z15.string()
502
+ });
503
+
504
+ // src/chat/schema.ts
505
+ var ChannelTypeEnumSchema = z16.union([
506
+ z16.literal("messenger"),
507
+ z16.literal("line"),
508
+ z16.literal("viber"),
509
+ z16.literal("lazada"),
510
+ z16.literal("shopee"),
511
+ z16.literal("whatsapp"),
512
+ z16.literal("telegram"),
513
+ z16.literal("kakao")
514
+ ]);
515
+ var DirectionEnumSchema = z16.union([
516
+ z16.literal("incoming"),
517
+ z16.literal("outgoing")
518
+ ]);
519
+ var ChannelStatusEnumSchema = z16.union([
520
+ z16.literal(1),
521
+ // on
522
+ z16.literal(0)
523
+ // off
524
+ ]);
525
+ var MessageTypeEnumSchema = z16.union([
526
+ z16.literal("text"),
527
+ z16.literal("image"),
528
+ z16.literal("video"),
529
+ z16.literal("audio"),
530
+ z16.literal("file"),
531
+ z16.literal("fallback"),
532
+ z16.literal("location"),
533
+ z16.literal("attachment"),
534
+ z16.literal("assign"),
535
+ z16.literal("solve"),
536
+ z16.literal("reopen"),
537
+ z16.literal("open"),
538
+ z16.literal("sticker"),
539
+ z16.literal("closed"),
540
+ z16.literal("handed_over"),
541
+ z16.literal("updated"),
542
+ z16.literal("started")
543
+ ]);
544
+ var MessageLocaleEnumSchema = z16.union([
545
+ z16.literal("mm"),
546
+ z16.literal("en"),
547
+ z16.literal("th")
548
+ ]);
549
+ var ChannelMetadataSchema = z16.object({
550
+ id: z16.string(),
551
+ name: z16.string(),
552
+ accessToken: z16.string(),
553
+ additionalCredentials: z16.any()
554
+ });
555
+ var ChannelSchema = DefaultEntitySchema.extend({
556
+ name: z16.string(),
557
+ type: ChannelTypeEnumSchema,
558
+ metadata: ChannelMetadataSchema,
559
+ brandName: z16.string(),
560
+ platformId: z16.string().uuid(),
561
+ status: ChannelStatusEnumSchema,
562
+ isReloginRequired: z16.boolean(),
563
+ connectedUserName: z16.string(),
564
+ connectedUserId: z16.string(),
565
+ actor: UserSchema
566
+ }).partial().optional();
567
+ var PlatformContactMetadataSchema = z16.object({
568
+ id: z16.string(),
569
+ name: z16.string(),
570
+ additionalCredentials: z16.any()
571
+ });
572
+ var PlatformContactSchema = DefaultEntitySchema.extend({
573
+ channelId: z16.string().uuid(),
574
+ socialPlatformId: z16.string().uuid(),
575
+ platform: ChannelTypeEnumSchema,
576
+ metadata: PlatformContactMetadataSchema,
577
+ contact: ContactSchema
578
+ });
579
+ var RoomSchema = DefaultEntitySchema.extend({
580
+ lastMessage: z16.string(),
581
+ handleTime: z16.number(),
582
+ isSolved: z16.boolean(),
583
+ notes: z16.string(),
584
+ closeAt: z16.date(),
585
+ unreadCount: z16.number(),
586
+ firstResponseTime: z16.date(),
587
+ isLatest: z16.boolean(),
588
+ direction: DirectionEnumSchema,
589
+ platformContact: PlatformContactSchema,
590
+ actor: UserSchema,
591
+ assignee: UserSchema,
592
+ channel: ChannelSchema,
593
+ tags: z16.array(TagSchema)
594
+ });
595
+ var MessageSchema = DefaultEntitySchema.extend({
596
+ message: z16.string(),
597
+ direction: DirectionEnumSchema,
598
+ type: MessageTypeEnumSchema,
599
+ user: UserSchema,
600
+ readAt: z16.date(),
601
+ metadata: z16.any(),
602
+ platformId: z16.string(),
603
+ replyPlatformMessageId: z16.string(),
604
+ platformMessageId: z16.string(),
605
+ upload: UploadSchema,
606
+ template: z16.any(),
607
+ locale: MessageLocaleEnumSchema,
608
+ isSent: z16.boolean()
609
+ });
610
+ var UnreadCountsByAssigneeSchema = z16.object({
611
+ assigneeId: z16.string(),
612
+ totalUnreadCount: z16.number()
613
+ });
614
+
615
+ // src/chat/validation.ts
616
+ import z18 from "zod";
617
+
618
+ // src/custom-field/schema.ts
619
+ import z17 from "zod";
620
+ var CustomFieldSchema = DefaultEntitySchema.extend({
621
+ textValue: z17.string().nullable(),
622
+ booleanValue: z17.boolean().nullable(),
623
+ numberValue: z17.number().nullable(),
624
+ dateValue: z17.date().nullable(),
625
+ entityId: z17.string().uuid(),
626
+ attributeId: z17.string().uuid()
627
+ });
628
+
629
+ // src/chat/validation.ts
630
+ var ConnectChannelSchema = z18.object({
631
+ name: z18.string(),
632
+ type: ChannelTypeEnumSchema,
633
+ metadata: ChannelMetadataSchema,
634
+ brandName: z18.string(),
635
+ connectedUserName: z18.string(),
636
+ connectedUserId: z18.string(),
637
+ actor: UserSchema
638
+ }).partial().optional();
639
+ var GetRoomsSchema = DefaultQueryParamsSchema.extend({
640
+ contactTagIds: z18.string().array().nullable().default([]),
641
+ contactIds: z18.string().array().nullable().default([]),
642
+ agentIds: z18.string().array().nullable().default([]),
643
+ roomStatusTagIds: z18.string().array().nullable().default([]),
644
+ keyword: z18.string().nullable(),
645
+ company: z18.string().array().nullable().default([]),
646
+ name: z18.string().nullable(),
647
+ address: z18.string().nullable(),
648
+ contactGroups: z18.string().array().nullable().default([]),
649
+ selectedDate: z18.string().nullable(),
650
+ customFields: CustomFieldSchema,
651
+ tags: z18.string().array().nullable().default([]),
652
+ phone: z18.string().nullable(),
653
+ email: z18.string().nullable(),
654
+ notes: z18.string().nullable(),
655
+ tab: z18.string().nullable()
656
+ }).partial().optional();
657
+
658
+ // src/chat/index.ts
659
+ var chatContract = initContract4().router({
660
+ connectChannel: {
661
+ method: "POST",
662
+ path: "connect",
663
+ headers: DefaultHeaderSchema,
664
+ responses: {
665
+ 200: DefaultSuccessResponseSchema.extend({
666
+ channel: ChannelSchema
667
+ })
668
+ },
669
+ body: ConnectChannelSchema,
670
+ summary: "Connect message channel"
671
+ },
672
+ getRooms: {
673
+ method: "GET",
674
+ path: "/rooms",
675
+ responses: {
676
+ 200: DefaultSuccessResponseSchema.extend({
677
+ total: z19.number(),
678
+ page: z19.number(),
679
+ pageSize: z19.number(),
680
+ data: z19.array(RoomSchema),
681
+ unreadCountsByAssignee: z19.array(UnreadCountsByAssigneeSchema)
682
+ }),
683
+ 401: DefaultUnauthorizedSchema
684
+ },
685
+ headers: DefaultHeaderSchema,
686
+ query: GetRoomsSchema,
687
+ summary: "Get rooms"
688
+ }
689
+ });
690
+
691
+ // src/cx-log/index.ts
692
+ import { initContract as initContract5 } from "@ts-rest/core";
693
+ import z22 from "zod";
694
+
695
+ // src/cx-log/schema.ts
696
+ import z20 from "zod";
697
+ var CxLogSchema = DefaultEntitySchema.extend({
698
+ caseId: z20.number(),
699
+ entityId: z20.string().uuid(),
700
+ entityName: z20.string(),
701
+ contactId: z20.string().uuid().nullable(),
702
+ channel: z20.string().nullable(),
703
+ queueId: z20.string().uuid().nullable(),
704
+ agentId: z20.string().uuid().nullable(),
705
+ direction: z20.string().nullable(),
706
+ startedDate: z20.date().nullable(),
707
+ handledTime: z20.number().nullable(),
708
+ firstResponseTime: z20.number().nullable(),
709
+ disposition: z20.string().nullable()
710
+ });
711
+
712
+ // src/cx-log/validation.ts
713
+ import z21 from "zod";
714
+ var sentimentScoreSchema = z21.union([
715
+ z21.literal("positive"),
716
+ z21.literal("negative")
717
+ ]);
718
+ var CustomFieldQueryParamsSchema = z21.object({
719
+ attributeId: z21.string(),
720
+ value: z21.union([z21.string(), z21.array(z21.string())]),
721
+ type: z21.string().optional()
722
+ });
723
+ var GetAllCxLogQueryParamsSchema = DefaultQueryParamsSchema.extend({
724
+ contactId: z21.string().uuid(),
725
+ caseId: z21.string(),
726
+ channelIds: z21.array(z21.string().uuid()),
727
+ queueId: z21.array(z21.string()),
728
+ agentIds: z21.array(z21.string()),
729
+ direction: z21.array(z21.union([z21.literal("inbound"), z21.literal("outbound")])),
730
+ disposition: z21.array(z21.string()),
731
+ sentimentScore: z21.array(sentimentScoreSchema),
732
+ csatScore: z21.string(),
733
+ sla: z21.array(z21.union([z21.literal("meet"), z21.literal("unmeet")])),
734
+ tags: z21.array(z21.string()),
735
+ // General tags
736
+ // Default contact attributes
737
+ name: z21.string(),
738
+ contactLabels: z21.array(z21.string()),
739
+ email: z21.string(),
740
+ channel: z21.array(z21.string()),
741
+ phone: z21.string(),
742
+ notes: z21.string(),
743
+ address: z21.string(),
744
+ company: z21.array(z21.string()),
745
+ // Custom fields
746
+ customFields: z21.array(CustomFieldQueryParamsSchema),
747
+ // Date filter
748
+ selectedDate: z21.string()
749
+ }).partial().optional();
750
+
751
+ // src/cx-log/index.ts
752
+ var cxLogContract = initContract5().router({
753
+ findAll: {
754
+ method: "GET",
755
+ path: "/cx-logs",
756
+ headers: DefaultHeaderSchema,
757
+ responses: {
758
+ 200: DefaultSuccessResponseSchema.extend({
759
+ total: z22.number(),
760
+ page: z22.number(),
761
+ pageSize: z22.number(),
762
+ cxLogs: z22.array(CxLogSchema)
763
+ }),
764
+ 401: DefaultUnauthorizedSchema
765
+ },
766
+ query: GetAllCxLogQueryParamsSchema,
767
+ summary: "Get all cx-logs"
768
+ }
769
+ });
770
+
771
+ // src/line/index.ts
772
+ import { initContract as initContract6 } from "@ts-rest/core";
773
+ import z25 from "zod";
774
+
775
+ // src/line/schema.ts
776
+ import z23 from "zod";
777
+ var ConnectLineSchema = z23.object({
778
+ id: z23.string(),
779
+ accessToken: z23.string()
780
+ });
781
+
782
+ // src/line/validation.ts
783
+ import z24 from "zod";
784
+ var SendLineStickerSchema = z24.object({
785
+ userId: z24.string().uuid(),
786
+ packageId: z24.string(),
787
+ stickerId: z24.string(),
788
+ accessToken: z24.string()
789
+ });
790
+
791
+ // src/line/index.ts
792
+ var lineContract = initContract6().router({
793
+ sendSticker: {
794
+ method: "POST",
795
+ path: "sticker",
796
+ responses: {
797
+ 200: DefaultSuccessResponseSchema.extend({
798
+ data: z25.any()
799
+ }),
800
+ 500: DefaultErrorResponseSchema
801
+ },
802
+ body: SendLineStickerSchema,
803
+ summary: "Send sticker to LINE"
804
+ },
805
+ connect: {
806
+ method: "POST",
807
+ path: "connect",
808
+ responses: {
809
+ 200: DefaultSuccessResponseSchema.extend({
810
+ data: z25.any()
811
+ }),
812
+ 500: DefaultErrorResponseSchema
813
+ },
814
+ body: ConnectLineSchema,
815
+ summary: "Connect to LINE channel"
816
+ }
817
+ });
818
+
819
+ // src/mail/email-engine-webhooks-events.contract.ts
820
+ import { initContract as initContract7 } from "@ts-rest/core";
821
+ import z26 from "zod";
822
+ var emailEngineWebhooksEventsContract = initContract7().router({
823
+ handleWebhooksEvents: {
824
+ method: "POST",
825
+ path: "/email_engine/webhooks",
826
+ // we don't need to respone anything but added responses just for solving type error
827
+ responses: {
828
+ 200: DefaultSuccessResponseSchema.extend({
829
+ message: z26.string()
830
+ })
831
+ },
832
+ body: null,
833
+ summary: "Handle email engine webhooks events such as authenticationSuccess, messageNew"
834
+ }
835
+ });
836
+
837
+ // src/mail/mail-contract.ts
838
+ import { initContract as initContract12 } from "@ts-rest/core";
839
+
840
+ // src/mail/account-contract.ts
841
+ import { initContract as initContract8 } from "@ts-rest/core";
842
+ import z28 from "zod";
843
+
844
+ // src/mail/schemas/account.schema.ts
845
+ import z27 from "zod";
846
+ var MailServerSchema = z27.object({
847
+ id: z27.string(),
848
+ created_at: z27.string(),
849
+ updated_att: z27.string(),
850
+ deleted_at: z27.string().nullable(),
851
+ tenant_id: z27.string(),
852
+ name: z27.string(),
853
+ smtpHost: z27.string(),
854
+ smtpPort: z27.string(),
855
+ smtpTlsPort: z27.string(),
856
+ useTlsForSmtp: z27.boolean(),
857
+ imapHost: z27.string(),
858
+ imapPort: z27.string(),
859
+ imapTlsPort: z27.string(),
860
+ useTlsForImap: z27.boolean()
861
+ });
862
+ var MailAccountSchema = z27.object({
863
+ id: z27.string(),
864
+ created_at: z27.string(),
865
+ updated_at: z27.string(),
866
+ deleted_at: z27.date().nullable(),
867
+ tenant_id: z27.string(),
868
+ name: z27.string(),
869
+ address: z27.string(),
870
+ accountId: z27.string(),
871
+ mailServerId: z27.string(),
872
+ mailServer: MailServerSchema,
873
+ state: z27.union([
874
+ z27.literal("init"),
875
+ z27.literal("syncing"),
876
+ z27.literal("connecting"),
877
+ z27.literal("connected"),
878
+ z27.literal("disconnected"),
879
+ z27.literal("authenticationError"),
880
+ z27.literal("connectError"),
881
+ z27.literal("unset")
882
+ ])
883
+ });
884
+ var AccountContractsSchemas = {
885
+ create: {
886
+ input: z27.object({
887
+ address: z27.string().email("Email address must be valid email."),
888
+ name: z27.string().min(1, "Account name cannot be empty."),
889
+ password: z27.string().min(1, "Password cannot be empty."),
890
+ mailServerId: z27.string().uuid("Invalid mail_server_id")
891
+ })
892
+ },
893
+ getById: {
894
+ input: z27.object({
895
+ id: z27.string().uuid()
896
+ }),
897
+ output: MailAccountSchema
898
+ },
899
+ getAll: {
900
+ output: z27.array(MailAccountSchema)
901
+ },
902
+ update: {
903
+ input: MailAccountSchema,
904
+ output: MailAccountSchema
905
+ },
906
+ disconnect: {
907
+ input: z27.object({
908
+ id: z27.string().uuid()
909
+ }),
910
+ output: MailAccountSchema
911
+ },
912
+ reconnect: {
913
+ input: z27.object({
914
+ id: z27.string()
915
+ }),
916
+ output: MailAccountSchema
917
+ },
918
+ delete: {
919
+ input: z27.object({
920
+ id: z27.string()
921
+ }),
922
+ output: MailAccountSchema
923
+ }
924
+ };
925
+
926
+ // src/mail/account-contract.ts
927
+ var accountContract = initContract8().router(
928
+ {
929
+ //#region ........register account
930
+ create: {
931
+ method: "POST",
932
+ path: "",
933
+ responses: {
934
+ 201: DefaultSuccessResponseSchema.extend({
935
+ // data: AccountContractsSchemas.create.output,
936
+ message: z28.string()
937
+ }),
938
+ 400: z28.object({
939
+ message: z28.string()
940
+ }),
941
+ 409: z28.object({
942
+ message: z28.string()
943
+ }),
944
+ 500: z28.object({
945
+ message: z28.string()
946
+ }),
947
+ ...DefaultResponses
386
948
  },
387
- body: accountContractsSchemas.create.input,
949
+ body: AccountContractsSchemas.create.input,
388
950
  summary: "Register a new mail account"
389
951
  },
390
952
  //#endregion register account
@@ -392,12 +954,12 @@ var accountContract = initContract4().router(
392
954
  getById: {
393
955
  method: "GET",
394
956
  path: "/:id",
395
- pathParams: accountContractsSchemas.getById.input,
957
+ pathParams: AccountContractsSchemas.getById.input,
396
958
  responses: {
397
959
  200: DefaultSuccessResponseSchema.extend({
398
- data: accountContractsSchemas.getById.output
960
+ data: AccountContractsSchemas.getById.output
399
961
  }),
400
- ...defaultResponses
962
+ ...DefaultResponses
401
963
  },
402
964
  summary: "Get a account by id"
403
965
  },
@@ -409,10 +971,10 @@ var accountContract = initContract4().router(
409
971
  path: "",
410
972
  responses: {
411
973
  200: DefaultSuccessResponseSchema.extend({
412
- data: z9.any()
413
- // data: accountContractsSchemas.getAll.output,
974
+ data: z28.any()
975
+ // data: AccountContractsSchemas.getAll.output,
414
976
  }),
415
- ...defaultResponses
977
+ ...DefaultResponses
416
978
  },
417
979
  summary: "Get al accounts"
418
980
  },
@@ -421,16 +983,16 @@ var accountContract = initContract4().router(
421
983
  update: {
422
984
  method: "PATCH",
423
985
  path: "/:id",
424
- pathParams: z9.object({
425
- id: z9.string().uuid()
986
+ pathParams: z28.object({
987
+ id: z28.string().uuid()
426
988
  }),
427
989
  responses: {
428
990
  201: DefaultSuccessResponseSchema.extend({
429
- data: accountContractsSchemas.update.output
991
+ data: AccountContractsSchemas.update.output
430
992
  }),
431
- ...defaultResponses
993
+ ...DefaultResponses
432
994
  },
433
- body: accountContractsSchemas.update.input.partial(),
995
+ body: AccountContractsSchemas.update.input.partial(),
434
996
  summary: "Update a account by id"
435
997
  },
436
998
  //#endregion update account
@@ -438,12 +1000,12 @@ var accountContract = initContract4().router(
438
1000
  disconnect: {
439
1001
  method: "PATCH",
440
1002
  path: "/:id/disconnect",
441
- pathParams: accountContractsSchemas.disconnect.input,
1003
+ pathParams: AccountContractsSchemas.disconnect.input,
442
1004
  responses: {
443
1005
  201: DefaultSuccessResponseSchema.extend({
444
- data: accountContractsSchemas.disconnect.output
1006
+ data: AccountContractsSchemas.disconnect.output
445
1007
  }),
446
- ...defaultResponses
1008
+ ...DefaultResponses
447
1009
  },
448
1010
  body: null,
449
1011
  summary: "Disconnect an account"
@@ -453,12 +1015,12 @@ var accountContract = initContract4().router(
453
1015
  reconnect: {
454
1016
  method: "PATCH",
455
1017
  path: "/:id/reconnect",
456
- pathParams: accountContractsSchemas.reconnect.input,
1018
+ pathParams: AccountContractsSchemas.reconnect.input,
457
1019
  responses: {
458
1020
  201: DefaultSuccessResponseSchema.extend({
459
- data: accountContractsSchemas.reconnect.output
1021
+ data: AccountContractsSchemas.reconnect.output
460
1022
  }),
461
- ...defaultResponses
1023
+ ...DefaultResponses
462
1024
  },
463
1025
  body: null,
464
1026
  summary: "Reconnect a disconncted account"
@@ -468,12 +1030,12 @@ var accountContract = initContract4().router(
468
1030
  delete: {
469
1031
  method: "DELETE",
470
1032
  path: "/:id",
471
- pathParams: accountContractsSchemas.delete.input,
1033
+ pathParams: AccountContractsSchemas.delete.input,
472
1034
  responses: {
473
1035
  200: DefaultSuccessResponseSchema.extend({
474
- message: z9.string()
1036
+ message: z28.string()
475
1037
  }),
476
- ...defaultResponses
1038
+ ...DefaultResponses
477
1039
  },
478
1040
  body: null,
479
1041
  summary: "Delete an account by id"
@@ -487,18 +1049,18 @@ var accountContract = initContract4().router(
487
1049
  );
488
1050
 
489
1051
  // src/mail/mail-server.ts
490
- import { initContract as initContract5 } from "@ts-rest/core";
491
- import z10 from "zod";
492
- var serverContract = initContract5().router(
1052
+ import { initContract as initContract9 } from "@ts-rest/core";
1053
+ import z29 from "zod";
1054
+ var serverContract = initContract9().router(
493
1055
  {
494
1056
  create: {
495
1057
  method: "POST",
496
1058
  path: "/",
497
1059
  responses: {
498
1060
  200: DefaultSuccessResponseSchema.extend({
499
- message: z10.string()
1061
+ message: z29.string()
500
1062
  }),
501
- ...defaultResponses
1063
+ ...DefaultResponses
502
1064
  },
503
1065
  body: null,
504
1066
  summary: "Register a new mail server"
@@ -506,28 +1068,28 @@ var serverContract = initContract5().router(
506
1068
  get: {
507
1069
  method: "GET",
508
1070
  path: "/:id",
509
- pathParams: z10.object({
510
- id: z10.string()
1071
+ pathParams: z29.object({
1072
+ id: z29.string()
511
1073
  }),
512
1074
  responses: {
513
1075
  200: DefaultSuccessResponseSchema.extend({
514
- message: z10.string()
1076
+ message: z29.string()
515
1077
  }),
516
- ...defaultResponses
1078
+ ...DefaultResponses
517
1079
  },
518
1080
  summary: "Get a mail server by id"
519
1081
  },
520
1082
  update: {
521
1083
  method: "PATCH",
522
1084
  path: "/:id",
523
- pathParams: z10.object({
524
- id: z10.string()
1085
+ pathParams: z29.object({
1086
+ id: z29.string()
525
1087
  }),
526
1088
  responses: {
527
1089
  200: DefaultSuccessResponseSchema.extend({
528
- message: z10.string()
1090
+ message: z29.string()
529
1091
  }),
530
- ...defaultResponses
1092
+ ...DefaultResponses
531
1093
  },
532
1094
  body: null,
533
1095
  summary: "Update a mail server by id"
@@ -535,14 +1097,14 @@ var serverContract = initContract5().router(
535
1097
  delete: {
536
1098
  method: "PATCH",
537
1099
  path: "/:id",
538
- pathParams: z10.object({
539
- id: z10.string()
1100
+ pathParams: z29.object({
1101
+ id: z29.string()
540
1102
  }),
541
1103
  responses: {
542
1104
  200: DefaultSuccessResponseSchema.extend({
543
- message: z10.string()
1105
+ message: z29.string()
544
1106
  }),
545
- ...defaultResponses
1107
+ ...DefaultResponses
546
1108
  },
547
1109
  body: null,
548
1110
  summary: "Delete a mail server by id"
@@ -553,265 +1115,698 @@ var serverContract = initContract5().router(
553
1115
  }
554
1116
  );
555
1117
 
556
- // src/mail/mail-contract.ts
557
- var mailContract = initContract6().router({
558
- room: roomContract,
559
- message: messageContract,
560
- account: accountContract,
561
- server: serverContract
562
- });
563
-
564
- // src/cx-log/index.ts
565
- import { initContract as initContract7 } from "@ts-rest/core";
566
- import z13 from "zod";
567
-
568
- // src/cx-log/schema.ts
569
- import z11 from "zod";
570
- var CxLogSchema = DefaultEntitySchema.extend({
571
- caseId: z11.number(),
572
- entityId: z11.string().uuid(),
573
- entityName: z11.string(),
574
- contactId: z11.string().uuid().nullable(),
575
- channel: z11.string().nullable(),
576
- queueId: z11.string().uuid().nullable(),
577
- agentId: z11.string().uuid().nullable(),
578
- direction: z11.string().nullable(),
579
- startedDate: z11.date().nullable(),
580
- handledTime: z11.number().nullable(),
581
- firstResponseTime: z11.number().nullable(),
582
- disposition: z11.string().nullable()
583
- });
584
-
585
- // src/cx-log/validation.ts
586
- import z12 from "zod";
587
- var CustomFieldQueryParamsSchema = z12.object({
588
- attributeId: z12.string(),
589
- value: z12.string().or(z12.array(z12.string())),
590
- type: z12.string()
591
- });
592
- var GetAllCxLogQueryParamsSchema = DefaultQueryParamsSchema.extend({
593
- contactId: z12.string().uuid().optional(),
594
- channelIds: z12.string().uuid().optional(),
595
- queueIds: z12.string().uuid().optional(),
596
- direction: z12.enum(["inbound", "outbound"]).array().optional(),
597
- sentimentScore: z12.enum(["positive", "negative"]).array().optional(),
598
- csatScore: z12.string().optional(),
599
- sla: z12.enum(["meet", "unmeet"]).array().optional(),
600
- caseId: z12.string().optional(),
601
- name: z12.string().optional(),
602
- email: z12.string().optional(),
603
- phone: z12.string().optional(),
604
- address: z12.string().optional(),
605
- company: z12.string().optional(),
606
- agentIds: z12.string().array().optional(),
607
- channel: z12.string().array().optional(),
608
- disposition: z12.string().array().optional(),
609
- notes: z12.string().optional(),
610
- contactLabels: z12.string().array().optional(),
611
- tags: z12.string().array().optional(),
612
- selectedDate: z12.string().optional(),
613
- customFields: z12.array(CustomFieldQueryParamsSchema).optional()
614
- });
615
-
616
- // src/cx-log/index.ts
617
- var cxLogContract = initContract7().router({
618
- findAll: {
619
- method: "GET",
620
- path: "/cx-logs",
621
- headers: DefaultHeaderSchema,
622
- responses: {
623
- 200: DefaultSuccessResponseSchema.extend({
624
- total: z13.number(),
625
- page: z13.number(),
626
- pageSize: z13.number(),
627
- cxLogs: z13.array(CxLogSchema)
628
- }),
629
- 401: DefaultUnauthorizedSchema
630
- },
631
- query: GetAllCxLogQueryParamsSchema,
632
- summary: "Get all cx-logs"
633
- }
634
- });
635
-
636
- // src/mail/email-engine-webhooks-events.contract.ts
637
- import { initContract as initContract8 } from "@ts-rest/core";
638
- import z14 from "zod";
639
- var emailEngineWebhooksEventsContract = initContract8().router({
640
- handleWebhooksEvents: {
641
- method: "POST",
642
- path: "/email_engine/webhooks",
643
- // we don't need to respone anything but added responses just for solving type error
644
- responses: {
645
- 200: DefaultSuccessResponseSchema.extend({
646
- message: z14.string()
647
- })
648
- },
649
- body: null,
650
- summary: "Handle email engine webhooks events such as authenticationSuccess, messageNew"
651
- }
652
- });
653
-
654
- // src/category/index.ts
655
- import { initContract as initContract9 } from "@ts-rest/core";
656
- import z18 from "zod";
657
-
658
- // utils.ts
659
- import { z as z15 } from "zod";
660
- var paginationSchema = z15.object({
661
- page: z15.number().default(1),
662
- pageSize: z15.number().default(10),
663
- total: z15.number(),
664
- lastPage: z15.number().optional().nullable()
665
- });
666
- var withPagination = (dataSchema) => {
667
- return paginationSchema.extend({
668
- data: z15.array(dataSchema)
669
- });
670
- };
671
-
672
- // src/category/schema.ts
673
- import { z as z16 } from "zod";
674
- var categoryLevelSchema = z16.union([
675
- z16.literal(1),
676
- z16.literal(2),
677
- z16.literal(3)
678
- ]);
679
- var categorySchema = z16.object({
680
- id: z16.string(),
681
- value: z16.string(),
682
- level: categoryLevelSchema,
683
- parentId: z16.string().nullable(),
684
- childCategoryList: z16.array(
685
- z16.object({
686
- id: z16.string(),
687
- value: z16.string(),
688
- level: categoryLevelSchema,
689
- parentId: z16.string().nullable(),
690
- childCategoryList: z16.array(
691
- z16.object({
692
- id: z16.string(),
693
- value: z16.string(),
694
- level: categoryLevelSchema,
695
- parentId: z16.string().nullable(),
696
- childCategoryList: z16.array(z16.any())
697
- // This is an empty array.
698
- })
699
- )
700
- })
701
- )
702
- });
703
-
704
- // src/category/validation.ts
705
- import { z as z17 } from "zod";
706
- var createCategorySchema = z17.object({
707
- value: z17.string(),
708
- level: categoryLevelSchema,
709
- parentId: z17.string().nullable()
710
- });
711
- var updateCategorySchema = z17.object({ value: z17.string() });
712
- var createCategoryLevelSchema = z17.object({
713
- name: z17.string(),
714
- level: categoryLevelSchema
715
- });
716
- var updateCategoryLevelSchema = z17.object({
717
- id: z17.string(),
718
- name: z17.string(),
719
- level: categoryLevelSchema
720
- });
721
-
722
- // src/category/index.ts
723
- var categoryContract = initContract9().router(
1118
+ // src/mail/message-contract.ts
1119
+ import { initContract as initContract10 } from "@ts-rest/core";
1120
+ import z30 from "zod";
1121
+ var messageContract = initContract10().router(
724
1122
  {
725
- createCategory: {
1123
+ create: {
726
1124
  method: "POST",
727
- path: "",
728
- headers: DefaultHeaderSchema,
729
- body: createCategorySchema,
1125
+ path: "/",
730
1126
  responses: {
731
- 201: DefaultSuccessResponseSchema.extend({
732
- category: categorySchema
1127
+ 200: DefaultSuccessResponseSchema.extend({
1128
+ message: z30.string()
733
1129
  }),
734
- 500: DefaultErrorResponseSchema
735
- }
1130
+ ...DefaultResponses
1131
+ },
1132
+ body: null,
1133
+ summary: "Add a new message into a room"
736
1134
  },
737
- getCategories: {
1135
+ get: {
738
1136
  method: "GET",
739
- path: "",
740
- query: z18.object({
741
- page: z18.coerce.number().optional(),
742
- pageSize: z18.coerce.number().optional()
743
- }).optional(),
744
- headers: DefaultHeaderSchema,
1137
+ path: "/:id",
1138
+ pathParams: z30.object({
1139
+ id: z30.string()
1140
+ }),
745
1141
  responses: {
746
- 200: withPagination(categorySchema),
747
- 500: DefaultErrorResponseSchema
748
- }
1142
+ 200: DefaultSuccessResponseSchema.extend({
1143
+ message: z30.string()
1144
+ }),
1145
+ ...DefaultResponses
1146
+ },
1147
+ summary: "Get a message by id"
749
1148
  },
750
- updateCategory: {
1149
+ update: {
751
1150
  method: "PATCH",
752
1151
  path: "/:id",
753
- pathParams: z18.object({ id: z18.string() }),
754
- headers: DefaultHeaderSchema.extend({
755
- category: categorySchema
1152
+ pathParams: z30.object({
1153
+ id: z30.string()
756
1154
  }),
757
- body: updateCategorySchema,
758
1155
  responses: {
759
- 200: DefaultSuccessResponseSchema,
760
- 500: DefaultErrorResponseSchema
761
- }
1156
+ 200: DefaultSuccessResponseSchema.extend({
1157
+ message: z30.string()
1158
+ }),
1159
+ ...DefaultResponses
1160
+ },
1161
+ body: null,
1162
+ summary: "Update a message by id"
762
1163
  },
763
- deleteCategory: {
1164
+ delete: {
1165
+ method: "PATCH",
1166
+ path: "/:id",
1167
+ pathParams: z30.object({
1168
+ id: z30.string()
1169
+ }),
1170
+ responses: {
1171
+ 200: DefaultSuccessResponseSchema.extend({
1172
+ message: z30.string()
1173
+ }),
1174
+ ...DefaultResponses
1175
+ },
1176
+ body: null,
1177
+ summary: "Delete a message by id"
1178
+ }
1179
+ },
1180
+ {
1181
+ pathPrefix: "/message"
1182
+ }
1183
+ );
1184
+
1185
+ // src/mail/room-contract.ts
1186
+ import { initContract as initContract11 } from "@ts-rest/core";
1187
+ import z31 from "zod";
1188
+ var roomContract = initContract11().router(
1189
+ {
1190
+ create: {
1191
+ method: "POST",
1192
+ path: "/",
1193
+ responses: {
1194
+ 200: DefaultSuccessResponseSchema.extend({
1195
+ message: z31.string()
1196
+ }),
1197
+ ...DefaultResponses
1198
+ },
1199
+ body: null,
1200
+ summary: "Create a new room for new incoming mail"
1201
+ },
1202
+ get: {
1203
+ method: "GET",
1204
+ path: "/:id",
1205
+ pathParams: z31.object({
1206
+ id: z31.string()
1207
+ }),
1208
+ responses: {
1209
+ 200: DefaultSuccessResponseSchema.extend({
1210
+ message: z31.string()
1211
+ }),
1212
+ ...DefaultResponses
1213
+ },
1214
+ summary: "Get a mail room by id"
1215
+ },
1216
+ update: {
1217
+ method: "PATCH",
1218
+ path: "/:id",
1219
+ pathParams: z31.object({
1220
+ id: z31.string()
1221
+ }),
1222
+ responses: {
1223
+ 200: DefaultSuccessResponseSchema.extend({
1224
+ message: z31.string()
1225
+ }),
1226
+ ...DefaultResponses
1227
+ },
1228
+ body: null,
1229
+ summary: "Update a mail room by id"
1230
+ },
1231
+ delete: {
1232
+ method: "PATCH",
1233
+ path: "/:id",
1234
+ pathParams: z31.object({
1235
+ id: z31.string()
1236
+ }),
1237
+ responses: {
1238
+ 200: DefaultSuccessResponseSchema.extend({
1239
+ message: z31.string()
1240
+ }),
1241
+ ...DefaultResponses
1242
+ },
1243
+ body: null,
1244
+ summary: "Delete a mail room by id"
1245
+ }
1246
+ },
1247
+ {
1248
+ pathPrefix: "/room"
1249
+ }
1250
+ );
1251
+
1252
+ // src/mail/mail-contract.ts
1253
+ var mailContract = initContract12().router({
1254
+ room: roomContract,
1255
+ message: messageContract,
1256
+ account: accountContract,
1257
+ server: serverContract
1258
+ });
1259
+
1260
+ // src/tag/index.ts
1261
+ import { initContract as initContract13 } from "@ts-rest/core";
1262
+ import z33 from "zod";
1263
+
1264
+ // src/tag/validation.ts
1265
+ import { z as z32 } from "zod";
1266
+ var CreateTagSchema = z32.object({
1267
+ name: z32.string(),
1268
+ group: TagGroupSchema
1269
+ });
1270
+ var GetTagsSchema = z32.object({
1271
+ group: TagGroupSchema.default("general"),
1272
+ keyword: z32.string()
1273
+ }).partial().optional();
1274
+ var UpdateTagSchema = z32.object({ name: z32.string() });
1275
+
1276
+ // src/tag/index.ts
1277
+ var tagContract = initContract13().router(
1278
+ {
1279
+ createTag: {
1280
+ method: "POST",
1281
+ path: "",
1282
+ body: CreateTagSchema,
1283
+ responses: {
1284
+ 201: DefaultSuccessResponseSchema.extend({
1285
+ tag: TagSchema
1286
+ }),
1287
+ 500: DefaultErrorResponseSchema
1288
+ },
1289
+ headers: DefaultHeaderSchema
1290
+ },
1291
+ getTags: {
1292
+ method: "GET",
1293
+ path: "",
1294
+ query: GetTagsSchema,
1295
+ responses: {
1296
+ 200: DefaultSuccessResponseSchema.extend({
1297
+ tags: z33.array(TagSchema)
1298
+ }),
1299
+ 500: DefaultErrorResponseSchema
1300
+ },
1301
+ headers: DefaultHeaderSchema
1302
+ },
1303
+ updateTag: {
1304
+ method: "PATCH",
1305
+ path: "/:id",
1306
+ pathParams: z33.object({ id: z33.string() }),
1307
+ body: UpdateTagSchema,
1308
+ responses: {
1309
+ 200: DefaultSuccessResponseSchema.extend({
1310
+ tag: TagSchema
1311
+ }),
1312
+ 500: DefaultErrorResponseSchema
1313
+ },
1314
+ headers: DefaultHeaderSchema
1315
+ },
1316
+ deleteTag: {
764
1317
  method: "DELETE",
765
1318
  path: "/:id",
766
- pathParams: z18.object({ id: z18.string() }),
1319
+ pathParams: z33.object({ id: z33.string() }),
1320
+ body: z33.any().optional(),
1321
+ // We don't need the body.
1322
+ responses: {
1323
+ 200: DefaultSuccessResponseSchema.extend({ message: z33.string() }),
1324
+ 500: DefaultErrorResponseSchema
1325
+ },
1326
+ headers: DefaultHeaderSchema
1327
+ }
1328
+ },
1329
+ {
1330
+ pathPrefix: "tags"
1331
+ }
1332
+ );
1333
+
1334
+ // src/extension/index.ts
1335
+ import { initContract as initContract14 } from "@ts-rest/core";
1336
+ import z36 from "zod";
1337
+
1338
+ // src/extension/schema.ts
1339
+ import z34 from "zod";
1340
+ var ExtensionSchema = DefaultEntitySchema.extend({
1341
+ userId: z34.string().nullable(),
1342
+ sipServerUrl: z34.string(),
1343
+ sipUserName: z34.string(),
1344
+ extensionId: z34.coerce.number().nullable(),
1345
+ extensionName: z34.string().nullable(),
1346
+ telephonySignature: z34.string().nullable()
1347
+ });
1348
+
1349
+ // src/extension/validation.ts
1350
+ import { z as z35 } from "zod";
1351
+ var CreateExtensionSchema = z35.object({
1352
+ userId: z35.string().nullable(),
1353
+ sipServerUrl: z35.string(),
1354
+ sipUserName: z35.string(),
1355
+ extensionId: z35.coerce.number().nullable(),
1356
+ extensionName: z35.string().nullable(),
1357
+ telephonySignature: z35.string().nullable()
1358
+ });
1359
+ var UpdateExtensionSchema = CreateExtensionSchema.extend({
1360
+ id: z35.string()
1361
+ });
1362
+
1363
+ // src/extension/index.ts
1364
+ var extensionContract = initContract14().router(
1365
+ {
1366
+ createExtension: {
1367
+ method: "POST",
1368
+ path: "",
767
1369
  headers: DefaultHeaderSchema,
768
- body: z18.any().optional(),
1370
+ body: CreateExtensionSchema,
769
1371
  responses: {
770
- 200: DefaultSuccessResponseSchema.extend({ message: z18.string() }),
1372
+ 201: DefaultSuccessResponseSchema.extend({
1373
+ extension: ExtensionSchema
1374
+ }),
1375
+ 400: z36.object({
1376
+ message: z36.string()
1377
+ }),
1378
+ 401: DefaultUnauthorizedSchema,
771
1379
  500: DefaultErrorResponseSchema
772
- }
1380
+ },
1381
+ summary: "Create a extension."
773
1382
  },
774
- createCategoryLevel: {
775
- method: "POST",
776
- path: "/level",
1383
+ getExtensions: {
1384
+ method: "GET",
1385
+ path: "",
1386
+ query: z36.object({
1387
+ page: z36.coerce.number().default(1),
1388
+ pageSize: z36.coerce.number().default(10),
1389
+ keyword: z36.string().optional()
1390
+ }).optional(),
777
1391
  headers: DefaultHeaderSchema,
778
- body: createCategoryLevelSchema,
779
1392
  responses: {
780
- 200: DefaultSuccessResponseSchema.extend({
781
- categoryLevel: categoryLevelSchema
1393
+ 200: WithPagination(ExtensionSchema),
1394
+ 400: z36.object({
1395
+ message: z36.string()
782
1396
  }),
1397
+ 401: DefaultUnauthorizedSchema,
783
1398
  500: DefaultErrorResponseSchema
784
- }
1399
+ },
1400
+ summary: "Get all extensions"
785
1401
  },
786
- updateCategoryLevel: {
1402
+ getExtensionByDialpad: {
1403
+ method: "GET",
1404
+ path: "/dialpad",
1405
+ query: z36.object({
1406
+ page: z36.coerce.number().default(1),
1407
+ pageSize: z36.coerce.number().default(10),
1408
+ keyword: z36.string().optional()
1409
+ }).optional(),
1410
+ headers: DefaultHeaderSchema,
1411
+ responses: {
1412
+ 200: WithPagination(ExtensionSchema),
1413
+ 500: DefaultErrorResponseSchema,
1414
+ 400: z36.object({
1415
+ message: z36.string()
1416
+ }),
1417
+ 401: DefaultUnauthorizedSchema
1418
+ },
1419
+ summary: "Get by dialpad"
1420
+ },
1421
+ updateExtension: {
787
1422
  method: "PATCH",
788
- path: "/level/:id",
789
- pathParams: z18.object({ id: z18.string() }),
1423
+ path: "/:id",
1424
+ pathParams: z36.object({ id: z36.string() }),
790
1425
  headers: DefaultHeaderSchema,
791
- body: updateCategoryLevelSchema,
1426
+ body: UpdateExtensionSchema,
792
1427
  responses: {
793
1428
  200: DefaultSuccessResponseSchema.extend({
794
- categoryLevel: categoryLevelSchema
1429
+ extension: ExtensionSchema
795
1430
  }),
796
1431
  500: DefaultErrorResponseSchema
797
- }
1432
+ },
1433
+ summary: "Update a extension."
1434
+ },
1435
+ deleteExtension: {
1436
+ method: "DELETE",
1437
+ path: "/:id",
1438
+ pathParams: z36.object({ id: z36.string() }),
1439
+ headers: DefaultHeaderSchema,
1440
+ body: null,
1441
+ responses: {
1442
+ 200: DefaultSuccessResponseSchema.extend({ message: z36.string() }),
1443
+ 500: DefaultErrorResponseSchema
1444
+ },
1445
+ summary: "Delete a extension."
798
1446
  }
799
1447
  },
1448
+ { pathPrefix: "extension" }
1449
+ );
1450
+
1451
+ // src/permission/index.ts
1452
+ import { initContract as initContract15 } from "@ts-rest/core";
1453
+ import z37 from "zod";
1454
+ var permissionContract = initContract15().router(
800
1455
  {
801
- pathPrefix: "categories"
802
- }
1456
+ getPermissions: {
1457
+ method: "GET",
1458
+ path: "",
1459
+ headers: DefaultHeaderSchema,
1460
+ responses: {
1461
+ 200: z37.object({ permissions: PermissionSchema.array() }),
1462
+ 400: z37.object({
1463
+ message: z37.string()
1464
+ }),
1465
+ 401: DefaultUnauthorizedSchema,
1466
+ 500: DefaultErrorResponseSchema
1467
+ },
1468
+ summary: "Get all permissions"
1469
+ }
1470
+ },
1471
+ { pathPrefix: "permission" }
1472
+ );
1473
+
1474
+ // src/role/index.ts
1475
+ import { initContract as initContract16 } from "@ts-rest/core";
1476
+ import z39 from "zod";
1477
+
1478
+ // src/role/validation.ts
1479
+ import { z as z38 } from "zod";
1480
+ var CreateRoleSchema = z38.object({
1481
+ systemName: z38.string(),
1482
+ displayName: z38.string(),
1483
+ description: z38.string().nullable(),
1484
+ permissions: z38.array(z38.string())
1485
+ });
1486
+ var UpdateRoleSchema = CreateRoleSchema.extend({
1487
+ id: z38.string()
1488
+ });
1489
+
1490
+ // src/role/index.ts
1491
+ var roleContract = initContract16().router(
1492
+ {
1493
+ createRole: {
1494
+ method: "POST",
1495
+ path: "",
1496
+ headers: DefaultHeaderSchema,
1497
+ body: CreateRoleSchema,
1498
+ responses: {
1499
+ 201: DefaultSuccessResponseSchema.extend({
1500
+ role: RoleSchema
1501
+ }),
1502
+ 400: z39.object({
1503
+ message: z39.string()
1504
+ }),
1505
+ 401: DefaultUnauthorizedSchema,
1506
+ 500: DefaultErrorResponseSchema
1507
+ },
1508
+ summary: "Create a role."
1509
+ },
1510
+ getRoles: {
1511
+ method: "GET",
1512
+ path: "",
1513
+ query: z39.object({
1514
+ page: z39.coerce.number().default(1),
1515
+ pageSize: z39.coerce.number().default(10)
1516
+ }).optional(),
1517
+ headers: DefaultHeaderSchema,
1518
+ responses: {
1519
+ 200: WithPagination(RoleSchema),
1520
+ 400: z39.object({
1521
+ message: z39.string()
1522
+ }),
1523
+ 401: DefaultUnauthorizedSchema,
1524
+ 500: DefaultErrorResponseSchema
1525
+ },
1526
+ summary: "Get all roles"
1527
+ },
1528
+ updateRole: {
1529
+ method: "PATCH",
1530
+ path: "/:id",
1531
+ pathParams: z39.object({ id: z39.string() }),
1532
+ headers: DefaultHeaderSchema,
1533
+ body: UpdateRoleSchema,
1534
+ responses: {
1535
+ 201: DefaultSuccessResponseSchema.extend({
1536
+ role: RoleSchema
1537
+ }),
1538
+ 400: z39.object({
1539
+ message: z39.string()
1540
+ }),
1541
+ 401: DefaultUnauthorizedSchema,
1542
+ 500: DefaultErrorResponseSchema
1543
+ },
1544
+ summary: "Update a role."
1545
+ },
1546
+ deleteRole: {
1547
+ method: "DELETE",
1548
+ path: "/:id",
1549
+ pathParams: z39.object({ id: z39.string() }),
1550
+ headers: DefaultHeaderSchema,
1551
+ body: null,
1552
+ responses: {
1553
+ 200: DefaultSuccessResponseSchema.extend({ message: z39.string() }),
1554
+ 500: DefaultErrorResponseSchema
1555
+ },
1556
+ summary: "Delete a role."
1557
+ }
1558
+ },
1559
+ { pathPrefix: "role" }
1560
+ );
1561
+
1562
+ // src/widget/index.ts
1563
+ import { initContract as initContract17 } from "@ts-rest/core";
1564
+ import z42 from "zod";
1565
+
1566
+ // src/widget/schema.ts
1567
+ import z40 from "zod";
1568
+ var FieldsSchema = z40.object({ data: z40.array(z40.string()) });
1569
+ var WidgetPositionSchema = z40.union([
1570
+ z40.literal("menu"),
1571
+ z40.literal("ticket_detail"),
1572
+ z40.literal("contact_detail")
1573
+ ]);
1574
+ var WidgetSchema = DefaultEntitySchema.extend({
1575
+ name: z40.string(),
1576
+ description: z40.string().nullable(),
1577
+ position: WidgetPositionSchema.nullable(),
1578
+ fields: FieldsSchema,
1579
+ url: z40.string().nullable()
1580
+ });
1581
+
1582
+ // src/widget/validation.ts
1583
+ import z41 from "zod";
1584
+ var CreateWidgetSchema = z41.object({
1585
+ name: z41.string(),
1586
+ description: z41.string(),
1587
+ url: z41.string(),
1588
+ position: WidgetPositionSchema,
1589
+ fields: z41.object({
1590
+ data: (
1591
+ // Array of attribute system names
1592
+ z41.array(z41.string())
1593
+ )
1594
+ }).optional()
1595
+ });
1596
+ var UpdateWidgetSchema = CreateWidgetSchema.extend({
1597
+ id: z41.string()
1598
+ });
1599
+
1600
+ // src/widget/index.ts
1601
+ var widgetContract = initContract17().router(
1602
+ {
1603
+ createWidget: {
1604
+ method: "POST",
1605
+ path: "",
1606
+ headers: DefaultHeaderSchema,
1607
+ body: CreateWidgetSchema,
1608
+ responses: {
1609
+ 201: DefaultSuccessResponseSchema.extend({
1610
+ widget: WidgetSchema
1611
+ }),
1612
+ 400: z42.object({
1613
+ message: z42.string()
1614
+ }),
1615
+ 401: DefaultUnauthorizedSchema,
1616
+ 500: DefaultErrorResponseSchema
1617
+ },
1618
+ summary: "Create a widget."
1619
+ },
1620
+ getWidgets: {
1621
+ method: "GET",
1622
+ path: "",
1623
+ query: z42.object({
1624
+ page: z42.coerce.number().default(1),
1625
+ pageSize: z42.coerce.number().default(10),
1626
+ keyword: z42.coerce.string().optional()
1627
+ }).optional(),
1628
+ headers: DefaultHeaderSchema,
1629
+ responses: {
1630
+ 200: WithPagination(WidgetSchema),
1631
+ 500: DefaultErrorResponseSchema,
1632
+ 400: z42.object({
1633
+ message: z42.string()
1634
+ }),
1635
+ 401: DefaultUnauthorizedSchema
1636
+ },
1637
+ summary: "Get all widgets"
1638
+ },
1639
+ getMenuWidgets: {
1640
+ method: "GET",
1641
+ path: "/menu",
1642
+ headers: DefaultHeaderSchema,
1643
+ responses: {
1644
+ 200: z42.array(WidgetSchema),
1645
+ 400: z42.object({
1646
+ message: z42.string()
1647
+ }),
1648
+ 401: DefaultUnauthorizedSchema,
1649
+ 500: DefaultErrorResponseSchema
1650
+ },
1651
+ summary: "Get menu widgets"
1652
+ },
1653
+ getTicketWidgets: {
1654
+ method: "GET",
1655
+ path: "/ticket_detail",
1656
+ headers: DefaultHeaderSchema,
1657
+ responses: {
1658
+ 200: z42.array(WidgetSchema),
1659
+ 400: z42.object({
1660
+ message: z42.string()
1661
+ }),
1662
+ 401: DefaultUnauthorizedSchema,
1663
+ 500: DefaultErrorResponseSchema
1664
+ },
1665
+ summary: "Get ticket widgets"
1666
+ },
1667
+ getContactWidgets: {
1668
+ method: "GET",
1669
+ path: "/contact_detail",
1670
+ headers: DefaultHeaderSchema,
1671
+ responses: {
1672
+ 200: z42.array(WidgetSchema),
1673
+ 400: z42.object({
1674
+ message: z42.string()
1675
+ }),
1676
+ 401: DefaultUnauthorizedSchema,
1677
+ 500: DefaultErrorResponseSchema
1678
+ },
1679
+ summary: "Get contact widgets"
1680
+ },
1681
+ getWidgetById: {
1682
+ method: "GET",
1683
+ path: "/:id",
1684
+ pathParams: z42.object({ id: z42.string() }),
1685
+ headers: DefaultHeaderSchema,
1686
+ responses: {
1687
+ 200: WidgetSchema,
1688
+ 400: z42.object({
1689
+ message: z42.string()
1690
+ }),
1691
+ 401: DefaultUnauthorizedSchema,
1692
+ 500: DefaultErrorResponseSchema
1693
+ },
1694
+ summary: "Get widget by id"
1695
+ },
1696
+ // Hold
1697
+ // getWidgetUrl: {
1698
+ // method: 'GET',
1699
+ // path: '/url_token/generate',
1700
+ // pathParams: z.object({
1701
+ // widgetId: z.string(),
1702
+ // // Position ID is ticket ID, contact ID, etc.
1703
+ // // TODO: The name "Position ID" is confusing. Think of a better name.
1704
+ // positionId: z.string(),
1705
+ // }),
1706
+ // headers: DefaultHeaderSchema,
1707
+ // responses: {
1708
+ // 201: DefaultSuccessResponseSchema.extend({
1709
+ // widget: z.object({
1710
+ // url: z.string(),
1711
+ // }),
1712
+ // }),
1713
+ // 400: z.object({
1714
+ // message: z.string(),
1715
+ // }),
1716
+ // 401: DefaultUnauthorizedSchema,
1717
+ // },
1718
+ // summary: 'Generate url token for widget.',
1719
+ // },
1720
+ updateWidget: {
1721
+ method: "PATCH",
1722
+ path: "/:id",
1723
+ pathParams: z42.object({ id: z42.string() }),
1724
+ headers: DefaultHeaderSchema,
1725
+ responses: {
1726
+ 201: DefaultSuccessResponseSchema.extend({
1727
+ widget: WidgetSchema
1728
+ }),
1729
+ 400: z42.object({
1730
+ message: z42.string()
1731
+ }),
1732
+ 401: DefaultUnauthorizedSchema
1733
+ },
1734
+ body: UpdateWidgetSchema,
1735
+ summary: "Update a widget."
1736
+ },
1737
+ deleteWidget: {
1738
+ method: "DELETE",
1739
+ path: "/:id",
1740
+ pathParams: z42.object({ id: z42.string() }),
1741
+ headers: DefaultHeaderSchema,
1742
+ body: null,
1743
+ responses: {
1744
+ 200: DefaultSuccessResponseSchema.extend({ message: z42.string() }),
1745
+ 500: DefaultErrorResponseSchema
1746
+ },
1747
+ summary: "Delete a widget."
1748
+ }
1749
+ },
1750
+ { pathPrefix: "widget" }
1751
+ );
1752
+
1753
+ // src/telephony-extension/index.ts
1754
+ import { initContract as initContract18 } from "@ts-rest/core";
1755
+ import z44 from "zod";
1756
+
1757
+ // src/telephony-extension/schema.ts
1758
+ import z43 from "zod";
1759
+ var TelephonyExtensionSchema = z43.object({
1760
+ errcode: z43.coerce.number(),
1761
+ errmsg: z43.string(),
1762
+ total_number: z43.coerce.number(),
1763
+ data: z43.array(z43.object({}))
1764
+ });
1765
+
1766
+ // src/telephony-extension/index.ts
1767
+ var telephonyExtensionContract = initContract18().router(
1768
+ {
1769
+ getTelephonyExtensions: {
1770
+ method: "GET",
1771
+ path: "/extension_list",
1772
+ headers: DefaultHeaderSchema,
1773
+ query: null,
1774
+ responses: {
1775
+ 200: TelephonyExtensionSchema,
1776
+ 400: z44.object({
1777
+ message: z44.string()
1778
+ }),
1779
+ 401: DefaultUnauthorizedSchema,
1780
+ 500: DefaultErrorResponseSchema
1781
+ },
1782
+ summary: "Get all extension list by yeastar"
1783
+ }
1784
+ },
1785
+ { pathPrefix: "telephony" }
803
1786
  );
804
1787
 
805
1788
  // src/contract.ts
806
- var apiContract = initContract10().router({
1789
+ var apiContract = initContract19().router({
807
1790
  auth: authContract,
808
1791
  mail: mailContract,
809
1792
  cxLog: cxLogContract,
1793
+ permission: permissionContract,
1794
+ role: roleContract,
1795
+ // user: userContract,
1796
+ extension: extensionContract,
1797
+ widget: widgetContract,
810
1798
  emailEngineWebhooks: emailEngineWebhooksEventsContract,
811
- category: categoryContract
1799
+ category: categoryContract,
1800
+ telephonyExtensionContract,
1801
+ line: lineContract,
1802
+ attribute: attributeContract,
1803
+ tag: tagContract,
1804
+ chat: chatContract
812
1805
  });
813
1806
  export {
814
1807
  apiContract,
815
- categoryContract
1808
+ attributeContract,
1809
+ categoryContract,
1810
+ tagContract
816
1811
  };
817
1812
  //# sourceMappingURL=index.mjs.map