APIM Cut 1.54#2808
Merged
Merged
Conversation
Bumps [default-browser-id](https://github.com/sindresorhus/default-browser-id) from 5.0.0 to 5.0.1. - [Release notes](https://github.com/sindresorhus/default-browser-id/releases) - [Commits](sindresorhus/default-browser-id@v5.0.0...v5.0.1) --- updated-dependencies: - dependency-name: default-browser-id dependency-version: 5.0.1 dependency-type: indirect update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] <support@github.com>
…RSSUP-91505-combine-prs-npm-2025-11-17
…UP-91505-combine-prs-npm-2025-11-17
…91505-combine-prs-npm-2025-11-17
Bumps [default-browser-id](https://github.com/sindresorhus/default-browser-id) from 5.0.0 to 5.0.1. - [Release notes](https://github.com/sindresorhus/default-browser-id/releases) - [Commits](sindresorhus/default-browser-id@v5.0.0...v5.0.1) --- updated-dependencies: - dependency-name: default-browser-id dependency-version: 5.0.1 dependency-type: indirect update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] <support@github.com>
Bumps [@hapi/cryptiles](https://github.com/hapijs/cryptiles) from 6.0.1 to 6.0.3. - [Commits](hapijs/cryptiles@v6.0.1...v6.0.3) --- updated-dependencies: - dependency-name: "@hapi/cryptiles" dependency-version: 6.0.3 dependency-type: indirect update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] <support@github.com>
Bumps [form-data](https://github.com/form-data/form-data) from 4.0.4 to 4.0.5. - [Release notes](https://github.com/form-data/form-data/releases) - [Changelog](https://github.com/form-data/form-data/blob/master/CHANGELOG.md) - [Commits](form-data/form-data@v4.0.4...v4.0.5) --- updated-dependencies: - dependency-name: form-data dependency-version: 4.0.5 dependency-type: indirect update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] <support@github.com>
Bumps [@eslint/eslintrc](https://github.com/eslint/eslintrc) from 3.3.1 to 3.3.3. - [Release notes](https://github.com/eslint/eslintrc/releases) - [Changelog](https://github.com/eslint/eslintrc/blob/main/CHANGELOG.md) - [Commits](eslint/eslintrc@v3.3.1...eslintrc-v3.3.3) --- updated-dependencies: - dependency-name: "@eslint/eslintrc" dependency-version: 3.3.3 dependency-type: indirect update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] <support@github.com>
Bumps [exceptiongroup](https://github.com/agronholm/exceptiongroup) from 1.3.0 to 1.3.1. - [Release notes](https://github.com/agronholm/exceptiongroup/releases) - [Changelog](https://github.com/agronholm/exceptiongroup/blob/main/CHANGES.rst) - [Commits](agronholm/exceptiongroup@1.3.0...1.3.1) --- updated-dependencies: - dependency-name: exceptiongroup dependency-version: 1.3.1 dependency-type: indirect update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] <support@github.com>
Bumps [pytest-check](https://github.com/okken/pytest-check) from 2.6.0 to 2.6.2. - [Release notes](https://github.com/okken/pytest-check/releases) - [Changelog](https://github.com/okken/pytest-check/blob/main/changelog.md) - [Commits](okken/pytest-check@2.6.0...2.6.2) --- updated-dependencies: - dependency-name: pytest-check dependency-version: 2.6.2 dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] <support@github.com>
Bumps [pydantic](https://github.com/pydantic/pydantic) from 2.12.4 to 2.12.5. - [Release notes](https://github.com/pydantic/pydantic/releases) - [Changelog](https://github.com/pydantic/pydantic/blob/v2.12.5/HISTORY.md) - [Commits](pydantic/pydantic@v2.12.4...v2.12.5) --- updated-dependencies: - dependency-name: pydantic dependency-version: 2.12.5 dependency-type: indirect update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] <support@github.com>
Bumps [rpds-py](https://github.com/crate-py/rpds) from 0.29.0 to 0.30.0. - [Release notes](https://github.com/crate-py/rpds/releases) - [Commits](crate-py/rpds@v0.29.0...v0.30.0) --- updated-dependencies: - dependency-name: rpds-py dependency-version: 0.30.0 dependency-type: indirect update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] <support@github.com>
Bumps [urllib3](https://github.com/urllib3/urllib3) from 2.5.0 to 2.6.0. - [Release notes](https://github.com/urllib3/urllib3/releases) - [Changelog](https://github.com/urllib3/urllib3/blob/main/CHANGES.rst) - [Commits](urllib3/urllib3@2.5.0...2.6.0) --- updated-dependencies: - dependency-name: urllib3 dependency-version: 2.6.0 dependency-type: indirect update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] <support@github.com>
Bumps [undici](https://github.com/nodejs/undici) from 6.22.0 to 6.23.0. - [Release notes](https://github.com/nodejs/undici/releases) - [Commits](nodejs/undici@v6.22.0...v6.23.0) --- updated-dependencies: - dependency-name: undici dependency-version: 6.23.0 dependency-type: indirect ... Signed-off-by: dependabot[bot] <support@github.com>
Bumps [@eslint-community/eslint-utils](https://github.com/eslint-community/eslint-utils) from 4.9.0 to 4.9.1. - [Release notes](https://github.com/eslint-community/eslint-utils/releases) - [Commits](eslint-community/eslint-utils@v4.9.0...v4.9.1) --- updated-dependencies: - dependency-name: "@eslint-community/eslint-utils" dependency-version: 4.9.1 dependency-type: indirect update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] <support@github.com>
Bumps [esquery](https://github.com/estools/esquery) from 1.6.0 to 1.7.0. - [Commits](https://github.com/estools/esquery/commits) --- updated-dependencies: - dependency-name: esquery dependency-version: 1.7.0 dependency-type: indirect update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] <support@github.com>
Bumps [globals](https://github.com/sindresorhus/globals) from 16.5.0 to 17.0.0. - [Release notes](https://github.com/sindresorhus/globals/releases) - [Commits](sindresorhus/globals@v16.5.0...v17.0.0) --- updated-dependencies: - dependency-name: globals dependency-version: 17.0.0 dependency-type: direct:development update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] <support@github.com>
Bumps [minimatch](https://github.com/isaacs/minimatch) from 3.1.2 to 3.1.5. - [Changelog](https://github.com/isaacs/minimatch/blob/main/changelog.md) - [Commits](isaacs/minimatch@v3.1.2...v3.1.5) --- updated-dependencies: - dependency-name: minimatch dependency-version: 3.1.5 dependency-type: indirect ... Signed-off-by: dependabot[bot] <support@github.com>
Feature/raa 5299
…lop/default-browser-id-5.0.1 npm(deps): bump default-browser-id from 5.0.0 to 5.0.1
Bumps [spdx-license-ids](https://github.com/jslicense/spdx-license-ids) from 3.0.22 to 3.0.23. - [Commits](jslicense/spdx-license-ids@v3.0.22...v3.0.23) --- updated-dependencies: - dependency-name: spdx-license-ids dependency-version: 3.0.23 dependency-type: indirect update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] <support@github.com>
Bumps [core-js](https://github.com/zloirock/core-js/tree/HEAD/packages/core-js) from 3.46.0 to 3.48.0. - [Release notes](https://github.com/zloirock/core-js/releases) - [Changelog](https://github.com/zloirock/core-js/blob/master/CHANGELOG.md) - [Commits](https://github.com/zloirock/core-js/commits/v3.48.0/packages/core-js) --- updated-dependencies: - dependency-name: core-js dependency-version: 3.48.0 dependency-type: indirect update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] <support@github.com>
- Split copilot-instructions.md into targeted .instructions.md files (proxy, sandbox, testing, specification) loaded by applyTo patterns - Add /overview, /release, and /add-context prompts - Document release process, sandbox patterns, Actor model, and proxy architecture
Feature/raa 7531
- lxml: ^5.1.0 -> ^6.1.0 (CVE fix, earliest fixed version 6.1.0) - pytest: ^8.4.2 -> ^9.0.3 (CVE fix, earliest fixed version 9.0.3) - werkzeug: add >=3.1.6 (CVE fix, earliest fixed version 3.1.6) - openapi-core: ^0.19.5 -> ^0.20.0 (unblock werkzeug update) - pytest-nhsd-apim: ^5.0.6 -> ^6.0.0 (unblock lxml and pytest updates)
fix: update vulnerable dependencies
[RAA-7705]-[]-[testdev environment apim support]-[DW]
pin GitHub Actions to latest versions with commit SHAs
422 response for A042 endpoint
[RAA-5861]-[GC]-[Bumping version to 1.54 +minor]-[EW]
There was a problem hiding this comment.
Pull request overview
This PR looks like an “APIM cut” that updates API specification/behaviour (notably attachment retrieval error handling), refreshes dependency/tooling versions, and extends deployment/ops configuration (new environment + pipeline stage), alongside adding internal repo guidance prompts/instructions.
Changes:
- Update attachment retrieval semantics/documentation for FHIR R4 to return 422 Unprocessable Entity when an attachment is not yet downloadable, including new OperationOutcome example.
- Refactor STU3 upload/download content-type schemas (inline media types) and update sandbox mappings/mocks accordingly.
- Update dependency/tooling configuration (Redocly CLI, Python deps) and CI/CD/pipeline wiring (new
testdevinternal-dev deployment stage), plus add repo “Copilot context” and instruction/prompt docs.
Reviewed changes
Copilot reviewed 30 out of 33 changed files in this pull request and generated 3 comments.
Show a summary per file
| File | Description |
|---|---|
| tests/integration/test_user_restricted.py | Simplifies the user-restricted integration tests and removes negative-path cases. |
| tests/data.py | Updates the Actor.RC user ID used in integration/auth flows. |
| tests/conftest.py | Removes apim_app_flow_vars fixture usage and updates app-restricted user ID. |
| specification/components/stu3/schemas/responses/retrieveAttachment/200Response.yaml | Expands 200 response content to explicit media types using StringBinarySchema. |
| specification/components/stu3/schemas/file/FileContentTypeSchemaUpload.yaml | Removes the shared upload content-type schema file. |
| specification/components/stu3/schemas/file/FileContentTypeSchemaDownload.yaml | Removes the shared download content-type schema file. |
| specification/components/stu3/schemas/endpoints/a020-upload-file-to-document-store.yaml | Inlines requestBody media types instead of $ref to removed schema file. |
| specification/components/r4/schemas/responses/retrieveAttachment/422Response.yaml | Adds a new documented 422 OperationOutcome response for attachment retrieval. |
| specification/components/r4/schemas/endpoints/a042-retrieve-attachment.yaml | Updates docs + adds 422 response reference for attachment availability errors. |
| sandbox/src/routes/stu3/services/mockResponseProvider.js | Adds new request→response mappings for cancel referral scenarios. |
| sandbox/src/mocks/r4/NHSDigital-OperationOutcome-422.json | Adds sandbox mock example used by the spec examples pipeline. |
| sandbox/python-deps.txt | Adds a Python dependency snapshot file (appears generated). |
| sandbox/package.json | Bumps globals devDependency. |
| sandbox/package-lock.json | Updates lockfile to v3 and refreshes transitive deps. |
| redocly.yaml | Updates Redocly rule configuration (stops disabling info-license-url). |
| pyproject.toml | Updates Python dependency versions (incl. openapi-core, pytest, pytest-nhsd-apim) and adds werkzeug constraint. |
| package.json | Upgrades @redocly/cli to v2 and adds handlebars override. |
| node-deps.json | Adds a Node dependency tree/snapshot file (appears generated). |
| manifest_template.yml | Adds testdev-internal-dev Apigee environment entry. |
| azure/azure-release-pipeline.yml | Adds testdev release stage and manual approval gate. |
| .github/workflows/continous-integration-workflow.yaml | Pins GitHub Actions to specific SHAs. |
| .github/workflows/combine-prs.yml | Pins actions/github-script to a specific SHA. |
| .github/prompts/release.prompt.md | Adds a release-process Copilot prompt. |
| .github/prompts/overview.prompt.md | Adds a repo overview/onboarding Copilot prompt. |
| .github/prompts/add-context.prompt.md | Adds a Copilot prompt for updating .github/copilot-instructions.md. |
| .github/instructions/testing.instructions.md | Adds test-suite conventions and guidance. |
| .github/instructions/specification.instructions.md | Adds OAS workflow + examples pipeline documentation. |
| .github/instructions/sandbox.instructions.md | Adds sandbox architecture + patterns documentation. |
| .github/instructions/proxy.instructions.md | Adds Apigee proxy architecture + flow documentation. |
| .github/copilot-instructions.md | Adds repo-wide Copilot context (structure, workflows, conventions). |
| .github/CODEOWNERS | Adds an additional code owner for dependency/version files. |
Files not reviewed (1)
- sandbox/package-lock.json: Language not supported
Comments suppressed due to low confidence (1)
redocly.yaml:7
redocly.yamlno longer disables theinfo-license-urlrule, but the OpenAPI spec only providesinfo.license.name(noinfo.license.url). With the recommended ruleset this will causemake lint/redocly lintto fail unless the spec is updated.
Either re-disable the rule here, or add a license URL to specification/e-referrals-service-api.yaml.
extends:
- recommended
rules:
no-invalid-media-type-examples:
severity: off
tag-description: off
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
Comment on lines
31
to
38
| @pytest.mark.asyncio | ||
| @pytest.mark.parametrize( | ||
| "endpoint_url, is_fhir_4, user, apim_app_flow_vars ", | ||
| "endpoint_url, is_fhir_4, user", | ||
| [ | ||
| ("", False, Actor.RC_DEV, [Actor.RC_DEV.org_code]), | ||
| ("/FHIR/R4/", True, Actor.RC_DEV, [Actor.RC_DEV.org_code]), | ||
| ("/FHIR/STU3/", False, Actor.RC_DEV, [Actor.RC_DEV.org_code]), | ||
| ("", False, Actor.RC_DEV), | ||
| ("/FHIR/R4/", True, Actor.RC_DEV), | ||
| ("/FHIR/STU3/", False, Actor.RC_DEV), | ||
| ], |
Comment on lines
+1
to
+7
| { | ||
| "version": "1.0.0", | ||
| "name": "e-referrals-service-api-sandbox", | ||
| "problems": [ | ||
| "invalid: globals@16.5.0 /home/ers/git/e-referrals-service-api/sandbox/node_modules/globals" | ||
| ], | ||
| "dependencies": { |
Comment on lines
+21
to
+25
| ├── ply * | ||
| └── six * | ||
| lxml 5.4.0 Powerful and Pythonic XML processing library combining libxml2/libxslt with the ElementTree API. | ||
| openapi-core 0.19.5 client-side and server-side support for the OpenAPI Specification v3 | ||
| ├── isodate * |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Add any other relevant notes or explanations here. Remove this line if you have nothing to add.
Reviews Required
Review Checklist
ℹ️ This section is to be filled in by the reviewer.