diff --git a/package-lock.json b/package-lock.json index 88f8ec549..568c64bd7 100644 --- a/package-lock.json +++ b/package-lock.json @@ -9,7 +9,7 @@ "version": "0.0.1", "license": "MIT", "dependencies": { - "@redocly/cli": "^1.34.0" + "@redocly/cli": "^1.34.2" }, "devDependencies": { "apigeetool": "^0.16.5", @@ -506,9 +506,9 @@ } }, "node_modules/@redocly/cli": { - "version": "1.34.0", - "resolved": "https://registry.npmjs.org/@redocly/cli/-/cli-1.34.0.tgz", - "integrity": "sha512-Kg/t9zMjZB5cyb0YQLa+gne5E5Rz6wZP/goug1+2qaR17UqeupidBzwqDdr3lszEK3q2A37g4+W7pvdBOkiGQA==", + "version": "1.34.2", + "resolved": "https://registry.npmjs.org/@redocly/cli/-/cli-1.34.2.tgz", + "integrity": "sha512-XnKG7yrr0GUZ7MyqHk9hRt//HGUSnLDwwEXI8HDQdyDFp+YFbddqcQPOWc/sDeDBTEiBXqwPOb3/VKA+8NtSMw==", "license": "MIT", "dependencies": { "@opentelemetry/api": "1.9.0", @@ -517,8 +517,8 @@ "@opentelemetry/sdk-trace-node": "1.26.0", "@opentelemetry/semantic-conventions": "1.27.0", "@redocly/config": "^0.22.0", - "@redocly/openapi-core": "1.34.0", - "@redocly/respect-core": "1.34.0", + "@redocly/openapi-core": "1.34.2", + "@redocly/respect-core": "1.34.2", "abort-controller": "^3.0.0", "chokidar": "^3.5.1", "colorette": "^1.2.0", @@ -578,15 +578,15 @@ "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" }, "node_modules/@redocly/config": { - "version": "0.22.1", - "resolved": "https://registry.npmjs.org/@redocly/config/-/config-0.22.1.tgz", - "integrity": "sha512-1CqQfiG456v9ZgYBG9xRQHnpXjt8WoSnDwdkX6gxktuK69v2037hTAR1eh0DGIqpZ1p4k82cGH8yTNwt7/pI9g==", + "version": "0.22.2", + "resolved": "https://registry.npmjs.org/@redocly/config/-/config-0.22.2.tgz", + "integrity": "sha512-roRDai8/zr2S9YfmzUfNhKjOF0NdcOIqF7bhf4MVC5UxpjIysDjyudvlAiVbpPHp3eDRWbdzUgtkK1a7YiDNyQ==", "license": "MIT" }, "node_modules/@redocly/openapi-core": { - "version": "1.34.0", - "resolved": "https://registry.npmjs.org/@redocly/openapi-core/-/openapi-core-1.34.0.tgz", - "integrity": "sha512-Ji00EiLQRXq0pJIz5pAjGF9MfQvQVsQehc6uIis6sqat8tG/zh25Zi64w6HVGEDgJEzUeq/CuUlD0emu3Hdaqw==", + "version": "1.34.2", + "resolved": "https://registry.npmjs.org/@redocly/openapi-core/-/openapi-core-1.34.2.tgz", + "integrity": "sha512-glfkQFJizLdq2fBkNvc2FJW0sxDb5exd0wIXhFk+WHaFLMREBC3CxRo2Zq7uJIdfV9U3YTceMbXJklpDfmmwFQ==", "license": "MIT", "dependencies": { "@redocly/ajv": "^8.11.2", @@ -626,14 +626,14 @@ } }, "node_modules/@redocly/respect-core": { - "version": "1.34.0", - "resolved": "https://registry.npmjs.org/@redocly/respect-core/-/respect-core-1.34.0.tgz", - "integrity": "sha512-CO2XxJ0SUYHKixKPTQm2U6QrGLnNhQy88CnX20llCxXDKd485cSioRMZ8MMNhHrnDsUlprSuM3ui2z5JGf1ftw==", + "version": "1.34.2", + "resolved": "https://registry.npmjs.org/@redocly/respect-core/-/respect-core-1.34.2.tgz", + "integrity": "sha512-X6VR9bbHXrI01Wh5t6TIHxFCVHcP4Iy42micKLIk/Cg6EmHVbaSDGOD6mxChXtEIrwnY+bqyUbjlXr9+YM7B9A==", "license": "MIT", "dependencies": { "@faker-js/faker": "^7.6.0", "@redocly/ajv": "8.11.2", - "@redocly/openapi-core": "1.34.0", + "@redocly/openapi-core": "1.34.2", "better-ajv-errors": "^1.2.0", "colorette": "^2.0.20", "concat-stream": "^2.0.0", @@ -701,12 +701,12 @@ "license": "MIT" }, "node_modules/@types/node": { - "version": "22.13.13", - "resolved": "https://registry.npmjs.org/@types/node/-/node-22.13.13.tgz", - "integrity": "sha512-ClsL5nMwKaBRwPcCvH8E7+nU4GxHVx1axNvMZTFHMEfNI7oahimt26P5zjVCRrjiIWj6YFXfE1v3dEp94wLcGQ==", + "version": "22.14.1", + "resolved": "https://registry.npmjs.org/@types/node/-/node-22.14.1.tgz", + "integrity": "sha512-u0HuPQwe/dHrItgHHpmw3N2fYCR6x4ivMNbPHRkBVP4CvN+kiRrKHWk3i8tXiO/joPwXLMYvF9TTF0eqgHIuOw==", "license": "MIT", "dependencies": { - "undici-types": "~6.20.0" + "undici-types": "~6.21.0" } }, "node_modules/@types/stylis": { @@ -1581,9 +1581,9 @@ } }, "node_modules/dompurify": { - "version": "3.2.4", - "resolved": "https://registry.npmjs.org/dompurify/-/dompurify-3.2.4.tgz", - "integrity": "sha512-ysFSFEDVduQpyhzAob/kkuJjf5zWkZD8/A9ywSp1byueyuCfHamrCBa14/Oc2iiB0e51B+NpxSl5gmzn+Ms/mg==", + "version": "3.2.5", + "resolved": "https://registry.npmjs.org/dompurify/-/dompurify-3.2.5.tgz", + "integrity": "sha512-mLPd29uoRe9HpvwP2TxClGQBzGXeEC/we/q+bFlmPPmj2p2Ugl3r6ATu/UU1v77DXNcehiBg9zsr1dREyA/dJQ==", "license": "(MPL-2.0 OR Apache-2.0)", "optionalDependencies": { "@types/trusted-types": "^2.0.7" @@ -2701,9 +2701,9 @@ } }, "node_modules/long": { - "version": "5.3.1", - "resolved": "https://registry.npmjs.org/long/-/long-5.3.1.tgz", - "integrity": "sha512-ka87Jz3gcx/I7Hal94xaN2tZEOPoUOEVftkQqZx2EeQRN7LGdfLlI3FvZ+7WDplm+vK2Urx9ULrvSowtdCieng==", + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/long/-/long-5.3.2.tgz", + "integrity": "sha512-mNAgZ1GmyNhD7AuqnTG3/VQ26o760+ZYBPKjPvugO8+nLbYfX6TVpJPseBvopbdY+qpZ/lKUnmEc1LeZYS3QAA==", "license": "Apache-2.0" }, "node_modules/loose-envify": { @@ -3199,9 +3199,9 @@ } }, "node_modules/open": { - "version": "10.1.0", - "resolved": "https://registry.npmjs.org/open/-/open-10.1.0.tgz", - "integrity": "sha512-mnkeQ1qP5Ue2wd+aivTD3NHd/lZ96Lu0jgf0pwktLPtx6cTZiH7tyeGRRHs0zX0rbrahXPnXlUnbeXyaBBuIaw==", + "version": "10.1.1", + "resolved": "https://registry.npmjs.org/open/-/open-10.1.1.tgz", + "integrity": "sha512-zy1wx4+P3PfhXSEPJNtZmJXfhkkIaxU1VauWIrDZw1O7uJRDRJtKr9n3Ic4NgbA16KyOxOXO2ng9gYwCdXuSXA==", "license": "MIT", "dependencies": { "default-browser": "^5.2.1", @@ -3473,9 +3473,9 @@ } }, "node_modules/protobufjs": { - "version": "7.4.0", - "resolved": "https://registry.npmjs.org/protobufjs/-/protobufjs-7.4.0.tgz", - "integrity": "sha512-mRUWCc3KUU4w1jU8sGxICXH/gNS94DvI1gxqDvBzhj1JpcsimQkYiOJfwsPUykUI5ZaspFbSgmBLER8IrQ3tqw==", + "version": "7.5.0", + "resolved": "https://registry.npmjs.org/protobufjs/-/protobufjs-7.5.0.tgz", + "integrity": "sha512-Z2E/kOY1QjoMlCytmexzYfDm/w5fKAiRwpSzGtdnXW1zC88Z2yXazHHrOtwCzn+7wSxyE8PYM4rvVcMphF9sOA==", "hasInstallScript": true, "license": "BSD-3-Clause", "dependencies": { @@ -3627,24 +3627,24 @@ } }, "node_modules/react": { - "version": "19.0.0", - "resolved": "https://registry.npmjs.org/react/-/react-19.0.0.tgz", - "integrity": "sha512-V8AVnmPIICiWpGfm6GLzCR/W5FXLchHop40W4nXBmdlEceh16rCN8O8LNWm5bh5XUX91fh7KpA+W0TgMKmgTpQ==", + "version": "19.1.0", + "resolved": "https://registry.npmjs.org/react/-/react-19.1.0.tgz", + "integrity": "sha512-FS+XFBNvn3GTAWq26joslQgWNoFu08F4kl0J4CgdNKADkdSGXQyTCnKteIAJy96Br6YbpEU1LSzV5dYtjMkMDg==", "license": "MIT", "engines": { "node": ">=0.10.0" } }, "node_modules/react-dom": { - "version": "19.0.0", - "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-19.0.0.tgz", - "integrity": "sha512-4GV5sHFG0e/0AD4X+ySy6UJd3jVl1iNsNHdpad0qhABJ11twS3TTBnseqsKurKcsNqCEFeGL3uLpVChpIO3QfQ==", + "version": "19.1.0", + "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-19.1.0.tgz", + "integrity": "sha512-Xs1hdnE+DyKgeHJeJznQmYMIBG3TKIHJJT95Q58nHLSrElKlGQqDTR2HQ9fx5CN/Gk6Vh/kupBTDLU11/nDk/g==", "license": "MIT", "dependencies": { - "scheduler": "^0.25.0" + "scheduler": "^0.26.0" }, "peerDependencies": { - "react": "^19.0.0" + "react": "^19.1.0" } }, "node_modules/react-is": { @@ -3881,9 +3881,9 @@ "dev": true }, "node_modules/scheduler": { - "version": "0.25.0", - "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.25.0.tgz", - "integrity": "sha512-xFVuu11jh+xcO7JOAGJNOXld8/TcEHK/4CituBUeUb5hqxJLj9YuemAEuvm9gQ/+pgXYfbQuqAkiYu+u7YEsNA==", + "version": "0.26.0", + "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.26.0.tgz", + "integrity": "sha512-NlHwttCI/l5gCPR3D1nNXtWABUmBwvZpEQiD4IXSbIDq8BzLIK/7Ir5gTFSGZDUu37K5cMNp0hFtzO38sC7gWA==", "license": "MIT" }, "node_modules/semver": { @@ -4329,9 +4329,9 @@ "license": "MIT" }, "node_modules/styled-components": { - "version": "6.1.16", - "resolved": "https://registry.npmjs.org/styled-components/-/styled-components-6.1.16.tgz", - "integrity": "sha512-KpWB6ORAWGmbWM10cDJfEV6sXc/uVkkkQV3SLwTNQ/E/PqWgNHIoMSLh1Lnk2FkB9+JHK7uuMq1i+9ArxDD7iQ==", + "version": "6.1.17", + "resolved": "https://registry.npmjs.org/styled-components/-/styled-components-6.1.17.tgz", + "integrity": "sha512-97D7DwWanI7nN24v0D4SvbfjLE9656umNSJZkBkDIWL37aZqG/wRQ+Y9pWtXyBIM/NSfcBzHLErEsqHmJNSVUg==", "license": "MIT", "dependencies": { "@emotion/is-prop-valid": "1.2.2", @@ -4565,9 +4565,9 @@ } }, "node_modules/undici-types": { - "version": "6.20.0", - "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.20.0.tgz", - "integrity": "sha512-Ny6QZ2Nju20vw1SRHe3d9jVu6gJ+4e3+MMpqu7pqE5HT6WsTSlce++GQmK5UXS8mzV8DSYHrQH+Xrf2jVcuKNg==", + "version": "6.21.0", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.21.0.tgz", + "integrity": "sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ==", "license": "MIT" }, "node_modules/universalify": { @@ -4611,9 +4611,9 @@ "license": "BSD" }, "node_modules/use-sync-external-store": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/use-sync-external-store/-/use-sync-external-store-1.4.0.tgz", - "integrity": "sha512-9WXSPC5fMv61vaupRkCKCxsPxBocVnwakBEkMIHHpkTTg6icbJtg6jzgtLDm4bl3cSHAca52rYWih0k4K3PfHw==", + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/use-sync-external-store/-/use-sync-external-store-1.5.0.tgz", + "integrity": "sha512-Rb46I4cGGVBmjamjphe8L/UnvJD+uPPtTkNvX5mZgqdbavhI4EbgIWJiIHXJ8bc/i9EQGPRh4DwEURJ552Do0A==", "license": "MIT", "peerDependencies": { "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0" @@ -5143,9 +5143,9 @@ } }, "@redocly/cli": { - "version": "1.34.0", - "resolved": "https://registry.npmjs.org/@redocly/cli/-/cli-1.34.0.tgz", - "integrity": "sha512-Kg/t9zMjZB5cyb0YQLa+gne5E5Rz6wZP/goug1+2qaR17UqeupidBzwqDdr3lszEK3q2A37g4+W7pvdBOkiGQA==", + "version": "1.34.2", + "resolved": "https://registry.npmjs.org/@redocly/cli/-/cli-1.34.2.tgz", + "integrity": "sha512-XnKG7yrr0GUZ7MyqHk9hRt//HGUSnLDwwEXI8HDQdyDFp+YFbddqcQPOWc/sDeDBTEiBXqwPOb3/VKA+8NtSMw==", "requires": { "@opentelemetry/api": "1.9.0", "@opentelemetry/exporter-trace-otlp-http": "0.53.0", @@ -5153,8 +5153,8 @@ "@opentelemetry/sdk-trace-node": "1.26.0", "@opentelemetry/semantic-conventions": "1.27.0", "@redocly/config": "^0.22.0", - "@redocly/openapi-core": "1.34.0", - "@redocly/respect-core": "1.34.0", + "@redocly/openapi-core": "1.34.2", + "@redocly/respect-core": "1.34.2", "abort-controller": "^3.0.0", "chokidar": "^3.5.1", "colorette": "^1.2.0", @@ -5199,14 +5199,14 @@ } }, "@redocly/config": { - "version": "0.22.1", - "resolved": "https://registry.npmjs.org/@redocly/config/-/config-0.22.1.tgz", - "integrity": "sha512-1CqQfiG456v9ZgYBG9xRQHnpXjt8WoSnDwdkX6gxktuK69v2037hTAR1eh0DGIqpZ1p4k82cGH8yTNwt7/pI9g==" + "version": "0.22.2", + "resolved": "https://registry.npmjs.org/@redocly/config/-/config-0.22.2.tgz", + "integrity": "sha512-roRDai8/zr2S9YfmzUfNhKjOF0NdcOIqF7bhf4MVC5UxpjIysDjyudvlAiVbpPHp3eDRWbdzUgtkK1a7YiDNyQ==" }, "@redocly/openapi-core": { - "version": "1.34.0", - "resolved": "https://registry.npmjs.org/@redocly/openapi-core/-/openapi-core-1.34.0.tgz", - "integrity": "sha512-Ji00EiLQRXq0pJIz5pAjGF9MfQvQVsQehc6uIis6sqat8tG/zh25Zi64w6HVGEDgJEzUeq/CuUlD0emu3Hdaqw==", + "version": "1.34.2", + "resolved": "https://registry.npmjs.org/@redocly/openapi-core/-/openapi-core-1.34.2.tgz", + "integrity": "sha512-glfkQFJizLdq2fBkNvc2FJW0sxDb5exd0wIXhFk+WHaFLMREBC3CxRo2Zq7uJIdfV9U3YTceMbXJklpDfmmwFQ==", "requires": { "@redocly/ajv": "^8.11.2", "@redocly/config": "^0.22.0", @@ -5238,13 +5238,13 @@ } }, "@redocly/respect-core": { - "version": "1.34.0", - "resolved": "https://registry.npmjs.org/@redocly/respect-core/-/respect-core-1.34.0.tgz", - "integrity": "sha512-CO2XxJ0SUYHKixKPTQm2U6QrGLnNhQy88CnX20llCxXDKd485cSioRMZ8MMNhHrnDsUlprSuM3ui2z5JGf1ftw==", + "version": "1.34.2", + "resolved": "https://registry.npmjs.org/@redocly/respect-core/-/respect-core-1.34.2.tgz", + "integrity": "sha512-X6VR9bbHXrI01Wh5t6TIHxFCVHcP4Iy42micKLIk/Cg6EmHVbaSDGOD6mxChXtEIrwnY+bqyUbjlXr9+YM7B9A==", "requires": { "@faker-js/faker": "^7.6.0", "@redocly/ajv": "8.11.2", - "@redocly/openapi-core": "1.34.0", + "@redocly/openapi-core": "1.34.2", "better-ajv-errors": "^1.2.0", "colorette": "^2.0.20", "concat-stream": "^2.0.0", @@ -5296,11 +5296,11 @@ "integrity": "sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==" }, "@types/node": { - "version": "22.13.13", - "resolved": "https://registry.npmjs.org/@types/node/-/node-22.13.13.tgz", - "integrity": "sha512-ClsL5nMwKaBRwPcCvH8E7+nU4GxHVx1axNvMZTFHMEfNI7oahimt26P5zjVCRrjiIWj6YFXfE1v3dEp94wLcGQ==", + "version": "22.14.1", + "resolved": "https://registry.npmjs.org/@types/node/-/node-22.14.1.tgz", + "integrity": "sha512-u0HuPQwe/dHrItgHHpmw3N2fYCR6x4ivMNbPHRkBVP4CvN+kiRrKHWk3i8tXiO/joPwXLMYvF9TTF0eqgHIuOw==", "requires": { - "undici-types": "~6.20.0" + "undici-types": "~6.21.0" } }, "@types/stylis": { @@ -5927,9 +5927,9 @@ "integrity": "sha512-EjePK1srD3P08o2j4f0ExnylqRs5B9tJjcp9t1krH2qRi8CCdsYfwe9JgSLurFBWwq4uOlipzfk5fHNvwFKr8Q==" }, "dompurify": { - "version": "3.2.4", - "resolved": "https://registry.npmjs.org/dompurify/-/dompurify-3.2.4.tgz", - "integrity": "sha512-ysFSFEDVduQpyhzAob/kkuJjf5zWkZD8/A9ywSp1byueyuCfHamrCBa14/Oc2iiB0e51B+NpxSl5gmzn+Ms/mg==", + "version": "3.2.5", + "resolved": "https://registry.npmjs.org/dompurify/-/dompurify-3.2.5.tgz", + "integrity": "sha512-mLPd29uoRe9HpvwP2TxClGQBzGXeEC/we/q+bFlmPPmj2p2Ugl3r6ATu/UU1v77DXNcehiBg9zsr1dREyA/dJQ==", "requires": { "@types/trusted-types": "^2.0.7" } @@ -6710,9 +6710,9 @@ } }, "long": { - "version": "5.3.1", - "resolved": "https://registry.npmjs.org/long/-/long-5.3.1.tgz", - "integrity": "sha512-ka87Jz3gcx/I7Hal94xaN2tZEOPoUOEVftkQqZx2EeQRN7LGdfLlI3FvZ+7WDplm+vK2Urx9ULrvSowtdCieng==" + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/long/-/long-5.3.2.tgz", + "integrity": "sha512-mNAgZ1GmyNhD7AuqnTG3/VQ26o760+ZYBPKjPvugO8+nLbYfX6TVpJPseBvopbdY+qpZ/lKUnmEc1LeZYS3QAA==" }, "loose-envify": { "version": "1.4.0", @@ -7064,9 +7064,9 @@ } }, "open": { - "version": "10.1.0", - "resolved": "https://registry.npmjs.org/open/-/open-10.1.0.tgz", - "integrity": "sha512-mnkeQ1qP5Ue2wd+aivTD3NHd/lZ96Lu0jgf0pwktLPtx6cTZiH7tyeGRRHs0zX0rbrahXPnXlUnbeXyaBBuIaw==", + "version": "10.1.1", + "resolved": "https://registry.npmjs.org/open/-/open-10.1.1.tgz", + "integrity": "sha512-zy1wx4+P3PfhXSEPJNtZmJXfhkkIaxU1VauWIrDZw1O7uJRDRJtKr9n3Ic4NgbA16KyOxOXO2ng9gYwCdXuSXA==", "requires": { "default-browser": "^5.2.1", "define-lazy-prop": "^3.0.0", @@ -7261,9 +7261,9 @@ } }, "protobufjs": { - "version": "7.4.0", - "resolved": "https://registry.npmjs.org/protobufjs/-/protobufjs-7.4.0.tgz", - "integrity": "sha512-mRUWCc3KUU4w1jU8sGxICXH/gNS94DvI1gxqDvBzhj1JpcsimQkYiOJfwsPUykUI5ZaspFbSgmBLER8IrQ3tqw==", + "version": "7.5.0", + "resolved": "https://registry.npmjs.org/protobufjs/-/protobufjs-7.5.0.tgz", + "integrity": "sha512-Z2E/kOY1QjoMlCytmexzYfDm/w5fKAiRwpSzGtdnXW1zC88Z2yXazHHrOtwCzn+7wSxyE8PYM4rvVcMphF9sOA==", "requires": { "@protobufjs/aspromise": "^1.1.2", "@protobufjs/base64": "^1.1.2", @@ -7383,16 +7383,16 @@ } }, "react": { - "version": "19.0.0", - "resolved": "https://registry.npmjs.org/react/-/react-19.0.0.tgz", - "integrity": "sha512-V8AVnmPIICiWpGfm6GLzCR/W5FXLchHop40W4nXBmdlEceh16rCN8O8LNWm5bh5XUX91fh7KpA+W0TgMKmgTpQ==" + "version": "19.1.0", + "resolved": "https://registry.npmjs.org/react/-/react-19.1.0.tgz", + "integrity": "sha512-FS+XFBNvn3GTAWq26joslQgWNoFu08F4kl0J4CgdNKADkdSGXQyTCnKteIAJy96Br6YbpEU1LSzV5dYtjMkMDg==" }, "react-dom": { - "version": "19.0.0", - "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-19.0.0.tgz", - "integrity": "sha512-4GV5sHFG0e/0AD4X+ySy6UJd3jVl1iNsNHdpad0qhABJ11twS3TTBnseqsKurKcsNqCEFeGL3uLpVChpIO3QfQ==", + "version": "19.1.0", + "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-19.1.0.tgz", + "integrity": "sha512-Xs1hdnE+DyKgeHJeJznQmYMIBG3TKIHJJT95Q58nHLSrElKlGQqDTR2HQ9fx5CN/Gk6Vh/kupBTDLU11/nDk/g==", "requires": { - "scheduler": "^0.25.0" + "scheduler": "^0.26.0" } }, "react-is": { @@ -7571,9 +7571,9 @@ "dev": true }, "scheduler": { - "version": "0.25.0", - "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.25.0.tgz", - "integrity": "sha512-xFVuu11jh+xcO7JOAGJNOXld8/TcEHK/4CituBUeUb5hqxJLj9YuemAEuvm9gQ/+pgXYfbQuqAkiYu+u7YEsNA==" + "version": "0.26.0", + "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.26.0.tgz", + "integrity": "sha512-NlHwttCI/l5gCPR3D1nNXtWABUmBwvZpEQiD4IXSbIDq8BzLIK/7Ir5gTFSGZDUu37K5cMNp0hFtzO38sC7gWA==" }, "semver": { "version": "5.7.2", @@ -7921,9 +7921,9 @@ "integrity": "sha512-vrN+B7DBIoTTZjnPNewwhx6cBA/H+IS7rfW68n7XxC1y7uoiGQBxaKzqucGUgavX15dJgiGztLJ8vxuEzwqBdA==" }, "styled-components": { - "version": "6.1.16", - "resolved": "https://registry.npmjs.org/styled-components/-/styled-components-6.1.16.tgz", - "integrity": "sha512-KpWB6ORAWGmbWM10cDJfEV6sXc/uVkkkQV3SLwTNQ/E/PqWgNHIoMSLh1Lnk2FkB9+JHK7uuMq1i+9ArxDD7iQ==", + "version": "6.1.17", + "resolved": "https://registry.npmjs.org/styled-components/-/styled-components-6.1.17.tgz", + "integrity": "sha512-97D7DwWanI7nN24v0D4SvbfjLE9656umNSJZkBkDIWL37aZqG/wRQ+Y9pWtXyBIM/NSfcBzHLErEsqHmJNSVUg==", "requires": { "@emotion/is-prop-valid": "1.2.2", "@emotion/unitless": "0.8.1", @@ -8090,9 +8090,9 @@ "integrity": "sha512-uROZWze0R0itiAKVPsYhFov9LxrPMHLMEQFszeI2gCN6bnIIZ8twzBCJcN2LJrBBLfrP0t1FW0g+JmKVl8Vk1g==" }, "undici-types": { - "version": "6.20.0", - "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.20.0.tgz", - "integrity": "sha512-Ny6QZ2Nju20vw1SRHe3d9jVu6gJ+4e3+MMpqu7pqE5HT6WsTSlce++GQmK5UXS8mzV8DSYHrQH+Xrf2jVcuKNg==" + "version": "6.21.0", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.21.0.tgz", + "integrity": "sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ==" }, "universalify": { "version": "2.0.1", @@ -8127,9 +8127,9 @@ "integrity": "sha512-XdVKMF4SJ0nP/O7XIPB0JwAEuT9lDIYnNsK8yGVe43y0AWoKeJNdv3ZNWh7ksJ6KqQFjOO6ox/VEitLnaVNufw==" }, "use-sync-external-store": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/use-sync-external-store/-/use-sync-external-store-1.4.0.tgz", - "integrity": "sha512-9WXSPC5fMv61vaupRkCKCxsPxBocVnwakBEkMIHHpkTTg6icbJtg6jzgtLDm4bl3cSHAca52rYWih0k4K3PfHw==", + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/use-sync-external-store/-/use-sync-external-store-1.5.0.tgz", + "integrity": "sha512-Rb46I4cGGVBmjamjphe8L/UnvJD+uPPtTkNvX5mZgqdbavhI4EbgIWJiIHXJ8bc/i9EQGPRh4DwEURJ552Do0A==", "requires": {} }, "util-deprecate": { diff --git a/package.json b/package.json index af873a636..781646fd6 100644 --- a/package.json +++ b/package.json @@ -12,7 +12,7 @@ "license": "MIT", "homepage": "https://github.com/NHSDigital/e-referrals-service-api", "dependencies": { - "@redocly/cli": "^1.34.0" + "@redocly/cli": "^1.34.2" }, "devDependencies": { "apigeetool": "^0.16.5", diff --git a/poetry.lock b/poetry.lock index b9bdcfec6..e9e1f9fdf 100644 --- a/poetry.lock +++ b/poetry.lock @@ -22,14 +22,14 @@ tests-mypy = ["mypy (>=1.11.1) ; platform_python_implementation == \"CPython\" a [[package]] name = "authlib" -version = "1.5.1" +version = "1.5.2" description = "The ultimate Python library in building OAuth and OpenID Connect servers and clients." optional = false python-versions = ">=3.9" groups = ["dev"] files = [ - {file = "authlib-1.5.1-py2.py3-none-any.whl", hash = "sha256:8408861cbd9b4ea2ff759b00b6f02fd7d81ac5a56d0b2b22c08606c6049aae11"}, - {file = "authlib-1.5.1.tar.gz", hash = "sha256:5cbc85ecb0667312c1cdc2f9095680bb735883b123fb509fde1e65b1c5df972e"}, + {file = "authlib-1.5.2-py2.py3-none-any.whl", hash = "sha256:8804dd4402ac5e4a0435ac49e0b6e19e395357cfa632a3f624dcb4f6df13b4b1"}, + {file = "authlib-1.5.2.tar.gz", hash = "sha256:fe85ec7e50c5f86f1e2603518bb3b4f632985eb4a355e52256530790e326c512"}, ] [package.dependencies] @@ -404,20 +404,20 @@ test = ["pytest (>=6)"] [[package]] name = "flake8" -version = "7.1.2" +version = "7.2.0" description = "the modular source code checker: pep8 pyflakes and co" optional = false -python-versions = ">=3.8.1" +python-versions = ">=3.9" groups = ["dev"] files = [ - {file = "flake8-7.1.2-py2.py3-none-any.whl", hash = "sha256:1cbc62e65536f65e6d754dfe6f1bada7f5cf392d6f5db3c2b85892466c3e7c1a"}, - {file = "flake8-7.1.2.tar.gz", hash = "sha256:c586ffd0b41540951ae41af572e6790dbd49fc12b3aa2541685d253d9bd504bd"}, + {file = "flake8-7.2.0-py2.py3-none-any.whl", hash = "sha256:93b92ba5bdb60754a6da14fa3b93a9361fd00a59632ada61fd7b130436c40343"}, + {file = "flake8-7.2.0.tar.gz", hash = "sha256:fa558ae3f6f7dbf2b4f22663e5343b6b6023620461f8d4ff2019ef4b5ee70426"}, ] [package.dependencies] mccabe = ">=0.7.0,<0.8.0" -pycodestyle = ">=2.12.0,<2.13.0" -pyflakes = ">=3.2.0,<3.3.0" +pycodestyle = ">=2.13.0,<2.14.0" +pyflakes = ">=3.3.0,<3.4.0" [[package]] name = "gitdb" @@ -568,14 +568,14 @@ requests = ">=2.31.0,<3.0.0" [[package]] name = "jsonschema-specifications" -version = "2024.10.1" +version = "2025.4.1" description = "The JSON Schema meta-schemas and vocabularies, exposed as a Registry" optional = false python-versions = ">=3.9" groups = ["main"] files = [ - {file = "jsonschema_specifications-2024.10.1-py3-none-any.whl", hash = "sha256:a09a0680616357d9a0ecf05c12ad234479f549239d0f5b55f3deea67475da9bf"}, - {file = "jsonschema_specifications-2024.10.1.tar.gz", hash = "sha256:0f38b83639958ce1152d02a7f062902c41c8fd20d558b0c34344292d417ae272"}, + {file = "jsonschema_specifications-2025.4.1-py3-none-any.whl", hash = "sha256:4653bffbd6584f7de83a67e0d620ef16900b390ddc7939d56684d6c81e33f1af"}, + {file = "jsonschema_specifications-2025.4.1.tar.gz", hash = "sha256:630159c9f4dbea161a6a2205c3011cc4f18ff381b189fff48bb39b9bf26ae608"}, ] [package.dependencies] @@ -583,49 +583,26 @@ referencing = ">=0.31.0" [[package]] name = "lazy-object-proxy" -version = "1.10.0" +version = "1.11.0" description = "A fast and thorough lazy object proxy." optional = false -python-versions = ">=3.8" +python-versions = ">=3.9" groups = ["main"] files = [ - {file = "lazy-object-proxy-1.10.0.tar.gz", hash = "sha256:78247b6d45f43a52ef35c25b5581459e85117225408a4128a3daf8bf9648ac69"}, - {file = "lazy_object_proxy-1.10.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:855e068b0358ab916454464a884779c7ffa312b8925c6f7401e952dcf3b89977"}, - {file = "lazy_object_proxy-1.10.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7ab7004cf2e59f7c2e4345604a3e6ea0d92ac44e1c2375527d56492014e690c3"}, - {file = "lazy_object_proxy-1.10.0-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:dc0d2fc424e54c70c4bc06787e4072c4f3b1aa2f897dfdc34ce1013cf3ceef05"}, - {file = "lazy_object_proxy-1.10.0-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:e2adb09778797da09d2b5ebdbceebf7dd32e2c96f79da9052b2e87b6ea495895"}, - {file = "lazy_object_proxy-1.10.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:b1f711e2c6dcd4edd372cf5dec5c5a30d23bba06ee012093267b3376c079ec83"}, - {file = "lazy_object_proxy-1.10.0-cp310-cp310-win32.whl", hash = "sha256:76a095cfe6045c7d0ca77db9934e8f7b71b14645f0094ffcd842349ada5c5fb9"}, - {file = "lazy_object_proxy-1.10.0-cp310-cp310-win_amd64.whl", hash = "sha256:b4f87d4ed9064b2628da63830986c3d2dca7501e6018347798313fcf028e2fd4"}, - {file = "lazy_object_proxy-1.10.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:fec03caabbc6b59ea4a638bee5fce7117be8e99a4103d9d5ad77f15d6f81020c"}, - {file = "lazy_object_proxy-1.10.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:02c83f957782cbbe8136bee26416686a6ae998c7b6191711a04da776dc9e47d4"}, - {file = "lazy_object_proxy-1.10.0-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:009e6bb1f1935a62889ddc8541514b6a9e1fcf302667dcb049a0be5c8f613e56"}, - {file = "lazy_object_proxy-1.10.0-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:75fc59fc450050b1b3c203c35020bc41bd2695ed692a392924c6ce180c6f1dc9"}, - {file = "lazy_object_proxy-1.10.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:782e2c9b2aab1708ffb07d4bf377d12901d7a1d99e5e410d648d892f8967ab1f"}, - {file = "lazy_object_proxy-1.10.0-cp311-cp311-win32.whl", hash = "sha256:edb45bb8278574710e68a6b021599a10ce730d156e5b254941754a9cc0b17d03"}, - {file = "lazy_object_proxy-1.10.0-cp311-cp311-win_amd64.whl", hash = "sha256:e271058822765ad5e3bca7f05f2ace0de58a3f4e62045a8c90a0dfd2f8ad8cc6"}, - {file = "lazy_object_proxy-1.10.0-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:e98c8af98d5707dcdecc9ab0863c0ea6e88545d42ca7c3feffb6b4d1e370c7ba"}, - {file = "lazy_object_proxy-1.10.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:952c81d415b9b80ea261d2372d2a4a2332a3890c2b83e0535f263ddfe43f0d43"}, - {file = "lazy_object_proxy-1.10.0-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:80b39d3a151309efc8cc48675918891b865bdf742a8616a337cb0090791a0de9"}, - {file = "lazy_object_proxy-1.10.0-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:e221060b701e2aa2ea991542900dd13907a5c90fa80e199dbf5a03359019e7a3"}, - {file = "lazy_object_proxy-1.10.0-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:92f09ff65ecff3108e56526f9e2481b8116c0b9e1425325e13245abfd79bdb1b"}, - {file = "lazy_object_proxy-1.10.0-cp312-cp312-win32.whl", hash = "sha256:3ad54b9ddbe20ae9f7c1b29e52f123120772b06dbb18ec6be9101369d63a4074"}, - {file = "lazy_object_proxy-1.10.0-cp312-cp312-win_amd64.whl", hash = "sha256:127a789c75151db6af398b8972178afe6bda7d6f68730c057fbbc2e96b08d282"}, - {file = "lazy_object_proxy-1.10.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:9e4ed0518a14dd26092614412936920ad081a424bdcb54cc13349a8e2c6d106a"}, - {file = "lazy_object_proxy-1.10.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5ad9e6ed739285919aa9661a5bbed0aaf410aa60231373c5579c6b4801bd883c"}, - {file = "lazy_object_proxy-1.10.0-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2fc0a92c02fa1ca1e84fc60fa258458e5bf89d90a1ddaeb8ed9cc3147f417255"}, - {file = "lazy_object_proxy-1.10.0-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:0aefc7591920bbd360d57ea03c995cebc204b424524a5bd78406f6e1b8b2a5d8"}, - {file = "lazy_object_proxy-1.10.0-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:5faf03a7d8942bb4476e3b62fd0f4cf94eaf4618e304a19865abf89a35c0bbee"}, - {file = "lazy_object_proxy-1.10.0-cp38-cp38-win32.whl", hash = "sha256:e333e2324307a7b5d86adfa835bb500ee70bfcd1447384a822e96495796b0ca4"}, - {file = "lazy_object_proxy-1.10.0-cp38-cp38-win_amd64.whl", hash = "sha256:cb73507defd385b7705c599a94474b1d5222a508e502553ef94114a143ec6696"}, - {file = "lazy_object_proxy-1.10.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:366c32fe5355ef5fc8a232c5436f4cc66e9d3e8967c01fb2e6302fd6627e3d94"}, - {file = "lazy_object_proxy-1.10.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2297f08f08a2bb0d32a4265e98a006643cd7233fb7983032bd61ac7a02956b3b"}, - {file = "lazy_object_proxy-1.10.0-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:18dd842b49456aaa9a7cf535b04ca4571a302ff72ed8740d06b5adcd41fe0757"}, - {file = "lazy_object_proxy-1.10.0-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:217138197c170a2a74ca0e05bddcd5f1796c735c37d0eee33e43259b192aa424"}, - {file = "lazy_object_proxy-1.10.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:9a3a87cf1e133e5b1994144c12ca4aa3d9698517fe1e2ca82977781b16955658"}, - {file = "lazy_object_proxy-1.10.0-cp39-cp39-win32.whl", hash = "sha256:30b339b2a743c5288405aa79a69e706a06e02958eab31859f7f3c04980853b70"}, - {file = "lazy_object_proxy-1.10.0-cp39-cp39-win_amd64.whl", hash = "sha256:a899b10e17743683b293a729d3a11f2f399e8a90c73b089e29f5d0fe3509f0dd"}, - {file = "lazy_object_proxy-1.10.0-pp310.pp311.pp312.pp38.pp39-none-any.whl", hash = "sha256:80fa48bd89c8f2f456fc0765c11c23bf5af827febacd2f523ca5bc1893fcc09d"}, + {file = "lazy_object_proxy-1.11.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:132bc8a34f2f2d662a851acfd1b93df769992ed1b81e2b1fda7db3e73b0d5a18"}, + {file = "lazy_object_proxy-1.11.0-cp310-cp310-win_amd64.whl", hash = "sha256:01261a3afd8621a1accb5682df2593dc7ec7d21d38f411011a5712dcd418fbed"}, + {file = "lazy_object_proxy-1.11.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:090935756cc041e191f22f4f9c7fd4fe9a454717067adf5b1bbd2ce3046b556e"}, + {file = "lazy_object_proxy-1.11.0-cp311-cp311-win_amd64.whl", hash = "sha256:76ec715017f06410f57df442c1a8d66e6b5f7035077785b129817f5ae58810a4"}, + {file = "lazy_object_proxy-1.11.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:9a9f39098e93a63618a79eef2889ae3cf0605f676cd4797fdfd49fcd7ddc318b"}, + {file = "lazy_object_proxy-1.11.0-cp312-cp312-win_amd64.whl", hash = "sha256:ee13f67f4fcd044ef27bfccb1c93d39c100046fec1fad6e9a1fcdfd17492aeb3"}, + {file = "lazy_object_proxy-1.11.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:fd4c84eafd8dd15ea16f7d580758bc5c2ce1f752faec877bb2b1f9f827c329cd"}, + {file = "lazy_object_proxy-1.11.0-cp313-cp313-win_amd64.whl", hash = "sha256:d2503427bda552d3aefcac92f81d9e7ca631e680a2268cbe62cd6a58de6409b7"}, + {file = "lazy_object_proxy-1.11.0-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:0613116156801ab3fccb9e2b05ed83b08ea08c2517fdc6c6bc0d4697a1a376e3"}, + {file = "lazy_object_proxy-1.11.0-cp313-cp313t-win_amd64.whl", hash = "sha256:bb03c507d96b65f617a6337dedd604399d35face2cdf01526b913fb50c4cb6e8"}, + {file = "lazy_object_proxy-1.11.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:28c174db37946f94b97a97b579932ff88f07b8d73a46b6b93322b9ac06794a3b"}, + {file = "lazy_object_proxy-1.11.0-cp39-cp39-win_amd64.whl", hash = "sha256:d662f0669e27704495ff1f647070eb8816931231c44e583f4d0701b7adf6272f"}, + {file = "lazy_object_proxy-1.11.0-py3-none-any.whl", hash = "sha256:a56a5093d433341ff7da0e89f9b486031ccd222ec8e52ec84d0ec1cdc819674b"}, + {file = "lazy_object_proxy-1.11.0.tar.gz", hash = "sha256:18874411864c9fbbbaa47f9fc1dd7aea754c86cfde21278ef427639d1dd78e9c"}, ] [[package]] @@ -822,38 +799,38 @@ files = [ [[package]] name = "more-itertools" -version = "10.6.0" +version = "10.7.0" description = "More routines for operating on iterables, beyond itertools" optional = false python-versions = ">=3.9" groups = ["main"] files = [ - {file = "more-itertools-10.6.0.tar.gz", hash = "sha256:2cd7fad1009c31cc9fb6a035108509e6547547a7a738374f10bd49a09eb3ee3b"}, - {file = "more_itertools-10.6.0-py3-none-any.whl", hash = "sha256:6eb054cb4b6db1473f6e15fcc676a08e4732548acd47c708f0e179c2c7c01e89"}, + {file = "more_itertools-10.7.0-py3-none-any.whl", hash = "sha256:d43980384673cb07d2f7d2d918c616b30c659c089ee23953f601d6609c67510e"}, + {file = "more_itertools-10.7.0.tar.gz", hash = "sha256:9fddd5403be01a94b204faadcff459ec3568cf110265d3c54323e1e866ad29d3"}, ] [[package]] name = "mypy-extensions" -version = "1.0.0" +version = "1.1.0" description = "Type system extensions for programs checked with the mypy type checker." optional = false -python-versions = ">=3.5" +python-versions = ">=3.8" groups = ["dev"] files = [ - {file = "mypy_extensions-1.0.0-py3-none-any.whl", hash = "sha256:4392f6c0eb8a5668a69e23d168ffa70f0be9ccfd32b5cc2d26a34ae5b844552d"}, - {file = "mypy_extensions-1.0.0.tar.gz", hash = "sha256:75dbf8955dc00442a438fc4d0666508a9a97b6bd41aa2f0ffe9d2f2725af0782"}, + {file = "mypy_extensions-1.1.0-py3-none-any.whl", hash = "sha256:1be4cccdb0f2482337c4743e60421de3a356cd97508abadd57d47403e94f5505"}, + {file = "mypy_extensions-1.1.0.tar.gz", hash = "sha256:52e68efc3284861e772bbcd66823fde5ae21fd2fdb51c62a211403730b916558"}, ] [[package]] name = "openapi-core" -version = "0.19.4" +version = "0.19.5" description = "client-side and server-side support for the OpenAPI Specification v3" optional = false python-versions = "<4.0.0,>=3.8.0" groups = ["main"] files = [ - {file = "openapi_core-0.19.4-py3-none-any.whl", hash = "sha256:38e8347b6ebeafe8d3beb588214ecf0171874bb65411e9d4efd23cb011687201"}, - {file = "openapi_core-0.19.4.tar.gz", hash = "sha256:1150d9daa5e7b4cacfd7d7e097333dc89382d7d72703934128dcf8a1a4d0df49"}, + {file = "openapi_core-0.19.5-py3-none-any.whl", hash = "sha256:ef7210e83a59394f46ce282639d8d26ad6fc8094aa904c9c16eb1bac8908911f"}, + {file = "openapi_core-0.19.5.tar.gz", hash = "sha256:421e753da56c391704454e66afe4803a290108590ac8fa6f4a4487f4ec11f2d3"}, ] [package.dependencies] @@ -864,16 +841,17 @@ more-itertools = "*" openapi-schema-validator = ">=0.6.0,<0.7.0" openapi-spec-validator = ">=0.7.1,<0.8.0" parse = "*" -werkzeug = "*" +typing-extensions = ">=4.8.0,<5.0.0" +werkzeug = "<3.1.2" [package.extras] aiohttp = ["aiohttp (>=3.0)", "multidict (>=6.0.4,<7.0.0)"] django = ["django (>=3.0)"] falcon = ["falcon (>=3.0)"] -fastapi = ["fastapi (>=0.111,<0.113)"] +fastapi = ["fastapi (>=0.111,<0.116)"] flask = ["flask"] requests = ["requests"] -starlette = ["aioitertools (>=0.11.0,<0.12.0)", "starlette (>=0.26.1,<0.39.0)"] +starlette = ["aioitertools (>=0.11,<0.13)", "starlette (>=0.26.1,<0.45.0)"] [[package]] name = "openapi-schema-validator" @@ -912,14 +890,14 @@ openapi-schema-validator = ">=0.6.0,<0.7.0" [[package]] name = "packaging" -version = "24.2" +version = "25.0" description = "Core utilities for Python packages" optional = false python-versions = ">=3.8" groups = ["main", "dev"] files = [ - {file = "packaging-24.2-py3-none-any.whl", hash = "sha256:09abb1bccd265c01f4a3aa3f7a7db064b36514d2cba19a2f694fe6150451a759"}, - {file = "packaging-24.2.tar.gz", hash = "sha256:c228a6dc5e932d346bc5739379109d49e8853dd8223571c7c5b55260edc0b97f"}, + {file = "packaging-25.0-py3-none-any.whl", hash = "sha256:29572ef2b1f17581046b3a2227d5c611fb25ec70ca1ba8554b24b0e69331a484"}, + {file = "packaging-25.0.tar.gz", hash = "sha256:d443872c98d677bf60f6a1f2f8c1cb748e8fe762d2bf9d3148b5599295b0fc4f"}, ] [[package]] @@ -1024,14 +1002,14 @@ files = [ [[package]] name = "prettytable" -version = "3.15.1" +version = "3.16.0" description = "A simple Python library for easily displaying tabular data in a visually appealing ASCII table format" optional = false python-versions = ">=3.9" groups = ["dev"] files = [ - {file = "prettytable-3.15.1-py3-none-any.whl", hash = "sha256:1bb0da7437e904ec879d2998aded19abc722719aa3d384a7faa44dcbe4aeb2e9"}, - {file = "prettytable-3.15.1.tar.gz", hash = "sha256:f0edb38060cb9161b2417939bfd5cd9877da73388fb19d1e8bf7987e8558896e"}, + {file = "prettytable-3.16.0-py3-none-any.whl", hash = "sha256:b5eccfabb82222f5aa46b798ff02a8452cf530a352c31bddfa29be41242863aa"}, + {file = "prettytable-3.16.0.tar.gz", hash = "sha256:3c64b31719d961bf69c9a7e03d0c1e477320906a98da63952bc6698d6164ff57"}, ] [package.dependencies] @@ -1042,14 +1020,14 @@ tests = ["pytest", "pytest-cov", "pytest-lazy-fixtures"] [[package]] name = "pycodestyle" -version = "2.12.1" +version = "2.13.0" description = "Python style guide checker" optional = false -python-versions = ">=3.8" +python-versions = ">=3.9" groups = ["dev"] files = [ - {file = "pycodestyle-2.12.1-py2.py3-none-any.whl", hash = "sha256:46f0fb92069a7c28ab7bb558f05bfc0110dac69a0cd23c61ea0040283a9d78b3"}, - {file = "pycodestyle-2.12.1.tar.gz", hash = "sha256:6838eae08bbce4f6accd5d5572075c63626a15ee3e6f842df996bf62f6d73521"}, + {file = "pycodestyle-2.13.0-py2.py3-none-any.whl", hash = "sha256:35863c5974a271c7a726ed228a14a4f6daf49df369d8c50cd9a6f58a5e143ba9"}, + {file = "pycodestyle-2.13.0.tar.gz", hash = "sha256:c8415bf09abe81d9c7f872502a6eee881fbe85d8763dd5b9924bb0a01d67efae"}, ] [[package]] @@ -1173,14 +1151,14 @@ email = ["email-validator (>=1.0.3)"] [[package]] name = "pyflakes" -version = "3.2.0" +version = "3.3.2" description = "passive checker of Python programs" optional = false -python-versions = ">=3.8" +python-versions = ">=3.9" groups = ["dev"] files = [ - {file = "pyflakes-3.2.0-py2.py3-none-any.whl", hash = "sha256:84b5be138a2dfbb40689ca07e2152deb896a65c3a3e24c251c5c62489568074a"}, - {file = "pyflakes-3.2.0.tar.gz", hash = "sha256:1c61603ff154621fb2a9172037d84dca3500def8c8b630657d1701f026f8af3f"}, + {file = "pyflakes-3.3.2-py2.py3-none-any.whl", hash = "sha256:5039c8339cbb1944045f4ee5466908906180f13cc99cc9949348d10f82a5c32a"}, + {file = "pyflakes-3.3.2.tar.gz", hash = "sha256:6dfd61d87b97fba5dcfaaf781171ac16be16453be6d816147989e7f6e6a9576b"}, ] [[package]] @@ -1241,14 +1219,14 @@ dev = ["argcomplete", "attrs (>=19.2)", "hypothesis (>=3.56)", "mock", "pygments [[package]] name = "pytest-asyncio" -version = "0.25.3" +version = "0.26.0" description = "Pytest support for asyncio" optional = false python-versions = ">=3.9" groups = ["dev"] files = [ - {file = "pytest_asyncio-0.25.3-py3-none-any.whl", hash = "sha256:9e89518e0f9bd08928f97a3482fdc4e244df17529460bc038291ccaf8f85c7c3"}, - {file = "pytest_asyncio-0.25.3.tar.gz", hash = "sha256:fc1da2cf9f125ada7e710b4ddad05518d4cee187ae9412e9ac9271003497f07a"}, + {file = "pytest_asyncio-0.26.0-py3-none-any.whl", hash = "sha256:7b51ed894f4fbea1340262bdae5135797ebbe21d8638978e35d31c6d19f72fb0"}, + {file = "pytest_asyncio-0.26.0.tar.gz", hash = "sha256:c4df2a697648241ff39e7f0e4a73050b03f123f760673956cf0d72a4990e312f"}, ] [package.dependencies] @@ -1260,14 +1238,14 @@ testing = ["coverage (>=6.2)", "hypothesis (>=5.7.1)"] [[package]] name = "pytest-check" -version = "2.5.1" +version = "2.5.3" description = "A pytest plugin that allows multiple failures per test." optional = false python-versions = ">=3.9" groups = ["main"] files = [ - {file = "pytest_check-2.5.1-py3-none-any.whl", hash = "sha256:b61daca3883c60aa5db47b7dcf3a196ba1ba866abb19866d16a8c0722d49440b"}, - {file = "pytest_check-2.5.1.tar.gz", hash = "sha256:b47c531eb9c6ea62c6456d88dacf0b7f12ec6bde519bb5ef854af10f37ba1140"}, + {file = "pytest_check-2.5.3-py3-none-any.whl", hash = "sha256:354685dfa63e714a20aa62b61c4d30d5acfa30891319df9046f59af653c3b9ba"}, + {file = "pytest_check-2.5.3.tar.gz", hash = "sha256:2357d7df77c395d30c0c4957724fdfce1a75ea8bc9eb2308c0ffe56f62ac70ca"}, ] [package.dependencies] @@ -1422,115 +1400,126 @@ six = "*" [[package]] name = "rpds-py" -version = "0.23.1" +version = "0.24.0" description = "Python bindings to Rust's persistent data structures (rpds)" optional = false python-versions = ">=3.9" groups = ["main"] files = [ - {file = "rpds_py-0.23.1-cp310-cp310-macosx_10_12_x86_64.whl", hash = "sha256:2a54027554ce9b129fc3d633c92fa33b30de9f08bc61b32c053dc9b537266fed"}, - {file = "rpds_py-0.23.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:b5ef909a37e9738d146519657a1aab4584018746a18f71c692f2f22168ece40c"}, - {file = "rpds_py-0.23.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3ee9d6f0b38efb22ad94c3b68ffebe4c47865cdf4b17f6806d6c674e1feb4246"}, - {file = "rpds_py-0.23.1-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:f7356a6da0562190558c4fcc14f0281db191cdf4cb96e7604c06acfcee96df15"}, - {file = "rpds_py-0.23.1-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:9441af1d25aed96901f97ad83d5c3e35e6cd21a25ca5e4916c82d7dd0490a4fa"}, - {file = "rpds_py-0.23.1-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:3d8abf7896a91fb97e7977d1aadfcc2c80415d6dc2f1d0fca5b8d0df247248f3"}, - {file = "rpds_py-0.23.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1b08027489ba8fedde72ddd233a5ea411b85a6ed78175f40285bd401bde7466d"}, - {file = "rpds_py-0.23.1-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:fee513135b5a58f3bb6d89e48326cd5aa308e4bcdf2f7d59f67c861ada482bf8"}, - {file = "rpds_py-0.23.1-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:35d5631ce0af26318dba0ae0ac941c534453e42f569011585cb323b7774502a5"}, - {file = "rpds_py-0.23.1-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:a20cb698c4a59c534c6701b1c24a968ff2768b18ea2991f886bd8985ce17a89f"}, - {file = "rpds_py-0.23.1-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:5e9c206a1abc27e0588cf8b7c8246e51f1a16a103734f7750830a1ccb63f557a"}, - {file = "rpds_py-0.23.1-cp310-cp310-win32.whl", hash = "sha256:d9f75a06ecc68f159d5d7603b734e1ff6daa9497a929150f794013aa9f6e3f12"}, - {file = "rpds_py-0.23.1-cp310-cp310-win_amd64.whl", hash = "sha256:f35eff113ad430b5272bbfc18ba111c66ff525828f24898b4e146eb479a2cdda"}, - {file = "rpds_py-0.23.1-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:b79f5ced71efd70414a9a80bbbfaa7160da307723166f09b69773153bf17c590"}, - {file = "rpds_py-0.23.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:c9e799dac1ffbe7b10c1fd42fe4cd51371a549c6e108249bde9cd1200e8f59b4"}, - {file = "rpds_py-0.23.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:721f9c4011b443b6e84505fc00cc7aadc9d1743f1c988e4c89353e19c4a968ee"}, - {file = "rpds_py-0.23.1-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:f88626e3f5e57432e6191cd0c5d6d6b319b635e70b40be2ffba713053e5147dd"}, - {file = "rpds_py-0.23.1-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:285019078537949cecd0190f3690a0b0125ff743d6a53dfeb7a4e6787af154f5"}, - {file = "rpds_py-0.23.1-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:b92f5654157de1379c509b15acec9d12ecf6e3bc1996571b6cb82a4302060447"}, - {file = "rpds_py-0.23.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e768267cbe051dd8d1c5305ba690bb153204a09bf2e3de3ae530de955f5b5580"}, - {file = "rpds_py-0.23.1-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:c5334a71f7dc1160382d45997e29f2637c02f8a26af41073189d79b95d3321f1"}, - {file = "rpds_py-0.23.1-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:d6adb81564af0cd428910f83fa7da46ce9ad47c56c0b22b50872bc4515d91966"}, - {file = "rpds_py-0.23.1-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:cafa48f2133d4daa028473ede7d81cd1b9f9e6925e9e4003ebdf77010ee02f35"}, - {file = "rpds_py-0.23.1-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:0fced9fd4a07a1ded1bac7e961ddd9753dd5d8b755ba8e05acba54a21f5f1522"}, - {file = "rpds_py-0.23.1-cp311-cp311-win32.whl", hash = "sha256:243241c95174b5fb7204c04595852fe3943cc41f47aa14c3828bc18cd9d3b2d6"}, - {file = "rpds_py-0.23.1-cp311-cp311-win_amd64.whl", hash = "sha256:11dd60b2ffddba85715d8a66bb39b95ddbe389ad2cfcf42c833f1bcde0878eaf"}, - {file = "rpds_py-0.23.1-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:3902df19540e9af4cc0c3ae75974c65d2c156b9257e91f5101a51f99136d834c"}, - {file = "rpds_py-0.23.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:66f8d2a17e5838dd6fb9be6baaba8e75ae2f5fa6b6b755d597184bfcd3cb0eba"}, - {file = "rpds_py-0.23.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:112b8774b0b4ee22368fec42749b94366bd9b536f8f74c3d4175d4395f5cbd31"}, - {file = "rpds_py-0.23.1-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:e0df046f2266e8586cf09d00588302a32923eb6386ced0ca5c9deade6af9a149"}, - {file = "rpds_py-0.23.1-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:0f3288930b947cbebe767f84cf618d2cbe0b13be476e749da0e6a009f986248c"}, - {file = "rpds_py-0.23.1-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:ce473a2351c018b06dd8d30d5da8ab5a0831056cc53b2006e2a8028172c37ce5"}, - {file = "rpds_py-0.23.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d550d7e9e7d8676b183b37d65b5cd8de13676a738973d330b59dc8312df9c5dc"}, - {file = "rpds_py-0.23.1-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:e14f86b871ea74c3fddc9a40e947d6a5d09def5adc2076ee61fb910a9014fb35"}, - {file = "rpds_py-0.23.1-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:1bf5be5ba34e19be579ae873da515a2836a2166d8d7ee43be6ff909eda42b72b"}, - {file = "rpds_py-0.23.1-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:d7031d493c4465dbc8d40bd6cafefef4bd472b17db0ab94c53e7909ee781b9ef"}, - {file = "rpds_py-0.23.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:55ff4151cfd4bc635e51cfb1c59ac9f7196b256b12e3a57deb9e5742e65941ad"}, - {file = "rpds_py-0.23.1-cp312-cp312-win32.whl", hash = "sha256:a9d3b728f5a5873d84cba997b9d617c6090ca5721caaa691f3b1a78c60adc057"}, - {file = "rpds_py-0.23.1-cp312-cp312-win_amd64.whl", hash = "sha256:b03a8d50b137ee758e4c73638b10747b7c39988eb8e6cd11abb7084266455165"}, - {file = "rpds_py-0.23.1-cp313-cp313-macosx_10_12_x86_64.whl", hash = "sha256:4caafd1a22e5eaa3732acb7672a497123354bef79a9d7ceed43387d25025e935"}, - {file = "rpds_py-0.23.1-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:178f8a60fc24511c0eb756af741c476b87b610dba83270fce1e5a430204566a4"}, - {file = "rpds_py-0.23.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c632419c3870507ca20a37c8f8f5352317aca097639e524ad129f58c125c61c6"}, - {file = "rpds_py-0.23.1-cp313-cp313-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:698a79d295626ee292d1730bc2ef6e70a3ab135b1d79ada8fde3ed0047b65a10"}, - {file = "rpds_py-0.23.1-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:271fa2184cf28bdded86bb6217c8e08d3a169fe0bbe9be5e8d96e8476b707122"}, - {file = "rpds_py-0.23.1-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:b91cceb5add79ee563bd1f70b30896bd63bc5f78a11c1f00a1e931729ca4f1f4"}, - {file = "rpds_py-0.23.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f3a6cb95074777f1ecda2ca4fa7717caa9ee6e534f42b7575a8f0d4cb0c24013"}, - {file = "rpds_py-0.23.1-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:50fb62f8d8364978478b12d5f03bf028c6bc2af04082479299139dc26edf4c64"}, - {file = "rpds_py-0.23.1-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:c8f7e90b948dc9dcfff8003f1ea3af08b29c062f681c05fd798e36daa3f7e3e8"}, - {file = "rpds_py-0.23.1-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:5b98b6c953e5c2bda51ab4d5b4f172617d462eebc7f4bfdc7c7e6b423f6da957"}, - {file = "rpds_py-0.23.1-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:2893d778d4671ee627bac4037a075168b2673c57186fb1a57e993465dbd79a93"}, - {file = "rpds_py-0.23.1-cp313-cp313-win32.whl", hash = "sha256:2cfa07c346a7ad07019c33fb9a63cf3acb1f5363c33bc73014e20d9fe8b01cdd"}, - {file = "rpds_py-0.23.1-cp313-cp313-win_amd64.whl", hash = "sha256:3aaf141d39f45322e44fc2c742e4b8b4098ead5317e5f884770c8df0c332da70"}, - {file = "rpds_py-0.23.1-cp313-cp313t-macosx_10_12_x86_64.whl", hash = "sha256:759462b2d0aa5a04be5b3e37fb8183615f47014ae6b116e17036b131985cb731"}, - {file = "rpds_py-0.23.1-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:3e9212f52074fc9d72cf242a84063787ab8e21e0950d4d6709886fb62bcb91d5"}, - {file = "rpds_py-0.23.1-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9e9f3a3ac919406bc0414bbbd76c6af99253c507150191ea79fab42fdb35982a"}, - {file = "rpds_py-0.23.1-cp313-cp313t-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:c04ca91dda8a61584165825907f5c967ca09e9c65fe8966ee753a3f2b019fe1e"}, - {file = "rpds_py-0.23.1-cp313-cp313t-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:4ab923167cfd945abb9b51a407407cf19f5bee35001221f2911dc85ffd35ff4f"}, - {file = "rpds_py-0.23.1-cp313-cp313t-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:ed6f011bedca8585787e5082cce081bac3d30f54520097b2411351b3574e1219"}, - {file = "rpds_py-0.23.1-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6959bb9928c5c999aba4a3f5a6799d571ddc2c59ff49917ecf55be2bbb4e3722"}, - {file = "rpds_py-0.23.1-cp313-cp313t-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:1ed7de3c86721b4e83ac440751329ec6a1102229aa18163f84c75b06b525ad7e"}, - {file = "rpds_py-0.23.1-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:5fb89edee2fa237584e532fbf78f0ddd1e49a47c7c8cfa153ab4849dc72a35e6"}, - {file = "rpds_py-0.23.1-cp313-cp313t-musllinux_1_2_i686.whl", hash = "sha256:7e5413d2e2d86025e73f05510ad23dad5950ab8417b7fc6beaad99be8077138b"}, - {file = "rpds_py-0.23.1-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:d31ed4987d72aabdf521eddfb6a72988703c091cfc0064330b9e5f8d6a042ff5"}, - {file = "rpds_py-0.23.1-cp313-cp313t-win32.whl", hash = "sha256:f3429fb8e15b20961efca8c8b21432623d85db2228cc73fe22756c6637aa39e7"}, - {file = "rpds_py-0.23.1-cp313-cp313t-win_amd64.whl", hash = "sha256:d6f6512a90bd5cd9030a6237f5346f046c6f0e40af98657568fa45695d4de59d"}, - {file = "rpds_py-0.23.1-cp39-cp39-macosx_10_12_x86_64.whl", hash = "sha256:09cd7dbcb673eb60518231e02874df66ec1296c01a4fcd733875755c02014b19"}, - {file = "rpds_py-0.23.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:c6760211eee3a76316cf328f5a8bd695b47b1626d21c8a27fb3b2473a884d597"}, - {file = "rpds_py-0.23.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:72e680c1518733b73c994361e4b06441b92e973ef7d9449feec72e8ee4f713da"}, - {file = "rpds_py-0.23.1-cp39-cp39-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:ae28144c1daa61366205d32abd8c90372790ff79fc60c1a8ad7fd3c8553a600e"}, - {file = "rpds_py-0.23.1-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:c698d123ce5d8f2d0cd17f73336615f6a2e3bdcedac07a1291bb4d8e7d82a05a"}, - {file = "rpds_py-0.23.1-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:98b257ae1e83f81fb947a363a274c4eb66640212516becaff7bef09a5dceacaa"}, - {file = "rpds_py-0.23.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5c9ff044eb07c8468594d12602291c635da292308c8c619244e30698e7fc455a"}, - {file = "rpds_py-0.23.1-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:7938c7b0599a05246d704b3f5e01be91a93b411d0d6cc62275f025293b8a11ce"}, - {file = "rpds_py-0.23.1-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:e9cb79ecedfc156c0692257ac7ed415243b6c35dd969baa461a6888fc79f2f07"}, - {file = "rpds_py-0.23.1-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:7b77e07233925bd33fc0022b8537774423e4c6680b6436316c5075e79b6384f4"}, - {file = "rpds_py-0.23.1-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:a970bfaf130c29a679b1d0a6e0f867483cea455ab1535fb427566a475078f27f"}, - {file = "rpds_py-0.23.1-cp39-cp39-win32.whl", hash = "sha256:4233df01a250b3984465faed12ad472f035b7cd5240ea3f7c76b7a7016084495"}, - {file = "rpds_py-0.23.1-cp39-cp39-win_amd64.whl", hash = "sha256:c617d7453a80e29d9973b926983b1e700a9377dbe021faa36041c78537d7b08c"}, - {file = "rpds_py-0.23.1-pp310-pypy310_pp73-macosx_10_12_x86_64.whl", hash = "sha256:c1f8afa346ccd59e4e5630d5abb67aba6a9812fddf764fd7eb11f382a345f8cc"}, - {file = "rpds_py-0.23.1-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:fad784a31869747df4ac968a351e070c06ca377549e4ace94775aaa3ab33ee06"}, - {file = "rpds_py-0.23.1-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b5a96fcac2f18e5a0a23a75cd27ce2656c66c11c127b0318e508aab436b77428"}, - {file = "rpds_py-0.23.1-pp310-pypy310_pp73-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:3e77febf227a1dc3220159355dba68faa13f8dca9335d97504abf428469fb18b"}, - {file = "rpds_py-0.23.1-pp310-pypy310_pp73-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:26bb3e8de93443d55e2e748e9fd87deb5f8075ca7bc0502cfc8be8687d69a2ec"}, - {file = "rpds_py-0.23.1-pp310-pypy310_pp73-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:db7707dde9143a67b8812c7e66aeb2d843fe33cc8e374170f4d2c50bd8f2472d"}, - {file = "rpds_py-0.23.1-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1eedaaccc9bb66581d4ae7c50e15856e335e57ef2734dbc5fd8ba3e2a4ab3cb6"}, - {file = "rpds_py-0.23.1-pp310-pypy310_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:28358c54fffadf0ae893f6c1050e8f8853e45df22483b7fff2f6ab6152f5d8bf"}, - {file = "rpds_py-0.23.1-pp310-pypy310_pp73-musllinux_1_2_aarch64.whl", hash = "sha256:633462ef7e61d839171bf206551d5ab42b30b71cac8f10a64a662536e057fdef"}, - {file = "rpds_py-0.23.1-pp310-pypy310_pp73-musllinux_1_2_i686.whl", hash = "sha256:a98f510d86f689fcb486dc59e6e363af04151e5260ad1bdddb5625c10f1e95f8"}, - {file = "rpds_py-0.23.1-pp310-pypy310_pp73-musllinux_1_2_x86_64.whl", hash = "sha256:e0397dd0b3955c61ef9b22838144aa4bef6f0796ba5cc8edfc64d468b93798b4"}, - {file = "rpds_py-0.23.1-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:75307599f0d25bf6937248e5ac4e3bde5ea72ae6618623b86146ccc7845ed00b"}, - {file = "rpds_py-0.23.1-pp39-pypy39_pp73-macosx_10_12_x86_64.whl", hash = "sha256:3614d280bf7aab0d3721b5ce0e73434acb90a2c993121b6e81a1c15c665298ac"}, - {file = "rpds_py-0.23.1-pp39-pypy39_pp73-macosx_11_0_arm64.whl", hash = "sha256:e5963ea87f88bddf7edd59644a35a0feecf75f8985430124c253612d4f7d27ae"}, - {file = "rpds_py-0.23.1-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ad76f44f70aac3a54ceb1813ca630c53415da3a24fd93c570b2dfb4856591017"}, - {file = "rpds_py-0.23.1-pp39-pypy39_pp73-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:2c6ae11e6e93728d86aafc51ced98b1658a0080a7dd9417d24bfb955bb09c3c2"}, - {file = "rpds_py-0.23.1-pp39-pypy39_pp73-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:fc869af5cba24d45fb0399b0cfdbcefcf6910bf4dee5d74036a57cf5264b3ff4"}, - {file = "rpds_py-0.23.1-pp39-pypy39_pp73-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:c76b32eb2ab650a29e423525e84eb197c45504b1c1e6e17b6cc91fcfeb1a4b1d"}, - {file = "rpds_py-0.23.1-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4263320ed887ed843f85beba67f8b2d1483b5947f2dc73a8b068924558bfeace"}, - {file = "rpds_py-0.23.1-pp39-pypy39_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:7f9682a8f71acdf59fd554b82b1c12f517118ee72c0f3944eda461606dfe7eb9"}, - {file = "rpds_py-0.23.1-pp39-pypy39_pp73-musllinux_1_2_aarch64.whl", hash = "sha256:754fba3084b70162a6b91efceee8a3f06b19e43dac3f71841662053c0584209a"}, - {file = "rpds_py-0.23.1-pp39-pypy39_pp73-musllinux_1_2_i686.whl", hash = "sha256:a1c66e71ecfd2a4acf0e4bd75e7a3605afa8f9b28a3b497e4ba962719df2be57"}, - {file = "rpds_py-0.23.1-pp39-pypy39_pp73-musllinux_1_2_x86_64.whl", hash = "sha256:8d67beb6002441faef8251c45e24994de32c4c8686f7356a1f601ad7c466f7c3"}, - {file = "rpds_py-0.23.1-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:a1e17d8dc8e57d8e0fd21f8f0f0a5211b3fa258b2e444c2053471ef93fe25a00"}, - {file = "rpds_py-0.23.1.tar.gz", hash = "sha256:7f3240dcfa14d198dba24b8b9cb3b108c06b68d45b7babd9eefc1038fdf7e707"}, + {file = "rpds_py-0.24.0-cp310-cp310-macosx_10_12_x86_64.whl", hash = "sha256:006f4342fe729a368c6df36578d7a348c7c716be1da0a1a0f86e3021f8e98724"}, + {file = "rpds_py-0.24.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:2d53747da70a4e4b17f559569d5f9506420966083a31c5fbd84e764461c4444b"}, + {file = "rpds_py-0.24.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e8acd55bd5b071156bae57b555f5d33697998752673b9de554dd82f5b5352727"}, + {file = "rpds_py-0.24.0-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:7e80d375134ddb04231a53800503752093dbb65dad8dabacce2c84cccc78e964"}, + {file = "rpds_py-0.24.0-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:60748789e028d2a46fc1c70750454f83c6bdd0d05db50f5ae83e2db500b34da5"}, + {file = "rpds_py-0.24.0-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:6e1daf5bf6c2be39654beae83ee6b9a12347cb5aced9a29eecf12a2d25fff664"}, + {file = "rpds_py-0.24.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1b221c2457d92a1fb3c97bee9095c874144d196f47c038462ae6e4a14436f7bc"}, + {file = "rpds_py-0.24.0-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:66420986c9afff67ef0c5d1e4cdc2d0e5262f53ad11e4f90e5e22448df485bf0"}, + {file = "rpds_py-0.24.0-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:43dba99f00f1d37b2a0265a259592d05fcc8e7c19d140fe51c6e6f16faabeb1f"}, + {file = "rpds_py-0.24.0-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:a88c0d17d039333a41d9bf4616bd062f0bd7aa0edeb6cafe00a2fc2a804e944f"}, + {file = "rpds_py-0.24.0-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:cc31e13ce212e14a539d430428cd365e74f8b2d534f8bc22dd4c9c55b277b875"}, + {file = "rpds_py-0.24.0-cp310-cp310-win32.whl", hash = "sha256:fc2c1e1b00f88317d9de6b2c2b39b012ebbfe35fe5e7bef980fd2a91f6100a07"}, + {file = "rpds_py-0.24.0-cp310-cp310-win_amd64.whl", hash = "sha256:c0145295ca415668420ad142ee42189f78d27af806fcf1f32a18e51d47dd2052"}, + {file = "rpds_py-0.24.0-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:2d3ee4615df36ab8eb16c2507b11e764dcc11fd350bbf4da16d09cda11fcedef"}, + {file = "rpds_py-0.24.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:e13ae74a8a3a0c2f22f450f773e35f893484fcfacb00bb4344a7e0f4f48e1f97"}, + {file = "rpds_py-0.24.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:cf86f72d705fc2ef776bb7dd9e5fbba79d7e1f3e258bf9377f8204ad0fc1c51e"}, + {file = "rpds_py-0.24.0-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:c43583ea8517ed2e780a345dd9960896afc1327e8cf3ac8239c167530397440d"}, + {file = "rpds_py-0.24.0-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:4cd031e63bc5f05bdcda120646a0d32f6d729486d0067f09d79c8db5368f4586"}, + {file = "rpds_py-0.24.0-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:34d90ad8c045df9a4259c47d2e16a3f21fdb396665c94520dbfe8766e62187a4"}, + {file = "rpds_py-0.24.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e838bf2bb0b91ee67bf2b889a1a841e5ecac06dd7a2b1ef4e6151e2ce155c7ae"}, + {file = "rpds_py-0.24.0-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:04ecf5c1ff4d589987b4d9882872f80ba13da7d42427234fce8f22efb43133bc"}, + {file = "rpds_py-0.24.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:630d3d8ea77eabd6cbcd2ea712e1c5cecb5b558d39547ac988351195db433f6c"}, + {file = "rpds_py-0.24.0-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:ebcb786b9ff30b994d5969213a8430cbb984cdd7ea9fd6df06663194bd3c450c"}, + {file = "rpds_py-0.24.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:174e46569968ddbbeb8a806d9922f17cd2b524aa753b468f35b97ff9c19cb718"}, + {file = "rpds_py-0.24.0-cp311-cp311-win32.whl", hash = "sha256:5ef877fa3bbfb40b388a5ae1cb00636a624690dcb9a29a65267054c9ea86d88a"}, + {file = "rpds_py-0.24.0-cp311-cp311-win_amd64.whl", hash = "sha256:e274f62cbd274359eff63e5c7e7274c913e8e09620f6a57aae66744b3df046d6"}, + {file = "rpds_py-0.24.0-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:d8551e733626afec514b5d15befabea0dd70a343a9f23322860c4f16a9430205"}, + {file = "rpds_py-0.24.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:0e374c0ce0ca82e5b67cd61fb964077d40ec177dd2c4eda67dba130de09085c7"}, + {file = "rpds_py-0.24.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d69d003296df4840bd445a5d15fa5b6ff6ac40496f956a221c4d1f6f7b4bc4d9"}, + {file = "rpds_py-0.24.0-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:8212ff58ac6dfde49946bea57474a386cca3f7706fc72c25b772b9ca4af6b79e"}, + {file = "rpds_py-0.24.0-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:528927e63a70b4d5f3f5ccc1fa988a35456eb5d15f804d276709c33fc2f19bda"}, + {file = "rpds_py-0.24.0-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:a824d2c7a703ba6daaca848f9c3d5cb93af0505be505de70e7e66829affd676e"}, + {file = "rpds_py-0.24.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:44d51febb7a114293ffd56c6cf4736cb31cd68c0fddd6aa303ed09ea5a48e029"}, + {file = "rpds_py-0.24.0-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:3fab5f4a2c64a8fb64fc13b3d139848817a64d467dd6ed60dcdd6b479e7febc9"}, + {file = "rpds_py-0.24.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:9be4f99bee42ac107870c61dfdb294d912bf81c3c6d45538aad7aecab468b6b7"}, + {file = "rpds_py-0.24.0-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:564c96b6076a98215af52f55efa90d8419cc2ef45d99e314fddefe816bc24f91"}, + {file = "rpds_py-0.24.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:75a810b7664c17f24bf2ffd7f92416c00ec84b49bb68e6a0d93e542406336b56"}, + {file = "rpds_py-0.24.0-cp312-cp312-win32.whl", hash = "sha256:f6016bd950be4dcd047b7475fdf55fb1e1f59fc7403f387be0e8123e4a576d30"}, + {file = "rpds_py-0.24.0-cp312-cp312-win_amd64.whl", hash = "sha256:998c01b8e71cf051c28f5d6f1187abbdf5cf45fc0efce5da6c06447cba997034"}, + {file = "rpds_py-0.24.0-cp313-cp313-macosx_10_12_x86_64.whl", hash = "sha256:3d2d8e4508e15fc05b31285c4b00ddf2e0eb94259c2dc896771966a163122a0c"}, + {file = "rpds_py-0.24.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:0f00c16e089282ad68a3820fd0c831c35d3194b7cdc31d6e469511d9bffc535c"}, + {file = "rpds_py-0.24.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:951cc481c0c395c4a08639a469d53b7d4afa252529a085418b82a6b43c45c240"}, + {file = "rpds_py-0.24.0-cp313-cp313-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:c9ca89938dff18828a328af41ffdf3902405a19f4131c88e22e776a8e228c5a8"}, + {file = "rpds_py-0.24.0-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:ed0ef550042a8dbcd657dfb284a8ee00f0ba269d3f2286b0493b15a5694f9fe8"}, + {file = "rpds_py-0.24.0-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:2b2356688e5d958c4d5cb964af865bea84db29971d3e563fb78e46e20fe1848b"}, + {file = "rpds_py-0.24.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:78884d155fd15d9f64f5d6124b486f3d3f7fd7cd71a78e9670a0f6f6ca06fb2d"}, + {file = "rpds_py-0.24.0-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:6a4a535013aeeef13c5532f802708cecae8d66c282babb5cd916379b72110cf7"}, + {file = "rpds_py-0.24.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:84e0566f15cf4d769dade9b366b7b87c959be472c92dffb70462dd0844d7cbad"}, + {file = "rpds_py-0.24.0-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:823e74ab6fbaa028ec89615ff6acb409e90ff45580c45920d4dfdddb069f2120"}, + {file = "rpds_py-0.24.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:c61a2cb0085c8783906b2f8b1f16a7e65777823c7f4d0a6aaffe26dc0d358dd9"}, + {file = "rpds_py-0.24.0-cp313-cp313-win32.whl", hash = "sha256:60d9b630c8025b9458a9d114e3af579a2c54bd32df601c4581bd054e85258143"}, + {file = "rpds_py-0.24.0-cp313-cp313-win_amd64.whl", hash = "sha256:6eea559077d29486c68218178ea946263b87f1c41ae7f996b1f30a983c476a5a"}, + {file = "rpds_py-0.24.0-cp313-cp313t-macosx_10_12_x86_64.whl", hash = "sha256:d09dc82af2d3c17e7dd17120b202a79b578d79f2b5424bda209d9966efeed114"}, + {file = "rpds_py-0.24.0-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:5fc13b44de6419d1e7a7e592a4885b323fbc2f46e1f22151e3a8ed3b8b920405"}, + {file = "rpds_py-0.24.0-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c347a20d79cedc0a7bd51c4d4b7dbc613ca4e65a756b5c3e57ec84bd43505b47"}, + {file = "rpds_py-0.24.0-cp313-cp313t-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:20f2712bd1cc26a3cc16c5a1bfee9ed1abc33d4cdf1aabd297fe0eb724df4272"}, + {file = "rpds_py-0.24.0-cp313-cp313t-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:aad911555286884be1e427ef0dc0ba3929e6821cbeca2194b13dc415a462c7fd"}, + {file = "rpds_py-0.24.0-cp313-cp313t-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:0aeb3329c1721c43c58cae274d7d2ca85c1690d89485d9c63a006cb79a85771a"}, + {file = "rpds_py-0.24.0-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2a0f156e9509cee987283abd2296ec816225145a13ed0391df8f71bf1d789e2d"}, + {file = "rpds_py-0.24.0-cp313-cp313t-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:aa6800adc8204ce898c8a424303969b7aa6a5e4ad2789c13f8648739830323b7"}, + {file = "rpds_py-0.24.0-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:a18fc371e900a21d7392517c6f60fe859e802547309e94313cd8181ad9db004d"}, + {file = "rpds_py-0.24.0-cp313-cp313t-musllinux_1_2_i686.whl", hash = "sha256:9168764133fd919f8dcca2ead66de0105f4ef5659cbb4fa044f7014bed9a1797"}, + {file = "rpds_py-0.24.0-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:5f6e3cec44ba05ee5cbdebe92d052f69b63ae792e7d05f1020ac5e964394080c"}, + {file = "rpds_py-0.24.0-cp313-cp313t-win32.whl", hash = "sha256:8ebc7e65ca4b111d928b669713865f021b7773350eeac4a31d3e70144297baba"}, + {file = "rpds_py-0.24.0-cp313-cp313t-win_amd64.whl", hash = "sha256:675269d407a257b8c00a6b58205b72eec8231656506c56fd429d924ca00bb350"}, + {file = "rpds_py-0.24.0-cp39-cp39-macosx_10_12_x86_64.whl", hash = "sha256:a36b452abbf29f68527cf52e181fced56685731c86b52e852053e38d8b60bc8d"}, + {file = "rpds_py-0.24.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:8b3b397eefecec8e8e39fa65c630ef70a24b09141a6f9fc17b3c3a50bed6b50e"}, + {file = "rpds_py-0.24.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:cdabcd3beb2a6dca7027007473d8ef1c3b053347c76f685f5f060a00327b8b65"}, + {file = "rpds_py-0.24.0-cp39-cp39-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:5db385bacd0c43f24be92b60c857cf760b7f10d8234f4bd4be67b5b20a7c0b6b"}, + {file = "rpds_py-0.24.0-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:8097b3422d020ff1c44effc40ae58e67d93e60d540a65649d2cdaf9466030791"}, + {file = "rpds_py-0.24.0-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:493fe54318bed7d124ce272fc36adbf59d46729659b2c792e87c3b95649cdee9"}, + {file = "rpds_py-0.24.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8aa362811ccdc1f8dadcc916c6d47e554169ab79559319ae9fae7d7752d0d60c"}, + {file = "rpds_py-0.24.0-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:d8f9a6e7fd5434817526815f09ea27f2746c4a51ee11bb3439065f5fc754db58"}, + {file = "rpds_py-0.24.0-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:8205ee14463248d3349131bb8099efe15cd3ce83b8ef3ace63c7e976998e7124"}, + {file = "rpds_py-0.24.0-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:921ae54f9ecba3b6325df425cf72c074cd469dea843fb5743a26ca7fb2ccb149"}, + {file = "rpds_py-0.24.0-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:32bab0a56eac685828e00cc2f5d1200c548f8bc11f2e44abf311d6b548ce2e45"}, + {file = "rpds_py-0.24.0-cp39-cp39-win32.whl", hash = "sha256:f5c0ed12926dec1dfe7d645333ea59cf93f4d07750986a586f511c0bc61fe103"}, + {file = "rpds_py-0.24.0-cp39-cp39-win_amd64.whl", hash = "sha256:afc6e35f344490faa8276b5f2f7cbf71f88bc2cda4328e00553bd451728c571f"}, + {file = "rpds_py-0.24.0-pp310-pypy310_pp73-macosx_10_12_x86_64.whl", hash = "sha256:619ca56a5468f933d940e1bf431c6f4e13bef8e688698b067ae68eb4f9b30e3a"}, + {file = "rpds_py-0.24.0-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:4b28e5122829181de1898c2c97f81c0b3246d49f585f22743a1246420bb8d399"}, + {file = "rpds_py-0.24.0-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e8e5ab32cf9eb3647450bc74eb201b27c185d3857276162c101c0f8c6374e098"}, + {file = "rpds_py-0.24.0-pp310-pypy310_pp73-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:208b3a70a98cf3710e97cabdc308a51cd4f28aa6e7bb11de3d56cd8b74bab98d"}, + {file = "rpds_py-0.24.0-pp310-pypy310_pp73-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:bbc4362e06f950c62cad3d4abf1191021b2ffaf0b31ac230fbf0526453eee75e"}, + {file = "rpds_py-0.24.0-pp310-pypy310_pp73-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:ebea2821cdb5f9fef44933617be76185b80150632736f3d76e54829ab4a3b4d1"}, + {file = "rpds_py-0.24.0-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b9a4df06c35465ef4d81799999bba810c68d29972bf1c31db61bfdb81dd9d5bb"}, + {file = "rpds_py-0.24.0-pp310-pypy310_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:d3aa13bdf38630da298f2e0d77aca967b200b8cc1473ea05248f6c5e9c9bdb44"}, + {file = "rpds_py-0.24.0-pp310-pypy310_pp73-musllinux_1_2_aarch64.whl", hash = "sha256:041f00419e1da7a03c46042453598479f45be3d787eb837af382bfc169c0db33"}, + {file = "rpds_py-0.24.0-pp310-pypy310_pp73-musllinux_1_2_i686.whl", hash = "sha256:d8754d872a5dfc3c5bf9c0e059e8107451364a30d9fd50f1f1a85c4fb9481164"}, + {file = "rpds_py-0.24.0-pp310-pypy310_pp73-musllinux_1_2_x86_64.whl", hash = "sha256:896c41007931217a343eff197c34513c154267636c8056fb409eafd494c3dcdc"}, + {file = "rpds_py-0.24.0-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:92558d37d872e808944c3c96d0423b8604879a3d1c86fdad508d7ed91ea547d5"}, + {file = "rpds_py-0.24.0-pp311-pypy311_pp73-macosx_10_12_x86_64.whl", hash = "sha256:f9e0057a509e096e47c87f753136c9b10d7a91842d8042c2ee6866899a717c0d"}, + {file = "rpds_py-0.24.0-pp311-pypy311_pp73-macosx_11_0_arm64.whl", hash = "sha256:d6e109a454412ab82979c5b1b3aee0604eca4bbf9a02693bb9df027af2bfa91a"}, + {file = "rpds_py-0.24.0-pp311-pypy311_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:fc1c892b1ec1f8cbd5da8de287577b455e388d9c328ad592eabbdcb6fc93bee5"}, + {file = "rpds_py-0.24.0-pp311-pypy311_pp73-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:9c39438c55983d48f4bb3487734d040e22dad200dab22c41e331cee145e7a50d"}, + {file = "rpds_py-0.24.0-pp311-pypy311_pp73-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:9d7e8ce990ae17dda686f7e82fd41a055c668e13ddcf058e7fb5e9da20b57793"}, + {file = "rpds_py-0.24.0-pp311-pypy311_pp73-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:9ea7f4174d2e4194289cb0c4e172d83e79a6404297ff95f2875cf9ac9bced8ba"}, + {file = "rpds_py-0.24.0-pp311-pypy311_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bb2954155bb8f63bb19d56d80e5e5320b61d71084617ed89efedb861a684baea"}, + {file = "rpds_py-0.24.0-pp311-pypy311_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:04f2b712a2206e13800a8136b07aaedc23af3facab84918e7aa89e4be0260032"}, + {file = "rpds_py-0.24.0-pp311-pypy311_pp73-musllinux_1_2_aarch64.whl", hash = "sha256:eda5c1e2a715a4cbbca2d6d304988460942551e4e5e3b7457b50943cd741626d"}, + {file = "rpds_py-0.24.0-pp311-pypy311_pp73-musllinux_1_2_i686.whl", hash = "sha256:9abc80fe8c1f87218db116016de575a7998ab1629078c90840e8d11ab423ee25"}, + {file = "rpds_py-0.24.0-pp311-pypy311_pp73-musllinux_1_2_x86_64.whl", hash = "sha256:6a727fd083009bc83eb83d6950f0c32b3c94c8b80a9b667c87f4bd1274ca30ba"}, + {file = "rpds_py-0.24.0-pp39-pypy39_pp73-macosx_10_12_x86_64.whl", hash = "sha256:e0f3ef95795efcd3b2ec3fe0a5bcfb5dadf5e3996ea2117427e524d4fbf309c6"}, + {file = "rpds_py-0.24.0-pp39-pypy39_pp73-macosx_11_0_arm64.whl", hash = "sha256:2c13777ecdbbba2077670285dd1fe50828c8742f6a4119dbef6f83ea13ad10fb"}, + {file = "rpds_py-0.24.0-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:79e8d804c2ccd618417e96720ad5cd076a86fa3f8cb310ea386a3e6229bae7d1"}, + {file = "rpds_py-0.24.0-pp39-pypy39_pp73-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:fd822f019ccccd75c832deb7aa040bb02d70a92eb15a2f16c7987b7ad4ee8d83"}, + {file = "rpds_py-0.24.0-pp39-pypy39_pp73-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:0047638c3aa0dbcd0ab99ed1e549bbf0e142c9ecc173b6492868432d8989a046"}, + {file = "rpds_py-0.24.0-pp39-pypy39_pp73-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:a5b66d1b201cc71bc3081bc2f1fc36b0c1f268b773e03bbc39066651b9e18391"}, + {file = "rpds_py-0.24.0-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:dbcbb6db5582ea33ce46a5d20a5793134b5365110d84df4e30b9d37c6fd40ad3"}, + {file = "rpds_py-0.24.0-pp39-pypy39_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:63981feca3f110ed132fd217bf7768ee8ed738a55549883628ee3da75bb9cb78"}, + {file = "rpds_py-0.24.0-pp39-pypy39_pp73-musllinux_1_2_aarch64.whl", hash = "sha256:3a55fc10fdcbf1a4bd3c018eea422c52cf08700cf99c28b5cb10fe97ab77a0d3"}, + {file = "rpds_py-0.24.0-pp39-pypy39_pp73-musllinux_1_2_i686.whl", hash = "sha256:c30ff468163a48535ee7e9bf21bd14c7a81147c0e58a36c1078289a8ca7af0bd"}, + {file = "rpds_py-0.24.0-pp39-pypy39_pp73-musllinux_1_2_x86_64.whl", hash = "sha256:369d9c6d4c714e36d4a03957b4783217a3ccd1e222cdd67d464a3a479fc17796"}, + {file = "rpds_py-0.24.0-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:24795c099453e3721fda5d8ddd45f5dfcc8e5a547ce7b8e9da06fecc3832e26f"}, + {file = "rpds_py-0.24.0.tar.gz", hash = "sha256:772cc1b2cd963e7e17e6cc55fe0371fb9c704d63e44cacec7b9b7f523b78919e"}, ] [[package]] @@ -1626,16 +1615,15 @@ markers = {main = "python_version < \"3.11\""} [[package]] name = "typing-extensions" -version = "4.12.2" +version = "4.13.2" description = "Backported and Experimental Type Hints for Python 3.8+" optional = false python-versions = ">=3.8" groups = ["main", "dev"] files = [ - {file = "typing_extensions-4.12.2-py3-none-any.whl", hash = "sha256:04e5ca0351e0f3f85c6853954072df659d0d13fac324d0072316b67d7794700d"}, - {file = "typing_extensions-4.12.2.tar.gz", hash = "sha256:1a7ead55c7e559dd4dee8856e3a88b41225abfe1ce8df57b7c13915fe121ffb8"}, + {file = "typing_extensions-4.13.2-py3-none-any.whl", hash = "sha256:a439e7c04b49fec3e5d3e2beaa21755cadbbdc391694e28ccdd36ca4a1408f8c"}, + {file = "typing_extensions-4.13.2.tar.gz", hash = "sha256:e6c81219bd689f51865d9e372991c540bda33a0379d5573cddb9a3a23f7caaef"}, ] -markers = {main = "python_version < \"3.13\""} [[package]] name = "urllib3" @@ -1669,14 +1657,14 @@ files = [ [[package]] name = "werkzeug" -version = "3.1.3" +version = "3.1.1" description = "The comprehensive WSGI web application library." optional = false python-versions = ">=3.9" groups = ["main"] files = [ - {file = "werkzeug-3.1.3-py3-none-any.whl", hash = "sha256:54b78bf3716d19a65be4fceccc0d1d7b89e608834989dfae50ea87564639213e"}, - {file = "werkzeug-3.1.3.tar.gz", hash = "sha256:60723ce945c19328679790e3282cc758aa4a6040e4bb330f53d30fa546d44746"}, + {file = "werkzeug-3.1.1-py3-none-any.whl", hash = "sha256:a71124d1ef06008baafa3d266c02f56e1836a5984afd6dd6c9230669d60d9fb5"}, + {file = "werkzeug-3.1.1.tar.gz", hash = "sha256:8cd39dfbdfc1e051965f156163e2974e52c210f130810e9ad36858f0fd3edad4"}, ] [package.dependencies] @@ -1715,4 +1703,4 @@ files = [ [metadata] lock-version = "2.1" python-versions = "^3.10" -content-hash = "2171f25a0b9020a2212bacab410554c60b4f2d71a206214bfac20aaf28f91302" +content-hash = "dca832dc29aa69ee9519181140231cbccc9194e9e69f9b3f6f8db2f8678de594" diff --git a/proxies/live/apiproxy/policies/AssignMessage.AuthenticationOperationOutcomeErrorResponse.xml b/proxies/live/apiproxy/policies/AssignMessage.OperationOutcomeErrorResponse.xml similarity index 87% rename from proxies/live/apiproxy/policies/AssignMessage.AuthenticationOperationOutcomeErrorResponse.xml rename to proxies/live/apiproxy/policies/AssignMessage.OperationOutcomeErrorResponse.xml index 0fd000d00..ca205b0fc 100644 --- a/proxies/live/apiproxy/policies/AssignMessage.AuthenticationOperationOutcomeErrorResponse.xml +++ b/proxies/live/apiproxy/policies/AssignMessage.OperationOutcomeErrorResponse.xml @@ -1,6 +1,6 @@ - + - 401 + {status_code} Unauthorized { "resourceType": "OperationOutcome", "meta": { "lastUpdated": "%current_timestamp#", "profile" : [ "%op_outcome_fhir_profile#" ] }, "issue": [ { "severity": "error", "code": "%op_outcome_issue_code#", "details": { "coding": [ { "system": "%op_outcome_issue_details_coding_system#", "code": "%op_outcome_issue_details_coding_code#" } ] }, "diagnostics": "%faultstring#" } ] } diff --git a/proxies/live/apiproxy/policies/AssignMessage.SetOperationOutcomeIssueCodeLogin.xml b/proxies/live/apiproxy/policies/AssignMessage.SetOperationOutcomeIssueCodeLogin.xml index f1700fc3e..288ca58e5 100644 --- a/proxies/live/apiproxy/policies/AssignMessage.SetOperationOutcomeIssueCodeLogin.xml +++ b/proxies/live/apiproxy/policies/AssignMessage.SetOperationOutcomeIssueCodeLogin.xml @@ -1,4 +1,8 @@ + + status_code + 401 + op_outcome_issue_code login diff --git a/proxies/live/apiproxy/policies/AssignMessage.SetOperationOutcomeIssueIal.xml b/proxies/live/apiproxy/policies/AssignMessage.SetOperationOutcomeIssueIal.xml index c3901b446..4bed1bf31 100644 --- a/proxies/live/apiproxy/policies/AssignMessage.SetOperationOutcomeIssueIal.xml +++ b/proxies/live/apiproxy/policies/AssignMessage.SetOperationOutcomeIssueIal.xml @@ -1,4 +1,8 @@ + + status_code + 401 + op_outcome_issue_code forbidden diff --git a/proxies/live/apiproxy/policies/AssignMessage.SetOperationOutcomeMissingAsid.xml b/proxies/live/apiproxy/policies/AssignMessage.SetOperationOutcomeMissingAsid.xml new file mode 100644 index 000000000..8e1082bd8 --- /dev/null +++ b/proxies/live/apiproxy/policies/AssignMessage.SetOperationOutcomeMissingAsid.xml @@ -0,0 +1,14 @@ + + + op_outcome_issue_code + forbidden + + + faultstring + ASID is not configured in the application + + + status_code + 403 + + diff --git a/proxies/live/apiproxy/policies/RaiseFault.MissingAsid.xml b/proxies/live/apiproxy/policies/RaiseFault.MissingAsid.xml new file mode 100644 index 000000000..72eb5a081 --- /dev/null +++ b/proxies/live/apiproxy/policies/RaiseFault.MissingAsid.xml @@ -0,0 +1,10 @@ + + + + + 403 + Forbidden + + + true + diff --git a/proxies/live/apiproxy/targets/ers-target.xml b/proxies/live/apiproxy/targets/ers-target.xml index b3620750a..5ea639c61 100644 --- a/proxies/live/apiproxy/targets/ers-target.xml +++ b/proxies/live/apiproxy/targets/ers-target.xml @@ -15,7 +15,7 @@ AssignMessage.SetOperationOutcomeIssueCodeLogin - AssignMessage.AuthenticationOperationOutcomeErrorResponse + AssignMessage.OperationOutcomeErrorResponse (oauthV2.OauthV2.VerifyAccessToken.failed = true) and (isFhirR4Path = true) @@ -43,7 +43,7 @@ aalError != true - AssignMessage.AuthenticationOperationOutcomeErrorResponse + AssignMessage.OperationOutcomeErrorResponse aalError = true (oauthV2.OauthV2.VerifyAccessToken.failed = true) and (isFhirR4Path = false) @@ -85,10 +85,27 @@ AssignMessage.SetOperationOutcomeIssueIal - AssignMessage.AuthenticationOperationOutcomeErrorResponse + AssignMessage.OperationOutcomeErrorResponse (raisefault.RaiseFault.401InsufficientIal.failed = true) + + + (isFhirR4Path = true) + AssignMessage.SetOperationOutcomeVariablesR4 + + + (isFhirR4Path = false) + AssignMessage.SetOperationOutcomeVariablesPreR4 + + + AssignMessage.SetOperationOutcomeMissingAsid + + + AssignMessage.OperationOutcomeErrorResponse + + (raisefault.RaiseFault.MissingAsid.failed = true) + @@ -101,6 +118,10 @@ OauthV2.VerifyAccessToken + + RaiseFault.MissingAsid + (app.asid == null) Or (app.asid == "") + AssignMessage.PopulateAsidFromApp diff --git a/pyproject.toml b/pyproject.toml index 408e120a7..e85cf9651 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -28,9 +28,9 @@ semver = "^3.0.4" gitpython = "^3.1.44" lxml = "^4.9.4" xmlformatter = "^0.2.8" -pytest-check = "^2.5.1" +pytest-check = "^2.5.3" requests = "^2.32.3" -openapi-core = "^0.19.4" +openapi-core = "^0.19.5" [tool.poetry.group.dev.dependencies] @@ -39,7 +39,7 @@ black = "^25.1" pip-licenses = "^5.0.0" jinja2 = "^3.1.6" pytest = "^8.3.5" -pytest-asyncio = "^0.25.3" +pytest-asyncio = "^0.26.0" pytest-nhsd-apim = "^3.4.5" [tool.poetry.scripts] diff --git a/sandbox/package-lock.json b/sandbox/package-lock.json index c06b0d913..3b7693580 100644 --- a/sandbox/package-lock.json +++ b/sandbox/package-lock.json @@ -18,9 +18,9 @@ } }, "node_modules/@eslint-community/eslint-utils": { - "version": "4.5.1", - "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.5.1.tgz", - "integrity": "sha512-soEIOALTfTK6EjmKMMoLugwaP0rzkad90iIWd1hMO9ARkSAyjfMfkRRhLvD5qH7vvM0Cg72pieUfR6yh6XxC4w==", + "version": "4.6.1", + "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.6.1.tgz", + "integrity": "sha512-KTsJMmobmbrFLe3LDh0PC2FXpcSYJt/MLjlkh/9LEnmKYLSYmT/0EW9JWANjeoemiuZrmogti0tW5Ch+qNUYDw==", "dev": true, "license": "MIT", "dependencies": { @@ -1475,9 +1475,9 @@ }, "dependencies": { "@eslint-community/eslint-utils": { - "version": "4.5.1", - "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.5.1.tgz", - "integrity": "sha512-soEIOALTfTK6EjmKMMoLugwaP0rzkad90iIWd1hMO9ARkSAyjfMfkRRhLvD5qH7vvM0Cg72pieUfR6yh6XxC4w==", + "version": "4.6.1", + "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.6.1.tgz", + "integrity": "sha512-KTsJMmobmbrFLe3LDh0PC2FXpcSYJt/MLjlkh/9LEnmKYLSYmT/0EW9JWANjeoemiuZrmogti0tW5Ch+qNUYDw==", "dev": true, "requires": { "eslint-visitor-keys": "^3.4.3" diff --git a/sandbox/src/mocks/r4/NHSDigital-OperationOutcome-503.json b/sandbox/src/mocks/r4/NHSDigital-OperationOutcome-503.json new file mode 100644 index 000000000..f6efbaae2 --- /dev/null +++ b/sandbox/src/mocks/r4/NHSDigital-OperationOutcome-503.json @@ -0,0 +1,21 @@ +{ + "resourceType": "OperationOutcome", + "meta": { + "lastUpdated": "2022-03-01T10:00:00.42Z" + }, + "issue": [ + { + "severity": "error", + "code": "transient", + "details": { + "coding": [ + { + "system": "https://fhir.nhs.uk/CodeSystem/http-error-codes", + "code": "REC_UNAVAILABLE" + } + ] + } + } + ] + } + \ No newline at end of file diff --git a/sandbox/src/mocks/stu3/STU3-ServiceUnavailable.json b/sandbox/src/mocks/stu3/STU3-ServiceUnavailable.json new file mode 100644 index 000000000..6ab4dc681 --- /dev/null +++ b/sandbox/src/mocks/stu3/STU3-ServiceUnavailable.json @@ -0,0 +1,23 @@ +{ + "meta": { + "profile": [ + "https://fhir.nhs.uk/STU3/StructureDefinition/eRS-OperationOutcome-1" + ] + }, + "resourceType": "OperationOutcome", + "issue": [ + { + "severity": "error", + "code": "transient", + "details": { + "coding": [ + { + "system": "https://fhir.nhs.uk/STU3/CodeSystem/eRS-APIErrorCode-1", + "code": "SYSTEM_UNAVAILABLE", + "display": "System Unavailable" + } + ] + } + } + ] + } \ No newline at end of file diff --git a/sandbox/src/mocks/stu3/STU3-Unauthorised.json b/sandbox/src/mocks/stu3/STU3-Unauthorised.json new file mode 100644 index 000000000..5d7290596 --- /dev/null +++ b/sandbox/src/mocks/stu3/STU3-Unauthorised.json @@ -0,0 +1,23 @@ +{ + "meta": { + "profile": [ + "https://fhir.nhs.uk/STU3/StructureDefinition/eRS-OperationOutcome-1" + ] + }, + "resourceType": "OperationOutcome", + "issue": [ + { + "severity": "error", + "code": "login", + "details": { + "coding": [ + { + "system": "https://fhir.nhs.uk/STU3/CodeSystem/eRS-APIErrorCode-1", + "code": "NO_ACCESS" + } + ] + }, + "diagnostics": "Example diagnostics message." + } + ] +} diff --git a/specification/components/r4/schemas/endpoints/a030-retrieve-business-functions.yaml b/specification/components/r4/schemas/endpoints/a030-retrieve-business-functions.yaml index 54c1af7ac..041d3a74a 100644 --- a/specification/components/r4/schemas/endpoints/a030-retrieve-business-functions.yaml +++ b/specification/components/r4/schemas/endpoints/a030-retrieve-business-functions.yaml @@ -111,3 +111,5 @@ responses: $ref: '../responses/TooManyRequests.yaml' '500': $ref: '../responses/InternalServerError.yaml' + '503': + $ref: '../responses/ServiceUnavailable.yaml' diff --git a/specification/components/r4/schemas/endpoints/a033-retrieve-healthcare-service.yaml b/specification/components/r4/schemas/endpoints/a033-retrieve-healthcare-service.yaml index 81e198d2b..e70fc8059 100644 --- a/specification/components/r4/schemas/endpoints/a033-retrieve-healthcare-service.yaml +++ b/specification/components/r4/schemas/endpoints/a033-retrieve-healthcare-service.yaml @@ -67,3 +67,5 @@ responses: $ref: '../responses/TooManyRequests.yaml' '500': $ref: '../responses/InternalServerError.yaml' + '503': + $ref: '../responses/ServiceUnavailable.yaml' diff --git a/specification/components/r4/schemas/endpoints/a035-search-for-healthcare-services.yaml b/specification/components/r4/schemas/endpoints/a035-search-for-healthcare-services.yaml index 57f7b5279..b38e02185 100644 --- a/specification/components/r4/schemas/endpoints/a035-search-for-healthcare-services.yaml +++ b/specification/components/r4/schemas/endpoints/a035-search-for-healthcare-services.yaml @@ -77,3 +77,5 @@ responses: $ref: '../responses/TooManyRequests.yaml' '500': $ref: '../responses/InternalServerError.yaml' + '503': + $ref: '../responses/ServiceUnavailable.yaml' diff --git a/specification/components/r4/schemas/endpoints/a037-retrieve-healthcare-service-version.yaml b/specification/components/r4/schemas/endpoints/a037-retrieve-healthcare-service-version.yaml index f392768ea..448a1a117 100644 --- a/specification/components/r4/schemas/endpoints/a037-retrieve-healthcare-service-version.yaml +++ b/specification/components/r4/schemas/endpoints/a037-retrieve-healthcare-service-version.yaml @@ -64,3 +64,5 @@ responses: $ref: '../responses/TooManyRequests.yaml' '500': $ref: '../responses/InternalServerError.yaml' + '503': + $ref: '../responses/ServiceUnavailable.yaml' diff --git a/specification/components/r4/schemas/endpoints/a040-retrieve-practitioner-info.yaml b/specification/components/r4/schemas/endpoints/a040-retrieve-practitioner-info.yaml index 3ac034a94..f680ada32 100644 --- a/specification/components/r4/schemas/endpoints/a040-retrieve-practitioner-info.yaml +++ b/specification/components/r4/schemas/endpoints/a040-retrieve-practitioner-info.yaml @@ -55,3 +55,5 @@ $ref: '../responses/TooManyRequests.yaml' '500': $ref: '../responses/InternalServerError.yaml' + '503': + $ref: '../responses/ServiceUnavailable.yaml' diff --git a/specification/components/r4/schemas/endpoints/a041-search-service-request.yaml b/specification/components/r4/schemas/endpoints/a041-search-service-request.yaml index 3db22b5b7..4b7063461 100644 --- a/specification/components/r4/schemas/endpoints/a041-search-service-request.yaml +++ b/specification/components/r4/schemas/endpoints/a041-search-service-request.yaml @@ -79,3 +79,5 @@ responses: $ref: '../responses/TooManyRequests.yaml' '500': $ref: '../responses/InternalServerError.yaml' + '503': + $ref: '../responses/ServiceUnavailable.yaml' diff --git a/specification/components/r4/schemas/endpoints/a042-retrieve-attachment.yaml b/specification/components/r4/schemas/endpoints/a042-retrieve-attachment.yaml index 43b08ba30..282bc0a61 100644 --- a/specification/components/r4/schemas/endpoints/a042-retrieve-attachment.yaml +++ b/specification/components/r4/schemas/endpoints/a042-retrieve-attachment.yaml @@ -94,4 +94,6 @@ responses: '429': $ref: '../responses/TooManyRequests.yaml' '500': - $ref: '../responses/InternalServerError.yaml' \ No newline at end of file + $ref: '../responses/InternalServerError.yaml' + '503': + $ref: '../responses/ServiceUnavailable.yaml' \ No newline at end of file diff --git a/specification/components/r4/schemas/headers/response/RetryAfter.yaml b/specification/components/r4/schemas/headers/response/RetryAfter.yaml new file mode 100644 index 000000000..7ca9e1fad --- /dev/null +++ b/specification/components/r4/schemas/headers/response/RetryAfter.yaml @@ -0,0 +1,6 @@ +description: | + Defines a period (in seconds) after which the client should attempt their request again. +required: false +schema: + type: string + example: '120' \ No newline at end of file diff --git a/specification/components/r4/schemas/responses/Forbidden.yaml b/specification/components/r4/schemas/responses/Forbidden.yaml index ce2375e64..2c4263859 100644 --- a/specification/components/r4/schemas/responses/Forbidden.yaml +++ b/specification/components/r4/schemas/responses/Forbidden.yaml @@ -5,6 +5,7 @@ description: | | issue.details.coding.code | issue.code | Coding System | Description | | ------------------------- | ---------- | ------------------------------------------------------------------ | ---------------------------------------------------------------------------------- | | REC_FORBIDDEN | forbidden | [BaRS Error Code](https://fhir.nhs.uk/CodeSystem/http-error-codes) | A call attempts to access or operate upon a resource without proper authorisation. | + | ACCESS_DENIED | forbidden | [APIM Error Code](https://fhir.nhs.uk/CodeSystem/NHSD-API-ErrorOrWarningCode) | The request could not be authenticated due to insufficient credentials being provided. | headers: X-Correlation-ID: @@ -18,4 +19,4 @@ content: schema: $ref: '../NHSDigital-OperationOutcome.yaml' example: - $ref: '../../examples/NHSDigital-OperationOutcome-403.json' \ No newline at end of file + $ref: '../../examples/NHSDigital-OperationOutcome-403.json' diff --git a/specification/components/r4/schemas/responses/ServiceUnavailable.yaml b/specification/components/r4/schemas/responses/ServiceUnavailable.yaml new file mode 100644 index 000000000..f10203162 --- /dev/null +++ b/specification/components/r4/schemas/responses/ServiceUnavailable.yaml @@ -0,0 +1,23 @@ +description: | + Where status code 503 (Service Unavailable) is returned then an [NHSDigital-OperationOutcome](https://fhir.nhs.uk/StructureDefinition/NHSDigital-OperationOutcome) will be included in the body, as detailed below. + In response to receiving this status code, it is recommended that clients retry at a later time based on a returned `Retry-After` header when provided. + + | issue.details.coding.code | issue.code | Coding System | Description | + | ------------------------- | ---------- | ------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------ | + | REC_UNAVAILABLE | transient | [BaRS Error Code](https://fhir.nhs.uk/CodeSystem/http-error-codes) | A request to an internal component timed out whilst attempting to serve a response or the system is currently otherwise unavailable. | + +headers: + X-Correlation-ID: + $ref: '../headers/response/CorrelationID.yaml' + X-Request-ID: + $ref: '../headers/response/RequestID.yaml' + Content-Type: + $ref: '../headers/response/ContentTypeFhirJson.yaml' + Retry-After: + $ref: '../headers/response/RetryAfter.yaml' +content: + application/fhir+json: + schema: + $ref: '../NHSDigital-OperationOutcome.yaml' + example: + $ref: '../../examples/NHSDigital-OperationOutcome-503.json' \ No newline at end of file diff --git a/specification/components/r4/schemas/responses/Unauthorized.yaml b/specification/components/r4/schemas/responses/Unauthorized.yaml index cd1fb9b54..7f2a5ffc9 100644 --- a/specification/components/r4/schemas/responses/Unauthorized.yaml +++ b/specification/components/r4/schemas/responses/Unauthorized.yaml @@ -4,7 +4,7 @@ description: | | issue.details.coding.code | issue.code | Coding System | Description | | ------------------------- | ---------------- | ----------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | - | ACCESS_DENIED | login | [APIM Error Code](https://fhir.nhs.uk/CodeSystem/NHSD-API-ErrorOrWarningCode) | The request could not be authenticated due to either no credentials being provided or the provided credentials no longer being valid. Callers receiving this code should reauthenticate. | + | ACCESS_DENIED |
  • login
  • forbidden
| [APIM Error Code](https://fhir.nhs.uk/CodeSystem/NHSD-API-ErrorOrWarningCode) | The request could not be authenticated due to either no credentials being provided or the provided credentials no longer being valid. Callers receiving this code should reauthenticate. | headers: X-Correlation-ID: $ref: '../headers/response/CorrelationID.yaml' @@ -15,4 +15,4 @@ content: schema: $ref: '../NHSDigital-OperationOutcome.yaml' example: - $ref: '../../examples/NHSDigital-OperationOutcome-401.json' \ No newline at end of file + $ref: '../../examples/NHSDigital-OperationOutcome-401.json' diff --git a/specification/components/stu3/schemas/endpoints/a004-retrieve-reference-data.yaml b/specification/components/stu3/schemas/endpoints/a004-retrieve-reference-data.yaml index 74562c73b..f2dc47668 100644 --- a/specification/components/stu3/schemas/endpoints/a004-retrieve-reference-data.yaml +++ b/specification/components/stu3/schemas/endpoints/a004-retrieve-reference-data.yaml @@ -93,3 +93,5 @@ responses: $ref: '../responses/TooManyRequests.yaml' '500': $ref: '../responses/InternalServerError.yaml' + '503': + $ref: '../responses/ServiceUnavailable.yaml' diff --git a/specification/components/stu3/schemas/endpoints/a005-retrieve-referral-request-versioned.yaml b/specification/components/stu3/schemas/endpoints/a005-retrieve-referral-request-versioned.yaml index 84eb6ce56..33df83d07 100644 --- a/specification/components/stu3/schemas/endpoints/a005-retrieve-referral-request-versioned.yaml +++ b/specification/components/stu3/schemas/endpoints/a005-retrieve-referral-request-versioned.yaml @@ -90,3 +90,5 @@ responses: $ref: '../responses/TooManyRequests.yaml' '500': $ref: '../responses/InternalServerError.yaml' + '503': + $ref: '../responses/ServiceUnavailable.yaml' diff --git a/specification/components/stu3/schemas/endpoints/a005-retrieve-referral-request.yaml b/specification/components/stu3/schemas/endpoints/a005-retrieve-referral-request.yaml index d9f3f0964..3589f78a9 100644 --- a/specification/components/stu3/schemas/endpoints/a005-retrieve-referral-request.yaml +++ b/specification/components/stu3/schemas/endpoints/a005-retrieve-referral-request.yaml @@ -138,3 +138,5 @@ responses: $ref: '../responses/TooManyRequests.yaml' '500': $ref: '../responses/InternalServerError.yaml' + '503': + $ref: '../responses/ServiceUnavailable.yaml' diff --git a/specification/components/stu3/schemas/endpoints/a006-retrieve-attachment.yaml b/specification/components/stu3/schemas/endpoints/a006-retrieve-attachment.yaml index f252d3027..d5d412e12 100644 --- a/specification/components/stu3/schemas/endpoints/a006-retrieve-attachment.yaml +++ b/specification/components/stu3/schemas/endpoints/a006-retrieve-attachment.yaml @@ -102,3 +102,5 @@ responses: $ref: '../responses/TooManyRequests.yaml' '500': $ref: '../responses/InternalServerError.yaml' + '503': + $ref: '../responses/ServiceUnavailable.yaml' diff --git a/specification/components/stu3/schemas/endpoints/a007-retrieve-clinical-information.yaml b/specification/components/stu3/schemas/endpoints/a007-retrieve-clinical-information.yaml index fd39e8bcf..15c2d415a 100644 --- a/specification/components/stu3/schemas/endpoints/a007-retrieve-clinical-information.yaml +++ b/specification/components/stu3/schemas/endpoints/a007-retrieve-clinical-information.yaml @@ -73,3 +73,5 @@ responses: $ref: '../responses/TooManyRequests.yaml' '500': $ref: '../responses/InternalServerError.yaml' + '503': + $ref: '../responses/ServiceUnavailable.yaml' diff --git a/specification/components/stu3/schemas/endpoints/a008-retrieve-worklist.yaml b/specification/components/stu3/schemas/endpoints/a008-retrieve-worklist.yaml index 2058f5679..81d3aa9b0 100644 --- a/specification/components/stu3/schemas/endpoints/a008-retrieve-worklist.yaml +++ b/specification/components/stu3/schemas/endpoints/a008-retrieve-worklist.yaml @@ -180,3 +180,5 @@ responses: $ref: '../responses/TooManyRequests.yaml' '500': $ref: '../responses/InternalServerError.yaml' + '503': + $ref: '../responses/ServiceUnavailable.yaml' diff --git a/specification/components/stu3/schemas/endpoints/a010-patient-service-search.yaml b/specification/components/stu3/schemas/endpoints/a010-patient-service-search.yaml index 5ff7d8c65..bcc50f5cb 100644 --- a/specification/components/stu3/schemas/endpoints/a010-patient-service-search.yaml +++ b/specification/components/stu3/schemas/endpoints/a010-patient-service-search.yaml @@ -87,3 +87,5 @@ responses: $ref: '../responses/TooManyRequests.yaml' '500': $ref: '../responses/InternalServerError.yaml' + '503': + $ref: '../responses/ServiceUnavailable.yaml' diff --git a/specification/components/stu3/schemas/endpoints/a011-create-referral.yaml b/specification/components/stu3/schemas/endpoints/a011-create-referral.yaml index 3fd67af59..ad8cbcf1e 100644 --- a/specification/components/stu3/schemas/endpoints/a011-create-referral.yaml +++ b/specification/components/stu3/schemas/endpoints/a011-create-referral.yaml @@ -111,3 +111,5 @@ responses: $ref: '../responses/TooManyRequests.yaml' '500': $ref: '../responses/InternalServerError.yaml' + '503': + $ref: '../responses/ServiceUnavailable.yaml' diff --git a/specification/components/stu3/schemas/endpoints/a012-maintain-referral-letter.yaml b/specification/components/stu3/schemas/endpoints/a012-maintain-referral-letter.yaml index 16fa0f1ac..ff16049e4 100644 --- a/specification/components/stu3/schemas/endpoints/a012-maintain-referral-letter.yaml +++ b/specification/components/stu3/schemas/endpoints/a012-maintain-referral-letter.yaml @@ -144,3 +144,5 @@ responses: $ref: '../responses/TooManyRequests.yaml' '500': $ref: '../responses/InternalServerError.yaml' + '503': + $ref: '../responses/ServiceUnavailable.yaml' diff --git a/specification/components/stu3/schemas/endpoints/a013-accept-referral.yaml b/specification/components/stu3/schemas/endpoints/a013-accept-referral.yaml index 69aebd228..074909dca 100644 --- a/specification/components/stu3/schemas/endpoints/a013-accept-referral.yaml +++ b/specification/components/stu3/schemas/endpoints/a013-accept-referral.yaml @@ -72,3 +72,5 @@ responses: $ref: '../responses/TooManyRequests.yaml' '500': $ref: '../responses/InternalServerError.yaml' + '503': + $ref: '../responses/ServiceUnavailable.yaml' diff --git a/specification/components/stu3/schemas/endpoints/a014-reject-referral.yaml b/specification/components/stu3/schemas/endpoints/a014-reject-referral.yaml index 4ec7c6c2e..a8cce4d0e 100644 --- a/specification/components/stu3/schemas/endpoints/a014-reject-referral.yaml +++ b/specification/components/stu3/schemas/endpoints/a014-reject-referral.yaml @@ -99,5 +99,7 @@ responses: $ref: '../responses/TooManyRequests.yaml' '500': $ref: '../responses/InternalServerError.yaml' + '503': + $ref: '../responses/ServiceUnavailable.yaml' '504': $ref: '../responses/rejectReferral/504Response.yaml' diff --git a/specification/components/stu3/schemas/endpoints/a015-retrieve-appointment-slots.yaml b/specification/components/stu3/schemas/endpoints/a015-retrieve-appointment-slots.yaml index 5e6bbd47f..9d0aab2c0 100644 --- a/specification/components/stu3/schemas/endpoints/a015-retrieve-appointment-slots.yaml +++ b/specification/components/stu3/schemas/endpoints/a015-retrieve-appointment-slots.yaml @@ -80,3 +80,5 @@ responses: $ref: '../responses/TooManyRequests.yaml' '500': $ref: '../responses/InternalServerError.yaml' + '503': + $ref: '../responses/ServiceUnavailable.yaml' diff --git a/specification/components/stu3/schemas/endpoints/a016-book-or-defer-appointment.yaml b/specification/components/stu3/schemas/endpoints/a016-book-or-defer-appointment.yaml index c1759b45b..a95fbb34b 100644 --- a/specification/components/stu3/schemas/endpoints/a016-book-or-defer-appointment.yaml +++ b/specification/components/stu3/schemas/endpoints/a016-book-or-defer-appointment.yaml @@ -106,6 +106,8 @@ responses: '500': $ref: '../responses/InternalServerError.yaml' '502': - $ref: '../responses/bookOrDeferAppointment/502Response.yaml' + $ref: '../responses/bookOrDeferAppointment/502Response.yaml' + '503': + $ref: '../responses/ServiceUnavailable.yaml' '504': $ref: '../responses/bookOrDeferAppointment/504Response.yaml' diff --git a/specification/components/stu3/schemas/endpoints/a019-generate-patient-letter.yaml b/specification/components/stu3/schemas/endpoints/a019-generate-patient-letter.yaml index 903fcbd09..6d482736a 100644 --- a/specification/components/stu3/schemas/endpoints/a019-generate-patient-letter.yaml +++ b/specification/components/stu3/schemas/endpoints/a019-generate-patient-letter.yaml @@ -52,3 +52,5 @@ responses: $ref: '../responses/TooManyRequests.yaml' '500': $ref: '../responses/InternalServerError.yaml' + '503': + $ref: '../responses/ServiceUnavailable.yaml' diff --git a/specification/components/stu3/schemas/endpoints/a020-upload-file-to-document-store.yaml b/specification/components/stu3/schemas/endpoints/a020-upload-file-to-document-store.yaml index 88ece4d2d..3cf29ec4a 100644 --- a/specification/components/stu3/schemas/endpoints/a020-upload-file-to-document-store.yaml +++ b/specification/components/stu3/schemas/endpoints/a020-upload-file-to-document-store.yaml @@ -99,3 +99,5 @@ responses: $ref: '../responses/TooManyRequests.yaml' '500': $ref: '../responses/InternalServerError.yaml' + '503': + $ref: '../responses/ServiceUnavailable.yaml' diff --git a/specification/components/stu3/schemas/endpoints/a021-create-referral-request-and-send-for-triage.yaml b/specification/components/stu3/schemas/endpoints/a021-create-referral-request-and-send-for-triage.yaml index 887c2c1b2..f9c88deae 100644 --- a/specification/components/stu3/schemas/endpoints/a021-create-referral-request-and-send-for-triage.yaml +++ b/specification/components/stu3/schemas/endpoints/a021-create-referral-request-and-send-for-triage.yaml @@ -82,3 +82,5 @@ responses: $ref: '../responses/TooManyRequests.yaml' '500': $ref: '../responses/InternalServerError.yaml' + '503': + $ref: '../responses/ServiceUnavailable.yaml' diff --git a/specification/components/stu3/schemas/endpoints/a022-cancel-appointment-action-later.yaml b/specification/components/stu3/schemas/endpoints/a022-cancel-appointment-action-later.yaml index 6ce0d9e7b..78fbb778a 100644 --- a/specification/components/stu3/schemas/endpoints/a022-cancel-appointment-action-later.yaml +++ b/specification/components/stu3/schemas/endpoints/a022-cancel-appointment-action-later.yaml @@ -109,3 +109,5 @@ responses: $ref: '../responses/TooManyRequests.yaml' '500': $ref: '../responses/InternalServerError.yaml' + '503': + $ref: '../responses/ServiceUnavailable.yaml' diff --git a/specification/components/stu3/schemas/endpoints/a023-retrieve-a&g-worklist.yaml b/specification/components/stu3/schemas/endpoints/a023-retrieve-a&g-worklist.yaml index ff05f8248..cb818b00e 100644 --- a/specification/components/stu3/schemas/endpoints/a023-retrieve-a&g-worklist.yaml +++ b/specification/components/stu3/schemas/endpoints/a023-retrieve-a&g-worklist.yaml @@ -79,3 +79,5 @@ responses: $ref: '../responses/TooManyRequests.yaml' '500': $ref: '../responses/InternalServerError.yaml' + '503': + $ref: '../responses/ServiceUnavailable.yaml' diff --git a/specification/components/stu3/schemas/endpoints/a024-retrieve-advice-and-guidance-versioned.yaml b/specification/components/stu3/schemas/endpoints/a024-retrieve-advice-and-guidance-versioned.yaml index 80509ab82..a086ddb8e 100644 --- a/specification/components/stu3/schemas/endpoints/a024-retrieve-advice-and-guidance-versioned.yaml +++ b/specification/components/stu3/schemas/endpoints/a024-retrieve-advice-and-guidance-versioned.yaml @@ -67,3 +67,5 @@ responses: $ref: '../responses/TooManyRequests.yaml' '500': $ref: '../responses/InternalServerError.yaml' + '503': + $ref: '../responses/ServiceUnavailable.yaml' diff --git a/specification/components/stu3/schemas/endpoints/a024-retrieve-advice-and-guidance.yaml b/specification/components/stu3/schemas/endpoints/a024-retrieve-advice-and-guidance.yaml index b2b74c585..ae936ca49 100644 --- a/specification/components/stu3/schemas/endpoints/a024-retrieve-advice-and-guidance.yaml +++ b/specification/components/stu3/schemas/endpoints/a024-retrieve-advice-and-guidance.yaml @@ -109,3 +109,5 @@ responses: $ref: '../responses/TooManyRequests.yaml' '500': $ref: '../responses/InternalServerError.yaml' + '503': + $ref: '../responses/ServiceUnavailable.yaml' diff --git a/specification/components/stu3/schemas/endpoints/a025-retrieve-advice-and-guidance-conversation.yaml b/specification/components/stu3/schemas/endpoints/a025-retrieve-advice-and-guidance-conversation.yaml index 2a1da17a4..e27d504e5 100644 --- a/specification/components/stu3/schemas/endpoints/a025-retrieve-advice-and-guidance-conversation.yaml +++ b/specification/components/stu3/schemas/endpoints/a025-retrieve-advice-and-guidance-conversation.yaml @@ -116,3 +116,5 @@ responses: $ref: '../responses/TooManyRequests.yaml' '500': $ref: '../responses/InternalServerError.yaml' + '503': + $ref: '../responses/ServiceUnavailable.yaml' diff --git a/specification/components/stu3/schemas/endpoints/a026-send-a&g-response.yaml b/specification/components/stu3/schemas/endpoints/a026-send-a&g-response.yaml index 309ac5e53..437a33031 100644 --- a/specification/components/stu3/schemas/endpoints/a026-send-a&g-response.yaml +++ b/specification/components/stu3/schemas/endpoints/a026-send-a&g-response.yaml @@ -107,3 +107,5 @@ responses: $ref: '../responses/TooManyRequests.yaml' '500': $ref: '../responses/InternalServerError.yaml' + '503': + $ref: '../responses/ServiceUnavailable.yaml' diff --git a/specification/components/stu3/schemas/endpoints/a027-convert-a&g-to-referral.yaml b/specification/components/stu3/schemas/endpoints/a027-convert-a&g-to-referral.yaml index cd7995156..b481007b0 100644 --- a/specification/components/stu3/schemas/endpoints/a027-convert-a&g-to-referral.yaml +++ b/specification/components/stu3/schemas/endpoints/a027-convert-a&g-to-referral.yaml @@ -112,3 +112,5 @@ responses: $ref: '../responses/TooManyRequests.yaml' '500': $ref: '../responses/InternalServerError.yaml' + '503': + $ref: '../responses/ServiceUnavailable.yaml' diff --git a/specification/components/stu3/schemas/endpoints/a028-record-triage-outcome.yaml b/specification/components/stu3/schemas/endpoints/a028-record-triage-outcome.yaml index b1cf6ba45..757eaf7b5 100644 --- a/specification/components/stu3/schemas/endpoints/a028-record-triage-outcome.yaml +++ b/specification/components/stu3/schemas/endpoints/a028-record-triage-outcome.yaml @@ -133,3 +133,5 @@ responses: $ref: '../responses/TooManyRequests.yaml' '500': $ref: '../responses/InternalServerError.yaml' + '503': + $ref: '../responses/ServiceUnavailable.yaml' diff --git a/specification/components/stu3/schemas/endpoints/a029-available-actions-for-user-list.yaml b/specification/components/stu3/schemas/endpoints/a029-available-actions-for-user-list.yaml index 9552b03b8..6915238c8 100644 --- a/specification/components/stu3/schemas/endpoints/a029-available-actions-for-user-list.yaml +++ b/specification/components/stu3/schemas/endpoints/a029-available-actions-for-user-list.yaml @@ -97,3 +97,5 @@ responses: $ref: '../responses/TooManyRequests.yaml' '500': $ref: '../responses/InternalServerError.yaml' + '503': + $ref: '../responses/ServiceUnavailable.yaml' diff --git a/specification/components/stu3/schemas/endpoints/a031-change-shortlist.yaml b/specification/components/stu3/schemas/endpoints/a031-change-shortlist.yaml index 0bbad96da..01ba59677 100644 --- a/specification/components/stu3/schemas/endpoints/a031-change-shortlist.yaml +++ b/specification/components/stu3/schemas/endpoints/a031-change-shortlist.yaml @@ -120,3 +120,5 @@ responses: $ref: '../responses/TooManyRequests.yaml' '500': $ref: '../responses/InternalServerError.yaml' + '503': + $ref: '../responses/ServiceUnavailable.yaml' diff --git a/specification/components/stu3/schemas/endpoints/a032-change-shortlist-and-send-for-triage.yaml b/specification/components/stu3/schemas/endpoints/a032-change-shortlist-and-send-for-triage.yaml index 32e57363e..c45b485f4 100644 --- a/specification/components/stu3/schemas/endpoints/a032-change-shortlist-and-send-for-triage.yaml +++ b/specification/components/stu3/schemas/endpoints/a032-change-shortlist-and-send-for-triage.yaml @@ -100,3 +100,5 @@ responses: $ref: '../responses/TooManyRequests.yaml' '500': $ref: '../responses/InternalServerError.yaml' + '503': + $ref: '../responses/ServiceUnavailable.yaml' diff --git a/specification/components/stu3/schemas/endpoints/a034-update-appointment.yaml b/specification/components/stu3/schemas/endpoints/a034-update-appointment.yaml index c71499249..9f2eb852f 100644 --- a/specification/components/stu3/schemas/endpoints/a034-update-appointment.yaml +++ b/specification/components/stu3/schemas/endpoints/a034-update-appointment.yaml @@ -112,5 +112,7 @@ responses: $ref: '../responses/InternalServerError.yaml' '502': $ref: '../responses/updateAppointment/502Response.yaml' + '503': + $ref: '../responses/ServiceUnavailable.yaml' '504': $ref: '../responses/updateAppointment/504Response.yaml' diff --git a/specification/components/stu3/schemas/endpoints/a036-cancel-referral.yaml b/specification/components/stu3/schemas/endpoints/a036-cancel-referral.yaml index 33be73ab0..7f432a961 100644 --- a/specification/components/stu3/schemas/endpoints/a036-cancel-referral.yaml +++ b/specification/components/stu3/schemas/endpoints/a036-cancel-referral.yaml @@ -163,5 +163,7 @@ responses: $ref: '../responses/InternalServerError.yaml' '502': $ref: '../responses/cancelReferral/502Response.yaml' + '503': + $ref: '../responses/ServiceUnavailable.yaml' '504': $ref: '../responses/cancelReferral/504Response.yaml' diff --git a/specification/components/stu3/schemas/endpoints/a038-retrieve-appointment-versioned.yaml b/specification/components/stu3/schemas/endpoints/a038-retrieve-appointment-versioned.yaml index 52d94afb2..623f84d33 100644 --- a/specification/components/stu3/schemas/endpoints/a038-retrieve-appointment-versioned.yaml +++ b/specification/components/stu3/schemas/endpoints/a038-retrieve-appointment-versioned.yaml @@ -68,3 +68,5 @@ responses: $ref: '../responses/TooManyRequests.yaml' '500': $ref: '../responses/InternalServerError.yaml' + '503': + $ref: '../responses/ServiceUnavailable.yaml' diff --git a/specification/components/stu3/schemas/endpoints/a038-retrieve-appointment.yaml b/specification/components/stu3/schemas/endpoints/a038-retrieve-appointment.yaml index f6cda4810..99eb72b6a 100644 --- a/specification/components/stu3/schemas/endpoints/a038-retrieve-appointment.yaml +++ b/specification/components/stu3/schemas/endpoints/a038-retrieve-appointment.yaml @@ -109,3 +109,5 @@ responses: $ref: '../responses/TooManyRequests.yaml' '500': $ref: '../responses/InternalServerError.yaml' + '503': + $ref: '../responses/ServiceUnavailable.yaml' diff --git a/specification/components/stu3/schemas/endpoints/a043-retrieve-advice-and-guidance-overview-pdf.yaml b/specification/components/stu3/schemas/endpoints/a043-retrieve-advice-and-guidance-overview-pdf.yaml index c062ee3fc..d06e2866f 100644 --- a/specification/components/stu3/schemas/endpoints/a043-retrieve-advice-and-guidance-overview-pdf.yaml +++ b/specification/components/stu3/schemas/endpoints/a043-retrieve-advice-and-guidance-overview-pdf.yaml @@ -82,3 +82,5 @@ responses: $ref: '../responses/TooManyRequests.yaml' '500': $ref: '../responses/InternalServerError.yaml' + '503': + $ref: '../responses/ServiceUnavailable.yaml' diff --git a/specification/components/stu3/schemas/endpoints/a044-create-advice-and-guidance-request.yaml b/specification/components/stu3/schemas/endpoints/a044-create-advice-and-guidance-request.yaml index ca641af97..5ee101d73 100644 --- a/specification/components/stu3/schemas/endpoints/a044-create-advice-and-guidance-request.yaml +++ b/specification/components/stu3/schemas/endpoints/a044-create-advice-and-guidance-request.yaml @@ -94,3 +94,5 @@ responses: $ref: '../responses/TooManyRequests.yaml' '500': $ref: '../responses/InternalServerError.yaml' + '503': + $ref: '../responses/ServiceUnavailable.yaml' diff --git a/specification/components/stu3/schemas/headers/response/RetryAfter.yaml b/specification/components/stu3/schemas/headers/response/RetryAfter.yaml new file mode 100644 index 000000000..7ca9e1fad --- /dev/null +++ b/specification/components/stu3/schemas/headers/response/RetryAfter.yaml @@ -0,0 +1,6 @@ +description: | + Defines a period (in seconds) after which the client should attempt their request again. +required: false +schema: + type: string + example: '120' \ No newline at end of file diff --git a/specification/components/stu3/schemas/responses/Forbidden.yaml b/specification/components/stu3/schemas/responses/Forbidden.yaml index e16a9157a..7ab90f68c 100644 --- a/specification/components/stu3/schemas/responses/Forbidden.yaml +++ b/specification/components/stu3/schemas/responses/Forbidden.yaml @@ -2,9 +2,10 @@ description: | Where status code 403 (Forbidden) is returned then an eRS-OperationOutcome-1 will be included in the body, as detailed below. Check diagnostics property for specific information regarding the error. - | Error code | Description | - | ---------------------------------- | --------------------------------------------------------------------------------------------------------------------------- | - | FORBIDDEN | Access Forbidden. | + | issue.details.coding.code | issue.code | Coding System | Description | + | ------------------------- | ---------- | ------------------------------------------------------------------ | ---------------------------------------------------------------------------------- | + | FORBIDDEN | forbidden | [eRS Error Code](https://fhir.nhs.uk/CodeSystem/ers-error-codes) | A call attempts to access or operate upon a resource without proper authorisation. | + | NO_ACCESS | forbidden | [eRS Error Code](https://fhir.nhs.uk/CodeSystem/ers-error-codes) | The request could not be authenticated due to insufficient credentials being provided. | headers: X-Correlation-ID: $ref: '../headers/response/CorrelationID.yaml' diff --git a/specification/components/stu3/schemas/responses/ServiceUnavailable.yaml b/specification/components/stu3/schemas/responses/ServiceUnavailable.yaml new file mode 100644 index 000000000..a52ca5439 --- /dev/null +++ b/specification/components/stu3/schemas/responses/ServiceUnavailable.yaml @@ -0,0 +1,23 @@ +description: | + Where status code 503 (Service Unavailable) is returned then an eRS-OperationOutcome-1 will be included in the body, as detailed below. + In response to receiving this status code, it is recommended that clients retry at a later time based on a returned `Retry-After` header when provided. + + | Error code | Description | + | ---------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------ | + | SYSTEM_UNAVAILABLE | A request to an internal component timed out whilst attempting to serve a response or the system is currently otherwise unavailable. | + +headers: + X-Correlation-ID: + $ref: '../headers/response/CorrelationID.yaml' + X-Request-ID: + $ref: '../headers/response/RequestID.yaml' + Content-Type: + $ref: '../headers/response/ContentTypeFhirJson.yaml' + Retry-After: + $ref: '../headers/response/RetryAfter.yaml' +content: + application/fhir+json: + schema: + $ref: '../STU3-OperationOutcome.yaml' + example: + $ref: '../../examples/STU3-ServiceUnavailable.json' \ No newline at end of file diff --git a/specification/components/stu3/schemas/responses/Unauthorized.yaml b/specification/components/stu3/schemas/responses/Unauthorized.yaml index 9d440d867..1dc2279e5 100644 --- a/specification/components/stu3/schemas/responses/Unauthorized.yaml +++ b/specification/components/stu3/schemas/responses/Unauthorized.yaml @@ -1 +1,20 @@ -description: Unauthorized \ No newline at end of file +description: | + Where status code 401 (Unauthorised) is returned then an eRS-OperationOutcome-1 will be included in the body, as detailed below. + Check diagnostics property for specific information regarding the error. + + | issue.details.coding.code | issue.code | Coding System | Description | + | ------------------------- | ---------- | ------------------------------------------------------------------ | ---------------------------------------------------------------------------------- | + | NO_ACCESS |
  • login
  • forbidden
| [eRS Error Code](https://fhir.nhs.uk/CodeSystem/ers-error-codes) | The request could not be authenticated due to either no credentials being provided or the provided credentials no longer being valid. Callers receiving this code should reauthenticate. | +headers: + X-Correlation-ID: + $ref: '../headers/response/CorrelationID.yaml' + X-Request-ID: + $ref: '../headers/response/RequestID.yaml' + Content-Type: + $ref: '../headers/response/ContentTypeFhirJson.yaml' +content: + application/fhir+json: + schema: + $ref: '../STU3-OperationOutcome.yaml' + example: + $ref: '../../examples/STU3-Unauthorised.json' diff --git a/specification/components/stu3/schemas/responses/bookOrDeferAppointment/504Response.yaml b/specification/components/stu3/schemas/responses/bookOrDeferAppointment/504Response.yaml index 1b0dba131..094fb20c4 100644 --- a/specification/components/stu3/schemas/responses/bookOrDeferAppointment/504Response.yaml +++ b/specification/components/stu3/schemas/responses/bookOrDeferAppointment/504Response.yaml @@ -1,6 +1,7 @@ description: | Where status code 504 (Gateway Timeout) is returned then an eRS-OperationOutcome-1 will be included in the body. Check diagnostics property for specific information regarding the error. + In response to receiving this status code, it is recommended that clients retry at a later time. | Error code | Description | | ---------------------------------- | ---------------------------------------------------------------------------------------------------------------------------- | diff --git a/specification/components/stu3/schemas/responses/cancelReferral/504Response.yaml b/specification/components/stu3/schemas/responses/cancelReferral/504Response.yaml index 1b0dba131..094fb20c4 100644 --- a/specification/components/stu3/schemas/responses/cancelReferral/504Response.yaml +++ b/specification/components/stu3/schemas/responses/cancelReferral/504Response.yaml @@ -1,6 +1,7 @@ description: | Where status code 504 (Gateway Timeout) is returned then an eRS-OperationOutcome-1 will be included in the body. Check diagnostics property for specific information regarding the error. + In response to receiving this status code, it is recommended that clients retry at a later time. | Error code | Description | | ---------------------------------- | ---------------------------------------------------------------------------------------------------------------------------- | diff --git a/specification/components/stu3/schemas/responses/rejectReferral/504Response.yaml b/specification/components/stu3/schemas/responses/rejectReferral/504Response.yaml index 1b0dba131..094fb20c4 100644 --- a/specification/components/stu3/schemas/responses/rejectReferral/504Response.yaml +++ b/specification/components/stu3/schemas/responses/rejectReferral/504Response.yaml @@ -1,6 +1,7 @@ description: | Where status code 504 (Gateway Timeout) is returned then an eRS-OperationOutcome-1 will be included in the body. Check diagnostics property for specific information regarding the error. + In response to receiving this status code, it is recommended that clients retry at a later time. | Error code | Description | | ---------------------------------- | ---------------------------------------------------------------------------------------------------------------------------- | diff --git a/specification/components/stu3/schemas/responses/updateAppointment/504Response.yaml b/specification/components/stu3/schemas/responses/updateAppointment/504Response.yaml index 1b0dba131..094fb20c4 100644 --- a/specification/components/stu3/schemas/responses/updateAppointment/504Response.yaml +++ b/specification/components/stu3/schemas/responses/updateAppointment/504Response.yaml @@ -1,6 +1,7 @@ description: | Where status code 504 (Gateway Timeout) is returned then an eRS-OperationOutcome-1 will be included in the body. Check diagnostics property for specific information regarding the error. + In response to receiving this status code, it is recommended that clients retry at a later time. | Error code | Description | | ---------------------------------- | ---------------------------------------------------------------------------------------------------------------------------- | diff --git a/tests/conftest.py b/tests/conftest.py index a1c18c4a0..97de92084 100644 --- a/tests/conftest.py +++ b/tests/conftest.py @@ -167,6 +167,77 @@ def _update_function(append_scopes: Collection[str]): return _update_function +@pytest.fixture +def delete_user_restricted_app_attr( + user_restricted_app, client: ApigeeClient +) -> Callable[[Collection[str]], Generator[Dict[str, str], None, None]]: + @contextmanager + def _update_function(attr): + app_api = DeveloperAppsAPI(client=client) + app = app_api.get_app_by_name( + email="apm-testing-internal-dev@nhs.net", + app_name=user_restricted_app["name"], + ) + + warnings.warn(f"Existing app = {app}") + + existing_attributes = app_api.get_app_attributes( + email="apm-testing-internal-dev@nhs.net", app_name=app["name"] + ) + + yield app_api.delete_app_attribute_by_name( + email="apm-testing-internal-dev@nhs.net", + app_name=app["name"], + attribute_name=attr, + ) + + # reset the product once the context manager has been closed. + + app_api.post_app_attributes( + email="apm-testing-internal-dev@nhs.net", + app_name=app["name"], + body=existing_attributes, + ) + + return _update_function + + +@pytest.fixture +def update_user_restricted_app_attr( + user_restricted_app, client: ApigeeClient +) -> Callable[[Collection[str]], Generator[Dict[str, str], None, None]]: + @contextmanager + def _update_function(attr, value): + app_api = DeveloperAppsAPI(client=client) + app = app_api.get_app_by_name( + email="apm-testing-internal-dev@nhs.net", + app_name=user_restricted_app["name"], + ) + + warnings.warn(f"Existing app = {app}") + + existing_attributes = app_api.get_app_attributes( + email="apm-testing-internal-dev@nhs.net", app_name=app["name"] + ) + + yield app_api.post_app_attribute_by_name( + email="apm-testing-internal-dev@nhs.net", + app_name=app["name"], + attribute_name=attr, + body={"value": value}, + ) + + # reset the product once the context manager has been closed. + + app_api.post_app_attributes( + email="apm-testing-internal-dev@nhs.net", + app_name=app["name"], + body=existing_attributes, + ) + + return _update_function + + @pytest.fixture def make_product(client, environment, service_name): async def _make_product(product_scopes): diff --git a/tests/integration/test_headers.py b/tests/integration/test_headers.py index 2c2e15cf7..849a6d9b4 100644 --- a/tests/integration/test_headers.py +++ b/tests/integration/test_headers.py @@ -517,3 +517,147 @@ async def test_access_code_not_supported( for renamed_header in RenamedHeader: assert renamed_header.renamed not in client_response_headers + + @pytest.mark.asyncio + @pytest.mark.parametrize( + "user, endpoint_url, is_fhir_4", + [ + (Actor.RC, "/FHIR/R4/", True), + (Actor.AAL2_USER, "/FHIR/R4/", True), + (Actor.RC, "/FHIR/STU3/", False), + (Actor.AAL2_USER, "/FHIR/STU3/", False), + ], + ) + async def test_headers_on_echo_target_no_asid( + self, + authenticate_user, + endpoint_url, + is_fhir_4, + service_url, + delete_user_restricted_app_attr, + user: Actor, + ): + with delete_user_restricted_app_attr("asid"): + + access_code = await authenticate_user(user) + + client_request_headers = { + _HEADER_ECHO: "", # enable echo target + _HEADER_AUTHORIZATION: "Bearer " + access_code, + _HEADER_REQUEST_ID: "DUMMY-VALUE", + RenamedHeader.REFERRAL_ID.original: _EXPECTED_REFERRAL_ID, + RenamedHeader.CORRELATION_ID.original: _EXPECTED_CORRELATION_ID, + RenamedHeader.BUSINESS_FUNCTION.original: user.business_function, + RenamedHeader.ODS_CODE.original: user.org_code, + RenamedHeader.FILENAME.original: _EXPECTED_FILENAME, + RenamedHeader.COMM_RULE_ORG.original: _EXPECTED_COMM_RULE_ORG, + RenamedHeader.OBO_USER_ID.original: _EXPECTED_OBO_USER_ID, + } + + # Make the API call + response = requests.get( + f"{service_url}{endpoint_url}", headers=client_request_headers + ) + # Verify the status + assert ( + response.status_code == 403 + ), "Expected a 403 when accessing the api but got " + str( + response.status_code + ) + + response_data = response.json() + assert response_data["resourceType"] == "OperationOutcome" + assert response_data["meta"]["lastUpdated"] is not None + assert response_data["meta"]["profile"][0] == ( + "https://www.hl7.org/fhir/R4/operationoutcome.html" + if is_fhir_4 + else "https://fhir.nhs.uk/STU3/StructureDefinition/eRS-OperationOutcome-1" + ) + assert len(response_data["issue"]) == 1 + issue = response_data["issue"][0] + assert issue["severity"] == "error" + assert issue["code"] == "forbidden" + assert issue["diagnostics"] == "ASID is not configured in the application" + assert len(issue["details"]["coding"]) == 1 + issue_details = issue["details"]["coding"][0] + assert ( + issue_details["system"] + == "https://fhir.nhs.uk/CodeSystem/NHSD-API-ErrorOrWarningCode" + if is_fhir_4 + else "https://fhir.nhs.uk/STU3/CodeSystem/eRS-APIErrorCode-1" + ) + assert ( + issue_details["code"] == "ACCESS_DENIED" if is_fhir_4 else "NO_ACCESS" + ) + + @pytest.mark.asyncio + @pytest.mark.parametrize( + "user, endpoint_url, is_fhir_4", + [ + (Actor.RC, "/FHIR/R4/", True), + (Actor.AAL2_USER, "/FHIR/R4/", True), + (Actor.RC, "/FHIR/STU3/", False), + (Actor.AAL2_USER, "/FHIR/STU3/", False), + ], + ) + async def test_headers_on_echo_target_empty_asid( + self, + authenticate_user, + endpoint_url, + is_fhir_4, + service_url, + update_user_restricted_app_attr, + user: Actor, + ): + with update_user_restricted_app_attr("asid", ""): + + access_code = await authenticate_user(user) + + client_request_headers = { + _HEADER_ECHO: "", # enable echo target + _HEADER_AUTHORIZATION: "Bearer " + access_code, + _HEADER_REQUEST_ID: "DUMMY-VALUE", + RenamedHeader.REFERRAL_ID.original: _EXPECTED_REFERRAL_ID, + RenamedHeader.CORRELATION_ID.original: _EXPECTED_CORRELATION_ID, + RenamedHeader.BUSINESS_FUNCTION.original: user.business_function, + RenamedHeader.ODS_CODE.original: user.org_code, + RenamedHeader.FILENAME.original: _EXPECTED_FILENAME, + RenamedHeader.COMM_RULE_ORG.original: _EXPECTED_COMM_RULE_ORG, + RenamedHeader.OBO_USER_ID.original: _EXPECTED_OBO_USER_ID, + } + + # Make the API call + response = requests.get( + f"{service_url}{endpoint_url}", headers=client_request_headers + ) + # Verify the status + assert ( + response.status_code == 403 + ), "Expected a 403 when accessing the api but got " + str( + response.status_code + ) + + response_data = response.json() + assert response_data["resourceType"] == "OperationOutcome" + assert response_data["meta"]["lastUpdated"] is not None + assert response_data["meta"]["profile"][0] == ( + "https://www.hl7.org/fhir/R4/operationoutcome.html" + if is_fhir_4 + else "https://fhir.nhs.uk/STU3/StructureDefinition/eRS-OperationOutcome-1" + ) + assert len(response_data["issue"]) == 1 + issue = response_data["issue"][0] + assert issue["severity"] == "error" + assert issue["code"] == "forbidden" + assert issue["diagnostics"] == "ASID is not configured in the application" + assert len(issue["details"]["coding"]) == 1 + issue_details = issue["details"]["coding"][0] + assert ( + issue_details["system"] + == "https://fhir.nhs.uk/CodeSystem/NHSD-API-ErrorOrWarningCode" + if is_fhir_4 + else "https://fhir.nhs.uk/STU3/CodeSystem/eRS-APIErrorCode-1" + ) + assert ( + issue_details["code"] == "ACCESS_DENIED" if is_fhir_4 else "NO_ACCESS" + )