@dakkitor/api-contracts 1.4.0 → 1.5.0

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 (46) hide show
  1. package/dist/abilities/abilities.contract.d.ts +3 -1
  2. package/dist/abilities/abilities.contract.d.ts.map +1 -1
  3. package/dist/abilities/abilities.contract.js +4 -1
  4. package/dist/abilities/first-agent.abilities.json +13 -0
  5. package/dist/abilities/outreach-service.abilities.json +14 -0
  6. package/dist/abilities/second-agent.abilities.json +13 -0
  7. package/dist/actives/actives.contract.d.ts +8657 -8657
  8. package/dist/bookings/bookings.contract.d.ts +13082 -13082
  9. package/dist/curated-worker-leads/candidate-coordination.contract.d.ts +4322 -4322
  10. package/dist/curated-worker-leads/candidate-edit-session.contract.d.ts +398 -398
  11. package/dist/curated-worker-leads/consent-queue.contract.d.ts +1205 -1205
  12. package/dist/curated-worker-leads/jobs-tab.contract.d.ts +5811 -5629
  13. package/dist/curated-worker-leads/jobs-tab.contract.d.ts.map +1 -1
  14. package/dist/curated-worker-leads/jobs-tab.contract.js +31 -1
  15. package/dist/curated-worker-leads/owned-jobs-tab.contract.d.ts +190 -190
  16. package/dist/dashboards/dashboard-widgets.contract.d.ts +262 -262
  17. package/dist/export-jobs/export-jobs.contract.d.ts +828 -818
  18. package/dist/export-jobs/export-jobs.contract.d.ts.map +1 -1
  19. package/dist/exports-events/exports-events.schemas.d.ts +2 -2
  20. package/dist/index.d.ts +4 -0
  21. package/dist/index.d.ts.map +1 -1
  22. package/dist/index.js +4 -0
  23. package/dist/jobs/jobs.contract.d.ts +9534 -9522
  24. package/dist/jobs/jobs.contract.d.ts.map +1 -1
  25. package/dist/jobs/jobs.contract.js +9 -0
  26. package/dist/notifications/notifications.contract.d.ts +42 -42
  27. package/dist/outreach/__tests__/outreach-claim.test.js +1 -0
  28. package/dist/outreach/__tests__/outreach-contract-additions.spec.d.ts +2 -0
  29. package/dist/outreach/__tests__/outreach-contract-additions.spec.d.ts.map +1 -0
  30. package/dist/outreach/__tests__/outreach-contract-additions.spec.js +78 -0
  31. package/dist/outreach/__tests__/outreach-requests.contract.spec.d.ts +2 -0
  32. package/dist/outreach/__tests__/outreach-requests.contract.spec.d.ts.map +1 -0
  33. package/dist/outreach/__tests__/outreach-requests.contract.spec.js +64 -0
  34. package/dist/outreach/__tests__/outreach.schemas.test.js +5 -1
  35. package/dist/outreach/outreach-requests.contract.d.ts +1108 -0
  36. package/dist/outreach/outreach-requests.contract.d.ts.map +1 -0
  37. package/dist/outreach/outreach-requests.contract.js +134 -0
  38. package/dist/outreach/outreach-requests.schemas.d.ts +49 -0
  39. package/dist/outreach/outreach-requests.schemas.d.ts.map +1 -0
  40. package/dist/outreach/outreach-requests.schemas.js +60 -0
  41. package/dist/outreach/outreach.contract.d.ts +145 -135
  42. package/dist/outreach/outreach.contract.d.ts.map +1 -1
  43. package/dist/outreach/outreach.schemas.d.ts +15 -10
  44. package/dist/outreach/outreach.schemas.d.ts.map +1 -1
  45. package/dist/outreach/outreach.schemas.js +5 -2
  46. package/package.json +1 -1
