@dakkitor/api-contracts 1.1.9 → 1.1.11

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 (92) hide show
  1. package/dist/actives/actives.contract.d.ts +263 -263
  2. package/dist/actives/actives.contract.d.ts.map +1 -1
  3. package/dist/actives/actives.contract.js +9 -17
  4. package/dist/agent-client-links/agent-client-links.contract.d.ts +1905 -0
  5. package/dist/agent-client-links/agent-client-links.contract.d.ts.map +1 -0
  6. package/dist/agent-client-links/agent-client-links.contract.js +127 -0
  7. package/dist/auth/auth.contract.d.ts +319 -0
  8. package/dist/auth/auth.contract.d.ts.map +1 -0
  9. package/dist/auth/auth.contract.js +63 -0
  10. package/dist/bookings/bookings.contract.d.ts +2183 -0
  11. package/dist/bookings/bookings.contract.d.ts.map +1 -0
  12. package/dist/bookings/bookings.contract.js +278 -0
  13. package/dist/call-history/call-history.contract.d.ts +1164 -0
  14. package/dist/call-history/call-history.contract.d.ts.map +1 -0
  15. package/dist/call-history/call-history.contract.js +254 -0
  16. package/dist/client-contacts/client-contacts.contract.d.ts +421 -472
  17. package/dist/client-contacts/client-contacts.contract.d.ts.map +1 -1
  18. package/dist/client-contacts/client-contacts.contract.js +26 -15
  19. package/dist/clients/clients.contract.d.ts +336 -308
  20. package/dist/clients/clients.contract.d.ts.map +1 -1
  21. package/dist/clients/clients.contract.js +49 -52
  22. package/dist/collaboration-checkings/collaboration-checkings.contract.d.ts +3013 -0
  23. package/dist/collaboration-checkings/collaboration-checkings.contract.d.ts.map +1 -0
  24. package/dist/collaboration-checkings/collaboration-checkings.contract.js +247 -0
  25. package/dist/collaborations/collaborations.contract.d.ts +2229 -0
  26. package/dist/collaborations/collaborations.contract.d.ts.map +1 -0
  27. package/dist/collaborations/collaborations.contract.js +284 -0
  28. package/dist/common/common-schemas.d.ts +120 -0
  29. package/dist/common/common-schemas.d.ts.map +1 -0
  30. package/dist/common/common-schemas.js +296 -0
  31. package/dist/common/error-schemas.d.ts +6 -6
  32. package/dist/common/openapi-metadata.d.ts +6 -0
  33. package/dist/common/openapi-metadata.d.ts.map +1 -1
  34. package/dist/common/pagination-query.schema.d.ts +17 -0
  35. package/dist/common/pagination-query.schema.d.ts.map +1 -0
  36. package/dist/common/pagination-query.schema.js +15 -0
  37. package/dist/common/pagination.schema.d.ts +2 -2
  38. package/dist/companies/companies.contract.d.ts +1108 -0
  39. package/dist/companies/companies.contract.d.ts.map +1 -0
  40. package/dist/companies/companies.contract.js +164 -0
  41. package/dist/cron-executions/cron-executions.contract.d.ts +1643 -0
  42. package/dist/cron-executions/cron-executions.contract.d.ts.map +1 -0
  43. package/dist/cron-executions/cron-executions.contract.js +271 -0
  44. package/dist/curated-workers/curated-workers.contract.d.ts +3183 -0
  45. package/dist/curated-workers/curated-workers.contract.d.ts.map +1 -0
  46. package/dist/curated-workers/curated-workers.contract.js +444 -0
  47. package/dist/dashboards/agent-daily-metrics.contract.d.ts +639 -0
  48. package/dist/dashboards/agent-daily-metrics.contract.d.ts.map +1 -0
  49. package/dist/dashboards/agent-daily-metrics.contract.js +118 -0
  50. package/dist/files/files.contract.d.ts +1258 -0
  51. package/dist/files/files.contract.d.ts.map +1 -0
  52. package/dist/files/files.contract.js +205 -0
  53. package/dist/health/health.contract.d.ts +161 -0
  54. package/dist/health/health.contract.d.ts.map +1 -0
  55. package/dist/health/health.contract.js +52 -0
  56. package/dist/index.d.ts +28596 -3088
  57. package/dist/index.d.ts.map +1 -1
  58. package/dist/index.js +68 -0
  59. package/dist/jobs/jobs.contract.d.ts +2303 -0
  60. package/dist/jobs/jobs.contract.d.ts.map +1 -0
  61. package/dist/jobs/jobs.contract.js +295 -0
  62. package/dist/lead-assignments/lead-assignments.contract.d.ts +1826 -0
  63. package/dist/lead-assignments/lead-assignments.contract.d.ts.map +1 -0
  64. package/dist/lead-assignments/lead-assignments.contract.js +187 -0
  65. package/dist/lead-distribution/agent-lead-distribution.contract.d.ts +1147 -0
  66. package/dist/lead-distribution/agent-lead-distribution.contract.d.ts.map +1 -0
  67. package/dist/lead-distribution/agent-lead-distribution.contract.js +154 -0
  68. package/dist/lead-distribution/lead-distribution-config.contract.d.ts +1085 -0
  69. package/dist/lead-distribution/lead-distribution-config.contract.d.ts.map +1 -0
  70. package/dist/lead-distribution/lead-distribution-config.contract.js +196 -0
  71. package/dist/leads/leads.contract.d.ts +1690 -0
  72. package/dist/leads/leads.contract.d.ts.map +1 -0
  73. package/dist/leads/leads.contract.js +328 -0
  74. package/dist/locations/locations.contract.d.ts +974 -0
  75. package/dist/locations/locations.contract.d.ts.map +1 -0
  76. package/dist/locations/locations.contract.js +154 -0
  77. package/dist/postcodes/postcodes.contract.d.ts +370 -0
  78. package/dist/postcodes/postcodes.contract.d.ts.map +1 -0
  79. package/dist/postcodes/postcodes.contract.js +90 -0
  80. package/dist/qualifications/qualifications.contract.d.ts +1489 -0
  81. package/dist/qualifications/qualifications.contract.d.ts.map +1 -0
  82. package/dist/qualifications/qualifications.contract.js +215 -0
  83. package/dist/trades/trades.contract.d.ts +799 -0
  84. package/dist/trades/trades.contract.d.ts.map +1 -0
  85. package/dist/trades/trades.contract.js +112 -0
  86. package/dist/users/users.contract.d.ts +315 -299
  87. package/dist/users/users.contract.d.ts.map +1 -1
  88. package/dist/users/users.contract.js +13 -29
  89. package/dist/workers/workers.contract.d.ts +3376 -0
  90. package/dist/workers/workers.contract.d.ts.map +1 -0
  91. package/dist/workers/workers.contract.js +363 -0
  92. package/package.json +4 -3
