Skip to content

Commit 218662e

Browse files
committed
Unify envelope with letter-rendering domain events using origin subject prefix
1 parent 70e8ca9 commit 218662e

19 files changed

+42
-30
lines changed

internal/events/README.md

Lines changed: 9 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -49,13 +49,13 @@ Defines the constrained CloudEvents 1.0 envelope used across Notify. It enforces
4949
`PENDING | ACCEPTED | REJECTED | PRINTED | ENCLOSED | CANCELLED | DISPATCHED | FAILED | RETURNED | DESTROYED | FORWARDED | DELIVERED`
5050
* `$Letter` domain object, extending a `DomainBase('Letter')` (see helpers package) with:
5151
* `domainId` (branded identifier)
52-
* `sourceSubject`original resource subject
52+
* `origin` – resource identifiers from the origin domain
5353
* `status` – one of `$LetterStatus`
5454
* Optional `reasonCode`, `reasonText`
5555

5656
### 3. Per‑Status Event Schemas
5757

58-
`letter-change-events.ts` programmatically creates a schema per status by extending `$EnvelopeProfile` and replacing `data` with the domain payload. Each schema enforces:
58+
`letter-events.ts` programmatically creates a schema per status by extending `$EnvelopeProfile` and replacing `data` with the domain payload. Each schema enforces:
5959

