diff --git a/pact-contracts/pacts/letter-rendering/supplier-api-letter-request-prepared.json b/pact-contracts/pacts/letter-rendering/supplier-api-letter-request-prepared.json new file mode 100644 index 00000000..913266d2 --- /dev/null +++ b/pact-contracts/pacts/letter-rendering/supplier-api-letter-request-prepared.json @@ -0,0 +1,248 @@ +{ + "consumer": { + "name": "supplier-api" + }, + "messages": [ + { + "contents": { + "data": { + "campaignId": "flu-campaign-2025", + "clientId": "987e6543-21c0-4d5b-8f9a-abcdef123456", + "createdAt": "2025-07-29T08:45:00.000Z", + "domainId": "1y3q9987e6543-21c0-4d5b-8f9a-abcdef123456_34hEIElNxpdXPrNv6OBbU0bqNwG_34hEP2Xc3rGunPUAPe0Mst9IIoA", + "letterVariantId": "1y3q9v2zzzz", + "pageCount": 1, + "requestId": "34hEIFCIw5DUTCRDMGv70CEzGgF", + "requestItemId": "34hEIElNxpdXPrNv6OBbU0bqNwG", + "requestItemPlanId": "34hEP2Xc3rGunPUAPe0Mst9IIoA", + "sha256Hash": "3a7bd3e2360a3d80c4d4e8b1e3e5e6e7e8e9e0e1e2e3e4e5e6e7e8e9e0e1e2e3", + "status": "PREPARED", + "templateId": "template-005", + "url": "s3://comms-123456789012-eu-west-2-pdf-pipeline/rendered/client/35b9VJ4ejJZXk0Z9HtQI9khryiz_35b9VgjHJYKoseXAHWT9i44qSbz.pdf" + }, + "datacontenttype": "application/json", + "dataschema": "https://notify.nhs.uk/cloudevents/schemas/letter-rendering/letter-request.prepared.2.0.1.schema.json", + "dataschemaversion": "2.0.0", + "id": "12f1f09c-a555-4d9b-8405-0b33490bc929", + "plane": "data", + "recordedtime": "2025-08-28T08:45:00.000Z", + "severitynumber": 2, + "severitytext": "INFO", + "source": "/data-plane/letter-rendering/comms-mgr-prod/prod", + "specversion": "1.0", + "subject": "client/00f3b388-bbe9-41c9-9e76-052d37ee8988/letter-request/0o5Fs0EELR0fUjHjbCnEtdUwQe4_0o5Fs0EELR0fUjHjbCnEtdUwQe5", + "time": "2025-07-29T08:50:57.350Z", + "traceparent": "00-0af7651916cd43dd8448eb211c80319c-b7ad6b7169203331-01", + "type": "uk.nhs.notify.letter-rendering.letter-request.prepared.v2" + }, + "description": "LetterRequestPrepared", + "matchingRules": { + "body": { + "$.data.campaignId": { + "combine": "AND", + "matchers": [ + { + "match": "type" + } + ] + }, + "$.data.clientId": { + "combine": "AND", + "matchers": [ + { + "match": "type" + } + ] + }, + "$.data.createdAt": { + "combine": "AND", + "matchers": [ + { + "format": "yyyy-MM-dd'T'HH:mm:ss.SSS'Z'", + "match": "datetime" + } + ] + }, + "$.data.domainId": { + "combine": "AND", + "matchers": [ + { + "match": "type" + } + ] + }, + "$.data.letterVariantId": { + "combine": "AND", + "matchers": [ + { + "match": "type" + } + ] + }, + "$.data.pageCount": { + "combine": "AND", + "matchers": [ + { + "match": "number" + } + ] + }, + "$.data.requestId": { + "combine": "AND", + "matchers": [ + { + "match": "type" + } + ] + }, + "$.data.requestItemId": { + "combine": "AND", + "matchers": [ + { + "match": "type" + } + ] + }, + "$.data.requestItemPlanId": { + "combine": "AND", + "matchers": [ + { + "match": "type" + } + ] + }, + "$.data.sha256Hash": { + "combine": "AND", + "matchers": [ + { + "match": "type" + } + ] + }, + "$.data.templateId": { + "combine": "AND", + "matchers": [ + { + "match": "type" + } + ] + }, + "$.data.url": { + "combine": "AND", + "matchers": [ + { + "match": "regex", + "regex": "^s3:\\/\\/.+" + } + ] + }, + "$.dataschema": { + "combine": "AND", + "matchers": [ + { + "match": "regex", + "regex": "^https:\\/\\/notify\\.nhs\\.uk\\/cloudevents\\/schemas\\/letter-rendering\\/letter-request\\.prepared\\.2\\.\\d+\\.\\d+\\.schema\\.json$" + } + ] + }, + "$.dataschemaversion": { + "combine": "AND", + "matchers": [ + { + "match": "regex", + "regex": "\\d+\\.\\d+\\.\\d+" + } + ] + }, + "$.id": { + "combine": "AND", + "matchers": [ + { + "match": "regex", + "regex": "[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}" + } + ] + }, + "$.recordedtime": { + "combine": "AND", + "matchers": [ + { + "format": "yyyy-MM-dd'T'HH:mm:ss.SSS'Z'", + "match": "datetime" + } + ] + }, + "$.severitynumber": { + "combine": "AND", + "matchers": [ + { + "match": "number" + } + ] + }, + "$.source": { + "combine": "AND", + "matchers": [ + { + "match": "type" + } + ] + }, + "$.specversion": { + "combine": "AND", + "matchers": [ + { + "match": "regex", + "regex": "\\d+\\.\\d+" + } + ] + }, + "$.subject": { + "combine": "AND", + "matchers": [ + { + "match": "regex", + "regex": "^client\\/[\\d_a-z-]+\\/letter-request\\/[^/]+(?:\\/.*)?$" + } + ] + }, + "$.time": { + "combine": "AND", + "matchers": [ + { + "format": "yyyy-MM-dd'T'HH:mm:ss.SSS'Z'", + "match": "datetime" + } + ] + }, + "$.traceparent": { + "combine": "AND", + "matchers": [ + { + "match": "type" + } + ] + } + } + }, + "metadata": { + "contentType": "application/json" + } + } + ], + "metadata": { + "pact-js": { + "version": "16.0.2" + }, + "pactRust": { + "ffi": "0.4.28", + "models": "1.3.5" + }, + "pactSpecification": { + "version": "3.0.0" + } + }, + "provider": { + "name": "letter-request-prepared" + } +} \ No newline at end of file