{"id":18629,"library":"openapi-enforcer-middleware","title":"OpenAPI Enforcer Middleware","description":"Express middleware that leverages your OpenAPI document to automatically validate requests and responses, mock responses in development, and route requests to your controller functions. Version 2.2.0 supports OpenAPI 2.0 and 3.0.x. Requires openapi-enforcer (>=1.2.0) and express (>=4.0.0) as peer dependencies. Compared to alternatives like express-openapi-validator, this middleware enforces both request and response validation, and offers built-in mocking. Ships TypeScript types. Releases are stable with periodic updates.","status":"active","version":"2.2.0","language":"javascript","source_language":"en","source_url":"https://github.com/byu-oit/openapi-enforcer-middleware","tags":["javascript","openapi","swagger","express","middleware","enforcer","validate","parse","format","typescript"],"install":[{"cmd":"npm install openapi-enforcer-middleware","lang":"bash","label":"npm"},{"cmd":"yarn add openapi-enforcer-middleware","lang":"bash","label":"yarn"},{"cmd":"pnpm add openapi-enforcer-middleware","lang":"bash","label":"pnpm"}],"dependencies":[{"reason":"peer dependency - express middleware host","package":"express","optional":false},{"reason":"peer dependency - core validation engine","package":"openapi-enforcer","optional":false}],"imports":[{"note":"ESM-only since v2; use named import. CommonJS not supported.","wrong":"const OpenApiEnforcerMiddleware = require('openapi-enforcer-middleware')","symbol":"OpenApiEnforcerMiddleware","correct":"import { OpenApiEnforcerMiddleware } from 'openapi-enforcer-middleware'"},{"note":"Named export for request/response revisers.","wrong":"import { Reviser } from 'openapi-enforcer-middleware'","symbol":"OpenApiEnforcerMiddlewareReviser","correct":"import { OpenApiEnforcerMiddlewareReviser } from 'openapi-enforcer-middleware'"},{"note":"Default export is also available, but named import is preferred for TypeScript.","wrong":"import { EnforcerMiddleware } from 'openapi-enforcer-middleware'","symbol":"default","correct":"import EnforcerMiddleware from 'openapi-enforcer-middleware'"}],"quickstart":{"code":"import express from 'express';\nimport { OpenApiEnforcerMiddleware } from 'openapi-enforcer-middleware';\n\nconst app = express();\n\nconst enforcer = new OpenApiEnforcerMiddleware('./openapi.yaml', {\n  mock: true, // enables mocks in development\n});\n\n// Resolve the OpenAPI document\nawait enforcer.start();\n\n// Use the middleware\napp.use(enforcer.middleware());\n\n// Define a controller (function name must match operationId in OpenAPI)\napp.get('/users/:id', (req, res) => {\n  res.json({ id: req.params.id, name: 'John' });\n});\n\napp.listen(3000, () => console.log('Server running on port 3000'));","lang":"typescript","description":"Shows initializing OpenApiEnforcerMiddleware with an OpenAPI file, starting the enforcer, applying middleware, and defining a route that matches an operationId."},"warnings":[{"fix":"Use 'import' syntax or dynamic import().","message":"Importing with require() fails because package is ESM-only since v2","severity":"breaking","affected_versions":">=2.0.0"},{"fix":"Use the 'start()' method to resolve the document.","message":"The 'OpenApiEnforcerMiddleware' constructor no longer accepts a string path to the OpenAPI document directly; it must be a resolved object","severity":"deprecated","affected_versions":">=2.0.0"},{"fix":"Always await enforcer.start() before using enforcer.middleware().","message":"Middleware must be applied after calling enforcer.start()","severity":"gotcha","affected_versions":">=2.0.0"},{"fix":"Add all possible response schemas to your OpenAPI document or disable response validation with option validateResponse: false.","message":"Response validation may cause false positives if error headers or status codes are not present in the OpenAPI spec","severity":"gotcha","affected_versions":">=1.0.0"},{"fix":"Disable mock mode in production production: set mock: false.","message":"Mock mode returns generated data based on schema but might not be production-ready","severity":"gotcha","affected_versions":">=1.0.0"}],"env_vars":null,"last_verified":"2026-04-25T00:00:00.000Z","next_check":"2026-07-24T00:00:00.000Z","problems":[{"fix":"Use import { OpenApiEnforcerMiddleware } from 'openapi-enforcer-middleware' with 'type': 'module' in package.json or run with --experimental-modules.","cause":"Using CommonJS require() on ESM-only package","error":"TypeError: OpenApiEnforcerMiddleware is not a constructor"},{"fix":"Run npm install openapi-enforcer openapi-enforcer-middleware.","cause":"Missing peer dependency openapi-enforcer","error":"Error: Cannot find module 'openapi-enforcer'"}],"ecosystem":"npm","meta_description":null,"install_score":null,"install_tag":null,"quickstart_score":null,"quickstart_tag":null}