@dakkitor/api-contracts 1.9.6 → 1.9.9

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 (22) hide show
  1. package/dist/candidate-calling/candidate-calling.contract.d.ts +5496 -5496
  2. package/dist/candidate-lookup/candidate-lookup.contract.d.ts +385 -2
  3. package/dist/candidate-lookup/candidate-lookup.contract.d.ts.map +1 -1
  4. package/dist/candidate-lookup/candidate-lookup.contract.js +18 -1
  5. package/dist/candidate-lookup/candidate-lookup.contract.spec.d.ts +2 -0
  6. package/dist/candidate-lookup/candidate-lookup.contract.spec.d.ts.map +1 -0
  7. package/dist/candidate-lookup/candidate-lookup.contract.spec.js +75 -0
  8. package/dist/curated-worker-leads/candidate-edit-session.contract.d.ts +434 -434
  9. package/dist/curated-worker-leads/jobs-tab.contract.d.ts +6657 -6381
  10. package/dist/curated-worker-leads/jobs-tab.contract.d.ts.map +1 -1
  11. package/dist/curated-worker-leads/jobs-tab.contract.js +52 -1
  12. package/dist/curated-worker-leads/next-candidate.spec.d.ts +2 -0
  13. package/dist/curated-worker-leads/next-candidate.spec.d.ts.map +1 -0
  14. package/dist/curated-worker-leads/next-candidate.spec.js +30 -0
  15. package/dist/curated-worker-leads/owned-jobs-tab.contract.d.ts +206 -206
  16. package/dist/worker-identity-cases/worker-identity-cases.contract.d.ts +1060 -837
  17. package/dist/worker-identity-cases/worker-identity-cases.contract.d.ts.map +1 -1
  18. package/dist/worker-identity-cases/worker-identity-cases.contract.js +34 -1
  19. package/dist/worker-identity-cases/worker-identity-cases.contract.spec.d.ts +2 -0
  20. package/dist/worker-identity-cases/worker-identity-cases.contract.spec.d.ts.map +1 -0
  21. package/dist/worker-identity-cases/worker-identity-cases.contract.spec.js +21 -0
  22. package/package.json +1 -1
@@ -157,6 +157,174 @@ export declare const CandidateLookupResponseSchema: z.ZodObject<{
157
157
  currentPage: number;
158
158
  totalPages: number;
159
159
  }>;
