Setting the file. One moment.
Subchapter 8.27
validation/checklist.mdMarkdown4 KBView on GitHub
Run through this checklist after generating a router.yaml to catch common mistakes.
supergraph.introspection: falsesandbox.enabled: falsehomepage.enabled: falseinclude_subgraph_errors.all: false"*" and no allow_any_origin: true)authorization.require_authentication: true@authenticated/@requiresScopes/@policy): authorization.directives.enabled is absent or true, router is GraphOS-connected, and a claims source (JWT auth or coprocessor) is configured@policy evaluator wired (if @policy used): a Rhai script or coprocessor evaluates apollo::authorization::required_policies at the Supergraph stagepersisted_queries.safelist.enabled: true is set (NOT just apq)persisted_queries.safelist.enabled: true): apq.enabled: false (mutually exclusive)persisted_queries (not preview_persisted_queries)cors.origins: [...]cors.policies: [{ origins: [...] }]issuer: <string> (singular)issuers: [<string>] (plural array)max_age: 24h)max_age: 24h)limits (v1.17+ and v2), not preview_operation_limitspreview_connectors, current v2 GA = connectorshealth_check.enabled: true with a listen addressrouter:: traffic_shaping.router.global_rate_limit limits client requests; all: limits subgraph requests${env.VAR} in the config has a corresponding entry in deployment docs${env.JWKS_URL}, ${env.JWT_ISSUER}, etc.router.yaml is committed to git (safe to share — no secrets) and changes go through reviewrouter config validate router.yaml runs on every PR, pinned to the deployed Router versiontelemetry.exporters.logging.stdout.format: jsonsampler: 0.1 (10%) is a reasonable default; tune for your traffic volumecommon.service_name identifies this router instanceCache-Control: private (via @cacheControl(scope: PRIVATE) in Apollo Server, or by setting the header directly in other frameworks)private_id setprivate_id context key from auth tokenCache-Control: privateresponse_cache.debug is absent or false127.0.0.1, not 0.0.0.0${env.INVALIDATION_SHARED_KEY}${env.CACHE_REDIS_URL}, not hardcodedttl on subgraph.all or per-subgraph# Validate config syntax against the Router's schema
router config validate router.yamlIf migrating from v1 to v2, use the built-in upgrade tool:
router config upgrade router.yaml