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