Formatter Validator Minifier Escape / Unescape JSON ↔ String JSON ↔ YAML JSON → CSV NDJSON / JSON Lines JSON → Types JSON ↔ XML JSON Diff JSON Patch Canonicalize (RFC 8785) Schema Validator Schema Generator JSONPath Tester JWT Decoder JSON Errors Schemas More Tools
JSONTools / Schema registry / Apollo Router
Schema registry

Apollo Router

Apollo Router: The runtime for graph-based API orchestration

apollo-router-*.json

Check your file against this schema

Opens the validator with this schema already loaded. Paste your apollo-router-*.json and it validates in your browser — nothing is uploaded.

Validate a apollo-router-*.json → View raw schema

Fields

Generated directly from the schema, following local $refs, to two levels of nesting.

Field Type Description
health_checkobjectConfiguration options pertaining to the health component.
health_check.listenallOfThe socket address and port to listen on Defaults to 127.0.0.1:8088
default: "127.0.0.1:8088"
health_check.enabledbooleanSet to false to disable the health check
default: true
health_check.pathstringOptionally set a custom healthcheck path Defaults to /health
default: "/health"
health_check.readinessallOfOptionally specify readiness configuration
default: {"interval": {"sampling": "5s", "unready": null}…
sandboxallOfSandbox configuration
default: {"enabled": false}
homepageallOfHomepage configuration
default: {"enabled": true, "graph_ref": null}
serverallOfConfiguration for the server
default: {"http": {"header_read_timeout": {"secs": 10, "nanos": 0}}}
supergraphallOfConfiguration for the supergraph
default: {"listen": "127.0.0.1:4000", "connection_shutdown_timeout"…
corsallOfCross origin request headers.
default: {"allow_any_origin": false, "allow_credentials": false…
tlsallOf
default: {"supergraph": null, "subgraph": {"all"…
apqallOfConfigures automatic persisted queries
default: {"enabled": true, "router": {"cache": {"in_memory"…
persisted_queriesallOfConfigures managed persisted queries
default: {"enabled": false, "log_unknown": false, "safelist"…
limitsobjectConfiguration for operation limits, parser limits, HTTP limits, etc.
limits.max_depthinteger | nullIf set, requests with operations deeper than this maximum are rejected with a HTTP 400 Bad Request response and GraphQL error with `"extensions": {"code": "MAX_DEPTH_LIMIT"}` Counts depth of an operation, looking at its selection sets,˛
default: null
limits.max_heightinteger | nullIf set, requests with operations higher than this maximum are rejected with a HTTP 400 Bad Request response and GraphQL error with `"extensions": {"code": "MAX_DEPTH_LIMIT"}` Height is based on simple merging of fields using the same name
default: null
limits.max_root_fieldsinteger | nullIf set, requests with operations with more root fields than this maximum are rejected with a HTTP 400 Bad Request response and GraphQL error with `"extensions": {"code": "MAX_ROOT_FIELDS_LIMIT"}` This limit counts only the top level fields
default: null
limits.max_aliasesinteger | nullIf set, requests with operations with more aliases than this maximum are rejected with a HTTP 400 Bad Request response and GraphQL error with `"extensions": {"code": "MAX_ALIASES_LIMIT"}`
default: null
limits.warn_onlybooleanIf set to true (which is the default is dev mode), requests that exceed a `max_*` limit are *not* rejected. Instead they are executed normally, and a warning is logged.
default: false
limits.parser_max_recursionintegerLimit recursion in the GraphQL parser to protect against stack overflow. default: 500
default: 500
limits.parser_max_tokensintegerLimit the number of tokens the GraphQL parser processes before aborting.
default: 15000
limits.http_max_request_bytesintegerLimit the size of incoming HTTP requests read from the network, to protect against running out of memory. Default: 2000000 (2 MB)
default: 2000000
limits.http1_max_request_headersinteger | nullLimit the maximum number of headers of incoming HTTP1 requests. Default is 100. If router receives more headers than the buffer size, it responds to the client with "431 Request Header Fields Too Large".
default: null
limits.http1_max_request_buf_sizestring | nullLimit the maximum buffer size for the HTTP1 connection. Default is ~400kib.
default: null
limits.http2_max_headers_list_bytesstring | nullFor HTTP2, limit the header list to a threshold of bytes. Default is 16kb. If router receives more headers than allowed size of the header list, it responds to the client with "431 Request Header Fields Too Large".
default: null
limits.introspection_max_depthbooleanLimit the depth of nested list fields in introspection queries to protect avoid generating huge responses. Returns a GraphQL error with `{ message: "Maximum introspection depth exceeded" }` when nested fields exceed the limit. Default: true
default: true
experimental_chaosallOfConfiguration for chaos testing, trying to reproduce bugs that require uncommon conditions. You probably don’t want this in production!
default: {"force_schema_reload": null, "force_config_reload": null}
pluginsallOfPlugin configuration
default: null
authenticationobjectAuthentication
authentication.routeranyOfRouter configuration
authentication.subgraphanyOfSubgraph configuration
authentication.connectoranyOfConnector configuration
authorizationobjectAuthorization plugin
authorization.require_authenticationbooleanReject unauthenticated requests
default: false
authorization.directivesallOf`@authenticated`, `@requiresScopes` and `@policy` directives
connectorsobjectConfiguration for Apollo Connectors. https://www.apollographql.com/docs/graphos/routing/configuration/yaml#connectors
connectors.subgraphsdeprecatedobjectA map of subgraph name to connectors config for that subgraph
default: {}
connectors.sourcesobjectMap of subgraph_name.connector_source_name to source configuration
default: {}
connectors.debug_extensionsbooleanEnables connector debugging information on response extensions if the feature is enabled
default: false
connectors.max_requests_per_operation_per_sourceinteger | nullThe maximum number of requests for a connector source
default: null
connectors.expose_sources_in_contextbooleanWhen enabled, adds an entry to the context for use in coprocessors ```json { "context": { "entries": { "apollo_connectors::sources_in_query_plan": [ { "subgraph_name": "subgraph", "source_name": "source" } ] } } } ```
default: false
connectors.preview_connect_v0_2deprecatedboolean | nullEnables Connect spec v0.2 during the preview.
default: null
connectors.preview_connect_v0_3deprecatedboolean | nullFeature gate for Connect spec v0.3. Set to `true` to enable the using the v0.3 spec during the preview phase.
default: null
connectors.preview_connect_v0_4boolean | nullFeature gate for Connect spec v0.3. Set to `true` to enable the using the v0.3 spec during the preview phase.
default: null
coprocessorobjectConfigures the externalization plugin
coprocessor.urlrequiredstringThe url you'd like to offload processing to (can be overridden per-stage)
coprocessor.clientanyOf
coprocessor.timeoutstringThe timeout for external requests
default: {"secs": 1, "nanos": 0}
coprocessor.response_validationbooleanResponse validation defaults to true
default: true
coprocessor.routerallOfThe router stage request/response configuration
coprocessor.supergraphallOfThe supergraph stage request/response configuration
coprocessor.executionallOfThe execution stage request/response configuration
coprocessor.subgraphallOfThe subgraph stage request/response configuration
csrfobjectCSRF protection configuration. See <https://owasp.org/www-community/attacks/csrf> for an explanation on CSRF attacks.
csrf.unsafe_disabledbooleanThe CSRF plugin is enabled by default. Setting `unsafe_disabled: true` *disables* CSRF protection.
default: false
csrf.required_headersarray<string>Override the headers to check for by setting custom_headers Note that if you set required_headers here, you may also want to have a look at your `CORS` configuration, and make sure you either: - did not set any `allow_headers` list (so it
default: ["x-apollo-operation-name", "apollo-require-preflight"]
demand_controlobjectDemand control configuration
demand_control.enabledrequiredbooleanEnable demand control
demand_control.moderequiredallOfThe mode that the demand control plugin should operate in. - Measure: The plugin will measure the cost of incoming requests but not reject them. - Enforce: The plugin will enforce the cost of incoming requests and reject them if the
demand_control.strategyrequiredallOfThe strategy used to reject requests.
enhanced_client_awarenessobjectThe enhanced client-awareness plugin has no configuration.
experimental_diagnosticsobjectConfiguration for the diagnostics plugin **Platform Requirements**: This plugin is supported on all platforms. Heap dump functionality is only available on Linux platforms due to jemalloc requirements. Other diagnostic features work across
experimental_diagnostics.enabledbooleanEnable the diagnostics plugin
default: false
experimental_diagnostics.listenallOfThe socket address and port to listen on Defaults to 127.0.0.1:8089 Do not expose this endpoint to the internet as it exposes sensitive information.
default: "127.0.0.1:8089"
experimental_diagnostics.output_directorystringDirectory path for memory dump files Defaults to "/tmp/router-diagnostics" on Unix, or temp directory on other platforms This directory will be created automatically if it doesn't exist. Note: Memory dumps are only generated on Linux
default: "/tmp/router-diagnostics"
fleet_detectorobjectThe fleet detector plugin has no configuration.
forbid_mutationsbooleanForbid mutations configuration
headersobjectConfiguration for header propagation
headers.allanyOfRules to apply to all subgraphs
headers.subgraphsobjectRules to specific subgraphs
headers.connectorallOfRules for connectors
include_subgraph_errorsobjectConfiguration for exposing errors that originate from subgraphs
include_subgraph_errors.allallOfGlobal configuration for error redaction. Applies to all subgraphs.
default: false
include_subgraph_errors.subgraphsobjectOverrides global configuration on a per-subgraph basis
default: {}
license_enforcementobjectThe license enforcement plugin has no configuration.
override_subgraph_urlanyOfSubgraph URL mappings
preview_entity_cacheobjectConfiguration for entity caching
preview_entity_cache.enabledbooleanEnable or disable the entity caching feature
default: false
preview_entity_cache.expose_keys_in_contextbooleanExpose cache keys in context
default: false
preview_entity_cache.subgraphrequiredallOfConfigure invalidation per subgraph
preview_entity_cache.invalidationanyOfGlobal invalidation configuration
preview_entity_cache.metricsallOfEntity caching evaluation metrics
preview_file_uploadsobjectConfiguration for File Uploads plugin
preview_file_uploads.enabledrequiredbooleanWhether the file upload plugin should be enabled (default: false)
preview_file_uploads.protocolsrequiredallOfSupported protocol configurations for file uploads
progressive_overrideobjectConfiguration for the progressive override plugin
rhaiobjectConfiguration for the Rhai Plugin
rhai.scriptsstring | nullThe directory where Rhai scripts can be found
rhai.mainstring | nullThe main entry point for Rhai script evaluation
subscriptionobjectSubscriptions configuration
subscription.enabledbooleanEnable subscription
default: true
subscription.modeallOfSelect a subscription mode (callback or passthrough)
default: {"callback": null, "passthrough": null}
subscription.deduplicationallOfConfigure subgraph subscription deduplication
default: {"enabled": true, "ignored_headers": []}
subscription.max_opened_subscriptionsinteger | nullThis is a limit to only have maximum X opened subscriptions at the same time. By default if it's not set there is no limit.
default: null
subscription.queue_capacityinteger | nullIt represent the capacity of the in memory queue to know how many events we can keep in a buffer
default: null
telemetryobjectTelemetry configuration
telemetry.apolloallOfApollo reporting configuration
telemetry.exportersallOfInstrumentation configuration
telemetry.instrumentationallOfInstrumentation configuration
traffic_shapingobjectConfiguration for the traffic shaping plugin
traffic_shaping.routeranyOfApplied at the router level
traffic_shaping.allanyOfApplied on all subgraphs
traffic_shaping.subgraphsobjectApplied on specific subgraphs
traffic_shaping.connectorallOfApplied on specific subgraphs
traffic_shaping.deduplicate_variablesboolean | nullDEPRECATED, now always enabled: Enable variable deduplication optimization when sending requests to subgraphs (https://github.com/apollographql/router/issues/87)
default: null
batchingallOfBatching configuration.
default: {"enabled": false, "mode": "batch_http_link", "subgraph"…
experimental_type_conditioned_fetchingbooleanType conditioned fetching configuration.
default: false

What we found in this schema

Specification sections for the keywords in this schema

Keyword Document Section
$refJSON Schema Core, draft 2020-12§8.2.3.1 — Direct References with "$ref"
additionalPropertiesJSON Schema Core, draft 2020-12§10.3.2.3 — "additionalProperties"
allOfJSON Schema Core, draft 2020-12§10.2.1.1 — "allOf"
anyOfJSON Schema Core, draft 2020-12§10.2.1.2 — "anyOf"
constJSON Schema Validation, draft 2020-12§6.1.3 — "const"
defaultJSON Schema Validation, draft 2020-12§9.2 — "default"
descriptionJSON Schema Validation, draft 2020-12§9.1 — "title" and "description"
enumJSON Schema Validation, draft 2020-12§6.1.2 — "enum"
formatJSON Schema Validation, draft 2020-12§7 — Vocabularies for Semantic Content With "format"
itemsJSON Schema Core, draft 2020-12§10.3.1.2 — "items"
maxItemsJSON Schema Validation, draft 2020-12§6.4.1 — "maxItems"
minItemsJSON Schema Validation, draft 2020-12§6.4.2 — "minItems"
minimumJSON Schema Validation, draft 2020-12§6.2.4 — "minimum"
oneOfJSON Schema Core, draft 2020-12§10.2.1.3 — "oneOf"
propertiesJSON Schema Core, draft 2020-12§10.3.2.1 — "properties"
requiredJSON Schema Validation, draft 2020-12§6.5.3 — "required"
typeJSON Schema Validation, draft 2020-12§6.1.1 — "type"
uniqueItemsJSON Schema Validation, draft 2020-12§6.4.3 — "uniqueItems"
writeOnlyJSON Schema Validation, draft 2020-12§9.4 — "readOnly" and "writeOnly"
format: "uri"RFC 3986 (STD 66)§3 — Syntax Components

Documents

Attribution

This schema comes from SchemaStore, distributed under the Apache License 2.0. Copyright 2015–present Mads Kristensen and contributors. View the original file. The field table and audit on this page are generated by JSONTools.tools; the schema itself is unmodified.

← All schemas