6060
* `type = uk.nhs.notify.supplier-api.letter.<STATUS>.v1`
6161
* `dataschema` matches: `https://notify.nhs.uk/events/supplier-api/letter/<STATUS>/1.<minor>.<patch>.json`
@@ -128,15 +128,19 @@ const schema = statusChangeEvents[`letter.${status}`];
128128
const event = {
129129
specversion: '1.0',
130130
id: randomUUID(),
131-
source: '/data-plane/supplier-api',
132-
subject: 'customer/1b20f918-bb05-4c78-a4aa-5f6a3b8e0c91/letter/4a5a9cb5-1440-4a12-bd72-baa7cfecd111',
131+
source: '/data-plane/supplier-api/prod/letter-status-change',
132+
subject: 'origin/letter-rendering/letter/4a5a9cb5-1440-4a12-bd72-baa7cfecd111',
133133
type: 'uk.nhs.notify.supplier-api.letter.ACCEPTED.v1',
134134
time: new Date().toISOString(),
135135
dataschema: 'https://notify.nhs.uk/events/supplier-api/letter/ACCEPTED/1.0.0.json',
136136
dataschemaversion: '1.0.0',
137137
data: {
138138
domainId: 'abc123',
139-
sourceSubject: 'customer/.../letter/...',
139+
origin: {
140+
domain: 'letter-rendering',
141+
source: '/data-plane/letter-rendering/prod/render-pdf',
142+
subject: 'origin/.../letter-request/...'
143+
},
140144
status: 'ACCEPTED',
141145
},
142146
traceparent: '00-0af7651916cd43dd8448eb211c80319c-b7ad6b7169203331-01',

internal/events/schemas/events/letter.ACCEPTED.schema.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,7 @@
4040
"title": "Event Subject",
4141
"description": "Resource path (no leading slash) within the source made of segments separated by '/'.",
4242
"examples": [
43-
"customer/920fca11-596a-4eca-9c47-99f624614658/order/769acdd4-6a47-496f-999f-76a6fd2c3959/item/4f5e17c0-ec57-4cee-9a86-14580cf5af7d"
43+
"origin/920fca11-596a-4eca-9c47-99f624614658/order/769acdd4-6a47-496f-999f-76a6fd2c3959/item/4f5e17c0-ec57-4cee-9a86-14580cf5af7d"
4444
],
4545
"type": "string",
4646
"minLength": 5,

internal/events/schemas/events/letter.CANCELLED.schema.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,7 @@
4040
"title": "Event Subject",
4141
"description": "Resource path (no leading slash) within the source made of segments separated by '/'.",
4242
"examples": [
43-
"customer/920fca11-596a-4eca-9c47-99f624614658/order/769acdd4-6a47-496f-999f-76a6fd2c3959/item/4f5e17c0-ec57-4cee-9a86-14580cf5af7d"
43+
"origin/920fca11-596a-4eca-9c47-99f624614658/order/769acdd4-6a47-496f-999f-76a6fd2c3959/item/4f5e17c0-ec57-4cee-9a86-14580cf5af7d"
4444
],
4545
"type": "string",
4646
"minLength": 5,

internal/events/schemas/events/letter.DELIVERED.schema.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,7 @@
4040
"title": "Event Subject",
4141
"description": "Resource path (no leading slash) within the source made of segments separated by '/'.",
4242
"examples": [
43-
"customer/920fca11-596a-4eca-9c47-99f624614658/order/769acdd4-6a47-496f-999f-76a6fd2c3959/item/4f5e17c0-ec57-4cee-9a86-14580cf5af7d"
43+
"origin/920fca11-596a-4eca-9c47-99f624614658/order/769acdd4-6a47-496f-999f-76a6fd2c3959/item/4f5e17c0-ec57-4cee-9a86-14580cf5af7d"
4444
],
4545
"type": "string",
4646
"minLength": 5,

internal/events/schemas/events/letter.DISPATCHED.schema.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,7 @@
4040
"title": "Event Subject",
4141
"description": "Resource path (no leading slash) within the source made of segments separated by '/'.",
4242
"examples": [
43-
"customer/920fca11-596a-4eca-9c47-99f624614658/order/769acdd4-6a47-496f-999f-76a6fd2c3959/item/4f5e17c0-ec57-4cee-9a86-14580cf5af7d"
43+
"origin/920fca11-596a-4eca-9c47-99f624614658/order/769acdd4-6a47-496f-999f-76a6fd2c3959/item/4f5e17c0-ec57-4cee-9a86-14580cf5af7d"
4444
],
4545
"type": "string",
4646
"minLength": 5,

internal/events/schemas/events/letter.ENCLOSED.schema.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,7 @@
4040
"title": "Event Subject",
4141
"description": "Resource path (no leading slash) within the source made of segments separated by '/'.",
4242
"examples": [
43-
"customer/920fca11-596a-4eca-9c47-99f624614658/order/769acdd4-6a47-496f-999f-76a6fd2c3959/item/4f5e17c0-ec57-4cee-9a86-14580cf5af7d"
43+
"origin/920fca11-596a-4eca-9c47-99f624614658/order/769acdd4-6a47-496f-999f-76a6fd2c3959/item/4f5e17c0-ec57-4cee-9a86-14580cf5af7d"
4444
],
4545
"type": "string",
4646
"minLength": 5,

internal/events/schemas/events/letter.FAILED.schema.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,7 @@
4040
"title": "Event Subject",
4141
"description": "Resource path (no leading slash) within the source made of segments separated by '/'.",
4242
"examples": [
43-
"customer/920fca11-596a-4eca-9c47-99f624614658/order/769acdd4-6a47-496f-999f-76a6fd2c3959/item/4f5e17c0-ec57-4cee-9a86-14580cf5af7d"
43+
"origin/920fca11-596a-4eca-9c47-99f624614658/order/769acdd4-6a47-496f-999f-76a6fd2c3959/item/4f5e17c0-ec57-4cee-9a86-14580cf5af7d"
4444
],
4545
"type": "string",
4646
"minLength": 5,

internal/events/schemas/events/letter.FORWARDED.schema.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,7 @@
4040
"title": "Event Subject",
4141
"description": "Resource path (no leading slash) within the source made of segments separated by '/'.",
4242
"examples": [
43-
"customer/920fca11-596a-4eca-9c47-99f624614658/order/769acdd4-6a47-496f-999f-76a6fd2c3959/item/4f5e17c0-ec57-4cee-9a86-14580cf5af7d"
43+
"origin/920fca11-596a-4eca-9c47-99f624614658/order/769acdd4-6a47-496f-999f-76a6fd2c3959/item/4f5e17c0-ec57-4cee-9a86-14580cf5af7d"
4444
],
4545
"type": "string",
4646
"minLength": 5,

internal/events/schemas/events/letter.PENDING.schema.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,7 @@
4040
"title": "Event Subject",
4141
"description": "Resource path (no leading slash) within the source made of segments separated by '/'.",
4242
"examples": [
43-
"customer/920fca11-596a-4eca-9c47-99f624614658/order/769acdd4-6a47-496f-999f-76a6fd2c3959/item/4f5e17c0-ec57-4cee-9a86-14580cf5af7d"
43+
"origin/920fca11-596a-4eca-9c47-99f624614658/order/769acdd4-6a47-496f-999f-76a6fd2c3959/item/4f5e17c0-ec57-4cee-9a86-14580cf5af7d"
4444
],
4545
"type": "string",
4646
"minLength": 5,

internal/events/schemas/events/letter.PRINTED.schema.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,7 @@
4040
"title": "Event Subject",
4141
"description": "Resource path (no leading slash) within the source made of segments separated by '/'.",
4242
"examples": [
43-
"customer/920fca11-596a-4eca-9c47-99f624614658/order/769acdd4-6a47-496f-999f-76a6fd2c3959/item/4f5e17c0-ec57-4cee-9a86-14580cf5af7d"
43+
"origin/920fca11-596a-4eca-9c47-99f624614658/order/769acdd4-6a47-496f-999f-76a6fd2c3959/item/4f5e17c0-ec57-4cee-9a86-14580cf5af7d"
4444
],
4545
"type": "string",
4646
"minLength": 5,

0 commit comments

Comments
 (0)