{"adoption": {"forks": 188, "observed_at": "2026-08-28T04:08:10.870067+00:00", "stars": 3578}, "canonical_url": "https://ross.abutalabs.com/products/graphql-shield", "card": {"archived": false, "artifact_type": "library", "description": "🛡 A GraphQL tool to ease the creation of permission layer.", "domain": ["web-development", "backend", "apis", "security"], "enriched": true, "function": ["authorization", "middleware", "graphql", "security"], "health_score": 80, "homepage": "https://graphql-shield.com", "language": "TypeScript", "license": "MIT", "license_family": "permissive", "maturity": "stable", "member_repos": ["maticzav/graphql-shield"], "name": "maticzav/graphql-shield", "platform": [], "pushed_at": "2026-08-26T12:55:38+00:00", "repo": "maticzav/graphql-shield", "stars": 3578, "tags": ["graphql-middleware", "permissions", "rule-based", "apollo-server", "graphql-yoga", "permission-layer", "nodejs", "typescript"], "topics": ["graphql", "permissions", "server", "shield", "graphql-yoga", "apollo", "hacktoberfest"], "urls": [], "use_cases": ["add role-based permissions to a GraphQL API", "restrict access to specific GraphQL fields or types", "hide internal data from unauthorized GraphQL queries", "write reusable authorization rules for Apollo Server", "prevent unauthorized resolvers from executing in GraphQL Yoga", "cache permission checks to speed up GraphQL requests"], "what_it_is": "GraphQL Shield is a TypeScript library that lets you build a permission layer for GraphQL servers using an intuitive rule-based API. It works with any GraphQL server via GraphQL Middleware and includes a caching shield engine to keep request overhead low.", "when_to_avoid": ["your API is REST or otherwise not GraphQL-based", "you need authorization enforced at the database or service layer rather than the GraphQL layer", "your project is not on Node.js/TypeScript", "you need very complex, dynamic policies better suited to a policy engine like OPA or Casbin"], "when_to_choose": ["you need per-field or per-type authorization in a GraphQL schema", "you want a declarative, rule-based permission layer instead of ad-hoc resolver checks", "you use Apollo Server, GraphQL Yoga, or another middleware-compatible GraphQL server", "you want cached permission evaluation to minimize request overhead"]}, "data_as_of": "2026-08-30T08:39:29.467469+00:00", "members": [{"path": "/products/graphql-shield", "repo": "maticzav/graphql-shield", "role": "main", "score": 67}], "provenance": {"archived": {"kind": "observed", "observed_at": "2026-08-28T04:08:10.870067+00:00", "source": "github"}, "artifact_type": {"confidence": null, "enriched_at": "2026-08-29T18:34:01.288972+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "be8c7ef2edc86d57de0c2e10e5d5c81fb998dbe823a9e2b9bbdf0630cde1ce5d", "fetched_at": "2026-08-28T04:08:10.870067+00:00", "kind": "readme", "missing": false, "url": "https://github.com/maticzav/graphql-shield"}, {"content_hash": "ac6f5401d17838aee2745d59cc56ee36ad41901b66195fa64876f0b75dec4be5", "fetched_at": "2026-08-29T09:27:53.437743+00:00", "kind": "homepage", "missing": false, "url": "https://graphql-shield.com"}], "taxonomy_version": 1}, "description": {"kind": "observed", "observed_at": "2026-08-28T04:08:10.870067+00:00", "source": "github"}, "domain": {"confidence": null, "enriched_at": "2026-08-29T18:34:01.288972+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "be8c7ef2edc86d57de0c2e10e5d5c81fb998dbe823a9e2b9bbdf0630cde1ce5d", "fetched_at": "2026-08-28T04:08:10.870067+00:00", "kind": "readme", "missing": false, "url": "https://github.com/maticzav/graphql-shield"}, {"content_hash": "ac6f5401d17838aee2745d59cc56ee36ad41901b66195fa64876f0b75dec4be5", "fetched_at": "2026-08-29T09:27:53.437743+00:00", "kind": "homepage", "missing": false, "url": "https://graphql-shield.com"}], "taxonomy_version": 1}, "enriched": {"inputs": [], "kind": "computed", "method": "enrichment_status"}, "function": {"confidence": null, "enriched_at": "2026-08-29T18:34:01.288972+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "be8c7ef2edc86d57de0c2e10e5d5c81fb998dbe823a9e2b9bbdf0630cde1ce5d", "fetched_at": "2026-08-28T04:08:10.870067+00:00", "kind": "readme", "missing": false, "url": "https://github.com/maticzav/graphql-shield"}, {"content_hash": "ac6f5401d17838aee2745d59cc56ee36ad41901b66195fa64876f0b75dec4be5", "fetched_at": "2026-08-29T09:27:53.437743+00:00", "kind": "homepage", "missing": false, "url": "https://graphql-shield.com"}], "taxonomy_version": 1}, "health_score": {"inputs": ["days_since_push", "days_since_release", "archived"], "kind": "computed", "method": "health_v1"}, "homepage": {"kind": "observed", "observed_at": "2026-08-28T04:08:10.870067+00:00", "source": "github"}, "language": {"kind": "observed", "observed_at": "2026-08-28T04:08:10.870067+00:00", "source": "github"}, "license": {"kind": "observed", "observed_at": "2026-08-28T04:08:10.870067+00:00", "source": "github"}, "license_family": {"inputs": ["license"], "kind": "computed", "method": "license_family"}, "maturity": {"confidence": null, "enriched_at": "2026-08-29T18:34:01.288972+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "be8c7ef2edc86d57de0c2e10e5d5c81fb998dbe823a9e2b9bbdf0630cde1ce5d", "fetched_at": "2026-08-28T04:08:10.870067+00:00", "kind": "readme", "missing": false, "url": "https://github.com/maticzav/graphql-shield"}, {"content_hash": "ac6f5401d17838aee2745d59cc56ee36ad41901b66195fa64876f0b75dec4be5", "fetched_at": "2026-08-29T09:27:53.437743+00:00", "kind": "homepage", "missing": false, "url": "https://graphql-shield.com"}], "taxonomy_version": 1}, "member_repos": {"kind": "observed", "observed_at": "2026-08-28T04:08:10.870067+00:00", "source": "github"}, "name": {"kind": "observed", "observed_at": "2026-08-28T04:08:10.870067+00:00", "source": "github"}, "platform": {"confidence": null, "enriched_at": "2026-08-29T18:34:01.288972+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "be8c7ef2edc86d57de0c2e10e5d5c81fb998dbe823a9e2b9bbdf0630cde1ce5d", "fetched_at": "2026-08-28T04:08:10.870067+00:00", "kind": "readme", "missing": false, "url": "https://github.com/maticzav/graphql-shield"}, {"content_hash": "ac6f5401d17838aee2745d59cc56ee36ad41901b66195fa64876f0b75dec4be5", "fetched_at": "2026-08-29T09:27:53.437743+00:00", "kind": "homepage", "missing": false, "url": "https://graphql-shield.com"}], "taxonomy_version": 1}, "pushed_at": {"kind": "observed", "observed_at": "2026-08-28T04:08:10.870067+00:00", "source": "github"}, "repo": {"kind": "observed", "observed_at": "2026-08-28T04:08:10.870067+00:00", "source": "github"}, "stars": {"kind": "observed", "observed_at": "2026-08-28T04:08:10.870067+00:00", "source": "github"}, "tags": {"confidence": null, "enriched_at": "2026-08-29T18:34:01.288972+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "be8c7ef2edc86d57de0c2e10e5d5c81fb998dbe823a9e2b9bbdf0630cde1ce5d", "fetched_at": "2026-08-28T04:08:10.870067+00:00", "kind": "readme", "missing": false, "url": "https://github.com/maticzav/graphql-shield"}, {"content_hash": "ac6f5401d17838aee2745d59cc56ee36ad41901b66195fa64876f0b75dec4be5", "fetched_at": "2026-08-29T09:27:53.437743+00:00", "kind": "homepage", "missing": false, "url": "https://graphql-shield.com"}], "taxonomy_version": 1}, "topics": {"kind": "observed", "observed_at": "2026-08-28T04:08:10.870067+00:00", "source": "github"}, "urls": {"kind": "observed", "observed_at": "2026-08-28T04:08:10.870067+00:00", "source": "github"}, "use_cases": {"confidence": null, "enriched_at": "2026-08-29T18:34:01.288972+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "be8c7ef2edc86d57de0c2e10e5d5c81fb998dbe823a9e2b9bbdf0630cde1ce5d", "fetched_at": "2026-08-28T04:08:10.870067+00:00", "kind": "readme", "missing": false, "url": "https://github.com/maticzav/graphql-shield"}, {"content_hash": "ac6f5401d17838aee2745d59cc56ee36ad41901b66195fa64876f0b75dec4be5", "fetched_at": "2026-08-29T09:27:53.437743+00:00", "kind": "homepage", "missing": false, "url": "https://graphql-shield.com"}], "taxonomy_version": 1}, "what_it_is": {"confidence": null, "enriched_at": "2026-08-29T18:34:01.288972+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "be8c7ef2edc86d57de0c2e10e5d5c81fb998dbe823a9e2b9bbdf0630cde1ce5d", "fetched_at": "2026-08-28T04:08:10.870067+00:00", "kind": "readme", "missing": false, "url": "https://github.com/maticzav/graphql-shield"}, {"content_hash": "ac6f5401d17838aee2745d59cc56ee36ad41901b66195fa64876f0b75dec4be5", "fetched_at": "2026-08-29T09:27:53.437743+00:00", "kind": "homepage", "missing": false, "url": "https://graphql-shield.com"}], "taxonomy_version": 1}, "when_to_avoid": {"confidence": null, "enriched_at": "2026-08-29T18:34:01.288972+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "be8c7ef2edc86d57de0c2e10e5d5c81fb998dbe823a9e2b9bbdf0630cde1ce5d", "fetched_at": "2026-08-28T04:08:10.870067+00:00", "kind": "readme", "missing": false, "url": "https://github.com/maticzav/graphql-shield"}, {"content_hash": "ac6f5401d17838aee2745d59cc56ee36ad41901b66195fa64876f0b75dec4be5", "fetched_at": "2026-08-29T09:27:53.437743+00:00", "kind": "homepage", "missing": false, "url": "https://graphql-shield.com"}], "taxonomy_version": 1}, "when_to_choose": {"confidence": null, "enriched_at": "2026-08-29T18:34:01.288972+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "be8c7ef2edc86d57de0c2e10e5d5c81fb998dbe823a9e2b9bbdf0630cde1ce5d", "fetched_at": "2026-08-28T04:08:10.870067+00:00", "kind": "readme", "missing": false, "url": "https://github.com/maticzav/graphql-shield"}, {"content_hash": "ac6f5401d17838aee2745d59cc56ee36ad41901b66195fa64876f0b75dec4be5", "fetched_at": "2026-08-29T09:27:53.437743+00:00", "kind": "homepage", "missing": false, "url": "https://graphql-shield.com"}], "taxonomy_version": 1}}, "score": {"components": {"activity": 99, "longevity": 100, "rhythm": 8}, "computed_at": "2026-09-02T17:46:02.011165+00:00", "flags": [], "formula": "round(0.45*activity + 0.35*rhythm + 0.20*longevity); archived -> min(score, 10)", "inputs": {"age_days": 3125, "days_push": 7, "days_rel": null, "gap_med": null, "n_releases_24m": 0}, "score": 67, "version": 2}, "staleness": {"enrichment_outdated": false, "low_confidence": false, "scrape_days": 9, "stale_scrape": false}}