@@ -0,0 +1 @@
1
+ {"version":3,"file":"leads.contract.d.ts","sourceRoot":"","sources":["../../contracts/leads/leads.contract.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,328 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.leadsContractRouter = exports.PaginatedLeadResponseSchema = exports.LeadStatisticsSchema = exports.TierDistributionSchema = exports.LeadCallHistoryResponseSchema = exports.FilterLeadSchema = exports.UpdateLeadSchema = exports.CreateLeadSchema = exports.LeadSchema = exports.QualityTierSchema = exports.LeadSortableFieldsSchema = exports.LeadStatusSchema = void 0;
4
+ const zod_openapi_1 = require("@anatine/zod-openapi");
5
+ const core_1 = require("@ts-rest/core");
6
+ const zod_1 = require("zod");
7
+ const call_history_contract_1 = require("../call-history/call-history.contract");
8
+ const common_schemas_1 = require("../common/common-schemas");
9
+ const error_schemas_1 = require("../common/error-schemas");
10
+ const pagination_query_schema_1 = require("../common/pagination-query.schema");
11
+ const pagination_schema_1 = require("../common/pagination.schema");
12
+ (0, zod_openapi_1.extendZodWithOpenApi)(zod_1.z);
13
+ /**
14
+ * Lead Status Enum
15
+ */
16
+ exports.LeadStatusSchema = zod_1.z
17
+ .enum(['AVAILABLE', 'ASSIGNED', 'BLACKLISTED'])
18
+ .openapi({ title: 'LeadStatus' });
19
+ /**
20
+ * Lead Sortable Fields Enum
21
+ */
22
+ exports.LeadSortableFieldsSchema = zod_1.z
23
+ .enum([
24
+ 'name',
25
+ 'phoneNumber',
26
+ 'status',
27
+ 'source',
28
+ 'qualityScore',
29
+ 'conversionRate',
30
+ 'totalCalls',
31
+ 'createdAt',
32
+ 'updatedAt',
33
+ ])
34
+ .openapi({ title: 'LeadSortableFields' });
35
+ /**
36
+ * Quality Tier Enum
37
+ */
38
+ exports.QualityTierSchema = zod_1.z
39
+ .enum(['high', 'medium', 'low', 'untested'])
40
+ .openapi({ title: 'QualityTier' });
41
+ /**
42
+ * Main Lead Schema
43
+ */
44
+ exports.LeadSchema = zod_1.z
45
+ .object({
46
+ id: zod_1.z.string().uuid().describe('Lead ID'),
47
+ name: zod_1.z.string().describe('Company Name'),
48
+ phoneNumber: zod_1.z.string().describe('Phone Number'),
49
+ status: exports.LeadStatusSchema.describe('Lead Status'),
50
+ blacklistReason: zod_1.z
51
+ .string()
52
+ .optional()
53
+ .nullable()
54
+ .describe('Reason for Blacklisting'),
55
+ source: zod_1.z.string().describe('Lead Source'),
56
+ qualityScore: zod_1.z
57
+ .number()
58
+ .min(0)
59
+ .max(1)
60
+ .optional()
61
+ .nullable()
62
+ .describe('Overall Quality Score'),
63
+ qualityTier: exports.QualityTierSchema.optional()
64
+ .nullable()
65
+ .describe('Quality Tier Classification'),
66
+ conversionRate: zod_1.z
67
+ .number()
68
+ .min(0)
69
+ .max(1)
70
+ .optional()
71
+ .nullable()
72
+ .describe('Conversion Rate'),
73
+ totalCalls: zod_1.z.number().int().optional().nullable().describe('Total Calls'),
74
+ createdAt: zod_1.z
75
+ .union([zod_1.z.string().datetime(), zod_1.z.date()])
76
+ .transform((val) => (val instanceof Date ? val.toISOString() : val))
77
+ .describe('Creation Date'),
78
+ updatedAt: zod_1.z
79
+ .union([zod_1.z.string().datetime(), zod_1.z.date()])
80
+ .transform((val) => (val instanceof Date ? val.toISOString() : val))
81
+ .describe('Last Update Date'),
82
+ })
83
+ .openapi({ title: 'Lead' });
84
+ /**
85
+ * Create Lead Schema
86
+ */
87
+ exports.CreateLeadSchema = zod_1.z
88
+ .object({
89
+ name: zod_1.z.string().max(255).describe('Company Name'),
90
+ phoneNumber: zod_1.z.string().max(20).describe('Phone Number'),
91
+ status: exports.LeadStatusSchema.optional().describe('Lead Status'),
92
+ isBlacklisted: zod_1.z.boolean().default(false).describe('Is Blacklisted'),
93
+ blacklistReason: zod_1.z
94
+ .string()
95
+ .max(500)
96
+ .optional()
97
+ .describe('Reason for Blacklisting'),
98
+ source: zod_1.z.string().max(100).describe('Lead Source'),
99
+ })
100
+ .openapi({ title: 'CreateLead' });
101
+ /**
102
+ * Update Lead Schema
103
+ */
104
+ exports.UpdateLeadSchema = zod_1.z
105
+ .object({
106
+ name: zod_1.z.string().max(255).optional().describe('Company Name'),
107
+ phoneNumber: zod_1.z.string().max(20).optional().describe('Phone Number'),
108
+ status: exports.LeadStatusSchema.optional().describe('Lead Status'),
109
+ blacklistReason: zod_1.z.string().optional().describe('Reason for Blacklisting'),
110
+ source: zod_1.z.string().max(100).optional().describe('Lead Source'),
111
+ })
112
+ .openapi({ title: 'UpdateLead' });
113
+ /**
114
+ * Filter Lead Schema
115
+ */
116
+ exports.FilterLeadSchema = pagination_query_schema_1.PaginationQuerySchema.extend({
117
+ name: zod_1.z
118
+ .string()
119
+ .optional()
120
+ .nullable()
121
+ .describe('Filter by company name (case-insensitive, partial match)'),
122
+ phoneNumber: zod_1.z
123
+ .string()
124
+ .optional()
125
+ .nullable()
126
+ .describe('Filter by phone number (partial match)'),
127
+ status: exports.LeadStatusSchema.optional()
128
+ .nullable()
129
+ .describe('Filter by lead status'),
130
+ source: zod_1.z
131
+ .string()
132
+ .optional()
133
+ .nullable()
134
+ .describe('Filter by source (case-insensitive, partial match)'),
135
+ minQualityScore: zod_1.z
136
+ .number()
137
+ .min(0)
138
+ .max(1)
139
+ .optional()
140
+ .nullable()
141
+ .describe('Filter by minimum quality score (0-1)'),
142
+ maxQualityScore: zod_1.z
143
+ .number()
144
+ .min(0)
145
+ .max(1)
146
+ .optional()
147
+ .nullable()
148
+ .describe('Filter by maximum quality score (0-1)'),
149
+ qualityTier: exports.QualityTierSchema.optional()
150
+ .nullable()
151
+ .describe('Filter by quality tier'),
152
+ minConversionRate: zod_1.z
153
+ .number()
154
+ .min(0)
155
+ .max(1)
156
+ .optional()
157
+ .nullable()
158
+ .describe('Filter by minimum conversion rate (0-1)'),
159
+ minTotalCalls: zod_1.z
160
+ .number()
161
+ .int()
162
+ .min(0)
163
+ .optional()
164
+ .nullable()
165
+ .describe('Filter by minimum total calls'),
166
+ sortBy: exports.LeadSortableFieldsSchema.optional()
167
+ .nullable()
168
+ .describe('The field to sort the results by'),
169
+ sortOrder: common_schemas_1.SortOrderSchema.optional()
170
+ .nullable()
171
+ .describe('The order to sort the results by'),
172
+ });
173
+ /**
174
+ * Call History Response Schema for leads
175
+ */
176
+ exports.LeadCallHistoryResponseSchema = zod_1.z
177
+ .object({
178
+ id: zod_1.z.string().uuid().describe('Call History ID'),
179
+ assignmentId: zod_1.z.string().uuid().describe('Assignment ID'),
180
+ leadId: zod_1.z.string().uuid().describe('Lead ID'),
181
+ agentId: zod_1.z.string().uuid().describe('Agent ID'),
182
+ callDate: zod_1.z
183
+ .union([zod_1.z.string().datetime(), zod_1.z.date()])
184
+ .transform((val) => (val instanceof Date ? val.toISOString() : val))
185
+ .describe('Call Date'),
186
+ callType: call_history_contract_1.CallTypeSchema.describe('Call Type'),
187
+ rating: call_history_contract_1.CallRatingSchema.describe('Call Rating'),
188
+ ratingWeight: zod_1.z.number().describe('Rating Weight'),
189
+ notes: zod_1.z.string().nullable().optional().describe('Call Notes'),
190
+ createdAt: zod_1.z
191
+ .union([zod_1.z.string().datetime(), zod_1.z.date()])
192
+ .transform((val) => (val instanceof Date ? val.toISOString() : val))
193
+ .describe('Creation Date'),
194
+ updatedAt: zod_1.z
195
+ .union([zod_1.z.string().datetime(), zod_1.z.date()])
196
+ .transform((val) => (val instanceof Date ? val.toISOString() : val))
197
+ .describe('Last Update Date'),
198
+ })
199
+ .openapi({ title: 'LeadCallHistoryResponse' });
200
+ /**
201
+ * Lead Statistics Schema for quality dashboard
202
+ */
203
+ exports.TierDistributionSchema = zod_1.z
204
+ .object({
205
+ high: zod_1.z.number().int().describe('High Quality Leads'),
206
+ medium: zod_1.z.number().int().describe('Medium Quality Leads'),
207
+ low: zod_1.z.number().int().describe('Low Quality Leads'),
208
+ untested: zod_1.z.number().int().describe('Untested Leads'),
209
+ })
210
+ .openapi({ title: 'TierDistribution' });
211
+ exports.LeadStatisticsSchema = zod_1.z
212
+ .object({
213
+ totalLeads: zod_1.z.number().int().describe('Total Leads'),
214
+ avgQualityScore: zod_1.z.number().min(0).max(1).describe('Average Quality Score'),
215
+ avgConversionRate: zod_1.z
216
+ .number()
217
+ .min(0)
218
+ .max(1)
219
+ .describe('Average Conversion Rate'),
220
+ avgCallsPerLead: zod_1.z.number().describe('Average Calls Per Lead'),
221
+ tierDistribution: exports.TierDistributionSchema.describe('Tier Distribution'),
222
+ })
223
+ .openapi({ title: 'LeadStatistics' });
224
+ exports.PaginatedLeadResponseSchema = (0, pagination_schema_1.createPaginatedResponseSchema)(exports.LeadSchema)
225
+ .describe('Leads retrieved successfully')
226
+ .openapi({ title: 'LeadsPaginatedResponse' });
227
+ const c = (0, core_1.initContract)();
228
+ exports.leadsContractRouter = c.router({
229
+ create: {
230
+ method: 'POST',
231
+ path: '/v2/leads',
232
+ responses: {
233
+ 201: exports.LeadSchema,
234
+ 409: error_schemas_1.ErrorResponseSchema,
235
+ },
236
+ body: exports.CreateLeadSchema,
237
+ summary: 'Create a new lead',
238
+ metadata: { tags: ['Leads'], openApi: { operationId: 'createLead' } },
239
+ },
240
+ findAll: {
241
+ method: 'GET',
242
+ path: '/v2/leads',
243
+ responses: {
244
+ 200: exports.PaginatedLeadResponseSchema,
245
+ },
246
+ query: exports.FilterLeadSchema,
247
+ summary: 'Get all leads',
248
+ metadata: { tags: ['Leads'], openApi: { operationId: 'findAllLeads' } },
249
+ },
250
+ findOne: {
251
+ method: 'GET',
252
+ path: '/v2/leads/:id',
253
+ responses: {
254
+ 200: exports.LeadSchema,
255
+ 404: error_schemas_1.ErrorResponseSchema,
256
+ },
257
+ pathParams: zod_1.z.object({
258
+ id: zod_1.z.string().uuid().describe('Lead ID'),
259
+ }),
260
+ summary: 'Get a lead by ID',
261
+ metadata: { tags: ['Leads'], openApi: { operationId: 'findLeadById' } },
262
+ },
263
+ update: {
264
+ method: 'PATCH',
265
+ path: '/v2/leads/:id',
266
+ responses: {
267
+ 200: exports.LeadSchema,
268
+ 404: error_schemas_1.ErrorResponseSchema,
269
+ 409: error_schemas_1.ErrorResponseSchema,
270
+ },
271
+ pathParams: zod_1.z.object({
272
+ id: zod_1.z.string().uuid().describe('Lead ID'),
273
+ }),
274
+ body: exports.UpdateLeadSchema,
275
+ summary: 'Update a lead',
276
+ metadata: { tags: ['Leads'], openApi: { operationId: 'updateLead' } },
277
+ },
278
+ remove: {
279
+ method: 'DELETE',
280
+ path: '/v2/leads/:id',
281
+ responses: {
282
+ 204: zod_1.z.undefined(),
283
+ 404: error_schemas_1.ErrorResponseSchema,
284
+ },
285
+ pathParams: zod_1.z.object({
286
+ id: zod_1.z.string().uuid().describe('Lead ID'),
287
+ }),
288
+ body: c.noBody(),
289
+ summary: 'Delete a lead',
290
+ metadata: { tags: ['Leads'], openApi: { operationId: 'deleteLead' } },
291
+ },
292
+ recordCall: {
293
+ method: 'POST',
294
+ path: '/v2/leads/:id/call',
295
+ responses: {
296
+ 201: exports.LeadCallHistoryResponseSchema,
297
+ },
298
+ pathParams: zod_1.z.object({
299
+ id: zod_1.z.string().uuid().describe('Lead ID'),
300
+ }),
301
+ body: call_history_contract_1.CreateCallHistorySchema,
302
+ summary: 'Record a call to a lead',
303
+ metadata: {
304
+ tags: ['Leads'],
305
+ openApi: { operationId: 'recordCallToLead' },
306
+ },
307
+ },
308
+ getQualityDashboard: {
309
+ method: 'GET',
310
+ path: '/v2/leads/analytics/quality-dashboard',
311
+ responses: {
312
+ 200: exports.LeadStatisticsSchema,
313
+ },
314
+ query: zod_1.z.object({}),
315
+ summary: 'Get lead quality analytics dashboard',
316
+ metadata: {
317
+ tags: ['Leads'],
318
+ openApi: { operationId: 'getQualityDashboard' },
319
+ },
320
+ },
321
+ }, {
322
+ commonResponses: {
323
+ 400: error_schemas_1.ErrorResponseSchema,
324
+ 401: error_schemas_1.ErrorResponseSchema,
325
+ 403: error_schemas_1.ErrorResponseSchema,
326
+ 500: error_schemas_1.ErrorResponseSchema,
327
+ },
328
+ });