@@ -0,0 +1,64 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const bun_test_1 = require("bun:test");
4
+ const outreach_requests_contract_1 = require("../outreach-requests.contract");
5
+ (0, bun_test_1.describe)('outreachRequestsContract', () => {
6
+ (0, bun_test_1.it)('enumerates exactly the four request states', () => {
7
+ (0, bun_test_1.expect)(outreach_requests_contract_1.OutreachRequestStatusSchema.options).toEqual([
8
+ 'PENDING',
9
+ 'RUNNING',
10
+ 'COMPLETED',
11
+ 'CANCELLED',
12
+ ]);
13
+ });
14
+ (0, bun_test_1.it)('parses a request row', () => {
15
+ const parsed = outreach_requests_contract_1.OutreachRequestSchema.parse({
16
+ id: '11111111-1111-4111-8111-111111111111',
17
+ jobId: '22222222-2222-4222-8222-222222222222',
18
+ status: 'PENDING',
19
+ eligibleAtRequest: 214,
20
+ requestedByName: 'Priya Shah',
21
+ contactedCount: 0,
22
+ createdAt: '2026-07-29T09:00:00.000Z',
23
+ startedAt: null,
24
+ completedAt: null,
25
+ });
26
+ (0, bun_test_1.expect)(parsed.status).toBe('PENDING');
27
+ });
28
+ (0, bun_test_1.it)('carries job facts on a queue item so the rack can label a campaign', () => {
29
+ const item = outreach_requests_contract_1.OutreachRequestQueueItemSchema.parse({
30
+ id: '11111111-1111-4111-8111-111111111111',
31
+ jobId: '22222222-2222-4222-8222-222222222222',
32
+ status: 'RUNNING',
33
+ eligibleAtRequest: 12,
34
+ requestedByName: null,
35
+ contactedCount: 3,
36
+ createdAt: '2026-07-29T09:00:00.000Z',
37
+ startedAt: '2026-07-29T09:05:00.000Z',
38
+ completedAt: null,
39
+ job: {
40
+ title: 'Need 1 x bricklayer',
41
+ trade: 'Bricklayer',
42
+ payText: '£20 per hour',
43
+ locationText: 'SW1A 1AA',
44
+ createdByName: 'Sam Okoro',
45
+ },
46
+ });
47
+ // `trade` is the label Relay Lab shows: `title` is j.description, the raw
48
+ // ad text. `locationText` is the job postcode, carried since 1.4.0.
49
+ (0, bun_test_1.expect)(item.job.trade).toBe('Bricklayer');
50
+ (0, bun_test_1.expect)(item.job.locationText).toBe('SW1A 1AA');
51
+ });
52
+ (0, bun_test_1.it)('routes both lanes under /v2', () => {
53
+ (0, bun_test_1.expect)(outreach_requests_contract_1.outreachRequestsContract.create.path).toBe('/v2/outreach/requests');
54
+ (0, bun_test_1.expect)(outreach_requests_contract_1.outreachRequestsContract.list.path).toBe('/v2/outreach/requests');
55
+ (0, bun_test_1.expect)(outreach_requests_contract_1.outreachRequestsContract.list.method).toBe('GET');
56
+ (0, bun_test_1.expect)(outreach_requests_contract_1.outreachRequestsContract.cancel.path).toBe('/v2/outreach/requests/:id/cancel');
57
+ (0, bun_test_1.expect)(outreach_requests_contract_1.outreachRequestsContract.start.path).toBe('/v2/outreach/requests/:id/start');
58
+ (0, bun_test_1.expect)(outreach_requests_contract_1.outreachRequestsContract.complete.path).toBe('/v2/outreach/requests/:id/complete');
59
+ });
60
+ (0, bun_test_1.it)('declares 200 on create, because a second click returns the open request', () => {
61
+ (0, bun_test_1.expect)(Object.keys(outreach_requests_contract_1.outreachRequestsContract.create.responses)).toContain('200');
62
+ (0, bun_test_1.expect)(Object.keys(outreach_requests_contract_1.outreachRequestsContract.create.responses)).not.toContain('409');
63
+ });
64
+ });
@@ -121,14 +121,17 @@ const job = outreach_schemas_1.OutreachJobSchema.safeParse({
121
121
  trade: 'CARPENTER',
122
122
  payText: '£180/day',
123
123
  locationText: 'Croydon, CR0',
124
+ createdByName: 'Sam Okoro',
124
125
  });
125
126
  node_assert_1.default.ok(job.success);
126
- // Real jobs routinely lack pay or trade text; those fields are nullable.
127
+ // Real jobs routinely lack pay, trade text, or a raising agent; those fields
128
+ // are nullable.
127
129
  const sparseJob = outreach_schemas_1.OutreachJobSchema.safeParse({
128
130
  title: 'Carpenter needed',
129
131
  trade: null,
130
132
  payText: null,
131
133
  locationText: null,
134
+ createdByName: null,
132
135
  });
133
136
  node_assert_1.default.ok(sparseJob.success);
134
137
  // title is not.
@@ -136,5 +139,6 @@ node_assert_1.default.ok(!outreach_schemas_1.OutreachJobSchema.safeParse({
136
139
  trade: null,
137
140
  payText: null,
138
141
  locationText: null,
142
+ createdByName: null,
139
143
  }).success);
140
144
  console.log('outreach.schemas OK');