160
+ export declare const CandidateLookupWithWorkerPostcodeRowSchema: z.ZodObject<{
161
+ workerName: z.ZodString;
162
+ phoneNumbers: z.ZodNullable<z.ZodString>;
163
+ distanceKm: z.ZodNumber;
164
+ travelMinutes: z.ZodNullable<z.ZodNumber>;
165
+ travelTime: z.ZodNullable<z.ZodString>;
166
+ travelMode: z.ZodEnum<["DRIVE", "TRANSIT"]>;
167
+ carTravel: z.ZodNullable<z.ZodString>;
168
+ transitTravel: z.ZodNullable<z.ZodString>;
169
+ preferredTransport: z.ZodNullable<z.ZodString>;
170
+ transportMethods: z.ZodNullable<z.ZodString>;
171
+ matchedPostcode: z.ZodString;
172
+ postcodeLevel: z.ZodEnum<["unit", "sector", "district", "area"]>;
173
+ travelBorrowedKm: z.ZodNullable<z.ZodNumber>;
174
+ /**
175
+ * The postcode of the job the travel time was borrowed from, or null when no
176
+ * time could be borrowed. Travel times are never computed for the requested
177
+ * postcode itself — they come from a live job at that postcode sharing the
178
+ * requested trade. Surfacing the source keeps a borrowed number legible as
179
+ * borrowed.
180
+ */
181
+ travelFromPostcode: z.ZodNullable<z.ZodString>;
182
+ } & {
183
+ postcode: z.ZodNullable<z.ZodString>;
184
+ }, "strip", z.ZodTypeAny, {
185
+ workerName: string;
186
+ phoneNumbers: string | null;
187
+ distanceKm: number;
188
+ travelMinutes: number | null;
189
+ travelTime: string | null;
190
+ travelMode: "DRIVE" | "TRANSIT";
191
+ carTravel: string | null;
192
+ transitTravel: string | null;
193
+ preferredTransport: string | null;
194
+ transportMethods: string | null;
195
+ matchedPostcode: string;
196
+ postcodeLevel: "unit" | "sector" | "district" | "area";
197
+ travelBorrowedKm: number | null;
198
+ travelFromPostcode: string | null;
199
+ postcode: string | null;
200
+ }, {
201
+ workerName: string;
202
+ phoneNumbers: string | null;
203
+ distanceKm: number;
204
+ travelMinutes: number | null;
205
+ travelTime: string | null;
206
+ travelMode: "DRIVE" | "TRANSIT";
207
+ carTravel: string | null;
208
+ transitTravel: string | null;
209
+ preferredTransport: string | null;
210
+ transportMethods: string | null;
211
+ matchedPostcode: string;
212
+ postcodeLevel: "unit" | "sector" | "district" | "area";
213
+ travelBorrowedKm: number | null;
214
+ travelFromPostcode: string | null;
215
+ postcode: string | null;
216
+ }>;
217
+ export type CandidateLookupWithWorkerPostcodeRow = z.infer<typeof CandidateLookupWithWorkerPostcodeRowSchema>;
218
+ export declare const CandidateLookupWithWorkerPostcodeResponseSchema: z.ZodObject<{
219
+ items: z.ZodArray<z.ZodObject<{
220
+ workerName: z.ZodString;
221
+ phoneNumbers: z.ZodNullable<z.ZodString>;
222
+ distanceKm: z.ZodNumber;
223
+ travelMinutes: z.ZodNullable<z.ZodNumber>;
224
+ travelTime: z.ZodNullable<z.ZodString>;
225
+ travelMode: z.ZodEnum<["DRIVE", "TRANSIT"]>;
226
+ carTravel: z.ZodNullable<z.ZodString>;
227
+ transitTravel: z.ZodNullable<z.ZodString>;
228
+ preferredTransport: z.ZodNullable<z.ZodString>;
229
+ transportMethods: z.ZodNullable<z.ZodString>;
230
+ matchedPostcode: z.ZodString;
231
+ postcodeLevel: z.ZodEnum<["unit", "sector", "district", "area"]>;
232
+ travelBorrowedKm: z.ZodNullable<z.ZodNumber>;
233
+ /**
234
+ * The postcode of the job the travel time was borrowed from, or null when no
235
+ * time could be borrowed. Travel times are never computed for the requested
236
+ * postcode itself — they come from a live job at that postcode sharing the
237
+ * requested trade. Surfacing the source keeps a borrowed number legible as
238
+ * borrowed.
239
+ */
240
+ travelFromPostcode: z.ZodNullable<z.ZodString>;
241
+ } & {
242
+ postcode: z.ZodNullable<z.ZodString>;
243
+ }, "strip", z.ZodTypeAny, {
244
+ workerName: string;
245
+ phoneNumbers: string | null;
246
+ distanceKm: number;
247
+ travelMinutes: number | null;
248
+ travelTime: string | null;
249
+ travelMode: "DRIVE" | "TRANSIT";
250
+ carTravel: string | null;
251
+ transitTravel: string | null;
252
+ preferredTransport: string | null;
253
+ transportMethods: string | null;
254
+ matchedPostcode: string;
255
+ postcodeLevel: "unit" | "sector" | "district" | "area";
256
+ travelBorrowedKm: number | null;
257
+ travelFromPostcode: string | null;
258
+ postcode: string | null;
259
+ }, {
260
+ workerName: string;
261
+ phoneNumbers: string | null;
262
+ distanceKm: number;
263
+ travelMinutes: number | null;
264
+ travelTime: string | null;
265
+ travelMode: "DRIVE" | "TRANSIT";
266
+ carTravel: string | null;
267
+ transitTravel: string | null;
268
+ preferredTransport: string | null;
269
+ transportMethods: string | null;
270
+ matchedPostcode: string;
271
+ postcodeLevel: "unit" | "sector" | "district" | "area";
272
+ travelBorrowedKm: number | null;
273
+ travelFromPostcode: string | null;
274
+ postcode: string | null;
275
+ }>, "many">;
276
+ totalCount: z.ZodNumber;
277
+ limit: z.ZodNumber;
278
+ skip: z.ZodNumber;
279
+ currentPage: z.ZodNumber;
280
+ totalPages: z.ZodNumber;
281
+ }, "strip", z.ZodTypeAny, {
282
+ items: {
283
+ workerName: string;
284
+ phoneNumbers: string | null;
285
+ distanceKm: number;
286
+ travelMinutes: number | null;
287
+ travelTime: string | null;
288
+ travelMode: "DRIVE" | "TRANSIT";
289
+ carTravel: string | null;
290
+ transitTravel: string | null;
291
+ preferredTransport: string | null;
292
+ transportMethods: string | null;
293
+ matchedPostcode: string;
294
+ postcodeLevel: "unit" | "sector" | "district" | "area";
295
+ travelBorrowedKm: number | null;
296
+ travelFromPostcode: string | null;
297
+ postcode: string | null;
298
+ }[];
299
+ totalCount: number;
300
+ limit: number;
301
+ skip: number;
302
+ currentPage: number;
303
+ totalPages: number;
304
+ }, {
305
+ items: {
306
+ workerName: string;
307
+ phoneNumbers: string | null;
308
+ distanceKm: number;
309
+ travelMinutes: number | null;
310
+ travelTime: string | null;
311
+ travelMode: "DRIVE" | "TRANSIT";
312
+ carTravel: string | null;
313
+ transitTravel: string | null;
314
+ preferredTransport: string | null;
315
+ transportMethods: string | null;
316
+ matchedPostcode: string;
317
+ postcodeLevel: "unit" | "sector" | "district" | "area";
318
+ travelBorrowedKm: number | null;
319
+ travelFromPostcode: string | null;
320
+ postcode: string | null;
321
+ }[];
322
+ totalCount: number;
323
+ limit: number;
324
+ skip: number;
325
+ currentPage: number;
326
+ totalPages: number;
327
+ }>;
160
328
  export declare const CandidateLookupQuerySchema: z.ZodObject<{
161
329
  limit: z.ZodDefault<z.ZodNumber>;
162
330
  page: z.ZodDefault<z.ZodNumber>;
@@ -166,8 +334,8 @@ export declare const CandidateLookupQuerySchema: z.ZodObject<{
166
334
  radiusM: z.ZodDefault<z.ZodNumber>;
167
335
  }, "strip", z.ZodTypeAny, {
168
336
  limit: number;
169
- page: number;
170
337
  postcode: string;
338
+ page: number;
171
339
  tradeId: string;
172
340
  radiusM: number;
173
341
  }, {
@@ -191,8 +359,8 @@ export declare const candidateLookupContract: {
191
359
  radiusM: z.ZodDefault<z.ZodNumber>;
192
360
  }, "strip", z.ZodTypeAny, {
193
361
  limit: number;
194
- page: number;
195
362
  postcode: string;
363
+ page: number;
196
364
  tradeId: string;
197
365
  radiusM: number;
198
366
  }, {
@@ -387,5 +555,220 @@ export declare const candidateLookupContract: {
387
555
  }>;
388
556
  };
389
557
  };
558
+ lookupWithWorkerPostcode: {
559
+ metadata: {
560
+ tags: string[];
561
+ };
562
+ query: z.ZodObject<{
563
+ limit: z.ZodDefault<z.ZodNumber>;
564
+ page: z.ZodDefault<z.ZodNumber>;
565
+ } & {
566
+ postcode: z.ZodString;
567
+ tradeId: z.ZodString;
568
+ radiusM: z.ZodDefault<z.ZodNumber>;
569
+ }, "strip", z.ZodTypeAny, {
570
+ limit: number;
571
+ postcode: string;
572
+ page: number;
573
+ tradeId: string;
574
+ radiusM: number;
575
+ }, {
576
+ postcode: string;
577
+ tradeId: string;
578
+ limit?: number | undefined;
579
+ page?: number | undefined;
580
+ radiusM?: number | undefined;
581
+ }>;
582
+ summary: "Curated workers near a postcode, including worker postcode";
583
+ method: "GET";
584
+ path: "/v2/candidate-lookup-with-worker-postcode";
585
+ responses: {
586
+ 200: z.ZodObject<{
587
+ items: z.ZodArray<z.ZodObject<{
588
+ workerName: z.ZodString;
589
+ phoneNumbers: z.ZodNullable<z.ZodString>;
590
+ distanceKm: z.ZodNumber;
591
+ travelMinutes: z.ZodNullable<z.ZodNumber>;
592
+ travelTime: z.ZodNullable<z.ZodString>;
593
+ travelMode: z.ZodEnum<["DRIVE", "TRANSIT"]>;
594
+ carTravel: z.ZodNullable<z.ZodString>;
595
+ transitTravel: z.ZodNullable<z.ZodString>;
596
+ preferredTransport: z.ZodNullable<z.ZodString>;
597
+ transportMethods: z.ZodNullable<z.ZodString>;
598
+ matchedPostcode: z.ZodString;
599
+ postcodeLevel: z.ZodEnum<["unit", "sector", "district", "area"]>;
600
+ travelBorrowedKm: z.ZodNullable<z.ZodNumber>;
601
+ /**
602
+ * The postcode of the job the travel time was borrowed from, or null when no
603
+ * time could be borrowed. Travel times are never computed for the requested
604
+ * postcode itself — they come from a live job at that postcode sharing the
605
+ * requested trade. Surfacing the source keeps a borrowed number legible as
606
+ * borrowed.
607
+ */
608
+ travelFromPostcode: z.ZodNullable<z.ZodString>;
609
+ } & {
610
+ postcode: z.ZodNullable<z.ZodString>;
611
+ }, "strip", z.ZodTypeAny, {
612
+ workerName: string;
613
+ phoneNumbers: string | null;
614
+ distanceKm: number;
615
+ travelMinutes: number | null;
616
+ travelTime: string | null;
617
+ travelMode: "DRIVE" | "TRANSIT";
618
+ carTravel: string | null;
619
+ transitTravel: string | null;
620
+ preferredTransport: string | null;
621
+ transportMethods: string | null;
622
+ matchedPostcode: string;
623
+ postcodeLevel: "unit" | "sector" | "district" | "area";
624
+ travelBorrowedKm: number | null;
625
+ travelFromPostcode: string | null;
626
+ postcode: string | null;
627
+ }, {
628
+ workerName: string;
629
+ phoneNumbers: string | null;
630
+ distanceKm: number;
631
+ travelMinutes: number | null;
632
+ travelTime: string | null;
633
+ travelMode: "DRIVE" | "TRANSIT";
634
+ carTravel: string | null;
635
+ transitTravel: string | null;
636
+ preferredTransport: string | null;
637
+ transportMethods: string | null;
638
+ matchedPostcode: string;
639
+ postcodeLevel: "unit" | "sector" | "district" | "area";
640
+ travelBorrowedKm: number | null;
641
+ travelFromPostcode: string | null;
642
+ postcode: string | null;
643
+ }>, "many">;
644
+ totalCount: z.ZodNumber;
645
+ limit: z.ZodNumber;
646
+ skip: z.ZodNumber;
647
+ currentPage: z.ZodNumber;
648
+ totalPages: z.ZodNumber;
649
+ }, "strip", z.ZodTypeAny, {
650
+ items: {
651
+ workerName: string;
652
+ phoneNumbers: string | null;
653
+ distanceKm: number;
654
+ travelMinutes: number | null;
655
+ travelTime: string | null;
656
+ travelMode: "DRIVE" | "TRANSIT";
657
+ carTravel: string | null;
658
+ transitTravel: string | null;
659
+ preferredTransport: string | null;
660
+ transportMethods: string | null;
661
+ matchedPostcode: string;
662
+ postcodeLevel: "unit" | "sector" | "district" | "area";
663
+ travelBorrowedKm: number | null;
664
+ travelFromPostcode: string | null;
665
+ postcode: string | null;
666
+ }[];
667
+ totalCount: number;
668
+ limit: number;
669
+ skip: number;
670
+ currentPage: number;
671
+ totalPages: number;
672
+ }, {
673
+ items: {
674
+ workerName: string;
675
+ phoneNumbers: string | null;
676
+ distanceKm: number;
677
+ travelMinutes: number | null;
678
+ travelTime: string | null;
679
+ travelMode: "DRIVE" | "TRANSIT";
680
+ carTravel: string | null;
681
+ transitTravel: string | null;
682
+ preferredTransport: string | null;
683
+ transportMethods: string | null;
684
+ matchedPostcode: string;
685
+ postcodeLevel: "unit" | "sector" | "district" | "area";
686
+ travelBorrowedKm: number | null;
687
+ travelFromPostcode: string | null;
688
+ postcode: string | null;
689
+ }[];
690
+ totalCount: number;
691
+ limit: number;
692
+ skip: number;
693
+ currentPage: number;
694
+ totalPages: number;
695
+ }>;
696
+ 400: z.ZodObject<{
697
+ statusCode: z.ZodNumber;
698
+ message: z.ZodString;
699
+ code: z.ZodString;
700
+ details: z.ZodOptional<z.ZodUnknown>;
701
+ timestamp: z.ZodString;
702
+ path: z.ZodString;
703
+ correlationId: z.ZodOptional<z.ZodString>;
704
+ }, "strip", z.ZodTypeAny, {
705
+ code: string;
706
+ path: string;
707
+ message: string;
708
+ statusCode: number;
709
+ timestamp: string;
710
+ details?: unknown;
711
+ correlationId?: string | undefined;
712
+ }, {
713
+ code: string;
714
+ path: string;
715
+ message: string;
716
+ statusCode: number;
717
+ timestamp: string;
718
+ details?: unknown;
719
+ correlationId?: string | undefined;
720
+ }>;
721
+ 401: z.ZodObject<{
722
+ statusCode: z.ZodNumber;
723
+ message: z.ZodString;
724
+ code: z.ZodString;
725
+ details: z.ZodOptional<z.ZodUnknown>;
726
+ timestamp: z.ZodString;
727
+ path: z.ZodString;
728
+ correlationId: z.ZodOptional<z.ZodString>;
729
+ }, "strip", z.ZodTypeAny, {
730
+ code: string;
731
+ path: string;
732
+ message: string;
733
+ statusCode: number;
734
+ timestamp: string;
735
+ details?: unknown;
736
+ correlationId?: string | undefined;
737
+ }, {
738
+ code: string;
739
+ path: string;
740
+ message: string;
741
+ statusCode: number;
742
+ timestamp: string;
743
+ details?: unknown;
744
+ correlationId?: string | undefined;
745
+ }>;
746
+ 429: z.ZodObject<{
747
+ statusCode: z.ZodNumber;
748
+ message: z.ZodString;
749
+ code: z.ZodString;
750
+ details: z.ZodOptional<z.ZodUnknown>;
751
+ timestamp: z.ZodString;
752
+ path: z.ZodString;
753
+ correlationId: z.ZodOptional<z.ZodString>;
754
+ }, "strip", z.ZodTypeAny, {
755
+ code: string;
756
+ path: string;
757
+ message: string;
758
+ statusCode: number;
759
+ timestamp: string;
760
+ details?: unknown;
761
+ correlationId?: string | undefined;
762
+ }, {
763
+ code: string;
764
+ path: string;
765
+ message: string;
766
+ statusCode: number;
767
+ timestamp: string;
768
+ details?: unknown;
769
+ correlationId?: string | undefined;
770
+ }>;
771
+ };
772
+ };
390
773
  };
