{"adoption": {"forks": 238, "observed_at": "2026-09-03T02:15:09.891070+00:00", "stars": 1005}, "canonical_url": "https://ross.abutalabs.com/products/express-openapi-validator", "card": {"archived": false, "artifact_type": "library", "description": "🦋 Auto-validates api requests, responses, and securities using ExpressJS and an OpenAPI 3.1.x or 3.0.x specification", "domain": ["web-development", "backend", "apis", "developer-tools"], "enriched": true, "function": ["middleware", "api-framework", "security", "serialization"], "health_score": 97, "homepage": null, "language": "TypeScript", "license": "MIT", "license_family": "permissive", "maturity": "active", "member_repos": ["cdimascio/express-openapi-validator"], "name": "cdimascio/express-openapi-validator", "platform": [], "pushed_at": "2026-09-03T00:36:13+00:00", "repo": "cdimascio/express-openapi-validator", "stars": 1005, "tags": ["openapi", "express", "request-validation", "response-validation", "rest-api", "openapi-3", "typescript", "nodejs", "web-server"], "topics": ["openapi3", "express-middleware", "nodejs", "request-validation", "expressjs", "middleware", "rest-api", "express", "openapi", "connect-middleware", "hacktoberfest", "openapi-validator"], "urls": [], "use_cases": ["validate express api requests against an openapi spec", "auto-validate api responses with openapi 3", "enforce security schemes on express routes", "validate file uploads in a rest api", "split openapi spec across multiple files with $ref", "add openapi validation to an existing express app"], "what_it_is": "An Express middleware library that automatically validates API requests, responses, and security against an OpenAPI 3.0.x or 3.1.x specification. It integrates unopinionatedly with new or existing Express apps and can optionally map OpenAPI endpoints to handler functions.", "when_to_avoid": ["your API is not built on Express or Connect-compatible middleware", "you need non-JSON response validation", "you use a framework with built-in OpenAPI validation"], "when_to_choose": ["you have an Express 4 or 5 REST API and want spec-driven validation without changing your project structure", "you want request, response, and security validation from a single OpenAPI 3.0/3.1 document", "you need custom formats, serializers, or security handler support"]}, "data_as_of": "2026-08-30T08:39:29.467469+00:00", "members": [{"path": "/products/express-openapi-validator", "repo": "cdimascio/express-openapi-validator", "role": "main", "score": 88}], "provenance": {"archived": {"kind": "observed", "observed_at": "2026-09-03T02:15:09.891070+00:00", "source": "github"}, "artifact_type": {"confidence": null, "enriched_at": "2026-08-30T07:13:08.979249+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "0f3b7781cca42ea65102bc0e282f4df70ea1c47e7922721526ea4a032009f688", "fetched_at": "2026-09-03T02:15:09.891070+00:00", "kind": "readme", "missing": false, "url": "https://github.com/cdimascio/express-openapi-validator"}], "taxonomy_version": 1}, "description": {"kind": "observed", "observed_at": "2026-09-03T02:15:09.891070+00:00", "source": "github"}, "domain": {"confidence": null, "enriched_at": "2026-08-30T07:13:08.979249+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "0f3b7781cca42ea65102bc0e282f4df70ea1c47e7922721526ea4a032009f688", "fetched_at": "2026-09-03T02:15:09.891070+00:00", "kind": "readme", "missing": false, "url": "https://github.com/cdimascio/express-openapi-validator"}], "taxonomy_version": 1}, "enriched": {"inputs": [], "kind": "computed", "method": "enrichment_status"}, "function": {"confidence": null, "enriched_at": "2026-08-30T07:13:08.979249+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "0f3b7781cca42ea65102bc0e282f4df70ea1c47e7922721526ea4a032009f688", "fetched_at": "2026-09-03T02:15:09.891070+00:00", "kind": "readme", "missing": false, "url": "https://github.com/cdimascio/express-openapi-validator"}], "taxonomy_version": 1}, "health_score": {"inputs": ["days_since_push", "days_since_release", "archived"], "kind": "computed", "method": "health_v1"}, "homepage": {"kind": "observed", "observed_at": "2026-09-03T02:15:09.891070+00:00", "source": "github"}, "language": {"kind": "observed", "observed_at": "2026-09-03T02:15:09.891070+00:00", "source": "github"}, "license": {"kind": "observed", "observed_at": "2026-09-03T02:15:09.891070+00:00", "source": "github"}, "license_family": {"inputs": ["license"], "kind": "computed", "method": "license_family"}, "maturity": {"confidence": null, "enriched_at": "2026-08-30T07:13:08.979249+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "0f3b7781cca42ea65102bc0e282f4df70ea1c47e7922721526ea4a032009f688", "fetched_at": "2026-09-03T02:15:09.891070+00:00", "kind": "readme", "missing": false, "url": "https://github.com/cdimascio/express-openapi-validator"}], "taxonomy_version": 1}, "member_repos": {"kind": "observed", "observed_at": "2026-09-03T02:15:09.891070+00:00", "source": "github"}, "name": {"kind": "observed", "observed_at": "2026-09-03T02:15:09.891070+00:00", "source": "github"}, "platform": {"confidence": null, "enriched_at": "2026-08-30T07:13:08.979249+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "0f3b7781cca42ea65102bc0e282f4df70ea1c47e7922721526ea4a032009f688", "fetched_at": "2026-09-03T02:15:09.891070+00:00", "kind": "readme", "missing": false, "url": "https://github.com/cdimascio/express-openapi-validator"}], "taxonomy_version": 1}, "pushed_at": {"kind": "observed", "observed_at": "2026-09-03T02:15:09.891070+00:00", "source": "github"}, "repo": {"kind": "observed", "observed_at": "2026-09-03T02:15:09.891070+00:00", "source": "github"}, "stars": {"kind": "observed", "observed_at": "2026-09-03T02:15:09.891070+00:00", "source": "github"}, "tags": {"confidence": null, "enriched_at": "2026-08-30T07:13:08.979249+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "0f3b7781cca42ea65102bc0e282f4df70ea1c47e7922721526ea4a032009f688", "fetched_at": "2026-09-03T02:15:09.891070+00:00", "kind": "readme", "missing": false, "url": "https://github.com/cdimascio/express-openapi-validator"}], "taxonomy_version": 1}, "topics": {"kind": "observed", "observed_at": "2026-09-03T02:15:09.891070+00:00", "source": "github"}, "urls": {"kind": "observed", "observed_at": "2026-09-03T02:15:09.891070+00:00", "source": "github"}, "use_cases": {"confidence": null, "enriched_at": "2026-08-30T07:13:08.979249+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "0f3b7781cca42ea65102bc0e282f4df70ea1c47e7922721526ea4a032009f688", "fetched_at": "2026-09-03T02:15:09.891070+00:00", "kind": "readme", "missing": false, "url": "https://github.com/cdimascio/express-openapi-validator"}], "taxonomy_version": 1}, "what_it_is": {"confidence": null, "enriched_at": "2026-08-30T07:13:08.979249+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "0f3b7781cca42ea65102bc0e282f4df70ea1c47e7922721526ea4a032009f688", "fetched_at": "2026-09-03T02:15:09.891070+00:00", "kind": "readme", "missing": false, "url": "https://github.com/cdimascio/express-openapi-validator"}], "taxonomy_version": 1}, "when_to_avoid": {"confidence": null, "enriched_at": "2026-08-30T07:13:08.979249+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "0f3b7781cca42ea65102bc0e282f4df70ea1c47e7922721526ea4a032009f688", "fetched_at": "2026-09-03T02:15:09.891070+00:00", "kind": "readme", "missing": false, "url": "https://github.com/cdimascio/express-openapi-validator"}], "taxonomy_version": 1}, "when_to_choose": {"confidence": null, "enriched_at": "2026-08-30T07:13:08.979249+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "0f3b7781cca42ea65102bc0e282f4df70ea1c47e7922721526ea4a032009f688", "fetched_at": "2026-09-03T02:15:09.891070+00:00", "kind": "readme", "missing": false, "url": "https://github.com/cdimascio/express-openapi-validator"}], "taxonomy_version": 1}}, "score": {"components": {"activity": 100, "longevity": 100, "rhythm": 66}, "computed_at": "2026-09-03T02:20:16.233290+00:00", "flags": [], "formula": "round(0.45*activity + 0.35*rhythm + 0.20*longevity); archived -> min(score, 10)", "inputs": {"age_days": 2724, "days_push": 0, "days_rel": 226, "gap_med": 6, "n_releases_24m": 24}, "score": 88, "version": 2}, "staleness": {"enrichment_outdated": false, "low_confidence": false, "scrape_days": 3, "stale_scrape": false}}