diff --git a/.github/scripts/dispatch_internal_repo_workflow.sh b/.github/scripts/dispatch_internal_repo_workflow.sh index 714a3fed5..0a08d3002 100755 --- a/.github/scripts/dispatch_internal_repo_workflow.sh +++ b/.github/scripts/dispatch_internal_repo_workflow.sh @@ -104,6 +104,14 @@ while [[ $# -gt 0 ]]; do version="$2" shift 2 ;; + --tableName) # Table name (optional) + tableName="$2" + shift 2 + ;; + --force) # Force apply flag (optional) + force="$2" + shift 2 + ;; *) echo "[ERROR] Unknown argument: $1" exit 1 @@ -202,6 +210,14 @@ if [[ -z "$version" ]]; then version="" fi +if [{ -z "$tableName" }]; then + tableName="" +fi + +if [[ -z "$force" ]]; then + force="" +fi + echo "==================== Workflow Dispatch Parameters ====================" echo " infraRepoName: $infraRepoName" echo " releaseVersion: $releaseVersion" @@ -221,6 +237,8 @@ echo " apimEnvironment: $apimEnvironment" echo " boundedContext: $boundedContext" echo " targetDomain: $targetDomain" echo " version: $version" +echo " tableName: $tableName" +echo " force: $force" DISPATCH_EVENT=$(jq -ncM \ --arg infraRepoName "$infraRepoName" \ @@ -240,6 +258,8 @@ DISPATCH_EVENT=$(jq -ncM \ --arg boundedContext "$boundedContext" \ --arg targetDomain "$targetDomain" \ --arg version "$version" \ + --arg tableName "$tableName" \ + --arg force "$force" \ '{ "ref": "'"$internalRef"'", "inputs": ( @@ -255,6 +275,8 @@ DISPATCH_EVENT=$(jq -ncM \ (if $boundedContext != "" then { "boundedContext": $boundedContext } else {} end) + (if $targetDomain != "" then { "targetDomain": $targetDomain } else {} end) + (if $version != "" then { "version": $version } else {} end) + + (if $tableName != "" then { "tableName": $tableName } else {} end) + + (if $force != "" then { "force": $force } else {} end) + (if $targetAccountGroup != "" then { "targetAccountGroup": $targetAccountGroup } else {} end) + { "releaseVersion": $releaseVersion, @@ -269,7 +291,7 @@ echo "[INFO] Triggering workflow '$targetWorkflow' in nhs-notify-internal..." echo "[DEBUG] Dispatch event payload: $DISPATCH_EVENT" trigger_response=$(curl -s -L \ - --fail \ + --fail-with-body \ -X POST \ -H "Accept: application/vnd.github+json" \ -H "Authorization: Bearer ${PR_TRIGGER_PAT}" \ diff --git a/.github/workflows/stage-3-build.yaml b/.github/workflows/stage-3-build.yaml index 3d476c2d6..1cbb78848 100644 --- a/.github/workflows/stage-3-build.yaml +++ b/.github/workflows/stage-3-build.yaml @@ -161,7 +161,8 @@ jobs: --targetAccountGroup "nhs-notify-supplier-api-dev" \ --terraformAction "apply" \ --overrideProjectName "nhs" \ - --overrideRoleName "nhs-main-acct-supplier-api-github-deploy" + --overrideRoleName "nhs-main-acct-supplier-api-github-deploy" \ + --internalRef "feature/CCM-12444-supplier-config-publishing-workflow" artefact-proxies: name: "Build proxies" runs-on: ubuntu-latest @@ -184,3 +185,32 @@ jobs: runId: "${{ github.run_id }}" buildSandbox: true releaseVersion: ${{ github.head_ref || github.ref_name }} + populate-config: + name: "Populate Supplier Config" + runs-on: ubuntu-latest + needs: [pr-create-dynamic-environment] + timeout-minutes: 10 + + steps: + - name: "Checkout code" + uses: actions/checkout@93cb6efe18208431cddfb8368fd83d5badbf9bfd # v5 + - name: Set Environment Name + id: set-environment + run: echo "environment_name=${{ inputs.pr_number != '' && format('pr{0}', inputs.pr_number) || 'main' }}" >> $GITHUB_OUTPUT + - name: "Trigger populate config workflow in internal repo" + env: + APP_CLIENT_ID: ${{ secrets.APP_CLIENT_ID }} + APP_PEM_FILE: ${{ secrets.APP_PEM_FILE }} + PR_NUMBER: ${{ inputs.pr_number }} + shell: bash + run: | + .github/scripts/dispatch_internal_repo_workflow.sh \ + --infraRepoName "$(echo ${{ github.repository }} | cut -d'/' -f2)" \ + --releaseVersion ${{ github.head_ref || github.ref_name }} \ + --targetWorkflow "publish-supplier-config.yaml" \ + --targetEnvironment "${{ steps.set-environment.outputs.environment_name }}" \ + --targetComponent "config" \ + --targetAccountGroup "nhs-notify-suppliers-dev" \ + --tableName "supplier-config" \ + --internalRef "feature/CCM-12444-supplier-config-publishing-workflow" \ + --force "false" diff --git a/config/suppliers/letter-variant/digitrials-aspiring.json b/config/suppliers/letter-variant/digitrials-aspiring.json new file mode 100644 index 000000000..35a395c46 --- /dev/null +++ b/config/suppliers/letter-variant/digitrials-aspiring.json @@ -0,0 +1,38 @@ +{ + "campaignIds": [ + "digitrials-aspiring" + ], + "clientId": "digitrials", + "constraints": { + "blackCoveragePercentage": { + "operator": "LESS_THAN", + "value": 20 + }, + "colourCoveragePercentage": { + "operator": "LESS_THAN", + "value": 10 + }, + "deliveryDays": { + "operator": "LESS_THAN", + "value": 3 + }, + "sheets": { + "operator": "LESS_THAN", + "value": 3 + }, + "sides": { + "operator": "LESS_THAN", + "value": 6 + } + }, + "description": "Colour printing, ASPIRING envelope, Attachment", + "id": "digitrials-aspiring", + "name": "Digitrials - ASPIRING", + "packSpecificationIds": [ + "digitrials-aspiring" + ], + "status": "INT", + "supplierId": "datagraphic", + "type": "STANDARD", + "volumeGroupId": "datagraphic" +} diff --git a/config/suppliers/letter-variant/digitrials-dmapp.json b/config/suppliers/letter-variant/digitrials-dmapp.json new file mode 100644 index 000000000..aa7ba5188 --- /dev/null +++ b/config/suppliers/letter-variant/digitrials-dmapp.json @@ -0,0 +1,38 @@ +{ + "campaignIds": [ + "digitrials-dmapp" + ], + "clientId": "digitrials", + "constraints": { + "blackCoveragePercentage": { + "operator": "LESS_THAN", + "value": 20 + }, + "colourCoveragePercentage": { + "operator": "LESS_THAN", + "value": 10 + }, + "deliveryDays": { + "operator": "LESS_THAN", + "value": 3 + }, + "sheets": { + "operator": "LESS_THAN", + "value": 5 + }, + "sides": { + "operator": "LESS_THAN", + "value": 10 + } + }, + "description": "Admail, colour printing", + "id": "digitrials-dmapp", + "name": "Digitrials - DMAPP", + "packSpecificationIds": [ + "notify-admail" + ], + "status": "INT", + "supplierId": "datagraphic", + "type": "STANDARD", + "volumeGroupId": "datagraphic" +} diff --git a/config/suppliers/letter-variant/digitrials-globalminds.json b/config/suppliers/letter-variant/digitrials-globalminds.json new file mode 100644 index 000000000..717c4d0a3 --- /dev/null +++ b/config/suppliers/letter-variant/digitrials-globalminds.json @@ -0,0 +1,38 @@ +{ + "campaignIds": [ + "digitrials-globalminds" + ], + "clientId": "digitrials", + "constraints": { + "blackCoveragePercentage": { + "operator": "LESS_THAN", + "value": 20 + }, + "colourCoveragePercentage": { + "operator": "LESS_THAN", + "value": 10 + }, + "deliveryDays": { + "operator": "LESS_THAN", + "value": 3 + }, + "sheets": { + "operator": "LESS_THAN", + "value": 5 + }, + "sides": { + "operator": "LESS_THAN", + "value": 10 + } + }, + "description": "Admail?, colour printing, booklet", + "id": "digitrials-globalminds", + "name": "Digitrials - Global Minds", + "packSpecificationIds": [ + "digitrials-globalminds" + ], + "status": "INT", + "supplierId": "datagraphic", + "type": "STANDARD", + "volumeGroupId": "datagraphic" +} diff --git a/config/suppliers/letter-variant/digitrials-mymelanoma.json b/config/suppliers/letter-variant/digitrials-mymelanoma.json new file mode 100644 index 000000000..75414128a --- /dev/null +++ b/config/suppliers/letter-variant/digitrials-mymelanoma.json @@ -0,0 +1,38 @@ +{ + "campaignIds": [ + "digitrials-mymelanoma" + ], + "clientId": "digitrials", + "constraints": { + "blackCoveragePercentage": { + "operator": "LESS_THAN", + "value": 20 + }, + "colourCoveragePercentage": { + "operator": "LESS_THAN", + "value": 10 + }, + "deliveryDays": { + "operator": "LESS_THAN", + "value": 3 + }, + "sheets": { + "operator": "LESS_THAN", + "value": 5 + }, + "sides": { + "operator": "LESS_THAN", + "value": 10 + } + }, + "description": "Admail, colour printing, MyMelanoma envelope", + "id": "digitrials-mymelanoma", + "name": "Digitrials - MyMelanoma", + "packSpecificationIds": [ + "digitrials-mymelanoma" + ], + "status": "INT", + "supplierId": "datagraphic", + "type": "STANDARD", + "volumeGroupId": "datagraphic" +} diff --git a/config/suppliers/letter-variant/digitrials-ofh.json b/config/suppliers/letter-variant/digitrials-ofh.json new file mode 100644 index 000000000..7fd4b6f58 --- /dev/null +++ b/config/suppliers/letter-variant/digitrials-ofh.json @@ -0,0 +1,38 @@ +{ + "campaignIds": [ + "digitrials-ofh" + ], + "clientId": "digitrials", + "constraints": { + "blackCoveragePercentage": { + "operator": "LESS_THAN", + "value": 20 + }, + "colourCoveragePercentage": { + "operator": "LESS_THAN", + "value": 10 + }, + "deliveryDays": { + "operator": "LESS_THAN", + "value": 3 + }, + "sheets": { + "operator": "LESS_THAN", + "value": 5 + }, + "sides": { + "operator": "LESS_THAN", + "value": 10 + } + }, + "description": "Admail, colour printing, OFH envelope", + "id": "digitrials-ofh", + "name": "Digitrials - Our Future Health", + "packSpecificationIds": [ + "digitrials-ofh" + ], + "status": "PROD", + "supplierId": "datagraphic", + "type": "STANDARD", + "volumeGroupId": "datagraphic" +} diff --git a/config/suppliers/letter-variant/digitrials-prostateprogress.json b/config/suppliers/letter-variant/digitrials-prostateprogress.json new file mode 100644 index 000000000..712599250 --- /dev/null +++ b/config/suppliers/letter-variant/digitrials-prostateprogress.json @@ -0,0 +1,38 @@ +{ + "campaignIds": [ + "digitrials-prostateprogress" + ], + "clientId": "digitrials", + "constraints": { + "blackCoveragePercentage": { + "operator": "LESS_THAN", + "value": 20 + }, + "colourCoveragePercentage": { + "operator": "LESS_THAN", + "value": 10 + }, + "deliveryDays": { + "operator": "LESS_THAN", + "value": 3 + }, + "sheets": { + "operator": "LESS_THAN", + "value": 4 + }, + "sides": { + "operator": "LESS_THAN", + "value": 8 + } + }, + "description": "Colour printing, PP envelope, Attachment", + "id": "digitrials-prostateprogress", + "name": "Digitrials - Prostate Progress", + "packSpecificationIds": [ + "digitrials-prostateprogress" + ], + "status": "INT", + "supplierId": "datagraphic", + "type": "STANDARD", + "volumeGroupId": "datagraphic" +} diff --git a/config/suppliers/letter-variant/digitrials-protectc.json b/config/suppliers/letter-variant/digitrials-protectc.json new file mode 100644 index 000000000..156ff14b3 --- /dev/null +++ b/config/suppliers/letter-variant/digitrials-protectc.json @@ -0,0 +1,38 @@ +{ + "campaignIds": [ + "digitrials-protectc" + ], + "clientId": "digitrials", + "constraints": { + "blackCoveragePercentage": { + "operator": "LESS_THAN", + "value": 20 + }, + "colourCoveragePercentage": { + "operator": "LESS_THAN", + "value": 10 + }, + "deliveryDays": { + "operator": "LESS_THAN", + "value": 3 + }, + "sheets": { + "operator": "LESS_THAN", + "value": 5 + }, + "sides": { + "operator": "LESS_THAN", + "value": 10 + } + }, + "description": "Economy, colour printing", + "id": "digitrials-protectc", + "name": "Digitrials - PROTECT-C", + "packSpecificationIds": [ + "notify-c5-colour" + ], + "status": "INT", + "supplierId": "datagraphic", + "type": "STANDARD", + "volumeGroupId": "datagraphic" +} diff --git a/config/suppliers/letter-variant/digitrials-restore.json b/config/suppliers/letter-variant/digitrials-restore.json new file mode 100644 index 000000000..de6be6f3a --- /dev/null +++ b/config/suppliers/letter-variant/digitrials-restore.json @@ -0,0 +1,38 @@ +{ + "campaignIds": [ + "digitrials-restore" + ], + "clientId": "digitrials", + "constraints": { + "blackCoveragePercentage": { + "operator": "LESS_THAN", + "value": 20 + }, + "colourCoveragePercentage": { + "operator": "LESS_THAN", + "value": 10 + }, + "deliveryDays": { + "operator": "LESS_THAN", + "value": 3 + }, + "sheets": { + "operator": "LESS_THAN", + "value": 5 + }, + "sides": { + "operator": "LESS_THAN", + "value": 10 + } + }, + "description": "Admail?, colour printing, booklet", + "id": "digitrials-restore", + "name": "Digitrials - Restore", + "packSpecificationIds": [ + "digitrials-restore" + ], + "status": "INT", + "supplierId": "datagraphic", + "type": "STANDARD", + "volumeGroupId": "datagraphic" +} diff --git a/config/suppliers/letter-variant/gpreg-admail.json b/config/suppliers/letter-variant/gpreg-admail.json new file mode 100644 index 000000000..8679e96e9 --- /dev/null +++ b/config/suppliers/letter-variant/gpreg-admail.json @@ -0,0 +1,35 @@ +{ + "clientId": "gp-reg", + "constraints": { + "blackCoveragePercentage": { + "operator": "LESS_THAN", + "value": 20 + }, + "colourCoveragePercentage": { + "operator": "LESS_THAN", + "value": 10 + }, + "deliveryDays": { + "operator": "LESS_THAN", + "value": 3 + }, + "sheets": { + "operator": "LESS_THAN", + "value": 5 + }, + "sides": { + "operator": "LESS_THAN", + "value": 10 + } + }, + "description": "Letter with admail postage tariff", + "id": "gpreg-admail", + "name": "Admail letter", + "packSpecificationIds": [ + "notify-admail" + ], + "status": "INT", + "supplierId": "synertec", + "type": "STANDARD", + "volumeGroupId": "synertec" +} diff --git a/config/suppliers/letter-variant/nces-abnormal-results-braille.json b/config/suppliers/letter-variant/nces-abnormal-results-braille.json new file mode 100644 index 000000000..0a42c9415 --- /dev/null +++ b/config/suppliers/letter-variant/nces-abnormal-results-braille.json @@ -0,0 +1,31 @@ +{ + "clientId": "nces", + "constraints": { + "blackCoveragePercentage": { + "operator": "LESS_THAN", + "value": 20 + }, + "deliveryDays": { + "operator": "LESS_THAN", + "value": 1 + }, + "sheets": { + "operator": "LESS_THAN", + "value": 4 + }, + "sides": { + "operator": "LESS_THAN", + "value": 8 + } + }, + "description": "Same Day, Braille, Whitemail, Booklet", + "id": "nces-abnormal-results-braille", + "name": "Cervical Screening Braille Abnormal Results", + "packSpecificationIds": [ + "nces-abnormal-results-braille" + ], + "status": "INT", + "supplierId": "synertec", + "type": "BRAILLE", + "volumeGroupId": "accessible" +} diff --git a/config/suppliers/letter-variant/nces-abnormal-results.json b/config/suppliers/letter-variant/nces-abnormal-results.json new file mode 100644 index 000000000..0fd4b659f --- /dev/null +++ b/config/suppliers/letter-variant/nces-abnormal-results.json @@ -0,0 +1,31 @@ +{ + "clientId": "nces", + "constraints": { + "blackCoveragePercentage": { + "operator": "LESS_THAN", + "value": 20 + }, + "deliveryDays": { + "operator": "LESS_THAN", + "value": 1 + }, + "sheets": { + "operator": "LESS_THAN", + "value": 4 + }, + "sides": { + "operator": "LESS_THAN", + "value": 8 + } + }, + "description": "Same Day, Whitemail, Booklet", + "id": "nces-abnormal-results", + "name": "Cervical Screening Abnormal Results", + "packSpecificationIds": [ + "nces-abnormal-results" + ], + "status": "INT", + "supplierId": "synertec", + "type": "STANDARD", + "volumeGroupId": "sameday" +} diff --git a/config/suppliers/letter-variant/nces-invites-braille.json b/config/suppliers/letter-variant/nces-invites-braille.json new file mode 100644 index 000000000..3d98c879a --- /dev/null +++ b/config/suppliers/letter-variant/nces-invites-braille.json @@ -0,0 +1,31 @@ +{ + "clientId": "nces", + "constraints": { + "blackCoveragePercentage": { + "operator": "LESS_THAN", + "value": 20 + }, + "deliveryDays": { + "operator": "LESS_THAN", + "value": 3 + }, + "sheets": { + "operator": "LESS_THAN", + "value": 4 + }, + "sides": { + "operator": "LESS_THAN", + "value": 8 + } + }, + "description": "Braille, Whitemail, Booklet", + "id": "nces-invites-braille", + "name": "Cervical Screening Braille Invites", + "packSpecificationIds": [ + "nces-invites-braille" + ], + "status": "INT", + "supplierId": "synertec", + "type": "BRAILLE", + "volumeGroupId": "accessible" +} diff --git a/config/suppliers/letter-variant/nces-invites.json b/config/suppliers/letter-variant/nces-invites.json new file mode 100644 index 000000000..95dcbd804 --- /dev/null +++ b/config/suppliers/letter-variant/nces-invites.json @@ -0,0 +1,31 @@ +{ + "clientId": "nces", + "constraints": { + "blackCoveragePercentage": { + "operator": "LESS_THAN", + "value": 20 + }, + "deliveryDays": { + "operator": "LESS_THAN", + "value": 3 + }, + "sheets": { + "operator": "LESS_THAN", + "value": 4 + }, + "sides": { + "operator": "LESS_THAN", + "value": 8 + } + }, + "description": "Business Economy, Whitemail, Booklet", + "id": "nces-invites", + "name": "Cervical Screening Invites", + "packSpecificationIds": [ + "nces-invites" + ], + "status": "INT", + "supplierId": "synertec", + "type": "STANDARD", + "volumeGroupId": "bau" +} diff --git a/config/suppliers/letter-variant/nces-standard-braille.json b/config/suppliers/letter-variant/nces-standard-braille.json new file mode 100644 index 000000000..191eebbe1 --- /dev/null +++ b/config/suppliers/letter-variant/nces-standard-braille.json @@ -0,0 +1,31 @@ +{ + "clientId": "nces", + "constraints": { + "blackCoveragePercentage": { + "operator": "LESS_THAN", + "value": 20 + }, + "deliveryDays": { + "operator": "LESS_THAN", + "value": 3 + }, + "sheets": { + "operator": "LESS_THAN", + "value": 5 + }, + "sides": { + "operator": "LESS_THAN", + "value": 10 + } + }, + "description": "Braille, Whitemail", + "id": "nces-standard-braille", + "name": "Cervical Screening Standard Braille Letters", + "packSpecificationIds": [ + "notify-braille-whitemail" + ], + "status": "INT", + "supplierId": "synertec", + "type": "BRAILLE", + "volumeGroupId": "accessible" +} diff --git a/config/suppliers/letter-variant/nces-standard.json b/config/suppliers/letter-variant/nces-standard.json new file mode 100644 index 000000000..d512df617 --- /dev/null +++ b/config/suppliers/letter-variant/nces-standard.json @@ -0,0 +1,31 @@ +{ + "clientId": "nces", + "constraints": { + "blackCoveragePercentage": { + "operator": "LESS_THAN", + "value": 20 + }, + "deliveryDays": { + "operator": "LESS_THAN", + "value": 3 + }, + "sheets": { + "operator": "LESS_THAN", + "value": 5 + }, + "sides": { + "operator": "LESS_THAN", + "value": 10 + } + }, + "description": "Business Economy, Whitemail", + "id": "nces-standard", + "name": "Cervical Screening Standard Letters", + "packSpecificationIds": [ + "notify-c5-whitemail" + ], + "status": "PROD", + "supplierId": "synertec", + "type": "STANDARD", + "volumeGroupId": "synertec" +} diff --git a/config/suppliers/letter-variant/notify-audio.json b/config/suppliers/letter-variant/notify-audio.json new file mode 100644 index 000000000..bb80b3e4b --- /dev/null +++ b/config/suppliers/letter-variant/notify-audio.json @@ -0,0 +1,30 @@ +{ + "constraints": { + "blackCoveragePercentage": { + "operator": "LESS_THAN", + "value": 20 + }, + "deliveryDays": { + "operator": "LESS_THAN", + "value": 3 + }, + "sheets": { + "operator": "LESS_THAN", + "value": 5 + }, + "sides": { + "operator": "LESS_THAN", + "value": 10 + } + }, + "description": "Audio CD with standard letter", + "id": "notify-audio", + "name": "Audio CD Letter", + "packSpecificationIds": [ + "notify-audio" + ], + "status": "DRAFT", + "supplierId": "synertec", + "type": "AUDIO", + "volumeGroupId": "accessible" +} diff --git a/config/suppliers/letter-variant/notify-braille.json b/config/suppliers/letter-variant/notify-braille.json new file mode 100644 index 000000000..90fd88153 --- /dev/null +++ b/config/suppliers/letter-variant/notify-braille.json @@ -0,0 +1,30 @@ +{ + "constraints": { + "blackCoveragePercentage": { + "operator": "LESS_THAN", + "value": 20 + }, + "deliveryDays": { + "operator": "LESS_THAN", + "value": 3 + }, + "sheets": { + "operator": "LESS_THAN", + "value": 5 + }, + "sides": { + "operator": "LESS_THAN", + "value": 10 + } + }, + "description": "Braille letter with standard letter", + "id": "notify-braille", + "name": "Braille Letter", + "packSpecificationIds": [ + "notify-braille" + ], + "status": "INT", + "supplierId": "synertec", + "type": "BRAILLE", + "volumeGroupId": "accessible" +} diff --git a/config/suppliers/letter-variant/notify-digital-letters-standard.json b/config/suppliers/letter-variant/notify-digital-letters-standard.json new file mode 100644 index 000000000..1cb96e32c --- /dev/null +++ b/config/suppliers/letter-variant/notify-digital-letters-standard.json @@ -0,0 +1,31 @@ +{ + "clientId": "digital-letters", + "constraints": { + "blackCoveragePercentage": { + "operator": "LESS_THAN", + "value": 20 + }, + "deliveryDays": { + "operator": "LESS_THAN", + "value": 3 + }, + "sheets": { + "operator": "LESS_THAN", + "value": 5 + }, + "sides": { + "operator": "LESS_THAN", + "value": 10 + } + }, + "description": "Black printing, economy postage tariff", + "id": "notify-digital-letters-standard", + "name": "Standard Letter Variant for Digital Letters fallback", + "packSpecificationIds": [ + "notify-c5" + ], + "status": "INT", + "supplierId": "synertec", + "type": "STANDARD", + "volumeGroupId": "synertec" +} diff --git a/config/suppliers/letter-variant/notify-first.json b/config/suppliers/letter-variant/notify-first.json new file mode 100644 index 000000000..a3741e885 --- /dev/null +++ b/config/suppliers/letter-variant/notify-first.json @@ -0,0 +1,30 @@ +{ + "constraints": { + "blackCoveragePercentage": { + "operator": "LESS_THAN", + "value": 20 + }, + "deliveryDays": { + "operator": "LESS_THAN", + "value": 2 + }, + "sheets": { + "operator": "LESS_THAN", + "value": 5 + }, + "sides": { + "operator": "LESS_THAN", + "value": 10 + } + }, + "description": "Black printing, first class postage tariff", + "id": "notify-first", + "name": "First class letter", + "packSpecificationIds": [ + "notify-first" + ], + "status": "DRAFT", + "supplierId": "synertec", + "type": "STANDARD", + "volumeGroupId": "bau" +} diff --git a/config/suppliers/letter-variant/notify-standard-colour.json b/config/suppliers/letter-variant/notify-standard-colour.json new file mode 100644 index 000000000..d21617cb5 --- /dev/null +++ b/config/suppliers/letter-variant/notify-standard-colour.json @@ -0,0 +1,34 @@ +{ + "constraints": { + "blackCoveragePercentage": { + "operator": "LESS_THAN", + "value": 20 + }, + "colourCoveragePercentage": { + "operator": "LESS_THAN", + "value": 10 + }, + "deliveryDays": { + "operator": "LESS_THAN", + "value": 3 + }, + "sheets": { + "operator": "LESS_THAN", + "value": 5 + }, + "sides": { + "operator": "LESS_THAN", + "value": 10 + } + }, + "description": "Colour printing, economy postage tariff", + "id": "notify-standard-colour", + "name": "Standard Letter (colour)", + "packSpecificationIds": [ + "notify-c5-colour" + ], + "status": "INT", + "supplierId": "synertec", + "type": "STANDARD", + "volumeGroupId": "datagraphic" +} diff --git a/config/suppliers/letter-variant/notify-standard-test1.json b/config/suppliers/letter-variant/notify-standard-test1.json new file mode 100644 index 000000000..0138a738f --- /dev/null +++ b/config/suppliers/letter-variant/notify-standard-test1.json @@ -0,0 +1,29 @@ +{ + "constraints": { + "blackCoveragePercentage": { + "operator": "LESS_THAN", + "value": 20 + }, + "deliveryDays": { + "operator": "LESS_THAN", + "value": 3 + }, + "sheets": { + "operator": "LESS_THAN", + "value": 5 + }, + "sides": { + "operator": "LESS_THAN", + "value": 10 + } + }, + "description": "Dev test variant for happy path testing", + "id": "notify-standard-test1", + "name": "Dev Happy Path", + "packSpecificationIds": [ + "notify-c5" + ], + "status": "PROD", + "type": "STANDARD", + "volumeGroupId": "volumeGroup-test1" +} diff --git a/config/suppliers/letter-variant/notify-standard.json b/config/suppliers/letter-variant/notify-standard.json new file mode 100644 index 000000000..5b0a4d9b8 --- /dev/null +++ b/config/suppliers/letter-variant/notify-standard.json @@ -0,0 +1,30 @@ +{ + "constraints": { + "blackCoveragePercentage": { + "operator": "LESS_THAN", + "value": 20 + }, + "deliveryDays": { + "operator": "LESS_THAN", + "value": 3 + }, + "sheets": { + "operator": "LESS_THAN", + "value": 5 + }, + "sides": { + "operator": "LESS_THAN", + "value": 10 + } + }, + "description": "Black printing, economy postage tariff", + "id": "notify-standard", + "name": "Standard Letter", + "packSpecificationIds": [ + "notify-c5" + ], + "status": "PROD", + "supplierId": "synertec", + "type": "STANDARD", + "volumeGroupId": "synertec" +} diff --git a/config/suppliers/pack-specification/digitrials-aspiring.json b/config/suppliers/pack-specification/digitrials-aspiring.json new file mode 100644 index 000000000..d9a478388 --- /dev/null +++ b/config/suppliers/pack-specification/digitrials-aspiring.json @@ -0,0 +1,58 @@ +{ + "assembly": { + "duplex": true, + "envelopeId": "digitrials-aspiring", + "features": [ + "ADMAIL" + ], + "insertIds": [ + "digitrials-aspiring-fast-facts-attachment" + ], + "paper": { + "colour": "WHITE", + "id": "paper-std-white-100", + "name": "Standard White 80gsm", + "recycled": true, + "size": "A4", + "weightGSM": 80 + }, + "printColour": "COLOUR" + }, + "billingId": "insert-economy", + "constraints": { + "blackCoveragePercentage": { + "operator": "LESS_THAN", + "value": 20 + }, + "colourCoveragePercentage": { + "operator": "LESS_THAN", + "value": 20 + }, + "deliveryDays": { + "operator": "LESS_THAN", + "value": 3 + }, + "sheets": { + "operator": "LESS_THAN", + "value": 4 + }, + "sides": { + "operator": "LESS_THAN", + "value": 8 + } + }, + "createdAt": "2026-01-12T00:00:00.000Z", + "description": "Envelope and attachment for ASPIRING", + "id": "digitrials-aspiring", + "name": "Digitrials - ASPIRING", + "postage": { + "deliveryDays": 3, + "id": "economy", + "maxThicknessMm": 5, + "maxWeightGrams": 100, + "size": "STANDARD" + }, + "status": "PROD", + "updatedAt": "2026-02-16T17:00:00.000Z", + "version": 2 +} diff --git a/config/suppliers/pack-specification/digitrials-globalminds.json b/config/suppliers/pack-specification/digitrials-globalminds.json new file mode 100644 index 000000000..e7aa11130 --- /dev/null +++ b/config/suppliers/pack-specification/digitrials-globalminds.json @@ -0,0 +1,56 @@ +{ + "assembly": { + "duplex": true, + "envelopeId": "economy-c5", + "features": [ + "ADMAIL" + ], + "insertIds": [ + "digitrials-globalminds-booklet" + ], + "paper": { + "colour": "WHITE", + "id": "paper-std-white-80", + "name": "Standard White 80gsm", + "recycled": true, + "size": "A4", + "weightGSM": 80 + }, + "printColour": "COLOUR" + }, + "billingId": "insert-admail-economy", + "constraints": { + "blackCoveragePercentage": { + "operator": "LESS_THAN", + "value": 20 + }, + "colourCoveragePercentage": { + "operator": "LESS_THAN", + "value": 10 + }, + "deliveryDays": { + "operator": "LESS_THAN", + "value": 4 + }, + "sheets": { + "operator": "LESS_THAN", + "value": 5 + }, + "sides": { + "operator": "LESS_THAN", + "value": 10 + } + }, + "createdAt": "2026-01-12T00:00:00.000Z", + "description": "Envelope and booklet for Global Minds", + "id": "digitrials-globalminds", + "name": "Digitrials - Global Minds", + "postage": { + "deliveryDays": 4, + "id": "admail-economy", + "size": "STANDARD" + }, + "status": "PROD", + "updatedAt": "2026-01-12T00:00:00.000Z", + "version": 1 +} diff --git a/config/suppliers/pack-specification/digitrials-mymelanoma.json b/config/suppliers/pack-specification/digitrials-mymelanoma.json new file mode 100644 index 000000000..1061f995a --- /dev/null +++ b/config/suppliers/pack-specification/digitrials-mymelanoma.json @@ -0,0 +1,55 @@ +{ + "assembly": { + "duplex": true, + "envelopeId": "digitrials-mymelanoma", + "features": [ + "ADMAIL" + ], + "paper": { + "colour": "WHITE", + "id": "paper-std-white-80", + "name": "Standard White 80gsm", + "recycled": true, + "size": "A4", + "weightGSM": 80 + }, + "printColour": "COLOUR" + }, + "billingId": "admail-economy", + "constraints": { + "blackCoveragePercentage": { + "operator": "LESS_THAN", + "value": 20 + }, + "colourCoveragePercentage": { + "operator": "LESS_THAN", + "value": 10 + }, + "deliveryDays": { + "operator": "LESS_THAN", + "value": 4 + }, + "sheets": { + "operator": "LESS_THAN", + "value": 5 + }, + "sides": { + "operator": "LESS_THAN", + "value": 10 + } + }, + "createdAt": "2026-01-12T00:00:00.000Z", + "description": "Envelope for My Melanoma", + "id": "digitrials-mymelanoma", + "name": "Digitrials - MyMelanoma", + "postage": { + "deliveryDays": 4, + "id": "admail-economy", + "maxThicknessMm": 5, + "maxWeightGrams": 100, + "size": "STANDARD" + }, + "status": "PROD", + "updatedAt": "2026-01-12T00:00:00.000Z", + "version": 1 +} diff --git a/config/suppliers/pack-specification/digitrials-ofh.json b/config/suppliers/pack-specification/digitrials-ofh.json new file mode 100644 index 000000000..fd143e8ba --- /dev/null +++ b/config/suppliers/pack-specification/digitrials-ofh.json @@ -0,0 +1,55 @@ +{ + "assembly": { + "duplex": true, + "envelopeId": "digitrials-ofh", + "features": [ + "ADMAIL" + ], + "paper": { + "colour": "WHITE", + "id": "paper-std-white-80", + "name": "Standard White 80gsm", + "recycled": true, + "size": "A4", + "weightGSM": 80 + }, + "printColour": "COLOUR" + }, + "billingId": "admail-economy", + "constraints": { + "blackCoveragePercentage": { + "operator": "LESS_THAN", + "value": 20 + }, + "colourCoveragePercentage": { + "operator": "LESS_THAN", + "value": 10 + }, + "deliveryDays": { + "operator": "LESS_THAN", + "value": 4 + }, + "sheets": { + "operator": "LESS_THAN", + "value": 5 + }, + "sides": { + "operator": "LESS_THAN", + "value": 10 + } + }, + "createdAt": "2026-01-12T00:00:00.000Z", + "description": "Envelope for Our Future Health", + "id": "digitrials-ofh", + "name": "Digitrials - Our Future Health", + "postage": { + "deliveryDays": 4, + "id": "admail-economy", + "maxThicknessMm": 5, + "maxWeightGrams": 100, + "size": "STANDARD" + }, + "status": "PROD", + "updatedAt": "2026-01-12T00:00:00.000Z", + "version": 1 +} diff --git a/config/suppliers/pack-specification/digitrials-prostateprogress.json b/config/suppliers/pack-specification/digitrials-prostateprogress.json new file mode 100644 index 000000000..bb6cd9bbc --- /dev/null +++ b/config/suppliers/pack-specification/digitrials-prostateprogress.json @@ -0,0 +1,55 @@ +{ + "assembly": { + "duplex": true, + "envelopeId": "digitrials-prostateprogress", + "insertIds": [ + "digitrials-prostateprogress-leaflet" + ], + "paper": { + "colour": "WHITE", + "id": "paper-std-white-80", + "name": "Standard White 80gsm", + "recycled": true, + "size": "A4", + "weightGSM": 80 + }, + "printColour": "COLOUR" + }, + "billingId": "insert-admail-economy", + "constraints": { + "blackCoveragePercentage": { + "operator": "LESS_THAN", + "value": 20 + }, + "colourCoveragePercentage": { + "operator": "LESS_THAN", + "value": 10 + }, + "deliveryDays": { + "operator": "LESS_THAN", + "value": 4 + }, + "sheets": { + "operator": "LESS_THAN", + "value": 5 + }, + "sides": { + "operator": "LESS_THAN", + "value": 10 + } + }, + "createdAt": "2026-02-04T00:00:00.000Z", + "description": "Envelope and insert for Prostate Progress", + "id": "digitrials-prostateprogress", + "name": "Digitrials - Prostate Progress", + "postage": { + "deliveryDays": 4, + "id": "admail-economy", + "maxThicknessMm": 5, + "maxWeightGrams": 100, + "size": "STANDARD" + }, + "status": "PROD", + "updatedAt": "2026-02-04T00:00:00.000Z", + "version": 1 +} diff --git a/config/suppliers/pack-specification/digitrials-restore.json b/config/suppliers/pack-specification/digitrials-restore.json new file mode 100644 index 000000000..d3a5b3c4b --- /dev/null +++ b/config/suppliers/pack-specification/digitrials-restore.json @@ -0,0 +1,58 @@ +{ + "assembly": { + "duplex": true, + "envelopeId": "economy-c5", + "features": [ + "ADMAIL" + ], + "insertIds": [ + "digitrials-restore-leaflet" + ], + "paper": { + "colour": "WHITE", + "id": "paper-std-white-80", + "name": "Standard White 80gsm", + "recycled": true, + "size": "A4", + "weightGSM": 80 + }, + "printColour": "COLOUR" + }, + "billingId": "insert-admail-economy", + "constraints": { + "blackCoveragePercentage": { + "operator": "LESS_THAN", + "value": 20 + }, + "colourCoveragePercentage": { + "operator": "LESS_THAN", + "value": 10 + }, + "deliveryDays": { + "operator": "LESS_THAN", + "value": 4 + }, + "sheets": { + "operator": "LESS_THAN", + "value": 4 + }, + "sides": { + "operator": "LESS_THAN", + "value": 8 + } + }, + "createdAt": "2026-01-12T00:00:00.000Z", + "description": "Insert for Restore", + "id": "digitrials-restore", + "name": "Digitrials - Restore", + "postage": { + "deliveryDays": 4, + "id": "admail-economy", + "maxThicknessMm": 5, + "maxWeightGrams": 100, + "size": "STANDARD" + }, + "status": "PROD", + "updatedAt": "2026-01-12T00:00:00.000Z", + "version": 1 +} diff --git a/config/suppliers/pack-specification/nces-abnormal-results-braille.json b/config/suppliers/pack-specification/nces-abnormal-results-braille.json new file mode 100644 index 000000000..97d3eaab7 --- /dev/null +++ b/config/suppliers/pack-specification/nces-abnormal-results-braille.json @@ -0,0 +1,53 @@ +{ + "assembly": { + "duplex": true, + "envelopeId": "braille-whitemail", + "features": [ + "BRAILLE", + "SAME_DAY" + ], + "insertIds": [ + "CSP15" + ], + "paper": { + "colour": "WHITE", + "id": "paper-braille", + "name": "Braille Paper", + "recycled": true, + "size": "A4", + "weightGSM": 120 + }, + "printColour": "BLACK" + }, + "billingId": "sameday-insert-braille", + "constraints": { + "blackCoveragePercentage": { + "operator": "LESS_THAN", + "value": 20 + }, + "deliveryDays": { + "operator": "LESS_THAN", + "value": 1 + }, + "sheets": { + "operator": "LESS_THAN", + "value": 4 + }, + "sides": { + "operator": "LESS_THAN", + "value": 8 + } + }, + "createdAt": "2026-01-12T00:00:00.000Z", + "id": "nces-abnormal-results-braille", + "name": "NCES Abnormal Results Braille", + "postage": { + "deliveryDays": 1, + "id": "articles-blind", + "maxWeightGrams": 100, + "size": "STANDARD" + }, + "status": "INT", + "updatedAt": "2026-01-12T00:00:00.000Z", + "version": 1 +} diff --git a/config/suppliers/pack-specification/nces-abnormal-results.json b/config/suppliers/pack-specification/nces-abnormal-results.json new file mode 100644 index 000000000..600fd4aca --- /dev/null +++ b/config/suppliers/pack-specification/nces-abnormal-results.json @@ -0,0 +1,53 @@ +{ + "assembly": { + "duplex": true, + "envelopeId": "first-c5-whitemail", + "features": [ + "SAME_DAY" + ], + "insertIds": [ + "CSP15" + ], + "paper": { + "colour": "WHITE", + "id": "paper-std-white-80", + "name": "Standard White 80gsm", + "recycled": true, + "size": "A4", + "weightGSM": 80 + }, + "printColour": "BLACK" + }, + "billingId": "sameday-insert-c5", + "constraints": { + "blackCoveragePercentage": { + "operator": "LESS_THAN", + "value": 20 + }, + "deliveryDays": { + "operator": "LESS_THAN", + "value": 1 + }, + "sheets": { + "operator": "LESS_THAN", + "value": 4 + }, + "sides": { + "operator": "LESS_THAN", + "value": 8 + } + }, + "createdAt": "2026-01-12T00:00:00.000Z", + "id": "nces-abnormal-results", + "name": "NCES Abnormal Results", + "postage": { + "deliveryDays": 1, + "id": "first-class", + "maxThicknessMm": 5, + "maxWeightGrams": 100, + "size": "STANDARD" + }, + "status": "INT", + "updatedAt": "2026-01-12T00:00:00.000Z", + "version": 1 +} diff --git a/config/suppliers/pack-specification/nces-invites-braille.json b/config/suppliers/pack-specification/nces-invites-braille.json new file mode 100644 index 000000000..f24712659 --- /dev/null +++ b/config/suppliers/pack-specification/nces-invites-braille.json @@ -0,0 +1,51 @@ +{ + "assembly": { + "duplex": true, + "envelopeId": "braille-whitemail", + "features": [ + "BRAILLE" + ], + "insertIds": [ + "CSP14" + ], + "paper": { + "colour": "WHITE", + "id": "paper-braille", + "name": "Braille Paper", + "recycled": true, + "size": "A4", + "weightGSM": 120 + }, + "printColour": "BLACK" + }, + "billingId": "insert-braille", + "constraints": { + "blackCoveragePercentage": { + "operator": "LESS_THAN", + "value": 20 + }, + "deliveryDays": { + "operator": "LESS_THAN", + "value": 3 + }, + "sheets": { + "operator": "LESS_THAN", + "value": 4 + }, + "sides": { + "operator": "LESS_THAN", + "value": 8 + } + }, + "createdAt": "2026-01-12T00:00:00.000Z", + "id": "nces-invites-braille", + "name": "NCES Invites Braille", + "postage": { + "deliveryDays": 3, + "id": "articles-blind", + "size": "STANDARD" + }, + "status": "INT", + "updatedAt": "2026-01-12T00:00:00.000Z", + "version": 1 +} diff --git a/config/suppliers/pack-specification/nces-invites.json b/config/suppliers/pack-specification/nces-invites.json new file mode 100644 index 000000000..e057cc35d --- /dev/null +++ b/config/suppliers/pack-specification/nces-invites.json @@ -0,0 +1,50 @@ +{ + "assembly": { + "duplex": true, + "envelopeId": "economy-c5-whitemail", + "insertIds": [ + "CSP14" + ], + "paper": { + "colour": "WHITE", + "id": "paper-std-white-80", + "name": "Standard White 80gsm", + "recycled": true, + "size": "A4", + "weightGSM": 80 + }, + "printColour": "BLACK" + }, + "billingId": "insert-admail-economy", + "constraints": { + "blackCoveragePercentage": { + "operator": "LESS_THAN", + "value": 20 + }, + "deliveryDays": { + "operator": "LESS_THAN", + "value": 3 + }, + "sheets": { + "operator": "LESS_THAN", + "value": 4 + }, + "sides": { + "operator": "LESS_THAN", + "value": 8 + } + }, + "createdAt": "2026-01-12T00:00:00.000Z", + "id": "nces-invites", + "name": "NCES Invites", + "postage": { + "deliveryDays": 3, + "id": "admail-economy", + "maxThicknessMm": 5, + "maxWeightGrams": 100, + "size": "STANDARD" + }, + "status": "INT", + "updatedAt": "2026-01-12T00:00:00.000Z", + "version": 1 +} diff --git a/config/suppliers/pack-specification/notify-admail-whitemail.json b/config/suppliers/pack-specification/notify-admail-whitemail.json new file mode 100644 index 000000000..0132b71f9 --- /dev/null +++ b/config/suppliers/pack-specification/notify-admail-whitemail.json @@ -0,0 +1,51 @@ +{ + "assembly": { + "duplex": true, + "envelopeId": "economy-c5", + "features": [ + "ADMAIL" + ], + "paper": { + "colour": "WHITE", + "id": "paper-std-white-80", + "name": "Standard White 80gsm", + "recycled": true, + "size": "A4", + "weightGSM": 80 + }, + "printColour": "BLACK" + }, + "billingId": "insert-admail-economy", + "constraints": { + "blackCoveragePercentage": { + "operator": "LESS_THAN", + "value": 20 + }, + "deliveryDays": { + "operator": "LESS_THAN", + "value": 2 + }, + "sheets": { + "operator": "LESS_THAN", + "value": 5 + }, + "sides": { + "operator": "LESS_THAN", + "value": 10 + } + }, + "createdAt": "2026-01-12T00:00:00.000Z", + "description": "Admail economy tariff with whitemail envelope", + "id": "notify-admail-whitemail", + "name": "Admail (whitemail)", + "postage": { + "deliveryDays": 4, + "id": "admail-economy", + "maxThicknessMm": 5, + "maxWeightGrams": 100, + "size": "STANDARD" + }, + "status": "PROD", + "updatedAt": "2026-01-12T00:00:00.000Z", + "version": 1 +} diff --git a/config/suppliers/pack-specification/notify-admail.json b/config/suppliers/pack-specification/notify-admail.json new file mode 100644 index 000000000..7344a939b --- /dev/null +++ b/config/suppliers/pack-specification/notify-admail.json @@ -0,0 +1,54 @@ +{ + "assembly": { + "duplex": true, + "envelopeId": "economy-c5", + "features": [ + "ADMAIL" + ], + "paper": { + "colour": "WHITE", + "id": "paper-std-white-80", + "name": "Standard White 80gsm", + "recycled": true, + "size": "A4", + "weightGSM": 80 + }, + "printColour": "BLACK" + }, + "billingId": "admail", + "constraints": { + "blackCoveragePercentage": { + "operator": "LESS_THAN", + "value": 20 + }, + "colourCoveragePercentage": { + "operator": "LESS_THAN", + "value": 20 + }, + "deliveryDays": { + "operator": "LESS_THAN", + "value": 3 + }, + "sheets": { + "operator": "LESS_THAN", + "value": 5 + }, + "sides": { + "operator": "LESS_THAN", + "value": 10 + } + }, + "createdAt": "2026-01-12T00:00:00.000Z", + "description": "Admail economy tariff, B&W", + "id": "notify-admail", + "name": "Admail", + "postage": { + "id": "admail", + "maxThicknessMm": 5, + "maxWeightGrams": 100, + "size": "STANDARD" + }, + "status": "PROD", + "updatedAt": "2026-01-12T00:00:00.000Z", + "version": 2 +} diff --git a/config/suppliers/pack-specification/notify-audio.json b/config/suppliers/pack-specification/notify-audio.json new file mode 100644 index 000000000..e5fb5002e --- /dev/null +++ b/config/suppliers/pack-specification/notify-audio.json @@ -0,0 +1,48 @@ +{ + "assembly": { + "duplex": true, + "envelopeId": "audio", + "features": [ + "AUDIO" + ], + "paper": { + "colour": "WHITE", + "id": "paper-std-white-80", + "name": "Standard White 80gsm", + "recycled": true, + "size": "A4", + "weightGSM": 80 + }, + "printColour": "BLACK" + }, + "billingId": "notify-audio", + "constraints": { + "blackCoveragePercentage": { + "operator": "LESS_THAN", + "value": 20 + }, + "deliveryDays": { + "operator": "LESS_THAN", + "value": 3 + }, + "sheets": { + "operator": "LESS_THAN", + "value": 5 + }, + "sides": { + "operator": "LESS_THAN", + "value": 10 + } + }, + "createdAt": "2026-01-12T00:00:00.000Z", + "id": "notify-audio", + "name": "Audio CD", + "postage": { + "deliveryDays": 3, + "id": "articles-blind", + "size": "STANDARD" + }, + "status": "DRAFT", + "updatedAt": "2026-01-12T00:00:00.000Z", + "version": 1 +} diff --git a/config/suppliers/pack-specification/notify-braille-whitemail.json b/config/suppliers/pack-specification/notify-braille-whitemail.json new file mode 100644 index 000000000..2ef1f05f6 --- /dev/null +++ b/config/suppliers/pack-specification/notify-braille-whitemail.json @@ -0,0 +1,49 @@ +{ + "assembly": { + "duplex": true, + "envelopeId": "braille-whitemail", + "features": [ + "BRAILLE" + ], + "paper": { + "colour": "WHITE", + "id": "paper-braille", + "name": "Braille Paper", + "recycled": true, + "size": "A4", + "weightGSM": 120 + }, + "printColour": "BLACK" + }, + "billingId": "notify-braille", + "constraints": { + "blackCoveragePercentage": { + "operator": "LESS_THAN", + "value": 20 + }, + "deliveryDays": { + "operator": "LESS_THAN", + "value": 3 + }, + "sheets": { + "operator": "LESS_THAN", + "value": 5 + }, + "sides": { + "operator": "LESS_THAN", + "value": 10 + } + }, + "createdAt": "2026-01-12T00:00:00.000Z", + "description": "Braille pack with whitemail return address", + "id": "notify-braille-whitemail", + "name": "Braille letter (whitemail)", + "postage": { + "deliveryDays": 3, + "id": "articles-blind", + "size": "STANDARD" + }, + "status": "PROD", + "updatedAt": "2026-01-12T00:00:00.000Z", + "version": 1 +} diff --git a/config/suppliers/pack-specification/notify-braille.json b/config/suppliers/pack-specification/notify-braille.json new file mode 100644 index 000000000..4417ce98d --- /dev/null +++ b/config/suppliers/pack-specification/notify-braille.json @@ -0,0 +1,48 @@ +{ + "assembly": { + "duplex": true, + "envelopeId": "braille", + "features": [ + "BRAILLE" + ], + "paper": { + "colour": "WHITE", + "id": "paper-braille", + "name": "Braille Paper", + "recycled": true, + "size": "A4", + "weightGSM": 120 + }, + "printColour": "BLACK" + }, + "billingId": "notify-braille", + "constraints": { + "blackCoveragePercentage": { + "operator": "LESS_THAN", + "value": 20 + }, + "deliveryDays": { + "operator": "LESS_THAN", + "value": 3 + }, + "sheets": { + "operator": "LESS_THAN", + "value": 5 + }, + "sides": { + "operator": "LESS_THAN", + "value": 10 + } + }, + "createdAt": "2026-01-12T00:00:00.000Z", + "id": "notify-braille", + "name": "Braille Letter", + "postage": { + "deliveryDays": 3, + "id": "articles-blind", + "size": "STANDARD" + }, + "status": "PROD", + "updatedAt": "2026-01-12T00:00:00.000Z", + "version": 1 +} diff --git a/config/suppliers/pack-specification/notify-c4.json b/config/suppliers/pack-specification/notify-c4.json new file mode 100644 index 000000000..dc42c0f1b --- /dev/null +++ b/config/suppliers/pack-specification/notify-c4.json @@ -0,0 +1,48 @@ +{ + "assembly": { + "duplex": true, + "envelopeId": "economy-c5", + "paper": { + "colour": "WHITE", + "id": "paper-std-white-80", + "name": "Standard White 80gsm", + "recycled": true, + "size": "A4", + "weightGSM": 80 + }, + "printColour": "BLACK" + }, + "billingId": "notify-c4", + "constraints": { + "blackCoveragePercentage": { + "operator": "LESS_THAN", + "value": 20 + }, + "deliveryDays": { + "operator": "LESS_THAN", + "value": 3 + }, + "sheets": { + "operator": "LESS_THAN", + "value": 20 + }, + "sides": { + "operator": "LESS_THAN", + "value": 40 + } + }, + "createdAt": "2026-01-12T00:00:00.000Z", + "description": "C4 pack (large letter)", + "id": "notify-c4", + "name": "Notify standard (C4)", + "postage": { + "deliveryDays": 3, + "id": "economy", + "maxThicknessMm": 25, + "maxWeightGrams": 500, + "size": "LARGE" + }, + "status": "DRAFT", + "updatedAt": "2026-01-12T00:00:00.000Z", + "version": 1 +} diff --git a/config/suppliers/pack-specification/notify-c5-colour.json b/config/suppliers/pack-specification/notify-c5-colour.json new file mode 100644 index 000000000..fdcee099d --- /dev/null +++ b/config/suppliers/pack-specification/notify-c5-colour.json @@ -0,0 +1,52 @@ +{ + "assembly": { + "duplex": true, + "envelopeId": "economy-c5", + "paper": { + "colour": "WHITE", + "id": "paper-std-white-80", + "name": "Standard White 80gsm", + "recycled": true, + "size": "A4", + "weightGSM": 80 + }, + "printColour": "COLOUR" + }, + "billingId": "notify-c5-colour", + "constraints": { + "blackCoveragePercentage": { + "operator": "LESS_THAN", + "value": 20 + }, + "colourCoveragePercentage": { + "operator": "LESS_THAN", + "value": 10 + }, + "deliveryDays": { + "operator": "LESS_THAN", + "value": 2 + }, + "sheets": { + "operator": "LESS_THAN", + "value": 5 + }, + "sides": { + "operator": "LESS_THAN", + "value": 10 + } + }, + "createdAt": "2026-01-12T00:00:00.000Z", + "description": "C5 pack with colour printing", + "id": "notify-c5-colour", + "name": "Notify standard (colour)", + "postage": { + "deliveryDays": 3, + "id": "economy", + "maxThicknessMm": 5, + "maxWeightGrams": 100, + "size": "STANDARD" + }, + "status": "INT", + "updatedAt": "2026-01-12T00:00:00.000Z", + "version": 1 +} diff --git a/config/suppliers/pack-specification/notify-c5-whitemail.json b/config/suppliers/pack-specification/notify-c5-whitemail.json new file mode 100644 index 000000000..0341599ea --- /dev/null +++ b/config/suppliers/pack-specification/notify-c5-whitemail.json @@ -0,0 +1,48 @@ +{ + "assembly": { + "duplex": true, + "envelopeId": "economy-c5-whitemail", + "paper": { + "colour": "WHITE", + "id": "paper-std-white-80", + "name": "Standard White 80gsm", + "recycled": true, + "size": "A4", + "weightGSM": 80 + }, + "printColour": "BLACK" + }, + "billingId": "notify-c5", + "constraints": { + "blackCoveragePercentage": { + "operator": "LESS_THAN", + "value": 20 + }, + "deliveryDays": { + "operator": "LESS_THAN", + "value": 3 + }, + "sheets": { + "operator": "LESS_THAN", + "value": 5 + }, + "sides": { + "operator": "LESS_THAN", + "value": 10 + } + }, + "createdAt": "2026-01-12T00:00:00.000Z", + "description": "C5 pack with whitemail return address", + "id": "notify-c5-whitemail", + "name": "Notify standard (whitemail)", + "postage": { + "deliveryDays": 3, + "id": "economy", + "maxThicknessMm": 5, + "maxWeightGrams": 100, + "size": "STANDARD" + }, + "status": "PROD", + "updatedAt": "2026-01-12T00:00:00.000Z", + "version": 1 +} diff --git a/config/suppliers/pack-specification/notify-c5.json b/config/suppliers/pack-specification/notify-c5.json new file mode 100644 index 000000000..b656c17fa --- /dev/null +++ b/config/suppliers/pack-specification/notify-c5.json @@ -0,0 +1,48 @@ +{ + "assembly": { + "duplex": true, + "envelopeId": "economy-c4", + "paper": { + "colour": "WHITE", + "id": "paper-std-white-80", + "name": "Standard White 80gsm", + "recycled": true, + "size": "A4", + "weightGSM": 80 + }, + "printColour": "BLACK" + }, + "billingId": "notify-c5", + "constraints": { + "blackCoveragePercentage": { + "operator": "LESS_THAN", + "value": 20 + }, + "deliveryDays": { + "operator": "LESS_THAN", + "value": 3 + }, + "sheets": { + "operator": "LESS_THAN", + "value": 5 + }, + "sides": { + "operator": "LESS_THAN", + "value": 10 + } + }, + "createdAt": "2026-01-12T00:00:00.000Z", + "description": "C5 pack", + "id": "notify-c5", + "name": "Notify standard", + "postage": { + "deliveryDays": 3, + "id": "economy", + "maxThicknessMm": 5, + "maxWeightGrams": 100, + "size": "STANDARD" + }, + "status": "PROD", + "updatedAt": "2026-01-12T00:00:00.000Z", + "version": 1 +} diff --git a/config/suppliers/pack-specification/notify-first.json b/config/suppliers/pack-specification/notify-first.json new file mode 100644 index 000000000..55543a47e --- /dev/null +++ b/config/suppliers/pack-specification/notify-first.json @@ -0,0 +1,48 @@ +{ + "assembly": { + "duplex": true, + "envelopeId": "first-c5", + "paper": { + "colour": "WHITE", + "id": "paper-std-white-80", + "name": "Standard White 80gsm", + "recycled": true, + "size": "A4", + "weightGSM": 80 + }, + "printColour": "BLACK" + }, + "billingId": "notify-first", + "constraints": { + "blackCoveragePercentage": { + "operator": "LESS_THAN", + "value": 20 + }, + "deliveryDays": { + "operator": "LESS_THAN", + "value": 2 + }, + "sheets": { + "operator": "LESS_THAN", + "value": 5 + }, + "sides": { + "operator": "LESS_THAN", + "value": 10 + } + }, + "createdAt": "2026-01-12T00:00:00.000Z", + "description": "First class postage tariff", + "id": "notify-first", + "name": "First class", + "postage": { + "deliveryDays": 2, + "id": "first-class", + "maxThicknessMm": 5, + "maxWeightGrams": 100, + "size": "STANDARD" + }, + "status": "DRAFT", + "updatedAt": "2026-01-12T00:00:00.000Z", + "version": 1 +} diff --git a/config/suppliers/pack-specification/notify-sameday.json b/config/suppliers/pack-specification/notify-sameday.json new file mode 100644 index 000000000..66b350848 --- /dev/null +++ b/config/suppliers/pack-specification/notify-sameday.json @@ -0,0 +1,51 @@ +{ + "assembly": { + "duplex": true, + "envelopeId": "first-c5", + "features": [ + "SAME_DAY" + ], + "paper": { + "colour": "WHITE", + "id": "paper-std-white-80", + "name": "Standard White 80gsm", + "recycled": true, + "size": "A4", + "weightGSM": 80 + }, + "printColour": "BLACK" + }, + "billingId": "sameday", + "constraints": { + "blackCoveragePercentage": { + "operator": "LESS_THAN", + "value": 20 + }, + "deliveryDays": { + "operator": "LESS_THAN", + "value": 2 + }, + "sheets": { + "operator": "LESS_THAN", + "value": 5 + }, + "sides": { + "operator": "LESS_THAN", + "value": 10 + } + }, + "createdAt": "2026-01-12T00:00:00.000Z", + "description": "Same day production and dispatch", + "id": "notify-sameday", + "name": "Same day dispatch", + "postage": { + "deliveryDays": 1, + "id": "first-class", + "maxThicknessMm": 5, + "maxWeightGrams": 100, + "size": "STANDARD" + }, + "status": "DRAFT", + "updatedAt": "2026-01-12T00:00:00.000Z", + "version": 1 +} diff --git a/config/suppliers/supplier-allocation/datagraphic-datagraphic.json b/config/suppliers/supplier-allocation/datagraphic-datagraphic.json new file mode 100644 index 000000000..984f34e83 --- /dev/null +++ b/config/suppliers/supplier-allocation/datagraphic-datagraphic.json @@ -0,0 +1,7 @@ +{ + "allocationPercentage": 100, + "id": "datagraphic-datagraphic", + "status": "PROD", + "supplier": "datagraphic", + "volumeGroup": "datagraphic" +} diff --git a/config/suppliers/supplier-allocation/supplier1-volumeGroup-test1.json b/config/suppliers/supplier-allocation/supplier1-volumeGroup-test1.json new file mode 100644 index 000000000..81a82b31b --- /dev/null +++ b/config/suppliers/supplier-allocation/supplier1-volumeGroup-test1.json @@ -0,0 +1,7 @@ +{ + "allocationPercentage": 30, + "id": "supplier1-volumeGroup-test1", + "status": "PROD", + "supplier": "supplier1", + "volumeGroup": "volumeGroup-test1" +} diff --git a/config/suppliers/supplier-allocation/supplier2-volumeGroup-test1.json b/config/suppliers/supplier-allocation/supplier2-volumeGroup-test1.json new file mode 100644 index 000000000..9d34abba3 --- /dev/null +++ b/config/suppliers/supplier-allocation/supplier2-volumeGroup-test1.json @@ -0,0 +1,7 @@ +{ + "allocationPercentage": 70, + "id": "supplier2-volumeGroup-test1", + "status": "PROD", + "supplier": "supplier2", + "volumeGroup": "volumeGroup-test1" +} diff --git a/config/suppliers/supplier-allocation/synertec-synertec.json b/config/suppliers/supplier-allocation/synertec-synertec.json new file mode 100644 index 000000000..ddedeb824 --- /dev/null +++ b/config/suppliers/supplier-allocation/synertec-synertec.json @@ -0,0 +1,7 @@ +{ + "allocationPercentage": 100, + "id": "synertec-synertec", + "status": "PROD", + "supplier": "synertec", + "volumeGroup": "synertec" +} diff --git a/config/suppliers/supplier-pack/datagraphic-digitrials-aspiring.json b/config/suppliers/supplier-pack/datagraphic-digitrials-aspiring.json new file mode 100644 index 000000000..f301ac24e --- /dev/null +++ b/config/suppliers/supplier-pack/datagraphic-digitrials-aspiring.json @@ -0,0 +1,7 @@ +{ + "approval": "APPROVED", + "id": "datagraphic-digitrials-aspiring", + "packSpecificationId": "digitrials-aspiring", + "status": "PROD", + "supplierId": "datagraphic" +} diff --git a/config/suppliers/supplier-pack/datagraphic-digitrials-globalminds.json b/config/suppliers/supplier-pack/datagraphic-digitrials-globalminds.json new file mode 100644 index 000000000..3970a0775 --- /dev/null +++ b/config/suppliers/supplier-pack/datagraphic-digitrials-globalminds.json @@ -0,0 +1,7 @@ +{ + "approval": "APPROVED", + "id": "datagraphic-digitrials-globalminds", + "packSpecificationId": "digitrials-globalminds", + "status": "PROD", + "supplierId": "datagraphic" +} diff --git a/config/suppliers/supplier-pack/datagraphic-digitrials-mymelanoma.json b/config/suppliers/supplier-pack/datagraphic-digitrials-mymelanoma.json new file mode 100644 index 000000000..f39b6bdf3 --- /dev/null +++ b/config/suppliers/supplier-pack/datagraphic-digitrials-mymelanoma.json @@ -0,0 +1,7 @@ +{ + "approval": "APPROVED", + "id": "datagraphic-digitrials-mymelanoma", + "packSpecificationId": "digitrials-mymelanoma", + "status": "PROD", + "supplierId": "datagraphic" +} diff --git a/config/suppliers/supplier-pack/datagraphic-digitrials-ofh.json b/config/suppliers/supplier-pack/datagraphic-digitrials-ofh.json new file mode 100644 index 000000000..0dca38fa7 --- /dev/null +++ b/config/suppliers/supplier-pack/datagraphic-digitrials-ofh.json @@ -0,0 +1,7 @@ +{ + "approval": "APPROVED", + "id": "datagraphic-digitrials-ofh", + "packSpecificationId": "digitrials-ofh", + "status": "PROD", + "supplierId": "datagraphic" +} diff --git a/config/suppliers/supplier-pack/datagraphic-digitrials-prostateprogress.json b/config/suppliers/supplier-pack/datagraphic-digitrials-prostateprogress.json new file mode 100644 index 000000000..0926aa2c6 --- /dev/null +++ b/config/suppliers/supplier-pack/datagraphic-digitrials-prostateprogress.json @@ -0,0 +1,7 @@ +{ + "approval": "APPROVED", + "id": "datagraphic-digitrials-prostateprogress", + "packSpecificationId": "digitrials-prostateprogress", + "status": "PROD", + "supplierId": "datagraphic" +} diff --git a/config/suppliers/supplier-pack/datagraphic-digitrials-restore.json b/config/suppliers/supplier-pack/datagraphic-digitrials-restore.json new file mode 100644 index 000000000..72c7e1212 --- /dev/null +++ b/config/suppliers/supplier-pack/datagraphic-digitrials-restore.json @@ -0,0 +1,7 @@ +{ + "approval": "APPROVED", + "id": "datagraphic-digitrials-restore", + "packSpecificationId": "digitrials-restore", + "status": "PROD", + "supplierId": "datagraphic" +} diff --git a/config/suppliers/supplier-pack/datagraphic-notify-admail.json b/config/suppliers/supplier-pack/datagraphic-notify-admail.json new file mode 100644 index 000000000..ebf12c1f8 --- /dev/null +++ b/config/suppliers/supplier-pack/datagraphic-notify-admail.json @@ -0,0 +1,7 @@ +{ + "approval": "APPROVED", + "id": "datagraphic-notify-admail", + "packSpecificationId": "notify-admail", + "status": "PROD", + "supplierId": "datagraphic" +} diff --git a/config/suppliers/supplier-pack/datagraphic-notify-audio.json b/config/suppliers/supplier-pack/datagraphic-notify-audio.json new file mode 100644 index 000000000..20cbd2f80 --- /dev/null +++ b/config/suppliers/supplier-pack/datagraphic-notify-audio.json @@ -0,0 +1,7 @@ +{ + "approval": "DRAFT", + "id": "datagraphic-notify-audio", + "packSpecificationId": "notify-audio", + "status": "DRAFT", + "supplierId": "datagraphic" +} diff --git a/config/suppliers/supplier-pack/datagraphic-notify-braille-whitemail.json b/config/suppliers/supplier-pack/datagraphic-notify-braille-whitemail.json new file mode 100644 index 000000000..2c89088bd --- /dev/null +++ b/config/suppliers/supplier-pack/datagraphic-notify-braille-whitemail.json @@ -0,0 +1,7 @@ +{ + "approval": "DRAFT", + "id": "datagraphic-notify-braille-whitemail", + "packSpecificationId": "notify-braille-whitemail", + "status": "DRAFT", + "supplierId": "datagraphic" +} diff --git a/config/suppliers/supplier-pack/datagraphic-notify-braille.json b/config/suppliers/supplier-pack/datagraphic-notify-braille.json new file mode 100644 index 000000000..d46fcd8ef --- /dev/null +++ b/config/suppliers/supplier-pack/datagraphic-notify-braille.json @@ -0,0 +1,7 @@ +{ + "approval": "DRAFT", + "id": "datagraphic-notify-braille", + "packSpecificationId": "notify-braille", + "status": "DRAFT", + "supplierId": "datagraphic" +} diff --git a/config/suppliers/supplier-pack/datagraphic-notify-c4.json b/config/suppliers/supplier-pack/datagraphic-notify-c4.json new file mode 100644 index 000000000..e54cd61e9 --- /dev/null +++ b/config/suppliers/supplier-pack/datagraphic-notify-c4.json @@ -0,0 +1,7 @@ +{ + "approval": "DRAFT", + "id": "datagraphic-notify-c4", + "packSpecificationId": "notify-c4", + "status": "DRAFT", + "supplierId": "datagraphic" +} diff --git a/config/suppliers/supplier-pack/datagraphic-notify-c5-colour.json b/config/suppliers/supplier-pack/datagraphic-notify-c5-colour.json new file mode 100644 index 000000000..aca5790aa --- /dev/null +++ b/config/suppliers/supplier-pack/datagraphic-notify-c5-colour.json @@ -0,0 +1,7 @@ +{ + "approval": "APPROVED", + "id": "datagraphic-notify-c5-colour", + "packSpecificationId": "notify-c5-colour", + "status": "INT", + "supplierId": "datagraphic" +} diff --git a/config/suppliers/supplier-pack/datagraphic-notify-c5-whitemail.json b/config/suppliers/supplier-pack/datagraphic-notify-c5-whitemail.json new file mode 100644 index 000000000..98daba720 --- /dev/null +++ b/config/suppliers/supplier-pack/datagraphic-notify-c5-whitemail.json @@ -0,0 +1,7 @@ +{ + "approval": "APPROVED", + "id": "datagraphic-notify-c5-whitemail", + "packSpecificationId": "notify-c5-whitemail", + "status": "PROD", + "supplierId": "datagraphic" +} diff --git a/config/suppliers/supplier-pack/datagraphic-notify-c5.json b/config/suppliers/supplier-pack/datagraphic-notify-c5.json new file mode 100644 index 000000000..cea709c6e --- /dev/null +++ b/config/suppliers/supplier-pack/datagraphic-notify-c5.json @@ -0,0 +1,7 @@ +{ + "approval": "APPROVED", + "id": "datagraphic-notify-c5", + "packSpecificationId": "notify-c5", + "status": "PROD", + "supplierId": "datagraphic" +} diff --git a/config/suppliers/supplier-pack/datagraphic-notify-first.json b/config/suppliers/supplier-pack/datagraphic-notify-first.json new file mode 100644 index 000000000..a5caef81f --- /dev/null +++ b/config/suppliers/supplier-pack/datagraphic-notify-first.json @@ -0,0 +1,7 @@ +{ + "approval": "DRAFT", + "id": "datagraphic-notify-first", + "packSpecificationId": "notify-first", + "status": "DRAFT", + "supplierId": "datagraphic" +} diff --git a/config/suppliers/supplier-pack/datagraphic-notify-sameday.json b/config/suppliers/supplier-pack/datagraphic-notify-sameday.json new file mode 100644 index 000000000..309901e0b --- /dev/null +++ b/config/suppliers/supplier-pack/datagraphic-notify-sameday.json @@ -0,0 +1,7 @@ +{ + "approval": "DRAFT", + "id": "datagraphic-notify-sameday", + "packSpecificationId": "notify-sameday", + "status": "DRAFT", + "supplierId": "datagraphic" +} diff --git a/config/suppliers/supplier-pack/mba-notify-audio.json b/config/suppliers/supplier-pack/mba-notify-audio.json new file mode 100644 index 000000000..6a4f53398 --- /dev/null +++ b/config/suppliers/supplier-pack/mba-notify-audio.json @@ -0,0 +1,7 @@ +{ + "approval": "DRAFT", + "id": "mba-notify-audio", + "packSpecificationId": "notify-audio", + "status": "DRAFT", + "supplierId": "mba" +} diff --git a/config/suppliers/supplier-pack/mba-notify-braille-whitemail.json b/config/suppliers/supplier-pack/mba-notify-braille-whitemail.json new file mode 100644 index 000000000..00f97f80a --- /dev/null +++ b/config/suppliers/supplier-pack/mba-notify-braille-whitemail.json @@ -0,0 +1,7 @@ +{ + "approval": "DRAFT", + "id": "mba-notify-braille-whitemail", + "packSpecificationId": "notify-braille-whitemail", + "status": "DRAFT", + "supplierId": "mba" +} diff --git a/config/suppliers/supplier-pack/mba-notify-braille.json b/config/suppliers/supplier-pack/mba-notify-braille.json new file mode 100644 index 000000000..c1bedcabd --- /dev/null +++ b/config/suppliers/supplier-pack/mba-notify-braille.json @@ -0,0 +1,7 @@ +{ + "approval": "DRAFT", + "id": "mba-notify-braille", + "packSpecificationId": "notify-braille", + "status": "DRAFT", + "supplierId": "mba" +} diff --git a/config/suppliers/supplier-pack/mba-notify-c4.json b/config/suppliers/supplier-pack/mba-notify-c4.json new file mode 100644 index 000000000..2d5b12c0d --- /dev/null +++ b/config/suppliers/supplier-pack/mba-notify-c4.json @@ -0,0 +1,7 @@ +{ + "approval": "DRAFT", + "id": "mba-notify-c4", + "packSpecificationId": "notify-c4", + "status": "DRAFT", + "supplierId": "mba" +} diff --git a/config/suppliers/supplier-pack/mba-notify-c5-whitemail.json b/config/suppliers/supplier-pack/mba-notify-c5-whitemail.json new file mode 100644 index 000000000..d5daf8217 --- /dev/null +++ b/config/suppliers/supplier-pack/mba-notify-c5-whitemail.json @@ -0,0 +1,7 @@ +{ + "approval": "DRAFT", + "id": "mba-notify-c5-whitemail", + "packSpecificationId": "notify-c5-whitemail", + "status": "DRAFT", + "supplierId": "mba" +} diff --git a/config/suppliers/supplier-pack/mba-notify-c5.json b/config/suppliers/supplier-pack/mba-notify-c5.json new file mode 100644 index 000000000..5c9f7e67c --- /dev/null +++ b/config/suppliers/supplier-pack/mba-notify-c5.json @@ -0,0 +1,7 @@ +{ + "approval": "DRAFT", + "id": "mba-notify-c5", + "packSpecificationId": "notify-c5", + "status": "DRAFT", + "supplierId": "mba" +} diff --git a/config/suppliers/supplier-pack/mba-notify-first.json b/config/suppliers/supplier-pack/mba-notify-first.json new file mode 100644 index 000000000..8b2092d95 --- /dev/null +++ b/config/suppliers/supplier-pack/mba-notify-first.json @@ -0,0 +1,7 @@ +{ + "approval": "DRAFT", + "id": "mba-notify-first", + "packSpecificationId": "notify-first", + "status": "DRAFT", + "supplierId": "mba" +} diff --git a/config/suppliers/supplier-pack/mba-notify-sameday.json b/config/suppliers/supplier-pack/mba-notify-sameday.json new file mode 100644 index 000000000..208210918 --- /dev/null +++ b/config/suppliers/supplier-pack/mba-notify-sameday.json @@ -0,0 +1,7 @@ +{ + "approval": "DRAFT", + "id": "mba-notify-sameday", + "packSpecificationId": "notify-sameday", + "status": "DRAFT", + "supplierId": "mba" +} diff --git a/config/suppliers/supplier-pack/synertec-nces-abnormal-results-braille.json b/config/suppliers/supplier-pack/synertec-nces-abnormal-results-braille.json new file mode 100644 index 000000000..b27f23748 --- /dev/null +++ b/config/suppliers/supplier-pack/synertec-nces-abnormal-results-braille.json @@ -0,0 +1,7 @@ +{ + "approval": "SUBMITTED", + "id": "synertec-nces-abnormal-results-braille", + "packSpecificationId": "nces-abnormal-results-braille", + "status": "INT", + "supplierId": "synertec" +} diff --git a/config/suppliers/supplier-pack/synertec-nces-abnormal-results.json b/config/suppliers/supplier-pack/synertec-nces-abnormal-results.json new file mode 100644 index 000000000..52c28638d --- /dev/null +++ b/config/suppliers/supplier-pack/synertec-nces-abnormal-results.json @@ -0,0 +1,7 @@ +{ + "approval": "SUBMITTED", + "id": "synertec-nces-abnormal-results", + "packSpecificationId": "nces-abnormal-results", + "status": "INT", + "supplierId": "synertec" +} diff --git a/config/suppliers/supplier-pack/synertec-nces-invites-braille.json b/config/suppliers/supplier-pack/synertec-nces-invites-braille.json new file mode 100644 index 000000000..b22f26ef4 --- /dev/null +++ b/config/suppliers/supplier-pack/synertec-nces-invites-braille.json @@ -0,0 +1,7 @@ +{ + "approval": "SUBMITTED", + "id": "synertec-nces-invites-braille", + "packSpecificationId": "nces-invites-braille", + "status": "INT", + "supplierId": "synertec" +} diff --git a/config/suppliers/supplier-pack/synertec-nces-invites.json b/config/suppliers/supplier-pack/synertec-nces-invites.json new file mode 100644 index 000000000..e84eea5ae --- /dev/null +++ b/config/suppliers/supplier-pack/synertec-nces-invites.json @@ -0,0 +1,7 @@ +{ + "approval": "SUBMITTED", + "id": "synertec-nces-invites", + "packSpecificationId": "nces-invites", + "status": "INT", + "supplierId": "synertec" +} diff --git a/config/suppliers/supplier-pack/synertec-notify-admail-whitemail.json b/config/suppliers/supplier-pack/synertec-notify-admail-whitemail.json new file mode 100644 index 000000000..290abcd88 --- /dev/null +++ b/config/suppliers/supplier-pack/synertec-notify-admail-whitemail.json @@ -0,0 +1,7 @@ +{ + "approval": "APPROVED", + "id": "synertec-notify-admail-whitemail", + "packSpecificationId": "notify-admail-whitemail", + "status": "PROD", + "supplierId": "synertec" +} diff --git a/config/suppliers/supplier-pack/synertec-notify-admail.json b/config/suppliers/supplier-pack/synertec-notify-admail.json new file mode 100644 index 000000000..96bd162d3 --- /dev/null +++ b/config/suppliers/supplier-pack/synertec-notify-admail.json @@ -0,0 +1,7 @@ +{ + "approval": "APPROVED", + "id": "synertec-notify-admail", + "packSpecificationId": "notify-admail", + "status": "PROD", + "supplierId": "synertec" +} diff --git a/config/suppliers/supplier-pack/synertec-notify-audio.json b/config/suppliers/supplier-pack/synertec-notify-audio.json new file mode 100644 index 000000000..6b46cc572 --- /dev/null +++ b/config/suppliers/supplier-pack/synertec-notify-audio.json @@ -0,0 +1,7 @@ +{ + "approval": "DRAFT", + "id": "synertec-notify-audio", + "packSpecificationId": "notify-audio", + "status": "DRAFT", + "supplierId": "synertec" +} diff --git a/config/suppliers/supplier-pack/synertec-notify-braille-whitemail.json b/config/suppliers/supplier-pack/synertec-notify-braille-whitemail.json new file mode 100644 index 000000000..7743da115 --- /dev/null +++ b/config/suppliers/supplier-pack/synertec-notify-braille-whitemail.json @@ -0,0 +1,7 @@ +{ + "approval": "DRAFT", + "id": "synertec-notify-braille-whitemail", + "packSpecificationId": "notify-braille-whitemail", + "status": "INT", + "supplierId": "synertec" +} diff --git a/config/suppliers/supplier-pack/synertec-notify-braille.json b/config/suppliers/supplier-pack/synertec-notify-braille.json new file mode 100644 index 000000000..8ec9cf25f --- /dev/null +++ b/config/suppliers/supplier-pack/synertec-notify-braille.json @@ -0,0 +1,7 @@ +{ + "approval": "DRAFT", + "id": "synertec-notify-braille", + "packSpecificationId": "notify-braille", + "status": "INT", + "supplierId": "synertec" +} diff --git a/config/suppliers/supplier-pack/synertec-notify-c4.json b/config/suppliers/supplier-pack/synertec-notify-c4.json new file mode 100644 index 000000000..060591839 --- /dev/null +++ b/config/suppliers/supplier-pack/synertec-notify-c4.json @@ -0,0 +1,7 @@ +{ + "approval": "DRAFT", + "id": "synertec-notify-c4", + "packSpecificationId": "notify-c4", + "status": "DRAFT", + "supplierId": "synertec" +} diff --git a/config/suppliers/supplier-pack/synertec-notify-c5-colour.json b/config/suppliers/supplier-pack/synertec-notify-c5-colour.json new file mode 100644 index 000000000..16ca8e717 --- /dev/null +++ b/config/suppliers/supplier-pack/synertec-notify-c5-colour.json @@ -0,0 +1,7 @@ +{ + "approval": "APPROVED", + "id": "synertec-notify-c5-colour", + "packSpecificationId": "notify-c5-colour", + "status": "INT", + "supplierId": "synertec" +} diff --git a/config/suppliers/supplier-pack/synertec-notify-c5-whitemail.json b/config/suppliers/supplier-pack/synertec-notify-c5-whitemail.json new file mode 100644 index 000000000..301ec4806 --- /dev/null +++ b/config/suppliers/supplier-pack/synertec-notify-c5-whitemail.json @@ -0,0 +1,7 @@ +{ + "approval": "APPROVED", + "id": "synertec-notify-c5-whitemail", + "packSpecificationId": "notify-c5-whitemail", + "status": "PROD", + "supplierId": "synertec" +} diff --git a/config/suppliers/supplier-pack/synertec-notify-c5.json b/config/suppliers/supplier-pack/synertec-notify-c5.json new file mode 100644 index 000000000..80752c2f3 --- /dev/null +++ b/config/suppliers/supplier-pack/synertec-notify-c5.json @@ -0,0 +1,7 @@ +{ + "approval": "APPROVED", + "id": "synertec-notify-c5", + "packSpecificationId": "notify-c5", + "status": "PROD", + "supplierId": "synertec" +} diff --git a/config/suppliers/supplier-pack/synertec-notify-first.json b/config/suppliers/supplier-pack/synertec-notify-first.json new file mode 100644 index 000000000..9617adbd1 --- /dev/null +++ b/config/suppliers/supplier-pack/synertec-notify-first.json @@ -0,0 +1,7 @@ +{ + "approval": "DRAFT", + "id": "synertec-notify-first", + "packSpecificationId": "notify-first", + "status": "DRAFT", + "supplierId": "synertec" +} diff --git a/config/suppliers/supplier-pack/synertec-notify-sameday.json b/config/suppliers/supplier-pack/synertec-notify-sameday.json new file mode 100644 index 000000000..50f9ff9fd --- /dev/null +++ b/config/suppliers/supplier-pack/synertec-notify-sameday.json @@ -0,0 +1,7 @@ +{ + "approval": "DRAFT", + "id": "synertec-notify-sameday", + "packSpecificationId": "notify-sameday", + "status": "DRAFT", + "supplierId": "synertec" +} diff --git a/config/suppliers/supplier/datagraphic.json b/config/suppliers/supplier/datagraphic.json new file mode 100644 index 000000000..40d0b2ea3 --- /dev/null +++ b/config/suppliers/supplier/datagraphic.json @@ -0,0 +1,7 @@ +{ + "channelType": "LETTER", + "dailyCapacity": 500000, + "id": "datagraphic", + "name": "PSL/Datagraphic", + "status": "PROD" +} diff --git a/config/suppliers/supplier/mba.json b/config/suppliers/supplier/mba.json new file mode 100644 index 000000000..2016fb408 --- /dev/null +++ b/config/suppliers/supplier/mba.json @@ -0,0 +1,7 @@ +{ + "channelType": "LETTER", + "dailyCapacity": 500000, + "id": "mba", + "name": "MBA Group", + "status": "INT" +} diff --git a/config/suppliers/supplier/supplier1.json b/config/suppliers/supplier/supplier1.json new file mode 100644 index 000000000..5ef81166a --- /dev/null +++ b/config/suppliers/supplier/supplier1.json @@ -0,0 +1,7 @@ +{ + "channelType": "LETTER", + "dailyCapacity": 500000, + "id": "supplier1", + "name": "Supplier1", + "status": "PROD" +} diff --git a/config/suppliers/supplier/supplier2.json b/config/suppliers/supplier/supplier2.json new file mode 100644 index 000000000..883da65cc --- /dev/null +++ b/config/suppliers/supplier/supplier2.json @@ -0,0 +1,7 @@ +{ + "channelType": "LETTER", + "dailyCapacity": 500000, + "id": "supplier2", + "name": "Supplier2", + "status": "PROD" +} diff --git a/config/suppliers/supplier/synertec.json b/config/suppliers/supplier/synertec.json new file mode 100644 index 000000000..faa8ef45a --- /dev/null +++ b/config/suppliers/supplier/synertec.json @@ -0,0 +1,7 @@ +{ + "channelType": "LETTER", + "dailyCapacity": 500000, + "id": "synertec", + "name": "Synertec", + "status": "PROD" +} diff --git a/config/suppliers/volume-group/accessible.json b/config/suppliers/volume-group/accessible.json new file mode 100644 index 000000000..8fd399cdc --- /dev/null +++ b/config/suppliers/volume-group/accessible.json @@ -0,0 +1,8 @@ +{ + "description": "Accessible formats", + "endDate": "2028-03-31", + "id": "accessible", + "name": "Accessible", + "startDate": "2026-04-01", + "status": "DRAFT" +} diff --git a/config/suppliers/volume-group/bau.json b/config/suppliers/volume-group/bau.json new file mode 100644 index 000000000..238f3a4a9 --- /dev/null +++ b/config/suppliers/volume-group/bau.json @@ -0,0 +1,8 @@ +{ + "description": "Combined BAU volume", + "endDate": "2028-03-31", + "id": "bau", + "name": "BAU", + "startDate": "2026-04-01", + "status": "DRAFT" +} diff --git a/config/suppliers/volume-group/datagraphic.json b/config/suppliers/volume-group/datagraphic.json new file mode 100644 index 000000000..36951e2b9 --- /dev/null +++ b/config/suppliers/volume-group/datagraphic.json @@ -0,0 +1,7 @@ +{ + "description": "PSL/Datagraphic contract", + "id": "datagraphic", + "name": "Datagraphic", + "startDate": "2026-01-01", + "status": "PROD" +} diff --git a/config/suppliers/volume-group/sameday.json b/config/suppliers/volume-group/sameday.json new file mode 100644 index 000000000..d17c520a2 --- /dev/null +++ b/config/suppliers/volume-group/sameday.json @@ -0,0 +1,8 @@ +{ + "description": "Same day dispatch", + "endDate": "2028-03-31", + "id": "sameday", + "name": "Same Day", + "startDate": "2026-04-01", + "status": "DRAFT" +} diff --git a/config/suppliers/volume-group/synertec.json b/config/suppliers/volume-group/synertec.json new file mode 100644 index 000000000..cdb63ee8a --- /dev/null +++ b/config/suppliers/volume-group/synertec.json @@ -0,0 +1,7 @@ +{ + "description": "Synertec contract", + "id": "synertec", + "name": "Synertec", + "startDate": "2026-01-01", + "status": "PROD" +} diff --git a/config/suppliers/volume-group/volumeGroup-test1.json b/config/suppliers/volume-group/volumeGroup-test1.json new file mode 100644 index 000000000..3b3bab804 --- /dev/null +++ b/config/suppliers/volume-group/volumeGroup-test1.json @@ -0,0 +1,7 @@ +{ + "description": "Dev Test Volume Group 1", + "id": "volumeGroup-test1", + "name": "Dev Test Volume Group 1", + "startDate": "2026-01-01", + "status": "PROD" +} diff --git a/infrastructure/terraform/components/api/ddb_table_supplier_configuration.tf b/infrastructure/terraform/components/api/ddb_table_supplier_configuration.tf index 8d089a19b..90b876a6f 100644 --- a/infrastructure/terraform/components/api/ddb_table_supplier_configuration.tf +++ b/infrastructure/terraform/components/api/ddb_table_supplier_configuration.tf @@ -2,8 +2,8 @@ resource "aws_dynamodb_table" "supplier-configuration" { name = "${local.csi}-supplier-config" billing_mode = "PAY_PER_REQUEST" - hash_key = "PK" - range_key = "SK" + hash_key = "pk" + range_key = "sk" ttl { attribute_name = "ttl" @@ -11,12 +11,12 @@ resource "aws_dynamodb_table" "supplier-configuration" { } attribute { - name = "PK" + name = "pk" type = "S" } attribute { - name = "SK" + name = "sk" type = "S" } @@ -34,13 +34,13 @@ resource "aws_dynamodb_table" "supplier-configuration" { global_secondary_index { name = "EntityTypeIndex" hash_key = "entityType" - range_key = "SK" + range_key = "sk" projection_type = "ALL" } global_secondary_index { name = "volumeGroup-index" - hash_key = "PK" + hash_key = "pk" range_key = "volumeGroup" projection_type = "ALL" } diff --git a/internal/datastore/src/__test__/db.ts b/internal/datastore/src/__test__/db.ts index 481166e60..9d0bf0e1e 100644 --- a/internal/datastore/src/__test__/db.ts +++ b/internal/datastore/src/__test__/db.ts @@ -151,14 +151,14 @@ const createSupplierConfigTableCommand = new CreateTableCommand({ TableName: "supplier-config", BillingMode: "PAY_PER_REQUEST", KeySchema: [ - { AttributeName: "PK", KeyType: "HASH" }, // Partition key - { AttributeName: "SK", KeyType: "RANGE" }, // Sort key + { AttributeName: "pk", KeyType: "HASH" }, // Partition key + { AttributeName: "sk", KeyType: "RANGE" }, // Sort key ], GlobalSecondaryIndexes: [ { IndexName: "volumeGroup-index", KeySchema: [ - { AttributeName: "PK", KeyType: "HASH" }, // Partition key for GSI + { AttributeName: "pk", KeyType: "HASH" }, // Partition key for GSI { AttributeName: "volumeGroup", KeyType: "RANGE" }, // Sort key for GSI ], Projection: { @@ -167,8 +167,8 @@ const createSupplierConfigTableCommand = new CreateTableCommand({ }, ], AttributeDefinitions: [ - { AttributeName: "PK", AttributeType: "S" }, - { AttributeName: "SK", AttributeType: "S" }, + { AttributeName: "pk", AttributeType: "S" }, + { AttributeName: "sk", AttributeType: "S" }, { AttributeName: "volumeGroup", AttributeType: "S" }, ], }); diff --git a/internal/datastore/src/__test__/supplier-config-repository.test.ts b/internal/datastore/src/__test__/supplier-config-repository.test.ts index 9fde74f94..ddd44fd4d 100644 --- a/internal/datastore/src/__test__/supplier-config-repository.test.ts +++ b/internal/datastore/src/__test__/supplier-config-repository.test.ts @@ -9,8 +9,8 @@ import { SupplierConfigRepository } from "../supplier-config-repository"; function createLetterVariantItem(variantId: string) { return { - PK: "LETTER_VARIANT", - SK: variantId, + pk: "ENTITY#letter-variant", + sk: `ID#${variantId}`, id: variantId, name: `Variant ${variantId}`, description: `Description for variant ${variantId}`, @@ -29,8 +29,8 @@ function createVolumeGroupItem(groupId: string, status = "PROD") { .toISOString() .split("T")[0]; // Ends in a day to ensure it's active based on end date. Tests can override this if needed. return { - PK: "VOLUME_GROUP", - SK: groupId, + pk: "ENTITY#volume-group", + sk: `ID#${groupId}`, id: groupId, name: `Volume Group ${groupId}`, description: `Description for volume group ${groupId}`, @@ -46,8 +46,8 @@ function createSupplierAllocationItem( supplier: string, ) { return { - PK: `SUPPLIER_ALLOCATION`, - SK: allocationId, + pk: "ENTITY#supplier-allocation", + sk: `ID#${allocationId}`, id: allocationId, status: "PROD", volumeGroup: groupId, @@ -58,8 +58,8 @@ function createSupplierAllocationItem( function createSupplierItem(supplierId: string) { return { - PK: "SUPPLIER", - SK: supplierId, + pk: "ENTITY#supplier", + sk: `ID#${supplierId}`, id: supplierId, name: `Supplier ${supplierId}`, channelType: "LETTER", diff --git a/internal/datastore/src/supplier-config-repository.ts b/internal/datastore/src/supplier-config-repository.ts index 1f82bb0c2..4eeeddb10 100644 --- a/internal/datastore/src/supplier-config-repository.ts +++ b/internal/datastore/src/supplier-config-repository.ts @@ -28,7 +28,7 @@ export class SupplierConfigRepository { const result = await this.ddbClient.send( new GetCommand({ TableName: this.config.supplierConfigTableName, - Key: { PK: "LETTER_VARIANT", SK: variantId }, + Key: { pk: "ENTITY#letter-variant", sk: `ID#${variantId}` }, }), ); if (!result.Item) { @@ -42,7 +42,7 @@ export class SupplierConfigRepository { const result = await this.ddbClient.send( new GetCommand({ TableName: this.config.supplierConfigTableName, - Key: { PK: "VOLUME_GROUP", SK: groupId }, + Key: { pk: "ENTITY#volume-group", sk: `ID#${groupId}` }, }), ); if (!result.Item) { @@ -61,12 +61,12 @@ export class SupplierConfigRepository { KeyConditionExpression: "#pk = :pk AND #group = :groupId", FilterExpression: "#status = :status ", ExpressionAttributeNames: { - "#pk": "PK", + "#pk": "pk", "#group": "volumeGroup", "#status": "status", }, ExpressionAttributeValues: { - ":pk": "SUPPLIER_ALLOCATION", + ":pk": "ENTITY#supplier-allocation", ":groupId": groupId, ":status": "PROD", }, @@ -87,7 +87,7 @@ export class SupplierConfigRepository { const result = await this.ddbClient.send( new GetCommand({ TableName: this.config.supplierConfigTableName, - Key: { PK: "SUPPLIER", SK: supplierId }, + Key: { pk: "ENTITY#supplier", sk: `ID#${supplierId}` }, }), ); if (!result.Item) { diff --git a/tests/config/main.config.ts b/tests/config/main.config.ts index 3a371f324..b2146c7ad 100644 --- a/tests/config/main.config.ts +++ b/tests/config/main.config.ts @@ -25,11 +25,11 @@ const localConfig: PlaywrightTestConfig = { testDir: path.resolve(__dirname, "../component-tests/letterQueue-tests"), testMatch: "**/*.spec.ts", }, - { - name: "integration-tests", - testDir: path.resolve(__dirname, "../component-tests/integration-tests"), - testMatch: "**/*.spec.ts", - }, + // { + // name: "integration-tests", + // testDir: path.resolve(__dirname, "../component-tests/integration-tests"), + // testMatch: "**/*.spec.ts", + // }, ], };