@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.
- package/dist/abilities/abilities.contract.d.ts +3 -1
- package/dist/abilities/abilities.contract.d.ts.map +1 -1
- package/dist/abilities/abilities.contract.js +4 -1
- package/dist/abilities/first-agent.abilities.json +13 -0
- package/dist/abilities/outreach-service.abilities.json +14 -0
- package/dist/abilities/second-agent.abilities.json +13 -0
- package/dist/actives/actives.contract.d.ts +8657 -8657
- package/dist/bookings/bookings.contract.d.ts +13082 -13082
- package/dist/curated-worker-leads/candidate-coordination.contract.d.ts +4322 -4322
- package/dist/curated-worker-leads/candidate-edit-session.contract.d.ts +398 -398
- package/dist/curated-worker-leads/consent-queue.contract.d.ts +1205 -1205
- package/dist/curated-worker-leads/jobs-tab.contract.d.ts +5811 -5629
- package/dist/curated-worker-leads/jobs-tab.contract.d.ts.map +1 -1
- package/dist/curated-worker-leads/jobs-tab.contract.js +31 -1
- package/dist/curated-worker-leads/owned-jobs-tab.contract.d.ts +190 -190
- package/dist/dashboards/dashboard-widgets.contract.d.ts +262 -262
- package/dist/export-jobs/export-jobs.contract.d.ts +828 -818
- package/dist/export-jobs/export-jobs.contract.d.ts.map +1 -1
- package/dist/exports-events/exports-events.schemas.d.ts +2 -2
- package/dist/index.d.ts +4 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +4 -0
- package/dist/jobs/jobs.contract.d.ts +9534 -9522
- package/dist/jobs/jobs.contract.d.ts.map +1 -1
- package/dist/jobs/jobs.contract.js +9 -0
- package/dist/notifications/notifications.contract.d.ts +42 -42
- package/dist/outreach/__tests__/outreach-claim.test.js +1 -0
- package/dist/outreach/__tests__/outreach-contract-additions.spec.d.ts +2 -0
- package/dist/outreach/__tests__/outreach-contract-additions.spec.d.ts.map +1 -0
- package/dist/outreach/__tests__/outreach-contract-additions.spec.js +78 -0
- package/dist/outreach/__tests__/outreach-requests.contract.spec.d.ts +2 -0
- package/dist/outreach/__tests__/outreach-requests.contract.spec.d.ts.map +1 -0
- package/dist/outreach/__tests__/outreach-requests.contract.spec.js +64 -0
- package/dist/outreach/__tests__/outreach.schemas.test.js +5 -1
- package/dist/outreach/outreach-requests.contract.d.ts +1108 -0
- package/dist/outreach/outreach-requests.contract.d.ts.map +1 -0
- package/dist/outreach/outreach-requests.contract.js +134 -0
- package/dist/outreach/outreach-requests.schemas.d.ts +49 -0
- package/dist/outreach/outreach-requests.schemas.d.ts.map +1 -0
- package/dist/outreach/outreach-requests.schemas.js +60 -0
- package/dist/outreach/outreach.contract.d.ts +145 -135
- package/dist/outreach/outreach.contract.d.ts.map +1 -1
- package/dist/outreach/outreach.schemas.d.ts +15 -10
- package/dist/outreach/outreach.schemas.d.ts.map +1 -1
- package/dist/outreach/outreach.schemas.js +5 -2
- 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
|
|
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');
|