PDMResourceAvailable.Flattened
2025-01-01 | ๐ 3177 words | โฑ 32 mins | ๐งพ History | โ NHS Notify | ๐ NHS Notify
No description available.
Known Issues / Todo
- โ This page is draft and is subject to rapid change, and may not be fully accurate or complete
PDMResourceAvailable.Flattened
No description available.
Schema Information
- Schema ID:
https://notify.nhs.uk/cloudevents/schemas/digital-letters/2025-10-draft/events/uk.nhs.notify.digital.letters.pdm.resource.available.v1.flattened.schema.json - Schema Version:
https://json-schema.org/draft/2020-12/schema - Source File:
digital-letters/2025-10-draft/events/uk.nhs.notify.digital.letters.pdm.resource.available.v1.flattened.schema.yaml
Properties
specversion
Type: string
CloudEvents specification version (fixed to 1.0).
Constant value: 1.0 Examples: 1.0 Comment: CloudEvents version used. Core attributes: specversion,id,source,type (+ optional subject,time,datacontenttype,dataschema,data). Ref: CloudEvents core spec.
id
Type: string
Unique identifier for this event instance (UUID).
Format: uuid Minimum length: 1 Examples: 6f1c2a53-3d54-4a0a-9a0b-0e9ae2d4c111 Comment: Unique per (source,id). This should be a randomly generated guid that represents the id of the event itself.
source
Type: unknown
No description available.
subject
Type: string
Resource path (no leading slash) within the source made of lowercase segments separated by โ/โ.
Format: uri-reference Pattern: ^(?:[a-z0-9-]+)(?:/[a-z0-9-]+)*$ Minimum length: 5 Examples: customer/920fca11-596a-4eca-9c47-99f624614658/order/769acdd4-6a47-496f-999f-76a6fd2c3959/item/4f5e17c0-ec57-4cee-9a86-14580cf5af7d Comment: URI path: must not start with โ/โ, only lowercase alphanumeric and hyphen segments separated by โ/โ, must not end with โ/โ.
type
Type: string
Versioned event type (uk.nhs.notify.*.
Minimum length: 1 Examples: uk.nhs.notify.ordering.order.read.v1 Comment: NHS naming: lower-dot namespaced; version suffix required (.v
time
Type: string
Timestamp when the event occurred (RFC 3339).
Format: date-time Examples: 2025-10-01T10:15:30.000Z Comment: RFC3339 UTC occurred-at (REQUIRED in NHS profile).
datacontenttype
Type: string
Media type for the data field (fixed to application/json).
Constant value: application/json Examples: application/json Comment: Usually application/json.
dataschema
Type: unknown
No description available.
data
Type: unknown
No description available.
traceparent
Type: string
W3C Trace Context traceparent header value.
Pattern: ^00-[0-9a-f]{32}-[0-9a-f]{16}-[0-9a-f]{2}$ Minimum length: 1 Examples: 00-0af7651916cd43dd8448eb211c80319c-b7ad6b7169203331-01 Comment: W3C Trace Context traceparent (required when tracing used).
tracestate
Type: string
Optional W3C Trace Context tracestate header value.
Examples: rojo=00f067aa0ba902b7,congo=t61rcWkgMzE Comment: W3C Trace Context tracestate (optional).
partitionkey
Type: string
Partition / ordering key (lowercase alphanumerics and hyphen, 1-64 chars).
Pattern: ^[a-z0-9-]+$ Minimum length: 1 Maximum length: 64 Examples: customer-920fca11 Comment: Non-empty partition key for scaling / causal grouping. Must be 1-64 characters, only lowercase letters, numbers, and hyphen.
recordedtime
Type: string
Timestamp when the event was recorded/persisted (should be >= time).
Format: date-time Examples: 2025-10-01T10:15:30.250Z Comment: Bitemporal created-at; should be >= time.
sampledrate
Type: integer
Sampling factor: number of similar occurrences this event represents.
Minimum: 1 Examples: 5 Comment: Integer > 0 indicating how many similar occurrences this event represents.
sequence
Type: string
Zero-padded 20 digit numeric sequence (lexicographically sortable).
Pattern: ^\d{20}$ Examples: 00000000000000000042 Comment: Lexicographically comparable ordering string per source. Must be a string of exactly 20 digits, left-padded with zeros, representing a 64-bit unsigned integer.
severitytext
Type: string
Log severity level name.
Allowed values: TRACE, DEBUG, INFO, WARN, ERROR, FATAL Examples: DEBUG Comment: Severity text (TRACE, DEBUG, INFO, WARN, ERROR, FATAL, etc.).
severitynumber
Type: integer
Numeric severity (TRACE=0, DEBUG=1, INFO=2, WARN=3, ERROR=4, FATAL=5).
Minimum: 0 Maximum: 5 Examples: 1 Comment: Numeric severity corresponding to severitytext (TRACE=0..FATAL=5).
dataclassification
Type: string
Data sensitivity classification.
Allowed values: public, internal, confidential, restricted Examples: restricted Comment: Data classification e.g. public|internal|confidential|restricted.
dataregulation
Type: string
Regulatory regime tag applied to this data.
Allowed values: GDPR, HIPAA, PCI-DSS, ISO-27001, NIST-800-53, CCPA Examples: ISO-27001 Comment: Regulation tags e.g. GDPR, HIPAA.
datacategory
Type: string
Data category classification (e.g. standard, special-category).
Allowed values: non-sensitive, standard, sensitive, special-category Examples: sensitive Comment: Example: special-category (GDPR), phi (HIPAA).
Required Fields
specversionidsourcesubjecttypetimerecordedtimeseveritynumbertraceparentdata
Type
object
Raw Schema
$id: https://notify.nhs.uk/cloudevents/schemas/digital-letters/2025-10-draft/events/uk.nhs.notify.digital.letters.pdm.resource.available.v1.flattened.schema.json
$schema: https://json-schema.org/draft/2020-12/schema
title: PDMResourceAvailable
type: object
properties:
specversion:
type: string
const: '1.0'
description: CloudEvents specification version (fixed to 1.0).
examples:
- '1.0'
$comment: 'CloudEvents version used. Core attributes: specversion,id,source,type
(+ optional subject,time,datacontenttype,dataschema,data). Ref: CloudEvents
core spec.'
id:
type: string
format: uuid
minLength: 1
description: Unique identifier for this event instance (UUID).
examples:
- 6f1c2a53-3d54-4a0a-9a0b-0e9ae2d4c111
$comment: Unique per (source,id). This should be a randomly generated guid that
represents the id of the event itself.
source:
allOf:
- type: string
pattern: ^/nhs/england/notify/(production|staging|development|uat)/(primary|secondary|dev-[0-9]+)/(data-plane|control-plane)(?:/[a-z0-9-]+)*$
minLength: 40
format: uri-reference
description: 'Logical event producer path: /nhs/england/notify/{environment}/{instance}/{plane}[/{service}...]
where environment=production|staging|development|uat, instance=primary|secondary|dev-{digits},
plane=data-plane|control-plane, and optional service/lowercase tokens follow.'
examples:
- /nhs/england/notify/production/primary/data-plane/ordering
- /nhs/england/notify/staging/secondary/control-plane/audit
- /nhs/england/notify/development/dev-12345/data-plane/ordering
$comment: 'Segments: /nhs/england/notify/{environment}/{instance}/{plane}[/{token}...];
environment in (production|staging|development|uat); instance in (primary|secondary|dev-<digits>
for ephemeral/dev sandboxes); plane in (data-plane|control-plane); subsequent
optional segments: lowercase alphanumeric or hyphen; no trailing slash.'
- type: string
pattern: ^/nhs/england/notify/(production|staging|development|uat)/(primary|secondary|dev-[0-9]+)/(data-plane|control-plane)/digitalletters
minLength: 40
format: uri-reference
- type: string
pattern: ^/nhs/england/notify/(production|staging|development|uat)/(primary|secondary|dev-[0-9]+)/(data-plane|control-plane)/digitalletters/pdm
minLength: 40
format: uri-reference
- type: string
pattern: ^/nhs/england/notify/(production|staging|development|uat)/(primary|secondary|dev-[0-9]+)/data-plane/digitalletters/pdm
description: Event source for digital letters.
subject:
type: string
pattern: ^(?:[a-z0-9-]+)(?:/[a-z0-9-]+)*$
minLength: 5
format: uri-reference
description: Resource path (no leading slash) within the source made of lowercase
segments separated by '/'.
examples:
- customer/920fca11-596a-4eca-9c47-99f624614658/order/769acdd4-6a47-496f-999f-76a6fd2c3959/item/4f5e17c0-ec57-4cee-9a86-14580cf5af7d
$comment: 'URI path: must not start with ''/'', only lowercase alphanumeric and
hyphen segments separated by ''/'', must not end with ''/''.'
type:
type: string
minLength: 1
allOf:
- name: NHS Notify versioned event type pattern
type: string
pattern: ^uk\.nhs\.notify\.[a-z0-9]+(?:\.[a-z0-9]+)*\.v[0-9]+$
description: Versioned event type (uk.nhs.notify.*.<segments>.vN) using reverse-DNS
style segments ending with .v<digits> (e.g. .v1, .v10).
examples:
- uk.nhs.notify.ordering.order.read.v1
$comment: 'Segments: lowercase a-z0-9; final segment is version marker v<digits>.
Allows arbitrary positive integer (no leading zero rule enforced).'
- name: Disallow 'completed' token
type: string
not:
pattern: (?:^|\.)completed(?:\.|$)
description: Disallow ambiguous past tense token 'completed'. Use a domain-specific
verb like read, created, published.
- name: Disallow 'finished' token
type: string
not:
pattern: (?:^|\.)finished(?:\.|$)
description: Disallow 'finished' which is temporal and ambiguous; choose a workflow-specific
terminal verb.
- name: Disallow 'updated' token
type: string
not:
pattern: (?:^|\.)updated(?:\.|$)
description: Disallow 'updated'; prefer a concrete action (e.g. order.modified.v1
-> order.change.applied).
- name: Disallow 'changed' token
type: string
not:
pattern: (?:^|\.)changed(?:\.|$)
description: Disallow vague 'changed'; specify the nature of the change (e.g.
status.changed -> status.transitioned).
- name: Disallow 'processed' token
type: string
not:
pattern: (?:^|\.)processed(?:\.|$)
description: Disallow 'processed'; state WHAT happened, not that a process occurred.
- name: Disallow 'handled' token
type: string
not:
pattern: (?:^|\.)handled(?:\.|$)
description: Disallow 'handled'; overly generic and not business meaningful.
- name: Disallow 'status' token
type: string
not:
pattern: (?:^|\.)status(?:\.|$)
description: Disallow bare 'status'; event types should represent a domain occurrence,
not a generic label.
- name: Disallow 'started' token
type: string
not:
pattern: (?:^|\.)started(?:\.|$)
description: Disallow 'started'; prefer a specific lifecycle action (e.g. session.opened).
- name: Disallow 'failed' token
type: string
not:
pattern: (?:^|\.)failed(?:\.|$)
description: Disallow 'failed'; model the concrete failure (e.g. payment.authorization.failed
-> payment.authorization.rejected).
- type: string
minLength: 1
allOf:
- name: NHS Notify versioned event type pattern
type: string
pattern: ^uk\.nhs\.notify\.digital\.letters\.[a-z0-9]+(?:\.[a-z0-9]+)*\.v[0-9]+$
- type: string
minLength: 1
allOf:
- name: NHS Notify versioned event type pattern
type: string
pattern: ^uk\.nhs\.notify\.digital\.letters\.pdm\.[a-z0-9]+(?:\.[a-z0-9]+)*\.v[0-9]+$
- type: string
const: uk.nhs.notify.digital.letters.pdm.resource.available.v1
description: Concrete versioned event type string for this event (.vN suffix).
description: Versioned event type (uk.nhs.notify.*.<segments>.vN) using reverse-DNS
style; final segment MUST be .v<digits>; ambiguous verbs (completed, finished,
updated, changed, processed, handled, status, started, failed) disallowed.
examples:
- uk.nhs.notify.ordering.order.read.v1
$comment: 'NHS naming: lower-dot namespaced; version suffix required (.v<digits>);
banned tokens anywhere before version: completed, finished, updated, changed,
processed, handled, status, started, failed.'
time:
type: string
format: date-time
description: Timestamp when the event occurred (RFC 3339).
examples:
- '2025-10-01T10:15:30.000Z'
$comment: RFC3339 UTC occurred-at (REQUIRED in NHS profile).
datacontenttype:
type: string
const: application/json
description: Media type for the data field (fixed to application/json).
examples:
- application/json
$comment: Usually application/json.
dataschema:
allOf:
- type: string
description: URI of a schema that describes the event payload (notify-payload).
examples:
- https://nhsdigital.github.io/nhs-notify-standards/cloudevents/nhs-notify-example-event-data.schema.json
$comment: URI to event payload schema.
- type: string
const: https://notify.nhs.uk/cloudevents/schemas/digital-letters/2025-10-draft/data/digital-letters-pdm-resource-available-data.schema.json
description: Canonical URI of the event's data schema.
examples:
- digital-letters-pdm-resource-available-data.schema.json
data:
allOf:
- type: object
description: Container object wrapping the structured Notify payload.
examples:
- notify-payload:
notify-data:
nhsNumber: '9434765919'
notify-metadata:
teamResponsible: Team 1
notifyDomain: Ordering
version: 1.3.0
$comment: Domain payload (arbitrary JSON value).
- $schema: https://json-schema.org/draft/2020-12/schema
title: PDMResourceAvailable Data
description: Base data of the PDMResourceAvailable event
type: object
additionalProperties: false
properties:
messageReference:
type: string
description: Globally unique reference for each message, provided by the
sender
examples:
- 19cd1d01-98c3-4ab8-a7b8-c1adabda7641
$comment: 'Dereferenced from: ../defs/requests.schema.json#/properties/messageReference'
senderId:
type: string
description: Identifier that the sender provided during onboarding. Provided
in the body of each FHIR resource submitted by the sender.
examples:
- Trust-12345
$comment: 'Dereferenced from: ../defs/requests.schema.json#/properties/senderId'
resourceId:
type: string
format: uuid
description: Identifier returned by PDM to the uploaded FHIR resource
examples:
- f5524783-e5d7-473e-b2a0-29582ff231da
$comment: 'Dereferenced from: ../defs/pdm.schema.json#/properties/resourceId'
nhsNumber:
type: string
description: Unique identifier of the intended recipient of the digital
letter
pattern: ^\d{10}$
minLength: 10
maxLength: 10
examples:
- '4857773456'
$comment: 'Dereferenced from: ../defs/requests.schema.json#/properties/nhsNumber'
odsCode:
type: string
description: The ODS Code of the sending organisation. Used to identify
the sender in NHS App
examples:
- ''
$comment: 'Dereferenced from: ../defs/requests.schema.json#/properties/odsCode'
required:
- messageReference
- senderId
- resourceId
- nhsNumber
- odsCode
$comment: 'Dereferenced from: ../data/digital-letters-pdm-resource-available-data.schema.json'
traceparent:
type: string
minLength: 1
pattern: ^00-[0-9a-f]{32}-[0-9a-f]{16}-[0-9a-f]{2}$
description: W3C Trace Context traceparent header value.
examples:
- 00-0af7651916cd43dd8448eb211c80319c-b7ad6b7169203331-01
$comment: W3C Trace Context traceparent (required when tracing used).
tracestate:
type: string
description: Optional W3C Trace Context tracestate header value.
examples:
- rojo=00f067aa0ba902b7,congo=t61rcWkgMzE
$comment: W3C Trace Context tracestate (optional).
partitionkey:
type: string
minLength: 1
maxLength: 64
pattern: ^[a-z0-9-]+$
description: Partition / ordering key (lowercase alphanumerics and hyphen, 1-64
chars).
examples:
- customer-920fca11
$comment: Non-empty partition key for scaling / causal grouping. Must be 1-64
characters, only lowercase letters, numbers, and hyphen.
recordedtime:
type: string
format: date-time
description: Timestamp when the event was recorded/persisted (should be >= time).
examples:
- '2025-10-01T10:15:30.250Z'
$comment: Bitemporal created-at; should be >= time.
sampledrate:
type: integer
minimum: 1
description: 'Sampling factor: number of similar occurrences this event represents.'
examples:
- 5
$comment: Integer > 0 indicating how many similar occurrences this event represents.
sequence:
type: string
pattern: ^\d{20}$
description: Zero-padded 20 digit numeric sequence (lexicographically sortable).
examples:
- '00000000000000000042'
$comment: Lexicographically comparable ordering string per source. Must be a string
of exactly 20 digits, left-padded with zeros, representing a 64-bit unsigned
integer.
severitytext:
type: string
enum:
- TRACE
- DEBUG
- INFO
- WARN
- ERROR
- FATAL
description: Log severity level name.
examples:
- DEBUG
$comment: Severity text (TRACE, DEBUG, INFO, WARN, ERROR, FATAL, etc.).
severitynumber:
type: integer
minimum: 0
maximum: 5
description: Numeric severity (TRACE=0, DEBUG=1, INFO=2, WARN=3, ERROR=4, FATAL=5).
examples:
- 1
$comment: Numeric severity corresponding to severitytext (TRACE=0..FATAL=5).
dataclassification:
type: string
enum:
- public
- internal
- confidential
- restricted
description: Data sensitivity classification.
examples:
- restricted
$comment: Data classification e.g. public|internal|confidential|restricted.
dataregulation:
type: string
enum:
- GDPR
- HIPAA
- PCI-DSS
- ISO-27001
- NIST-800-53
- CCPA
description: Regulatory regime tag applied to this data.
examples:
- ISO-27001
$comment: Regulation tags e.g. GDPR, HIPAA.
datacategory:
type: string
enum:
- non-sensitive
- standard
- sensitive
- special-category
description: Data category classification (e.g. standard, special-category).
examples:
- sensitive
$comment: 'Example: special-category (GDPR), phi (HIPAA).'
required:
- specversion
- id
- source
- subject
- type
- time
- recordedtime
- severitynumber
- traceparent
- data
$comment: Flattened (allOf resolved, properties merged with per-property allOf for
conflicts).