391
774
  //# sourceMappingURL=candidate-lookup.contract.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"candidate-lookup.contract.d.ts","sourceRoot":"","sources":["../../contracts/candidate-lookup/candidate-lookup.contract.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAOxB,eAAO,MAAM,wBAAwB;;;;;;;;;;;;;;IAcnC;;;;;;OAMG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAEH,CAAC;AAEH,MAAM,MAAM,kBAAkB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,wBAAwB,CAAC,CAAC;AAE1E,eAAO,MAAM,6BAA6B;;;;;;;;;;;;;;;QAZxC;;;;;;WAMG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAQJ,CAAC;AAEF,eAAO,MAAM,0BAA0B;;;;;;;;;;;;;;;;;;;EAIrC,CAAC;AAEH,eAAO,MAAM,uBAAuB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;oBAtBlC;;;;;;uBAMG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA8BH,CAAC"}
1
+ {"version":3,"file":"candidate-lookup.contract.d.ts","sourceRoot":"","sources":["../../contracts/candidate-lookup/candidate-lookup.contract.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAOxB,eAAO,MAAM,wBAAwB;;;;;;;;;;;;;;IAcnC;;;;;;OAMG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAEH,CAAC;AAEH,MAAM,MAAM,kBAAkB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,wBAAwB,CAAC,CAAC;AAE1E,eAAO,MAAM,6BAA6B;;;;;;;;;;;;;;;QAZxC;;;;;;WAMG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAQJ,CAAC;AAEF,eAAO,MAAM,0CAA0C;;;;;;;;;;;;;;IAhBrD;;;;;;OAMG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAaD,CAAC;AAEL,MAAM,MAAM,oCAAoC,GAAG,CAAC,CAAC,KAAK,CACxD,OAAO,0CAA0C,CAClD,CAAC;AAEF,eAAO,MAAM,+CAA+C;;;;;;;;;;;;;;;QAzB1D;;;;;;WAMG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAoBsE,CAAC;AAE5E,eAAO,MAAM,0BAA0B;;;;;;;;;;;;;;;;;;;EAIrC,CAAC;AAEH,eAAO,MAAM,uBAAuB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;oBAlClC;;;;;;uBAMG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;oBANH;;;;;;uBAMG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAuDH,CAAC"}
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.candidateLookupContract = exports.CandidateLookupQuerySchema = exports.CandidateLookupResponseSchema = exports.CandidateLookupRowSchema = void 0;
3
+ exports.candidateLookupContract = exports.CandidateLookupQuerySchema = exports.CandidateLookupWithWorkerPostcodeResponseSchema = exports.CandidateLookupWithWorkerPostcodeRowSchema = exports.CandidateLookupResponseSchema = exports.CandidateLookupRowSchema = void 0;
4
4
  const core_1 = require("@ts-rest/core");
5
5
  const zod_1 = require("zod");
6
6
  const error_schemas_1 = require("../common/error-schemas");
@@ -31,6 +31,10 @@ exports.CandidateLookupRowSchema = zod_1.z.object({
31
31
  travelFromPostcode: zod_1.z.string().nullable(),
32
32
  });
33
33
  exports.CandidateLookupResponseSchema = (0, pagination_schema_1.createPaginatedResponseSchema)(exports.CandidateLookupRowSchema);
34
+ exports.CandidateLookupWithWorkerPostcodeRowSchema = exports.CandidateLookupRowSchema.extend({
35
+ postcode: zod_1.z.string().nullable(),
36
+ });
37
+ exports.CandidateLookupWithWorkerPostcodeResponseSchema = (0, pagination_schema_1.createPaginatedResponseSchema)(exports.CandidateLookupWithWorkerPostcodeRowSchema);
34
38
  exports.CandidateLookupQuerySchema = pagination_query_schema_1.PaginationQuerySchema.extend({
35
39
  postcode: zod_1.z.string().trim().min(1).max(10),
36
40
  tradeId: zod_1.z.string().uuid(),
@@ -50,4 +54,17 @@ exports.candidateLookupContract = c.router({
50
54
  summary: 'Curated workers near a postcode for a given trade',
51
55
  metadata: { tags: ['Candidate Lookup'] },
52
56
  },
57
+ lookupWithWorkerPostcode: {
58
+ method: 'GET',
59
+ path: '/v2/candidate-lookup-with-worker-postcode',
60
+ query: exports.CandidateLookupQuerySchema,
61
+ responses: {
62
+ 200: exports.CandidateLookupWithWorkerPostcodeResponseSchema,
63
+ 400: error_schemas_1.ErrorResponseSchema,
64
+ 401: error_schemas_1.ErrorResponseSchema,
65
+ 429: error_schemas_1.ErrorResponseSchema,
66
+ },
67
+ summary: 'Curated workers near a postcode, including worker postcode',
68
+ metadata: { tags: ['Candidate Lookup'] },
69
+ },
53
70
  });
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=candidate-lookup.contract.spec.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"candidate-lookup.contract.spec.d.ts","sourceRoot":"","sources":["../../contracts/candidate-lookup/candidate-lookup.contract.spec.ts"],"names":[],"mappings":""}
@@ -0,0 +1,75 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ Object.defineProperty(exports, "__esModule", { value: true });
36
+ const candidateLookup = __importStar(require("./candidate-lookup.contract"));
37
+ const row = {
38
+ workerName: 'Test Person',
39
+ phoneNumbers: '+447000000000',
40
+ distanceKm: 1.2,
41
+ travelMinutes: 8,
42
+ travelTime: '8min',
43
+ travelMode: 'TRANSIT',
44
+ carTravel: '2min',
45
+ transitTravel: '8min',
46
+ preferredTransport: null,
47
+ transportMethods: null,
48
+ postcode: 'SE24 9JU',
49
+ matchedPostcode: 'SE27',
50
+ postcodeLevel: 'district',
51
+ travelBorrowedKm: 0.76,
52
+ travelFromPostcode: 'SE27 9AB',
53
+ };
54
+ describe('CandidateLookupRowSchema', () => {
55
+ it('keeps the legacy response row unchanged when the query selects a worker postcode', () => {
56
+ const parsed = candidateLookup.CandidateLookupRowSchema.parse(row);
57
+ expect(parsed).not.toHaveProperty('postcode');
58
+ });
59
+ it('publishes a separate route whose response preserves the worker postcode', () => {
60
+ const route = candidateLookup.candidateLookupContract.lookupWithWorkerPostcode;
61
+ const schema = candidateLookup.CandidateLookupWithWorkerPostcodeRowSchema;
62
+ expect(route).toMatchObject({
63
+ method: 'GET',
64
+ path: '/v2/candidate-lookup-with-worker-postcode',
65
+ });
66
+ expect(route?.query.parse({
67
+ postcode: 'SE27',
68
+ tradeId: '84b16f4c-b38f-4685-a773-44050d496e30',
69
+ })).toEqual(candidateLookup.candidateLookupContract.lookup.query.parse({
70
+ postcode: 'SE27',
71
+ tradeId: '84b16f4c-b38f-4685-a773-44050d496e30',
72
+ }));
73
+ expect(schema?.parse(row).postcode).toBe('SE24 9JU');
74
+ });
75
+ });