{"_id":"@codeforamerica/safety-net-blueprint-contracts","_rev":"6-031734639c3527ac31f023bf2f9e0ddd","name":"@codeforamerica/safety-net-blueprint-contracts","dist-tags":{"latest":"1.2.0"},"versions":{"1.0.0":{"name":"@codeforamerica/safety-net-blueprint-contracts","version":"1.0.0","license":"SEE LICENSE IN LICENSE","_id":"@codeforamerica/safety-net-blueprint-contracts@1.0.0","maintainers":[{"name":"fritzjooste","email":"fritz@fritzjooste.com"},{"name":"alice-sjconsulting","email":"alice@sjconsulting.us"},{"name":"devowhippit","email":"dhirth@codeforamerica.org"},{"name":"chriscorrea","email":"ccorrea@codeforamerica.org"},{"name":"mryhmln","email":"mhamlin@codeforamerica.org"},{"name":"lkacenjar","email":"lkacenjar@codeforamerica.org"}],"homepage":"https://github.com/codeforamerica/safety-net-blueprint#readme","bugs":{"url":"https://github.com/codeforamerica/safety-net-blueprint/issues"},"bin":{"safety-net-resolve":"scripts/resolve-overlay.js","safety-net-design-reference":"scripts/export-design-reference.js"},"dist":{"shasum":"9fe3261bb834a140020b0cfbecc3eb63d20017a3","tarball":"https://registry.npmjs.org/@codeforamerica/safety-net-blueprint-contracts/-/safety-net-blueprint-contracts-1.0.0.tgz","fileCount":31,"integrity":"sha512-fOzpu/796MLQSUU4J+0L7T2/IVjRIndX+Z9ZMYqKsOt8AGSxNEtQnN7dF8QQpqUKQqeXoqFf38wvCpKHLMN6wg==","signatures":[{"sig":"MEUCIDE25muO27ctOQqf1u0gQUMHsAPgJjWSGQl38INbPotXAiEAm0s2/RCtvws9+gRL2U7nNZW9d3X3W6jdZNGtBfYka5Q=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":390865},"type":"module","engines":{"node":">=20.19.0"},"exports":{"./loader":"./src/validation/openapi-loader.js","./overlay":"./src/overlay/overlay-resolver.js","./patterns":"./src/validation/pattern-validator.js","./validation":"./src/validation/openapi-validator.js"},"gitHead":"3ed494148be2a881d5dfbd46fa062a47aeac7764","scripts":{"test":"node --test tests/unit/*.test.js","api:new":"node scripts/generate-api.js","prepack":"npm run design:reference && node ../../scripts/build-package-readme.js","validate":"npm run validate:syntax && npm run validate:patterns","validate:lint":"npx spectral lint '*-openapi.yaml' --ignore-unknown-format","overlay:resolve":"node scripts/resolve-overlay.js --base=. --out=./resolved","validate:syntax":"node scripts/validate-openapi.js --specs=.","design:reference":"node scripts/export-design-reference.js --specs=. --out=../../docs","validate:patterns":"node scripts/validate-patterns.js --specs=."},"_npmUser":{"name":"lkacenjar","email":"lkacenjar@codeforamerica.org"},"deprecated":"This package has been renamed to @codeforamerica/blueprint-safety-net-contracts. Note: the new package starts at 0.1.0 — this is intentional and reflects a version reset, not a downgrade in maturity.","repository":{"url":"git+https://github.com/codeforamerica/safety-net-blueprint.git","type":"git","directory":"packages/contracts"},"_npmVersion":"11.4.2","description":"Behavioral contracts, OpenAPI specs, validation, and overlay resolution for Safety Net APIs","directories":{},"_nodeVersion":"24.4.1","dependencies":{"ajv":"^8.12.0","js-yaml":"^4.1.0","ajv-formats":"^3.0.1","@apidevtools/json-schema-ref-parser":"^11.7.2"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"@stoplight/spectral-cli":"^6.15.0"},"_npmOperationalInternal":{"tmp":"tmp/safety-net-blueprint-contracts_1.0.0_1771368272804_0.8489113737638021","host":"s3://npm-registry-packages-npm-production"}},"1.1.0":{"name":"@codeforamerica/safety-net-blueprint-contracts","version":"1.1.0","license":"SEE LICENSE IN LICENSE","_id":"@codeforamerica/safety-net-blueprint-contracts@1.1.0","maintainers":[{"name":"fritzjooste","email":"fritz@fritzjooste.com"},{"name":"alice-sjconsulting","email":"alice@sjconsulting.us"},{"name":"devowhippit","email":"dhirth@codeforamerica.org"},{"name":"chriscorrea","email":"ccorrea@codeforamerica.org"},{"name":"mryhmln","email":"mhamlin@codeforamerica.org"},{"name":"lkacenjar","email":"lkacenjar@codeforamerica.org"}],"homepage":"https://github.com/codeforamerica/safety-net-blueprint#readme","bugs":{"url":"https://github.com/codeforamerica/safety-net-blueprint/issues"},"bin":{"safety-net-resolve":"scripts/resolve.js","safety-net-design-reference":"scripts/export-design-reference.js"},"dist":{"shasum":"5f18539677be234cda4b4c49630ce68e75e621ad","tarball":"https://registry.npmjs.org/@codeforamerica/safety-net-blueprint-contracts/-/safety-net-blueprint-contracts-1.1.0.tgz","fileCount":47,"integrity":"sha512-Ne/PfIwUPXrqegSqwVB48h6LC+52Y3XRskJ4YbSfAHuWDIfMsOh/wVATq4aWLjj1WVuMmx3Yy0hNzOZ9tTtQIw==","signatures":[{"sig":"MEYCIQDwSO49oYucSl5NZYQAQmhHur5EBxVPUWd7GgqfXLwuqQIhAIdAam4DnVuPmTNWIRhMU5VNdXAhGWSxzqCbeJNZmj+w","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@codeforamerica%2fsafety-net-blueprint-contracts@1.1.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":551854},"type":"module","engines":{"node":">=20.19.0"},"exports":{"./loader":"./src/validation/openapi-loader.js","./overlay":"./src/overlay/overlay-resolver.js","./patterns":"./src/validation/pattern-validator.js","./validation":"./src/validation/openapi-validator.js"},"gitHead":"a0dcc226fdc7b5a87544b3d36def9120a2a2de8d","scripts":{"test":"node --test tests/unit/","api:new":"node scripts/generate-api.js","postman":"node scripts/generate-postman.js","prepack":"npm run design:reference && node ../../scripts/build-package-readme.js","resolve":"node scripts/resolve.js --spec=. --out=../resolved","validate":"npm run validate:syntax && npm run validate:patterns && npm run validate:schemas","api:update":"node scripts/update-api.js","validate:lint":"npx spectral lint '*-openapi.yaml' --ignore-unknown-format","validate:syntax":"node scripts/validate-openapi.js --spec=.","design:reference":"node scripts/export-design-reference.js --spec=. --out=../../docs","validate:schemas":"node scripts/validate-schemas.js --spec=.","validate:patterns":"node scripts/validate-patterns.js --spec=.","reconcile-examples":"node scripts/reconcile-examples.js","generate:rpc-overlay":"node scripts/generate-rpc-overlay.js --spec=.","contract-tables:export":"node scripts/export-contract-tables.js","contract-tables:import":"node scripts/import-contract-tables.js"},"_npmUser":{"name":"lkacenjar","email":"lkacenjar@codeforamerica.org"},"deprecated":"This package has been renamed to @codeforamerica/blueprint-safety-net-contracts. Note: the new package starts at 0.1.0 — this is intentional and reflects a version reset, not a downgrade in maturity.","repository":{"url":"git+https://github.com/codeforamerica/safety-net-blueprint.git","type":"git","directory":"packages/contracts"},"_npmVersion":"10.8.2","description":"Behavioral contracts, OpenAPI specs, validation, and overlay resolution for Safety Net APIs","directories":{},"_nodeVersion":"20.20.0","dependencies":{"ajv":"^8.12.0","js-yaml":"^4.1.0","ajv-formats":"^3.0.1","@apidevtools/json-schema-ref-parser":"^11.7.2"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"@stoplight/spectral-cli":"^6.15.0"},"_npmOperationalInternal":{"tmp":"tmp/safety-net-blueprint-contracts_1.1.0_1772563447004_0.6837138253711581","host":"s3://npm-registry-packages-npm-production"}},"1.2.0":{"name":"@codeforamerica/safety-net-blueprint-contracts","version":"1.2.0","license":"SEE LICENSE IN LICENSE","_id":"@codeforamerica/safety-net-blueprint-contracts@1.2.0","maintainers":[{"name":"fritzjooste","email":"fritz@fritzjooste.com"},{"name":"alice-sjconsulting","email":"alice@sjconsulting.us"},{"name":"devowhippit","email":"dhirth@codeforamerica.org"},{"name":"chriscorrea","email":"ccorrea@codeforamerica.org"},{"name":"mryhmln","email":"mhamlin@codeforamerica.org"},{"name":"lkacenjar","email":"lkacenjar@codeforamerica.org"}],"homepage":"https://github.com/codeforamerica/safety-net-blueprint#readme","bugs":{"url":"https://github.com/codeforamerica/safety-net-blueprint/issues"},"bin":{"safety-net-resolve":"scripts/resolve.js","safety-net-design-reference":"scripts/export-design-reference.js"},"dist":{"shasum":"7bd08f019e1019d106f2341472927459d7c9e1e5","tarball":"https://registry.npmjs.org/@codeforamerica/safety-net-blueprint-contracts/-/safety-net-blueprint-contracts-1.2.0.tgz","fileCount":51,"integrity":"sha512-0pCOhMq6nfqGCmr8czeOfeaZh7vTExf4AmllFIcatOhFGlL2lqjSVkQEhczBL7pAxVUmy/G4LZ41Xfyvpc7Hdw==","signatures":[{"sig":"MEQCIF8mw4LYh6nkCj4OcXKIMf2n9HKGM871gbZrKu8WYa7jAiB3dDHJ0sBF9kQABgs8Gb3poWmJMwjR81XtFzzrNLpuiw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@codeforamerica%2fsafety-net-blueprint-contracts@1.2.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":576021},"type":"module","engines":{"node":">=20.19.0"},"exports":{"./loader":"./src/validation/openapi-loader.js","./overlay":"./src/overlay/overlay-resolver.js","./patterns":"./src/validation/pattern-validator.js","./validation":"./src/validation/openapi-validator.js"},"gitHead":"2dcfb2dcd70b841b6f711ca28f0a7f44c94c2c39","scripts":{"test":"node --test tests/unit/","api:new":"node scripts/generate-api.js","postman":"node scripts/generate-postman.js","prepack":"npm run design:reference && node ../../scripts/build-package-readme.js","resolve":"node scripts/resolve.js --spec=. --out=../resolved","validate":"npm run validate:syntax && npm run validate:patterns && npm run validate:schemas","api:update":"node scripts/update-api.js","validate:lint":"npx spectral lint '*-openapi.yaml' --ignore-unknown-format","validate:syntax":"node scripts/validate-openapi.js --spec=.","design:reference":"node scripts/export-design-reference.js --spec=. --out=../../docs","validate:schemas":"node scripts/validate-schemas.js --spec=.","validate:patterns":"node scripts/validate-patterns.js --spec=.","reconcile-examples":"node scripts/reconcile-examples.js","generate:rpc-overlay":"node scripts/generate-rpc-overlay.js --spec=.","contract-tables:export":"node scripts/export-contract-tables.js","contract-tables:import":"node scripts/import-contract-tables.js"},"_npmUser":{"name":"lkacenjar","email":"lkacenjar@codeforamerica.org"},"deprecated":"This package has been renamed to @codeforamerica/blueprint-safety-net-contracts. Note: the new package starts at 0.1.0 — this is intentional and reflects a version reset, not a downgrade in maturity.","repository":{"url":"git+https://github.com/codeforamerica/safety-net-blueprint.git","type":"git","directory":"packages/contracts"},"_npmVersion":"10.8.2","description":"Behavioral contracts, OpenAPI specs, validation, and overlay resolution for Safety Net APIs","directories":{},"_nodeVersion":"20.20.1","dependencies":{"ajv":"^8.12.0","js-yaml":"^4.1.0","ajv-formats":"^3.0.1","@apidevtools/json-schema-ref-parser":"^11.7.2"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"@stoplight/spectral-cli":"^6.15.0"},"_npmOperationalInternal":{"tmp":"tmp/safety-net-blueprint-contracts_1.2.0_1773767936603_0.39889762321647937","host":"s3://npm-registry-packages-npm-production"}}},"time":{"created":"2026-02-17T22:44:32.728Z","modified":"2026-09-16T22:36:17.764Z","1.0.0":"2026-02-17T22:44:32.974Z","1.1.0":"2026-03-03T18:44:07.248Z","1.2.0":"2026-03-17T17:18:56.774Z"},"bugs":{"url":"https://github.com/codeforamerica/safety-net-blueprint/issues"},"license":"SEE LICENSE IN LICENSE","homepage":"https://github.com/codeforamerica/safety-net-blueprint#readme","repository":{"url":"git+https://github.com/codeforamerica/safety-net-blueprint.git","type":"git","directory":"packages/contracts"},"description":"Behavioral contracts, OpenAPI specs, validation, and overlay resolution for Safety Net APIs","maintainers":[{"email":"fritz@fritzjooste.com","name":"fritzjooste"},{"email":"dhirth@codeforamerica.org","name":"devowhippit"},{"email":"rob.diciuccio@gmail.com","name":"robdiciuccio"},{"email":"ccorrea@codeforamerica.org","name":"chriscorrea"},{"email":"mhamlin@codeforamerica.org","name":"mryhmln"},{"email":"lkacenjar@codeforamerica.org","name":"lkacenjar"}],"readme":"# @codeforamerica/safety-net-blueprint-contracts\n\n> Behavioral contracts, OpenAPI specs, validation, and overlay resolution for Safety Net APIs\n\n[![npm version](https://img.shields.io/npm/v/@codeforamerica/safety-net-blueprint-contracts.svg)](https://www.npmjs.com/package/@codeforamerica/safety-net-blueprint-contracts)\n[![license](https://img.shields.io/npm/l/@codeforamerica/safety-net-blueprint-contracts.svg)](https://github.com/codeforamerica/safety-net-blueprint/blob/main/LICENSE)\n\n## Installation\n\n```bash\nnpm install @codeforamerica/safety-net-blueprint-contracts\n```\n\n## What's Included\r\n\r\n- **OpenAPI specs** (`*.yaml`) — base API specifications for safety net programs\r\n- **Component schemas** (`components/`) — shared schemas, parameters, and responses\r\n- **Overlay files** (`overlays/`) — state-specific variations using [OpenAPI Overlay Specification 1.0.0](https://github.com/OAI/Overlay-Specification)\r\n- **API patterns** (`patterns/`) — design pattern rules for validation\r\n- **Validation** (`src/validation/`) — OpenAPI syntax and pattern validation\r\n- **Overlay resolver** (`src/overlay/`) — merges base specs with state overlays\r\n\r\n## CLI Commands\r\n\r\nThese commands are installed as bin scripts. Run them via npm scripts in your `package.json` or with `npx`.\r\n\r\n### `safety-net-resolve`\r\n\r\nResolve overlays against base specs to produce state-specific output.\r\n\r\n```json\r\n\"scripts\": {\r\n  \"resolve\": \"safety-net-resolve --base=./node_modules/@codeforamerica/safety-net-blueprint-contracts --overlays=./overlays --out=./resolved\"\r\n}\r\n```\r\n\r\n### `safety-net-design-reference`\r\n\r\nExport an HTML design reference from OpenAPI specs.\r\n\r\n```json\r\n\"scripts\": {\r\n  \"design-reference\": \"safety-net-design-reference --spec=. --out=./docs\"\r\n}\r\n```\r\n\r\n## Programmatic API\r\n\r\n```javascript\r\nimport { applyOverlay } from '@codeforamerica/safety-net-blueprint-contracts/overlay';\r\nimport { validateSpec } from '@codeforamerica/safety-net-blueprint-contracts/validation';\r\nimport { discoverApiSpecs, loadAllSpecs } from '@codeforamerica/safety-net-blueprint-contracts/loader';\r\nimport { validatePatterns } from '@codeforamerica/safety-net-blueprint-contracts/patterns';\r\n```\r\n\n\n## Changelog\n\nSee [CHANGELOG.md](https://github.com/codeforamerica/safety-net-blueprint/blob/main/packages/contracts/CHANGELOG.md) for release history.\n\n## Documentation\n\nSee the [Safety Net Blueprint documentation](https://github.com/codeforamerica/safety-net-blueprint) for full guides and reference.\n\n## License\n\n[PolyForm Noncommercial License 1.0.0](https://polyformproject.org/licenses/noncommercial/1.0.0/)\n","readmeFilename":"README.md"}