From 89180186421bab16eedf0951dee1324993c642be Mon Sep 17 00:00:00 2001 From: Lenz Weber-Tronic Date: Fri, 20 Sep 2024 17:37:41 +0200 Subject: [PATCH 1/4] add json schemas for `apollo-router.yaml` and `supergraph.yaml` --- package.json | 9 + schemas/router_config_schema.json | 8342 +++++++++++++++++++++++++ schemas/supergraph_config_schema.json | 119 + 3 files changed, 8470 insertions(+) create mode 100644 schemas/router_config_schema.json create mode 100644 schemas/supergraph_config_schema.json diff --git a/package.json b/package.json index 75968f1e..ab7370c7 100644 --- a/package.json +++ b/package.json @@ -257,6 +257,15 @@ { "fileMatch": "apollo.config.yaml", "url": "./schemas/apollo.config.schema.json" + }, + { + "fileMatch": "apollo-router.yaml", + "_url": "https://github.com/apollographql/router-template/raw/main/.apollo/router_config_schema.json", + "url": "./schemas/router_config_schema.json" + }, + { + "fileMatch": "supergraph.yaml", + "url": "./schemas/supergraph_config_schema.json" } ], "commands": [ diff --git a/schemas/router_config_schema.json b/schemas/router_config_schema.json new file mode 100644 index 00000000..c3691d61 --- /dev/null +++ b/schemas/router_config_schema.json @@ -0,0 +1,8342 @@ +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "Configuration", + "description": "The configuration for the router.\n\nCan be created through `serde::Deserialize` from various formats, or inline in Rust code with `serde_json::json!` and `serde_json::from_value`.", + "type": "object", + "properties": { + "apq": { + "description": "#/definitions/Apq", + "$ref": "#/definitions/Apq" + }, + "authentication": { + "description": "#/definitions/Conf", + "$ref": "#/definitions/Conf" + }, + "authorization": { + "description": "#/definitions/Conf2", + "$ref": "#/definitions/Conf2" + }, + "batching": { + "description": "#/definitions/Batching", + "$ref": "#/definitions/Batching" + }, + "coprocessor": { + "description": "#/definitions/Conf3", + "$ref": "#/definitions/Conf3" + }, + "cors": { + "description": "#/definitions/Cors", + "$ref": "#/definitions/Cors" + }, + "csrf": { + "description": "#/definitions/CSRFConfig", + "$ref": "#/definitions/CSRFConfig" + }, + "demand_control": { + "description": "#/definitions/DemandControlConfig", + "$ref": "#/definitions/DemandControlConfig" + }, + "experimental_chaos": { + "description": "#/definitions/Chaos", + "$ref": "#/definitions/Chaos" + }, + "experimental_introspection_mode": { + "description": "#/definitions/IntrospectionMode", + "$ref": "#/definitions/IntrospectionMode" + }, + "experimental_query_planner_mode": { + "description": "#/definitions/QueryPlannerMode", + "$ref": "#/definitions/QueryPlannerMode" + }, + "experimental_type_conditioned_fetching": { + "description": "Type conditioned fetching configuration.", + "default": false, + "type": "boolean" + }, + "forbid_mutations": { + "description": "#/definitions/ForbidMutationsConfig", + "$ref": "#/definitions/ForbidMutationsConfig" + }, + "headers": { + "description": "#/definitions/Config5", + "$ref": "#/definitions/Config5" + }, + "health_check": { + "description": "#/definitions/HealthCheck", + "$ref": "#/definitions/HealthCheck" + }, + "homepage": { + "description": "#/definitions/Homepage", + "$ref": "#/definitions/Homepage" + }, + "include_subgraph_errors": { + "description": "#/definitions/Config6", + "$ref": "#/definitions/Config6" + }, + "limits": { + "description": "#/definitions/Config", + "$ref": "#/definitions/Config" + }, + "override_subgraph_url": { + "description": "#/definitions/Conf4", + "$ref": "#/definitions/Conf4" + }, + "persisted_queries": { + "description": "#/definitions/PersistedQueries", + "$ref": "#/definitions/PersistedQueries" + }, + "plugins": { + "description": "#/definitions/Plugins", + "$ref": "#/definitions/Plugins" + }, + "preview_entity_cache": { + "description": "#/definitions/Config7", + "$ref": "#/definitions/Config7" + }, + "preview_file_uploads": { + "description": "#/definitions/FileUploadsConfig", + "$ref": "#/definitions/FileUploadsConfig" + }, + "progressive_override": { + "description": "#/definitions/Config8", + "$ref": "#/definitions/Config8" + }, + "rhai": { + "description": "#/definitions/Conf5", + "$ref": "#/definitions/Conf5" + }, + "sandbox": { + "description": "#/definitions/Sandbox", + "$ref": "#/definitions/Sandbox" + }, + "subscription": { + "description": "#/definitions/SubscriptionConfig", + "$ref": "#/definitions/SubscriptionConfig" + }, + "supergraph": { + "description": "#/definitions/Supergraph", + "$ref": "#/definitions/Supergraph" + }, + "telemetry": { + "description": "#/definitions/Conf6", + "$ref": "#/definitions/Conf6" + }, + "tls": { + "description": "#/definitions/Tls", + "$ref": "#/definitions/Tls" + }, + "traffic_shaping": { + "description": "#/definitions/Config15", + "$ref": "#/definitions/Config15" + } + }, + "additionalProperties": false, + "definitions": { + "AWSSigV4Config": { + "description": "Configure AWS sigv4 auth.", + "oneOf": [ + { + "type": "object", + "required": [ + "hardcoded" + ], + "properties": { + "hardcoded": { + "description": "#/definitions/AWSSigV4HardcodedConfig", + "$ref": "#/definitions/AWSSigV4HardcodedConfig" + } + }, + "additionalProperties": false + }, + { + "type": "object", + "required": [ + "default_chain" + ], + "properties": { + "default_chain": { + "description": "#/definitions/DefaultChainConfig", + "$ref": "#/definitions/DefaultChainConfig" + } + }, + "additionalProperties": false + } + ] + }, + "AWSSigV4HardcodedConfig": { + "description": "Hardcoded Config using access_key and secret. Prefer using DefaultChain instead.", + "type": "object", + "required": [ + "access_key_id", + "region", + "secret_access_key", + "service_name" + ], + "properties": { + "access_key_id": { + "description": "The ID for this access key.", + "type": "string" + }, + "assume_role": { + "description": "#/definitions/AssumeRoleProvider", + "$ref": "#/definitions/AssumeRoleProvider", + "nullable": true + }, + "region": { + "description": "The AWS region this chain applies to.", + "type": "string" + }, + "secret_access_key": { + "description": "The secret key used to sign requests.", + "type": "string" + }, + "service_name": { + "description": "The service you're trying to access, eg: \"s3\", \"vpc-lattice-svcs\", etc.", + "type": "string" + } + }, + "additionalProperties": false + }, + "ActiveRequestsAttributes": { + "type": "object", + "properties": { + "http.request.method": { + "description": "The HTTP request method", + "default": false, + "type": "boolean" + }, + "server.address": { + "description": "The server address", + "default": false, + "type": "boolean" + }, + "server.port": { + "description": "The server port", + "default": false, + "type": "boolean" + }, + "url.scheme": { + "description": "The URL scheme", + "default": false, + "type": "boolean" + } + }, + "additionalProperties": false + }, + "AgentConfig": { + "type": "object", + "properties": { + "endpoint": { + "description": "#/definitions/SocketEndpoint", + "$ref": "#/definitions/SocketEndpoint" + } + }, + "additionalProperties": false + }, + "All": { + "type": "string", + "enum": [ + "all" + ] + }, + "ApolloMetricsReferenceMode": { + "description": "Apollo usage report reference generation modes.", + "oneOf": [ + { + "description": "Use the extended mode to report input object fields and enum value references as well as object fields.", + "type": "string", + "enum": [ + "extended" + ] + }, + { + "description": "Use the standard mode that only reports referenced object fields.", + "type": "string", + "enum": [ + "standard" + ] + } + ] + }, + "ApolloSignatureNormalizationAlgorithm": { + "description": "Apollo usage report signature normalization algorithm", + "oneOf": [ + { + "description": "Use the algorithm that matches the JavaScript-based implementation.", + "type": "string", + "enum": [ + "legacy" + ] + }, + { + "description": "Use a new algorithm that includes input object forms, normalized aliases and variable names, and removes some edge cases from the JS implementation that affected normalization.", + "type": "string", + "enum": [ + "enhanced" + ] + } + ] + }, + "Apq": { + "description": "Automatic Persisted Queries (APQ) configuration", + "type": "object", + "properties": { + "enabled": { + "description": "Activates Automatic Persisted Queries (enabled by default)", + "default": true, + "type": "boolean" + }, + "router": { + "description": "#/definitions/Router", + "$ref": "#/definitions/Router" + }, + "subgraph": { + "description": "#/definitions/SubgraphConfiguration_for_SubgraphApq", + "$ref": "#/definitions/SubgraphConfiguration_for_SubgraphApq" + } + }, + "additionalProperties": false + }, + "AssumeRoleProvider": { + "description": "Specify assumed role configuration.", + "type": "object", + "required": [ + "role_arn", + "session_name" + ], + "properties": { + "external_id": { + "description": "Unique identifier that might be required when you assume a role in another account.", + "type": "string", + "nullable": true + }, + "role_arn": { + "description": "Amazon Resource Name (ARN) for the role assumed when making requests", + "type": "string" + }, + "session_name": { + "description": "Uniquely identify a session when the same role is assumed by different principals or for different reasons.", + "type": "string" + } + }, + "additionalProperties": false + }, + "AttributeArray": { + "anyOf": [ + { + "description": "Array of bools", + "type": "array", + "items": { + "type": "boolean" + } + }, + { + "description": "Array of integers", + "type": "array", + "items": { + "type": "integer", + "format": "int64" + } + }, + { + "description": "Array of floats", + "type": "array", + "items": { + "type": "number", + "format": "double" + } + }, + { + "description": "Array of strings", + "type": "array", + "items": { + "type": "string" + } + } + ] + }, + "AttributeValue": { + "anyOf": [ + { + "description": "bool values", + "type": "boolean" + }, + { + "description": "i64 values", + "type": "integer", + "format": "int64" + }, + { + "description": "f64 values", + "type": "number", + "format": "double" + }, + { + "description": "String values", + "type": "string" + }, + { + "description": "#/definitions/AttributeArray", + "$ref": "#/definitions/AttributeArray" + } + ] + }, + "AttributesForwardConf": { + "description": "Configuration to add custom attributes/labels on metrics to subgraphs", + "type": "object", + "properties": { + "context": { + "description": "Configuration to forward values from the context to custom attributes/labels in metrics", + "type": "array", + "items": { + "description": "#/definitions/ContextForward", + "$ref": "#/definitions/ContextForward" + } + }, + "errors": { + "description": "#/definitions/ErrorsForward", + "$ref": "#/definitions/ErrorsForward" + }, + "request": { + "description": "#/definitions/Forward", + "$ref": "#/definitions/Forward" + }, + "response": { + "description": "#/definitions/Forward", + "$ref": "#/definitions/Forward" + }, + "static": { + "description": "Configuration to insert custom attributes/labels in metrics", + "type": "array", + "items": { + "description": "#/definitions/Insert2", + "$ref": "#/definitions/Insert2" + } + } + }, + "additionalProperties": false + }, + "AuthConfig": { + "oneOf": [ + { + "type": "object", + "required": [ + "aws_sig_v4" + ], + "properties": { + "aws_sig_v4": { + "description": "#/definitions/AWSSigV4Config", + "$ref": "#/definitions/AWSSigV4Config" + } + }, + "additionalProperties": false + } + ] + }, + "Auto": { + "type": "string", + "enum": [ + "auto" + ] + }, + "AvailableParallelism": { + "anyOf": [ + { + "description": "#/definitions/Auto", + "$ref": "#/definitions/Auto" + }, + { + "type": "integer", + "format": "uint", + "minimum": 1.0 + } + ] + }, + "BatchProcessorConfig": { + "description": "Batch processor configuration", + "type": "object", + "properties": { + "max_concurrent_exports": { + "description": "Maximum number of concurrent exports\n\nLimits the number of spawned tasks for exports and thus memory consumed by an exporter. A value of 1 will cause exports to be performed synchronously on the BatchSpanProcessor task. The default is 1.", + "default": 1, + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "max_export_batch_size": { + "description": "The maximum number of spans to process in a single batch. If there are more than one batch worth of spans then it processes multiple batches of spans one batch after the other without any delay. The default value is 512.", + "default": 512, + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "max_export_timeout": { + "description": "The maximum duration to export a batch of data. The default value is 30 seconds.", + "default": { + "secs": 30, + "nanos": 0 + }, + "type": "string" + }, + "max_queue_size": { + "description": "The maximum queue size to buffer spans for delayed processing. If the queue gets full it drops the spans. The default value of is 2048.", + "default": 2048, + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "scheduled_delay": { + "description": "The delay interval in milliseconds between two consecutive processing of batches. The default value is 5 seconds.", + "default": { + "secs": 5, + "nanos": 0 + }, + "type": "string" + } + } + }, + "Batching": { + "description": "Configuration for Batching", + "type": "object", + "required": [ + "mode" + ], + "properties": { + "enabled": { + "description": "Activates Batching (disabled by default)", + "default": false, + "type": "boolean" + }, + "mode": { + "description": "#/definitions/BatchingMode", + "$ref": "#/definitions/BatchingMode" + }, + "subgraph": { + "description": "#/definitions/SubgraphConfiguration_for_CommonBatchingConfig", + "$ref": "#/definitions/SubgraphConfiguration_for_CommonBatchingConfig", + "nullable": true + } + }, + "additionalProperties": false + }, + "BatchingMode": { + "oneOf": [ + { + "description": "batch_http_link", + "type": "string", + "enum": [ + "batch_http_link" + ] + } + ] + }, + "BodyForward": { + "description": "Configuration to forward body values in metric attributes/labels", + "type": "object", + "required": [ + "name", + "path" + ], + "properties": { + "default": { + "description": "#/definitions/AttributeValue", + "$ref": "#/definitions/AttributeValue", + "nullable": true + }, + "name": { + "description": "The name of the attribute", + "type": "string" + }, + "path": { + "description": "The path in the body", + "type": "string" + } + }, + "additionalProperties": false + }, + "CSRFConfig": { + "description": "CSRF Configuration.", + "type": "object", + "properties": { + "required_headers": { + "description": "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 defaults to `mirror_request`) - added your required headers to the allow_headers list, as shown in the `examples/cors-and-csrf/custom-headers.router.yaml` files.", + "default": [ + "x-apollo-operation-name", + "apollo-require-preflight" + ], + "type": "array", + "items": { + "type": "string" + } + }, + "unsafe_disabled": { + "description": "The CSRF plugin is enabled by default; set unsafe_disabled = true to disable the plugin behavior Note that setting this to true is deemed unsafe. See .", + "default": false, + "type": "boolean" + } + }, + "additionalProperties": false + }, + "Cache": { + "description": "Cache configuration", + "type": "object", + "properties": { + "in_memory": { + "description": "#/definitions/InMemoryCache", + "$ref": "#/definitions/InMemoryCache" + }, + "redis": { + "description": "#/definitions/RedisCache", + "$ref": "#/definitions/RedisCache", + "nullable": true + } + }, + "additionalProperties": false + }, + "CacheAttributes": { + "type": "object", + "properties": { + "entity.type": { + "description": "Entity type", + "default": null, + "type": "boolean", + "nullable": true + } + }, + "additionalProperties": false + }, + "CacheInstrumentsConfig": { + "type": "object", + "properties": { + "apollo.router.operations.entity.cache": { + "description": "#/definitions/DefaultedStandardInstrument_for_extendable_attribute_apollo_router::plugins::telemetry::config_new::cache::attributes::CacheAttributes_apollo_router::plugins::telemetry::config_new::selectors::SubgraphSelector", + "$ref": "#/definitions/DefaultedStandardInstrument_for_extendable_attribute_apollo_router::plugins::telemetry::config_new::cache::attributes::CacheAttributes_apollo_router::plugins::telemetry::config_new::selectors::SubgraphSelector" + } + }, + "additionalProperties": false + }, + "CacheKind": { + "type": "string", + "enum": [ + "hit", + "miss" + ] + }, + "CallbackMode": { + "description": "Using a callback url", + "type": "object", + "required": [ + "public_url" + ], + "properties": { + "heartbeat_interval": { + "description": "#/definitions/HeartbeatInterval", + "$ref": "#/definitions/HeartbeatInterval" + }, + "listen": { + "description": "#/definitions/ListenAddr", + "$ref": "#/definitions/ListenAddr", + "nullable": true + }, + "path": { + "description": "Specify on which path you want to listen for callbacks (default: /callback)", + "writeOnly": true, + "type": "string", + "nullable": true + }, + "public_url": { + "description": "URL used to access this router instance, including the path configured on the Router", + "type": "string" + }, + "subgraphs": { + "description": "Specify on which subgraph we enable the callback mode for subscription If empty it applies to all subgraphs (passthrough mode takes precedence)", + "default": [], + "type": "array", + "items": { + "type": "string" + }, + "uniqueItems": true + } + }, + "additionalProperties": false + }, + "Chaos": { + "description": "Configuration for chaos testing, trying to reproduce bugs that require uncommon conditions. You probably don’t want this in production!", + "type": "object", + "properties": { + "force_reload": { + "description": "Force a hot reload of the Router (as if the schema or configuration had changed) at a regular time interval.", + "default": null, + "type": "string", + "nullable": true + } + }, + "additionalProperties": false + }, + "Client": { + "type": "object", + "properties": { + "experimental_http2": { + "description": "#/definitions/Http2Config", + "$ref": "#/definitions/Http2Config", + "nullable": true + } + }, + "additionalProperties": false + }, + "CollectorConfig": { + "type": "object", + "properties": { + "endpoint": { + "description": "#/definitions/UriEndpoint", + "$ref": "#/definitions/UriEndpoint" + }, + "password": { + "description": "The optional password", + "default": null, + "type": "string", + "nullable": true + }, + "username": { + "description": "The optional username", + "default": null, + "type": "string", + "nullable": true + } + }, + "additionalProperties": false + }, + "CommonBatchingConfig": { + "description": "Common options for configuring subgraph batching", + "type": "object", + "required": [ + "enabled" + ], + "properties": { + "enabled": { + "description": "Whether this batching config should be enabled", + "type": "boolean" + } + } + }, + "Compression": { + "oneOf": [ + { + "description": "gzip", + "type": "string", + "enum": [ + "gzip" + ] + }, + { + "description": "deflate", + "type": "string", + "enum": [ + "deflate" + ] + }, + { + "description": "brotli", + "type": "string", + "enum": [ + "br" + ] + }, + { + "description": "identity", + "type": "string", + "enum": [ + "identity" + ] + } + ] + }, + "Condition_for_GraphQLSelector": { + "oneOf": [ + { + "description": "A condition to check a selection against a value.", + "type": "object", + "required": [ + "eq" + ], + "properties": { + "eq": { + "type": "array", + "items": { + "description": "#/definitions/SelectorOrValue_for_GraphQLSelector", + "$ref": "#/definitions/SelectorOrValue_for_GraphQLSelector" + }, + "maxItems": 2, + "minItems": 2 + } + }, + "additionalProperties": false + }, + { + "description": "The first selection must be greater than the second selection.", + "type": "object", + "required": [ + "gt" + ], + "properties": { + "gt": { + "type": "array", + "items": { + "description": "#/definitions/SelectorOrValue_for_GraphQLSelector", + "$ref": "#/definitions/SelectorOrValue_for_GraphQLSelector" + }, + "maxItems": 2, + "minItems": 2 + } + }, + "additionalProperties": false + }, + { + "description": "The first selection must be less than the second selection.", + "type": "object", + "required": [ + "lt" + ], + "properties": { + "lt": { + "type": "array", + "items": { + "description": "#/definitions/SelectorOrValue_for_GraphQLSelector", + "$ref": "#/definitions/SelectorOrValue_for_GraphQLSelector" + }, + "maxItems": 2, + "minItems": 2 + } + }, + "additionalProperties": false + }, + { + "description": "A condition to check a selection against a selector.", + "type": "object", + "required": [ + "exists" + ], + "properties": { + "exists": { + "description": "#/definitions/GraphQLSelector", + "$ref": "#/definitions/GraphQLSelector" + } + }, + "additionalProperties": false + }, + { + "description": "All sub-conditions must be true.", + "type": "object", + "required": [ + "all" + ], + "properties": { + "all": { + "type": "array", + "items": { + "description": "#/definitions/Condition_for_GraphQLSelector", + "$ref": "#/definitions/Condition_for_GraphQLSelector" + } + } + }, + "additionalProperties": false + }, + { + "description": "At least one sub-conditions must be true.", + "type": "object", + "required": [ + "any" + ], + "properties": { + "any": { + "type": "array", + "items": { + "description": "#/definitions/Condition_for_GraphQLSelector", + "$ref": "#/definitions/Condition_for_GraphQLSelector" + } + } + }, + "additionalProperties": false + }, + { + "description": "The sub-condition must not be true", + "type": "object", + "required": [ + "not" + ], + "properties": { + "not": { + "description": "#/definitions/Condition_for_GraphQLSelector", + "$ref": "#/definitions/Condition_for_GraphQLSelector" + } + }, + "additionalProperties": false + }, + { + "description": "Static true condition", + "type": "string", + "enum": [ + "true" + ] + }, + { + "description": "Static false condition", + "type": "string", + "enum": [ + "false" + ] + } + ] + }, + "Condition_for_RouterSelector": { + "oneOf": [ + { + "description": "A condition to check a selection against a value.", + "type": "object", + "required": [ + "eq" + ], + "properties": { + "eq": { + "type": "array", + "items": { + "description": "#/definitions/SelectorOrValue_for_RouterSelector", + "$ref": "#/definitions/SelectorOrValue_for_RouterSelector" + }, + "maxItems": 2, + "minItems": 2 + } + }, + "additionalProperties": false + }, + { + "description": "The first selection must be greater than the second selection.", + "type": "object", + "required": [ + "gt" + ], + "properties": { + "gt": { + "type": "array", + "items": { + "description": "#/definitions/SelectorOrValue_for_RouterSelector", + "$ref": "#/definitions/SelectorOrValue_for_RouterSelector" + }, + "maxItems": 2, + "minItems": 2 + } + }, + "additionalProperties": false + }, + { + "description": "The first selection must be less than the second selection.", + "type": "object", + "required": [ + "lt" + ], + "properties": { + "lt": { + "type": "array", + "items": { + "description": "#/definitions/SelectorOrValue_for_RouterSelector", + "$ref": "#/definitions/SelectorOrValue_for_RouterSelector" + }, + "maxItems": 2, + "minItems": 2 + } + }, + "additionalProperties": false + }, + { + "description": "A condition to check a selection against a selector.", + "type": "object", + "required": [ + "exists" + ], + "properties": { + "exists": { + "description": "#/definitions/RouterSelector", + "$ref": "#/definitions/RouterSelector" + } + }, + "additionalProperties": false + }, + { + "description": "All sub-conditions must be true.", + "type": "object", + "required": [ + "all" + ], + "properties": { + "all": { + "type": "array", + "items": { + "description": "#/definitions/Condition_for_RouterSelector", + "$ref": "#/definitions/Condition_for_RouterSelector" + } + } + }, + "additionalProperties": false + }, + { + "description": "At least one sub-conditions must be true.", + "type": "object", + "required": [ + "any" + ], + "properties": { + "any": { + "type": "array", + "items": { + "description": "#/definitions/Condition_for_RouterSelector", + "$ref": "#/definitions/Condition_for_RouterSelector" + } + } + }, + "additionalProperties": false + }, + { + "description": "The sub-condition must not be true", + "type": "object", + "required": [ + "not" + ], + "properties": { + "not": { + "description": "#/definitions/Condition_for_RouterSelector", + "$ref": "#/definitions/Condition_for_RouterSelector" + } + }, + "additionalProperties": false + }, + { + "description": "Static true condition", + "type": "string", + "enum": [ + "true" + ] + }, + { + "description": "Static false condition", + "type": "string", + "enum": [ + "false" + ] + } + ] + }, + "Condition_for_SubgraphSelector": { + "oneOf": [ + { + "description": "A condition to check a selection against a value.", + "type": "object", + "required": [ + "eq" + ], + "properties": { + "eq": { + "type": "array", + "items": { + "description": "#/definitions/SelectorOrValue_for_SubgraphSelector", + "$ref": "#/definitions/SelectorOrValue_for_SubgraphSelector" + }, + "maxItems": 2, + "minItems": 2 + } + }, + "additionalProperties": false + }, + { + "description": "The first selection must be greater than the second selection.", + "type": "object", + "required": [ + "gt" + ], + "properties": { + "gt": { + "type": "array", + "items": { + "description": "#/definitions/SelectorOrValue_for_SubgraphSelector", + "$ref": "#/definitions/SelectorOrValue_for_SubgraphSelector" + }, + "maxItems": 2, + "minItems": 2 + } + }, + "additionalProperties": false + }, + { + "description": "The first selection must be less than the second selection.", + "type": "object", + "required": [ + "lt" + ], + "properties": { + "lt": { + "type": "array", + "items": { + "description": "#/definitions/SelectorOrValue_for_SubgraphSelector", + "$ref": "#/definitions/SelectorOrValue_for_SubgraphSelector" + }, + "maxItems": 2, + "minItems": 2 + } + }, + "additionalProperties": false + }, + { + "description": "A condition to check a selection against a selector.", + "type": "object", + "required": [ + "exists" + ], + "properties": { + "exists": { + "description": "#/definitions/SubgraphSelector", + "$ref": "#/definitions/SubgraphSelector" + } + }, + "additionalProperties": false + }, + { + "description": "All sub-conditions must be true.", + "type": "object", + "required": [ + "all" + ], + "properties": { + "all": { + "type": "array", + "items": { + "description": "#/definitions/Condition_for_SubgraphSelector", + "$ref": "#/definitions/Condition_for_SubgraphSelector" + } + } + }, + "additionalProperties": false + }, + { + "description": "At least one sub-conditions must be true.", + "type": "object", + "required": [ + "any" + ], + "properties": { + "any": { + "type": "array", + "items": { + "description": "#/definitions/Condition_for_SubgraphSelector", + "$ref": "#/definitions/Condition_for_SubgraphSelector" + } + } + }, + "additionalProperties": false + }, + { + "description": "The sub-condition must not be true", + "type": "object", + "required": [ + "not" + ], + "properties": { + "not": { + "description": "#/definitions/Condition_for_SubgraphSelector", + "$ref": "#/definitions/Condition_for_SubgraphSelector" + } + }, + "additionalProperties": false + }, + { + "description": "Static true condition", + "type": "string", + "enum": [ + "true" + ] + }, + { + "description": "Static false condition", + "type": "string", + "enum": [ + "false" + ] + } + ] + }, + "Condition_for_SupergraphSelector": { + "oneOf": [ + { + "description": "A condition to check a selection against a value.", + "type": "object", + "required": [ + "eq" + ], + "properties": { + "eq": { + "type": "array", + "items": { + "description": "#/definitions/SelectorOrValue_for_SupergraphSelector", + "$ref": "#/definitions/SelectorOrValue_for_SupergraphSelector" + }, + "maxItems": 2, + "minItems": 2 + } + }, + "additionalProperties": false + }, + { + "description": "The first selection must be greater than the second selection.", + "type": "object", + "required": [ + "gt" + ], + "properties": { + "gt": { + "type": "array", + "items": { + "description": "#/definitions/SelectorOrValue_for_SupergraphSelector", + "$ref": "#/definitions/SelectorOrValue_for_SupergraphSelector" + }, + "maxItems": 2, + "minItems": 2 + } + }, + "additionalProperties": false + }, + { + "description": "The first selection must be less than the second selection.", + "type": "object", + "required": [ + "lt" + ], + "properties": { + "lt": { + "type": "array", + "items": { + "description": "#/definitions/SelectorOrValue_for_SupergraphSelector", + "$ref": "#/definitions/SelectorOrValue_for_SupergraphSelector" + }, + "maxItems": 2, + "minItems": 2 + } + }, + "additionalProperties": false + }, + { + "description": "A condition to check a selection against a selector.", + "type": "object", + "required": [ + "exists" + ], + "properties": { + "exists": { + "description": "#/definitions/SupergraphSelector", + "$ref": "#/definitions/SupergraphSelector" + } + }, + "additionalProperties": false + }, + { + "description": "All sub-conditions must be true.", + "type": "object", + "required": [ + "all" + ], + "properties": { + "all": { + "type": "array", + "items": { + "description": "#/definitions/Condition_for_SupergraphSelector", + "$ref": "#/definitions/Condition_for_SupergraphSelector" + } + } + }, + "additionalProperties": false + }, + { + "description": "At least one sub-conditions must be true.", + "type": "object", + "required": [ + "any" + ], + "properties": { + "any": { + "type": "array", + "items": { + "description": "#/definitions/Condition_for_SupergraphSelector", + "$ref": "#/definitions/Condition_for_SupergraphSelector" + } + } + }, + "additionalProperties": false + }, + { + "description": "The sub-condition must not be true", + "type": "object", + "required": [ + "not" + ], + "properties": { + "not": { + "description": "#/definitions/Condition_for_SupergraphSelector", + "$ref": "#/definitions/Condition_for_SupergraphSelector" + } + }, + "additionalProperties": false + }, + { + "description": "Static true condition", + "type": "string", + "enum": [ + "true" + ] + }, + { + "description": "Static false condition", + "type": "string", + "enum": [ + "false" + ] + } + ] + }, + "Conf": { + "description": "Authentication", + "type": "object", + "properties": { + "router": { + "description": "#/definitions/RouterConf", + "$ref": "#/definitions/RouterConf", + "nullable": true + }, + "subgraph": { + "description": "#/definitions/Config4", + "$ref": "#/definitions/Config4", + "nullable": true + } + }, + "additionalProperties": false + }, + "Conf2": { + "description": "Authorization plugin", + "type": "object", + "properties": { + "directives": { + "description": "#/definitions/Directives", + "$ref": "#/definitions/Directives" + }, + "require_authentication": { + "description": "Reject unauthenticated requests", + "default": false, + "type": "boolean" + } + } + }, + "Conf3": { + "description": "Configures the externalization plugin", + "type": "object", + "required": [ + "url" + ], + "properties": { + "client": { + "description": "#/definitions/Client", + "$ref": "#/definitions/Client", + "nullable": true + }, + "execution": { + "description": "#/definitions/ExecutionStage", + "$ref": "#/definitions/ExecutionStage" + }, + "router": { + "description": "#/definitions/RouterStage", + "$ref": "#/definitions/RouterStage" + }, + "subgraph": { + "description": "#/definitions/SubgraphStages", + "$ref": "#/definitions/SubgraphStages" + }, + "supergraph": { + "description": "#/definitions/SupergraphStage", + "$ref": "#/definitions/SupergraphStage" + }, + "timeout": { + "description": "The timeout for external requests", + "default": { + "secs": 1, + "nanos": 0 + }, + "type": "string" + }, + "url": { + "description": "The url you'd like to offload processing to", + "type": "string" + } + }, + "additionalProperties": false + }, + "Conf4": { + "description": "Subgraph URL mappings", + "anyOf": [ + { + "description": "Subgraph URL mappings", + "type": "object", + "additionalProperties": { + "type": "string" + } + } + ] + }, + "Conf5": { + "description": "Configuration for the Rhai Plugin", + "type": "object", + "properties": { + "main": { + "description": "The main entry point for Rhai script evaluation", + "type": "string", + "nullable": true + }, + "scripts": { + "description": "The directory where Rhai scripts can be found", + "type": "string", + "nullable": true + } + }, + "additionalProperties": false + }, + "Conf6": { + "description": "Telemetry configuration", + "type": "object", + "properties": { + "apollo": { + "description": "#/definitions/Config9", + "$ref": "#/definitions/Config9" + }, + "exporters": { + "description": "#/definitions/Exporters", + "$ref": "#/definitions/Exporters" + }, + "instrumentation": { + "description": "#/definitions/Instrumentation", + "$ref": "#/definitions/Instrumentation" + } + }, + "additionalProperties": false + }, + "Config": { + "description": "Configuration for operation limits, parser limits, HTTP limits, etc.", + "type": "object", + "properties": { + "http_max_request_bytes": { + "description": "Limit the size of incoming HTTP requests read from the network, to protect against running out of memory. Default: 2000000 (2 MB)", + "default": 2000000, + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "max_aliases": { + "description": "If 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, + "type": "integer", + "format": "uint32", + "minimum": 0.0, + "nullable": true + }, + "max_depth": { + "description": "If 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\"}`\n\nCounts depth of an operation, looking at its selection sets,˛ including fields in fragments and inline fragments. The following example has a depth of 3.\n\n```graphql query getProduct { book { # 1 ...bookDetails } }\n\nfragment bookDetails on Book { details { # 2 ... on ProductDetailsBook { country # 3 } } } ```", + "default": null, + "type": "integer", + "format": "uint32", + "minimum": 0.0, + "nullable": true + }, + "max_height": { + "description": "If 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\"}`\n\nHeight is based on simple merging of fields using the same name or alias, but only within the same selection set. For example `name` here is only counted once and the query has height 3, not 4:\n\n```graphql query { name { first } name { last } } ```\n\nThis may change in a future version of Apollo Router to do [full field merging across fragments][merging] instead.\n\n[merging]: https://spec.graphql.org/October2021/#sec-Field-Selection-Merging]", + "default": null, + "type": "integer", + "format": "uint32", + "minimum": 0.0, + "nullable": true + }, + "max_root_fields": { + "description": "If 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\"}`\n\nThis limit counts only the top level fields in a selection set, including fragments and inline fragments.", + "default": null, + "type": "integer", + "format": "uint32", + "minimum": 0.0, + "nullable": true + }, + "parser_max_recursion": { + "description": "Limit recursion in the GraphQL parser to protect against stack overflow. default: 500", + "default": 500, + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "parser_max_tokens": { + "description": "Limit the number of tokens the GraphQL parser processes before aborting.", + "default": 15000, + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "warn_only": { + "description": "If 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, + "type": "boolean" + } + }, + "additionalProperties": false + }, + "Config10": { + "type": "object", + "required": [ + "enabled" + ], + "properties": { + "batch_processor": { + "description": "#/definitions/BatchProcessorConfig", + "$ref": "#/definitions/BatchProcessorConfig" + }, + "enabled": { + "description": "Enable otlp", + "type": "boolean" + }, + "endpoint": { + "description": "#/definitions/UriEndpoint", + "$ref": "#/definitions/UriEndpoint" + }, + "grpc": { + "description": "#/definitions/GrpcExporter", + "$ref": "#/definitions/GrpcExporter" + }, + "http": { + "description": "#/definitions/HttpExporter", + "$ref": "#/definitions/HttpExporter" + }, + "protocol": { + "description": "#/definitions/Protocol", + "$ref": "#/definitions/Protocol" + }, + "temporality": { + "description": "#/definitions/Temporality", + "$ref": "#/definitions/Temporality" + } + }, + "additionalProperties": false + }, + "Config11": { + "description": "Prometheus configuration", + "type": "object", + "properties": { + "enabled": { + "description": "Set to true to enable", + "default": false, + "type": "boolean" + }, + "listen": { + "description": "#/definitions/ListenAddr", + "$ref": "#/definitions/ListenAddr" + }, + "path": { + "description": "The path where prometheus will be exposed", + "default": "/metrics", + "type": "string" + } + }, + "additionalProperties": false + }, + "Config12": { + "anyOf": [ + { + "type": "object", + "required": [ + "enabled" + ], + "properties": { + "agent": { + "description": "#/definitions/AgentConfig", + "$ref": "#/definitions/AgentConfig" + }, + "batch_processor": { + "description": "#/definitions/BatchProcessorConfig", + "$ref": "#/definitions/BatchProcessorConfig" + }, + "enabled": { + "description": "Enable Jaeger", + "type": "boolean" + } + }, + "additionalProperties": false + }, + { + "type": "object", + "required": [ + "enabled" + ], + "properties": { + "batch_processor": { + "description": "#/definitions/BatchProcessorConfig", + "$ref": "#/definitions/BatchProcessorConfig" + }, + "collector": { + "description": "#/definitions/CollectorConfig", + "$ref": "#/definitions/CollectorConfig" + }, + "enabled": { + "description": "Enable Jaeger", + "type": "boolean" + } + }, + "additionalProperties": false + } + ] + }, + "Config13": { + "type": "object", + "required": [ + "enabled" + ], + "properties": { + "batch_processor": { + "description": "#/definitions/BatchProcessorConfig", + "$ref": "#/definitions/BatchProcessorConfig" + }, + "enabled": { + "description": "Enable zipkin", + "type": "boolean" + }, + "endpoint": { + "description": "#/definitions/UriEndpoint", + "$ref": "#/definitions/UriEndpoint" + } + }, + "additionalProperties": false + }, + "Config14": { + "type": "object", + "required": [ + "enabled" + ], + "properties": { + "batch_processor": { + "description": "#/definitions/BatchProcessorConfig", + "$ref": "#/definitions/BatchProcessorConfig" + }, + "enable_span_mapping": { + "description": "Enable datadog span mapping for span name and resource name.", + "default": true, + "type": "boolean" + }, + "enabled": { + "description": "Enable datadog", + "type": "boolean" + }, + "endpoint": { + "description": "#/definitions/UriEndpoint", + "$ref": "#/definitions/UriEndpoint" + }, + "fixed_span_names": { + "description": "Fixes the span names, this means that the APM view will show the original span names in the operation dropdown.", + "default": true, + "type": "boolean" + }, + "resource_mapping": { + "description": "Custom mapping to be used as the resource field in spans, defaults to: router -> http.route supergraph -> graphql.operation.name query_planning -> graphql.operation.name subgraph -> subgraph.name subgraph_request -> subgraph.name http_request -> http.route", + "default": {}, + "type": "object", + "additionalProperties": { + "type": "string" + } + }, + "span_metrics": { + "description": "Which spans will be eligible for span stats to be collected for viewing in the APM view. Defaults to true for `request`, `router`, `query_parsing`, `supergraph`, `execution`, `query_planning`, `subgraph`, `subgraph_request` and `http_request`.", + "default": { + "request": true, + "subgraph_request": true, + "subgraph": true, + "supergraph": true, + "query_planning": true, + "parse_query": true, + "execution": true, + "router": true, + "http_request": true + }, + "type": "object", + "additionalProperties": { + "type": "boolean" + } + } + }, + "additionalProperties": false + }, + "Config15": { + "description": "Configuration for the experimental traffic shaping plugin", + "type": "object", + "properties": { + "all": { + "description": "#/definitions/SubgraphShaping", + "$ref": "#/definitions/SubgraphShaping", + "nullable": true + }, + "deduplicate_variables": { + "description": "DEPRECATED, now always enabled: Enable variable deduplication optimization when sending requests to subgraphs (https://github.com/apollographql/router/issues/87)", + "default": null, + "type": "boolean", + "nullable": true + }, + "router": { + "description": "#/definitions/RouterShaping", + "$ref": "#/definitions/RouterShaping", + "nullable": true + }, + "subgraphs": { + "description": "Applied on specific subgraphs", + "type": "object", + "additionalProperties": { + "description": "#/definitions/SubgraphShaping", + "$ref": "#/definitions/SubgraphShaping" + } + } + }, + "additionalProperties": false + }, + "Config2": { + "description": "This is a broken plugin for testing purposes only.", + "type": "object", + "required": [ + "enabled" + ], + "properties": { + "enabled": { + "description": "Enable the broken plugin.", + "type": "boolean" + } + } + }, + "Config3": { + "description": "Restricted plugin (for testing purposes only)", + "type": "object", + "required": [ + "enabled" + ], + "properties": { + "enabled": { + "description": "Enable the restricted plugin (for testing purposes only)", + "type": "boolean" + } + } + }, + "Config4": { + "description": "Configure subgraph authentication", + "type": "object", + "properties": { + "all": { + "description": "#/definitions/AuthConfig", + "$ref": "#/definitions/AuthConfig", + "nullable": true + }, + "subgraphs": { + "description": "Create a configuration that will apply only to a specific subgraph.", + "type": "object", + "additionalProperties": { + "description": "#/definitions/AuthConfig", + "$ref": "#/definitions/AuthConfig" + } + } + }, + "additionalProperties": false + }, + "Config5": { + "description": "Configuration for header propagation", + "type": "object", + "properties": { + "all": { + "description": "#/definitions/HeadersLocation", + "$ref": "#/definitions/HeadersLocation", + "nullable": true + }, + "subgraphs": { + "description": "Rules to specific subgraphs", + "type": "object", + "additionalProperties": { + "description": "#/definitions/HeadersLocation", + "$ref": "#/definitions/HeadersLocation" + } + } + }, + "additionalProperties": false + }, + "Config6": { + "description": "Configuration for exposing errors that originate from subgraphs", + "type": "object", + "properties": { + "all": { + "description": "Include errors from all subgraphs", + "default": false, + "type": "boolean" + }, + "subgraphs": { + "description": "Include errors from specific subgraphs", + "default": {}, + "type": "object", + "additionalProperties": { + "type": "boolean" + } + } + }, + "additionalProperties": false + }, + "Config7": { + "description": "Configuration for entity caching", + "type": "object", + "required": [ + "subgraph" + ], + "properties": { + "enabled": { + "description": "Enable or disable the entity caching feature", + "default": false, + "type": "boolean" + }, + "invalidation": { + "description": "#/definitions/InvalidationEndpointConfig", + "$ref": "#/definitions/InvalidationEndpointConfig", + "nullable": true + }, + "metrics": { + "description": "#/definitions/Metrics", + "$ref": "#/definitions/Metrics" + }, + "subgraph": { + "description": "#/definitions/SubgraphConfiguration_for_Subgraph", + "$ref": "#/definitions/SubgraphConfiguration_for_Subgraph" + } + }, + "additionalProperties": false + }, + "Config8": { + "description": "Configuration for the progressive override plugin", + "type": "object" + }, + "Config9": { + "type": "object", + "properties": { + "batch_processor": { + "description": "#/definitions/BatchProcessorConfig", + "$ref": "#/definitions/BatchProcessorConfig" + }, + "buffer_size": { + "description": "The buffer size for sending traces to Apollo. Increase this if you are experiencing lost traces.", + "default": 10000, + "type": "integer", + "format": "uint", + "minimum": 1.0 + }, + "client_name_header": { + "description": "The name of the header to extract from requests when populating 'client nane' for traces and metrics in Apollo Studio.", + "default": "apollographql-client-name", + "type": "string", + "nullable": true + }, + "client_version_header": { + "description": "The name of the header to extract from requests when populating 'client version' for traces and metrics in Apollo Studio.", + "default": "apollographql-client-version", + "type": "string", + "nullable": true + }, + "endpoint": { + "description": "The Apollo Studio endpoint for exporting traces and metrics.", + "default": "https://usage-reporting.api.apollographql.com/api/ingress/traces", + "type": "string" + }, + "errors": { + "description": "#/definitions/ErrorsConfiguration", + "$ref": "#/definitions/ErrorsConfiguration" + }, + "experimental_local_field_metrics": { + "description": "Enable field metrics that are generated without FTV1 to be sent to Apollo Studio.", + "default": false, + "type": "boolean" + }, + "experimental_otlp_endpoint": { + "description": "The Apollo Studio endpoint for exporting traces and metrics.", + "default": "https://usage-reporting.api.apollographql.com/", + "type": "string" + }, + "experimental_otlp_tracing_protocol": { + "description": "#/definitions/Protocol", + "$ref": "#/definitions/Protocol" + }, + "experimental_otlp_tracing_sampler": { + "description": "#/definitions/SamplerOption", + "$ref": "#/definitions/SamplerOption" + }, + "field_level_instrumentation_sampler": { + "description": "#/definitions/SamplerOption", + "$ref": "#/definitions/SamplerOption" + }, + "metrics_reference_mode": { + "description": "#/definitions/ApolloMetricsReferenceMode", + "$ref": "#/definitions/ApolloMetricsReferenceMode" + }, + "send_headers": { + "description": "#/definitions/ForwardHeaders", + "$ref": "#/definitions/ForwardHeaders" + }, + "send_variable_values": { + "description": "#/definitions/ForwardValues", + "$ref": "#/definitions/ForwardValues" + }, + "signature_normalization_algorithm": { + "description": "#/definitions/ApolloSignatureNormalizationAlgorithm", + "$ref": "#/definitions/ApolloSignatureNormalizationAlgorithm" + } + }, + "additionalProperties": false + }, + "ContextForward": { + "description": "Configuration to forward context values in metric attributes/labels", + "type": "object", + "required": [ + "named" + ], + "properties": { + "default": { + "description": "#/definitions/AttributeValue", + "$ref": "#/definitions/AttributeValue", + "nullable": true + }, + "named": { + "description": "The name of the value in the context", + "type": "string" + }, + "rename": { + "description": "The optional output name", + "type": "string", + "nullable": true + } + }, + "additionalProperties": false + }, + "Cors": { + "description": "Cross origin request configuration.", + "type": "object", + "properties": { + "allow_any_origin": { + "description": "Set to true to allow any origin.\n\nDefaults to false Having this set to true is the only way to allow Origin: null.", + "default": false, + "type": "boolean" + }, + "allow_credentials": { + "description": "Set to true to add the `Access-Control-Allow-Credentials` header.", + "default": false, + "type": "boolean" + }, + "allow_headers": { + "description": "The headers to allow.\n\nIf this value is not set, the router will mirror client's `Access-Control-Request-Headers`.\n\nNote that if you set headers here, you also want to have a look at your `CSRF` plugins configuration, and make sure you either: - accept `x-apollo-operation-name` AND / OR `apollo-require-preflight` - defined `csrf` required headers in your yml configuration, as shown in the `examples/cors-and-csrf/custom-headers.router.yaml` files.", + "default": [], + "type": "array", + "items": { + "type": "string" + } + }, + "expose_headers": { + "description": "Which response headers should be made available to scripts running in the browser, in response to a cross-origin request.", + "default": null, + "type": "array", + "items": { + "type": "string" + }, + "nullable": true + }, + "match_origins": { + "description": "`Regex`es you want to match the origins against to determine if they're allowed. Defaults to an empty list. Note that `origins` will be evaluated before `match_origins`", + "default": null, + "type": "array", + "items": { + "type": "string" + }, + "nullable": true + }, + "max_age": { + "description": "The `Access-Control-Max-Age` header value in time units", + "default": null, + "type": "string" + }, + "methods": { + "description": "Allowed request methods. Defaults to GET, POST, OPTIONS.", + "default": [ + "GET", + "POST", + "OPTIONS" + ], + "type": "array", + "items": { + "type": "string" + } + }, + "origins": { + "description": "The origin(s) to allow requests from. Defaults to `https://studio.apollographql.com/` for Apollo Studio.", + "default": [ + "https://studio.apollographql.com" + ], + "type": "array", + "items": { + "type": "string" + } + } + }, + "additionalProperties": false + }, + "CostValue": { + "oneOf": [ + { + "description": "The estimated cost of the operation using the currently configured cost model", + "type": "string", + "enum": [ + "estimated" + ] + }, + { + "description": "The actual cost of the operation using the currently configured cost model", + "type": "string", + "enum": [ + "actual" + ] + }, + { + "description": "The delta between the estimated and actual cost of the operation using the currently configured cost model", + "type": "string", + "enum": [ + "delta" + ] + }, + { + "description": "The result of the cost calculation. This is the error code returned by the cost calculation.", + "type": "string", + "enum": [ + "result" + ] + } + ] + }, + "DefaultAttributeRequirementLevel": { + "oneOf": [ + { + "description": "No default attributes set on spans, you have to set it one by one in the configuration to enable some attributes", + "type": "string", + "enum": [ + "none" + ] + }, + { + "description": "Attributes that are marked as required in otel semantic conventions and apollo documentation will be included (default)", + "type": "string", + "enum": [ + "required" + ] + }, + { + "description": "Attributes that are marked as required or recommended in otel semantic conventions and apollo documentation will be included", + "type": "string", + "enum": [ + "recommended" + ] + } + ] + }, + "DefaultChainConfig": { + "description": "Configuration of the DefaultChainProvider", + "type": "object", + "required": [ + "region", + "service_name" + ], + "properties": { + "assume_role": { + "description": "#/definitions/AssumeRoleProvider", + "$ref": "#/definitions/AssumeRoleProvider", + "nullable": true + }, + "profile_name": { + "description": "The profile name used by this provider", + "type": "string", + "nullable": true + }, + "region": { + "description": "The AWS region this chain applies to.", + "type": "string" + }, + "service_name": { + "description": "The service you're trying to access, eg: \"s3\", \"vpc-lattice-svcs\", etc.", + "type": "string" + } + }, + "additionalProperties": false + }, + "DefaultedStandardInstrument_for_ActiveRequestsAttributes": { + "anyOf": [ + { + "type": "null" + }, + { + "type": "boolean" + }, + { + "type": "object", + "required": [ + "attributes" + ], + "properties": { + "attributes": { + "description": "#/definitions/ActiveRequestsAttributes", + "$ref": "#/definitions/ActiveRequestsAttributes" + } + }, + "additionalProperties": false + } + ] + }, + "DefaultedStandardInstrument_for_extendable_attribute_apollo_router::plugins::telemetry::config_new::attributes::RouterAttributes_apollo_router::plugins::telemetry::config_new::selectors::RouterSelector": { + "anyOf": [ + { + "type": "null" + }, + { + "type": "boolean" + }, + { + "type": "object", + "required": [ + "attributes" + ], + "properties": { + "attributes": { + "description": "#/definitions/extendable_attribute_apollo_router::plugins::telemetry::config_new::attributes::RouterAttributes_apollo_router::plugins::telemetry::config_new::selectors::RouterSelector", + "$ref": "#/definitions/extendable_attribute_apollo_router::plugins::telemetry::config_new::attributes::RouterAttributes_apollo_router::plugins::telemetry::config_new::selectors::RouterSelector" + } + }, + "additionalProperties": false + } + ] + }, + "DefaultedStandardInstrument_for_extendable_attribute_apollo_router::plugins::telemetry::config_new::attributes::SubgraphAttributes_apollo_router::plugins::telemetry::config_new::selectors::SubgraphSelector": { + "anyOf": [ + { + "type": "null" + }, + { + "type": "boolean" + }, + { + "type": "object", + "required": [ + "attributes" + ], + "properties": { + "attributes": { + "description": "#/definitions/extendable_attribute_apollo_router::plugins::telemetry::config_new::attributes::SubgraphAttributes_apollo_router::plugins::telemetry::config_new::selectors::SubgraphSelector", + "$ref": "#/definitions/extendable_attribute_apollo_router::plugins::telemetry::config_new::attributes::SubgraphAttributes_apollo_router::plugins::telemetry::config_new::selectors::SubgraphSelector" + } + }, + "additionalProperties": false + } + ] + }, + "DefaultedStandardInstrument_for_extendable_attribute_apollo_router::plugins::telemetry::config_new::attributes::SupergraphAttributes_apollo_router::plugins::telemetry::config_new::selectors::SupergraphSelector": { + "anyOf": [ + { + "type": "null" + }, + { + "type": "boolean" + }, + { + "type": "object", + "required": [ + "attributes" + ], + "properties": { + "attributes": { + "description": "#/definitions/extendable_attribute_apollo_router::plugins::telemetry::config_new::attributes::SupergraphAttributes_apollo_router::plugins::telemetry::config_new::selectors::SupergraphSelector", + "$ref": "#/definitions/extendable_attribute_apollo_router::plugins::telemetry::config_new::attributes::SupergraphAttributes_apollo_router::plugins::telemetry::config_new::selectors::SupergraphSelector" + } + }, + "additionalProperties": false + } + ] + }, + "DefaultedStandardInstrument_for_extendable_attribute_apollo_router::plugins::telemetry::config_new::cache::attributes::CacheAttributes_apollo_router::plugins::telemetry::config_new::selectors::SubgraphSelector": { + "anyOf": [ + { + "type": "null" + }, + { + "type": "boolean" + }, + { + "type": "object", + "required": [ + "attributes" + ], + "properties": { + "attributes": { + "description": "#/definitions/extendable_attribute_apollo_router::plugins::telemetry::config_new::cache::attributes::CacheAttributes_apollo_router::plugins::telemetry::config_new::selectors::SubgraphSelector", + "$ref": "#/definitions/extendable_attribute_apollo_router::plugins::telemetry::config_new::cache::attributes::CacheAttributes_apollo_router::plugins::telemetry::config_new::selectors::SubgraphSelector" + } + }, + "additionalProperties": false + } + ] + }, + "DefaultedStandardInstrument_for_extendable_attribute_apollo_router::plugins::telemetry::config_new::graphql::attributes::GraphQLAttributes_apollo_router::plugins::telemetry::config_new::graphql::selectors::GraphQLSelector": { + "anyOf": [ + { + "type": "null" + }, + { + "type": "boolean" + }, + { + "type": "object", + "required": [ + "attributes" + ], + "properties": { + "attributes": { + "description": "#/definitions/extendable_attribute_apollo_router::plugins::telemetry::config_new::graphql::attributes::GraphQLAttributes_apollo_router::plugins::telemetry::config_new::graphql::selectors::GraphQLSelector", + "$ref": "#/definitions/extendable_attribute_apollo_router::plugins::telemetry::config_new::graphql::attributes::GraphQLAttributes_apollo_router::plugins::telemetry::config_new::graphql::selectors::GraphQLSelector" + } + }, + "additionalProperties": false + } + ] + }, + "DemandControlConfig": { + "description": "Demand control configuration", + "type": "object", + "required": [ + "enabled", + "mode", + "strategy" + ], + "properties": { + "enabled": { + "description": "Enable demand control", + "type": "boolean" + }, + "mode": { + "description": "#/definitions/Mode", + "$ref": "#/definitions/Mode" + }, + "strategy": { + "description": "#/definitions/StrategyConfig", + "$ref": "#/definitions/StrategyConfig" + } + }, + "additionalProperties": false + }, + "Directives": { + "type": "object", + "properties": { + "dry_run": { + "description": "generates the authorization error messages without modying the query", + "default": false, + "type": "boolean" + }, + "enabled": { + "description": "enables the `@authenticated` and `@requiresScopes` directives", + "default": true, + "type": "boolean" + }, + "errors": { + "description": "#/definitions/ErrorConfig", + "$ref": "#/definitions/ErrorConfig" + }, + "reject_unauthorized": { + "description": "refuse a query entirely if any part would be filtered", + "default": false, + "type": "boolean" + } + } + }, + "Disabled": { + "type": "string", + "enum": [ + "disabled" + ] + }, + "DisplayTraceIdFormat": { + "anyOf": [ + { + "description": "#/definitions/TraceIdFormat", + "$ref": "#/definitions/TraceIdFormat" + }, + { + "type": "boolean" + } + ] + }, + "Enabled": { + "type": "string", + "enum": [ + "enabled" + ] + }, + "EntityType": { + "anyOf": [ + { + "description": "#/definitions/All", + "$ref": "#/definitions/All" + }, + { + "type": "string" + } + ] + }, + "ErrorConfig": { + "type": "object", + "properties": { + "log": { + "description": "log authorization errors", + "default": true, + "type": "boolean" + }, + "response": { + "description": "#/definitions/ErrorLocation", + "$ref": "#/definitions/ErrorLocation" + } + } + }, + "ErrorConfiguration": { + "type": "object", + "properties": { + "redact": { + "description": "Redact subgraph errors to Apollo Studio", + "default": true, + "type": "boolean" + }, + "send": { + "description": "Send subgraph errors to Apollo Studio", + "default": true, + "type": "boolean" + } + }, + "additionalProperties": false + }, + "ErrorLocation": { + "oneOf": [ + { + "description": "store authorization errors in the response errors", + "type": "string", + "enum": [ + "errors" + ] + }, + { + "description": "store authorization errors in the response extensions", + "type": "string", + "enum": [ + "extensions" + ] + }, + { + "description": "do not add the authorization errors to the GraphQL response", + "type": "string", + "enum": [ + "disabled" + ] + } + ] + }, + "ErrorRepr": { + "oneOf": [ + { + "description": "The error reason", + "type": "string", + "enum": [ + "reason" + ] + } + ] + }, + "ErrorsConfiguration": { + "type": "object", + "properties": { + "subgraph": { + "description": "#/definitions/SubgraphErrorConfig", + "$ref": "#/definitions/SubgraphErrorConfig" + } + }, + "additionalProperties": false + }, + "ErrorsForward": { + "type": "object", + "properties": { + "extensions": { + "description": "Forward extensions values as custom attributes/labels in metrics", + "type": "array", + "items": { + "description": "#/definitions/BodyForward", + "$ref": "#/definitions/BodyForward" + } + }, + "include_messages": { + "description": "Will include the error message in a \"message\" attribute", + "default": null, + "type": "boolean", + "nullable": true + } + }, + "additionalProperties": false + }, + "EventLevel": { + "type": "string", + "enum": [ + "info", + "warn", + "error", + "off" + ] + }, + "EventOn": { + "description": "When to trigger the event.", + "oneOf": [ + { + "description": "Log the event on request", + "type": "string", + "enum": [ + "request" + ] + }, + { + "description": "Log the event on response", + "type": "string", + "enum": [ + "response" + ] + }, + { + "description": "Log the event on every chunks in the response", + "type": "string", + "enum": [ + "event_response" + ] + }, + { + "description": "Log the event on error", + "type": "string", + "enum": [ + "error" + ] + } + ] + }, + "Event_for_RouterAttributes_and_RouterSelector": { + "description": "An event that can be logged as part of a trace. The event has an implicit `type` attribute that matches the name of the event in the yaml and a message that can be used to provide additional information.", + "type": "object", + "required": [ + "level", + "message", + "on" + ], + "properties": { + "attributes": { + "description": "#/definitions/extendable_attribute_apollo_router::plugins::telemetry::config_new::attributes::RouterAttributes_apollo_router::plugins::telemetry::config_new::selectors::RouterSelector", + "$ref": "#/definitions/extendable_attribute_apollo_router::plugins::telemetry::config_new::attributes::RouterAttributes_apollo_router::plugins::telemetry::config_new::selectors::RouterSelector" + }, + "condition": { + "description": "#/definitions/Condition_for_RouterSelector", + "$ref": "#/definitions/Condition_for_RouterSelector" + }, + "level": { + "description": "#/definitions/EventLevel", + "$ref": "#/definitions/EventLevel" + }, + "message": { + "description": "The event message.", + "type": "string" + }, + "on": { + "description": "#/definitions/EventOn", + "$ref": "#/definitions/EventOn" + } + } + }, + "Event_for_SubgraphAttributes_and_SubgraphSelector": { + "description": "An event that can be logged as part of a trace. The event has an implicit `type` attribute that matches the name of the event in the yaml and a message that can be used to provide additional information.", + "type": "object", + "required": [ + "level", + "message", + "on" + ], + "properties": { + "attributes": { + "description": "#/definitions/extendable_attribute_apollo_router::plugins::telemetry::config_new::attributes::SubgraphAttributes_apollo_router::plugins::telemetry::config_new::selectors::SubgraphSelector", + "$ref": "#/definitions/extendable_attribute_apollo_router::plugins::telemetry::config_new::attributes::SubgraphAttributes_apollo_router::plugins::telemetry::config_new::selectors::SubgraphSelector" + }, + "condition": { + "description": "#/definitions/Condition_for_SubgraphSelector", + "$ref": "#/definitions/Condition_for_SubgraphSelector" + }, + "level": { + "description": "#/definitions/EventLevel", + "$ref": "#/definitions/EventLevel" + }, + "message": { + "description": "The event message.", + "type": "string" + }, + "on": { + "description": "#/definitions/EventOn", + "$ref": "#/definitions/EventOn" + } + } + }, + "Event_for_SupergraphAttributes_and_SupergraphSelector": { + "description": "An event that can be logged as part of a trace. The event has an implicit `type` attribute that matches the name of the event in the yaml and a message that can be used to provide additional information.", + "type": "object", + "required": [ + "level", + "message", + "on" + ], + "properties": { + "attributes": { + "description": "#/definitions/extendable_attribute_apollo_router::plugins::telemetry::config_new::attributes::SupergraphAttributes_apollo_router::plugins::telemetry::config_new::selectors::SupergraphSelector", + "$ref": "#/definitions/extendable_attribute_apollo_router::plugins::telemetry::config_new::attributes::SupergraphAttributes_apollo_router::plugins::telemetry::config_new::selectors::SupergraphSelector" + }, + "condition": { + "description": "#/definitions/Condition_for_SupergraphSelector", + "$ref": "#/definitions/Condition_for_SupergraphSelector" + }, + "level": { + "description": "#/definitions/EventLevel", + "$ref": "#/definitions/EventLevel" + }, + "message": { + "description": "The event message.", + "type": "string" + }, + "on": { + "description": "#/definitions/EventOn", + "$ref": "#/definitions/EventOn" + } + } + }, + "Event_for_SupergraphSelector": { + "oneOf": [ + { + "description": "For every supergraph response payload (including subscription events and defer events)", + "type": "string", + "enum": [ + "event_duration" + ] + }, + { + "description": "For every supergraph response payload (including subscription events and defer events)", + "type": "string", + "enum": [ + "event_unit" + ] + }, + { + "description": "For every supergraph response payload (including subscription events and defer events)", + "type": "object", + "required": [ + "event_custom" + ], + "properties": { + "event_custom": { + "description": "#/definitions/SupergraphSelector", + "$ref": "#/definitions/SupergraphSelector" + } + }, + "additionalProperties": false + } + ] + }, + "Events": { + "description": "Events are", + "type": "object", + "properties": { + "router": { + "description": "#/definitions/extendable_attribute_apollo_router::plugins::telemetry::config_new::events::RouterEventsConfig_apollo_router::plugins::telemetry::config_new::events::Event", + "$ref": "#/definitions/extendable_attribute_apollo_router::plugins::telemetry::config_new::events::RouterEventsConfig_apollo_router::plugins::telemetry::config_new::events::Event" + }, + "subgraph": { + "description": "#/definitions/extendable_attribute_apollo_router::plugins::telemetry::config_new::events::SubgraphEventsConfig_apollo_router::plugins::telemetry::config_new::events::Event", + "$ref": "#/definitions/extendable_attribute_apollo_router::plugins::telemetry::config_new::events::SubgraphEventsConfig_apollo_router::plugins::telemetry::config_new::events::Event" + }, + "supergraph": { + "description": "#/definitions/extendable_attribute_apollo_router::plugins::telemetry::config_new::events::SupergraphEventsConfig_apollo_router::plugins::telemetry::config_new::events::Event", + "$ref": "#/definitions/extendable_attribute_apollo_router::plugins::telemetry::config_new::events::SupergraphEventsConfig_apollo_router::plugins::telemetry::config_new::events::Event" + } + }, + "additionalProperties": false + }, + "ExecutionRequestConf": { + "description": "What information is passed to a router request/response stage", + "type": "object", + "properties": { + "body": { + "description": "Send the body", + "default": false, + "type": "boolean" + }, + "context": { + "description": "Send the context", + "default": false, + "type": "boolean" + }, + "headers": { + "description": "Send the headers", + "default": false, + "type": "boolean" + }, + "method": { + "description": "Send the method", + "default": false, + "type": "boolean" + }, + "query_plan": { + "description": "Send the query plan", + "default": false, + "type": "boolean" + }, + "sdl": { + "description": "Send the SDL", + "default": false, + "type": "boolean" + } + }, + "additionalProperties": false + }, + "ExecutionResponseConf": { + "description": "What information is passed to a router request/response stage", + "type": "object", + "properties": { + "body": { + "description": "Send the body", + "default": false, + "type": "boolean" + }, + "context": { + "description": "Send the context", + "default": false, + "type": "boolean" + }, + "headers": { + "description": "Send the headers", + "default": false, + "type": "boolean" + }, + "sdl": { + "description": "Send the SDL", + "default": false, + "type": "boolean" + }, + "status_code": { + "description": "Send the HTTP status", + "default": false, + "type": "boolean" + } + }, + "additionalProperties": false + }, + "ExecutionStage": { + "type": "object", + "properties": { + "request": { + "description": "#/definitions/ExecutionRequestConf", + "$ref": "#/definitions/ExecutionRequestConf" + }, + "response": { + "description": "#/definitions/ExecutionResponseConf", + "$ref": "#/definitions/ExecutionResponseConf" + } + } + }, + "Exporters": { + "description": "Exporter configuration", + "type": "object", + "properties": { + "logging": { + "description": "#/definitions/Logging", + "$ref": "#/definitions/Logging" + }, + "metrics": { + "description": "#/definitions/Metrics2", + "$ref": "#/definitions/Metrics2" + }, + "tracing": { + "description": "#/definitions/Tracing", + "$ref": "#/definitions/Tracing" + } + }, + "additionalProperties": false + }, + "ExposeQueryPlanConfig": { + "description": "Expose query plan", + "type": "boolean" + }, + "ExposeTraceId": { + "type": "object", + "properties": { + "enabled": { + "description": "Expose the trace_id in response headers", + "default": false, + "type": "boolean" + }, + "format": { + "description": "#/definitions/TraceIdFormat", + "$ref": "#/definitions/TraceIdFormat" + }, + "header_name": { + "description": "Choose the header name to expose trace_id (default: apollo-trace-id)", + "type": "string", + "nullable": true + } + }, + "additionalProperties": false + }, + "FieldName": { + "oneOf": [ + { + "description": "The GraphQL field name", + "type": "string", + "enum": [ + "string" + ] + } + ] + }, + "FieldType": { + "oneOf": [ + { + "description": "The GraphQL field name", + "type": "string", + "enum": [ + "name" + ] + }, + { + "description": "The GraphQL field type - `bool` - `number` - `scalar` - `object` - `list`", + "type": "string", + "enum": [ + "type" + ] + } + ] + }, + "FileUploadProtocols": { + "description": "Configuration for the various protocols supported by the file upload plugin", + "type": "object", + "required": [ + "multipart" + ], + "properties": { + "multipart": { + "description": "#/definitions/MultipartRequest", + "$ref": "#/definitions/MultipartRequest" + } + }, + "additionalProperties": false + }, + "FileUploadsConfig": { + "description": "Configuration for File Uploads plugin", + "type": "object", + "required": [ + "enabled", + "protocols" + ], + "properties": { + "enabled": { + "description": "Whether the file upload plugin should be enabled (default: false)", + "type": "boolean" + }, + "protocols": { + "description": "#/definitions/FileUploadProtocols", + "$ref": "#/definitions/FileUploadProtocols" + } + }, + "additionalProperties": false + }, + "ForbidMutationsConfig": { + "description": "Forbid mutations configuration", + "type": "boolean" + }, + "Forward": { + "description": "Configuration to forward from headers/body", + "type": "object", + "properties": { + "body": { + "description": "Forward body values as custom attributes/labels in metrics", + "type": "array", + "items": { + "description": "#/definitions/BodyForward", + "$ref": "#/definitions/BodyForward" + } + }, + "header": { + "description": "Forward header values as custom attributes/labels in metrics", + "type": "array", + "items": { + "description": "#/definitions/HeaderForward", + "$ref": "#/definitions/HeaderForward" + } + } + }, + "additionalProperties": false + }, + "ForwardHeaders": { + "description": "Forward headers", + "oneOf": [ + { + "description": "Don't send any headers", + "type": "string", + "enum": [ + "none" + ] + }, + { + "description": "Send all headers", + "type": "string", + "enum": [ + "all" + ] + }, + { + "description": "Send only the headers specified", + "type": "object", + "required": [ + "only" + ], + "properties": { + "only": { + "description": "Send only the headers specified", + "type": "array", + "items": { + "type": "string" + } + } + }, + "additionalProperties": false + }, + { + "description": "Send all headers except those specified", + "type": "object", + "required": [ + "except" + ], + "properties": { + "except": { + "description": "Send all headers except those specified", + "type": "array", + "items": { + "type": "string" + } + } + }, + "additionalProperties": false + } + ] + }, + "ForwardValues": { + "description": "Forward GraphQL variables", + "oneOf": [ + { + "description": "Dont send any variables", + "type": "string", + "enum": [ + "none" + ] + }, + { + "description": "Send all variables", + "type": "string", + "enum": [ + "all" + ] + }, + { + "description": "Send only the variables specified", + "type": "object", + "required": [ + "only" + ], + "properties": { + "only": { + "description": "Send only the variables specified", + "type": "array", + "items": { + "type": "string" + } + } + }, + "additionalProperties": false + }, + { + "description": "Send all variables except those specified", + "type": "object", + "required": [ + "except" + ], + "properties": { + "except": { + "description": "Send all variables except those specified", + "type": "array", + "items": { + "type": "string" + } + } + }, + "additionalProperties": false + } + ] + }, + "GraphQLAttributes": { + "type": "object", + "properties": { + "graphql.field.name": { + "description": "The GraphQL field name", + "default": null, + "type": "boolean", + "nullable": true + }, + "graphql.field.type": { + "description": "The GraphQL field type", + "default": null, + "type": "boolean", + "nullable": true + }, + "graphql.list.length": { + "description": "If the field is a list, the length of the list", + "default": null, + "type": "boolean", + "nullable": true + }, + "graphql.operation.name": { + "description": "The GraphQL operation name", + "default": null, + "type": "boolean", + "nullable": true + }, + "graphql.type.name": { + "description": "The GraphQL type name", + "default": null, + "type": "boolean", + "nullable": true + } + }, + "additionalProperties": false + }, + "GraphQLInstrumentsConfig": { + "type": "object", + "properties": { + "field.execution": { + "description": "#/definitions/DefaultedStandardInstrument_for_extendable_attribute_apollo_router::plugins::telemetry::config_new::graphql::attributes::GraphQLAttributes_apollo_router::plugins::telemetry::config_new::graphql::selectors::GraphQLSelector", + "$ref": "#/definitions/DefaultedStandardInstrument_for_extendable_attribute_apollo_router::plugins::telemetry::config_new::graphql::attributes::GraphQLAttributes_apollo_router::plugins::telemetry::config_new::graphql::selectors::GraphQLSelector" + }, + "list.length": { + "description": "#/definitions/DefaultedStandardInstrument_for_extendable_attribute_apollo_router::plugins::telemetry::config_new::graphql::attributes::GraphQLAttributes_apollo_router::plugins::telemetry::config_new::graphql::selectors::GraphQLSelector", + "$ref": "#/definitions/DefaultedStandardInstrument_for_extendable_attribute_apollo_router::plugins::telemetry::config_new::graphql::attributes::GraphQLAttributes_apollo_router::plugins::telemetry::config_new::graphql::selectors::GraphQLSelector" + } + }, + "additionalProperties": false + }, + "GraphQLSelector": { + "anyOf": [ + { + "description": "If the field is a list, the length of the list", + "type": "object", + "required": [ + "list_length" + ], + "properties": { + "list_length": { + "description": "#/definitions/ListLength", + "$ref": "#/definitions/ListLength" + } + }, + "additionalProperties": false + }, + { + "description": "The GraphQL field name", + "type": "object", + "required": [ + "field_name" + ], + "properties": { + "field_name": { + "description": "#/definitions/FieldName", + "$ref": "#/definitions/FieldName" + } + }, + "additionalProperties": false + }, + { + "description": "The GraphQL field type", + "type": "object", + "required": [ + "field_type" + ], + "properties": { + "field_type": { + "description": "#/definitions/FieldType", + "$ref": "#/definitions/FieldType" + } + }, + "additionalProperties": false + }, + { + "description": "The GraphQL type name", + "type": "object", + "required": [ + "type_name" + ], + "properties": { + "type_name": { + "description": "#/definitions/TypeName", + "$ref": "#/definitions/TypeName" + } + }, + "additionalProperties": false + }, + { + "type": "object", + "required": [ + "operation_name" + ], + "properties": { + "default": { + "description": "Optional default value.", + "type": "string", + "nullable": true + }, + "operation_name": { + "description": "#/definitions/OperationName", + "$ref": "#/definitions/OperationName" + } + }, + "additionalProperties": false + }, + { + "type": "object", + "required": [ + "static" + ], + "properties": { + "static": { + "description": "#/definitions/AttributeValue", + "$ref": "#/definitions/AttributeValue" + } + }, + "additionalProperties": false + } + ] + }, + "GraphQLValue": { + "anyOf": [ + { + "description": "#/definitions/StandardUnit", + "$ref": "#/definitions/StandardUnit" + }, + { + "description": "#/definitions/GraphQLSelector", + "$ref": "#/definitions/GraphQLSelector" + } + ] + }, + "GrpcExporter": { + "type": "object", + "properties": { + "ca": { + "description": "The optional certificate authority (CA) certificate to be used in TLS configuration.", + "default": null, + "type": "string", + "nullable": true + }, + "cert": { + "description": "The optional cert for tls config", + "default": null, + "type": "string", + "nullable": true + }, + "domain_name": { + "description": "The optional domain name for tls config. Note that domain name is will be defaulted to match the endpoint is not explicitly set.", + "default": null, + "type": "string", + "nullable": true + }, + "key": { + "description": "The optional private key file for TLS configuration.", + "default": null, + "type": "string", + "nullable": true + }, + "metadata": { + "description": "gRPC metadata", + "default": {}, + "type": "object", + "additionalProperties": true + } + }, + "additionalProperties": false + }, + "Header": { + "description": "Insert a header", + "type": "object", + "required": [ + "name", + "value" + ], + "properties": { + "name": { + "description": "The name of the header", + "type": "string" + }, + "value": { + "description": "The value for the header", + "type": "string" + } + }, + "additionalProperties": false + }, + "HeaderForward": { + "description": "Configuration to forward header values in metric labels", + "anyOf": [ + { + "description": "Match via header name", + "type": "object", + "required": [ + "named" + ], + "properties": { + "default": { + "description": "#/definitions/AttributeValue", + "$ref": "#/definitions/AttributeValue", + "nullable": true + }, + "named": { + "description": "The name of the header", + "type": "string" + }, + "rename": { + "description": "The optional output name", + "type": "string", + "nullable": true + } + }, + "additionalProperties": false + }, + { + "description": "Match via rgex", + "type": "object", + "required": [ + "matching" + ], + "properties": { + "matching": { + "description": "Using a regex on the header name", + "type": "string" + } + }, + "additionalProperties": false + } + ] + }, + "HeaderLoggingCondition": { + "anyOf": [ + { + "description": "Match header value given a regex to display logs", + "type": "object", + "required": [ + "match", + "name" + ], + "properties": { + "body": { + "description": "Display request/response body (default: false)", + "default": false, + "type": "boolean" + }, + "headers": { + "description": "Display request/response headers (default: false)", + "default": false, + "type": "boolean" + }, + "match": { + "description": "Regex to match the header value", + "type": "string" + }, + "name": { + "description": "Header name", + "type": "string" + } + }, + "additionalProperties": false + }, + { + "description": "Match header value given a value to display logs", + "type": "object", + "required": [ + "name", + "value" + ], + "properties": { + "body": { + "description": "Display request/response body (default: false)", + "default": false, + "type": "boolean" + }, + "headers": { + "description": "Display request/response headers (default: false)", + "default": false, + "type": "boolean" + }, + "name": { + "description": "Header name", + "type": "string" + }, + "value": { + "description": "Header value", + "type": "string" + } + }, + "additionalProperties": false + } + ] + }, + "HeadersLocation": { + "type": "object", + "required": [ + "request" + ], + "properties": { + "request": { + "description": "Propagate/Insert/Remove headers from request", + "type": "array", + "items": { + "description": "#/definitions/Operation", + "$ref": "#/definitions/Operation" + } + } + }, + "additionalProperties": false + }, + "HealthCheck": { + "description": "Configuration options pertaining to the http server component.", + "type": "object", + "properties": { + "enabled": { + "description": "Set to false to disable the health check", + "default": true, + "type": "boolean" + }, + "listen": { + "description": "#/definitions/ListenAddr", + "$ref": "#/definitions/ListenAddr" + }, + "path": { + "description": "Optionally set a custom healthcheck path Defaults to /health", + "default": "/health", + "type": "string" + } + }, + "additionalProperties": false + }, + "HeartbeatInterval": { + "anyOf": [ + { + "description": "#/definitions/Disabled", + "$ref": "#/definitions/Disabled" + }, + { + "description": "#/definitions/Enabled", + "$ref": "#/definitions/Enabled" + }, + { + "description": "enable with custom interval, e.g. '100ms', '10s' or '1m'", + "type": "string" + } + ] + }, + "Homepage": { + "description": "Configuration options pertaining to the home page.", + "type": "object", + "properties": { + "enabled": { + "description": "Set to false to disable the homepage", + "default": true, + "type": "boolean" + }, + "graph_ref": { + "description": "Graph reference This will allow you to redirect from the Apollo Router landing page back to Apollo Studio Explorer", + "default": null, + "type": "string", + "nullable": true + } + }, + "additionalProperties": false + }, + "Http2Config": { + "oneOf": [ + { + "description": "Enable HTTP2 for subgraphs", + "type": "string", + "enum": [ + "enable" + ] + }, + { + "description": "Disable HTTP2 for subgraphs", + "type": "string", + "enum": [ + "disable" + ] + }, + { + "description": "Only HTTP2 is active", + "type": "string", + "enum": [ + "http2only" + ] + } + ] + }, + "HttpExporter": { + "type": "object", + "properties": { + "headers": { + "description": "Headers to send on report requests", + "default": {}, + "type": "object", + "additionalProperties": { + "type": "string" + } + } + }, + "additionalProperties": false + }, + "InMemoryCache": { + "description": "In memory cache configuration", + "type": "object", + "required": [ + "limit" + ], + "properties": { + "limit": { + "description": "Number of entries in the Least Recently Used cache", + "type": "integer", + "format": "uint", + "minimum": 1.0 + } + }, + "additionalProperties": false + }, + "Insert": { + "description": "Insert header", + "anyOf": [ + { + "description": "#/definitions/InsertStatic", + "$ref": "#/definitions/InsertStatic" + }, + { + "description": "#/definitions/InsertFromContext", + "$ref": "#/definitions/InsertFromContext" + }, + { + "description": "#/definitions/InsertFromBody", + "$ref": "#/definitions/InsertFromBody" + } + ] + }, + "Insert2": { + "description": "Configuration to insert custom attributes/labels in metrics", + "type": "object", + "required": [ + "name", + "value" + ], + "properties": { + "name": { + "description": "The name of the attribute to insert", + "type": "string" + }, + "value": { + "description": "#/definitions/AttributeValue", + "$ref": "#/definitions/AttributeValue" + } + }, + "additionalProperties": false + }, + "InsertFromBody": { + "description": "Insert header with a value coming from body", + "type": "object", + "required": [ + "name", + "path" + ], + "properties": { + "default": { + "description": "The default if the path in the body did not resolve to an element", + "type": "string", + "nullable": true + }, + "name": { + "description": "The target header name", + "type": "string" + }, + "path": { + "description": "The path in the request body", + "type": "string" + } + }, + "additionalProperties": false + }, + "InsertFromContext": { + "description": "Insert header with a value coming from context key", + "type": "object", + "required": [ + "from_context", + "name" + ], + "properties": { + "from_context": { + "description": "Specify context key to fetch value", + "type": "string" + }, + "name": { + "description": "Specify header name", + "type": "string" + } + }, + "additionalProperties": false + }, + "InsertStatic": { + "description": "Insert static header", + "type": "object", + "required": [ + "name", + "value" + ], + "properties": { + "name": { + "description": "The name of the header", + "type": "string" + }, + "value": { + "description": "The value for the header", + "type": "string" + } + }, + "additionalProperties": false + }, + "InstrumentType": { + "oneOf": [ + { + "description": "A monotonic counter https://opentelemetry.io/docs/specs/otel/metrics/data-model/#sums", + "type": "string", + "enum": [ + "counter" + ] + }, + { + "description": "A histogram https://opentelemetry.io/docs/specs/otel/metrics/data-model/#histogram", + "type": "string", + "enum": [ + "histogram" + ] + } + ] + }, + "Instrument_for_CacheAttributes_and_SubgraphSelector_and_SubgraphValue": { + "type": "object", + "required": [ + "description", + "type", + "unit", + "value" + ], + "properties": { + "attributes": { + "description": "#/definitions/extendable_attribute_apollo_router::plugins::telemetry::config_new::cache::attributes::CacheAttributes_apollo_router::plugins::telemetry::config_new::selectors::SubgraphSelector", + "$ref": "#/definitions/extendable_attribute_apollo_router::plugins::telemetry::config_new::cache::attributes::CacheAttributes_apollo_router::plugins::telemetry::config_new::selectors::SubgraphSelector" + }, + "condition": { + "description": "#/definitions/Condition_for_SubgraphSelector", + "$ref": "#/definitions/Condition_for_SubgraphSelector" + }, + "description": { + "description": "The description of the instrument.", + "type": "string" + }, + "type": { + "description": "#/definitions/InstrumentType", + "$ref": "#/definitions/InstrumentType" + }, + "unit": { + "description": "The units of the instrument, e.g. \"ms\", \"bytes\", \"requests\".", + "type": "string" + }, + "value": { + "description": "#/definitions/SubgraphValue", + "$ref": "#/definitions/SubgraphValue" + } + }, + "additionalProperties": false + }, + "Instrument_for_GraphQLAttributes_and_GraphQLSelector_and_GraphQLValue": { + "type": "object", + "required": [ + "description", + "type", + "unit", + "value" + ], + "properties": { + "attributes": { + "description": "#/definitions/extendable_attribute_apollo_router::plugins::telemetry::config_new::graphql::attributes::GraphQLAttributes_apollo_router::plugins::telemetry::config_new::graphql::selectors::GraphQLSelector", + "$ref": "#/definitions/extendable_attribute_apollo_router::plugins::telemetry::config_new::graphql::attributes::GraphQLAttributes_apollo_router::plugins::telemetry::config_new::graphql::selectors::GraphQLSelector" + }, + "condition": { + "description": "#/definitions/Condition_for_GraphQLSelector", + "$ref": "#/definitions/Condition_for_GraphQLSelector" + }, + "description": { + "description": "The description of the instrument.", + "type": "string" + }, + "type": { + "description": "#/definitions/InstrumentType", + "$ref": "#/definitions/InstrumentType" + }, + "unit": { + "description": "The units of the instrument, e.g. \"ms\", \"bytes\", \"requests\".", + "type": "string" + }, + "value": { + "description": "#/definitions/GraphQLValue", + "$ref": "#/definitions/GraphQLValue" + } + }, + "additionalProperties": false + }, + "Instrument_for_RouterAttributes_and_RouterSelector_and_RouterValue": { + "type": "object", + "required": [ + "description", + "type", + "unit", + "value" + ], + "properties": { + "attributes": { + "description": "#/definitions/extendable_attribute_apollo_router::plugins::telemetry::config_new::attributes::RouterAttributes_apollo_router::plugins::telemetry::config_new::selectors::RouterSelector", + "$ref": "#/definitions/extendable_attribute_apollo_router::plugins::telemetry::config_new::attributes::RouterAttributes_apollo_router::plugins::telemetry::config_new::selectors::RouterSelector" + }, + "condition": { + "description": "#/definitions/Condition_for_RouterSelector", + "$ref": "#/definitions/Condition_for_RouterSelector" + }, + "description": { + "description": "The description of the instrument.", + "type": "string" + }, + "type": { + "description": "#/definitions/InstrumentType", + "$ref": "#/definitions/InstrumentType" + }, + "unit": { + "description": "The units of the instrument, e.g. \"ms\", \"bytes\", \"requests\".", + "type": "string" + }, + "value": { + "description": "#/definitions/RouterValue", + "$ref": "#/definitions/RouterValue" + } + }, + "additionalProperties": false + }, + "Instrument_for_SubgraphAttributes_and_SubgraphSelector_and_SubgraphValue": { + "type": "object", + "required": [ + "description", + "type", + "unit", + "value" + ], + "properties": { + "attributes": { + "description": "#/definitions/extendable_attribute_apollo_router::plugins::telemetry::config_new::attributes::SubgraphAttributes_apollo_router::plugins::telemetry::config_new::selectors::SubgraphSelector", + "$ref": "#/definitions/extendable_attribute_apollo_router::plugins::telemetry::config_new::attributes::SubgraphAttributes_apollo_router::plugins::telemetry::config_new::selectors::SubgraphSelector" + }, + "condition": { + "description": "#/definitions/Condition_for_SubgraphSelector", + "$ref": "#/definitions/Condition_for_SubgraphSelector" + }, + "description": { + "description": "The description of the instrument.", + "type": "string" + }, + "type": { + "description": "#/definitions/InstrumentType", + "$ref": "#/definitions/InstrumentType" + }, + "unit": { + "description": "The units of the instrument, e.g. \"ms\", \"bytes\", \"requests\".", + "type": "string" + }, + "value": { + "description": "#/definitions/SubgraphValue", + "$ref": "#/definitions/SubgraphValue" + } + }, + "additionalProperties": false + }, + "Instrument_for_SupergraphAttributes_and_SupergraphSelector_and_SupergraphValue": { + "type": "object", + "required": [ + "description", + "type", + "unit", + "value" + ], + "properties": { + "attributes": { + "description": "#/definitions/extendable_attribute_apollo_router::plugins::telemetry::config_new::attributes::SupergraphAttributes_apollo_router::plugins::telemetry::config_new::selectors::SupergraphSelector", + "$ref": "#/definitions/extendable_attribute_apollo_router::plugins::telemetry::config_new::attributes::SupergraphAttributes_apollo_router::plugins::telemetry::config_new::selectors::SupergraphSelector" + }, + "condition": { + "description": "#/definitions/Condition_for_SupergraphSelector", + "$ref": "#/definitions/Condition_for_SupergraphSelector" + }, + "description": { + "description": "The description of the instrument.", + "type": "string" + }, + "type": { + "description": "#/definitions/InstrumentType", + "$ref": "#/definitions/InstrumentType" + }, + "unit": { + "description": "The units of the instrument, e.g. \"ms\", \"bytes\", \"requests\".", + "type": "string" + }, + "value": { + "description": "#/definitions/SupergraphValue", + "$ref": "#/definitions/SupergraphValue" + } + }, + "additionalProperties": false + }, + "Instrumentation": { + "description": "Instrumentation configuration", + "type": "object", + "properties": { + "events": { + "description": "#/definitions/Events", + "$ref": "#/definitions/Events" + }, + "instruments": { + "description": "#/definitions/InstrumentsConfig", + "$ref": "#/definitions/InstrumentsConfig" + }, + "spans": { + "description": "#/definitions/Spans", + "$ref": "#/definitions/Spans" + } + }, + "additionalProperties": false + }, + "InstrumentsConfig": { + "type": "object", + "properties": { + "cache": { + "description": "#/definitions/extendable_attribute_apollo_router::plugins::telemetry::config_new::cache::CacheInstrumentsConfig_apollo_router::plugins::telemetry::config_new::instruments::Instrument", + "$ref": "#/definitions/extendable_attribute_apollo_router::plugins::telemetry::config_new::cache::CacheInstrumentsConfig_apollo_router::plugins::telemetry::config_new::instruments::Instrument" + }, + "default_requirement_level": { + "description": "#/definitions/DefaultAttributeRequirementLevel", + "$ref": "#/definitions/DefaultAttributeRequirementLevel" + }, + "graphql": { + "description": "#/definitions/extendable_attribute_apollo_router::plugins::telemetry::config_new::graphql::GraphQLInstrumentsConfig_apollo_router::plugins::telemetry::config_new::instruments::Instrument", + "$ref": "#/definitions/extendable_attribute_apollo_router::plugins::telemetry::config_new::graphql::GraphQLInstrumentsConfig_apollo_router::plugins::telemetry::config_new::instruments::Instrument" + }, + "router": { + "description": "#/definitions/extendable_attribute_apollo_router::plugins::telemetry::config_new::instruments::RouterInstrumentsConfig_apollo_router::plugins::telemetry::config_new::instruments::Instrument", + "$ref": "#/definitions/extendable_attribute_apollo_router::plugins::telemetry::config_new::instruments::RouterInstrumentsConfig_apollo_router::plugins::telemetry::config_new::instruments::Instrument" + }, + "subgraph": { + "description": "#/definitions/extendable_attribute_apollo_router::plugins::telemetry::config_new::instruments::SubgraphInstrumentsConfig_apollo_router::plugins::telemetry::config_new::instruments::Instrument", + "$ref": "#/definitions/extendable_attribute_apollo_router::plugins::telemetry::config_new::instruments::SubgraphInstrumentsConfig_apollo_router::plugins::telemetry::config_new::instruments::Instrument" + }, + "supergraph": { + "description": "#/definitions/extendable_attribute_apollo_router::plugins::telemetry::config_new::instruments::SupergraphInstrumentsConfig_apollo_router::plugins::telemetry::config_new::instruments::Instrument", + "$ref": "#/definitions/extendable_attribute_apollo_router::plugins::telemetry::config_new::instruments::SupergraphInstrumentsConfig_apollo_router::plugins::telemetry::config_new::instruments::Instrument" + } + }, + "additionalProperties": false + }, + "IntrospectionMode": { + "description": "Which implementation of GraphQL schema introspection to use, if enabled", + "oneOf": [ + { + "description": "Use the new Rust-based implementation.", + "type": "string", + "enum": [ + "new" + ] + }, + { + "description": "Use the old JavaScript-based implementation.", + "type": "string", + "enum": [ + "legacy" + ] + }, + { + "description": "Use Rust-based and Javascript-based implementations side by side, logging warnings if the implementations disagree.", + "type": "string", + "enum": [ + "both" + ] + } + ] + }, + "InvalidationEndpointConfig": { + "type": "object", + "required": [ + "listen", + "path" + ], + "properties": { + "listen": { + "description": "#/definitions/ListenAddr", + "$ref": "#/definitions/ListenAddr" + }, + "path": { + "description": "Specify on which path you want to listen for invalidation endpoint.", + "type": "string" + } + }, + "additionalProperties": false + }, + "JWTConf": { + "type": "object", + "required": [ + "jwks" + ], + "properties": { + "header_name": { + "description": "HTTP header expected to contain JWT", + "default": "authorization", + "type": "string" + }, + "header_value_prefix": { + "description": "Header value prefix", + "default": "Bearer", + "type": "string" + }, + "ignore_other_prefixes": { + "description": "Whether to ignore any mismatched prefixes", + "default": false, + "type": "boolean" + }, + "jwks": { + "description": "List of JWKS used to verify tokens", + "type": "array", + "items": { + "description": "#/definitions/JwksConf", + "$ref": "#/definitions/JwksConf" + } + }, + "sources": { + "description": "Alternative sources to extract the JWT", + "type": "array", + "items": { + "description": "#/definitions/Source", + "$ref": "#/definitions/Source" + } + } + }, + "additionalProperties": false + }, + "JwksConf": { + "type": "object", + "required": [ + "url" + ], + "properties": { + "algorithms": { + "description": "List of accepted algorithms. Possible values are `HS256`, `HS384`, `HS512`, `ES256`, `ES384`, `RS256`, `RS384`, `RS512`, `PS256`, `PS384`, `PS512`, `EdDSA`", + "default": null, + "type": "array", + "items": { + "type": "string" + }, + "nullable": true + }, + "headers": { + "description": "List of headers to add to the JWKS request", + "type": "array", + "items": { + "description": "#/definitions/Header", + "$ref": "#/definitions/Header" + } + }, + "issuer": { + "description": "Expected issuer for tokens verified by that JWKS", + "type": "string", + "nullable": true + }, + "poll_interval": { + "description": "Polling interval for each JWKS endpoint in human-readable format; defaults to 60s", + "default": { + "secs": 60, + "nanos": 0 + }, + "type": "string" + }, + "url": { + "description": "Retrieve the JWK Set", + "type": "string" + } + }, + "additionalProperties": false + }, + "ListLength": { + "oneOf": [ + { + "description": "The length of the list", + "type": "string", + "enum": [ + "value" + ] + } + ] + }, + "ListenAddr": { + "description": "Listening address.", + "anyOf": [ + { + "description": "Socket address.", + "type": "string" + }, + { + "description": "Unix socket.", + "type": "string" + } + ] + }, + "Logging": { + "description": "Logging configuration.", + "type": "object", + "properties": { + "common": { + "description": "#/definitions/LoggingCommon", + "$ref": "#/definitions/LoggingCommon" + }, + "experimental_when_header": { + "description": "Log configuration to log request and response for subgraphs and supergraph Note that this will be removed when events are implemented.", + "type": "array", + "items": { + "description": "#/definitions/HeaderLoggingCondition", + "$ref": "#/definitions/HeaderLoggingCondition" + } + }, + "stdout": { + "description": "#/definitions/StdOut", + "$ref": "#/definitions/StdOut" + } + }, + "additionalProperties": false + }, + "LoggingCommon": { + "type": "object", + "properties": { + "resource": { + "description": "The Open Telemetry resource", + "default": {}, + "type": "object", + "additionalProperties": { + "description": "#/definitions/AttributeValue", + "$ref": "#/definitions/AttributeValue" + } + }, + "service_name": { + "description": "Set a service.name resource in your metrics", + "default": null, + "type": "string", + "nullable": true + }, + "service_namespace": { + "description": "Set a service.namespace attribute in your metrics", + "default": null, + "type": "string", + "nullable": true + } + }, + "additionalProperties": false + }, + "MetricAggregation": { + "oneOf": [ + { + "description": "An aggregation that summarizes a set of measurements as an histogram with explicitly defined buckets.", + "type": "object", + "required": [ + "histogram" + ], + "properties": { + "histogram": { + "type": "object", + "required": [ + "buckets" + ], + "properties": { + "buckets": { + "type": "array", + "items": { + "type": "number", + "format": "double" + } + } + }, + "additionalProperties": false + } + }, + "additionalProperties": false + }, + { + "description": "Simply drop the metrics matching this view", + "type": "string", + "enum": [ + "drop" + ] + } + ] + }, + "MetricView": { + "type": "object", + "required": [ + "name" + ], + "properties": { + "aggregation": { + "description": "#/definitions/MetricAggregation", + "$ref": "#/definitions/MetricAggregation", + "nullable": true + }, + "allowed_attribute_keys": { + "description": "An allow-list of attribute keys that will be preserved for the instrument.\n\nAny attribute recorded for the instrument with a key not in this set will be dropped. If the set is empty, all attributes will be dropped, if `None` all attributes will be kept.", + "type": "array", + "items": { + "type": "string" + }, + "uniqueItems": true, + "nullable": true + }, + "description": { + "description": "New description to set to the instrument", + "type": "string", + "nullable": true + }, + "name": { + "description": "The instrument name you're targeting", + "type": "string" + }, + "unit": { + "description": "New unit to set to the instrument", + "type": "string", + "nullable": true + } + }, + "additionalProperties": false + }, + "Metrics": { + "description": "Per subgraph configuration for entity caching", + "type": "object", + "properties": { + "enabled": { + "description": "enables metrics evaluating the benefits of entity caching", + "default": false, + "type": "boolean" + }, + "separate_per_type": { + "description": "Adds the entity type name to attributes. This can greatly increase the cardinality", + "default": false, + "type": "boolean" + }, + "ttl": { + "description": "#/definitions/Ttl", + "$ref": "#/definitions/Ttl", + "nullable": true + } + }, + "additionalProperties": false + }, + "Metrics2": { + "description": "Metrics configuration", + "type": "object", + "properties": { + "common": { + "description": "#/definitions/MetricsCommon", + "$ref": "#/definitions/MetricsCommon" + }, + "otlp": { + "description": "#/definitions/Config10", + "$ref": "#/definitions/Config10" + }, + "prometheus": { + "description": "#/definitions/Config11", + "$ref": "#/definitions/Config11" + } + }, + "additionalProperties": false + }, + "MetricsAttributesConf": { + "description": "Configuration to add custom attributes/labels on metrics", + "type": "object", + "properties": { + "subgraph": { + "description": "#/definitions/SubgraphAttributesConf", + "$ref": "#/definitions/SubgraphAttributesConf" + }, + "supergraph": { + "description": "#/definitions/AttributesForwardConf", + "$ref": "#/definitions/AttributesForwardConf" + } + }, + "additionalProperties": false + }, + "MetricsCommon": { + "type": "object", + "properties": { + "attributes": { + "description": "#/definitions/MetricsAttributesConf", + "$ref": "#/definitions/MetricsAttributesConf" + }, + "buckets": { + "description": "Custom buckets for all histograms", + "default": [ + 0.001, + 0.005, + 0.015, + 0.05, + 0.1, + 0.2, + 0.3, + 0.4, + 0.5, + 1.0, + 5.0, + 10.0 + ], + "type": "array", + "items": { + "type": "number", + "format": "double" + } + }, + "resource": { + "description": "The Open Telemetry resource", + "default": {}, + "type": "object", + "additionalProperties": { + "description": "#/definitions/AttributeValue", + "$ref": "#/definitions/AttributeValue" + } + }, + "service_name": { + "description": "Set a service.name resource in your metrics", + "default": null, + "type": "string", + "nullable": true + }, + "service_namespace": { + "description": "Set a service.namespace attribute in your metrics", + "default": null, + "type": "string", + "nullable": true + }, + "views": { + "description": "Views applied on metrics", + "type": "array", + "items": { + "description": "#/definitions/MetricView", + "$ref": "#/definitions/MetricView" + } + } + }, + "additionalProperties": false + }, + "Mode": { + "type": "string", + "enum": [ + "measure", + "enforce" + ] + }, + "MultipartRequest": { + "description": "Configuration for a multipart request for file uploads.\n\nThis protocol conforms to [jaydenseric's multipart spec](https://github.com/jaydenseric/graphql-multipart-request-spec)", + "type": "object", + "properties": { + "enabled": { + "description": "Whether to enable the multipart protocol for file uploads (default: true)", + "default": true, + "type": "boolean" + }, + "limits": { + "description": "#/definitions/MultipartRequestLimits", + "$ref": "#/definitions/MultipartRequestLimits" + }, + "mode": { + "description": "#/definitions/MultipartRequestMode", + "$ref": "#/definitions/MultipartRequestMode" + } + }, + "additionalProperties": false + }, + "MultipartRequestLimits": { + "description": "Request limits for a multipart request", + "type": "object", + "required": [ + "max_file_size", + "max_files" + ], + "properties": { + "max_file_size": { + "description": "The maximum size of each file, in bytes (default: 5MB)", + "type": "string" + }, + "max_files": { + "description": "The maximum amount of files allowed for a single query (default: 4)", + "type": "integer", + "format": "uint", + "minimum": 0.0 + } + }, + "additionalProperties": false + }, + "MultipartRequestMode": { + "description": "Supported mode for a multipart request", + "oneOf": [ + { + "description": "The multipart request will not be loaded into memory and instead will be streamed directly to the subgraph in the order received. This has some limitations, mainly that the query _must_ be able to be streamed directly to the subgraph without buffering.\n\nIn practice, this means that certain queries will fail due to ordering of the files.", + "type": "string", + "enum": [ + "stream" + ] + } + ] + }, + "Operation": { + "oneOf": [ + { + "type": "object", + "required": [ + "insert" + ], + "properties": { + "insert": { + "description": "#/definitions/Insert", + "$ref": "#/definitions/Insert" + } + }, + "additionalProperties": false + }, + { + "type": "object", + "required": [ + "remove" + ], + "properties": { + "remove": { + "description": "#/definitions/Remove", + "$ref": "#/definitions/Remove" + } + }, + "additionalProperties": false + }, + { + "type": "object", + "required": [ + "propagate" + ], + "properties": { + "propagate": { + "description": "#/definitions/Propagate", + "$ref": "#/definitions/Propagate" + } + }, + "additionalProperties": false + } + ] + }, + "OperationKind": { + "oneOf": [ + { + "description": "The raw operation kind.", + "type": "string", + "enum": [ + "string" + ] + } + ] + }, + "OperationName": { + "oneOf": [ + { + "description": "The raw operation name.", + "type": "string", + "enum": [ + "string" + ] + }, + { + "description": "A hash of the operation name.", + "type": "string", + "enum": [ + "hash" + ] + } + ] + }, + "PersistedQueries": { + "description": "Persisted Queries (PQ) configuration", + "type": "object", + "properties": { + "enabled": { + "description": "Activates Persisted Queries (disabled by default)", + "default": false, + "type": "boolean" + }, + "experimental_local_manifests": { + "description": "Enables using a local copy of the persisted query manifest to safelist operations", + "default": null, + "type": "array", + "items": { + "type": "string" + }, + "nullable": true + }, + "experimental_prewarm_query_plan_cache": { + "description": "Experimental feature to prewarm the query plan cache with persisted queries", + "default": false, + "type": "boolean" + }, + "log_unknown": { + "description": "Enabling this field configures the router to log any freeform GraphQL request that is not in the persisted query list", + "default": false, + "type": "boolean" + }, + "safelist": { + "description": "#/definitions/PersistedQueriesSafelist", + "$ref": "#/definitions/PersistedQueriesSafelist" + } + }, + "additionalProperties": false + }, + "PersistedQueriesSafelist": { + "description": "Persisted Queries (PQ) Safelisting configuration", + "type": "object", + "properties": { + "enabled": { + "description": "Enables using the persisted query list as a safelist (disabled by default)", + "default": false, + "type": "boolean" + }, + "require_id": { + "description": "Enabling this field configures the router to reject any request that does not include the persisted query ID", + "default": false, + "type": "boolean" + } + }, + "additionalProperties": false + }, + "Plugins": { + "properties": { + "experimental.broken": { + "description": "#/definitions/Config2", + "$ref": "#/definitions/Config2" + }, + "experimental.expose_query_plan": { + "description": "#/definitions/ExposeQueryPlanConfig", + "$ref": "#/definitions/ExposeQueryPlanConfig" + }, + "experimental.record": { + "description": "#/definitions/RecordConfig", + "$ref": "#/definitions/RecordConfig" + }, + "experimental.restricted": { + "description": "#/definitions/Config3", + "$ref": "#/definitions/Config3" + } + }, + "additionalProperties": false + }, + "Propagate": { + "description": "Propagate header", + "anyOf": [ + { + "description": "Propagate header given a header name", + "type": "object", + "required": [ + "named" + ], + "properties": { + "default": { + "description": "Default value for the header.", + "type": "string", + "nullable": true + }, + "named": { + "description": "The source header name", + "type": "string" + }, + "rename": { + "description": "An optional target header name", + "type": "string", + "nullable": true + } + }, + "additionalProperties": false + }, + { + "description": "Propagate header given a regex to match header name", + "type": "object", + "required": [ + "matching" + ], + "properties": { + "matching": { + "description": "The regex on header name", + "type": "string" + } + }, + "additionalProperties": false + } + ] + }, + "Propagation": { + "description": "Configure propagation of traces. In general you won't have to do this as these are automatically configured along with any exporter you configure.", + "type": "object", + "properties": { + "aws_xray": { + "description": "Propagate AWS X-Ray", + "default": false, + "type": "boolean" + }, + "baggage": { + "description": "Propagate baggage https://www.w3.org/TR/baggage/", + "default": false, + "type": "boolean" + }, + "datadog": { + "description": "Propagate Datadog", + "default": false, + "type": "boolean" + }, + "jaeger": { + "description": "Propagate Jaeger", + "default": false, + "type": "boolean" + }, + "request": { + "description": "#/definitions/RequestPropagation", + "$ref": "#/definitions/RequestPropagation" + }, + "trace_context": { + "description": "Propagate trace context https://www.w3.org/TR/trace-context/", + "default": false, + "type": "boolean" + }, + "zipkin": { + "description": "Propagate Zipkin", + "default": false, + "type": "boolean" + } + }, + "additionalProperties": false + }, + "Protocol": { + "type": "string", + "enum": [ + "grpc", + "http" + ] + }, + "Query": { + "oneOf": [ + { + "description": "The raw query kind.", + "type": "string", + "enum": [ + "string" + ] + }, + { + "description": "The query aliases.", + "type": "string", + "enum": [ + "aliases" + ] + }, + { + "description": "The query depth.", + "type": "string", + "enum": [ + "depth" + ] + }, + { + "description": "The query height.", + "type": "string", + "enum": [ + "height" + ] + }, + { + "description": "The query root fields.", + "type": "string", + "enum": [ + "root_fields" + ] + } + ] + }, + "QueryPlanCache": { + "description": "Cache configuration", + "type": "object", + "properties": { + "in_memory": { + "description": "#/definitions/InMemoryCache", + "$ref": "#/definitions/InMemoryCache" + }, + "redis": { + "description": "#/definitions/QueryPlanRedisCache", + "$ref": "#/definitions/QueryPlanRedisCache", + "nullable": true + } + }, + "additionalProperties": false + }, + "QueryPlanRedisCache": { + "description": "Redis cache configuration", + "type": "object", + "required": [ + "urls" + ], + "properties": { + "namespace": { + "description": "namespace used to prefix Redis keys", + "type": "string", + "nullable": true + }, + "password": { + "description": "Redis password if not provided in the URLs. This field takes precedence over the password in the URL", + "type": "string", + "nullable": true + }, + "required_to_start": { + "description": "Prevents the router from starting if it cannot connect to Redis", + "default": false, + "type": "boolean" + }, + "reset_ttl": { + "description": "When a TTL is set on a key, reset it when reading the data from that key", + "default": true, + "type": "boolean" + }, + "timeout": { + "description": "Redis request timeout (default: 2ms)", + "default": null, + "type": "string", + "nullable": true + }, + "tls": { + "description": "#/definitions/TlsClient", + "$ref": "#/definitions/TlsClient", + "nullable": true + }, + "ttl": { + "description": "TTL for entries", + "default": { + "secs": 2592000, + "nanos": 0 + }, + "type": "string", + "nullable": true + }, + "urls": { + "description": "List of URLs to the Redis cluster", + "type": "array", + "items": { + "type": "string", + "format": "uri" + } + }, + "username": { + "description": "Redis username if not provided in the URLs. This field takes precedence over the username in the URL", + "type": "string", + "nullable": true + } + }, + "additionalProperties": false + }, + "QueryPlannerMode": { + "description": "Query planner modes.", + "oneOf": [ + { + "description": "Use the new Rust-based implementation.\n\nRaises an error at Router startup if the the new planner does not support the schema (such as using legacy Apollo Federation 1)", + "type": "string", + "enum": [ + "new" + ] + }, + { + "description": "Use the old JavaScript-based implementation.", + "type": "string", + "enum": [ + "legacy" + ] + }, + { + "description": "Use primarily the Javascript-based implementation, but also schedule background jobs to run the Rust implementation and compare results, logging warnings if the implementations disagree.\n\nRaises an error at Router startup if the the new planner does not support the schema (such as using legacy Apollo Federation 1)", + "type": "string", + "enum": [ + "both" + ] + }, + { + "description": "Use primarily the Javascript-based implementation, but also schedule on a best-effort basis background jobs to run the Rust implementation and compare results, logging warnings if the implementations disagree.\n\nFalls back to `legacy` with a warning if the the new planner does not support the schema (such as using legacy Apollo Federation 1)", + "type": "string", + "enum": [ + "both_best_effort" + ] + } + ] + }, + "QueryPlanning": { + "description": "Query planning cache configuration", + "type": "object", + "properties": { + "cache": { + "description": "#/definitions/QueryPlanCache", + "$ref": "#/definitions/QueryPlanCache" + }, + "experimental_parallelism": { + "description": "#/definitions/AvailableParallelism", + "$ref": "#/definitions/AvailableParallelism" + }, + "experimental_paths_limit": { + "description": "Before creating query plans, for each path of fields in the query we compute all the possible options to traverse that path via the subgraphs. Multiple options can arise because fields in the path can be provided by multiple subgraphs, and abstract types (i.e. unions and interfaces) returned by fields sometimes require the query planner to traverse through each constituent object type. The number of options generated in this computation can grow large if the schema or query are sufficiently complex, and that will increase the time spent planning.\n\nThis config allows specifying a per-path limit to the number of options considered. If any path's options exceeds this limit, query planning will abort and the operation will fail.\n\nThe default value is None, which specifies no limit.", + "default": null, + "type": "integer", + "format": "uint32", + "minimum": 0.0, + "nullable": true + }, + "experimental_plans_limit": { + "description": "Sets a limit to the number of generated query plans. The planning process generates many different query plans as it explores the graph, and the list can grow large. By using this limit, we prevent that growth and still get a valid query plan, but it may not be the optimal one.\n\nThe default limit is set to 10000, but it may change in the future", + "default": null, + "type": "integer", + "format": "uint32", + "minimum": 0.0, + "nullable": true + }, + "experimental_reuse_query_plans": { + "description": "If cache warm up is configured, this will allow the router to keep a query plan created with the old schema, if it determines that the schema update does not affect the corresponding query", + "default": false, + "type": "boolean" + }, + "legacy_introspection_caching": { + "description": "Activates introspection response caching Historically, the Router has executed introspection queries in the query planner, and cached their response in its cache because they were expensive. This will change soon as introspection will be removed from the query planner. In the meantime, since storing introspection responses can fill up the cache, this option can be used to deactivate it. Default: true", + "default": true, + "type": "boolean" + }, + "warmed_up_queries": { + "description": "Warms up the cache on reloads by running the query plan over a list of the most used queries (from the in memory cache) Configures the number of queries warmed up. Defaults to 1/3 of the in memory cache", + "default": null, + "type": "integer", + "format": "uint", + "minimum": 0.0, + "nullable": true + } + }, + "additionalProperties": false + }, + "RateLimit": { + "type": "object", + "properties": { + "capacity": { + "description": "Number of log lines allowed in interval per message", + "default": 1, + "type": "integer", + "format": "uint32", + "minimum": 0.0 + }, + "enabled": { + "description": "Set to true to limit the rate of log messages", + "default": false, + "type": "boolean" + }, + "interval": { + "description": "Interval for rate limiting", + "default": { + "secs": 1, + "nanos": 0 + }, + "type": "string" + } + }, + "additionalProperties": false + }, + "RateLimitConf": { + "type": "object", + "required": [ + "capacity", + "interval" + ], + "properties": { + "capacity": { + "description": "Number of requests allowed", + "type": "integer", + "format": "uint64", + "minimum": 1.0 + }, + "interval": { + "description": "Per interval", + "type": "string" + } + }, + "additionalProperties": false + }, + "RecordConfig": { + "description": "Request recording configuration.", + "type": "object", + "required": [ + "enabled" + ], + "properties": { + "enabled": { + "description": "The recording plugin is disabled by default.", + "type": "boolean" + }, + "storage_path": { + "description": "The path to the directory where recordings will be stored. Defaults to the current working directory.", + "type": "string", + "nullable": true + } + }, + "additionalProperties": false + }, + "RedisCache": { + "description": "Redis cache configuration", + "type": "object", + "required": [ + "urls" + ], + "properties": { + "namespace": { + "description": "namespace used to prefix Redis keys", + "type": "string", + "nullable": true + }, + "password": { + "description": "Redis password if not provided in the URLs. This field takes precedence over the password in the URL", + "type": "string", + "nullable": true + }, + "required_to_start": { + "description": "Prevents the router from starting if it cannot connect to Redis", + "default": false, + "type": "boolean" + }, + "reset_ttl": { + "description": "When a TTL is set on a key, reset it when reading the data from that key", + "default": true, + "type": "boolean" + }, + "timeout": { + "description": "Redis request timeout (default: 2ms)", + "default": null, + "type": "string", + "nullable": true + }, + "tls": { + "description": "#/definitions/TlsClient", + "$ref": "#/definitions/TlsClient", + "nullable": true + }, + "ttl": { + "description": "TTL for entries", + "default": null, + "type": "string", + "nullable": true + }, + "urls": { + "description": "List of URLs to the Redis cluster", + "type": "array", + "items": { + "type": "string", + "format": "uri" + } + }, + "username": { + "description": "Redis username if not provided in the URLs. This field takes precedence over the username in the URL", + "type": "string", + "nullable": true + } + }, + "additionalProperties": false + }, + "Remove": { + "description": "Remove header", + "oneOf": [ + { + "description": "Remove a header given a header name", + "type": "object", + "required": [ + "named" + ], + "properties": { + "named": { + "description": "Remove a header given a header name", + "type": "string" + } + }, + "additionalProperties": false + }, + { + "description": "Remove a header given a regex matching header name", + "type": "object", + "required": [ + "matching" + ], + "properties": { + "matching": { + "description": "Remove a header given a regex matching against the header name", + "type": "string" + } + }, + "additionalProperties": false + } + ] + }, + "RequestPropagation": { + "type": "object", + "required": [ + "header_name" + ], + "properties": { + "format": { + "description": "#/definitions/TraceIdFormat", + "$ref": "#/definitions/TraceIdFormat" + }, + "header_name": { + "description": "Choose the header name to expose trace_id (default: apollo-trace-id)", + "type": "string" + } + }, + "additionalProperties": false + }, + "ResponseStatus": { + "oneOf": [ + { + "description": "The http status code.", + "type": "string", + "enum": [ + "code" + ] + }, + { + "description": "The http status reason.", + "type": "string", + "enum": [ + "reason" + ] + } + ] + }, + "RetryConfig": { + "description": "Retry configuration", + "type": "object", + "properties": { + "min_per_sec": { + "description": "minimum rate of retries allowed to accomodate clients that have just started issuing requests, or clients that do not issue many requests per window. The default value is 10", + "type": "integer", + "format": "uint32", + "minimum": 0.0, + "nullable": true + }, + "retry_mutations": { + "description": "allows request retries on mutations. This should only be activated if mutations are idempotent. Disabled by default", + "type": "boolean", + "nullable": true + }, + "retry_percent": { + "description": "percentage of calls to deposit that can be retried. This is in addition to any retries allowed for via min_per_sec. Must be between 0 and 1000, default value is 0.2", + "type": "number", + "format": "float", + "nullable": true + }, + "ttl": { + "description": "how long a single deposit should be considered. Must be between 1 and 60 seconds, default value is 10 seconds", + "default": null, + "type": "string" + } + }, + "additionalProperties": false + }, + "Router": { + "description": "Router level (APQ) configuration", + "type": "object", + "properties": { + "cache": { + "description": "#/definitions/Cache", + "$ref": "#/definitions/Cache" + } + }, + "additionalProperties": false + }, + "RouterAttributes": { + "description": "Common attributes for http server and client. See https://opentelemetry.io/docs/specs/semconv/http/http-spans/#common-attributes", + "type": "object", + "properties": { + "baggage": { + "description": "All key values from trace baggage.", + "default": null, + "type": "boolean", + "nullable": true + }, + "dd.trace_id": { + "description": "The datadog trace ID. This can be output in logs and used to correlate traces in Datadog.", + "default": null, + "type": "boolean", + "nullable": true + }, + "error.type": { + "description": "Describes a class of error the operation ended with. Examples:\n\n* timeout * name_resolution_error * 500\n\nRequirement level: Conditionally Required: If request has ended with an error.", + "default": null, + "type": "boolean", + "nullable": true + }, + "http.request.body.size": { + "description": "The size of the request payload body in bytes. This is the number of bytes transferred excluding headers and is often, but not always, present as the Content-Length header. For requests using transport encoding, this should be the compressed size. Examples:\n\n* 3495\n\nRequirement level: Recommended", + "default": null, + "type": "boolean", + "nullable": true + }, + "http.request.method": { + "description": "HTTP request method. Examples:\n\n* GET * POST * HEAD\n\nRequirement level: Required", + "default": null, + "type": "boolean", + "nullable": true + }, + "http.response.body.size": { + "description": "The size of the response payload body in bytes. This is the number of bytes transferred excluding headers and is often, but not always, present as the Content-Length header. For requests using transport encoding, this should be the compressed size. Examples:\n\n* 3495\n\nRequirement level: Recommended", + "default": null, + "type": "boolean", + "nullable": true + }, + "http.response.status_code": { + "description": "HTTP response status code. Examples:\n\n* 200\n\nRequirement level: Conditionally Required: If and only if one was received/sent.", + "default": null, + "type": "boolean", + "nullable": true + }, + "http.route": { + "description": "The matched route (path template in the format used by the respective server framework). Examples:\n\n* /graphql\n\nRequirement level: Conditionally Required: If and only if it’s available", + "default": null, + "type": "boolean", + "nullable": true + }, + "network.local.address": { + "description": "Local socket address. Useful in case of a multi-IP host. Examples:\n\n* 10.1.2.80 * /tmp/my.sock\n\nRequirement level: Opt-In", + "default": null, + "type": "boolean", + "nullable": true + }, + "network.local.port": { + "description": "Local socket port. Useful in case of a multi-port host. Examples:\n\n* 65123\n\nRequirement level: Opt-In", + "default": null, + "type": "boolean", + "nullable": true + }, + "network.peer.address": { + "description": "Peer address of the network connection - IP address or Unix domain socket name. Examples:\n\n* 10.1.2.80 * /tmp/my.sock\n\nRequirement level: Recommended", + "default": null, + "type": "boolean", + "nullable": true + }, + "network.peer.port": { + "description": "Peer port number of the network connection. Examples:\n\n* 65123\n\nRequirement level: Recommended", + "default": null, + "type": "boolean", + "nullable": true + }, + "network.protocol.name": { + "description": "OSI application layer or non-OSI equivalent. Examples:\n\n* http * spdy\n\nRequirement level: Recommended: if not default (http).", + "default": null, + "type": "boolean", + "nullable": true + }, + "network.protocol.version": { + "description": "Version of the protocol specified in network.protocol.name. Examples:\n\n* 1.0 * 1.1 * 2 * 3\n\nRequirement level: Recommended", + "default": null, + "type": "boolean", + "nullable": true + }, + "network.transport": { + "description": "OSI transport layer. Examples:\n\n* tcp * udp\n\nRequirement level: Conditionally Required", + "default": null, + "type": "boolean", + "nullable": true + }, + "network.type": { + "description": "OSI network layer or non-OSI equivalent. Examples:\n\n* ipv4 * ipv6\n\nRequirement level: Recommended", + "default": null, + "type": "boolean", + "nullable": true + }, + "server.address": { + "description": "Name of the local HTTP server that received the request. Examples:\n\n* example.com * 10.1.2.80 * /tmp/my.sock\n\nRequirement level: Recommended", + "default": null, + "type": "boolean", + "nullable": true + }, + "server.port": { + "description": "Port of the local HTTP server that received the request. Examples:\n\n* 80 * 8080 * 443\n\nRequirement level: Recommended", + "default": null, + "type": "boolean", + "nullable": true + }, + "trace_id": { + "description": "The OpenTelemetry trace ID. This can be output in logs.", + "default": null, + "type": "boolean", + "nullable": true + }, + "url.path": { + "description": "The URI path component Examples:\n\n* /search\n\nRequirement level: Required", + "default": null, + "type": "boolean", + "nullable": true + }, + "url.query": { + "description": "The URI query component Examples:\n\n* q=OpenTelemetry\n\nRequirement level: Conditionally Required: If and only if one was received/sent.", + "default": null, + "type": "boolean", + "nullable": true + }, + "url.scheme": { + "description": "The URI scheme component identifying the used protocol. Examples:\n\n* http * https\n\nRequirement level: Required", + "default": null, + "type": "boolean", + "nullable": true + }, + "user_agent.original": { + "description": "Value of the HTTP User-Agent header sent by the client. Examples:\n\n* CERN-LineMode/2.15 * libwww/2.17b3\n\nRequirement level: Recommended", + "default": null, + "type": "boolean", + "nullable": true + } + }, + "additionalProperties": false + }, + "RouterConf": { + "type": "object", + "required": [ + "jwt" + ], + "properties": { + "jwt": { + "description": "#/definitions/JWTConf", + "$ref": "#/definitions/JWTConf" + } + }, + "additionalProperties": false + }, + "RouterEventsConfig": { + "type": "object", + "properties": { + "error": { + "description": "#/definitions/StandardEventConfig_for_RouterSelector", + "$ref": "#/definitions/StandardEventConfig_for_RouterSelector" + }, + "request": { + "description": "#/definitions/StandardEventConfig_for_RouterSelector", + "$ref": "#/definitions/StandardEventConfig_for_RouterSelector" + }, + "response": { + "description": "#/definitions/StandardEventConfig_for_RouterSelector", + "$ref": "#/definitions/StandardEventConfig_for_RouterSelector" + } + }, + "additionalProperties": false + }, + "RouterInstrumentsConfig": { + "type": "object", + "properties": { + "http.server.active_requests": { + "description": "#/definitions/DefaultedStandardInstrument_for_ActiveRequestsAttributes", + "$ref": "#/definitions/DefaultedStandardInstrument_for_ActiveRequestsAttributes" + }, + "http.server.request.body.size": { + "description": "#/definitions/DefaultedStandardInstrument_for_extendable_attribute_apollo_router::plugins::telemetry::config_new::attributes::RouterAttributes_apollo_router::plugins::telemetry::config_new::selectors::RouterSelector", + "$ref": "#/definitions/DefaultedStandardInstrument_for_extendable_attribute_apollo_router::plugins::telemetry::config_new::attributes::RouterAttributes_apollo_router::plugins::telemetry::config_new::selectors::RouterSelector" + }, + "http.server.request.duration": { + "description": "#/definitions/DefaultedStandardInstrument_for_extendable_attribute_apollo_router::plugins::telemetry::config_new::attributes::RouterAttributes_apollo_router::plugins::telemetry::config_new::selectors::RouterSelector", + "$ref": "#/definitions/DefaultedStandardInstrument_for_extendable_attribute_apollo_router::plugins::telemetry::config_new::attributes::RouterAttributes_apollo_router::plugins::telemetry::config_new::selectors::RouterSelector" + }, + "http.server.response.body.size": { + "description": "#/definitions/DefaultedStandardInstrument_for_extendable_attribute_apollo_router::plugins::telemetry::config_new::attributes::RouterAttributes_apollo_router::plugins::telemetry::config_new::selectors::RouterSelector", + "$ref": "#/definitions/DefaultedStandardInstrument_for_extendable_attribute_apollo_router::plugins::telemetry::config_new::attributes::RouterAttributes_apollo_router::plugins::telemetry::config_new::selectors::RouterSelector" + } + }, + "additionalProperties": false + }, + "RouterRequestConf": { + "description": "What information is passed to a router request/response stage", + "type": "object", + "properties": { + "body": { + "description": "Send the body", + "default": false, + "type": "boolean" + }, + "condition": { + "description": "#/definitions/Condition_for_RouterSelector", + "$ref": "#/definitions/Condition_for_RouterSelector", + "nullable": true + }, + "context": { + "description": "Send the context", + "default": false, + "type": "boolean" + }, + "headers": { + "description": "Send the headers", + "default": false, + "type": "boolean" + }, + "method": { + "description": "Send the method", + "default": false, + "type": "boolean" + }, + "path": { + "description": "Send the path", + "default": false, + "type": "boolean" + }, + "sdl": { + "description": "Send the SDL", + "default": false, + "type": "boolean" + } + }, + "additionalProperties": false + }, + "RouterResponseConf": { + "description": "What information is passed to a router request/response stage", + "type": "object", + "properties": { + "body": { + "description": "Send the body", + "default": false, + "type": "boolean" + }, + "condition": { + "description": "#/definitions/Condition_for_RouterSelector", + "$ref": "#/definitions/Condition_for_RouterSelector", + "nullable": true + }, + "context": { + "description": "Send the context", + "default": false, + "type": "boolean" + }, + "headers": { + "description": "Send the headers", + "default": false, + "type": "boolean" + }, + "sdl": { + "description": "Send the SDL", + "default": false, + "type": "boolean" + }, + "status_code": { + "description": "Send the HTTP status", + "default": false, + "type": "boolean" + } + }, + "additionalProperties": false + }, + "RouterSelector": { + "anyOf": [ + { + "description": "A header from the request", + "type": "object", + "required": [ + "request_header" + ], + "properties": { + "default": { + "description": "#/definitions/AttributeValue", + "$ref": "#/definitions/AttributeValue", + "nullable": true + }, + "request_header": { + "description": "The name of the request header.", + "type": "string" + } + }, + "additionalProperties": false + }, + { + "description": "The request method.", + "type": "object", + "required": [ + "request_method" + ], + "properties": { + "request_method": { + "description": "The request method enabled or not", + "type": "boolean" + } + }, + "additionalProperties": false + }, + { + "description": "A header from the response", + "type": "object", + "required": [ + "response_header" + ], + "properties": { + "default": { + "description": "#/definitions/AttributeValue", + "$ref": "#/definitions/AttributeValue", + "nullable": true + }, + "response_header": { + "description": "The name of the request header.", + "type": "string" + } + }, + "additionalProperties": false + }, + { + "description": "A status from the response", + "type": "object", + "required": [ + "response_status" + ], + "properties": { + "response_status": { + "description": "#/definitions/ResponseStatus", + "$ref": "#/definitions/ResponseStatus" + } + }, + "additionalProperties": false + }, + { + "description": "The trace ID of the request.", + "type": "object", + "required": [ + "trace_id" + ], + "properties": { + "trace_id": { + "description": "#/definitions/TraceIdFormat", + "$ref": "#/definitions/TraceIdFormat" + } + }, + "additionalProperties": false + }, + { + "description": "Apollo Studio operation id", + "type": "object", + "required": [ + "studio_operation_id" + ], + "properties": { + "studio_operation_id": { + "description": "Apollo Studio operation id", + "type": "boolean" + } + }, + "additionalProperties": false + }, + { + "description": "A value from context.", + "type": "object", + "required": [ + "response_context" + ], + "properties": { + "default": { + "description": "#/definitions/AttributeValue", + "$ref": "#/definitions/AttributeValue", + "nullable": true + }, + "response_context": { + "description": "The response context key.", + "type": "string" + } + }, + "additionalProperties": false + }, + { + "description": "The operation name from the query.", + "type": "object", + "required": [ + "operation_name" + ], + "properties": { + "default": { + "description": "Optional default value.", + "type": "string", + "nullable": true + }, + "operation_name": { + "description": "#/definitions/OperationName", + "$ref": "#/definitions/OperationName" + } + }, + "additionalProperties": false + }, + { + "description": "A value from baggage.", + "type": "object", + "required": [ + "baggage" + ], + "properties": { + "baggage": { + "description": "The name of the baggage item.", + "type": "string" + }, + "default": { + "description": "#/definitions/AttributeValue", + "$ref": "#/definitions/AttributeValue", + "nullable": true + } + }, + "additionalProperties": false + }, + { + "description": "A value from an environment variable.", + "type": "object", + "required": [ + "env" + ], + "properties": { + "default": { + "description": "Optional default value.", + "type": "string", + "nullable": true + }, + "env": { + "description": "The name of the environment variable", + "type": "string" + } + }, + "additionalProperties": false + }, + { + "description": "Deprecated, should not be used anymore, use static field instead", + "type": "string" + }, + { + "type": "object", + "required": [ + "static" + ], + "properties": { + "static": { + "description": "#/definitions/AttributeValue", + "$ref": "#/definitions/AttributeValue" + } + }, + "additionalProperties": false + }, + { + "type": "object", + "required": [ + "on_graphql_error" + ], + "properties": { + "on_graphql_error": { + "description": "Boolean set to true if the response body contains graphql error", + "type": "boolean" + } + }, + "additionalProperties": false + }, + { + "type": "object", + "required": [ + "error" + ], + "properties": { + "error": { + "description": "#/definitions/ErrorRepr", + "$ref": "#/definitions/ErrorRepr" + } + }, + "additionalProperties": false + } + ] + }, + "RouterShaping": { + "type": "object", + "properties": { + "global_rate_limit": { + "description": "#/definitions/RateLimitConf", + "$ref": "#/definitions/RateLimitConf", + "nullable": true + }, + "timeout": { + "description": "Enable timeout for incoming requests", + "default": null, + "type": "string" + } + }, + "additionalProperties": false + }, + "RouterSpans": { + "type": "object", + "properties": { + "attributes": { + "description": "#/definitions/extendable_attribute_apollo_router::plugins::telemetry::config_new::attributes::RouterAttributes_apollo_router::plugins::telemetry::config_new::conditional::Conditional", + "$ref": "#/definitions/extendable_attribute_apollo_router::plugins::telemetry::config_new::attributes::RouterAttributes_apollo_router::plugins::telemetry::config_new::conditional::Conditional" + } + }, + "additionalProperties": false + }, + "RouterStage": { + "type": "object", + "properties": { + "request": { + "description": "#/definitions/RouterRequestConf", + "$ref": "#/definitions/RouterRequestConf" + }, + "response": { + "description": "#/definitions/RouterResponseConf", + "$ref": "#/definitions/RouterResponseConf" + } + } + }, + "RouterValue": { + "anyOf": [ + { + "description": "#/definitions/Standard", + "$ref": "#/definitions/Standard" + }, + { + "description": "#/definitions/RouterSelector", + "$ref": "#/definitions/RouterSelector" + } + ] + }, + "Sampler": { + "oneOf": [ + { + "description": "Always sample", + "type": "string", + "enum": [ + "always_on" + ] + }, + { + "description": "Never sample", + "type": "string", + "enum": [ + "always_off" + ] + } + ] + }, + "SamplerOption": { + "anyOf": [ + { + "description": "Sample a given fraction. Fractions >= 1 will always sample.", + "type": "number", + "format": "double" + }, + { + "description": "#/definitions/Sampler", + "$ref": "#/definitions/Sampler" + } + ] + }, + "Sandbox": { + "description": "Configuration options pertaining to the sandbox page.", + "type": "object", + "properties": { + "enabled": { + "description": "Set to true to enable sandbox", + "default": false, + "type": "boolean" + } + }, + "additionalProperties": false + }, + "SelectorOrValue_for_GraphQLSelector": { + "anyOf": [ + { + "description": "#/definitions/AttributeValue", + "$ref": "#/definitions/AttributeValue" + }, + { + "description": "#/definitions/GraphQLSelector", + "$ref": "#/definitions/GraphQLSelector" + } + ] + }, + "SelectorOrValue_for_RouterSelector": { + "anyOf": [ + { + "description": "#/definitions/AttributeValue", + "$ref": "#/definitions/AttributeValue" + }, + { + "description": "#/definitions/RouterSelector", + "$ref": "#/definitions/RouterSelector" + } + ] + }, + "SelectorOrValue_for_SubgraphSelector": { + "anyOf": [ + { + "description": "#/definitions/AttributeValue", + "$ref": "#/definitions/AttributeValue" + }, + { + "description": "#/definitions/SubgraphSelector", + "$ref": "#/definitions/SubgraphSelector" + } + ] + }, + "SelectorOrValue_for_SupergraphSelector": { + "anyOf": [ + { + "description": "#/definitions/AttributeValue", + "$ref": "#/definitions/AttributeValue" + }, + { + "description": "#/definitions/SupergraphSelector", + "$ref": "#/definitions/SupergraphSelector" + } + ] + }, + "SocketEndpoint": { + "type": "string" + }, + "Source": { + "oneOf": [ + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "name": { + "description": "HTTP header expected to contain JWT", + "default": "authorization", + "type": "string" + }, + "type": { + "type": "string", + "enum": [ + "header" + ] + }, + "value_prefix": { + "description": "Header value prefix", + "default": "Bearer", + "type": "string" + } + }, + "additionalProperties": false + }, + { + "type": "object", + "required": [ + "name", + "type" + ], + "properties": { + "name": { + "description": "Name of the cookie containing the JWT", + "type": "string" + }, + "type": { + "type": "string", + "enum": [ + "cookie" + ] + } + }, + "additionalProperties": false + } + ] + }, + "SpanMode": { + "description": "Span mode to create new or deprecated spans", + "oneOf": [ + { + "description": "Keep the request span as root span and deprecated attributes. This option will eventually removed.", + "type": "string", + "enum": [ + "deprecated" + ] + }, + { + "description": "Use new OpenTelemetry spec compliant span attributes or preserve existing. This will be the default in future.", + "type": "string", + "enum": [ + "spec_compliant" + ] + } + ] + }, + "Spans": { + "type": "object", + "properties": { + "default_attribute_requirement_level": { + "description": "#/definitions/DefaultAttributeRequirementLevel", + "$ref": "#/definitions/DefaultAttributeRequirementLevel" + }, + "mode": { + "description": "#/definitions/SpanMode", + "$ref": "#/definitions/SpanMode" + }, + "router": { + "description": "#/definitions/RouterSpans", + "$ref": "#/definitions/RouterSpans" + }, + "subgraph": { + "description": "#/definitions/SubgraphSpans", + "$ref": "#/definitions/SubgraphSpans" + }, + "supergraph": { + "description": "#/definitions/SupergraphSpans", + "$ref": "#/definitions/SupergraphSpans" + } + }, + "additionalProperties": false + }, + "Standard": { + "type": "string", + "enum": [ + "duration", + "unit" + ] + }, + "StandardEventConfig_for_RouterSelector": { + "anyOf": [ + { + "description": "#/definitions/EventLevel", + "$ref": "#/definitions/EventLevel" + }, + { + "type": "object", + "required": [ + "condition", + "level" + ], + "properties": { + "condition": { + "description": "#/definitions/Condition_for_RouterSelector", + "$ref": "#/definitions/Condition_for_RouterSelector" + }, + "level": { + "description": "#/definitions/EventLevel", + "$ref": "#/definitions/EventLevel" + } + } + } + ] + }, + "StandardEventConfig_for_SubgraphSelector": { + "anyOf": [ + { + "description": "#/definitions/EventLevel", + "$ref": "#/definitions/EventLevel" + }, + { + "type": "object", + "required": [ + "condition", + "level" + ], + "properties": { + "condition": { + "description": "#/definitions/Condition_for_SubgraphSelector", + "$ref": "#/definitions/Condition_for_SubgraphSelector" + }, + "level": { + "description": "#/definitions/EventLevel", + "$ref": "#/definitions/EventLevel" + } + } + } + ] + }, + "StandardEventConfig_for_SupergraphSelector": { + "anyOf": [ + { + "description": "#/definitions/EventLevel", + "$ref": "#/definitions/EventLevel" + }, + { + "type": "object", + "required": [ + "condition", + "level" + ], + "properties": { + "condition": { + "description": "#/definitions/Condition_for_SupergraphSelector", + "$ref": "#/definitions/Condition_for_SupergraphSelector" + }, + "level": { + "description": "#/definitions/EventLevel", + "$ref": "#/definitions/EventLevel" + } + } + } + ] + }, + "StandardUnit": { + "type": "string", + "enum": [ + "unit" + ] + }, + "StdOut": { + "type": "object", + "properties": { + "enabled": { + "description": "Set to true to log to stdout.", + "default": true, + "type": "boolean" + }, + "format": { + "description": "#/definitions/logging_format", + "$ref": "#/definitions/logging_format" + }, + "rate_limit": { + "description": "#/definitions/RateLimit", + "$ref": "#/definitions/RateLimit" + }, + "tty_format": { + "description": "#/definitions/logging_format", + "$ref": "#/definitions/logging_format", + "nullable": true + } + }, + "additionalProperties": false + }, + "StrategyConfig": { + "description": "Algorithm for calculating the cost of an incoming query.", + "oneOf": [ + { + "description": "A simple, statically-defined cost mapping for operations and types.\n\nOperation costs: - Mutation: 10 - Query: 0 - Subscription 0\n\nType costs: - Object: 1 - Interface: 1 - Union: 1 - Scalar: 0 - Enum: 0", + "type": "object", + "required": [ + "static_estimated" + ], + "properties": { + "static_estimated": { + "type": "object", + "required": [ + "list_size", + "max" + ], + "properties": { + "list_size": { + "description": "The assumed length of lists returned by the operation.", + "type": "integer", + "format": "uint32", + "minimum": 0.0 + }, + "max": { + "description": "The maximum cost of a query", + "type": "number", + "format": "double" + } + }, + "additionalProperties": false + } + }, + "additionalProperties": false + } + ] + }, + "Subgraph": { + "description": "Per subgraph configuration for entity caching", + "type": "object", + "properties": { + "enabled": { + "description": "activates caching for this subgraph, overrides the global configuration", + "default": true, + "type": "boolean" + }, + "invalidation": { + "description": "#/definitions/SubgraphInvalidationConfig", + "$ref": "#/definitions/SubgraphInvalidationConfig", + "nullable": true + }, + "private_id": { + "description": "Context key used to separate cache sections per user", + "default": null, + "type": "string", + "nullable": true + }, + "redis": { + "description": "#/definitions/RedisCache", + "$ref": "#/definitions/RedisCache", + "nullable": true + }, + "ttl": { + "description": "#/definitions/Ttl", + "$ref": "#/definitions/Ttl", + "nullable": true + } + }, + "additionalProperties": false + }, + "SubgraphApq": { + "description": "Subgraph level Automatic Persisted Queries (APQ) configuration", + "type": "object", + "properties": { + "enabled": { + "description": "Enable", + "default": false, + "type": "boolean" + } + }, + "additionalProperties": false + }, + "SubgraphAttributes": { + "type": "object", + "properties": { + "subgraph.graphql.document": { + "description": "The GraphQL document being executed. Examples:\n\n* `query findBookById { bookById(id: ?) { name } }`\n\nRequirement level: Recommended", + "default": null, + "type": "boolean", + "nullable": true + }, + "subgraph.graphql.operation.name": { + "description": "The name of the operation being executed. Examples:\n\n* findBookById\n\nRequirement level: Recommended", + "default": null, + "type": "boolean", + "nullable": true + }, + "subgraph.graphql.operation.type": { + "description": "The type of the operation being executed. Examples:\n\n* query * subscription * mutation\n\nRequirement level: Recommended", + "default": null, + "type": "boolean", + "nullable": true + }, + "subgraph.name": { + "description": "The name of the subgraph Examples:\n\n* products\n\nRequirement level: Required", + "default": null, + "type": "boolean", + "nullable": true + } + }, + "additionalProperties": false + }, + "SubgraphAttributesConf": { + "description": "Configuration to add custom attributes/labels on metrics to subgraphs", + "type": "object", + "properties": { + "all": { + "description": "#/definitions/AttributesForwardConf", + "$ref": "#/definitions/AttributesForwardConf" + }, + "subgraphs": { + "description": "Attributes per subgraph", + "type": "object", + "additionalProperties": { + "description": "#/definitions/AttributesForwardConf", + "$ref": "#/definitions/AttributesForwardConf" + } + } + }, + "additionalProperties": false + }, + "SubgraphConfiguration_for_CommonBatchingConfig": { + "description": "Configuration options pertaining to the subgraph server component.", + "type": "object", + "properties": { + "all": { + "description": "#/definitions/CommonBatchingConfig", + "$ref": "#/definitions/CommonBatchingConfig" + }, + "subgraphs": { + "description": "per subgraph options", + "default": {}, + "type": "object", + "additionalProperties": { + "description": "#/definitions/CommonBatchingConfig", + "$ref": "#/definitions/CommonBatchingConfig" + } + } + } + }, + "SubgraphConfiguration_for_Subgraph": { + "description": "Configuration options pertaining to the subgraph server component.", + "type": "object", + "properties": { + "all": { + "description": "#/definitions/Subgraph", + "$ref": "#/definitions/Subgraph" + }, + "subgraphs": { + "description": "per subgraph options", + "default": {}, + "type": "object", + "additionalProperties": { + "description": "#/definitions/Subgraph", + "$ref": "#/definitions/Subgraph" + } + } + } + }, + "SubgraphConfiguration_for_SubgraphApq": { + "description": "Configuration options pertaining to the subgraph server component.", + "type": "object", + "properties": { + "all": { + "description": "#/definitions/SubgraphApq", + "$ref": "#/definitions/SubgraphApq" + }, + "subgraphs": { + "description": "per subgraph options", + "default": {}, + "type": "object", + "additionalProperties": { + "description": "#/definitions/SubgraphApq", + "$ref": "#/definitions/SubgraphApq" + } + } + } + }, + "SubgraphConfiguration_for_TlsClient": { + "description": "Configuration options pertaining to the subgraph server component.", + "type": "object", + "properties": { + "all": { + "description": "#/definitions/TlsClient", + "$ref": "#/definitions/TlsClient" + }, + "subgraphs": { + "description": "per subgraph options", + "default": {}, + "type": "object", + "additionalProperties": { + "description": "#/definitions/TlsClient", + "$ref": "#/definitions/TlsClient" + } + } + } + }, + "SubgraphErrorConfig": { + "type": "object", + "properties": { + "all": { + "description": "#/definitions/ErrorConfiguration", + "$ref": "#/definitions/ErrorConfiguration" + }, + "subgraphs": { + "description": "Handling of errors coming from specified subgraphs", + "type": "object", + "additionalProperties": { + "description": "#/definitions/ErrorConfiguration", + "$ref": "#/definitions/ErrorConfiguration" + } + } + }, + "additionalProperties": false + }, + "SubgraphEventsConfig": { + "type": "object", + "properties": { + "error": { + "description": "#/definitions/StandardEventConfig_for_SubgraphSelector", + "$ref": "#/definitions/StandardEventConfig_for_SubgraphSelector" + }, + "request": { + "description": "#/definitions/StandardEventConfig_for_SubgraphSelector", + "$ref": "#/definitions/StandardEventConfig_for_SubgraphSelector" + }, + "response": { + "description": "#/definitions/StandardEventConfig_for_SubgraphSelector", + "$ref": "#/definitions/StandardEventConfig_for_SubgraphSelector" + } + }, + "additionalProperties": false + }, + "SubgraphInstrumentsConfig": { + "type": "object", + "properties": { + "http.client.request.body.size": { + "description": "#/definitions/DefaultedStandardInstrument_for_extendable_attribute_apollo_router::plugins::telemetry::config_new::attributes::SubgraphAttributes_apollo_router::plugins::telemetry::config_new::selectors::SubgraphSelector", + "$ref": "#/definitions/DefaultedStandardInstrument_for_extendable_attribute_apollo_router::plugins::telemetry::config_new::attributes::SubgraphAttributes_apollo_router::plugins::telemetry::config_new::selectors::SubgraphSelector" + }, + "http.client.request.duration": { + "description": "#/definitions/DefaultedStandardInstrument_for_extendable_attribute_apollo_router::plugins::telemetry::config_new::attributes::SubgraphAttributes_apollo_router::plugins::telemetry::config_new::selectors::SubgraphSelector", + "$ref": "#/definitions/DefaultedStandardInstrument_for_extendable_attribute_apollo_router::plugins::telemetry::config_new::attributes::SubgraphAttributes_apollo_router::plugins::telemetry::config_new::selectors::SubgraphSelector" + }, + "http.client.response.body.size": { + "description": "#/definitions/DefaultedStandardInstrument_for_extendable_attribute_apollo_router::plugins::telemetry::config_new::attributes::SubgraphAttributes_apollo_router::plugins::telemetry::config_new::selectors::SubgraphSelector", + "$ref": "#/definitions/DefaultedStandardInstrument_for_extendable_attribute_apollo_router::plugins::telemetry::config_new::attributes::SubgraphAttributes_apollo_router::plugins::telemetry::config_new::selectors::SubgraphSelector" + } + }, + "additionalProperties": false + }, + "SubgraphInvalidationConfig": { + "type": "object", + "properties": { + "enabled": { + "description": "Enable the invalidation", + "default": false, + "type": "boolean" + }, + "shared_key": { + "description": "Shared key needed to request the invalidation endpoint", + "default": "", + "type": "string" + } + }, + "additionalProperties": false + }, + "SubgraphPassthroughMode": { + "type": "object", + "properties": { + "all": { + "description": "#/definitions/WebSocketConfiguration", + "$ref": "#/definitions/WebSocketConfiguration", + "nullable": true + }, + "subgraphs": { + "description": "Configuration for specific subgraphs", + "default": {}, + "type": "object", + "additionalProperties": { + "description": "#/definitions/WebSocketConfiguration", + "$ref": "#/definitions/WebSocketConfiguration" + } + } + }, + "additionalProperties": false + }, + "SubgraphQuery": { + "oneOf": [ + { + "description": "The raw query kind.", + "type": "string", + "enum": [ + "string" + ] + } + ] + }, + "SubgraphRequestConf": { + "description": "What information is passed to a subgraph request/response stage", + "type": "object", + "properties": { + "body": { + "description": "Send the body", + "default": false, + "type": "boolean" + }, + "condition": { + "description": "#/definitions/Condition_for_SubgraphSelector", + "$ref": "#/definitions/Condition_for_SubgraphSelector", + "nullable": true + }, + "context": { + "description": "Send the context", + "default": false, + "type": "boolean" + }, + "headers": { + "description": "Send the headers", + "default": false, + "type": "boolean" + }, + "method": { + "description": "Send the method URI", + "default": false, + "type": "boolean" + }, + "service_name": { + "description": "Send the service name", + "default": false, + "type": "boolean" + }, + "uri": { + "description": "Send the subgraph URI", + "default": false, + "type": "boolean" + } + }, + "additionalProperties": false + }, + "SubgraphResponseConf": { + "description": "What information is passed to a subgraph request/response stage", + "type": "object", + "properties": { + "body": { + "description": "Send the body", + "default": false, + "type": "boolean" + }, + "condition": { + "description": "#/definitions/Condition_for_SubgraphSelector", + "$ref": "#/definitions/Condition_for_SubgraphSelector", + "nullable": true + }, + "context": { + "description": "Send the context", + "default": false, + "type": "boolean" + }, + "headers": { + "description": "Send the headers", + "default": false, + "type": "boolean" + }, + "service_name": { + "description": "Send the service name", + "default": false, + "type": "boolean" + }, + "status_code": { + "description": "Send the http status", + "default": false, + "type": "boolean" + } + }, + "additionalProperties": false + }, + "SubgraphSelector": { + "anyOf": [ + { + "type": "object", + "required": [ + "subgraph_operation_name" + ], + "properties": { + "default": { + "description": "Optional default value.", + "type": "string", + "nullable": true + }, + "subgraph_operation_name": { + "description": "#/definitions/OperationName", + "$ref": "#/definitions/OperationName" + } + }, + "additionalProperties": false + }, + { + "type": "object", + "required": [ + "subgraph_operation_kind" + ], + "properties": { + "subgraph_operation_kind": { + "description": "#/definitions/OperationKind", + "$ref": "#/definitions/OperationKind" + } + }, + "additionalProperties": false + }, + { + "type": "object", + "required": [ + "subgraph_name" + ], + "properties": { + "subgraph_name": { + "description": "The subgraph name", + "type": "boolean" + } + }, + "additionalProperties": false + }, + { + "type": "object", + "required": [ + "subgraph_query" + ], + "properties": { + "default": { + "description": "Optional default value.", + "type": "string", + "nullable": true + }, + "subgraph_query": { + "description": "#/definitions/SubgraphQuery", + "$ref": "#/definitions/SubgraphQuery" + } + }, + "additionalProperties": false + }, + { + "type": "object", + "required": [ + "subgraph_query_variable" + ], + "properties": { + "default": { + "description": "#/definitions/AttributeValue", + "$ref": "#/definitions/AttributeValue", + "nullable": true + }, + "subgraph_query_variable": { + "description": "The name of a subgraph query variable.", + "type": "string" + } + }, + "additionalProperties": false + }, + { + "description": "Deprecated, use SubgraphResponseData and SubgraphResponseError instead", + "type": "object", + "required": [ + "subgraph_response_body" + ], + "properties": { + "default": { + "description": "#/definitions/AttributeValue", + "$ref": "#/definitions/AttributeValue", + "nullable": true + }, + "subgraph_response_body": { + "description": "The subgraph response body json path.", + "type": "string" + } + }, + "additionalProperties": false + }, + { + "type": "object", + "required": [ + "subgraph_response_data" + ], + "properties": { + "default": { + "description": "#/definitions/AttributeValue", + "$ref": "#/definitions/AttributeValue", + "nullable": true + }, + "subgraph_response_data": { + "description": "The subgraph response body json path.", + "type": "string" + } + }, + "additionalProperties": false + }, + { + "type": "object", + "required": [ + "subgraph_response_errors" + ], + "properties": { + "default": { + "description": "#/definitions/AttributeValue", + "$ref": "#/definitions/AttributeValue", + "nullable": true + }, + "subgraph_response_errors": { + "description": "The subgraph response body json path.", + "type": "string" + } + }, + "additionalProperties": false + }, + { + "type": "object", + "required": [ + "subgraph_request_header" + ], + "properties": { + "default": { + "description": "Optional default value.", + "type": "string", + "nullable": true + }, + "subgraph_request_header": { + "description": "The name of a subgraph request header.", + "type": "string" + } + }, + "additionalProperties": false + }, + { + "type": "object", + "required": [ + "subgraph_response_header" + ], + "properties": { + "default": { + "description": "Optional default value.", + "type": "string", + "nullable": true + }, + "subgraph_response_header": { + "description": "The name of a subgraph response header.", + "type": "string" + } + }, + "additionalProperties": false + }, + { + "type": "object", + "required": [ + "subgraph_response_status" + ], + "properties": { + "subgraph_response_status": { + "description": "#/definitions/ResponseStatus", + "$ref": "#/definitions/ResponseStatus" + } + }, + "additionalProperties": false + }, + { + "type": "object", + "required": [ + "supergraph_operation_name" + ], + "properties": { + "default": { + "description": "Optional default value.", + "type": "string", + "nullable": true + }, + "supergraph_operation_name": { + "description": "#/definitions/OperationName", + "$ref": "#/definitions/OperationName" + } + }, + "additionalProperties": false + }, + { + "type": "object", + "required": [ + "supergraph_operation_kind" + ], + "properties": { + "supergraph_operation_kind": { + "description": "#/definitions/OperationKind", + "$ref": "#/definitions/OperationKind" + } + }, + "additionalProperties": false + }, + { + "type": "object", + "required": [ + "supergraph_query" + ], + "properties": { + "default": { + "description": "Optional default value.", + "type": "string", + "nullable": true + }, + "supergraph_query": { + "description": "#/definitions/Query", + "$ref": "#/definitions/Query" + } + }, + "additionalProperties": false + }, + { + "type": "object", + "required": [ + "supergraph_query_variable" + ], + "properties": { + "default": { + "description": "#/definitions/AttributeValue", + "$ref": "#/definitions/AttributeValue", + "nullable": true + }, + "supergraph_query_variable": { + "description": "The supergraph query variable name.", + "type": "string" + } + }, + "additionalProperties": false + }, + { + "type": "object", + "required": [ + "supergraph_request_header" + ], + "properties": { + "default": { + "description": "Optional default value.", + "type": "string", + "nullable": true + }, + "supergraph_request_header": { + "description": "The supergraph request header name.", + "type": "string" + } + }, + "additionalProperties": false + }, + { + "type": "object", + "required": [ + "request_context" + ], + "properties": { + "default": { + "description": "#/definitions/AttributeValue", + "$ref": "#/definitions/AttributeValue", + "nullable": true + }, + "request_context": { + "description": "The request context key.", + "type": "string" + } + }, + "additionalProperties": false + }, + { + "type": "object", + "required": [ + "response_context" + ], + "properties": { + "default": { + "description": "#/definitions/AttributeValue", + "$ref": "#/definitions/AttributeValue", + "nullable": true + }, + "response_context": { + "description": "The response context key.", + "type": "string" + } + }, + "additionalProperties": false + }, + { + "type": "object", + "required": [ + "subgraph_on_graphql_error" + ], + "properties": { + "subgraph_on_graphql_error": { + "description": "Boolean set to true if the response body contains graphql error", + "type": "boolean" + } + }, + "additionalProperties": false + }, + { + "type": "object", + "required": [ + "baggage" + ], + "properties": { + "baggage": { + "description": "The name of the baggage item.", + "type": "string" + }, + "default": { + "description": "#/definitions/AttributeValue", + "$ref": "#/definitions/AttributeValue", + "nullable": true + } + }, + "additionalProperties": false + }, + { + "type": "object", + "required": [ + "env" + ], + "properties": { + "default": { + "description": "Optional default value.", + "type": "string", + "nullable": true + }, + "env": { + "description": "The name of the environment variable", + "type": "string" + } + }, + "additionalProperties": false + }, + { + "description": "Deprecated, should not be used anymore, use static field instead", + "type": "string" + }, + { + "type": "object", + "required": [ + "static" + ], + "properties": { + "static": { + "description": "#/definitions/AttributeValue", + "$ref": "#/definitions/AttributeValue" + } + }, + "additionalProperties": false + }, + { + "type": "object", + "required": [ + "error" + ], + "properties": { + "error": { + "description": "#/definitions/ErrorRepr", + "$ref": "#/definitions/ErrorRepr" + } + }, + "additionalProperties": false + }, + { + "type": "object", + "required": [ + "cache" + ], + "properties": { + "cache": { + "description": "#/definitions/CacheKind", + "$ref": "#/definitions/CacheKind" + }, + "entity_type": { + "description": "#/definitions/EntityType", + "$ref": "#/definitions/EntityType", + "nullable": true + } + }, + "additionalProperties": false + } + ] + }, + "SubgraphShaping": { + "description": "Traffic shaping options", + "type": "object", + "properties": { + "compression": { + "description": "#/definitions/Compression", + "$ref": "#/definitions/Compression", + "nullable": true + }, + "deduplicate_query": { + "description": "Enable query deduplication", + "type": "boolean", + "nullable": true + }, + "experimental_http2": { + "description": "#/definitions/Http2Config", + "$ref": "#/definitions/Http2Config", + "nullable": true + }, + "experimental_retry": { + "description": "#/definitions/RetryConfig", + "$ref": "#/definitions/RetryConfig", + "nullable": true + }, + "global_rate_limit": { + "description": "#/definitions/RateLimitConf", + "$ref": "#/definitions/RateLimitConf", + "nullable": true + }, + "timeout": { + "description": "Enable timeout for incoming requests", + "default": null, + "type": "string" + } + }, + "additionalProperties": false + }, + "SubgraphSpans": { + "type": "object", + "properties": { + "attributes": { + "description": "#/definitions/extendable_attribute_apollo_router::plugins::telemetry::config_new::attributes::SubgraphAttributes_apollo_router::plugins::telemetry::config_new::conditional::Conditional", + "$ref": "#/definitions/extendable_attribute_apollo_router::plugins::telemetry::config_new::attributes::SubgraphAttributes_apollo_router::plugins::telemetry::config_new::conditional::Conditional" + } + }, + "additionalProperties": false + }, + "SubgraphStage": { + "description": "What information is passed to a subgraph request/response stage", + "type": "object", + "properties": { + "request": { + "description": "#/definitions/SubgraphRequestConf", + "$ref": "#/definitions/SubgraphRequestConf" + }, + "response": { + "description": "#/definitions/SubgraphResponseConf", + "$ref": "#/definitions/SubgraphResponseConf" + } + }, + "additionalProperties": false + }, + "SubgraphStages": { + "description": "What information is passed to a subgraph request/response stage", + "type": "object", + "properties": { + "all": { + "description": "#/definitions/SubgraphStage", + "$ref": "#/definitions/SubgraphStage" + } + }, + "additionalProperties": false + }, + "SubgraphValue": { + "anyOf": [ + { + "description": "#/definitions/Standard", + "$ref": "#/definitions/Standard" + }, + { + "description": "#/definitions/SubgraphSelector", + "$ref": "#/definitions/SubgraphSelector" + } + ] + }, + "SubscriptionConfig": { + "description": "Subscriptions configuration", + "type": "object", + "properties": { + "enable_deduplication": { + "description": "Enable the deduplication of subscription (for example if we detect the exact same request to subgraph we won't open a new websocket to the subgraph in passthrough mode) (default: true)", + "default": true, + "type": "boolean" + }, + "enabled": { + "description": "Enable subscription", + "default": true, + "type": "boolean" + }, + "max_opened_subscriptions": { + "description": "This 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, + "type": "integer", + "format": "uint", + "minimum": 0.0, + "nullable": true + }, + "mode": { + "description": "#/definitions/SubscriptionModeConfig", + "$ref": "#/definitions/SubscriptionModeConfig" + }, + "queue_capacity": { + "description": "It represent the capacity of the in memory queue to know how many events we can keep in a buffer", + "default": null, + "type": "integer", + "format": "uint", + "minimum": 0.0, + "nullable": true + } + }, + "additionalProperties": false + }, + "SubscriptionModeConfig": { + "type": "object", + "properties": { + "callback": { + "description": "#/definitions/CallbackMode", + "$ref": "#/definitions/CallbackMode", + "nullable": true + }, + "passthrough": { + "description": "#/definitions/SubgraphPassthroughMode", + "$ref": "#/definitions/SubgraphPassthroughMode", + "nullable": true + } + }, + "additionalProperties": false + }, + "Supergraph": { + "description": "Configuration options pertaining to the supergraph server component.", + "type": "object", + "properties": { + "defer_support": { + "description": "Set to false to disable defer support", + "default": true, + "type": "boolean" + }, + "early_cancel": { + "description": "abort request handling when the client drops the connection. Default: false. When set to true, some parts of the request pipeline like telemetry will not work properly, but request handling will stop immediately when the client connection is closed.", + "default": false, + "type": "boolean" + }, + "experimental_log_on_broken_pipe": { + "description": "Log a message if the client closes the connection before the response is sent. Default: false.", + "default": false, + "type": "boolean" + }, + "experimental_reuse_query_fragments": { + "description": "Enable reuse of query fragments Default: depends on the federation version", + "default": null, + "type": "boolean", + "nullable": true + }, + "generate_query_fragments": { + "description": "Enable QP generation of fragments for subgraph requests Default: false", + "default": false, + "type": "boolean" + }, + "introspection": { + "description": "Enable introspection Default: false", + "default": false, + "type": "boolean" + }, + "listen": { + "description": "#/definitions/ListenAddr", + "$ref": "#/definitions/ListenAddr" + }, + "path": { + "description": "The HTTP path on which GraphQL requests will be served. default: \"/\"", + "default": "/", + "type": "string" + }, + "query_planning": { + "description": "#/definitions/QueryPlanning", + "$ref": "#/definitions/QueryPlanning" + } + }, + "additionalProperties": false + }, + "SupergraphAttributes": { + "description": "Attributes for Cost", + "type": "object", + "properties": { + "cost.actual": { + "description": "The actual cost of the operation using the currently configured cost model", + "default": null, + "type": "boolean", + "nullable": true + }, + "cost.delta": { + "description": "The delta (estimated - actual) cost of the operation using the currently configured cost model", + "default": null, + "type": "boolean", + "nullable": true + }, + "cost.estimated": { + "description": "The estimated cost of the operation using the currently configured cost model", + "default": null, + "type": "boolean", + "nullable": true + }, + "cost.result": { + "description": "The cost result, this is an error code returned by the cost calculation or COST_OK", + "default": null, + "type": "boolean", + "nullable": true + }, + "graphql.document": { + "description": "The GraphQL document being executed. Examples:\n\n* `query findBookById { bookById(id: ?) { name } }`\n\nRequirement level: Recommended", + "default": null, + "type": "boolean", + "nullable": true + }, + "graphql.operation.name": { + "description": "The name of the operation being executed. Examples:\n\n* findBookById\n\nRequirement level: Recommended", + "default": null, + "type": "boolean", + "nullable": true + }, + "graphql.operation.type": { + "description": "The type of the operation being executed. Examples:\n\n* query * subscription * mutation\n\nRequirement level: Recommended", + "default": null, + "type": "boolean", + "nullable": true + } + }, + "additionalProperties": false + }, + "SupergraphEventsConfig": { + "type": "object", + "properties": { + "error": { + "description": "#/definitions/StandardEventConfig_for_SupergraphSelector", + "$ref": "#/definitions/StandardEventConfig_for_SupergraphSelector" + }, + "request": { + "description": "#/definitions/StandardEventConfig_for_SupergraphSelector", + "$ref": "#/definitions/StandardEventConfig_for_SupergraphSelector" + }, + "response": { + "description": "#/definitions/StandardEventConfig_for_SupergraphSelector", + "$ref": "#/definitions/StandardEventConfig_for_SupergraphSelector" + } + }, + "additionalProperties": false + }, + "SupergraphInstrumentsConfig": { + "type": "object", + "properties": { + "cost.actual": { + "description": "#/definitions/DefaultedStandardInstrument_for_extendable_attribute_apollo_router::plugins::telemetry::config_new::attributes::SupergraphAttributes_apollo_router::plugins::telemetry::config_new::selectors::SupergraphSelector", + "$ref": "#/definitions/DefaultedStandardInstrument_for_extendable_attribute_apollo_router::plugins::telemetry::config_new::attributes::SupergraphAttributes_apollo_router::plugins::telemetry::config_new::selectors::SupergraphSelector" + }, + "cost.delta": { + "description": "#/definitions/DefaultedStandardInstrument_for_extendable_attribute_apollo_router::plugins::telemetry::config_new::attributes::SupergraphAttributes_apollo_router::plugins::telemetry::config_new::selectors::SupergraphSelector", + "$ref": "#/definitions/DefaultedStandardInstrument_for_extendable_attribute_apollo_router::plugins::telemetry::config_new::attributes::SupergraphAttributes_apollo_router::plugins::telemetry::config_new::selectors::SupergraphSelector" + }, + "cost.estimated": { + "description": "#/definitions/DefaultedStandardInstrument_for_extendable_attribute_apollo_router::plugins::telemetry::config_new::attributes::SupergraphAttributes_apollo_router::plugins::telemetry::config_new::selectors::SupergraphSelector", + "$ref": "#/definitions/DefaultedStandardInstrument_for_extendable_attribute_apollo_router::plugins::telemetry::config_new::attributes::SupergraphAttributes_apollo_router::plugins::telemetry::config_new::selectors::SupergraphSelector" + } + }, + "additionalProperties": false + }, + "SupergraphRequestConf": { + "description": "What information is passed to a router request/response stage", + "type": "object", + "properties": { + "body": { + "description": "Send the body", + "default": false, + "type": "boolean" + }, + "condition": { + "description": "#/definitions/Condition_for_SupergraphSelector", + "$ref": "#/definitions/Condition_for_SupergraphSelector", + "nullable": true + }, + "context": { + "description": "Send the context", + "default": false, + "type": "boolean" + }, + "headers": { + "description": "Send the headers", + "default": false, + "type": "boolean" + }, + "method": { + "description": "Send the method", + "default": false, + "type": "boolean" + }, + "sdl": { + "description": "Send the SDL", + "default": false, + "type": "boolean" + } + }, + "additionalProperties": false + }, + "SupergraphResponseConf": { + "description": "What information is passed to a router request/response stage", + "type": "object", + "properties": { + "body": { + "description": "Send the body", + "default": false, + "type": "boolean" + }, + "condition": { + "description": "#/definitions/Condition_for_SupergraphSelector", + "$ref": "#/definitions/Condition_for_SupergraphSelector", + "nullable": true + }, + "context": { + "description": "Send the context", + "default": false, + "type": "boolean" + }, + "headers": { + "description": "Send the headers", + "default": false, + "type": "boolean" + }, + "sdl": { + "description": "Send the SDL", + "default": false, + "type": "boolean" + }, + "status_code": { + "description": "Send the HTTP status", + "default": false, + "type": "boolean" + } + }, + "additionalProperties": false + }, + "SupergraphSelector": { + "anyOf": [ + { + "type": "object", + "required": [ + "operation_name" + ], + "properties": { + "default": { + "description": "Optional default value.", + "type": "string", + "nullable": true + }, + "operation_name": { + "description": "#/definitions/OperationName", + "$ref": "#/definitions/OperationName" + } + }, + "additionalProperties": false + }, + { + "type": "object", + "required": [ + "operation_kind" + ], + "properties": { + "operation_kind": { + "description": "#/definitions/OperationKind", + "$ref": "#/definitions/OperationKind" + } + }, + "additionalProperties": false + }, + { + "type": "object", + "required": [ + "query" + ], + "properties": { + "default": { + "description": "Optional default value.", + "type": "string", + "nullable": true + }, + "query": { + "description": "#/definitions/Query", + "$ref": "#/definitions/Query" + } + }, + "additionalProperties": false + }, + { + "type": "object", + "required": [ + "query_variable" + ], + "properties": { + "default": { + "description": "#/definitions/AttributeValue", + "$ref": "#/definitions/AttributeValue", + "nullable": true + }, + "query_variable": { + "description": "The name of a graphql query variable.", + "type": "string" + } + }, + "additionalProperties": false + }, + { + "type": "object", + "required": [ + "request_header" + ], + "properties": { + "default": { + "description": "Optional default value.", + "type": "string", + "nullable": true + }, + "request_header": { + "description": "The name of the request header.", + "type": "string" + } + }, + "additionalProperties": false + }, + { + "type": "object", + "required": [ + "response_header" + ], + "properties": { + "default": { + "description": "Optional default value.", + "type": "string", + "nullable": true + }, + "response_header": { + "description": "The name of the response header.", + "type": "string" + } + }, + "additionalProperties": false + }, + { + "description": "A status from the response", + "type": "object", + "required": [ + "response_status" + ], + "properties": { + "response_status": { + "description": "#/definitions/ResponseStatus", + "$ref": "#/definitions/ResponseStatus" + } + }, + "additionalProperties": false + }, + { + "type": "object", + "required": [ + "request_context" + ], + "properties": { + "default": { + "description": "#/definitions/AttributeValue", + "$ref": "#/definitions/AttributeValue", + "nullable": true + }, + "request_context": { + "description": "The request context key.", + "type": "string" + } + }, + "additionalProperties": false + }, + { + "type": "object", + "required": [ + "response_context" + ], + "properties": { + "default": { + "description": "#/definitions/AttributeValue", + "$ref": "#/definitions/AttributeValue", + "nullable": true + }, + "response_context": { + "description": "The response context key.", + "type": "string" + } + }, + "additionalProperties": false + }, + { + "type": "object", + "required": [ + "response_data" + ], + "properties": { + "default": { + "description": "#/definitions/AttributeValue", + "$ref": "#/definitions/AttributeValue", + "nullable": true + }, + "response_data": { + "description": "The supergraph response body json path of the chunks.", + "type": "string" + } + }, + "additionalProperties": false + }, + { + "type": "object", + "required": [ + "response_errors" + ], + "properties": { + "default": { + "description": "#/definitions/AttributeValue", + "$ref": "#/definitions/AttributeValue", + "nullable": true + }, + "response_errors": { + "description": "The supergraph response body json path of the chunks.", + "type": "string" + } + }, + "additionalProperties": false + }, + { + "type": "object", + "required": [ + "baggage" + ], + "properties": { + "baggage": { + "description": "The name of the baggage item.", + "type": "string" + }, + "default": { + "description": "#/definitions/AttributeValue", + "$ref": "#/definitions/AttributeValue", + "nullable": true + } + }, + "additionalProperties": false + }, + { + "type": "object", + "required": [ + "env" + ], + "properties": { + "default": { + "description": "Optional default value.", + "type": "string", + "nullable": true + }, + "env": { + "description": "The name of the environment variable", + "type": "string" + } + }, + "additionalProperties": false + }, + { + "description": "Deprecated, should not be used anymore, use static field instead", + "type": "string" + }, + { + "type": "object", + "required": [ + "static" + ], + "properties": { + "static": { + "description": "#/definitions/AttributeValue", + "$ref": "#/definitions/AttributeValue" + } + }, + "additionalProperties": false + }, + { + "type": "object", + "required": [ + "on_graphql_error" + ], + "properties": { + "on_graphql_error": { + "description": "Boolean set to true if the response body contains graphql error", + "type": "boolean" + } + }, + "additionalProperties": false + }, + { + "type": "object", + "required": [ + "error" + ], + "properties": { + "error": { + "description": "#/definitions/ErrorRepr", + "$ref": "#/definitions/ErrorRepr" + } + }, + "additionalProperties": false + }, + { + "description": "Cost attributes", + "type": "object", + "required": [ + "cost" + ], + "properties": { + "cost": { + "description": "#/definitions/CostValue", + "$ref": "#/definitions/CostValue" + } + }, + "additionalProperties": false + }, + { + "description": "Boolean returning true if it's the primary response and not events like subscription events or deferred responses", + "type": "object", + "required": [ + "is_primary_response" + ], + "properties": { + "is_primary_response": { + "description": "Boolean returning true if it's the primary response and not events like subscription events or deferred responses", + "type": "boolean" + } + }, + "additionalProperties": false + } + ] + }, + "SupergraphSpans": { + "type": "object", + "properties": { + "attributes": { + "description": "#/definitions/extendable_attribute_apollo_router::plugins::telemetry::config_new::attributes::SupergraphAttributes_apollo_router::plugins::telemetry::config_new::conditional::Conditional", + "$ref": "#/definitions/extendable_attribute_apollo_router::plugins::telemetry::config_new::attributes::SupergraphAttributes_apollo_router::plugins::telemetry::config_new::conditional::Conditional" + } + }, + "additionalProperties": false + }, + "SupergraphStage": { + "type": "object", + "properties": { + "request": { + "description": "#/definitions/SupergraphRequestConf", + "$ref": "#/definitions/SupergraphRequestConf" + }, + "response": { + "description": "#/definitions/SupergraphResponseConf", + "$ref": "#/definitions/SupergraphResponseConf" + } + } + }, + "SupergraphValue": { + "anyOf": [ + { + "description": "#/definitions/Standard", + "$ref": "#/definitions/Standard" + }, + { + "description": "#/definitions/Event_for_SupergraphSelector", + "$ref": "#/definitions/Event_for_SupergraphSelector" + }, + { + "description": "#/definitions/SupergraphSelector", + "$ref": "#/definitions/SupergraphSelector" + } + ] + }, + "Temporality": { + "oneOf": [ + { + "description": "Export cumulative metrics.", + "type": "string", + "enum": [ + "cumulative" + ] + }, + { + "description": "Export delta metrics. `Delta` should be used when exporting to DataDog Agent.", + "type": "string", + "enum": [ + "delta" + ] + } + ] + }, + "Tls": { + "description": "TLS related configuration options.", + "type": "object", + "properties": { + "subgraph": { + "description": "#/definitions/SubgraphConfiguration_for_TlsClient", + "$ref": "#/definitions/SubgraphConfiguration_for_TlsClient" + }, + "supergraph": { + "description": "#/definitions/TlsSupergraph", + "$ref": "#/definitions/TlsSupergraph", + "nullable": true + } + }, + "additionalProperties": false + }, + "TlsClient": { + "description": "Configuration options pertaining to the subgraph server component.", + "type": "object", + "properties": { + "certificate_authorities": { + "description": "list of certificate authorities in PEM format", + "default": null, + "type": "string", + "nullable": true + }, + "client_authentication": { + "description": "#/definitions/TlsClientAuth", + "$ref": "#/definitions/TlsClientAuth", + "nullable": true + } + }, + "additionalProperties": false + }, + "TlsClientAuth": { + "description": "TLS client authentication", + "type": "object", + "required": [ + "certificate_chain", + "key" + ], + "properties": { + "certificate_chain": { + "description": "list of certificates in PEM format", + "writeOnly": true, + "type": "string" + }, + "key": { + "description": "key in PEM format", + "writeOnly": true, + "type": "string" + } + }, + "additionalProperties": false + }, + "TlsSupergraph": { + "description": "Configuration options pertaining to the supergraph server component.", + "type": "object", + "required": [ + "certificate", + "certificate_chain", + "key" + ], + "properties": { + "certificate": { + "description": "server certificate in PEM format", + "writeOnly": true, + "type": "string" + }, + "certificate_chain": { + "description": "list of certificate authorities in PEM format", + "writeOnly": true, + "type": "string" + }, + "key": { + "description": "server key in PEM format", + "writeOnly": true, + "type": "string" + } + }, + "additionalProperties": false + }, + "TraceIdFormat": { + "oneOf": [ + { + "description": "Format the Trace ID as a hexadecimal number\n\n(e.g. Trace ID 16 -> 00000000000000000000000000000010)", + "type": "string", + "enum": [ + "hexadecimal" + ] + }, + { + "description": "Format the Trace ID as a hexadecimal number\n\n(e.g. Trace ID 16 -> 00000000000000000000000000000010)", + "type": "string", + "enum": [ + "open_telemetry" + ] + }, + { + "description": "Format the Trace ID as a decimal number\n\n(e.g. Trace ID 16 -> 16)", + "type": "string", + "enum": [ + "decimal" + ] + }, + { + "description": "Datadog", + "type": "string", + "enum": [ + "datadog" + ] + }, + { + "description": "UUID format with dashes (eg. 67e55044-10b1-426f-9247-bb680e5fe0c8)", + "type": "string", + "enum": [ + "uuid" + ] + } + ] + }, + "Tracing": { + "description": "Tracing configuration", + "type": "object", + "properties": { + "common": { + "description": "#/definitions/TracingCommon", + "$ref": "#/definitions/TracingCommon" + }, + "datadog": { + "description": "#/definitions/Config14", + "$ref": "#/definitions/Config14" + }, + "experimental_response_trace_id": { + "description": "#/definitions/ExposeTraceId", + "$ref": "#/definitions/ExposeTraceId" + }, + "jaeger": { + "description": "#/definitions/Config12", + "$ref": "#/definitions/Config12" + }, + "otlp": { + "description": "#/definitions/Config10", + "$ref": "#/definitions/Config10" + }, + "propagation": { + "description": "#/definitions/Propagation", + "$ref": "#/definitions/Propagation" + }, + "zipkin": { + "description": "#/definitions/Config13", + "$ref": "#/definitions/Config13" + } + }, + "additionalProperties": false + }, + "TracingCommon": { + "type": "object", + "properties": { + "max_attributes_per_event": { + "description": "The maximum attributes per event before discarding", + "default": 128, + "type": "integer", + "format": "uint32", + "minimum": 0.0 + }, + "max_attributes_per_link": { + "description": "The maximum attributes per link before discarding", + "default": 128, + "type": "integer", + "format": "uint32", + "minimum": 0.0 + }, + "max_attributes_per_span": { + "description": "The maximum attributes per span before discarding", + "default": 128, + "type": "integer", + "format": "uint32", + "minimum": 0.0 + }, + "max_events_per_span": { + "description": "The maximum events per span before discarding", + "default": 128, + "type": "integer", + "format": "uint32", + "minimum": 0.0 + }, + "max_links_per_span": { + "description": "The maximum links per span before discarding", + "default": 128, + "type": "integer", + "format": "uint32", + "minimum": 0.0 + }, + "parent_based_sampler": { + "description": "Whether to use parent based sampling", + "default": true, + "type": "boolean" + }, + "resource": { + "description": "The Open Telemetry resource", + "default": {}, + "type": "object", + "additionalProperties": { + "description": "#/definitions/AttributeValue", + "$ref": "#/definitions/AttributeValue" + } + }, + "sampler": { + "description": "#/definitions/SamplerOption", + "$ref": "#/definitions/SamplerOption" + }, + "service_name": { + "description": "The trace service name", + "default": null, + "type": "string", + "nullable": true + }, + "service_namespace": { + "description": "The trace service namespace", + "default": null, + "type": "string", + "nullable": true + } + }, + "additionalProperties": false + }, + "Ttl": { + "description": "Per subgraph configuration for entity caching", + "type": "string" + }, + "TypeName": { + "oneOf": [ + { + "description": "The GraphQL type name", + "type": "string", + "enum": [ + "string" + ] + } + ] + }, + "UriEndpoint": { + "type": "string" + }, + "WebSocketConfiguration": { + "description": "WebSocket configuration for a specific subgraph", + "type": "object", + "properties": { + "heartbeat_interval": { + "description": "#/definitions/HeartbeatInterval", + "$ref": "#/definitions/HeartbeatInterval" + }, + "path": { + "description": "Path on which WebSockets are listening", + "default": null, + "type": "string", + "nullable": true + }, + "protocol": { + "description": "#/definitions/WebSocketProtocol", + "$ref": "#/definitions/WebSocketProtocol" + } + }, + "additionalProperties": false + }, + "WebSocketProtocol": { + "type": "string", + "enum": [ + "graphql_ws", + "graphql_transport_ws" + ] + }, + "conditional_attribute_apollo_router::plugins::telemetry::config_new::selectors::RouterSelector": { + "anyOf": [ + { + "description": "#/definitions/RouterSelector", + "$ref": "#/definitions/RouterSelector" + }, + { + "properties": { + "condition": { + "description": "#/definitions/Condition_for_RouterSelector", + "$ref": "#/definitions/Condition_for_RouterSelector" + } + } + } + ] + }, + "conditional_attribute_apollo_router::plugins::telemetry::config_new::selectors::SubgraphSelector": { + "anyOf": [ + { + "description": "#/definitions/SubgraphSelector", + "$ref": "#/definitions/SubgraphSelector" + }, + { + "properties": { + "condition": { + "description": "#/definitions/Condition_for_SubgraphSelector", + "$ref": "#/definitions/Condition_for_SubgraphSelector" + } + } + } + ] + }, + "conditional_attribute_apollo_router::plugins::telemetry::config_new::selectors::SupergraphSelector": { + "anyOf": [ + { + "description": "#/definitions/SupergraphSelector", + "$ref": "#/definitions/SupergraphSelector" + }, + { + "properties": { + "condition": { + "description": "#/definitions/Condition_for_SupergraphSelector", + "$ref": "#/definitions/Condition_for_SupergraphSelector" + } + } + } + ] + }, + "extendable_attribute_apollo_router::plugins::telemetry::config_new::attributes::RouterAttributes_apollo_router::plugins::telemetry::config_new::conditional::Conditional": { + "description": "Common attributes for http server and client. See https://opentelemetry.io/docs/specs/semconv/http/http-spans/#common-attributes", + "type": "object", + "properties": { + "baggage": { + "description": "All key values from trace baggage.", + "default": null, + "type": "boolean", + "nullable": true + }, + "dd.trace_id": { + "description": "The datadog trace ID. This can be output in logs and used to correlate traces in Datadog.", + "default": null, + "type": "boolean", + "nullable": true + }, + "error.type": { + "description": "Describes a class of error the operation ended with. Examples:\n\n* timeout * name_resolution_error * 500\n\nRequirement level: Conditionally Required: If request has ended with an error.", + "default": null, + "type": "boolean", + "nullable": true + }, + "http.request.body.size": { + "description": "The size of the request payload body in bytes. This is the number of bytes transferred excluding headers and is often, but not always, present as the Content-Length header. For requests using transport encoding, this should be the compressed size. Examples:\n\n* 3495\n\nRequirement level: Recommended", + "default": null, + "type": "boolean", + "nullable": true + }, + "http.request.method": { + "description": "HTTP request method. Examples:\n\n* GET * POST * HEAD\n\nRequirement level: Required", + "default": null, + "type": "boolean", + "nullable": true + }, + "http.response.body.size": { + "description": "The size of the response payload body in bytes. This is the number of bytes transferred excluding headers and is often, but not always, present as the Content-Length header. For requests using transport encoding, this should be the compressed size. Examples:\n\n* 3495\n\nRequirement level: Recommended", + "default": null, + "type": "boolean", + "nullable": true + }, + "http.response.status_code": { + "description": "HTTP response status code. Examples:\n\n* 200\n\nRequirement level: Conditionally Required: If and only if one was received/sent.", + "default": null, + "type": "boolean", + "nullable": true + }, + "http.route": { + "description": "The matched route (path template in the format used by the respective server framework). Examples:\n\n* /graphql\n\nRequirement level: Conditionally Required: If and only if it’s available", + "default": null, + "type": "boolean", + "nullable": true + }, + "network.local.address": { + "description": "Local socket address. Useful in case of a multi-IP host. Examples:\n\n* 10.1.2.80 * /tmp/my.sock\n\nRequirement level: Opt-In", + "default": null, + "type": "boolean", + "nullable": true + }, + "network.local.port": { + "description": "Local socket port. Useful in case of a multi-port host. Examples:\n\n* 65123\n\nRequirement level: Opt-In", + "default": null, + "type": "boolean", + "nullable": true + }, + "network.peer.address": { + "description": "Peer address of the network connection - IP address or Unix domain socket name. Examples:\n\n* 10.1.2.80 * /tmp/my.sock\n\nRequirement level: Recommended", + "default": null, + "type": "boolean", + "nullable": true + }, + "network.peer.port": { + "description": "Peer port number of the network connection. Examples:\n\n* 65123\n\nRequirement level: Recommended", + "default": null, + "type": "boolean", + "nullable": true + }, + "network.protocol.name": { + "description": "OSI application layer or non-OSI equivalent. Examples:\n\n* http * spdy\n\nRequirement level: Recommended: if not default (http).", + "default": null, + "type": "boolean", + "nullable": true + }, + "network.protocol.version": { + "description": "Version of the protocol specified in network.protocol.name. Examples:\n\n* 1.0 * 1.1 * 2 * 3\n\nRequirement level: Recommended", + "default": null, + "type": "boolean", + "nullable": true + }, + "network.transport": { + "description": "OSI transport layer. Examples:\n\n* tcp * udp\n\nRequirement level: Conditionally Required", + "default": null, + "type": "boolean", + "nullable": true + }, + "network.type": { + "description": "OSI network layer or non-OSI equivalent. Examples:\n\n* ipv4 * ipv6\n\nRequirement level: Recommended", + "default": null, + "type": "boolean", + "nullable": true + }, + "server.address": { + "description": "Name of the local HTTP server that received the request. Examples:\n\n* example.com * 10.1.2.80 * /tmp/my.sock\n\nRequirement level: Recommended", + "default": null, + "type": "boolean", + "nullable": true + }, + "server.port": { + "description": "Port of the local HTTP server that received the request. Examples:\n\n* 80 * 8080 * 443\n\nRequirement level: Recommended", + "default": null, + "type": "boolean", + "nullable": true + }, + "trace_id": { + "description": "The OpenTelemetry trace ID. This can be output in logs.", + "default": null, + "type": "boolean", + "nullable": true + }, + "url.path": { + "description": "The URI path component Examples:\n\n* /search\n\nRequirement level: Required", + "default": null, + "type": "boolean", + "nullable": true + }, + "url.query": { + "description": "The URI query component Examples:\n\n* q=OpenTelemetry\n\nRequirement level: Conditionally Required: If and only if one was received/sent.", + "default": null, + "type": "boolean", + "nullable": true + }, + "url.scheme": { + "description": "The URI scheme component identifying the used protocol. Examples:\n\n* http * https\n\nRequirement level: Required", + "default": null, + "type": "boolean", + "nullable": true + }, + "user_agent.original": { + "description": "Value of the HTTP User-Agent header sent by the client. Examples:\n\n* CERN-LineMode/2.15 * libwww/2.17b3\n\nRequirement level: Recommended", + "default": null, + "type": "boolean", + "nullable": true + } + }, + "additionalProperties": { + "description": "#/definitions/conditional_attribute_apollo_router::plugins::telemetry::config_new::selectors::RouterSelector", + "$ref": "#/definitions/conditional_attribute_apollo_router::plugins::telemetry::config_new::selectors::RouterSelector" + } + }, + "extendable_attribute_apollo_router::plugins::telemetry::config_new::attributes::RouterAttributes_apollo_router::plugins::telemetry::config_new::selectors::RouterSelector": { + "description": "Common attributes for http server and client. See https://opentelemetry.io/docs/specs/semconv/http/http-spans/#common-attributes", + "type": "object", + "properties": { + "baggage": { + "description": "All key values from trace baggage.", + "default": null, + "type": "boolean", + "nullable": true + }, + "dd.trace_id": { + "description": "The datadog trace ID. This can be output in logs and used to correlate traces in Datadog.", + "default": null, + "type": "boolean", + "nullable": true + }, + "error.type": { + "description": "Describes a class of error the operation ended with. Examples:\n\n* timeout * name_resolution_error * 500\n\nRequirement level: Conditionally Required: If request has ended with an error.", + "default": null, + "type": "boolean", + "nullable": true + }, + "http.request.body.size": { + "description": "The size of the request payload body in bytes. This is the number of bytes transferred excluding headers and is often, but not always, present as the Content-Length header. For requests using transport encoding, this should be the compressed size. Examples:\n\n* 3495\n\nRequirement level: Recommended", + "default": null, + "type": "boolean", + "nullable": true + }, + "http.request.method": { + "description": "HTTP request method. Examples:\n\n* GET * POST * HEAD\n\nRequirement level: Required", + "default": null, + "type": "boolean", + "nullable": true + }, + "http.response.body.size": { + "description": "The size of the response payload body in bytes. This is the number of bytes transferred excluding headers and is often, but not always, present as the Content-Length header. For requests using transport encoding, this should be the compressed size. Examples:\n\n* 3495\n\nRequirement level: Recommended", + "default": null, + "type": "boolean", + "nullable": true + }, + "http.response.status_code": { + "description": "HTTP response status code. Examples:\n\n* 200\n\nRequirement level: Conditionally Required: If and only if one was received/sent.", + "default": null, + "type": "boolean", + "nullable": true + }, + "http.route": { + "description": "The matched route (path template in the format used by the respective server framework). Examples:\n\n* /graphql\n\nRequirement level: Conditionally Required: If and only if it’s available", + "default": null, + "type": "boolean", + "nullable": true + }, + "network.local.address": { + "description": "Local socket address. Useful in case of a multi-IP host. Examples:\n\n* 10.1.2.80 * /tmp/my.sock\n\nRequirement level: Opt-In", + "default": null, + "type": "boolean", + "nullable": true + }, + "network.local.port": { + "description": "Local socket port. Useful in case of a multi-port host. Examples:\n\n* 65123\n\nRequirement level: Opt-In", + "default": null, + "type": "boolean", + "nullable": true + }, + "network.peer.address": { + "description": "Peer address of the network connection - IP address or Unix domain socket name. Examples:\n\n* 10.1.2.80 * /tmp/my.sock\n\nRequirement level: Recommended", + "default": null, + "type": "boolean", + "nullable": true + }, + "network.peer.port": { + "description": "Peer port number of the network connection. Examples:\n\n* 65123\n\nRequirement level: Recommended", + "default": null, + "type": "boolean", + "nullable": true + }, + "network.protocol.name": { + "description": "OSI application layer or non-OSI equivalent. Examples:\n\n* http * spdy\n\nRequirement level: Recommended: if not default (http).", + "default": null, + "type": "boolean", + "nullable": true + }, + "network.protocol.version": { + "description": "Version of the protocol specified in network.protocol.name. Examples:\n\n* 1.0 * 1.1 * 2 * 3\n\nRequirement level: Recommended", + "default": null, + "type": "boolean", + "nullable": true + }, + "network.transport": { + "description": "OSI transport layer. Examples:\n\n* tcp * udp\n\nRequirement level: Conditionally Required", + "default": null, + "type": "boolean", + "nullable": true + }, + "network.type": { + "description": "OSI network layer or non-OSI equivalent. Examples:\n\n* ipv4 * ipv6\n\nRequirement level: Recommended", + "default": null, + "type": "boolean", + "nullable": true + }, + "server.address": { + "description": "Name of the local HTTP server that received the request. Examples:\n\n* example.com * 10.1.2.80 * /tmp/my.sock\n\nRequirement level: Recommended", + "default": null, + "type": "boolean", + "nullable": true + }, + "server.port": { + "description": "Port of the local HTTP server that received the request. Examples:\n\n* 80 * 8080 * 443\n\nRequirement level: Recommended", + "default": null, + "type": "boolean", + "nullable": true + }, + "trace_id": { + "description": "The OpenTelemetry trace ID. This can be output in logs.", + "default": null, + "type": "boolean", + "nullable": true + }, + "url.path": { + "description": "The URI path component Examples:\n\n* /search\n\nRequirement level: Required", + "default": null, + "type": "boolean", + "nullable": true + }, + "url.query": { + "description": "The URI query component Examples:\n\n* q=OpenTelemetry\n\nRequirement level: Conditionally Required: If and only if one was received/sent.", + "default": null, + "type": "boolean", + "nullable": true + }, + "url.scheme": { + "description": "The URI scheme component identifying the used protocol. Examples:\n\n* http * https\n\nRequirement level: Required", + "default": null, + "type": "boolean", + "nullable": true + }, + "user_agent.original": { + "description": "Value of the HTTP User-Agent header sent by the client. Examples:\n\n* CERN-LineMode/2.15 * libwww/2.17b3\n\nRequirement level: Recommended", + "default": null, + "type": "boolean", + "nullable": true + } + }, + "additionalProperties": { + "description": "#/definitions/RouterSelector", + "$ref": "#/definitions/RouterSelector" + } + }, + "extendable_attribute_apollo_router::plugins::telemetry::config_new::attributes::SubgraphAttributes_apollo_router::plugins::telemetry::config_new::conditional::Conditional": { + "type": "object", + "properties": { + "subgraph.graphql.document": { + "description": "The GraphQL document being executed. Examples:\n\n* `query findBookById { bookById(id: ?) { name } }`\n\nRequirement level: Recommended", + "default": null, + "type": "boolean", + "nullable": true + }, + "subgraph.graphql.operation.name": { + "description": "The name of the operation being executed. Examples:\n\n* findBookById\n\nRequirement level: Recommended", + "default": null, + "type": "boolean", + "nullable": true + }, + "subgraph.graphql.operation.type": { + "description": "The type of the operation being executed. Examples:\n\n* query * subscription * mutation\n\nRequirement level: Recommended", + "default": null, + "type": "boolean", + "nullable": true + }, + "subgraph.name": { + "description": "The name of the subgraph Examples:\n\n* products\n\nRequirement level: Required", + "default": null, + "type": "boolean", + "nullable": true + } + }, + "additionalProperties": { + "description": "#/definitions/conditional_attribute_apollo_router::plugins::telemetry::config_new::selectors::SubgraphSelector", + "$ref": "#/definitions/conditional_attribute_apollo_router::plugins::telemetry::config_new::selectors::SubgraphSelector" + } + }, + "extendable_attribute_apollo_router::plugins::telemetry::config_new::attributes::SubgraphAttributes_apollo_router::plugins::telemetry::config_new::selectors::SubgraphSelector": { + "type": "object", + "properties": { + "subgraph.graphql.document": { + "description": "The GraphQL document being executed. Examples:\n\n* `query findBookById { bookById(id: ?) { name } }`\n\nRequirement level: Recommended", + "default": null, + "type": "boolean", + "nullable": true + }, + "subgraph.graphql.operation.name": { + "description": "The name of the operation being executed. Examples:\n\n* findBookById\n\nRequirement level: Recommended", + "default": null, + "type": "boolean", + "nullable": true + }, + "subgraph.graphql.operation.type": { + "description": "The type of the operation being executed. Examples:\n\n* query * subscription * mutation\n\nRequirement level: Recommended", + "default": null, + "type": "boolean", + "nullable": true + }, + "subgraph.name": { + "description": "The name of the subgraph Examples:\n\n* products\n\nRequirement level: Required", + "default": null, + "type": "boolean", + "nullable": true + } + }, + "additionalProperties": { + "description": "#/definitions/SubgraphSelector", + "$ref": "#/definitions/SubgraphSelector" + } + }, + "extendable_attribute_apollo_router::plugins::telemetry::config_new::attributes::SupergraphAttributes_apollo_router::plugins::telemetry::config_new::conditional::Conditional": { + "description": "Attributes for Cost", + "type": "object", + "properties": { + "cost.actual": { + "description": "The actual cost of the operation using the currently configured cost model", + "default": null, + "type": "boolean", + "nullable": true + }, + "cost.delta": { + "description": "The delta (estimated - actual) cost of the operation using the currently configured cost model", + "default": null, + "type": "boolean", + "nullable": true + }, + "cost.estimated": { + "description": "The estimated cost of the operation using the currently configured cost model", + "default": null, + "type": "boolean", + "nullable": true + }, + "cost.result": { + "description": "The cost result, this is an error code returned by the cost calculation or COST_OK", + "default": null, + "type": "boolean", + "nullable": true + }, + "graphql.document": { + "description": "The GraphQL document being executed. Examples:\n\n* `query findBookById { bookById(id: ?) { name } }`\n\nRequirement level: Recommended", + "default": null, + "type": "boolean", + "nullable": true + }, + "graphql.operation.name": { + "description": "The name of the operation being executed. Examples:\n\n* findBookById\n\nRequirement level: Recommended", + "default": null, + "type": "boolean", + "nullable": true + }, + "graphql.operation.type": { + "description": "The type of the operation being executed. Examples:\n\n* query * subscription * mutation\n\nRequirement level: Recommended", + "default": null, + "type": "boolean", + "nullable": true + } + }, + "additionalProperties": { + "description": "#/definitions/conditional_attribute_apollo_router::plugins::telemetry::config_new::selectors::SupergraphSelector", + "$ref": "#/definitions/conditional_attribute_apollo_router::plugins::telemetry::config_new::selectors::SupergraphSelector" + } + }, + "extendable_attribute_apollo_router::plugins::telemetry::config_new::attributes::SupergraphAttributes_apollo_router::plugins::telemetry::config_new::selectors::SupergraphSelector": { + "description": "Attributes for Cost", + "type": "object", + "properties": { + "cost.actual": { + "description": "The actual cost of the operation using the currently configured cost model", + "default": null, + "type": "boolean", + "nullable": true + }, + "cost.delta": { + "description": "The delta (estimated - actual) cost of the operation using the currently configured cost model", + "default": null, + "type": "boolean", + "nullable": true + }, + "cost.estimated": { + "description": "The estimated cost of the operation using the currently configured cost model", + "default": null, + "type": "boolean", + "nullable": true + }, + "cost.result": { + "description": "The cost result, this is an error code returned by the cost calculation or COST_OK", + "default": null, + "type": "boolean", + "nullable": true + }, + "graphql.document": { + "description": "The GraphQL document being executed. Examples:\n\n* `query findBookById { bookById(id: ?) { name } }`\n\nRequirement level: Recommended", + "default": null, + "type": "boolean", + "nullable": true + }, + "graphql.operation.name": { + "description": "The name of the operation being executed. Examples:\n\n* findBookById\n\nRequirement level: Recommended", + "default": null, + "type": "boolean", + "nullable": true + }, + "graphql.operation.type": { + "description": "The type of the operation being executed. Examples:\n\n* query * subscription * mutation\n\nRequirement level: Recommended", + "default": null, + "type": "boolean", + "nullable": true + } + }, + "additionalProperties": { + "description": "#/definitions/SupergraphSelector", + "$ref": "#/definitions/SupergraphSelector" + } + }, + "extendable_attribute_apollo_router::plugins::telemetry::config_new::cache::CacheInstrumentsConfig_apollo_router::plugins::telemetry::config_new::instruments::Instrument": { + "type": "object", + "properties": { + "apollo.router.operations.entity.cache": { + "description": "#/definitions/DefaultedStandardInstrument_for_extendable_attribute_apollo_router::plugins::telemetry::config_new::cache::attributes::CacheAttributes_apollo_router::plugins::telemetry::config_new::selectors::SubgraphSelector", + "$ref": "#/definitions/DefaultedStandardInstrument_for_extendable_attribute_apollo_router::plugins::telemetry::config_new::cache::attributes::CacheAttributes_apollo_router::plugins::telemetry::config_new::selectors::SubgraphSelector" + } + }, + "additionalProperties": { + "description": "#/definitions/Instrument_for_CacheAttributes_and_SubgraphSelector_and_SubgraphValue", + "$ref": "#/definitions/Instrument_for_CacheAttributes_and_SubgraphSelector_and_SubgraphValue" + } + }, + "extendable_attribute_apollo_router::plugins::telemetry::config_new::cache::attributes::CacheAttributes_apollo_router::plugins::telemetry::config_new::selectors::SubgraphSelector": { + "type": "object", + "properties": { + "entity.type": { + "description": "Entity type", + "default": null, + "type": "boolean", + "nullable": true + } + }, + "additionalProperties": { + "description": "#/definitions/SubgraphSelector", + "$ref": "#/definitions/SubgraphSelector" + } + }, + "extendable_attribute_apollo_router::plugins::telemetry::config_new::events::RouterEventsConfig_apollo_router::plugins::telemetry::config_new::events::Event": { + "type": "object", + "properties": { + "error": { + "description": "#/definitions/StandardEventConfig_for_RouterSelector", + "$ref": "#/definitions/StandardEventConfig_for_RouterSelector" + }, + "request": { + "description": "#/definitions/StandardEventConfig_for_RouterSelector", + "$ref": "#/definitions/StandardEventConfig_for_RouterSelector" + }, + "response": { + "description": "#/definitions/StandardEventConfig_for_RouterSelector", + "$ref": "#/definitions/StandardEventConfig_for_RouterSelector" + } + }, + "additionalProperties": { + "description": "#/definitions/Event_for_RouterAttributes_and_RouterSelector", + "$ref": "#/definitions/Event_for_RouterAttributes_and_RouterSelector" + } + }, + "extendable_attribute_apollo_router::plugins::telemetry::config_new::events::SubgraphEventsConfig_apollo_router::plugins::telemetry::config_new::events::Event": { + "type": "object", + "properties": { + "error": { + "description": "#/definitions/StandardEventConfig_for_SubgraphSelector", + "$ref": "#/definitions/StandardEventConfig_for_SubgraphSelector" + }, + "request": { + "description": "#/definitions/StandardEventConfig_for_SubgraphSelector", + "$ref": "#/definitions/StandardEventConfig_for_SubgraphSelector" + }, + "response": { + "description": "#/definitions/StandardEventConfig_for_SubgraphSelector", + "$ref": "#/definitions/StandardEventConfig_for_SubgraphSelector" + } + }, + "additionalProperties": { + "description": "#/definitions/Event_for_SubgraphAttributes_and_SubgraphSelector", + "$ref": "#/definitions/Event_for_SubgraphAttributes_and_SubgraphSelector" + } + }, + "extendable_attribute_apollo_router::plugins::telemetry::config_new::events::SupergraphEventsConfig_apollo_router::plugins::telemetry::config_new::events::Event": { + "type": "object", + "properties": { + "error": { + "description": "#/definitions/StandardEventConfig_for_SupergraphSelector", + "$ref": "#/definitions/StandardEventConfig_for_SupergraphSelector" + }, + "request": { + "description": "#/definitions/StandardEventConfig_for_SupergraphSelector", + "$ref": "#/definitions/StandardEventConfig_for_SupergraphSelector" + }, + "response": { + "description": "#/definitions/StandardEventConfig_for_SupergraphSelector", + "$ref": "#/definitions/StandardEventConfig_for_SupergraphSelector" + } + }, + "additionalProperties": { + "description": "#/definitions/Event_for_SupergraphAttributes_and_SupergraphSelector", + "$ref": "#/definitions/Event_for_SupergraphAttributes_and_SupergraphSelector" + } + }, + "extendable_attribute_apollo_router::plugins::telemetry::config_new::graphql::GraphQLInstrumentsConfig_apollo_router::plugins::telemetry::config_new::instruments::Instrument": { + "type": "object", + "properties": { + "field.execution": { + "description": "#/definitions/DefaultedStandardInstrument_for_extendable_attribute_apollo_router::plugins::telemetry::config_new::graphql::attributes::GraphQLAttributes_apollo_router::plugins::telemetry::config_new::graphql::selectors::GraphQLSelector", + "$ref": "#/definitions/DefaultedStandardInstrument_for_extendable_attribute_apollo_router::plugins::telemetry::config_new::graphql::attributes::GraphQLAttributes_apollo_router::plugins::telemetry::config_new::graphql::selectors::GraphQLSelector" + }, + "list.length": { + "description": "#/definitions/DefaultedStandardInstrument_for_extendable_attribute_apollo_router::plugins::telemetry::config_new::graphql::attributes::GraphQLAttributes_apollo_router::plugins::telemetry::config_new::graphql::selectors::GraphQLSelector", + "$ref": "#/definitions/DefaultedStandardInstrument_for_extendable_attribute_apollo_router::plugins::telemetry::config_new::graphql::attributes::GraphQLAttributes_apollo_router::plugins::telemetry::config_new::graphql::selectors::GraphQLSelector" + } + }, + "additionalProperties": { + "description": "#/definitions/Instrument_for_GraphQLAttributes_and_GraphQLSelector_and_GraphQLValue", + "$ref": "#/definitions/Instrument_for_GraphQLAttributes_and_GraphQLSelector_and_GraphQLValue" + } + }, + "extendable_attribute_apollo_router::plugins::telemetry::config_new::graphql::attributes::GraphQLAttributes_apollo_router::plugins::telemetry::config_new::graphql::selectors::GraphQLSelector": { + "type": "object", + "properties": { + "graphql.field.name": { + "description": "The GraphQL field name", + "default": null, + "type": "boolean", + "nullable": true + }, + "graphql.field.type": { + "description": "The GraphQL field type", + "default": null, + "type": "boolean", + "nullable": true + }, + "graphql.list.length": { + "description": "If the field is a list, the length of the list", + "default": null, + "type": "boolean", + "nullable": true + }, + "graphql.operation.name": { + "description": "The GraphQL operation name", + "default": null, + "type": "boolean", + "nullable": true + }, + "graphql.type.name": { + "description": "The GraphQL type name", + "default": null, + "type": "boolean", + "nullable": true + } + }, + "additionalProperties": { + "description": "#/definitions/GraphQLSelector", + "$ref": "#/definitions/GraphQLSelector" + } + }, + "extendable_attribute_apollo_router::plugins::telemetry::config_new::instruments::RouterInstrumentsConfig_apollo_router::plugins::telemetry::config_new::instruments::Instrument": { + "type": "object", + "properties": { + "http.server.active_requests": { + "description": "#/definitions/DefaultedStandardInstrument_for_ActiveRequestsAttributes", + "$ref": "#/definitions/DefaultedStandardInstrument_for_ActiveRequestsAttributes" + }, + "http.server.request.body.size": { + "description": "#/definitions/DefaultedStandardInstrument_for_extendable_attribute_apollo_router::plugins::telemetry::config_new::attributes::RouterAttributes_apollo_router::plugins::telemetry::config_new::selectors::RouterSelector", + "$ref": "#/definitions/DefaultedStandardInstrument_for_extendable_attribute_apollo_router::plugins::telemetry::config_new::attributes::RouterAttributes_apollo_router::plugins::telemetry::config_new::selectors::RouterSelector" + }, + "http.server.request.duration": { + "description": "#/definitions/DefaultedStandardInstrument_for_extendable_attribute_apollo_router::plugins::telemetry::config_new::attributes::RouterAttributes_apollo_router::plugins::telemetry::config_new::selectors::RouterSelector", + "$ref": "#/definitions/DefaultedStandardInstrument_for_extendable_attribute_apollo_router::plugins::telemetry::config_new::attributes::RouterAttributes_apollo_router::plugins::telemetry::config_new::selectors::RouterSelector" + }, + "http.server.response.body.size": { + "description": "#/definitions/DefaultedStandardInstrument_for_extendable_attribute_apollo_router::plugins::telemetry::config_new::attributes::RouterAttributes_apollo_router::plugins::telemetry::config_new::selectors::RouterSelector", + "$ref": "#/definitions/DefaultedStandardInstrument_for_extendable_attribute_apollo_router::plugins::telemetry::config_new::attributes::RouterAttributes_apollo_router::plugins::telemetry::config_new::selectors::RouterSelector" + } + }, + "additionalProperties": { + "description": "#/definitions/Instrument_for_RouterAttributes_and_RouterSelector_and_RouterValue", + "$ref": "#/definitions/Instrument_for_RouterAttributes_and_RouterSelector_and_RouterValue" + } + }, + "extendable_attribute_apollo_router::plugins::telemetry::config_new::instruments::SubgraphInstrumentsConfig_apollo_router::plugins::telemetry::config_new::instruments::Instrument": { + "type": "object", + "properties": { + "http.client.request.body.size": { + "description": "#/definitions/DefaultedStandardInstrument_for_extendable_attribute_apollo_router::plugins::telemetry::config_new::attributes::SubgraphAttributes_apollo_router::plugins::telemetry::config_new::selectors::SubgraphSelector", + "$ref": "#/definitions/DefaultedStandardInstrument_for_extendable_attribute_apollo_router::plugins::telemetry::config_new::attributes::SubgraphAttributes_apollo_router::plugins::telemetry::config_new::selectors::SubgraphSelector" + }, + "http.client.request.duration": { + "description": "#/definitions/DefaultedStandardInstrument_for_extendable_attribute_apollo_router::plugins::telemetry::config_new::attributes::SubgraphAttributes_apollo_router::plugins::telemetry::config_new::selectors::SubgraphSelector", + "$ref": "#/definitions/DefaultedStandardInstrument_for_extendable_attribute_apollo_router::plugins::telemetry::config_new::attributes::SubgraphAttributes_apollo_router::plugins::telemetry::config_new::selectors::SubgraphSelector" + }, + "http.client.response.body.size": { + "description": "#/definitions/DefaultedStandardInstrument_for_extendable_attribute_apollo_router::plugins::telemetry::config_new::attributes::SubgraphAttributes_apollo_router::plugins::telemetry::config_new::selectors::SubgraphSelector", + "$ref": "#/definitions/DefaultedStandardInstrument_for_extendable_attribute_apollo_router::plugins::telemetry::config_new::attributes::SubgraphAttributes_apollo_router::plugins::telemetry::config_new::selectors::SubgraphSelector" + } + }, + "additionalProperties": { + "description": "#/definitions/Instrument_for_SubgraphAttributes_and_SubgraphSelector_and_SubgraphValue", + "$ref": "#/definitions/Instrument_for_SubgraphAttributes_and_SubgraphSelector_and_SubgraphValue" + } + }, + "extendable_attribute_apollo_router::plugins::telemetry::config_new::instruments::SupergraphInstrumentsConfig_apollo_router::plugins::telemetry::config_new::instruments::Instrument": { + "type": "object", + "properties": { + "cost.actual": { + "description": "#/definitions/DefaultedStandardInstrument_for_extendable_attribute_apollo_router::plugins::telemetry::config_new::attributes::SupergraphAttributes_apollo_router::plugins::telemetry::config_new::selectors::SupergraphSelector", + "$ref": "#/definitions/DefaultedStandardInstrument_for_extendable_attribute_apollo_router::plugins::telemetry::config_new::attributes::SupergraphAttributes_apollo_router::plugins::telemetry::config_new::selectors::SupergraphSelector" + }, + "cost.delta": { + "description": "#/definitions/DefaultedStandardInstrument_for_extendable_attribute_apollo_router::plugins::telemetry::config_new::attributes::SupergraphAttributes_apollo_router::plugins::telemetry::config_new::selectors::SupergraphSelector", + "$ref": "#/definitions/DefaultedStandardInstrument_for_extendable_attribute_apollo_router::plugins::telemetry::config_new::attributes::SupergraphAttributes_apollo_router::plugins::telemetry::config_new::selectors::SupergraphSelector" + }, + "cost.estimated": { + "description": "#/definitions/DefaultedStandardInstrument_for_extendable_attribute_apollo_router::plugins::telemetry::config_new::attributes::SupergraphAttributes_apollo_router::plugins::telemetry::config_new::selectors::SupergraphSelector", + "$ref": "#/definitions/DefaultedStandardInstrument_for_extendable_attribute_apollo_router::plugins::telemetry::config_new::attributes::SupergraphAttributes_apollo_router::plugins::telemetry::config_new::selectors::SupergraphSelector" + } + }, + "additionalProperties": { + "description": "#/definitions/Instrument_for_SupergraphAttributes_and_SupergraphSelector_and_SupergraphValue", + "$ref": "#/definitions/Instrument_for_SupergraphAttributes_and_SupergraphSelector_and_SupergraphValue" + } + }, + "logging_format": { + "oneOf": [ + { + "description": "Tracing subscriber https://docs.rs/tracing-subscriber/latest/tracing_subscriber/fmt/format/struct.Json.html", + "type": "object", + "required": [ + "json" + ], + "properties": { + "json": { + "type": "object", + "properties": { + "display_current_span": { + "description": "Include the current span in this log event.", + "default": false, + "type": "boolean" + }, + "display_filename": { + "description": "Include the filename with the log event.", + "default": false, + "type": "boolean" + }, + "display_level": { + "description": "Include the level with the log event. (default: true)", + "default": true, + "type": "boolean" + }, + "display_line_number": { + "description": "Include the line number with the log event.", + "default": false, + "type": "boolean" + }, + "display_resource": { + "description": "Include the resource with the log event. (default: true)", + "default": true, + "type": "boolean" + }, + "display_span_id": { + "description": "Include the span id (if any) with the log event. (default: true)", + "default": true, + "type": "boolean" + }, + "display_span_list": { + "description": "Include all of the containing span information with the log event. (default: true)", + "default": true, + "type": "boolean" + }, + "display_target": { + "description": "Include the target with the log event. (default: true)", + "default": true, + "type": "boolean" + }, + "display_thread_id": { + "description": "Include the thread_id with the log event.", + "default": false, + "type": "boolean" + }, + "display_thread_name": { + "description": "Include the thread_name with the log event.", + "default": false, + "type": "boolean" + }, + "display_timestamp": { + "description": "Include the timestamp with the log event. (default: true)", + "default": true, + "type": "boolean" + }, + "display_trace_id": { + "description": "#/definitions/DisplayTraceIdFormat", + "$ref": "#/definitions/DisplayTraceIdFormat" + }, + "span_attributes": { + "description": "List of span attributes to attach to the json log object", + "default": [], + "type": "array", + "items": { + "type": "string" + }, + "uniqueItems": true + } + }, + "additionalProperties": false + } + }, + "additionalProperties": false + }, + { + "description": "Tracing subscriber https://docs.rs/tracing-subscriber/latest/tracing_subscriber/fmt/format/struct.Json.html", + "type": "string", + "enum": [ + "json" + ] + }, + { + "description": "Tracing subscriber https://docs.rs/tracing-subscriber/latest/tracing_subscriber/fmt/format/struct.Full.html", + "type": "object", + "required": [ + "text" + ], + "properties": { + "text": { + "type": "object", + "properties": { + "ansi_escape_codes": { + "description": "Process ansi escapes (default: true)", + "default": true, + "type": "boolean" + }, + "display_current_span": { + "description": "Include the current span in this log event. (default: true)", + "default": true, + "type": "boolean" + }, + "display_filename": { + "description": "Include the filename with the log event.", + "default": false, + "type": "boolean" + }, + "display_level": { + "description": "Include the level with the log event. (default: true)", + "default": true, + "type": "boolean" + }, + "display_line_number": { + "description": "Include the line number with the log event.", + "default": false, + "type": "boolean" + }, + "display_resource": { + "description": "Include the resource with the log event.", + "default": false, + "type": "boolean" + }, + "display_service_name": { + "description": "Include the service name with the log event.", + "default": false, + "type": "boolean" + }, + "display_service_namespace": { + "description": "Include the service namespace with the log event.", + "default": false, + "type": "boolean" + }, + "display_span_id": { + "description": "Include the span id (if any) with the log event. (default: false)", + "default": false, + "type": "boolean" + }, + "display_span_list": { + "description": "Include all of the containing span information with the log event. (default: true)", + "default": true, + "type": "boolean" + }, + "display_target": { + "description": "Include the target with the log event.", + "default": false, + "type": "boolean" + }, + "display_thread_id": { + "description": "Include the thread_id with the log event.", + "default": false, + "type": "boolean" + }, + "display_thread_name": { + "description": "Include the thread_name with the log event.", + "default": false, + "type": "boolean" + }, + "display_timestamp": { + "description": "Include the timestamp with the log event. (default: true)", + "default": true, + "type": "boolean" + }, + "display_trace_id": { + "description": "#/definitions/DisplayTraceIdFormat", + "$ref": "#/definitions/DisplayTraceIdFormat" + } + }, + "additionalProperties": false + } + }, + "additionalProperties": false + }, + { + "description": "Tracing subscriber https://docs.rs/tracing-subscriber/latest/tracing_subscriber/fmt/format/struct.Full.html", + "type": "string", + "enum": [ + "text" + ] + } + ] + } + } +} diff --git a/schemas/supergraph_config_schema.json b/schemas/supergraph_config_schema.json new file mode 100644 index 00000000..c0e99363 --- /dev/null +++ b/schemas/supergraph_config_schema.json @@ -0,0 +1,119 @@ +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "SupergraphConfig", + "description": "The configuration for a single supergraph composed of multiple subgraphs.", + "type": "object", + "required": [ + "subgraphs" + ], + "properties": { + "federation_version": { + "anyOf": [ + { + "$ref": "#/definitions/FederationVersion" + }, + { + "type": "null" + } + ] + }, + "subgraphs": { + "type": "object", + "additionalProperties": { + "$ref": "#/definitions/SubgraphConfig" + } + } + }, + "definitions": { + "FederationVersion": { + "pattern": "^(1|2|=2\\.\\d+\\.\\d+.*)$" + }, + "SchemaSource": { + "description": "Options for getting SDL: the graph registry, a file, or an introspection URL.\n\nNOTE: Introspection strips all comments and directives from the SDL.", + "anyOf": [ + { + "type": "object", + "required": [ + "file" + ], + "properties": { + "file": { + "type": "string" + } + } + }, + { + "type": "object", + "required": [ + "subgraph_url" + ], + "properties": { + "introspection_headers": { + "type": [ + "object", + "null" + ], + "additionalProperties": { + "type": "string" + } + }, + "subgraph_url": { + "type": "string", + "format": "uri" + } + } + }, + { + "type": "object", + "required": [ + "graphref", + "subgraph" + ], + "properties": { + "graphref": { + "type": "string" + }, + "subgraph": { + "type": "string" + } + } + }, + { + "type": "object", + "required": [ + "sdl" + ], + "properties": { + "sdl": { + "type": "string" + } + } + } + ] + }, + "SubgraphConfig": { + "description": "Config for a single [subgraph](https://www.apollographql.com/docs/federation/subgraphs/)", + "type": "object", + "required": [ + "schema" + ], + "properties": { + "routing_url": { + "description": "The routing URL for the subgraph. This will appear in supergraph SDL and instructs the graph router to send all requests for this subgraph to this URL.", + "type": [ + "string", + "null" + ] + }, + "schema": { + "description": "The location of the subgraph's SDL", + "allOf": [ + { + "$ref": "#/definitions/SchemaSource" + } + ] + } + } + } + } +} From 1a7c2011a2a529ffcc12e4a5879e2ca94b7d7098 Mon Sep 17 00:00:00 2001 From: Lenz Weber-Tronic Date: Fri, 20 Sep 2024 17:38:25 +0200 Subject: [PATCH 2/4] changeset --- .changeset/three-teachers-hope.md | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 .changeset/three-teachers-hope.md diff --git a/.changeset/three-teachers-hope.md b/.changeset/three-teachers-hope.md new file mode 100644 index 00000000..d5491c45 --- /dev/null +++ b/.changeset/three-teachers-hope.md @@ -0,0 +1,5 @@ +--- +"vscode-apollo": patch +--- + +Add JSON schemas for `supergraph.yaml` and `apollo-router.yaml` From 21430bf1a34316c01d47d6d09eebe11b0a10506c Mon Sep 17 00:00:00 2001 From: Lenz Weber-Tronic Date: Fri, 18 Oct 2024 13:08:41 +0200 Subject: [PATCH 3/4] only ship `supergraph.yaml` schema for now --- .changeset/three-teachers-hope.md | 2 +- package.json | 5 - schemas/router_config_schema.json | 8342 ----------------------------- 3 files changed, 1 insertion(+), 8348 deletions(-) delete mode 100644 schemas/router_config_schema.json diff --git a/.changeset/three-teachers-hope.md b/.changeset/three-teachers-hope.md index d5491c45..2e8896fe 100644 --- a/.changeset/three-teachers-hope.md +++ b/.changeset/three-teachers-hope.md @@ -2,4 +2,4 @@ "vscode-apollo": patch --- -Add JSON schemas for `supergraph.yaml` and `apollo-router.yaml` +Add JSON schema for `supergraph.yaml`. diff --git a/package.json b/package.json index 9f68a5df..2a78677d 100644 --- a/package.json +++ b/package.json @@ -259,11 +259,6 @@ "fileMatch": "apollo.config.yaml", "url": "./schemas/apollo.config.schema.json" }, - { - "fileMatch": "apollo-router.yaml", - "_url": "https://github.com/apollographql/router-template/raw/main/.apollo/router_config_schema.json", - "url": "./schemas/router_config_schema.json" - }, { "fileMatch": "supergraph.yaml", "url": "./schemas/supergraph_config_schema.json" diff --git a/schemas/router_config_schema.json b/schemas/router_config_schema.json deleted file mode 100644 index c3691d61..00000000 --- a/schemas/router_config_schema.json +++ /dev/null @@ -1,8342 +0,0 @@ -{ - "$schema": "http://json-schema.org/draft-07/schema#", - "title": "Configuration", - "description": "The configuration for the router.\n\nCan be created through `serde::Deserialize` from various formats, or inline in Rust code with `serde_json::json!` and `serde_json::from_value`.", - "type": "object", - "properties": { - "apq": { - "description": "#/definitions/Apq", - "$ref": "#/definitions/Apq" - }, - "authentication": { - "description": "#/definitions/Conf", - "$ref": "#/definitions/Conf" - }, - "authorization": { - "description": "#/definitions/Conf2", - "$ref": "#/definitions/Conf2" - }, - "batching": { - "description": "#/definitions/Batching", - "$ref": "#/definitions/Batching" - }, - "coprocessor": { - "description": "#/definitions/Conf3", - "$ref": "#/definitions/Conf3" - }, - "cors": { - "description": "#/definitions/Cors", - "$ref": "#/definitions/Cors" - }, - "csrf": { - "description": "#/definitions/CSRFConfig", - "$ref": "#/definitions/CSRFConfig" - }, - "demand_control": { - "description": "#/definitions/DemandControlConfig", - "$ref": "#/definitions/DemandControlConfig" - }, - "experimental_chaos": { - "description": "#/definitions/Chaos", - "$ref": "#/definitions/Chaos" - }, - "experimental_introspection_mode": { - "description": "#/definitions/IntrospectionMode", - "$ref": "#/definitions/IntrospectionMode" - }, - "experimental_query_planner_mode": { - "description": "#/definitions/QueryPlannerMode", - "$ref": "#/definitions/QueryPlannerMode" - }, - "experimental_type_conditioned_fetching": { - "description": "Type conditioned fetching configuration.", - "default": false, - "type": "boolean" - }, - "forbid_mutations": { - "description": "#/definitions/ForbidMutationsConfig", - "$ref": "#/definitions/ForbidMutationsConfig" - }, - "headers": { - "description": "#/definitions/Config5", - "$ref": "#/definitions/Config5" - }, - "health_check": { - "description": "#/definitions/HealthCheck", - "$ref": "#/definitions/HealthCheck" - }, - "homepage": { - "description": "#/definitions/Homepage", - "$ref": "#/definitions/Homepage" - }, - "include_subgraph_errors": { - "description": "#/definitions/Config6", - "$ref": "#/definitions/Config6" - }, - "limits": { - "description": "#/definitions/Config", - "$ref": "#/definitions/Config" - }, - "override_subgraph_url": { - "description": "#/definitions/Conf4", - "$ref": "#/definitions/Conf4" - }, - "persisted_queries": { - "description": "#/definitions/PersistedQueries", - "$ref": "#/definitions/PersistedQueries" - }, - "plugins": { - "description": "#/definitions/Plugins", - "$ref": "#/definitions/Plugins" - }, - "preview_entity_cache": { - "description": "#/definitions/Config7", - "$ref": "#/definitions/Config7" - }, - "preview_file_uploads": { - "description": "#/definitions/FileUploadsConfig", - "$ref": "#/definitions/FileUploadsConfig" - }, - "progressive_override": { - "description": "#/definitions/Config8", - "$ref": "#/definitions/Config8" - }, - "rhai": { - "description": "#/definitions/Conf5", - "$ref": "#/definitions/Conf5" - }, - "sandbox": { - "description": "#/definitions/Sandbox", - "$ref": "#/definitions/Sandbox" - }, - "subscription": { - "description": "#/definitions/SubscriptionConfig", - "$ref": "#/definitions/SubscriptionConfig" - }, - "supergraph": { - "description": "#/definitions/Supergraph", - "$ref": "#/definitions/Supergraph" - }, - "telemetry": { - "description": "#/definitions/Conf6", - "$ref": "#/definitions/Conf6" - }, - "tls": { - "description": "#/definitions/Tls", - "$ref": "#/definitions/Tls" - }, - "traffic_shaping": { - "description": "#/definitions/Config15", - "$ref": "#/definitions/Config15" - } - }, - "additionalProperties": false, - "definitions": { - "AWSSigV4Config": { - "description": "Configure AWS sigv4 auth.", - "oneOf": [ - { - "type": "object", - "required": [ - "hardcoded" - ], - "properties": { - "hardcoded": { - "description": "#/definitions/AWSSigV4HardcodedConfig", - "$ref": "#/definitions/AWSSigV4HardcodedConfig" - } - }, - "additionalProperties": false - }, - { - "type": "object", - "required": [ - "default_chain" - ], - "properties": { - "default_chain": { - "description": "#/definitions/DefaultChainConfig", - "$ref": "#/definitions/DefaultChainConfig" - } - }, - "additionalProperties": false - } - ] - }, - "AWSSigV4HardcodedConfig": { - "description": "Hardcoded Config using access_key and secret. Prefer using DefaultChain instead.", - "type": "object", - "required": [ - "access_key_id", - "region", - "secret_access_key", - "service_name" - ], - "properties": { - "access_key_id": { - "description": "The ID for this access key.", - "type": "string" - }, - "assume_role": { - "description": "#/definitions/AssumeRoleProvider", - "$ref": "#/definitions/AssumeRoleProvider", - "nullable": true - }, - "region": { - "description": "The AWS region this chain applies to.", - "type": "string" - }, - "secret_access_key": { - "description": "The secret key used to sign requests.", - "type": "string" - }, - "service_name": { - "description": "The service you're trying to access, eg: \"s3\", \"vpc-lattice-svcs\", etc.", - "type": "string" - } - }, - "additionalProperties": false - }, - "ActiveRequestsAttributes": { - "type": "object", - "properties": { - "http.request.method": { - "description": "The HTTP request method", - "default": false, - "type": "boolean" - }, - "server.address": { - "description": "The server address", - "default": false, - "type": "boolean" - }, - "server.port": { - "description": "The server port", - "default": false, - "type": "boolean" - }, - "url.scheme": { - "description": "The URL scheme", - "default": false, - "type": "boolean" - } - }, - "additionalProperties": false - }, - "AgentConfig": { - "type": "object", - "properties": { - "endpoint": { - "description": "#/definitions/SocketEndpoint", - "$ref": "#/definitions/SocketEndpoint" - } - }, - "additionalProperties": false - }, - "All": { - "type": "string", - "enum": [ - "all" - ] - }, - "ApolloMetricsReferenceMode": { - "description": "Apollo usage report reference generation modes.", - "oneOf": [ - { - "description": "Use the extended mode to report input object fields and enum value references as well as object fields.", - "type": "string", - "enum": [ - "extended" - ] - }, - { - "description": "Use the standard mode that only reports referenced object fields.", - "type": "string", - "enum": [ - "standard" - ] - } - ] - }, - "ApolloSignatureNormalizationAlgorithm": { - "description": "Apollo usage report signature normalization algorithm", - "oneOf": [ - { - "description": "Use the algorithm that matches the JavaScript-based implementation.", - "type": "string", - "enum": [ - "legacy" - ] - }, - { - "description": "Use a new algorithm that includes input object forms, normalized aliases and variable names, and removes some edge cases from the JS implementation that affected normalization.", - "type": "string", - "enum": [ - "enhanced" - ] - } - ] - }, - "Apq": { - "description": "Automatic Persisted Queries (APQ) configuration", - "type": "object", - "properties": { - "enabled": { - "description": "Activates Automatic Persisted Queries (enabled by default)", - "default": true, - "type": "boolean" - }, - "router": { - "description": "#/definitions/Router", - "$ref": "#/definitions/Router" - }, - "subgraph": { - "description": "#/definitions/SubgraphConfiguration_for_SubgraphApq", - "$ref": "#/definitions/SubgraphConfiguration_for_SubgraphApq" - } - }, - "additionalProperties": false - }, - "AssumeRoleProvider": { - "description": "Specify assumed role configuration.", - "type": "object", - "required": [ - "role_arn", - "session_name" - ], - "properties": { - "external_id": { - "description": "Unique identifier that might be required when you assume a role in another account.", - "type": "string", - "nullable": true - }, - "role_arn": { - "description": "Amazon Resource Name (ARN) for the role assumed when making requests", - "type": "string" - }, - "session_name": { - "description": "Uniquely identify a session when the same role is assumed by different principals or for different reasons.", - "type": "string" - } - }, - "additionalProperties": false - }, - "AttributeArray": { - "anyOf": [ - { - "description": "Array of bools", - "type": "array", - "items": { - "type": "boolean" - } - }, - { - "description": "Array of integers", - "type": "array", - "items": { - "type": "integer", - "format": "int64" - } - }, - { - "description": "Array of floats", - "type": "array", - "items": { - "type": "number", - "format": "double" - } - }, - { - "description": "Array of strings", - "type": "array", - "items": { - "type": "string" - } - } - ] - }, - "AttributeValue": { - "anyOf": [ - { - "description": "bool values", - "type": "boolean" - }, - { - "description": "i64 values", - "type": "integer", - "format": "int64" - }, - { - "description": "f64 values", - "type": "number", - "format": "double" - }, - { - "description": "String values", - "type": "string" - }, - { - "description": "#/definitions/AttributeArray", - "$ref": "#/definitions/AttributeArray" - } - ] - }, - "AttributesForwardConf": { - "description": "Configuration to add custom attributes/labels on metrics to subgraphs", - "type": "object", - "properties": { - "context": { - "description": "Configuration to forward values from the context to custom attributes/labels in metrics", - "type": "array", - "items": { - "description": "#/definitions/ContextForward", - "$ref": "#/definitions/ContextForward" - } - }, - "errors": { - "description": "#/definitions/ErrorsForward", - "$ref": "#/definitions/ErrorsForward" - }, - "request": { - "description": "#/definitions/Forward", - "$ref": "#/definitions/Forward" - }, - "response": { - "description": "#/definitions/Forward", - "$ref": "#/definitions/Forward" - }, - "static": { - "description": "Configuration to insert custom attributes/labels in metrics", - "type": "array", - "items": { - "description": "#/definitions/Insert2", - "$ref": "#/definitions/Insert2" - } - } - }, - "additionalProperties": false - }, - "AuthConfig": { - "oneOf": [ - { - "type": "object", - "required": [ - "aws_sig_v4" - ], - "properties": { - "aws_sig_v4": { - "description": "#/definitions/AWSSigV4Config", - "$ref": "#/definitions/AWSSigV4Config" - } - }, - "additionalProperties": false - } - ] - }, - "Auto": { - "type": "string", - "enum": [ - "auto" - ] - }, - "AvailableParallelism": { - "anyOf": [ - { - "description": "#/definitions/Auto", - "$ref": "#/definitions/Auto" - }, - { - "type": "integer", - "format": "uint", - "minimum": 1.0 - } - ] - }, - "BatchProcessorConfig": { - "description": "Batch processor configuration", - "type": "object", - "properties": { - "max_concurrent_exports": { - "description": "Maximum number of concurrent exports\n\nLimits the number of spawned tasks for exports and thus memory consumed by an exporter. A value of 1 will cause exports to be performed synchronously on the BatchSpanProcessor task. The default is 1.", - "default": 1, - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "max_export_batch_size": { - "description": "The maximum number of spans to process in a single batch. If there are more than one batch worth of spans then it processes multiple batches of spans one batch after the other without any delay. The default value is 512.", - "default": 512, - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "max_export_timeout": { - "description": "The maximum duration to export a batch of data. The default value is 30 seconds.", - "default": { - "secs": 30, - "nanos": 0 - }, - "type": "string" - }, - "max_queue_size": { - "description": "The maximum queue size to buffer spans for delayed processing. If the queue gets full it drops the spans. The default value of is 2048.", - "default": 2048, - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "scheduled_delay": { - "description": "The delay interval in milliseconds between two consecutive processing of batches. The default value is 5 seconds.", - "default": { - "secs": 5, - "nanos": 0 - }, - "type": "string" - } - } - }, - "Batching": { - "description": "Configuration for Batching", - "type": "object", - "required": [ - "mode" - ], - "properties": { - "enabled": { - "description": "Activates Batching (disabled by default)", - "default": false, - "type": "boolean" - }, - "mode": { - "description": "#/definitions/BatchingMode", - "$ref": "#/definitions/BatchingMode" - }, - "subgraph": { - "description": "#/definitions/SubgraphConfiguration_for_CommonBatchingConfig", - "$ref": "#/definitions/SubgraphConfiguration_for_CommonBatchingConfig", - "nullable": true - } - }, - "additionalProperties": false - }, - "BatchingMode": { - "oneOf": [ - { - "description": "batch_http_link", - "type": "string", - "enum": [ - "batch_http_link" - ] - } - ] - }, - "BodyForward": { - "description": "Configuration to forward body values in metric attributes/labels", - "type": "object", - "required": [ - "name", - "path" - ], - "properties": { - "default": { - "description": "#/definitions/AttributeValue", - "$ref": "#/definitions/AttributeValue", - "nullable": true - }, - "name": { - "description": "The name of the attribute", - "type": "string" - }, - "path": { - "description": "The path in the body", - "type": "string" - } - }, - "additionalProperties": false - }, - "CSRFConfig": { - "description": "CSRF Configuration.", - "type": "object", - "properties": { - "required_headers": { - "description": "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 defaults to `mirror_request`) - added your required headers to the allow_headers list, as shown in the `examples/cors-and-csrf/custom-headers.router.yaml` files.", - "default": [ - "x-apollo-operation-name", - "apollo-require-preflight" - ], - "type": "array", - "items": { - "type": "string" - } - }, - "unsafe_disabled": { - "description": "The CSRF plugin is enabled by default; set unsafe_disabled = true to disable the plugin behavior Note that setting this to true is deemed unsafe. See .", - "default": false, - "type": "boolean" - } - }, - "additionalProperties": false - }, - "Cache": { - "description": "Cache configuration", - "type": "object", - "properties": { - "in_memory": { - "description": "#/definitions/InMemoryCache", - "$ref": "#/definitions/InMemoryCache" - }, - "redis": { - "description": "#/definitions/RedisCache", - "$ref": "#/definitions/RedisCache", - "nullable": true - } - }, - "additionalProperties": false - }, - "CacheAttributes": { - "type": "object", - "properties": { - "entity.type": { - "description": "Entity type", - "default": null, - "type": "boolean", - "nullable": true - } - }, - "additionalProperties": false - }, - "CacheInstrumentsConfig": { - "type": "object", - "properties": { - "apollo.router.operations.entity.cache": { - "description": "#/definitions/DefaultedStandardInstrument_for_extendable_attribute_apollo_router::plugins::telemetry::config_new::cache::attributes::CacheAttributes_apollo_router::plugins::telemetry::config_new::selectors::SubgraphSelector", - "$ref": "#/definitions/DefaultedStandardInstrument_for_extendable_attribute_apollo_router::plugins::telemetry::config_new::cache::attributes::CacheAttributes_apollo_router::plugins::telemetry::config_new::selectors::SubgraphSelector" - } - }, - "additionalProperties": false - }, - "CacheKind": { - "type": "string", - "enum": [ - "hit", - "miss" - ] - }, - "CallbackMode": { - "description": "Using a callback url", - "type": "object", - "required": [ - "public_url" - ], - "properties": { - "heartbeat_interval": { - "description": "#/definitions/HeartbeatInterval", - "$ref": "#/definitions/HeartbeatInterval" - }, - "listen": { - "description": "#/definitions/ListenAddr", - "$ref": "#/definitions/ListenAddr", - "nullable": true - }, - "path": { - "description": "Specify on which path you want to listen for callbacks (default: /callback)", - "writeOnly": true, - "type": "string", - "nullable": true - }, - "public_url": { - "description": "URL used to access this router instance, including the path configured on the Router", - "type": "string" - }, - "subgraphs": { - "description": "Specify on which subgraph we enable the callback mode for subscription If empty it applies to all subgraphs (passthrough mode takes precedence)", - "default": [], - "type": "array", - "items": { - "type": "string" - }, - "uniqueItems": true - } - }, - "additionalProperties": false - }, - "Chaos": { - "description": "Configuration for chaos testing, trying to reproduce bugs that require uncommon conditions. You probably don’t want this in production!", - "type": "object", - "properties": { - "force_reload": { - "description": "Force a hot reload of the Router (as if the schema or configuration had changed) at a regular time interval.", - "default": null, - "type": "string", - "nullable": true - } - }, - "additionalProperties": false - }, - "Client": { - "type": "object", - "properties": { - "experimental_http2": { - "description": "#/definitions/Http2Config", - "$ref": "#/definitions/Http2Config", - "nullable": true - } - }, - "additionalProperties": false - }, - "CollectorConfig": { - "type": "object", - "properties": { - "endpoint": { - "description": "#/definitions/UriEndpoint", - "$ref": "#/definitions/UriEndpoint" - }, - "password": { - "description": "The optional password", - "default": null, - "type": "string", - "nullable": true - }, - "username": { - "description": "The optional username", - "default": null, - "type": "string", - "nullable": true - } - }, - "additionalProperties": false - }, - "CommonBatchingConfig": { - "description": "Common options for configuring subgraph batching", - "type": "object", - "required": [ - "enabled" - ], - "properties": { - "enabled": { - "description": "Whether this batching config should be enabled", - "type": "boolean" - } - } - }, - "Compression": { - "oneOf": [ - { - "description": "gzip", - "type": "string", - "enum": [ - "gzip" - ] - }, - { - "description": "deflate", - "type": "string", - "enum": [ - "deflate" - ] - }, - { - "description": "brotli", - "type": "string", - "enum": [ - "br" - ] - }, - { - "description": "identity", - "type": "string", - "enum": [ - "identity" - ] - } - ] - }, - "Condition_for_GraphQLSelector": { - "oneOf": [ - { - "description": "A condition to check a selection against a value.", - "type": "object", - "required": [ - "eq" - ], - "properties": { - "eq": { - "type": "array", - "items": { - "description": "#/definitions/SelectorOrValue_for_GraphQLSelector", - "$ref": "#/definitions/SelectorOrValue_for_GraphQLSelector" - }, - "maxItems": 2, - "minItems": 2 - } - }, - "additionalProperties": false - }, - { - "description": "The first selection must be greater than the second selection.", - "type": "object", - "required": [ - "gt" - ], - "properties": { - "gt": { - "type": "array", - "items": { - "description": "#/definitions/SelectorOrValue_for_GraphQLSelector", - "$ref": "#/definitions/SelectorOrValue_for_GraphQLSelector" - }, - "maxItems": 2, - "minItems": 2 - } - }, - "additionalProperties": false - }, - { - "description": "The first selection must be less than the second selection.", - "type": "object", - "required": [ - "lt" - ], - "properties": { - "lt": { - "type": "array", - "items": { - "description": "#/definitions/SelectorOrValue_for_GraphQLSelector", - "$ref": "#/definitions/SelectorOrValue_for_GraphQLSelector" - }, - "maxItems": 2, - "minItems": 2 - } - }, - "additionalProperties": false - }, - { - "description": "A condition to check a selection against a selector.", - "type": "object", - "required": [ - "exists" - ], - "properties": { - "exists": { - "description": "#/definitions/GraphQLSelector", - "$ref": "#/definitions/GraphQLSelector" - } - }, - "additionalProperties": false - }, - { - "description": "All sub-conditions must be true.", - "type": "object", - "required": [ - "all" - ], - "properties": { - "all": { - "type": "array", - "items": { - "description": "#/definitions/Condition_for_GraphQLSelector", - "$ref": "#/definitions/Condition_for_GraphQLSelector" - } - } - }, - "additionalProperties": false - }, - { - "description": "At least one sub-conditions must be true.", - "type": "object", - "required": [ - "any" - ], - "properties": { - "any": { - "type": "array", - "items": { - "description": "#/definitions/Condition_for_GraphQLSelector", - "$ref": "#/definitions/Condition_for_GraphQLSelector" - } - } - }, - "additionalProperties": false - }, - { - "description": "The sub-condition must not be true", - "type": "object", - "required": [ - "not" - ], - "properties": { - "not": { - "description": "#/definitions/Condition_for_GraphQLSelector", - "$ref": "#/definitions/Condition_for_GraphQLSelector" - } - }, - "additionalProperties": false - }, - { - "description": "Static true condition", - "type": "string", - "enum": [ - "true" - ] - }, - { - "description": "Static false condition", - "type": "string", - "enum": [ - "false" - ] - } - ] - }, - "Condition_for_RouterSelector": { - "oneOf": [ - { - "description": "A condition to check a selection against a value.", - "type": "object", - "required": [ - "eq" - ], - "properties": { - "eq": { - "type": "array", - "items": { - "description": "#/definitions/SelectorOrValue_for_RouterSelector", - "$ref": "#/definitions/SelectorOrValue_for_RouterSelector" - }, - "maxItems": 2, - "minItems": 2 - } - }, - "additionalProperties": false - }, - { - "description": "The first selection must be greater than the second selection.", - "type": "object", - "required": [ - "gt" - ], - "properties": { - "gt": { - "type": "array", - "items": { - "description": "#/definitions/SelectorOrValue_for_RouterSelector", - "$ref": "#/definitions/SelectorOrValue_for_RouterSelector" - }, - "maxItems": 2, - "minItems": 2 - } - }, - "additionalProperties": false - }, - { - "description": "The first selection must be less than the second selection.", - "type": "object", - "required": [ - "lt" - ], - "properties": { - "lt": { - "type": "array", - "items": { - "description": "#/definitions/SelectorOrValue_for_RouterSelector", - "$ref": "#/definitions/SelectorOrValue_for_RouterSelector" - }, - "maxItems": 2, - "minItems": 2 - } - }, - "additionalProperties": false - }, - { - "description": "A condition to check a selection against a selector.", - "type": "object", - "required": [ - "exists" - ], - "properties": { - "exists": { - "description": "#/definitions/RouterSelector", - "$ref": "#/definitions/RouterSelector" - } - }, - "additionalProperties": false - }, - { - "description": "All sub-conditions must be true.", - "type": "object", - "required": [ - "all" - ], - "properties": { - "all": { - "type": "array", - "items": { - "description": "#/definitions/Condition_for_RouterSelector", - "$ref": "#/definitions/Condition_for_RouterSelector" - } - } - }, - "additionalProperties": false - }, - { - "description": "At least one sub-conditions must be true.", - "type": "object", - "required": [ - "any" - ], - "properties": { - "any": { - "type": "array", - "items": { - "description": "#/definitions/Condition_for_RouterSelector", - "$ref": "#/definitions/Condition_for_RouterSelector" - } - } - }, - "additionalProperties": false - }, - { - "description": "The sub-condition must not be true", - "type": "object", - "required": [ - "not" - ], - "properties": { - "not": { - "description": "#/definitions/Condition_for_RouterSelector", - "$ref": "#/definitions/Condition_for_RouterSelector" - } - }, - "additionalProperties": false - }, - { - "description": "Static true condition", - "type": "string", - "enum": [ - "true" - ] - }, - { - "description": "Static false condition", - "type": "string", - "enum": [ - "false" - ] - } - ] - }, - "Condition_for_SubgraphSelector": { - "oneOf": [ - { - "description": "A condition to check a selection against a value.", - "type": "object", - "required": [ - "eq" - ], - "properties": { - "eq": { - "type": "array", - "items": { - "description": "#/definitions/SelectorOrValue_for_SubgraphSelector", - "$ref": "#/definitions/SelectorOrValue_for_SubgraphSelector" - }, - "maxItems": 2, - "minItems": 2 - } - }, - "additionalProperties": false - }, - { - "description": "The first selection must be greater than the second selection.", - "type": "object", - "required": [ - "gt" - ], - "properties": { - "gt": { - "type": "array", - "items": { - "description": "#/definitions/SelectorOrValue_for_SubgraphSelector", - "$ref": "#/definitions/SelectorOrValue_for_SubgraphSelector" - }, - "maxItems": 2, - "minItems": 2 - } - }, - "additionalProperties": false - }, - { - "description": "The first selection must be less than the second selection.", - "type": "object", - "required": [ - "lt" - ], - "properties": { - "lt": { - "type": "array", - "items": { - "description": "#/definitions/SelectorOrValue_for_SubgraphSelector", - "$ref": "#/definitions/SelectorOrValue_for_SubgraphSelector" - }, - "maxItems": 2, - "minItems": 2 - } - }, - "additionalProperties": false - }, - { - "description": "A condition to check a selection against a selector.", - "type": "object", - "required": [ - "exists" - ], - "properties": { - "exists": { - "description": "#/definitions/SubgraphSelector", - "$ref": "#/definitions/SubgraphSelector" - } - }, - "additionalProperties": false - }, - { - "description": "All sub-conditions must be true.", - "type": "object", - "required": [ - "all" - ], - "properties": { - "all": { - "type": "array", - "items": { - "description": "#/definitions/Condition_for_SubgraphSelector", - "$ref": "#/definitions/Condition_for_SubgraphSelector" - } - } - }, - "additionalProperties": false - }, - { - "description": "At least one sub-conditions must be true.", - "type": "object", - "required": [ - "any" - ], - "properties": { - "any": { - "type": "array", - "items": { - "description": "#/definitions/Condition_for_SubgraphSelector", - "$ref": "#/definitions/Condition_for_SubgraphSelector" - } - } - }, - "additionalProperties": false - }, - { - "description": "The sub-condition must not be true", - "type": "object", - "required": [ - "not" - ], - "properties": { - "not": { - "description": "#/definitions/Condition_for_SubgraphSelector", - "$ref": "#/definitions/Condition_for_SubgraphSelector" - } - }, - "additionalProperties": false - }, - { - "description": "Static true condition", - "type": "string", - "enum": [ - "true" - ] - }, - { - "description": "Static false condition", - "type": "string", - "enum": [ - "false" - ] - } - ] - }, - "Condition_for_SupergraphSelector": { - "oneOf": [ - { - "description": "A condition to check a selection against a value.", - "type": "object", - "required": [ - "eq" - ], - "properties": { - "eq": { - "type": "array", - "items": { - "description": "#/definitions/SelectorOrValue_for_SupergraphSelector", - "$ref": "#/definitions/SelectorOrValue_for_SupergraphSelector" - }, - "maxItems": 2, - "minItems": 2 - } - }, - "additionalProperties": false - }, - { - "description": "The first selection must be greater than the second selection.", - "type": "object", - "required": [ - "gt" - ], - "properties": { - "gt": { - "type": "array", - "items": { - "description": "#/definitions/SelectorOrValue_for_SupergraphSelector", - "$ref": "#/definitions/SelectorOrValue_for_SupergraphSelector" - }, - "maxItems": 2, - "minItems": 2 - } - }, - "additionalProperties": false - }, - { - "description": "The first selection must be less than the second selection.", - "type": "object", - "required": [ - "lt" - ], - "properties": { - "lt": { - "type": "array", - "items": { - "description": "#/definitions/SelectorOrValue_for_SupergraphSelector", - "$ref": "#/definitions/SelectorOrValue_for_SupergraphSelector" - }, - "maxItems": 2, - "minItems": 2 - } - }, - "additionalProperties": false - }, - { - "description": "A condition to check a selection against a selector.", - "type": "object", - "required": [ - "exists" - ], - "properties": { - "exists": { - "description": "#/definitions/SupergraphSelector", - "$ref": "#/definitions/SupergraphSelector" - } - }, - "additionalProperties": false - }, - { - "description": "All sub-conditions must be true.", - "type": "object", - "required": [ - "all" - ], - "properties": { - "all": { - "type": "array", - "items": { - "description": "#/definitions/Condition_for_SupergraphSelector", - "$ref": "#/definitions/Condition_for_SupergraphSelector" - } - } - }, - "additionalProperties": false - }, - { - "description": "At least one sub-conditions must be true.", - "type": "object", - "required": [ - "any" - ], - "properties": { - "any": { - "type": "array", - "items": { - "description": "#/definitions/Condition_for_SupergraphSelector", - "$ref": "#/definitions/Condition_for_SupergraphSelector" - } - } - }, - "additionalProperties": false - }, - { - "description": "The sub-condition must not be true", - "type": "object", - "required": [ - "not" - ], - "properties": { - "not": { - "description": "#/definitions/Condition_for_SupergraphSelector", - "$ref": "#/definitions/Condition_for_SupergraphSelector" - } - }, - "additionalProperties": false - }, - { - "description": "Static true condition", - "type": "string", - "enum": [ - "true" - ] - }, - { - "description": "Static false condition", - "type": "string", - "enum": [ - "false" - ] - } - ] - }, - "Conf": { - "description": "Authentication", - "type": "object", - "properties": { - "router": { - "description": "#/definitions/RouterConf", - "$ref": "#/definitions/RouterConf", - "nullable": true - }, - "subgraph": { - "description": "#/definitions/Config4", - "$ref": "#/definitions/Config4", - "nullable": true - } - }, - "additionalProperties": false - }, - "Conf2": { - "description": "Authorization plugin", - "type": "object", - "properties": { - "directives": { - "description": "#/definitions/Directives", - "$ref": "#/definitions/Directives" - }, - "require_authentication": { - "description": "Reject unauthenticated requests", - "default": false, - "type": "boolean" - } - } - }, - "Conf3": { - "description": "Configures the externalization plugin", - "type": "object", - "required": [ - "url" - ], - "properties": { - "client": { - "description": "#/definitions/Client", - "$ref": "#/definitions/Client", - "nullable": true - }, - "execution": { - "description": "#/definitions/ExecutionStage", - "$ref": "#/definitions/ExecutionStage" - }, - "router": { - "description": "#/definitions/RouterStage", - "$ref": "#/definitions/RouterStage" - }, - "subgraph": { - "description": "#/definitions/SubgraphStages", - "$ref": "#/definitions/SubgraphStages" - }, - "supergraph": { - "description": "#/definitions/SupergraphStage", - "$ref": "#/definitions/SupergraphStage" - }, - "timeout": { - "description": "The timeout for external requests", - "default": { - "secs": 1, - "nanos": 0 - }, - "type": "string" - }, - "url": { - "description": "The url you'd like to offload processing to", - "type": "string" - } - }, - "additionalProperties": false - }, - "Conf4": { - "description": "Subgraph URL mappings", - "anyOf": [ - { - "description": "Subgraph URL mappings", - "type": "object", - "additionalProperties": { - "type": "string" - } - } - ] - }, - "Conf5": { - "description": "Configuration for the Rhai Plugin", - "type": "object", - "properties": { - "main": { - "description": "The main entry point for Rhai script evaluation", - "type": "string", - "nullable": true - }, - "scripts": { - "description": "The directory where Rhai scripts can be found", - "type": "string", - "nullable": true - } - }, - "additionalProperties": false - }, - "Conf6": { - "description": "Telemetry configuration", - "type": "object", - "properties": { - "apollo": { - "description": "#/definitions/Config9", - "$ref": "#/definitions/Config9" - }, - "exporters": { - "description": "#/definitions/Exporters", - "$ref": "#/definitions/Exporters" - }, - "instrumentation": { - "description": "#/definitions/Instrumentation", - "$ref": "#/definitions/Instrumentation" - } - }, - "additionalProperties": false - }, - "Config": { - "description": "Configuration for operation limits, parser limits, HTTP limits, etc.", - "type": "object", - "properties": { - "http_max_request_bytes": { - "description": "Limit the size of incoming HTTP requests read from the network, to protect against running out of memory. Default: 2000000 (2 MB)", - "default": 2000000, - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "max_aliases": { - "description": "If 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, - "type": "integer", - "format": "uint32", - "minimum": 0.0, - "nullable": true - }, - "max_depth": { - "description": "If 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\"}`\n\nCounts depth of an operation, looking at its selection sets,˛ including fields in fragments and inline fragments. The following example has a depth of 3.\n\n```graphql query getProduct { book { # 1 ...bookDetails } }\n\nfragment bookDetails on Book { details { # 2 ... on ProductDetailsBook { country # 3 } } } ```", - "default": null, - "type": "integer", - "format": "uint32", - "minimum": 0.0, - "nullable": true - }, - "max_height": { - "description": "If 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\"}`\n\nHeight is based on simple merging of fields using the same name or alias, but only within the same selection set. For example `name` here is only counted once and the query has height 3, not 4:\n\n```graphql query { name { first } name { last } } ```\n\nThis may change in a future version of Apollo Router to do [full field merging across fragments][merging] instead.\n\n[merging]: https://spec.graphql.org/October2021/#sec-Field-Selection-Merging]", - "default": null, - "type": "integer", - "format": "uint32", - "minimum": 0.0, - "nullable": true - }, - "max_root_fields": { - "description": "If 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\"}`\n\nThis limit counts only the top level fields in a selection set, including fragments and inline fragments.", - "default": null, - "type": "integer", - "format": "uint32", - "minimum": 0.0, - "nullable": true - }, - "parser_max_recursion": { - "description": "Limit recursion in the GraphQL parser to protect against stack overflow. default: 500", - "default": 500, - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "parser_max_tokens": { - "description": "Limit the number of tokens the GraphQL parser processes before aborting.", - "default": 15000, - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "warn_only": { - "description": "If 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, - "type": "boolean" - } - }, - "additionalProperties": false - }, - "Config10": { - "type": "object", - "required": [ - "enabled" - ], - "properties": { - "batch_processor": { - "description": "#/definitions/BatchProcessorConfig", - "$ref": "#/definitions/BatchProcessorConfig" - }, - "enabled": { - "description": "Enable otlp", - "type": "boolean" - }, - "endpoint": { - "description": "#/definitions/UriEndpoint", - "$ref": "#/definitions/UriEndpoint" - }, - "grpc": { - "description": "#/definitions/GrpcExporter", - "$ref": "#/definitions/GrpcExporter" - }, - "http": { - "description": "#/definitions/HttpExporter", - "$ref": "#/definitions/HttpExporter" - }, - "protocol": { - "description": "#/definitions/Protocol", - "$ref": "#/definitions/Protocol" - }, - "temporality": { - "description": "#/definitions/Temporality", - "$ref": "#/definitions/Temporality" - } - }, - "additionalProperties": false - }, - "Config11": { - "description": "Prometheus configuration", - "type": "object", - "properties": { - "enabled": { - "description": "Set to true to enable", - "default": false, - "type": "boolean" - }, - "listen": { - "description": "#/definitions/ListenAddr", - "$ref": "#/definitions/ListenAddr" - }, - "path": { - "description": "The path where prometheus will be exposed", - "default": "/metrics", - "type": "string" - } - }, - "additionalProperties": false - }, - "Config12": { - "anyOf": [ - { - "type": "object", - "required": [ - "enabled" - ], - "properties": { - "agent": { - "description": "#/definitions/AgentConfig", - "$ref": "#/definitions/AgentConfig" - }, - "batch_processor": { - "description": "#/definitions/BatchProcessorConfig", - "$ref": "#/definitions/BatchProcessorConfig" - }, - "enabled": { - "description": "Enable Jaeger", - "type": "boolean" - } - }, - "additionalProperties": false - }, - { - "type": "object", - "required": [ - "enabled" - ], - "properties": { - "batch_processor": { - "description": "#/definitions/BatchProcessorConfig", - "$ref": "#/definitions/BatchProcessorConfig" - }, - "collector": { - "description": "#/definitions/CollectorConfig", - "$ref": "#/definitions/CollectorConfig" - }, - "enabled": { - "description": "Enable Jaeger", - "type": "boolean" - } - }, - "additionalProperties": false - } - ] - }, - "Config13": { - "type": "object", - "required": [ - "enabled" - ], - "properties": { - "batch_processor": { - "description": "#/definitions/BatchProcessorConfig", - "$ref": "#/definitions/BatchProcessorConfig" - }, - "enabled": { - "description": "Enable zipkin", - "type": "boolean" - }, - "endpoint": { - "description": "#/definitions/UriEndpoint", - "$ref": "#/definitions/UriEndpoint" - } - }, - "additionalProperties": false - }, - "Config14": { - "type": "object", - "required": [ - "enabled" - ], - "properties": { - "batch_processor": { - "description": "#/definitions/BatchProcessorConfig", - "$ref": "#/definitions/BatchProcessorConfig" - }, - "enable_span_mapping": { - "description": "Enable datadog span mapping for span name and resource name.", - "default": true, - "type": "boolean" - }, - "enabled": { - "description": "Enable datadog", - "type": "boolean" - }, - "endpoint": { - "description": "#/definitions/UriEndpoint", - "$ref": "#/definitions/UriEndpoint" - }, - "fixed_span_names": { - "description": "Fixes the span names, this means that the APM view will show the original span names in the operation dropdown.", - "default": true, - "type": "boolean" - }, - "resource_mapping": { - "description": "Custom mapping to be used as the resource field in spans, defaults to: router -> http.route supergraph -> graphql.operation.name query_planning -> graphql.operation.name subgraph -> subgraph.name subgraph_request -> subgraph.name http_request -> http.route", - "default": {}, - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "span_metrics": { - "description": "Which spans will be eligible for span stats to be collected for viewing in the APM view. Defaults to true for `request`, `router`, `query_parsing`, `supergraph`, `execution`, `query_planning`, `subgraph`, `subgraph_request` and `http_request`.", - "default": { - "request": true, - "subgraph_request": true, - "subgraph": true, - "supergraph": true, - "query_planning": true, - "parse_query": true, - "execution": true, - "router": true, - "http_request": true - }, - "type": "object", - "additionalProperties": { - "type": "boolean" - } - } - }, - "additionalProperties": false - }, - "Config15": { - "description": "Configuration for the experimental traffic shaping plugin", - "type": "object", - "properties": { - "all": { - "description": "#/definitions/SubgraphShaping", - "$ref": "#/definitions/SubgraphShaping", - "nullable": true - }, - "deduplicate_variables": { - "description": "DEPRECATED, now always enabled: Enable variable deduplication optimization when sending requests to subgraphs (https://github.com/apollographql/router/issues/87)", - "default": null, - "type": "boolean", - "nullable": true - }, - "router": { - "description": "#/definitions/RouterShaping", - "$ref": "#/definitions/RouterShaping", - "nullable": true - }, - "subgraphs": { - "description": "Applied on specific subgraphs", - "type": "object", - "additionalProperties": { - "description": "#/definitions/SubgraphShaping", - "$ref": "#/definitions/SubgraphShaping" - } - } - }, - "additionalProperties": false - }, - "Config2": { - "description": "This is a broken plugin for testing purposes only.", - "type": "object", - "required": [ - "enabled" - ], - "properties": { - "enabled": { - "description": "Enable the broken plugin.", - "type": "boolean" - } - } - }, - "Config3": { - "description": "Restricted plugin (for testing purposes only)", - "type": "object", - "required": [ - "enabled" - ], - "properties": { - "enabled": { - "description": "Enable the restricted plugin (for testing purposes only)", - "type": "boolean" - } - } - }, - "Config4": { - "description": "Configure subgraph authentication", - "type": "object", - "properties": { - "all": { - "description": "#/definitions/AuthConfig", - "$ref": "#/definitions/AuthConfig", - "nullable": true - }, - "subgraphs": { - "description": "Create a configuration that will apply only to a specific subgraph.", - "type": "object", - "additionalProperties": { - "description": "#/definitions/AuthConfig", - "$ref": "#/definitions/AuthConfig" - } - } - }, - "additionalProperties": false - }, - "Config5": { - "description": "Configuration for header propagation", - "type": "object", - "properties": { - "all": { - "description": "#/definitions/HeadersLocation", - "$ref": "#/definitions/HeadersLocation", - "nullable": true - }, - "subgraphs": { - "description": "Rules to specific subgraphs", - "type": "object", - "additionalProperties": { - "description": "#/definitions/HeadersLocation", - "$ref": "#/definitions/HeadersLocation" - } - } - }, - "additionalProperties": false - }, - "Config6": { - "description": "Configuration for exposing errors that originate from subgraphs", - "type": "object", - "properties": { - "all": { - "description": "Include errors from all subgraphs", - "default": false, - "type": "boolean" - }, - "subgraphs": { - "description": "Include errors from specific subgraphs", - "default": {}, - "type": "object", - "additionalProperties": { - "type": "boolean" - } - } - }, - "additionalProperties": false - }, - "Config7": { - "description": "Configuration for entity caching", - "type": "object", - "required": [ - "subgraph" - ], - "properties": { - "enabled": { - "description": "Enable or disable the entity caching feature", - "default": false, - "type": "boolean" - }, - "invalidation": { - "description": "#/definitions/InvalidationEndpointConfig", - "$ref": "#/definitions/InvalidationEndpointConfig", - "nullable": true - }, - "metrics": { - "description": "#/definitions/Metrics", - "$ref": "#/definitions/Metrics" - }, - "subgraph": { - "description": "#/definitions/SubgraphConfiguration_for_Subgraph", - "$ref": "#/definitions/SubgraphConfiguration_for_Subgraph" - } - }, - "additionalProperties": false - }, - "Config8": { - "description": "Configuration for the progressive override plugin", - "type": "object" - }, - "Config9": { - "type": "object", - "properties": { - "batch_processor": { - "description": "#/definitions/BatchProcessorConfig", - "$ref": "#/definitions/BatchProcessorConfig" - }, - "buffer_size": { - "description": "The buffer size for sending traces to Apollo. Increase this if you are experiencing lost traces.", - "default": 10000, - "type": "integer", - "format": "uint", - "minimum": 1.0 - }, - "client_name_header": { - "description": "The name of the header to extract from requests when populating 'client nane' for traces and metrics in Apollo Studio.", - "default": "apollographql-client-name", - "type": "string", - "nullable": true - }, - "client_version_header": { - "description": "The name of the header to extract from requests when populating 'client version' for traces and metrics in Apollo Studio.", - "default": "apollographql-client-version", - "type": "string", - "nullable": true - }, - "endpoint": { - "description": "The Apollo Studio endpoint for exporting traces and metrics.", - "default": "https://usage-reporting.api.apollographql.com/api/ingress/traces", - "type": "string" - }, - "errors": { - "description": "#/definitions/ErrorsConfiguration", - "$ref": "#/definitions/ErrorsConfiguration" - }, - "experimental_local_field_metrics": { - "description": "Enable field metrics that are generated without FTV1 to be sent to Apollo Studio.", - "default": false, - "type": "boolean" - }, - "experimental_otlp_endpoint": { - "description": "The Apollo Studio endpoint for exporting traces and metrics.", - "default": "https://usage-reporting.api.apollographql.com/", - "type": "string" - }, - "experimental_otlp_tracing_protocol": { - "description": "#/definitions/Protocol", - "$ref": "#/definitions/Protocol" - }, - "experimental_otlp_tracing_sampler": { - "description": "#/definitions/SamplerOption", - "$ref": "#/definitions/SamplerOption" - }, - "field_level_instrumentation_sampler": { - "description": "#/definitions/SamplerOption", - "$ref": "#/definitions/SamplerOption" - }, - "metrics_reference_mode": { - "description": "#/definitions/ApolloMetricsReferenceMode", - "$ref": "#/definitions/ApolloMetricsReferenceMode" - }, - "send_headers": { - "description": "#/definitions/ForwardHeaders", - "$ref": "#/definitions/ForwardHeaders" - }, - "send_variable_values": { - "description": "#/definitions/ForwardValues", - "$ref": "#/definitions/ForwardValues" - }, - "signature_normalization_algorithm": { - "description": "#/definitions/ApolloSignatureNormalizationAlgorithm", - "$ref": "#/definitions/ApolloSignatureNormalizationAlgorithm" - } - }, - "additionalProperties": false - }, - "ContextForward": { - "description": "Configuration to forward context values in metric attributes/labels", - "type": "object", - "required": [ - "named" - ], - "properties": { - "default": { - "description": "#/definitions/AttributeValue", - "$ref": "#/definitions/AttributeValue", - "nullable": true - }, - "named": { - "description": "The name of the value in the context", - "type": "string" - }, - "rename": { - "description": "The optional output name", - "type": "string", - "nullable": true - } - }, - "additionalProperties": false - }, - "Cors": { - "description": "Cross origin request configuration.", - "type": "object", - "properties": { - "allow_any_origin": { - "description": "Set to true to allow any origin.\n\nDefaults to false Having this set to true is the only way to allow Origin: null.", - "default": false, - "type": "boolean" - }, - "allow_credentials": { - "description": "Set to true to add the `Access-Control-Allow-Credentials` header.", - "default": false, - "type": "boolean" - }, - "allow_headers": { - "description": "The headers to allow.\n\nIf this value is not set, the router will mirror client's `Access-Control-Request-Headers`.\n\nNote that if you set headers here, you also want to have a look at your `CSRF` plugins configuration, and make sure you either: - accept `x-apollo-operation-name` AND / OR `apollo-require-preflight` - defined `csrf` required headers in your yml configuration, as shown in the `examples/cors-and-csrf/custom-headers.router.yaml` files.", - "default": [], - "type": "array", - "items": { - "type": "string" - } - }, - "expose_headers": { - "description": "Which response headers should be made available to scripts running in the browser, in response to a cross-origin request.", - "default": null, - "type": "array", - "items": { - "type": "string" - }, - "nullable": true - }, - "match_origins": { - "description": "`Regex`es you want to match the origins against to determine if they're allowed. Defaults to an empty list. Note that `origins` will be evaluated before `match_origins`", - "default": null, - "type": "array", - "items": { - "type": "string" - }, - "nullable": true - }, - "max_age": { - "description": "The `Access-Control-Max-Age` header value in time units", - "default": null, - "type": "string" - }, - "methods": { - "description": "Allowed request methods. Defaults to GET, POST, OPTIONS.", - "default": [ - "GET", - "POST", - "OPTIONS" - ], - "type": "array", - "items": { - "type": "string" - } - }, - "origins": { - "description": "The origin(s) to allow requests from. Defaults to `https://studio.apollographql.com/` for Apollo Studio.", - "default": [ - "https://studio.apollographql.com" - ], - "type": "array", - "items": { - "type": "string" - } - } - }, - "additionalProperties": false - }, - "CostValue": { - "oneOf": [ - { - "description": "The estimated cost of the operation using the currently configured cost model", - "type": "string", - "enum": [ - "estimated" - ] - }, - { - "description": "The actual cost of the operation using the currently configured cost model", - "type": "string", - "enum": [ - "actual" - ] - }, - { - "description": "The delta between the estimated and actual cost of the operation using the currently configured cost model", - "type": "string", - "enum": [ - "delta" - ] - }, - { - "description": "The result of the cost calculation. This is the error code returned by the cost calculation.", - "type": "string", - "enum": [ - "result" - ] - } - ] - }, - "DefaultAttributeRequirementLevel": { - "oneOf": [ - { - "description": "No default attributes set on spans, you have to set it one by one in the configuration to enable some attributes", - "type": "string", - "enum": [ - "none" - ] - }, - { - "description": "Attributes that are marked as required in otel semantic conventions and apollo documentation will be included (default)", - "type": "string", - "enum": [ - "required" - ] - }, - { - "description": "Attributes that are marked as required or recommended in otel semantic conventions and apollo documentation will be included", - "type": "string", - "enum": [ - "recommended" - ] - } - ] - }, - "DefaultChainConfig": { - "description": "Configuration of the DefaultChainProvider", - "type": "object", - "required": [ - "region", - "service_name" - ], - "properties": { - "assume_role": { - "description": "#/definitions/AssumeRoleProvider", - "$ref": "#/definitions/AssumeRoleProvider", - "nullable": true - }, - "profile_name": { - "description": "The profile name used by this provider", - "type": "string", - "nullable": true - }, - "region": { - "description": "The AWS region this chain applies to.", - "type": "string" - }, - "service_name": { - "description": "The service you're trying to access, eg: \"s3\", \"vpc-lattice-svcs\", etc.", - "type": "string" - } - }, - "additionalProperties": false - }, - "DefaultedStandardInstrument_for_ActiveRequestsAttributes": { - "anyOf": [ - { - "type": "null" - }, - { - "type": "boolean" - }, - { - "type": "object", - "required": [ - "attributes" - ], - "properties": { - "attributes": { - "description": "#/definitions/ActiveRequestsAttributes", - "$ref": "#/definitions/ActiveRequestsAttributes" - } - }, - "additionalProperties": false - } - ] - }, - "DefaultedStandardInstrument_for_extendable_attribute_apollo_router::plugins::telemetry::config_new::attributes::RouterAttributes_apollo_router::plugins::telemetry::config_new::selectors::RouterSelector": { - "anyOf": [ - { - "type": "null" - }, - { - "type": "boolean" - }, - { - "type": "object", - "required": [ - "attributes" - ], - "properties": { - "attributes": { - "description": "#/definitions/extendable_attribute_apollo_router::plugins::telemetry::config_new::attributes::RouterAttributes_apollo_router::plugins::telemetry::config_new::selectors::RouterSelector", - "$ref": "#/definitions/extendable_attribute_apollo_router::plugins::telemetry::config_new::attributes::RouterAttributes_apollo_router::plugins::telemetry::config_new::selectors::RouterSelector" - } - }, - "additionalProperties": false - } - ] - }, - "DefaultedStandardInstrument_for_extendable_attribute_apollo_router::plugins::telemetry::config_new::attributes::SubgraphAttributes_apollo_router::plugins::telemetry::config_new::selectors::SubgraphSelector": { - "anyOf": [ - { - "type": "null" - }, - { - "type": "boolean" - }, - { - "type": "object", - "required": [ - "attributes" - ], - "properties": { - "attributes": { - "description": "#/definitions/extendable_attribute_apollo_router::plugins::telemetry::config_new::attributes::SubgraphAttributes_apollo_router::plugins::telemetry::config_new::selectors::SubgraphSelector", - "$ref": "#/definitions/extendable_attribute_apollo_router::plugins::telemetry::config_new::attributes::SubgraphAttributes_apollo_router::plugins::telemetry::config_new::selectors::SubgraphSelector" - } - }, - "additionalProperties": false - } - ] - }, - "DefaultedStandardInstrument_for_extendable_attribute_apollo_router::plugins::telemetry::config_new::attributes::SupergraphAttributes_apollo_router::plugins::telemetry::config_new::selectors::SupergraphSelector": { - "anyOf": [ - { - "type": "null" - }, - { - "type": "boolean" - }, - { - "type": "object", - "required": [ - "attributes" - ], - "properties": { - "attributes": { - "description": "#/definitions/extendable_attribute_apollo_router::plugins::telemetry::config_new::attributes::SupergraphAttributes_apollo_router::plugins::telemetry::config_new::selectors::SupergraphSelector", - "$ref": "#/definitions/extendable_attribute_apollo_router::plugins::telemetry::config_new::attributes::SupergraphAttributes_apollo_router::plugins::telemetry::config_new::selectors::SupergraphSelector" - } - }, - "additionalProperties": false - } - ] - }, - "DefaultedStandardInstrument_for_extendable_attribute_apollo_router::plugins::telemetry::config_new::cache::attributes::CacheAttributes_apollo_router::plugins::telemetry::config_new::selectors::SubgraphSelector": { - "anyOf": [ - { - "type": "null" - }, - { - "type": "boolean" - }, - { - "type": "object", - "required": [ - "attributes" - ], - "properties": { - "attributes": { - "description": "#/definitions/extendable_attribute_apollo_router::plugins::telemetry::config_new::cache::attributes::CacheAttributes_apollo_router::plugins::telemetry::config_new::selectors::SubgraphSelector", - "$ref": "#/definitions/extendable_attribute_apollo_router::plugins::telemetry::config_new::cache::attributes::CacheAttributes_apollo_router::plugins::telemetry::config_new::selectors::SubgraphSelector" - } - }, - "additionalProperties": false - } - ] - }, - "DefaultedStandardInstrument_for_extendable_attribute_apollo_router::plugins::telemetry::config_new::graphql::attributes::GraphQLAttributes_apollo_router::plugins::telemetry::config_new::graphql::selectors::GraphQLSelector": { - "anyOf": [ - { - "type": "null" - }, - { - "type": "boolean" - }, - { - "type": "object", - "required": [ - "attributes" - ], - "properties": { - "attributes": { - "description": "#/definitions/extendable_attribute_apollo_router::plugins::telemetry::config_new::graphql::attributes::GraphQLAttributes_apollo_router::plugins::telemetry::config_new::graphql::selectors::GraphQLSelector", - "$ref": "#/definitions/extendable_attribute_apollo_router::plugins::telemetry::config_new::graphql::attributes::GraphQLAttributes_apollo_router::plugins::telemetry::config_new::graphql::selectors::GraphQLSelector" - } - }, - "additionalProperties": false - } - ] - }, - "DemandControlConfig": { - "description": "Demand control configuration", - "type": "object", - "required": [ - "enabled", - "mode", - "strategy" - ], - "properties": { - "enabled": { - "description": "Enable demand control", - "type": "boolean" - }, - "mode": { - "description": "#/definitions/Mode", - "$ref": "#/definitions/Mode" - }, - "strategy": { - "description": "#/definitions/StrategyConfig", - "$ref": "#/definitions/StrategyConfig" - } - }, - "additionalProperties": false - }, - "Directives": { - "type": "object", - "properties": { - "dry_run": { - "description": "generates the authorization error messages without modying the query", - "default": false, - "type": "boolean" - }, - "enabled": { - "description": "enables the `@authenticated` and `@requiresScopes` directives", - "default": true, - "type": "boolean" - }, - "errors": { - "description": "#/definitions/ErrorConfig", - "$ref": "#/definitions/ErrorConfig" - }, - "reject_unauthorized": { - "description": "refuse a query entirely if any part would be filtered", - "default": false, - "type": "boolean" - } - } - }, - "Disabled": { - "type": "string", - "enum": [ - "disabled" - ] - }, - "DisplayTraceIdFormat": { - "anyOf": [ - { - "description": "#/definitions/TraceIdFormat", - "$ref": "#/definitions/TraceIdFormat" - }, - { - "type": "boolean" - } - ] - }, - "Enabled": { - "type": "string", - "enum": [ - "enabled" - ] - }, - "EntityType": { - "anyOf": [ - { - "description": "#/definitions/All", - "$ref": "#/definitions/All" - }, - { - "type": "string" - } - ] - }, - "ErrorConfig": { - "type": "object", - "properties": { - "log": { - "description": "log authorization errors", - "default": true, - "type": "boolean" - }, - "response": { - "description": "#/definitions/ErrorLocation", - "$ref": "#/definitions/ErrorLocation" - } - } - }, - "ErrorConfiguration": { - "type": "object", - "properties": { - "redact": { - "description": "Redact subgraph errors to Apollo Studio", - "default": true, - "type": "boolean" - }, - "send": { - "description": "Send subgraph errors to Apollo Studio", - "default": true, - "type": "boolean" - } - }, - "additionalProperties": false - }, - "ErrorLocation": { - "oneOf": [ - { - "description": "store authorization errors in the response errors", - "type": "string", - "enum": [ - "errors" - ] - }, - { - "description": "store authorization errors in the response extensions", - "type": "string", - "enum": [ - "extensions" - ] - }, - { - "description": "do not add the authorization errors to the GraphQL response", - "type": "string", - "enum": [ - "disabled" - ] - } - ] - }, - "ErrorRepr": { - "oneOf": [ - { - "description": "The error reason", - "type": "string", - "enum": [ - "reason" - ] - } - ] - }, - "ErrorsConfiguration": { - "type": "object", - "properties": { - "subgraph": { - "description": "#/definitions/SubgraphErrorConfig", - "$ref": "#/definitions/SubgraphErrorConfig" - } - }, - "additionalProperties": false - }, - "ErrorsForward": { - "type": "object", - "properties": { - "extensions": { - "description": "Forward extensions values as custom attributes/labels in metrics", - "type": "array", - "items": { - "description": "#/definitions/BodyForward", - "$ref": "#/definitions/BodyForward" - } - }, - "include_messages": { - "description": "Will include the error message in a \"message\" attribute", - "default": null, - "type": "boolean", - "nullable": true - } - }, - "additionalProperties": false - }, - "EventLevel": { - "type": "string", - "enum": [ - "info", - "warn", - "error", - "off" - ] - }, - "EventOn": { - "description": "When to trigger the event.", - "oneOf": [ - { - "description": "Log the event on request", - "type": "string", - "enum": [ - "request" - ] - }, - { - "description": "Log the event on response", - "type": "string", - "enum": [ - "response" - ] - }, - { - "description": "Log the event on every chunks in the response", - "type": "string", - "enum": [ - "event_response" - ] - }, - { - "description": "Log the event on error", - "type": "string", - "enum": [ - "error" - ] - } - ] - }, - "Event_for_RouterAttributes_and_RouterSelector": { - "description": "An event that can be logged as part of a trace. The event has an implicit `type` attribute that matches the name of the event in the yaml and a message that can be used to provide additional information.", - "type": "object", - "required": [ - "level", - "message", - "on" - ], - "properties": { - "attributes": { - "description": "#/definitions/extendable_attribute_apollo_router::plugins::telemetry::config_new::attributes::RouterAttributes_apollo_router::plugins::telemetry::config_new::selectors::RouterSelector", - "$ref": "#/definitions/extendable_attribute_apollo_router::plugins::telemetry::config_new::attributes::RouterAttributes_apollo_router::plugins::telemetry::config_new::selectors::RouterSelector" - }, - "condition": { - "description": "#/definitions/Condition_for_RouterSelector", - "$ref": "#/definitions/Condition_for_RouterSelector" - }, - "level": { - "description": "#/definitions/EventLevel", - "$ref": "#/definitions/EventLevel" - }, - "message": { - "description": "The event message.", - "type": "string" - }, - "on": { - "description": "#/definitions/EventOn", - "$ref": "#/definitions/EventOn" - } - } - }, - "Event_for_SubgraphAttributes_and_SubgraphSelector": { - "description": "An event that can be logged as part of a trace. The event has an implicit `type` attribute that matches the name of the event in the yaml and a message that can be used to provide additional information.", - "type": "object", - "required": [ - "level", - "message", - "on" - ], - "properties": { - "attributes": { - "description": "#/definitions/extendable_attribute_apollo_router::plugins::telemetry::config_new::attributes::SubgraphAttributes_apollo_router::plugins::telemetry::config_new::selectors::SubgraphSelector", - "$ref": "#/definitions/extendable_attribute_apollo_router::plugins::telemetry::config_new::attributes::SubgraphAttributes_apollo_router::plugins::telemetry::config_new::selectors::SubgraphSelector" - }, - "condition": { - "description": "#/definitions/Condition_for_SubgraphSelector", - "$ref": "#/definitions/Condition_for_SubgraphSelector" - }, - "level": { - "description": "#/definitions/EventLevel", - "$ref": "#/definitions/EventLevel" - }, - "message": { - "description": "The event message.", - "type": "string" - }, - "on": { - "description": "#/definitions/EventOn", - "$ref": "#/definitions/EventOn" - } - } - }, - "Event_for_SupergraphAttributes_and_SupergraphSelector": { - "description": "An event that can be logged as part of a trace. The event has an implicit `type` attribute that matches the name of the event in the yaml and a message that can be used to provide additional information.", - "type": "object", - "required": [ - "level", - "message", - "on" - ], - "properties": { - "attributes": { - "description": "#/definitions/extendable_attribute_apollo_router::plugins::telemetry::config_new::attributes::SupergraphAttributes_apollo_router::plugins::telemetry::config_new::selectors::SupergraphSelector", - "$ref": "#/definitions/extendable_attribute_apollo_router::plugins::telemetry::config_new::attributes::SupergraphAttributes_apollo_router::plugins::telemetry::config_new::selectors::SupergraphSelector" - }, - "condition": { - "description": "#/definitions/Condition_for_SupergraphSelector", - "$ref": "#/definitions/Condition_for_SupergraphSelector" - }, - "level": { - "description": "#/definitions/EventLevel", - "$ref": "#/definitions/EventLevel" - }, - "message": { - "description": "The event message.", - "type": "string" - }, - "on": { - "description": "#/definitions/EventOn", - "$ref": "#/definitions/EventOn" - } - } - }, - "Event_for_SupergraphSelector": { - "oneOf": [ - { - "description": "For every supergraph response payload (including subscription events and defer events)", - "type": "string", - "enum": [ - "event_duration" - ] - }, - { - "description": "For every supergraph response payload (including subscription events and defer events)", - "type": "string", - "enum": [ - "event_unit" - ] - }, - { - "description": "For every supergraph response payload (including subscription events and defer events)", - "type": "object", - "required": [ - "event_custom" - ], - "properties": { - "event_custom": { - "description": "#/definitions/SupergraphSelector", - "$ref": "#/definitions/SupergraphSelector" - } - }, - "additionalProperties": false - } - ] - }, - "Events": { - "description": "Events are", - "type": "object", - "properties": { - "router": { - "description": "#/definitions/extendable_attribute_apollo_router::plugins::telemetry::config_new::events::RouterEventsConfig_apollo_router::plugins::telemetry::config_new::events::Event", - "$ref": "#/definitions/extendable_attribute_apollo_router::plugins::telemetry::config_new::events::RouterEventsConfig_apollo_router::plugins::telemetry::config_new::events::Event" - }, - "subgraph": { - "description": "#/definitions/extendable_attribute_apollo_router::plugins::telemetry::config_new::events::SubgraphEventsConfig_apollo_router::plugins::telemetry::config_new::events::Event", - "$ref": "#/definitions/extendable_attribute_apollo_router::plugins::telemetry::config_new::events::SubgraphEventsConfig_apollo_router::plugins::telemetry::config_new::events::Event" - }, - "supergraph": { - "description": "#/definitions/extendable_attribute_apollo_router::plugins::telemetry::config_new::events::SupergraphEventsConfig_apollo_router::plugins::telemetry::config_new::events::Event", - "$ref": "#/definitions/extendable_attribute_apollo_router::plugins::telemetry::config_new::events::SupergraphEventsConfig_apollo_router::plugins::telemetry::config_new::events::Event" - } - }, - "additionalProperties": false - }, - "ExecutionRequestConf": { - "description": "What information is passed to a router request/response stage", - "type": "object", - "properties": { - "body": { - "description": "Send the body", - "default": false, - "type": "boolean" - }, - "context": { - "description": "Send the context", - "default": false, - "type": "boolean" - }, - "headers": { - "description": "Send the headers", - "default": false, - "type": "boolean" - }, - "method": { - "description": "Send the method", - "default": false, - "type": "boolean" - }, - "query_plan": { - "description": "Send the query plan", - "default": false, - "type": "boolean" - }, - "sdl": { - "description": "Send the SDL", - "default": false, - "type": "boolean" - } - }, - "additionalProperties": false - }, - "ExecutionResponseConf": { - "description": "What information is passed to a router request/response stage", - "type": "object", - "properties": { - "body": { - "description": "Send the body", - "default": false, - "type": "boolean" - }, - "context": { - "description": "Send the context", - "default": false, - "type": "boolean" - }, - "headers": { - "description": "Send the headers", - "default": false, - "type": "boolean" - }, - "sdl": { - "description": "Send the SDL", - "default": false, - "type": "boolean" - }, - "status_code": { - "description": "Send the HTTP status", - "default": false, - "type": "boolean" - } - }, - "additionalProperties": false - }, - "ExecutionStage": { - "type": "object", - "properties": { - "request": { - "description": "#/definitions/ExecutionRequestConf", - "$ref": "#/definitions/ExecutionRequestConf" - }, - "response": { - "description": "#/definitions/ExecutionResponseConf", - "$ref": "#/definitions/ExecutionResponseConf" - } - } - }, - "Exporters": { - "description": "Exporter configuration", - "type": "object", - "properties": { - "logging": { - "description": "#/definitions/Logging", - "$ref": "#/definitions/Logging" - }, - "metrics": { - "description": "#/definitions/Metrics2", - "$ref": "#/definitions/Metrics2" - }, - "tracing": { - "description": "#/definitions/Tracing", - "$ref": "#/definitions/Tracing" - } - }, - "additionalProperties": false - }, - "ExposeQueryPlanConfig": { - "description": "Expose query plan", - "type": "boolean" - }, - "ExposeTraceId": { - "type": "object", - "properties": { - "enabled": { - "description": "Expose the trace_id in response headers", - "default": false, - "type": "boolean" - }, - "format": { - "description": "#/definitions/TraceIdFormat", - "$ref": "#/definitions/TraceIdFormat" - }, - "header_name": { - "description": "Choose the header name to expose trace_id (default: apollo-trace-id)", - "type": "string", - "nullable": true - } - }, - "additionalProperties": false - }, - "FieldName": { - "oneOf": [ - { - "description": "The GraphQL field name", - "type": "string", - "enum": [ - "string" - ] - } - ] - }, - "FieldType": { - "oneOf": [ - { - "description": "The GraphQL field name", - "type": "string", - "enum": [ - "name" - ] - }, - { - "description": "The GraphQL field type - `bool` - `number` - `scalar` - `object` - `list`", - "type": "string", - "enum": [ - "type" - ] - } - ] - }, - "FileUploadProtocols": { - "description": "Configuration for the various protocols supported by the file upload plugin", - "type": "object", - "required": [ - "multipart" - ], - "properties": { - "multipart": { - "description": "#/definitions/MultipartRequest", - "$ref": "#/definitions/MultipartRequest" - } - }, - "additionalProperties": false - }, - "FileUploadsConfig": { - "description": "Configuration for File Uploads plugin", - "type": "object", - "required": [ - "enabled", - "protocols" - ], - "properties": { - "enabled": { - "description": "Whether the file upload plugin should be enabled (default: false)", - "type": "boolean" - }, - "protocols": { - "description": "#/definitions/FileUploadProtocols", - "$ref": "#/definitions/FileUploadProtocols" - } - }, - "additionalProperties": false - }, - "ForbidMutationsConfig": { - "description": "Forbid mutations configuration", - "type": "boolean" - }, - "Forward": { - "description": "Configuration to forward from headers/body", - "type": "object", - "properties": { - "body": { - "description": "Forward body values as custom attributes/labels in metrics", - "type": "array", - "items": { - "description": "#/definitions/BodyForward", - "$ref": "#/definitions/BodyForward" - } - }, - "header": { - "description": "Forward header values as custom attributes/labels in metrics", - "type": "array", - "items": { - "description": "#/definitions/HeaderForward", - "$ref": "#/definitions/HeaderForward" - } - } - }, - "additionalProperties": false - }, - "ForwardHeaders": { - "description": "Forward headers", - "oneOf": [ - { - "description": "Don't send any headers", - "type": "string", - "enum": [ - "none" - ] - }, - { - "description": "Send all headers", - "type": "string", - "enum": [ - "all" - ] - }, - { - "description": "Send only the headers specified", - "type": "object", - "required": [ - "only" - ], - "properties": { - "only": { - "description": "Send only the headers specified", - "type": "array", - "items": { - "type": "string" - } - } - }, - "additionalProperties": false - }, - { - "description": "Send all headers except those specified", - "type": "object", - "required": [ - "except" - ], - "properties": { - "except": { - "description": "Send all headers except those specified", - "type": "array", - "items": { - "type": "string" - } - } - }, - "additionalProperties": false - } - ] - }, - "ForwardValues": { - "description": "Forward GraphQL variables", - "oneOf": [ - { - "description": "Dont send any variables", - "type": "string", - "enum": [ - "none" - ] - }, - { - "description": "Send all variables", - "type": "string", - "enum": [ - "all" - ] - }, - { - "description": "Send only the variables specified", - "type": "object", - "required": [ - "only" - ], - "properties": { - "only": { - "description": "Send only the variables specified", - "type": "array", - "items": { - "type": "string" - } - } - }, - "additionalProperties": false - }, - { - "description": "Send all variables except those specified", - "type": "object", - "required": [ - "except" - ], - "properties": { - "except": { - "description": "Send all variables except those specified", - "type": "array", - "items": { - "type": "string" - } - } - }, - "additionalProperties": false - } - ] - }, - "GraphQLAttributes": { - "type": "object", - "properties": { - "graphql.field.name": { - "description": "The GraphQL field name", - "default": null, - "type": "boolean", - "nullable": true - }, - "graphql.field.type": { - "description": "The GraphQL field type", - "default": null, - "type": "boolean", - "nullable": true - }, - "graphql.list.length": { - "description": "If the field is a list, the length of the list", - "default": null, - "type": "boolean", - "nullable": true - }, - "graphql.operation.name": { - "description": "The GraphQL operation name", - "default": null, - "type": "boolean", - "nullable": true - }, - "graphql.type.name": { - "description": "The GraphQL type name", - "default": null, - "type": "boolean", - "nullable": true - } - }, - "additionalProperties": false - }, - "GraphQLInstrumentsConfig": { - "type": "object", - "properties": { - "field.execution": { - "description": "#/definitions/DefaultedStandardInstrument_for_extendable_attribute_apollo_router::plugins::telemetry::config_new::graphql::attributes::GraphQLAttributes_apollo_router::plugins::telemetry::config_new::graphql::selectors::GraphQLSelector", - "$ref": "#/definitions/DefaultedStandardInstrument_for_extendable_attribute_apollo_router::plugins::telemetry::config_new::graphql::attributes::GraphQLAttributes_apollo_router::plugins::telemetry::config_new::graphql::selectors::GraphQLSelector" - }, - "list.length": { - "description": "#/definitions/DefaultedStandardInstrument_for_extendable_attribute_apollo_router::plugins::telemetry::config_new::graphql::attributes::GraphQLAttributes_apollo_router::plugins::telemetry::config_new::graphql::selectors::GraphQLSelector", - "$ref": "#/definitions/DefaultedStandardInstrument_for_extendable_attribute_apollo_router::plugins::telemetry::config_new::graphql::attributes::GraphQLAttributes_apollo_router::plugins::telemetry::config_new::graphql::selectors::GraphQLSelector" - } - }, - "additionalProperties": false - }, - "GraphQLSelector": { - "anyOf": [ - { - "description": "If the field is a list, the length of the list", - "type": "object", - "required": [ - "list_length" - ], - "properties": { - "list_length": { - "description": "#/definitions/ListLength", - "$ref": "#/definitions/ListLength" - } - }, - "additionalProperties": false - }, - { - "description": "The GraphQL field name", - "type": "object", - "required": [ - "field_name" - ], - "properties": { - "field_name": { - "description": "#/definitions/FieldName", - "$ref": "#/definitions/FieldName" - } - }, - "additionalProperties": false - }, - { - "description": "The GraphQL field type", - "type": "object", - "required": [ - "field_type" - ], - "properties": { - "field_type": { - "description": "#/definitions/FieldType", - "$ref": "#/definitions/FieldType" - } - }, - "additionalProperties": false - }, - { - "description": "The GraphQL type name", - "type": "object", - "required": [ - "type_name" - ], - "properties": { - "type_name": { - "description": "#/definitions/TypeName", - "$ref": "#/definitions/TypeName" - } - }, - "additionalProperties": false - }, - { - "type": "object", - "required": [ - "operation_name" - ], - "properties": { - "default": { - "description": "Optional default value.", - "type": "string", - "nullable": true - }, - "operation_name": { - "description": "#/definitions/OperationName", - "$ref": "#/definitions/OperationName" - } - }, - "additionalProperties": false - }, - { - "type": "object", - "required": [ - "static" - ], - "properties": { - "static": { - "description": "#/definitions/AttributeValue", - "$ref": "#/definitions/AttributeValue" - } - }, - "additionalProperties": false - } - ] - }, - "GraphQLValue": { - "anyOf": [ - { - "description": "#/definitions/StandardUnit", - "$ref": "#/definitions/StandardUnit" - }, - { - "description": "#/definitions/GraphQLSelector", - "$ref": "#/definitions/GraphQLSelector" - } - ] - }, - "GrpcExporter": { - "type": "object", - "properties": { - "ca": { - "description": "The optional certificate authority (CA) certificate to be used in TLS configuration.", - "default": null, - "type": "string", - "nullable": true - }, - "cert": { - "description": "The optional cert for tls config", - "default": null, - "type": "string", - "nullable": true - }, - "domain_name": { - "description": "The optional domain name for tls config. Note that domain name is will be defaulted to match the endpoint is not explicitly set.", - "default": null, - "type": "string", - "nullable": true - }, - "key": { - "description": "The optional private key file for TLS configuration.", - "default": null, - "type": "string", - "nullable": true - }, - "metadata": { - "description": "gRPC metadata", - "default": {}, - "type": "object", - "additionalProperties": true - } - }, - "additionalProperties": false - }, - "Header": { - "description": "Insert a header", - "type": "object", - "required": [ - "name", - "value" - ], - "properties": { - "name": { - "description": "The name of the header", - "type": "string" - }, - "value": { - "description": "The value for the header", - "type": "string" - } - }, - "additionalProperties": false - }, - "HeaderForward": { - "description": "Configuration to forward header values in metric labels", - "anyOf": [ - { - "description": "Match via header name", - "type": "object", - "required": [ - "named" - ], - "properties": { - "default": { - "description": "#/definitions/AttributeValue", - "$ref": "#/definitions/AttributeValue", - "nullable": true - }, - "named": { - "description": "The name of the header", - "type": "string" - }, - "rename": { - "description": "The optional output name", - "type": "string", - "nullable": true - } - }, - "additionalProperties": false - }, - { - "description": "Match via rgex", - "type": "object", - "required": [ - "matching" - ], - "properties": { - "matching": { - "description": "Using a regex on the header name", - "type": "string" - } - }, - "additionalProperties": false - } - ] - }, - "HeaderLoggingCondition": { - "anyOf": [ - { - "description": "Match header value given a regex to display logs", - "type": "object", - "required": [ - "match", - "name" - ], - "properties": { - "body": { - "description": "Display request/response body (default: false)", - "default": false, - "type": "boolean" - }, - "headers": { - "description": "Display request/response headers (default: false)", - "default": false, - "type": "boolean" - }, - "match": { - "description": "Regex to match the header value", - "type": "string" - }, - "name": { - "description": "Header name", - "type": "string" - } - }, - "additionalProperties": false - }, - { - "description": "Match header value given a value to display logs", - "type": "object", - "required": [ - "name", - "value" - ], - "properties": { - "body": { - "description": "Display request/response body (default: false)", - "default": false, - "type": "boolean" - }, - "headers": { - "description": "Display request/response headers (default: false)", - "default": false, - "type": "boolean" - }, - "name": { - "description": "Header name", - "type": "string" - }, - "value": { - "description": "Header value", - "type": "string" - } - }, - "additionalProperties": false - } - ] - }, - "HeadersLocation": { - "type": "object", - "required": [ - "request" - ], - "properties": { - "request": { - "description": "Propagate/Insert/Remove headers from request", - "type": "array", - "items": { - "description": "#/definitions/Operation", - "$ref": "#/definitions/Operation" - } - } - }, - "additionalProperties": false - }, - "HealthCheck": { - "description": "Configuration options pertaining to the http server component.", - "type": "object", - "properties": { - "enabled": { - "description": "Set to false to disable the health check", - "default": true, - "type": "boolean" - }, - "listen": { - "description": "#/definitions/ListenAddr", - "$ref": "#/definitions/ListenAddr" - }, - "path": { - "description": "Optionally set a custom healthcheck path Defaults to /health", - "default": "/health", - "type": "string" - } - }, - "additionalProperties": false - }, - "HeartbeatInterval": { - "anyOf": [ - { - "description": "#/definitions/Disabled", - "$ref": "#/definitions/Disabled" - }, - { - "description": "#/definitions/Enabled", - "$ref": "#/definitions/Enabled" - }, - { - "description": "enable with custom interval, e.g. '100ms', '10s' or '1m'", - "type": "string" - } - ] - }, - "Homepage": { - "description": "Configuration options pertaining to the home page.", - "type": "object", - "properties": { - "enabled": { - "description": "Set to false to disable the homepage", - "default": true, - "type": "boolean" - }, - "graph_ref": { - "description": "Graph reference This will allow you to redirect from the Apollo Router landing page back to Apollo Studio Explorer", - "default": null, - "type": "string", - "nullable": true - } - }, - "additionalProperties": false - }, - "Http2Config": { - "oneOf": [ - { - "description": "Enable HTTP2 for subgraphs", - "type": "string", - "enum": [ - "enable" - ] - }, - { - "description": "Disable HTTP2 for subgraphs", - "type": "string", - "enum": [ - "disable" - ] - }, - { - "description": "Only HTTP2 is active", - "type": "string", - "enum": [ - "http2only" - ] - } - ] - }, - "HttpExporter": { - "type": "object", - "properties": { - "headers": { - "description": "Headers to send on report requests", - "default": {}, - "type": "object", - "additionalProperties": { - "type": "string" - } - } - }, - "additionalProperties": false - }, - "InMemoryCache": { - "description": "In memory cache configuration", - "type": "object", - "required": [ - "limit" - ], - "properties": { - "limit": { - "description": "Number of entries in the Least Recently Used cache", - "type": "integer", - "format": "uint", - "minimum": 1.0 - } - }, - "additionalProperties": false - }, - "Insert": { - "description": "Insert header", - "anyOf": [ - { - "description": "#/definitions/InsertStatic", - "$ref": "#/definitions/InsertStatic" - }, - { - "description": "#/definitions/InsertFromContext", - "$ref": "#/definitions/InsertFromContext" - }, - { - "description": "#/definitions/InsertFromBody", - "$ref": "#/definitions/InsertFromBody" - } - ] - }, - "Insert2": { - "description": "Configuration to insert custom attributes/labels in metrics", - "type": "object", - "required": [ - "name", - "value" - ], - "properties": { - "name": { - "description": "The name of the attribute to insert", - "type": "string" - }, - "value": { - "description": "#/definitions/AttributeValue", - "$ref": "#/definitions/AttributeValue" - } - }, - "additionalProperties": false - }, - "InsertFromBody": { - "description": "Insert header with a value coming from body", - "type": "object", - "required": [ - "name", - "path" - ], - "properties": { - "default": { - "description": "The default if the path in the body did not resolve to an element", - "type": "string", - "nullable": true - }, - "name": { - "description": "The target header name", - "type": "string" - }, - "path": { - "description": "The path in the request body", - "type": "string" - } - }, - "additionalProperties": false - }, - "InsertFromContext": { - "description": "Insert header with a value coming from context key", - "type": "object", - "required": [ - "from_context", - "name" - ], - "properties": { - "from_context": { - "description": "Specify context key to fetch value", - "type": "string" - }, - "name": { - "description": "Specify header name", - "type": "string" - } - }, - "additionalProperties": false - }, - "InsertStatic": { - "description": "Insert static header", - "type": "object", - "required": [ - "name", - "value" - ], - "properties": { - "name": { - "description": "The name of the header", - "type": "string" - }, - "value": { - "description": "The value for the header", - "type": "string" - } - }, - "additionalProperties": false - }, - "InstrumentType": { - "oneOf": [ - { - "description": "A monotonic counter https://opentelemetry.io/docs/specs/otel/metrics/data-model/#sums", - "type": "string", - "enum": [ - "counter" - ] - }, - { - "description": "A histogram https://opentelemetry.io/docs/specs/otel/metrics/data-model/#histogram", - "type": "string", - "enum": [ - "histogram" - ] - } - ] - }, - "Instrument_for_CacheAttributes_and_SubgraphSelector_and_SubgraphValue": { - "type": "object", - "required": [ - "description", - "type", - "unit", - "value" - ], - "properties": { - "attributes": { - "description": "#/definitions/extendable_attribute_apollo_router::plugins::telemetry::config_new::cache::attributes::CacheAttributes_apollo_router::plugins::telemetry::config_new::selectors::SubgraphSelector", - "$ref": "#/definitions/extendable_attribute_apollo_router::plugins::telemetry::config_new::cache::attributes::CacheAttributes_apollo_router::plugins::telemetry::config_new::selectors::SubgraphSelector" - }, - "condition": { - "description": "#/definitions/Condition_for_SubgraphSelector", - "$ref": "#/definitions/Condition_for_SubgraphSelector" - }, - "description": { - "description": "The description of the instrument.", - "type": "string" - }, - "type": { - "description": "#/definitions/InstrumentType", - "$ref": "#/definitions/InstrumentType" - }, - "unit": { - "description": "The units of the instrument, e.g. \"ms\", \"bytes\", \"requests\".", - "type": "string" - }, - "value": { - "description": "#/definitions/SubgraphValue", - "$ref": "#/definitions/SubgraphValue" - } - }, - "additionalProperties": false - }, - "Instrument_for_GraphQLAttributes_and_GraphQLSelector_and_GraphQLValue": { - "type": "object", - "required": [ - "description", - "type", - "unit", - "value" - ], - "properties": { - "attributes": { - "description": "#/definitions/extendable_attribute_apollo_router::plugins::telemetry::config_new::graphql::attributes::GraphQLAttributes_apollo_router::plugins::telemetry::config_new::graphql::selectors::GraphQLSelector", - "$ref": "#/definitions/extendable_attribute_apollo_router::plugins::telemetry::config_new::graphql::attributes::GraphQLAttributes_apollo_router::plugins::telemetry::config_new::graphql::selectors::GraphQLSelector" - }, - "condition": { - "description": "#/definitions/Condition_for_GraphQLSelector", - "$ref": "#/definitions/Condition_for_GraphQLSelector" - }, - "description": { - "description": "The description of the instrument.", - "type": "string" - }, - "type": { - "description": "#/definitions/InstrumentType", - "$ref": "#/definitions/InstrumentType" - }, - "unit": { - "description": "The units of the instrument, e.g. \"ms\", \"bytes\", \"requests\".", - "type": "string" - }, - "value": { - "description": "#/definitions/GraphQLValue", - "$ref": "#/definitions/GraphQLValue" - } - }, - "additionalProperties": false - }, - "Instrument_for_RouterAttributes_and_RouterSelector_and_RouterValue": { - "type": "object", - "required": [ - "description", - "type", - "unit", - "value" - ], - "properties": { - "attributes": { - "description": "#/definitions/extendable_attribute_apollo_router::plugins::telemetry::config_new::attributes::RouterAttributes_apollo_router::plugins::telemetry::config_new::selectors::RouterSelector", - "$ref": "#/definitions/extendable_attribute_apollo_router::plugins::telemetry::config_new::attributes::RouterAttributes_apollo_router::plugins::telemetry::config_new::selectors::RouterSelector" - }, - "condition": { - "description": "#/definitions/Condition_for_RouterSelector", - "$ref": "#/definitions/Condition_for_RouterSelector" - }, - "description": { - "description": "The description of the instrument.", - "type": "string" - }, - "type": { - "description": "#/definitions/InstrumentType", - "$ref": "#/definitions/InstrumentType" - }, - "unit": { - "description": "The units of the instrument, e.g. \"ms\", \"bytes\", \"requests\".", - "type": "string" - }, - "value": { - "description": "#/definitions/RouterValue", - "$ref": "#/definitions/RouterValue" - } - }, - "additionalProperties": false - }, - "Instrument_for_SubgraphAttributes_and_SubgraphSelector_and_SubgraphValue": { - "type": "object", - "required": [ - "description", - "type", - "unit", - "value" - ], - "properties": { - "attributes": { - "description": "#/definitions/extendable_attribute_apollo_router::plugins::telemetry::config_new::attributes::SubgraphAttributes_apollo_router::plugins::telemetry::config_new::selectors::SubgraphSelector", - "$ref": "#/definitions/extendable_attribute_apollo_router::plugins::telemetry::config_new::attributes::SubgraphAttributes_apollo_router::plugins::telemetry::config_new::selectors::SubgraphSelector" - }, - "condition": { - "description": "#/definitions/Condition_for_SubgraphSelector", - "$ref": "#/definitions/Condition_for_SubgraphSelector" - }, - "description": { - "description": "The description of the instrument.", - "type": "string" - }, - "type": { - "description": "#/definitions/InstrumentType", - "$ref": "#/definitions/InstrumentType" - }, - "unit": { - "description": "The units of the instrument, e.g. \"ms\", \"bytes\", \"requests\".", - "type": "string" - }, - "value": { - "description": "#/definitions/SubgraphValue", - "$ref": "#/definitions/SubgraphValue" - } - }, - "additionalProperties": false - }, - "Instrument_for_SupergraphAttributes_and_SupergraphSelector_and_SupergraphValue": { - "type": "object", - "required": [ - "description", - "type", - "unit", - "value" - ], - "properties": { - "attributes": { - "description": "#/definitions/extendable_attribute_apollo_router::plugins::telemetry::config_new::attributes::SupergraphAttributes_apollo_router::plugins::telemetry::config_new::selectors::SupergraphSelector", - "$ref": "#/definitions/extendable_attribute_apollo_router::plugins::telemetry::config_new::attributes::SupergraphAttributes_apollo_router::plugins::telemetry::config_new::selectors::SupergraphSelector" - }, - "condition": { - "description": "#/definitions/Condition_for_SupergraphSelector", - "$ref": "#/definitions/Condition_for_SupergraphSelector" - }, - "description": { - "description": "The description of the instrument.", - "type": "string" - }, - "type": { - "description": "#/definitions/InstrumentType", - "$ref": "#/definitions/InstrumentType" - }, - "unit": { - "description": "The units of the instrument, e.g. \"ms\", \"bytes\", \"requests\".", - "type": "string" - }, - "value": { - "description": "#/definitions/SupergraphValue", - "$ref": "#/definitions/SupergraphValue" - } - }, - "additionalProperties": false - }, - "Instrumentation": { - "description": "Instrumentation configuration", - "type": "object", - "properties": { - "events": { - "description": "#/definitions/Events", - "$ref": "#/definitions/Events" - }, - "instruments": { - "description": "#/definitions/InstrumentsConfig", - "$ref": "#/definitions/InstrumentsConfig" - }, - "spans": { - "description": "#/definitions/Spans", - "$ref": "#/definitions/Spans" - } - }, - "additionalProperties": false - }, - "InstrumentsConfig": { - "type": "object", - "properties": { - "cache": { - "description": "#/definitions/extendable_attribute_apollo_router::plugins::telemetry::config_new::cache::CacheInstrumentsConfig_apollo_router::plugins::telemetry::config_new::instruments::Instrument", - "$ref": "#/definitions/extendable_attribute_apollo_router::plugins::telemetry::config_new::cache::CacheInstrumentsConfig_apollo_router::plugins::telemetry::config_new::instruments::Instrument" - }, - "default_requirement_level": { - "description": "#/definitions/DefaultAttributeRequirementLevel", - "$ref": "#/definitions/DefaultAttributeRequirementLevel" - }, - "graphql": { - "description": "#/definitions/extendable_attribute_apollo_router::plugins::telemetry::config_new::graphql::GraphQLInstrumentsConfig_apollo_router::plugins::telemetry::config_new::instruments::Instrument", - "$ref": "#/definitions/extendable_attribute_apollo_router::plugins::telemetry::config_new::graphql::GraphQLInstrumentsConfig_apollo_router::plugins::telemetry::config_new::instruments::Instrument" - }, - "router": { - "description": "#/definitions/extendable_attribute_apollo_router::plugins::telemetry::config_new::instruments::RouterInstrumentsConfig_apollo_router::plugins::telemetry::config_new::instruments::Instrument", - "$ref": "#/definitions/extendable_attribute_apollo_router::plugins::telemetry::config_new::instruments::RouterInstrumentsConfig_apollo_router::plugins::telemetry::config_new::instruments::Instrument" - }, - "subgraph": { - "description": "#/definitions/extendable_attribute_apollo_router::plugins::telemetry::config_new::instruments::SubgraphInstrumentsConfig_apollo_router::plugins::telemetry::config_new::instruments::Instrument", - "$ref": "#/definitions/extendable_attribute_apollo_router::plugins::telemetry::config_new::instruments::SubgraphInstrumentsConfig_apollo_router::plugins::telemetry::config_new::instruments::Instrument" - }, - "supergraph": { - "description": "#/definitions/extendable_attribute_apollo_router::plugins::telemetry::config_new::instruments::SupergraphInstrumentsConfig_apollo_router::plugins::telemetry::config_new::instruments::Instrument", - "$ref": "#/definitions/extendable_attribute_apollo_router::plugins::telemetry::config_new::instruments::SupergraphInstrumentsConfig_apollo_router::plugins::telemetry::config_new::instruments::Instrument" - } - }, - "additionalProperties": false - }, - "IntrospectionMode": { - "description": "Which implementation of GraphQL schema introspection to use, if enabled", - "oneOf": [ - { - "description": "Use the new Rust-based implementation.", - "type": "string", - "enum": [ - "new" - ] - }, - { - "description": "Use the old JavaScript-based implementation.", - "type": "string", - "enum": [ - "legacy" - ] - }, - { - "description": "Use Rust-based and Javascript-based implementations side by side, logging warnings if the implementations disagree.", - "type": "string", - "enum": [ - "both" - ] - } - ] - }, - "InvalidationEndpointConfig": { - "type": "object", - "required": [ - "listen", - "path" - ], - "properties": { - "listen": { - "description": "#/definitions/ListenAddr", - "$ref": "#/definitions/ListenAddr" - }, - "path": { - "description": "Specify on which path you want to listen for invalidation endpoint.", - "type": "string" - } - }, - "additionalProperties": false - }, - "JWTConf": { - "type": "object", - "required": [ - "jwks" - ], - "properties": { - "header_name": { - "description": "HTTP header expected to contain JWT", - "default": "authorization", - "type": "string" - }, - "header_value_prefix": { - "description": "Header value prefix", - "default": "Bearer", - "type": "string" - }, - "ignore_other_prefixes": { - "description": "Whether to ignore any mismatched prefixes", - "default": false, - "type": "boolean" - }, - "jwks": { - "description": "List of JWKS used to verify tokens", - "type": "array", - "items": { - "description": "#/definitions/JwksConf", - "$ref": "#/definitions/JwksConf" - } - }, - "sources": { - "description": "Alternative sources to extract the JWT", - "type": "array", - "items": { - "description": "#/definitions/Source", - "$ref": "#/definitions/Source" - } - } - }, - "additionalProperties": false - }, - "JwksConf": { - "type": "object", - "required": [ - "url" - ], - "properties": { - "algorithms": { - "description": "List of accepted algorithms. Possible values are `HS256`, `HS384`, `HS512`, `ES256`, `ES384`, `RS256`, `RS384`, `RS512`, `PS256`, `PS384`, `PS512`, `EdDSA`", - "default": null, - "type": "array", - "items": { - "type": "string" - }, - "nullable": true - }, - "headers": { - "description": "List of headers to add to the JWKS request", - "type": "array", - "items": { - "description": "#/definitions/Header", - "$ref": "#/definitions/Header" - } - }, - "issuer": { - "description": "Expected issuer for tokens verified by that JWKS", - "type": "string", - "nullable": true - }, - "poll_interval": { - "description": "Polling interval for each JWKS endpoint in human-readable format; defaults to 60s", - "default": { - "secs": 60, - "nanos": 0 - }, - "type": "string" - }, - "url": { - "description": "Retrieve the JWK Set", - "type": "string" - } - }, - "additionalProperties": false - }, - "ListLength": { - "oneOf": [ - { - "description": "The length of the list", - "type": "string", - "enum": [ - "value" - ] - } - ] - }, - "ListenAddr": { - "description": "Listening address.", - "anyOf": [ - { - "description": "Socket address.", - "type": "string" - }, - { - "description": "Unix socket.", - "type": "string" - } - ] - }, - "Logging": { - "description": "Logging configuration.", - "type": "object", - "properties": { - "common": { - "description": "#/definitions/LoggingCommon", - "$ref": "#/definitions/LoggingCommon" - }, - "experimental_when_header": { - "description": "Log configuration to log request and response for subgraphs and supergraph Note that this will be removed when events are implemented.", - "type": "array", - "items": { - "description": "#/definitions/HeaderLoggingCondition", - "$ref": "#/definitions/HeaderLoggingCondition" - } - }, - "stdout": { - "description": "#/definitions/StdOut", - "$ref": "#/definitions/StdOut" - } - }, - "additionalProperties": false - }, - "LoggingCommon": { - "type": "object", - "properties": { - "resource": { - "description": "The Open Telemetry resource", - "default": {}, - "type": "object", - "additionalProperties": { - "description": "#/definitions/AttributeValue", - "$ref": "#/definitions/AttributeValue" - } - }, - "service_name": { - "description": "Set a service.name resource in your metrics", - "default": null, - "type": "string", - "nullable": true - }, - "service_namespace": { - "description": "Set a service.namespace attribute in your metrics", - "default": null, - "type": "string", - "nullable": true - } - }, - "additionalProperties": false - }, - "MetricAggregation": { - "oneOf": [ - { - "description": "An aggregation that summarizes a set of measurements as an histogram with explicitly defined buckets.", - "type": "object", - "required": [ - "histogram" - ], - "properties": { - "histogram": { - "type": "object", - "required": [ - "buckets" - ], - "properties": { - "buckets": { - "type": "array", - "items": { - "type": "number", - "format": "double" - } - } - }, - "additionalProperties": false - } - }, - "additionalProperties": false - }, - { - "description": "Simply drop the metrics matching this view", - "type": "string", - "enum": [ - "drop" - ] - } - ] - }, - "MetricView": { - "type": "object", - "required": [ - "name" - ], - "properties": { - "aggregation": { - "description": "#/definitions/MetricAggregation", - "$ref": "#/definitions/MetricAggregation", - "nullable": true - }, - "allowed_attribute_keys": { - "description": "An allow-list of attribute keys that will be preserved for the instrument.\n\nAny attribute recorded for the instrument with a key not in this set will be dropped. If the set is empty, all attributes will be dropped, if `None` all attributes will be kept.", - "type": "array", - "items": { - "type": "string" - }, - "uniqueItems": true, - "nullable": true - }, - "description": { - "description": "New description to set to the instrument", - "type": "string", - "nullable": true - }, - "name": { - "description": "The instrument name you're targeting", - "type": "string" - }, - "unit": { - "description": "New unit to set to the instrument", - "type": "string", - "nullable": true - } - }, - "additionalProperties": false - }, - "Metrics": { - "description": "Per subgraph configuration for entity caching", - "type": "object", - "properties": { - "enabled": { - "description": "enables metrics evaluating the benefits of entity caching", - "default": false, - "type": "boolean" - }, - "separate_per_type": { - "description": "Adds the entity type name to attributes. This can greatly increase the cardinality", - "default": false, - "type": "boolean" - }, - "ttl": { - "description": "#/definitions/Ttl", - "$ref": "#/definitions/Ttl", - "nullable": true - } - }, - "additionalProperties": false - }, - "Metrics2": { - "description": "Metrics configuration", - "type": "object", - "properties": { - "common": { - "description": "#/definitions/MetricsCommon", - "$ref": "#/definitions/MetricsCommon" - }, - "otlp": { - "description": "#/definitions/Config10", - "$ref": "#/definitions/Config10" - }, - "prometheus": { - "description": "#/definitions/Config11", - "$ref": "#/definitions/Config11" - } - }, - "additionalProperties": false - }, - "MetricsAttributesConf": { - "description": "Configuration to add custom attributes/labels on metrics", - "type": "object", - "properties": { - "subgraph": { - "description": "#/definitions/SubgraphAttributesConf", - "$ref": "#/definitions/SubgraphAttributesConf" - }, - "supergraph": { - "description": "#/definitions/AttributesForwardConf", - "$ref": "#/definitions/AttributesForwardConf" - } - }, - "additionalProperties": false - }, - "MetricsCommon": { - "type": "object", - "properties": { - "attributes": { - "description": "#/definitions/MetricsAttributesConf", - "$ref": "#/definitions/MetricsAttributesConf" - }, - "buckets": { - "description": "Custom buckets for all histograms", - "default": [ - 0.001, - 0.005, - 0.015, - 0.05, - 0.1, - 0.2, - 0.3, - 0.4, - 0.5, - 1.0, - 5.0, - 10.0 - ], - "type": "array", - "items": { - "type": "number", - "format": "double" - } - }, - "resource": { - "description": "The Open Telemetry resource", - "default": {}, - "type": "object", - "additionalProperties": { - "description": "#/definitions/AttributeValue", - "$ref": "#/definitions/AttributeValue" - } - }, - "service_name": { - "description": "Set a service.name resource in your metrics", - "default": null, - "type": "string", - "nullable": true - }, - "service_namespace": { - "description": "Set a service.namespace attribute in your metrics", - "default": null, - "type": "string", - "nullable": true - }, - "views": { - "description": "Views applied on metrics", - "type": "array", - "items": { - "description": "#/definitions/MetricView", - "$ref": "#/definitions/MetricView" - } - } - }, - "additionalProperties": false - }, - "Mode": { - "type": "string", - "enum": [ - "measure", - "enforce" - ] - }, - "MultipartRequest": { - "description": "Configuration for a multipart request for file uploads.\n\nThis protocol conforms to [jaydenseric's multipart spec](https://github.com/jaydenseric/graphql-multipart-request-spec)", - "type": "object", - "properties": { - "enabled": { - "description": "Whether to enable the multipart protocol for file uploads (default: true)", - "default": true, - "type": "boolean" - }, - "limits": { - "description": "#/definitions/MultipartRequestLimits", - "$ref": "#/definitions/MultipartRequestLimits" - }, - "mode": { - "description": "#/definitions/MultipartRequestMode", - "$ref": "#/definitions/MultipartRequestMode" - } - }, - "additionalProperties": false - }, - "MultipartRequestLimits": { - "description": "Request limits for a multipart request", - "type": "object", - "required": [ - "max_file_size", - "max_files" - ], - "properties": { - "max_file_size": { - "description": "The maximum size of each file, in bytes (default: 5MB)", - "type": "string" - }, - "max_files": { - "description": "The maximum amount of files allowed for a single query (default: 4)", - "type": "integer", - "format": "uint", - "minimum": 0.0 - } - }, - "additionalProperties": false - }, - "MultipartRequestMode": { - "description": "Supported mode for a multipart request", - "oneOf": [ - { - "description": "The multipart request will not be loaded into memory and instead will be streamed directly to the subgraph in the order received. This has some limitations, mainly that the query _must_ be able to be streamed directly to the subgraph without buffering.\n\nIn practice, this means that certain queries will fail due to ordering of the files.", - "type": "string", - "enum": [ - "stream" - ] - } - ] - }, - "Operation": { - "oneOf": [ - { - "type": "object", - "required": [ - "insert" - ], - "properties": { - "insert": { - "description": "#/definitions/Insert", - "$ref": "#/definitions/Insert" - } - }, - "additionalProperties": false - }, - { - "type": "object", - "required": [ - "remove" - ], - "properties": { - "remove": { - "description": "#/definitions/Remove", - "$ref": "#/definitions/Remove" - } - }, - "additionalProperties": false - }, - { - "type": "object", - "required": [ - "propagate" - ], - "properties": { - "propagate": { - "description": "#/definitions/Propagate", - "$ref": "#/definitions/Propagate" - } - }, - "additionalProperties": false - } - ] - }, - "OperationKind": { - "oneOf": [ - { - "description": "The raw operation kind.", - "type": "string", - "enum": [ - "string" - ] - } - ] - }, - "OperationName": { - "oneOf": [ - { - "description": "The raw operation name.", - "type": "string", - "enum": [ - "string" - ] - }, - { - "description": "A hash of the operation name.", - "type": "string", - "enum": [ - "hash" - ] - } - ] - }, - "PersistedQueries": { - "description": "Persisted Queries (PQ) configuration", - "type": "object", - "properties": { - "enabled": { - "description": "Activates Persisted Queries (disabled by default)", - "default": false, - "type": "boolean" - }, - "experimental_local_manifests": { - "description": "Enables using a local copy of the persisted query manifest to safelist operations", - "default": null, - "type": "array", - "items": { - "type": "string" - }, - "nullable": true - }, - "experimental_prewarm_query_plan_cache": { - "description": "Experimental feature to prewarm the query plan cache with persisted queries", - "default": false, - "type": "boolean" - }, - "log_unknown": { - "description": "Enabling this field configures the router to log any freeform GraphQL request that is not in the persisted query list", - "default": false, - "type": "boolean" - }, - "safelist": { - "description": "#/definitions/PersistedQueriesSafelist", - "$ref": "#/definitions/PersistedQueriesSafelist" - } - }, - "additionalProperties": false - }, - "PersistedQueriesSafelist": { - "description": "Persisted Queries (PQ) Safelisting configuration", - "type": "object", - "properties": { - "enabled": { - "description": "Enables using the persisted query list as a safelist (disabled by default)", - "default": false, - "type": "boolean" - }, - "require_id": { - "description": "Enabling this field configures the router to reject any request that does not include the persisted query ID", - "default": false, - "type": "boolean" - } - }, - "additionalProperties": false - }, - "Plugins": { - "properties": { - "experimental.broken": { - "description": "#/definitions/Config2", - "$ref": "#/definitions/Config2" - }, - "experimental.expose_query_plan": { - "description": "#/definitions/ExposeQueryPlanConfig", - "$ref": "#/definitions/ExposeQueryPlanConfig" - }, - "experimental.record": { - "description": "#/definitions/RecordConfig", - "$ref": "#/definitions/RecordConfig" - }, - "experimental.restricted": { - "description": "#/definitions/Config3", - "$ref": "#/definitions/Config3" - } - }, - "additionalProperties": false - }, - "Propagate": { - "description": "Propagate header", - "anyOf": [ - { - "description": "Propagate header given a header name", - "type": "object", - "required": [ - "named" - ], - "properties": { - "default": { - "description": "Default value for the header.", - "type": "string", - "nullable": true - }, - "named": { - "description": "The source header name", - "type": "string" - }, - "rename": { - "description": "An optional target header name", - "type": "string", - "nullable": true - } - }, - "additionalProperties": false - }, - { - "description": "Propagate header given a regex to match header name", - "type": "object", - "required": [ - "matching" - ], - "properties": { - "matching": { - "description": "The regex on header name", - "type": "string" - } - }, - "additionalProperties": false - } - ] - }, - "Propagation": { - "description": "Configure propagation of traces. In general you won't have to do this as these are automatically configured along with any exporter you configure.", - "type": "object", - "properties": { - "aws_xray": { - "description": "Propagate AWS X-Ray", - "default": false, - "type": "boolean" - }, - "baggage": { - "description": "Propagate baggage https://www.w3.org/TR/baggage/", - "default": false, - "type": "boolean" - }, - "datadog": { - "description": "Propagate Datadog", - "default": false, - "type": "boolean" - }, - "jaeger": { - "description": "Propagate Jaeger", - "default": false, - "type": "boolean" - }, - "request": { - "description": "#/definitions/RequestPropagation", - "$ref": "#/definitions/RequestPropagation" - }, - "trace_context": { - "description": "Propagate trace context https://www.w3.org/TR/trace-context/", - "default": false, - "type": "boolean" - }, - "zipkin": { - "description": "Propagate Zipkin", - "default": false, - "type": "boolean" - } - }, - "additionalProperties": false - }, - "Protocol": { - "type": "string", - "enum": [ - "grpc", - "http" - ] - }, - "Query": { - "oneOf": [ - { - "description": "The raw query kind.", - "type": "string", - "enum": [ - "string" - ] - }, - { - "description": "The query aliases.", - "type": "string", - "enum": [ - "aliases" - ] - }, - { - "description": "The query depth.", - "type": "string", - "enum": [ - "depth" - ] - }, - { - "description": "The query height.", - "type": "string", - "enum": [ - "height" - ] - }, - { - "description": "The query root fields.", - "type": "string", - "enum": [ - "root_fields" - ] - } - ] - }, - "QueryPlanCache": { - "description": "Cache configuration", - "type": "object", - "properties": { - "in_memory": { - "description": "#/definitions/InMemoryCache", - "$ref": "#/definitions/InMemoryCache" - }, - "redis": { - "description": "#/definitions/QueryPlanRedisCache", - "$ref": "#/definitions/QueryPlanRedisCache", - "nullable": true - } - }, - "additionalProperties": false - }, - "QueryPlanRedisCache": { - "description": "Redis cache configuration", - "type": "object", - "required": [ - "urls" - ], - "properties": { - "namespace": { - "description": "namespace used to prefix Redis keys", - "type": "string", - "nullable": true - }, - "password": { - "description": "Redis password if not provided in the URLs. This field takes precedence over the password in the URL", - "type": "string", - "nullable": true - }, - "required_to_start": { - "description": "Prevents the router from starting if it cannot connect to Redis", - "default": false, - "type": "boolean" - }, - "reset_ttl": { - "description": "When a TTL is set on a key, reset it when reading the data from that key", - "default": true, - "type": "boolean" - }, - "timeout": { - "description": "Redis request timeout (default: 2ms)", - "default": null, - "type": "string", - "nullable": true - }, - "tls": { - "description": "#/definitions/TlsClient", - "$ref": "#/definitions/TlsClient", - "nullable": true - }, - "ttl": { - "description": "TTL for entries", - "default": { - "secs": 2592000, - "nanos": 0 - }, - "type": "string", - "nullable": true - }, - "urls": { - "description": "List of URLs to the Redis cluster", - "type": "array", - "items": { - "type": "string", - "format": "uri" - } - }, - "username": { - "description": "Redis username if not provided in the URLs. This field takes precedence over the username in the URL", - "type": "string", - "nullable": true - } - }, - "additionalProperties": false - }, - "QueryPlannerMode": { - "description": "Query planner modes.", - "oneOf": [ - { - "description": "Use the new Rust-based implementation.\n\nRaises an error at Router startup if the the new planner does not support the schema (such as using legacy Apollo Federation 1)", - "type": "string", - "enum": [ - "new" - ] - }, - { - "description": "Use the old JavaScript-based implementation.", - "type": "string", - "enum": [ - "legacy" - ] - }, - { - "description": "Use primarily the Javascript-based implementation, but also schedule background jobs to run the Rust implementation and compare results, logging warnings if the implementations disagree.\n\nRaises an error at Router startup if the the new planner does not support the schema (such as using legacy Apollo Federation 1)", - "type": "string", - "enum": [ - "both" - ] - }, - { - "description": "Use primarily the Javascript-based implementation, but also schedule on a best-effort basis background jobs to run the Rust implementation and compare results, logging warnings if the implementations disagree.\n\nFalls back to `legacy` with a warning if the the new planner does not support the schema (such as using legacy Apollo Federation 1)", - "type": "string", - "enum": [ - "both_best_effort" - ] - } - ] - }, - "QueryPlanning": { - "description": "Query planning cache configuration", - "type": "object", - "properties": { - "cache": { - "description": "#/definitions/QueryPlanCache", - "$ref": "#/definitions/QueryPlanCache" - }, - "experimental_parallelism": { - "description": "#/definitions/AvailableParallelism", - "$ref": "#/definitions/AvailableParallelism" - }, - "experimental_paths_limit": { - "description": "Before creating query plans, for each path of fields in the query we compute all the possible options to traverse that path via the subgraphs. Multiple options can arise because fields in the path can be provided by multiple subgraphs, and abstract types (i.e. unions and interfaces) returned by fields sometimes require the query planner to traverse through each constituent object type. The number of options generated in this computation can grow large if the schema or query are sufficiently complex, and that will increase the time spent planning.\n\nThis config allows specifying a per-path limit to the number of options considered. If any path's options exceeds this limit, query planning will abort and the operation will fail.\n\nThe default value is None, which specifies no limit.", - "default": null, - "type": "integer", - "format": "uint32", - "minimum": 0.0, - "nullable": true - }, - "experimental_plans_limit": { - "description": "Sets a limit to the number of generated query plans. The planning process generates many different query plans as it explores the graph, and the list can grow large. By using this limit, we prevent that growth and still get a valid query plan, but it may not be the optimal one.\n\nThe default limit is set to 10000, but it may change in the future", - "default": null, - "type": "integer", - "format": "uint32", - "minimum": 0.0, - "nullable": true - }, - "experimental_reuse_query_plans": { - "description": "If cache warm up is configured, this will allow the router to keep a query plan created with the old schema, if it determines that the schema update does not affect the corresponding query", - "default": false, - "type": "boolean" - }, - "legacy_introspection_caching": { - "description": "Activates introspection response caching Historically, the Router has executed introspection queries in the query planner, and cached their response in its cache because they were expensive. This will change soon as introspection will be removed from the query planner. In the meantime, since storing introspection responses can fill up the cache, this option can be used to deactivate it. Default: true", - "default": true, - "type": "boolean" - }, - "warmed_up_queries": { - "description": "Warms up the cache on reloads by running the query plan over a list of the most used queries (from the in memory cache) Configures the number of queries warmed up. Defaults to 1/3 of the in memory cache", - "default": null, - "type": "integer", - "format": "uint", - "minimum": 0.0, - "nullable": true - } - }, - "additionalProperties": false - }, - "RateLimit": { - "type": "object", - "properties": { - "capacity": { - "description": "Number of log lines allowed in interval per message", - "default": 1, - "type": "integer", - "format": "uint32", - "minimum": 0.0 - }, - "enabled": { - "description": "Set to true to limit the rate of log messages", - "default": false, - "type": "boolean" - }, - "interval": { - "description": "Interval for rate limiting", - "default": { - "secs": 1, - "nanos": 0 - }, - "type": "string" - } - }, - "additionalProperties": false - }, - "RateLimitConf": { - "type": "object", - "required": [ - "capacity", - "interval" - ], - "properties": { - "capacity": { - "description": "Number of requests allowed", - "type": "integer", - "format": "uint64", - "minimum": 1.0 - }, - "interval": { - "description": "Per interval", - "type": "string" - } - }, - "additionalProperties": false - }, - "RecordConfig": { - "description": "Request recording configuration.", - "type": "object", - "required": [ - "enabled" - ], - "properties": { - "enabled": { - "description": "The recording plugin is disabled by default.", - "type": "boolean" - }, - "storage_path": { - "description": "The path to the directory where recordings will be stored. Defaults to the current working directory.", - "type": "string", - "nullable": true - } - }, - "additionalProperties": false - }, - "RedisCache": { - "description": "Redis cache configuration", - "type": "object", - "required": [ - "urls" - ], - "properties": { - "namespace": { - "description": "namespace used to prefix Redis keys", - "type": "string", - "nullable": true - }, - "password": { - "description": "Redis password if not provided in the URLs. This field takes precedence over the password in the URL", - "type": "string", - "nullable": true - }, - "required_to_start": { - "description": "Prevents the router from starting if it cannot connect to Redis", - "default": false, - "type": "boolean" - }, - "reset_ttl": { - "description": "When a TTL is set on a key, reset it when reading the data from that key", - "default": true, - "type": "boolean" - }, - "timeout": { - "description": "Redis request timeout (default: 2ms)", - "default": null, - "type": "string", - "nullable": true - }, - "tls": { - "description": "#/definitions/TlsClient", - "$ref": "#/definitions/TlsClient", - "nullable": true - }, - "ttl": { - "description": "TTL for entries", - "default": null, - "type": "string", - "nullable": true - }, - "urls": { - "description": "List of URLs to the Redis cluster", - "type": "array", - "items": { - "type": "string", - "format": "uri" - } - }, - "username": { - "description": "Redis username if not provided in the URLs. This field takes precedence over the username in the URL", - "type": "string", - "nullable": true - } - }, - "additionalProperties": false - }, - "Remove": { - "description": "Remove header", - "oneOf": [ - { - "description": "Remove a header given a header name", - "type": "object", - "required": [ - "named" - ], - "properties": { - "named": { - "description": "Remove a header given a header name", - "type": "string" - } - }, - "additionalProperties": false - }, - { - "description": "Remove a header given a regex matching header name", - "type": "object", - "required": [ - "matching" - ], - "properties": { - "matching": { - "description": "Remove a header given a regex matching against the header name", - "type": "string" - } - }, - "additionalProperties": false - } - ] - }, - "RequestPropagation": { - "type": "object", - "required": [ - "header_name" - ], - "properties": { - "format": { - "description": "#/definitions/TraceIdFormat", - "$ref": "#/definitions/TraceIdFormat" - }, - "header_name": { - "description": "Choose the header name to expose trace_id (default: apollo-trace-id)", - "type": "string" - } - }, - "additionalProperties": false - }, - "ResponseStatus": { - "oneOf": [ - { - "description": "The http status code.", - "type": "string", - "enum": [ - "code" - ] - }, - { - "description": "The http status reason.", - "type": "string", - "enum": [ - "reason" - ] - } - ] - }, - "RetryConfig": { - "description": "Retry configuration", - "type": "object", - "properties": { - "min_per_sec": { - "description": "minimum rate of retries allowed to accomodate clients that have just started issuing requests, or clients that do not issue many requests per window. The default value is 10", - "type": "integer", - "format": "uint32", - "minimum": 0.0, - "nullable": true - }, - "retry_mutations": { - "description": "allows request retries on mutations. This should only be activated if mutations are idempotent. Disabled by default", - "type": "boolean", - "nullable": true - }, - "retry_percent": { - "description": "percentage of calls to deposit that can be retried. This is in addition to any retries allowed for via min_per_sec. Must be between 0 and 1000, default value is 0.2", - "type": "number", - "format": "float", - "nullable": true - }, - "ttl": { - "description": "how long a single deposit should be considered. Must be between 1 and 60 seconds, default value is 10 seconds", - "default": null, - "type": "string" - } - }, - "additionalProperties": false - }, - "Router": { - "description": "Router level (APQ) configuration", - "type": "object", - "properties": { - "cache": { - "description": "#/definitions/Cache", - "$ref": "#/definitions/Cache" - } - }, - "additionalProperties": false - }, - "RouterAttributes": { - "description": "Common attributes for http server and client. See https://opentelemetry.io/docs/specs/semconv/http/http-spans/#common-attributes", - "type": "object", - "properties": { - "baggage": { - "description": "All key values from trace baggage.", - "default": null, - "type": "boolean", - "nullable": true - }, - "dd.trace_id": { - "description": "The datadog trace ID. This can be output in logs and used to correlate traces in Datadog.", - "default": null, - "type": "boolean", - "nullable": true - }, - "error.type": { - "description": "Describes a class of error the operation ended with. Examples:\n\n* timeout * name_resolution_error * 500\n\nRequirement level: Conditionally Required: If request has ended with an error.", - "default": null, - "type": "boolean", - "nullable": true - }, - "http.request.body.size": { - "description": "The size of the request payload body in bytes. This is the number of bytes transferred excluding headers and is often, but not always, present as the Content-Length header. For requests using transport encoding, this should be the compressed size. Examples:\n\n* 3495\n\nRequirement level: Recommended", - "default": null, - "type": "boolean", - "nullable": true - }, - "http.request.method": { - "description": "HTTP request method. Examples:\n\n* GET * POST * HEAD\n\nRequirement level: Required", - "default": null, - "type": "boolean", - "nullable": true - }, - "http.response.body.size": { - "description": "The size of the response payload body in bytes. This is the number of bytes transferred excluding headers and is often, but not always, present as the Content-Length header. For requests using transport encoding, this should be the compressed size. Examples:\n\n* 3495\n\nRequirement level: Recommended", - "default": null, - "type": "boolean", - "nullable": true - }, - "http.response.status_code": { - "description": "HTTP response status code. Examples:\n\n* 200\n\nRequirement level: Conditionally Required: If and only if one was received/sent.", - "default": null, - "type": "boolean", - "nullable": true - }, - "http.route": { - "description": "The matched route (path template in the format used by the respective server framework). Examples:\n\n* /graphql\n\nRequirement level: Conditionally Required: If and only if it’s available", - "default": null, - "type": "boolean", - "nullable": true - }, - "network.local.address": { - "description": "Local socket address. Useful in case of a multi-IP host. Examples:\n\n* 10.1.2.80 * /tmp/my.sock\n\nRequirement level: Opt-In", - "default": null, - "type": "boolean", - "nullable": true - }, - "network.local.port": { - "description": "Local socket port. Useful in case of a multi-port host. Examples:\n\n* 65123\n\nRequirement level: Opt-In", - "default": null, - "type": "boolean", - "nullable": true - }, - "network.peer.address": { - "description": "Peer address of the network connection - IP address or Unix domain socket name. Examples:\n\n* 10.1.2.80 * /tmp/my.sock\n\nRequirement level: Recommended", - "default": null, - "type": "boolean", - "nullable": true - }, - "network.peer.port": { - "description": "Peer port number of the network connection. Examples:\n\n* 65123\n\nRequirement level: Recommended", - "default": null, - "type": "boolean", - "nullable": true - }, - "network.protocol.name": { - "description": "OSI application layer or non-OSI equivalent. Examples:\n\n* http * spdy\n\nRequirement level: Recommended: if not default (http).", - "default": null, - "type": "boolean", - "nullable": true - }, - "network.protocol.version": { - "description": "Version of the protocol specified in network.protocol.name. Examples:\n\n* 1.0 * 1.1 * 2 * 3\n\nRequirement level: Recommended", - "default": null, - "type": "boolean", - "nullable": true - }, - "network.transport": { - "description": "OSI transport layer. Examples:\n\n* tcp * udp\n\nRequirement level: Conditionally Required", - "default": null, - "type": "boolean", - "nullable": true - }, - "network.type": { - "description": "OSI network layer or non-OSI equivalent. Examples:\n\n* ipv4 * ipv6\n\nRequirement level: Recommended", - "default": null, - "type": "boolean", - "nullable": true - }, - "server.address": { - "description": "Name of the local HTTP server that received the request. Examples:\n\n* example.com * 10.1.2.80 * /tmp/my.sock\n\nRequirement level: Recommended", - "default": null, - "type": "boolean", - "nullable": true - }, - "server.port": { - "description": "Port of the local HTTP server that received the request. Examples:\n\n* 80 * 8080 * 443\n\nRequirement level: Recommended", - "default": null, - "type": "boolean", - "nullable": true - }, - "trace_id": { - "description": "The OpenTelemetry trace ID. This can be output in logs.", - "default": null, - "type": "boolean", - "nullable": true - }, - "url.path": { - "description": "The URI path component Examples:\n\n* /search\n\nRequirement level: Required", - "default": null, - "type": "boolean", - "nullable": true - }, - "url.query": { - "description": "The URI query component Examples:\n\n* q=OpenTelemetry\n\nRequirement level: Conditionally Required: If and only if one was received/sent.", - "default": null, - "type": "boolean", - "nullable": true - }, - "url.scheme": { - "description": "The URI scheme component identifying the used protocol. Examples:\n\n* http * https\n\nRequirement level: Required", - "default": null, - "type": "boolean", - "nullable": true - }, - "user_agent.original": { - "description": "Value of the HTTP User-Agent header sent by the client. Examples:\n\n* CERN-LineMode/2.15 * libwww/2.17b3\n\nRequirement level: Recommended", - "default": null, - "type": "boolean", - "nullable": true - } - }, - "additionalProperties": false - }, - "RouterConf": { - "type": "object", - "required": [ - "jwt" - ], - "properties": { - "jwt": { - "description": "#/definitions/JWTConf", - "$ref": "#/definitions/JWTConf" - } - }, - "additionalProperties": false - }, - "RouterEventsConfig": { - "type": "object", - "properties": { - "error": { - "description": "#/definitions/StandardEventConfig_for_RouterSelector", - "$ref": "#/definitions/StandardEventConfig_for_RouterSelector" - }, - "request": { - "description": "#/definitions/StandardEventConfig_for_RouterSelector", - "$ref": "#/definitions/StandardEventConfig_for_RouterSelector" - }, - "response": { - "description": "#/definitions/StandardEventConfig_for_RouterSelector", - "$ref": "#/definitions/StandardEventConfig_for_RouterSelector" - } - }, - "additionalProperties": false - }, - "RouterInstrumentsConfig": { - "type": "object", - "properties": { - "http.server.active_requests": { - "description": "#/definitions/DefaultedStandardInstrument_for_ActiveRequestsAttributes", - "$ref": "#/definitions/DefaultedStandardInstrument_for_ActiveRequestsAttributes" - }, - "http.server.request.body.size": { - "description": "#/definitions/DefaultedStandardInstrument_for_extendable_attribute_apollo_router::plugins::telemetry::config_new::attributes::RouterAttributes_apollo_router::plugins::telemetry::config_new::selectors::RouterSelector", - "$ref": "#/definitions/DefaultedStandardInstrument_for_extendable_attribute_apollo_router::plugins::telemetry::config_new::attributes::RouterAttributes_apollo_router::plugins::telemetry::config_new::selectors::RouterSelector" - }, - "http.server.request.duration": { - "description": "#/definitions/DefaultedStandardInstrument_for_extendable_attribute_apollo_router::plugins::telemetry::config_new::attributes::RouterAttributes_apollo_router::plugins::telemetry::config_new::selectors::RouterSelector", - "$ref": "#/definitions/DefaultedStandardInstrument_for_extendable_attribute_apollo_router::plugins::telemetry::config_new::attributes::RouterAttributes_apollo_router::plugins::telemetry::config_new::selectors::RouterSelector" - }, - "http.server.response.body.size": { - "description": "#/definitions/DefaultedStandardInstrument_for_extendable_attribute_apollo_router::plugins::telemetry::config_new::attributes::RouterAttributes_apollo_router::plugins::telemetry::config_new::selectors::RouterSelector", - "$ref": "#/definitions/DefaultedStandardInstrument_for_extendable_attribute_apollo_router::plugins::telemetry::config_new::attributes::RouterAttributes_apollo_router::plugins::telemetry::config_new::selectors::RouterSelector" - } - }, - "additionalProperties": false - }, - "RouterRequestConf": { - "description": "What information is passed to a router request/response stage", - "type": "object", - "properties": { - "body": { - "description": "Send the body", - "default": false, - "type": "boolean" - }, - "condition": { - "description": "#/definitions/Condition_for_RouterSelector", - "$ref": "#/definitions/Condition_for_RouterSelector", - "nullable": true - }, - "context": { - "description": "Send the context", - "default": false, - "type": "boolean" - }, - "headers": { - "description": "Send the headers", - "default": false, - "type": "boolean" - }, - "method": { - "description": "Send the method", - "default": false, - "type": "boolean" - }, - "path": { - "description": "Send the path", - "default": false, - "type": "boolean" - }, - "sdl": { - "description": "Send the SDL", - "default": false, - "type": "boolean" - } - }, - "additionalProperties": false - }, - "RouterResponseConf": { - "description": "What information is passed to a router request/response stage", - "type": "object", - "properties": { - "body": { - "description": "Send the body", - "default": false, - "type": "boolean" - }, - "condition": { - "description": "#/definitions/Condition_for_RouterSelector", - "$ref": "#/definitions/Condition_for_RouterSelector", - "nullable": true - }, - "context": { - "description": "Send the context", - "default": false, - "type": "boolean" - }, - "headers": { - "description": "Send the headers", - "default": false, - "type": "boolean" - }, - "sdl": { - "description": "Send the SDL", - "default": false, - "type": "boolean" - }, - "status_code": { - "description": "Send the HTTP status", - "default": false, - "type": "boolean" - } - }, - "additionalProperties": false - }, - "RouterSelector": { - "anyOf": [ - { - "description": "A header from the request", - "type": "object", - "required": [ - "request_header" - ], - "properties": { - "default": { - "description": "#/definitions/AttributeValue", - "$ref": "#/definitions/AttributeValue", - "nullable": true - }, - "request_header": { - "description": "The name of the request header.", - "type": "string" - } - }, - "additionalProperties": false - }, - { - "description": "The request method.", - "type": "object", - "required": [ - "request_method" - ], - "properties": { - "request_method": { - "description": "The request method enabled or not", - "type": "boolean" - } - }, - "additionalProperties": false - }, - { - "description": "A header from the response", - "type": "object", - "required": [ - "response_header" - ], - "properties": { - "default": { - "description": "#/definitions/AttributeValue", - "$ref": "#/definitions/AttributeValue", - "nullable": true - }, - "response_header": { - "description": "The name of the request header.", - "type": "string" - } - }, - "additionalProperties": false - }, - { - "description": "A status from the response", - "type": "object", - "required": [ - "response_status" - ], - "properties": { - "response_status": { - "description": "#/definitions/ResponseStatus", - "$ref": "#/definitions/ResponseStatus" - } - }, - "additionalProperties": false - }, - { - "description": "The trace ID of the request.", - "type": "object", - "required": [ - "trace_id" - ], - "properties": { - "trace_id": { - "description": "#/definitions/TraceIdFormat", - "$ref": "#/definitions/TraceIdFormat" - } - }, - "additionalProperties": false - }, - { - "description": "Apollo Studio operation id", - "type": "object", - "required": [ - "studio_operation_id" - ], - "properties": { - "studio_operation_id": { - "description": "Apollo Studio operation id", - "type": "boolean" - } - }, - "additionalProperties": false - }, - { - "description": "A value from context.", - "type": "object", - "required": [ - "response_context" - ], - "properties": { - "default": { - "description": "#/definitions/AttributeValue", - "$ref": "#/definitions/AttributeValue", - "nullable": true - }, - "response_context": { - "description": "The response context key.", - "type": "string" - } - }, - "additionalProperties": false - }, - { - "description": "The operation name from the query.", - "type": "object", - "required": [ - "operation_name" - ], - "properties": { - "default": { - "description": "Optional default value.", - "type": "string", - "nullable": true - }, - "operation_name": { - "description": "#/definitions/OperationName", - "$ref": "#/definitions/OperationName" - } - }, - "additionalProperties": false - }, - { - "description": "A value from baggage.", - "type": "object", - "required": [ - "baggage" - ], - "properties": { - "baggage": { - "description": "The name of the baggage item.", - "type": "string" - }, - "default": { - "description": "#/definitions/AttributeValue", - "$ref": "#/definitions/AttributeValue", - "nullable": true - } - }, - "additionalProperties": false - }, - { - "description": "A value from an environment variable.", - "type": "object", - "required": [ - "env" - ], - "properties": { - "default": { - "description": "Optional default value.", - "type": "string", - "nullable": true - }, - "env": { - "description": "The name of the environment variable", - "type": "string" - } - }, - "additionalProperties": false - }, - { - "description": "Deprecated, should not be used anymore, use static field instead", - "type": "string" - }, - { - "type": "object", - "required": [ - "static" - ], - "properties": { - "static": { - "description": "#/definitions/AttributeValue", - "$ref": "#/definitions/AttributeValue" - } - }, - "additionalProperties": false - }, - { - "type": "object", - "required": [ - "on_graphql_error" - ], - "properties": { - "on_graphql_error": { - "description": "Boolean set to true if the response body contains graphql error", - "type": "boolean" - } - }, - "additionalProperties": false - }, - { - "type": "object", - "required": [ - "error" - ], - "properties": { - "error": { - "description": "#/definitions/ErrorRepr", - "$ref": "#/definitions/ErrorRepr" - } - }, - "additionalProperties": false - } - ] - }, - "RouterShaping": { - "type": "object", - "properties": { - "global_rate_limit": { - "description": "#/definitions/RateLimitConf", - "$ref": "#/definitions/RateLimitConf", - "nullable": true - }, - "timeout": { - "description": "Enable timeout for incoming requests", - "default": null, - "type": "string" - } - }, - "additionalProperties": false - }, - "RouterSpans": { - "type": "object", - "properties": { - "attributes": { - "description": "#/definitions/extendable_attribute_apollo_router::plugins::telemetry::config_new::attributes::RouterAttributes_apollo_router::plugins::telemetry::config_new::conditional::Conditional", - "$ref": "#/definitions/extendable_attribute_apollo_router::plugins::telemetry::config_new::attributes::RouterAttributes_apollo_router::plugins::telemetry::config_new::conditional::Conditional" - } - }, - "additionalProperties": false - }, - "RouterStage": { - "type": "object", - "properties": { - "request": { - "description": "#/definitions/RouterRequestConf", - "$ref": "#/definitions/RouterRequestConf" - }, - "response": { - "description": "#/definitions/RouterResponseConf", - "$ref": "#/definitions/RouterResponseConf" - } - } - }, - "RouterValue": { - "anyOf": [ - { - "description": "#/definitions/Standard", - "$ref": "#/definitions/Standard" - }, - { - "description": "#/definitions/RouterSelector", - "$ref": "#/definitions/RouterSelector" - } - ] - }, - "Sampler": { - "oneOf": [ - { - "description": "Always sample", - "type": "string", - "enum": [ - "always_on" - ] - }, - { - "description": "Never sample", - "type": "string", - "enum": [ - "always_off" - ] - } - ] - }, - "SamplerOption": { - "anyOf": [ - { - "description": "Sample a given fraction. Fractions >= 1 will always sample.", - "type": "number", - "format": "double" - }, - { - "description": "#/definitions/Sampler", - "$ref": "#/definitions/Sampler" - } - ] - }, - "Sandbox": { - "description": "Configuration options pertaining to the sandbox page.", - "type": "object", - "properties": { - "enabled": { - "description": "Set to true to enable sandbox", - "default": false, - "type": "boolean" - } - }, - "additionalProperties": false - }, - "SelectorOrValue_for_GraphQLSelector": { - "anyOf": [ - { - "description": "#/definitions/AttributeValue", - "$ref": "#/definitions/AttributeValue" - }, - { - "description": "#/definitions/GraphQLSelector", - "$ref": "#/definitions/GraphQLSelector" - } - ] - }, - "SelectorOrValue_for_RouterSelector": { - "anyOf": [ - { - "description": "#/definitions/AttributeValue", - "$ref": "#/definitions/AttributeValue" - }, - { - "description": "#/definitions/RouterSelector", - "$ref": "#/definitions/RouterSelector" - } - ] - }, - "SelectorOrValue_for_SubgraphSelector": { - "anyOf": [ - { - "description": "#/definitions/AttributeValue", - "$ref": "#/definitions/AttributeValue" - }, - { - "description": "#/definitions/SubgraphSelector", - "$ref": "#/definitions/SubgraphSelector" - } - ] - }, - "SelectorOrValue_for_SupergraphSelector": { - "anyOf": [ - { - "description": "#/definitions/AttributeValue", - "$ref": "#/definitions/AttributeValue" - }, - { - "description": "#/definitions/SupergraphSelector", - "$ref": "#/definitions/SupergraphSelector" - } - ] - }, - "SocketEndpoint": { - "type": "string" - }, - "Source": { - "oneOf": [ - { - "type": "object", - "required": [ - "type" - ], - "properties": { - "name": { - "description": "HTTP header expected to contain JWT", - "default": "authorization", - "type": "string" - }, - "type": { - "type": "string", - "enum": [ - "header" - ] - }, - "value_prefix": { - "description": "Header value prefix", - "default": "Bearer", - "type": "string" - } - }, - "additionalProperties": false - }, - { - "type": "object", - "required": [ - "name", - "type" - ], - "properties": { - "name": { - "description": "Name of the cookie containing the JWT", - "type": "string" - }, - "type": { - "type": "string", - "enum": [ - "cookie" - ] - } - }, - "additionalProperties": false - } - ] - }, - "SpanMode": { - "description": "Span mode to create new or deprecated spans", - "oneOf": [ - { - "description": "Keep the request span as root span and deprecated attributes. This option will eventually removed.", - "type": "string", - "enum": [ - "deprecated" - ] - }, - { - "description": "Use new OpenTelemetry spec compliant span attributes or preserve existing. This will be the default in future.", - "type": "string", - "enum": [ - "spec_compliant" - ] - } - ] - }, - "Spans": { - "type": "object", - "properties": { - "default_attribute_requirement_level": { - "description": "#/definitions/DefaultAttributeRequirementLevel", - "$ref": "#/definitions/DefaultAttributeRequirementLevel" - }, - "mode": { - "description": "#/definitions/SpanMode", - "$ref": "#/definitions/SpanMode" - }, - "router": { - "description": "#/definitions/RouterSpans", - "$ref": "#/definitions/RouterSpans" - }, - "subgraph": { - "description": "#/definitions/SubgraphSpans", - "$ref": "#/definitions/SubgraphSpans" - }, - "supergraph": { - "description": "#/definitions/SupergraphSpans", - "$ref": "#/definitions/SupergraphSpans" - } - }, - "additionalProperties": false - }, - "Standard": { - "type": "string", - "enum": [ - "duration", - "unit" - ] - }, - "StandardEventConfig_for_RouterSelector": { - "anyOf": [ - { - "description": "#/definitions/EventLevel", - "$ref": "#/definitions/EventLevel" - }, - { - "type": "object", - "required": [ - "condition", - "level" - ], - "properties": { - "condition": { - "description": "#/definitions/Condition_for_RouterSelector", - "$ref": "#/definitions/Condition_for_RouterSelector" - }, - "level": { - "description": "#/definitions/EventLevel", - "$ref": "#/definitions/EventLevel" - } - } - } - ] - }, - "StandardEventConfig_for_SubgraphSelector": { - "anyOf": [ - { - "description": "#/definitions/EventLevel", - "$ref": "#/definitions/EventLevel" - }, - { - "type": "object", - "required": [ - "condition", - "level" - ], - "properties": { - "condition": { - "description": "#/definitions/Condition_for_SubgraphSelector", - "$ref": "#/definitions/Condition_for_SubgraphSelector" - }, - "level": { - "description": "#/definitions/EventLevel", - "$ref": "#/definitions/EventLevel" - } - } - } - ] - }, - "StandardEventConfig_for_SupergraphSelector": { - "anyOf": [ - { - "description": "#/definitions/EventLevel", - "$ref": "#/definitions/EventLevel" - }, - { - "type": "object", - "required": [ - "condition", - "level" - ], - "properties": { - "condition": { - "description": "#/definitions/Condition_for_SupergraphSelector", - "$ref": "#/definitions/Condition_for_SupergraphSelector" - }, - "level": { - "description": "#/definitions/EventLevel", - "$ref": "#/definitions/EventLevel" - } - } - } - ] - }, - "StandardUnit": { - "type": "string", - "enum": [ - "unit" - ] - }, - "StdOut": { - "type": "object", - "properties": { - "enabled": { - "description": "Set to true to log to stdout.", - "default": true, - "type": "boolean" - }, - "format": { - "description": "#/definitions/logging_format", - "$ref": "#/definitions/logging_format" - }, - "rate_limit": { - "description": "#/definitions/RateLimit", - "$ref": "#/definitions/RateLimit" - }, - "tty_format": { - "description": "#/definitions/logging_format", - "$ref": "#/definitions/logging_format", - "nullable": true - } - }, - "additionalProperties": false - }, - "StrategyConfig": { - "description": "Algorithm for calculating the cost of an incoming query.", - "oneOf": [ - { - "description": "A simple, statically-defined cost mapping for operations and types.\n\nOperation costs: - Mutation: 10 - Query: 0 - Subscription 0\n\nType costs: - Object: 1 - Interface: 1 - Union: 1 - Scalar: 0 - Enum: 0", - "type": "object", - "required": [ - "static_estimated" - ], - "properties": { - "static_estimated": { - "type": "object", - "required": [ - "list_size", - "max" - ], - "properties": { - "list_size": { - "description": "The assumed length of lists returned by the operation.", - "type": "integer", - "format": "uint32", - "minimum": 0.0 - }, - "max": { - "description": "The maximum cost of a query", - "type": "number", - "format": "double" - } - }, - "additionalProperties": false - } - }, - "additionalProperties": false - } - ] - }, - "Subgraph": { - "description": "Per subgraph configuration for entity caching", - "type": "object", - "properties": { - "enabled": { - "description": "activates caching for this subgraph, overrides the global configuration", - "default": true, - "type": "boolean" - }, - "invalidation": { - "description": "#/definitions/SubgraphInvalidationConfig", - "$ref": "#/definitions/SubgraphInvalidationConfig", - "nullable": true - }, - "private_id": { - "description": "Context key used to separate cache sections per user", - "default": null, - "type": "string", - "nullable": true - }, - "redis": { - "description": "#/definitions/RedisCache", - "$ref": "#/definitions/RedisCache", - "nullable": true - }, - "ttl": { - "description": "#/definitions/Ttl", - "$ref": "#/definitions/Ttl", - "nullable": true - } - }, - "additionalProperties": false - }, - "SubgraphApq": { - "description": "Subgraph level Automatic Persisted Queries (APQ) configuration", - "type": "object", - "properties": { - "enabled": { - "description": "Enable", - "default": false, - "type": "boolean" - } - }, - "additionalProperties": false - }, - "SubgraphAttributes": { - "type": "object", - "properties": { - "subgraph.graphql.document": { - "description": "The GraphQL document being executed. Examples:\n\n* `query findBookById { bookById(id: ?) { name } }`\n\nRequirement level: Recommended", - "default": null, - "type": "boolean", - "nullable": true - }, - "subgraph.graphql.operation.name": { - "description": "The name of the operation being executed. Examples:\n\n* findBookById\n\nRequirement level: Recommended", - "default": null, - "type": "boolean", - "nullable": true - }, - "subgraph.graphql.operation.type": { - "description": "The type of the operation being executed. Examples:\n\n* query * subscription * mutation\n\nRequirement level: Recommended", - "default": null, - "type": "boolean", - "nullable": true - }, - "subgraph.name": { - "description": "The name of the subgraph Examples:\n\n* products\n\nRequirement level: Required", - "default": null, - "type": "boolean", - "nullable": true - } - }, - "additionalProperties": false - }, - "SubgraphAttributesConf": { - "description": "Configuration to add custom attributes/labels on metrics to subgraphs", - "type": "object", - "properties": { - "all": { - "description": "#/definitions/AttributesForwardConf", - "$ref": "#/definitions/AttributesForwardConf" - }, - "subgraphs": { - "description": "Attributes per subgraph", - "type": "object", - "additionalProperties": { - "description": "#/definitions/AttributesForwardConf", - "$ref": "#/definitions/AttributesForwardConf" - } - } - }, - "additionalProperties": false - }, - "SubgraphConfiguration_for_CommonBatchingConfig": { - "description": "Configuration options pertaining to the subgraph server component.", - "type": "object", - "properties": { - "all": { - "description": "#/definitions/CommonBatchingConfig", - "$ref": "#/definitions/CommonBatchingConfig" - }, - "subgraphs": { - "description": "per subgraph options", - "default": {}, - "type": "object", - "additionalProperties": { - "description": "#/definitions/CommonBatchingConfig", - "$ref": "#/definitions/CommonBatchingConfig" - } - } - } - }, - "SubgraphConfiguration_for_Subgraph": { - "description": "Configuration options pertaining to the subgraph server component.", - "type": "object", - "properties": { - "all": { - "description": "#/definitions/Subgraph", - "$ref": "#/definitions/Subgraph" - }, - "subgraphs": { - "description": "per subgraph options", - "default": {}, - "type": "object", - "additionalProperties": { - "description": "#/definitions/Subgraph", - "$ref": "#/definitions/Subgraph" - } - } - } - }, - "SubgraphConfiguration_for_SubgraphApq": { - "description": "Configuration options pertaining to the subgraph server component.", - "type": "object", - "properties": { - "all": { - "description": "#/definitions/SubgraphApq", - "$ref": "#/definitions/SubgraphApq" - }, - "subgraphs": { - "description": "per subgraph options", - "default": {}, - "type": "object", - "additionalProperties": { - "description": "#/definitions/SubgraphApq", - "$ref": "#/definitions/SubgraphApq" - } - } - } - }, - "SubgraphConfiguration_for_TlsClient": { - "description": "Configuration options pertaining to the subgraph server component.", - "type": "object", - "properties": { - "all": { - "description": "#/definitions/TlsClient", - "$ref": "#/definitions/TlsClient" - }, - "subgraphs": { - "description": "per subgraph options", - "default": {}, - "type": "object", - "additionalProperties": { - "description": "#/definitions/TlsClient", - "$ref": "#/definitions/TlsClient" - } - } - } - }, - "SubgraphErrorConfig": { - "type": "object", - "properties": { - "all": { - "description": "#/definitions/ErrorConfiguration", - "$ref": "#/definitions/ErrorConfiguration" - }, - "subgraphs": { - "description": "Handling of errors coming from specified subgraphs", - "type": "object", - "additionalProperties": { - "description": "#/definitions/ErrorConfiguration", - "$ref": "#/definitions/ErrorConfiguration" - } - } - }, - "additionalProperties": false - }, - "SubgraphEventsConfig": { - "type": "object", - "properties": { - "error": { - "description": "#/definitions/StandardEventConfig_for_SubgraphSelector", - "$ref": "#/definitions/StandardEventConfig_for_SubgraphSelector" - }, - "request": { - "description": "#/definitions/StandardEventConfig_for_SubgraphSelector", - "$ref": "#/definitions/StandardEventConfig_for_SubgraphSelector" - }, - "response": { - "description": "#/definitions/StandardEventConfig_for_SubgraphSelector", - "$ref": "#/definitions/StandardEventConfig_for_SubgraphSelector" - } - }, - "additionalProperties": false - }, - "SubgraphInstrumentsConfig": { - "type": "object", - "properties": { - "http.client.request.body.size": { - "description": "#/definitions/DefaultedStandardInstrument_for_extendable_attribute_apollo_router::plugins::telemetry::config_new::attributes::SubgraphAttributes_apollo_router::plugins::telemetry::config_new::selectors::SubgraphSelector", - "$ref": "#/definitions/DefaultedStandardInstrument_for_extendable_attribute_apollo_router::plugins::telemetry::config_new::attributes::SubgraphAttributes_apollo_router::plugins::telemetry::config_new::selectors::SubgraphSelector" - }, - "http.client.request.duration": { - "description": "#/definitions/DefaultedStandardInstrument_for_extendable_attribute_apollo_router::plugins::telemetry::config_new::attributes::SubgraphAttributes_apollo_router::plugins::telemetry::config_new::selectors::SubgraphSelector", - "$ref": "#/definitions/DefaultedStandardInstrument_for_extendable_attribute_apollo_router::plugins::telemetry::config_new::attributes::SubgraphAttributes_apollo_router::plugins::telemetry::config_new::selectors::SubgraphSelector" - }, - "http.client.response.body.size": { - "description": "#/definitions/DefaultedStandardInstrument_for_extendable_attribute_apollo_router::plugins::telemetry::config_new::attributes::SubgraphAttributes_apollo_router::plugins::telemetry::config_new::selectors::SubgraphSelector", - "$ref": "#/definitions/DefaultedStandardInstrument_for_extendable_attribute_apollo_router::plugins::telemetry::config_new::attributes::SubgraphAttributes_apollo_router::plugins::telemetry::config_new::selectors::SubgraphSelector" - } - }, - "additionalProperties": false - }, - "SubgraphInvalidationConfig": { - "type": "object", - "properties": { - "enabled": { - "description": "Enable the invalidation", - "default": false, - "type": "boolean" - }, - "shared_key": { - "description": "Shared key needed to request the invalidation endpoint", - "default": "", - "type": "string" - } - }, - "additionalProperties": false - }, - "SubgraphPassthroughMode": { - "type": "object", - "properties": { - "all": { - "description": "#/definitions/WebSocketConfiguration", - "$ref": "#/definitions/WebSocketConfiguration", - "nullable": true - }, - "subgraphs": { - "description": "Configuration for specific subgraphs", - "default": {}, - "type": "object", - "additionalProperties": { - "description": "#/definitions/WebSocketConfiguration", - "$ref": "#/definitions/WebSocketConfiguration" - } - } - }, - "additionalProperties": false - }, - "SubgraphQuery": { - "oneOf": [ - { - "description": "The raw query kind.", - "type": "string", - "enum": [ - "string" - ] - } - ] - }, - "SubgraphRequestConf": { - "description": "What information is passed to a subgraph request/response stage", - "type": "object", - "properties": { - "body": { - "description": "Send the body", - "default": false, - "type": "boolean" - }, - "condition": { - "description": "#/definitions/Condition_for_SubgraphSelector", - "$ref": "#/definitions/Condition_for_SubgraphSelector", - "nullable": true - }, - "context": { - "description": "Send the context", - "default": false, - "type": "boolean" - }, - "headers": { - "description": "Send the headers", - "default": false, - "type": "boolean" - }, - "method": { - "description": "Send the method URI", - "default": false, - "type": "boolean" - }, - "service_name": { - "description": "Send the service name", - "default": false, - "type": "boolean" - }, - "uri": { - "description": "Send the subgraph URI", - "default": false, - "type": "boolean" - } - }, - "additionalProperties": false - }, - "SubgraphResponseConf": { - "description": "What information is passed to a subgraph request/response stage", - "type": "object", - "properties": { - "body": { - "description": "Send the body", - "default": false, - "type": "boolean" - }, - "condition": { - "description": "#/definitions/Condition_for_SubgraphSelector", - "$ref": "#/definitions/Condition_for_SubgraphSelector", - "nullable": true - }, - "context": { - "description": "Send the context", - "default": false, - "type": "boolean" - }, - "headers": { - "description": "Send the headers", - "default": false, - "type": "boolean" - }, - "service_name": { - "description": "Send the service name", - "default": false, - "type": "boolean" - }, - "status_code": { - "description": "Send the http status", - "default": false, - "type": "boolean" - } - }, - "additionalProperties": false - }, - "SubgraphSelector": { - "anyOf": [ - { - "type": "object", - "required": [ - "subgraph_operation_name" - ], - "properties": { - "default": { - "description": "Optional default value.", - "type": "string", - "nullable": true - }, - "subgraph_operation_name": { - "description": "#/definitions/OperationName", - "$ref": "#/definitions/OperationName" - } - }, - "additionalProperties": false - }, - { - "type": "object", - "required": [ - "subgraph_operation_kind" - ], - "properties": { - "subgraph_operation_kind": { - "description": "#/definitions/OperationKind", - "$ref": "#/definitions/OperationKind" - } - }, - "additionalProperties": false - }, - { - "type": "object", - "required": [ - "subgraph_name" - ], - "properties": { - "subgraph_name": { - "description": "The subgraph name", - "type": "boolean" - } - }, - "additionalProperties": false - }, - { - "type": "object", - "required": [ - "subgraph_query" - ], - "properties": { - "default": { - "description": "Optional default value.", - "type": "string", - "nullable": true - }, - "subgraph_query": { - "description": "#/definitions/SubgraphQuery", - "$ref": "#/definitions/SubgraphQuery" - } - }, - "additionalProperties": false - }, - { - "type": "object", - "required": [ - "subgraph_query_variable" - ], - "properties": { - "default": { - "description": "#/definitions/AttributeValue", - "$ref": "#/definitions/AttributeValue", - "nullable": true - }, - "subgraph_query_variable": { - "description": "The name of a subgraph query variable.", - "type": "string" - } - }, - "additionalProperties": false - }, - { - "description": "Deprecated, use SubgraphResponseData and SubgraphResponseError instead", - "type": "object", - "required": [ - "subgraph_response_body" - ], - "properties": { - "default": { - "description": "#/definitions/AttributeValue", - "$ref": "#/definitions/AttributeValue", - "nullable": true - }, - "subgraph_response_body": { - "description": "The subgraph response body json path.", - "type": "string" - } - }, - "additionalProperties": false - }, - { - "type": "object", - "required": [ - "subgraph_response_data" - ], - "properties": { - "default": { - "description": "#/definitions/AttributeValue", - "$ref": "#/definitions/AttributeValue", - "nullable": true - }, - "subgraph_response_data": { - "description": "The subgraph response body json path.", - "type": "string" - } - }, - "additionalProperties": false - }, - { - "type": "object", - "required": [ - "subgraph_response_errors" - ], - "properties": { - "default": { - "description": "#/definitions/AttributeValue", - "$ref": "#/definitions/AttributeValue", - "nullable": true - }, - "subgraph_response_errors": { - "description": "The subgraph response body json path.", - "type": "string" - } - }, - "additionalProperties": false - }, - { - "type": "object", - "required": [ - "subgraph_request_header" - ], - "properties": { - "default": { - "description": "Optional default value.", - "type": "string", - "nullable": true - }, - "subgraph_request_header": { - "description": "The name of a subgraph request header.", - "type": "string" - } - }, - "additionalProperties": false - }, - { - "type": "object", - "required": [ - "subgraph_response_header" - ], - "properties": { - "default": { - "description": "Optional default value.", - "type": "string", - "nullable": true - }, - "subgraph_response_header": { - "description": "The name of a subgraph response header.", - "type": "string" - } - }, - "additionalProperties": false - }, - { - "type": "object", - "required": [ - "subgraph_response_status" - ], - "properties": { - "subgraph_response_status": { - "description": "#/definitions/ResponseStatus", - "$ref": "#/definitions/ResponseStatus" - } - }, - "additionalProperties": false - }, - { - "type": "object", - "required": [ - "supergraph_operation_name" - ], - "properties": { - "default": { - "description": "Optional default value.", - "type": "string", - "nullable": true - }, - "supergraph_operation_name": { - "description": "#/definitions/OperationName", - "$ref": "#/definitions/OperationName" - } - }, - "additionalProperties": false - }, - { - "type": "object", - "required": [ - "supergraph_operation_kind" - ], - "properties": { - "supergraph_operation_kind": { - "description": "#/definitions/OperationKind", - "$ref": "#/definitions/OperationKind" - } - }, - "additionalProperties": false - }, - { - "type": "object", - "required": [ - "supergraph_query" - ], - "properties": { - "default": { - "description": "Optional default value.", - "type": "string", - "nullable": true - }, - "supergraph_query": { - "description": "#/definitions/Query", - "$ref": "#/definitions/Query" - } - }, - "additionalProperties": false - }, - { - "type": "object", - "required": [ - "supergraph_query_variable" - ], - "properties": { - "default": { - "description": "#/definitions/AttributeValue", - "$ref": "#/definitions/AttributeValue", - "nullable": true - }, - "supergraph_query_variable": { - "description": "The supergraph query variable name.", - "type": "string" - } - }, - "additionalProperties": false - }, - { - "type": "object", - "required": [ - "supergraph_request_header" - ], - "properties": { - "default": { - "description": "Optional default value.", - "type": "string", - "nullable": true - }, - "supergraph_request_header": { - "description": "The supergraph request header name.", - "type": "string" - } - }, - "additionalProperties": false - }, - { - "type": "object", - "required": [ - "request_context" - ], - "properties": { - "default": { - "description": "#/definitions/AttributeValue", - "$ref": "#/definitions/AttributeValue", - "nullable": true - }, - "request_context": { - "description": "The request context key.", - "type": "string" - } - }, - "additionalProperties": false - }, - { - "type": "object", - "required": [ - "response_context" - ], - "properties": { - "default": { - "description": "#/definitions/AttributeValue", - "$ref": "#/definitions/AttributeValue", - "nullable": true - }, - "response_context": { - "description": "The response context key.", - "type": "string" - } - }, - "additionalProperties": false - }, - { - "type": "object", - "required": [ - "subgraph_on_graphql_error" - ], - "properties": { - "subgraph_on_graphql_error": { - "description": "Boolean set to true if the response body contains graphql error", - "type": "boolean" - } - }, - "additionalProperties": false - }, - { - "type": "object", - "required": [ - "baggage" - ], - "properties": { - "baggage": { - "description": "The name of the baggage item.", - "type": "string" - }, - "default": { - "description": "#/definitions/AttributeValue", - "$ref": "#/definitions/AttributeValue", - "nullable": true - } - }, - "additionalProperties": false - }, - { - "type": "object", - "required": [ - "env" - ], - "properties": { - "default": { - "description": "Optional default value.", - "type": "string", - "nullable": true - }, - "env": { - "description": "The name of the environment variable", - "type": "string" - } - }, - "additionalProperties": false - }, - { - "description": "Deprecated, should not be used anymore, use static field instead", - "type": "string" - }, - { - "type": "object", - "required": [ - "static" - ], - "properties": { - "static": { - "description": "#/definitions/AttributeValue", - "$ref": "#/definitions/AttributeValue" - } - }, - "additionalProperties": false - }, - { - "type": "object", - "required": [ - "error" - ], - "properties": { - "error": { - "description": "#/definitions/ErrorRepr", - "$ref": "#/definitions/ErrorRepr" - } - }, - "additionalProperties": false - }, - { - "type": "object", - "required": [ - "cache" - ], - "properties": { - "cache": { - "description": "#/definitions/CacheKind", - "$ref": "#/definitions/CacheKind" - }, - "entity_type": { - "description": "#/definitions/EntityType", - "$ref": "#/definitions/EntityType", - "nullable": true - } - }, - "additionalProperties": false - } - ] - }, - "SubgraphShaping": { - "description": "Traffic shaping options", - "type": "object", - "properties": { - "compression": { - "description": "#/definitions/Compression", - "$ref": "#/definitions/Compression", - "nullable": true - }, - "deduplicate_query": { - "description": "Enable query deduplication", - "type": "boolean", - "nullable": true - }, - "experimental_http2": { - "description": "#/definitions/Http2Config", - "$ref": "#/definitions/Http2Config", - "nullable": true - }, - "experimental_retry": { - "description": "#/definitions/RetryConfig", - "$ref": "#/definitions/RetryConfig", - "nullable": true - }, - "global_rate_limit": { - "description": "#/definitions/RateLimitConf", - "$ref": "#/definitions/RateLimitConf", - "nullable": true - }, - "timeout": { - "description": "Enable timeout for incoming requests", - "default": null, - "type": "string" - } - }, - "additionalProperties": false - }, - "SubgraphSpans": { - "type": "object", - "properties": { - "attributes": { - "description": "#/definitions/extendable_attribute_apollo_router::plugins::telemetry::config_new::attributes::SubgraphAttributes_apollo_router::plugins::telemetry::config_new::conditional::Conditional", - "$ref": "#/definitions/extendable_attribute_apollo_router::plugins::telemetry::config_new::attributes::SubgraphAttributes_apollo_router::plugins::telemetry::config_new::conditional::Conditional" - } - }, - "additionalProperties": false - }, - "SubgraphStage": { - "description": "What information is passed to a subgraph request/response stage", - "type": "object", - "properties": { - "request": { - "description": "#/definitions/SubgraphRequestConf", - "$ref": "#/definitions/SubgraphRequestConf" - }, - "response": { - "description": "#/definitions/SubgraphResponseConf", - "$ref": "#/definitions/SubgraphResponseConf" - } - }, - "additionalProperties": false - }, - "SubgraphStages": { - "description": "What information is passed to a subgraph request/response stage", - "type": "object", - "properties": { - "all": { - "description": "#/definitions/SubgraphStage", - "$ref": "#/definitions/SubgraphStage" - } - }, - "additionalProperties": false - }, - "SubgraphValue": { - "anyOf": [ - { - "description": "#/definitions/Standard", - "$ref": "#/definitions/Standard" - }, - { - "description": "#/definitions/SubgraphSelector", - "$ref": "#/definitions/SubgraphSelector" - } - ] - }, - "SubscriptionConfig": { - "description": "Subscriptions configuration", - "type": "object", - "properties": { - "enable_deduplication": { - "description": "Enable the deduplication of subscription (for example if we detect the exact same request to subgraph we won't open a new websocket to the subgraph in passthrough mode) (default: true)", - "default": true, - "type": "boolean" - }, - "enabled": { - "description": "Enable subscription", - "default": true, - "type": "boolean" - }, - "max_opened_subscriptions": { - "description": "This 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, - "type": "integer", - "format": "uint", - "minimum": 0.0, - "nullable": true - }, - "mode": { - "description": "#/definitions/SubscriptionModeConfig", - "$ref": "#/definitions/SubscriptionModeConfig" - }, - "queue_capacity": { - "description": "It represent the capacity of the in memory queue to know how many events we can keep in a buffer", - "default": null, - "type": "integer", - "format": "uint", - "minimum": 0.0, - "nullable": true - } - }, - "additionalProperties": false - }, - "SubscriptionModeConfig": { - "type": "object", - "properties": { - "callback": { - "description": "#/definitions/CallbackMode", - "$ref": "#/definitions/CallbackMode", - "nullable": true - }, - "passthrough": { - "description": "#/definitions/SubgraphPassthroughMode", - "$ref": "#/definitions/SubgraphPassthroughMode", - "nullable": true - } - }, - "additionalProperties": false - }, - "Supergraph": { - "description": "Configuration options pertaining to the supergraph server component.", - "type": "object", - "properties": { - "defer_support": { - "description": "Set to false to disable defer support", - "default": true, - "type": "boolean" - }, - "early_cancel": { - "description": "abort request handling when the client drops the connection. Default: false. When set to true, some parts of the request pipeline like telemetry will not work properly, but request handling will stop immediately when the client connection is closed.", - "default": false, - "type": "boolean" - }, - "experimental_log_on_broken_pipe": { - "description": "Log a message if the client closes the connection before the response is sent. Default: false.", - "default": false, - "type": "boolean" - }, - "experimental_reuse_query_fragments": { - "description": "Enable reuse of query fragments Default: depends on the federation version", - "default": null, - "type": "boolean", - "nullable": true - }, - "generate_query_fragments": { - "description": "Enable QP generation of fragments for subgraph requests Default: false", - "default": false, - "type": "boolean" - }, - "introspection": { - "description": "Enable introspection Default: false", - "default": false, - "type": "boolean" - }, - "listen": { - "description": "#/definitions/ListenAddr", - "$ref": "#/definitions/ListenAddr" - }, - "path": { - "description": "The HTTP path on which GraphQL requests will be served. default: \"/\"", - "default": "/", - "type": "string" - }, - "query_planning": { - "description": "#/definitions/QueryPlanning", - "$ref": "#/definitions/QueryPlanning" - } - }, - "additionalProperties": false - }, - "SupergraphAttributes": { - "description": "Attributes for Cost", - "type": "object", - "properties": { - "cost.actual": { - "description": "The actual cost of the operation using the currently configured cost model", - "default": null, - "type": "boolean", - "nullable": true - }, - "cost.delta": { - "description": "The delta (estimated - actual) cost of the operation using the currently configured cost model", - "default": null, - "type": "boolean", - "nullable": true - }, - "cost.estimated": { - "description": "The estimated cost of the operation using the currently configured cost model", - "default": null, - "type": "boolean", - "nullable": true - }, - "cost.result": { - "description": "The cost result, this is an error code returned by the cost calculation or COST_OK", - "default": null, - "type": "boolean", - "nullable": true - }, - "graphql.document": { - "description": "The GraphQL document being executed. Examples:\n\n* `query findBookById { bookById(id: ?) { name } }`\n\nRequirement level: Recommended", - "default": null, - "type": "boolean", - "nullable": true - }, - "graphql.operation.name": { - "description": "The name of the operation being executed. Examples:\n\n* findBookById\n\nRequirement level: Recommended", - "default": null, - "type": "boolean", - "nullable": true - }, - "graphql.operation.type": { - "description": "The type of the operation being executed. Examples:\n\n* query * subscription * mutation\n\nRequirement level: Recommended", - "default": null, - "type": "boolean", - "nullable": true - } - }, - "additionalProperties": false - }, - "SupergraphEventsConfig": { - "type": "object", - "properties": { - "error": { - "description": "#/definitions/StandardEventConfig_for_SupergraphSelector", - "$ref": "#/definitions/StandardEventConfig_for_SupergraphSelector" - }, - "request": { - "description": "#/definitions/StandardEventConfig_for_SupergraphSelector", - "$ref": "#/definitions/StandardEventConfig_for_SupergraphSelector" - }, - "response": { - "description": "#/definitions/StandardEventConfig_for_SupergraphSelector", - "$ref": "#/definitions/StandardEventConfig_for_SupergraphSelector" - } - }, - "additionalProperties": false - }, - "SupergraphInstrumentsConfig": { - "type": "object", - "properties": { - "cost.actual": { - "description": "#/definitions/DefaultedStandardInstrument_for_extendable_attribute_apollo_router::plugins::telemetry::config_new::attributes::SupergraphAttributes_apollo_router::plugins::telemetry::config_new::selectors::SupergraphSelector", - "$ref": "#/definitions/DefaultedStandardInstrument_for_extendable_attribute_apollo_router::plugins::telemetry::config_new::attributes::SupergraphAttributes_apollo_router::plugins::telemetry::config_new::selectors::SupergraphSelector" - }, - "cost.delta": { - "description": "#/definitions/DefaultedStandardInstrument_for_extendable_attribute_apollo_router::plugins::telemetry::config_new::attributes::SupergraphAttributes_apollo_router::plugins::telemetry::config_new::selectors::SupergraphSelector", - "$ref": "#/definitions/DefaultedStandardInstrument_for_extendable_attribute_apollo_router::plugins::telemetry::config_new::attributes::SupergraphAttributes_apollo_router::plugins::telemetry::config_new::selectors::SupergraphSelector" - }, - "cost.estimated": { - "description": "#/definitions/DefaultedStandardInstrument_for_extendable_attribute_apollo_router::plugins::telemetry::config_new::attributes::SupergraphAttributes_apollo_router::plugins::telemetry::config_new::selectors::SupergraphSelector", - "$ref": "#/definitions/DefaultedStandardInstrument_for_extendable_attribute_apollo_router::plugins::telemetry::config_new::attributes::SupergraphAttributes_apollo_router::plugins::telemetry::config_new::selectors::SupergraphSelector" - } - }, - "additionalProperties": false - }, - "SupergraphRequestConf": { - "description": "What information is passed to a router request/response stage", - "type": "object", - "properties": { - "body": { - "description": "Send the body", - "default": false, - "type": "boolean" - }, - "condition": { - "description": "#/definitions/Condition_for_SupergraphSelector", - "$ref": "#/definitions/Condition_for_SupergraphSelector", - "nullable": true - }, - "context": { - "description": "Send the context", - "default": false, - "type": "boolean" - }, - "headers": { - "description": "Send the headers", - "default": false, - "type": "boolean" - }, - "method": { - "description": "Send the method", - "default": false, - "type": "boolean" - }, - "sdl": { - "description": "Send the SDL", - "default": false, - "type": "boolean" - } - }, - "additionalProperties": false - }, - "SupergraphResponseConf": { - "description": "What information is passed to a router request/response stage", - "type": "object", - "properties": { - "body": { - "description": "Send the body", - "default": false, - "type": "boolean" - }, - "condition": { - "description": "#/definitions/Condition_for_SupergraphSelector", - "$ref": "#/definitions/Condition_for_SupergraphSelector", - "nullable": true - }, - "context": { - "description": "Send the context", - "default": false, - "type": "boolean" - }, - "headers": { - "description": "Send the headers", - "default": false, - "type": "boolean" - }, - "sdl": { - "description": "Send the SDL", - "default": false, - "type": "boolean" - }, - "status_code": { - "description": "Send the HTTP status", - "default": false, - "type": "boolean" - } - }, - "additionalProperties": false - }, - "SupergraphSelector": { - "anyOf": [ - { - "type": "object", - "required": [ - "operation_name" - ], - "properties": { - "default": { - "description": "Optional default value.", - "type": "string", - "nullable": true - }, - "operation_name": { - "description": "#/definitions/OperationName", - "$ref": "#/definitions/OperationName" - } - }, - "additionalProperties": false - }, - { - "type": "object", - "required": [ - "operation_kind" - ], - "properties": { - "operation_kind": { - "description": "#/definitions/OperationKind", - "$ref": "#/definitions/OperationKind" - } - }, - "additionalProperties": false - }, - { - "type": "object", - "required": [ - "query" - ], - "properties": { - "default": { - "description": "Optional default value.", - "type": "string", - "nullable": true - }, - "query": { - "description": "#/definitions/Query", - "$ref": "#/definitions/Query" - } - }, - "additionalProperties": false - }, - { - "type": "object", - "required": [ - "query_variable" - ], - "properties": { - "default": { - "description": "#/definitions/AttributeValue", - "$ref": "#/definitions/AttributeValue", - "nullable": true - }, - "query_variable": { - "description": "The name of a graphql query variable.", - "type": "string" - } - }, - "additionalProperties": false - }, - { - "type": "object", - "required": [ - "request_header" - ], - "properties": { - "default": { - "description": "Optional default value.", - "type": "string", - "nullable": true - }, - "request_header": { - "description": "The name of the request header.", - "type": "string" - } - }, - "additionalProperties": false - }, - { - "type": "object", - "required": [ - "response_header" - ], - "properties": { - "default": { - "description": "Optional default value.", - "type": "string", - "nullable": true - }, - "response_header": { - "description": "The name of the response header.", - "type": "string" - } - }, - "additionalProperties": false - }, - { - "description": "A status from the response", - "type": "object", - "required": [ - "response_status" - ], - "properties": { - "response_status": { - "description": "#/definitions/ResponseStatus", - "$ref": "#/definitions/ResponseStatus" - } - }, - "additionalProperties": false - }, - { - "type": "object", - "required": [ - "request_context" - ], - "properties": { - "default": { - "description": "#/definitions/AttributeValue", - "$ref": "#/definitions/AttributeValue", - "nullable": true - }, - "request_context": { - "description": "The request context key.", - "type": "string" - } - }, - "additionalProperties": false - }, - { - "type": "object", - "required": [ - "response_context" - ], - "properties": { - "default": { - "description": "#/definitions/AttributeValue", - "$ref": "#/definitions/AttributeValue", - "nullable": true - }, - "response_context": { - "description": "The response context key.", - "type": "string" - } - }, - "additionalProperties": false - }, - { - "type": "object", - "required": [ - "response_data" - ], - "properties": { - "default": { - "description": "#/definitions/AttributeValue", - "$ref": "#/definitions/AttributeValue", - "nullable": true - }, - "response_data": { - "description": "The supergraph response body json path of the chunks.", - "type": "string" - } - }, - "additionalProperties": false - }, - { - "type": "object", - "required": [ - "response_errors" - ], - "properties": { - "default": { - "description": "#/definitions/AttributeValue", - "$ref": "#/definitions/AttributeValue", - "nullable": true - }, - "response_errors": { - "description": "The supergraph response body json path of the chunks.", - "type": "string" - } - }, - "additionalProperties": false - }, - { - "type": "object", - "required": [ - "baggage" - ], - "properties": { - "baggage": { - "description": "The name of the baggage item.", - "type": "string" - }, - "default": { - "description": "#/definitions/AttributeValue", - "$ref": "#/definitions/AttributeValue", - "nullable": true - } - }, - "additionalProperties": false - }, - { - "type": "object", - "required": [ - "env" - ], - "properties": { - "default": { - "description": "Optional default value.", - "type": "string", - "nullable": true - }, - "env": { - "description": "The name of the environment variable", - "type": "string" - } - }, - "additionalProperties": false - }, - { - "description": "Deprecated, should not be used anymore, use static field instead", - "type": "string" - }, - { - "type": "object", - "required": [ - "static" - ], - "properties": { - "static": { - "description": "#/definitions/AttributeValue", - "$ref": "#/definitions/AttributeValue" - } - }, - "additionalProperties": false - }, - { - "type": "object", - "required": [ - "on_graphql_error" - ], - "properties": { - "on_graphql_error": { - "description": "Boolean set to true if the response body contains graphql error", - "type": "boolean" - } - }, - "additionalProperties": false - }, - { - "type": "object", - "required": [ - "error" - ], - "properties": { - "error": { - "description": "#/definitions/ErrorRepr", - "$ref": "#/definitions/ErrorRepr" - } - }, - "additionalProperties": false - }, - { - "description": "Cost attributes", - "type": "object", - "required": [ - "cost" - ], - "properties": { - "cost": { - "description": "#/definitions/CostValue", - "$ref": "#/definitions/CostValue" - } - }, - "additionalProperties": false - }, - { - "description": "Boolean returning true if it's the primary response and not events like subscription events or deferred responses", - "type": "object", - "required": [ - "is_primary_response" - ], - "properties": { - "is_primary_response": { - "description": "Boolean returning true if it's the primary response and not events like subscription events or deferred responses", - "type": "boolean" - } - }, - "additionalProperties": false - } - ] - }, - "SupergraphSpans": { - "type": "object", - "properties": { - "attributes": { - "description": "#/definitions/extendable_attribute_apollo_router::plugins::telemetry::config_new::attributes::SupergraphAttributes_apollo_router::plugins::telemetry::config_new::conditional::Conditional", - "$ref": "#/definitions/extendable_attribute_apollo_router::plugins::telemetry::config_new::attributes::SupergraphAttributes_apollo_router::plugins::telemetry::config_new::conditional::Conditional" - } - }, - "additionalProperties": false - }, - "SupergraphStage": { - "type": "object", - "properties": { - "request": { - "description": "#/definitions/SupergraphRequestConf", - "$ref": "#/definitions/SupergraphRequestConf" - }, - "response": { - "description": "#/definitions/SupergraphResponseConf", - "$ref": "#/definitions/SupergraphResponseConf" - } - } - }, - "SupergraphValue": { - "anyOf": [ - { - "description": "#/definitions/Standard", - "$ref": "#/definitions/Standard" - }, - { - "description": "#/definitions/Event_for_SupergraphSelector", - "$ref": "#/definitions/Event_for_SupergraphSelector" - }, - { - "description": "#/definitions/SupergraphSelector", - "$ref": "#/definitions/SupergraphSelector" - } - ] - }, - "Temporality": { - "oneOf": [ - { - "description": "Export cumulative metrics.", - "type": "string", - "enum": [ - "cumulative" - ] - }, - { - "description": "Export delta metrics. `Delta` should be used when exporting to DataDog Agent.", - "type": "string", - "enum": [ - "delta" - ] - } - ] - }, - "Tls": { - "description": "TLS related configuration options.", - "type": "object", - "properties": { - "subgraph": { - "description": "#/definitions/SubgraphConfiguration_for_TlsClient", - "$ref": "#/definitions/SubgraphConfiguration_for_TlsClient" - }, - "supergraph": { - "description": "#/definitions/TlsSupergraph", - "$ref": "#/definitions/TlsSupergraph", - "nullable": true - } - }, - "additionalProperties": false - }, - "TlsClient": { - "description": "Configuration options pertaining to the subgraph server component.", - "type": "object", - "properties": { - "certificate_authorities": { - "description": "list of certificate authorities in PEM format", - "default": null, - "type": "string", - "nullable": true - }, - "client_authentication": { - "description": "#/definitions/TlsClientAuth", - "$ref": "#/definitions/TlsClientAuth", - "nullable": true - } - }, - "additionalProperties": false - }, - "TlsClientAuth": { - "description": "TLS client authentication", - "type": "object", - "required": [ - "certificate_chain", - "key" - ], - "properties": { - "certificate_chain": { - "description": "list of certificates in PEM format", - "writeOnly": true, - "type": "string" - }, - "key": { - "description": "key in PEM format", - "writeOnly": true, - "type": "string" - } - }, - "additionalProperties": false - }, - "TlsSupergraph": { - "description": "Configuration options pertaining to the supergraph server component.", - "type": "object", - "required": [ - "certificate", - "certificate_chain", - "key" - ], - "properties": { - "certificate": { - "description": "server certificate in PEM format", - "writeOnly": true, - "type": "string" - }, - "certificate_chain": { - "description": "list of certificate authorities in PEM format", - "writeOnly": true, - "type": "string" - }, - "key": { - "description": "server key in PEM format", - "writeOnly": true, - "type": "string" - } - }, - "additionalProperties": false - }, - "TraceIdFormat": { - "oneOf": [ - { - "description": "Format the Trace ID as a hexadecimal number\n\n(e.g. Trace ID 16 -> 00000000000000000000000000000010)", - "type": "string", - "enum": [ - "hexadecimal" - ] - }, - { - "description": "Format the Trace ID as a hexadecimal number\n\n(e.g. Trace ID 16 -> 00000000000000000000000000000010)", - "type": "string", - "enum": [ - "open_telemetry" - ] - }, - { - "description": "Format the Trace ID as a decimal number\n\n(e.g. Trace ID 16 -> 16)", - "type": "string", - "enum": [ - "decimal" - ] - }, - { - "description": "Datadog", - "type": "string", - "enum": [ - "datadog" - ] - }, - { - "description": "UUID format with dashes (eg. 67e55044-10b1-426f-9247-bb680e5fe0c8)", - "type": "string", - "enum": [ - "uuid" - ] - } - ] - }, - "Tracing": { - "description": "Tracing configuration", - "type": "object", - "properties": { - "common": { - "description": "#/definitions/TracingCommon", - "$ref": "#/definitions/TracingCommon" - }, - "datadog": { - "description": "#/definitions/Config14", - "$ref": "#/definitions/Config14" - }, - "experimental_response_trace_id": { - "description": "#/definitions/ExposeTraceId", - "$ref": "#/definitions/ExposeTraceId" - }, - "jaeger": { - "description": "#/definitions/Config12", - "$ref": "#/definitions/Config12" - }, - "otlp": { - "description": "#/definitions/Config10", - "$ref": "#/definitions/Config10" - }, - "propagation": { - "description": "#/definitions/Propagation", - "$ref": "#/definitions/Propagation" - }, - "zipkin": { - "description": "#/definitions/Config13", - "$ref": "#/definitions/Config13" - } - }, - "additionalProperties": false - }, - "TracingCommon": { - "type": "object", - "properties": { - "max_attributes_per_event": { - "description": "The maximum attributes per event before discarding", - "default": 128, - "type": "integer", - "format": "uint32", - "minimum": 0.0 - }, - "max_attributes_per_link": { - "description": "The maximum attributes per link before discarding", - "default": 128, - "type": "integer", - "format": "uint32", - "minimum": 0.0 - }, - "max_attributes_per_span": { - "description": "The maximum attributes per span before discarding", - "default": 128, - "type": "integer", - "format": "uint32", - "minimum": 0.0 - }, - "max_events_per_span": { - "description": "The maximum events per span before discarding", - "default": 128, - "type": "integer", - "format": "uint32", - "minimum": 0.0 - }, - "max_links_per_span": { - "description": "The maximum links per span before discarding", - "default": 128, - "type": "integer", - "format": "uint32", - "minimum": 0.0 - }, - "parent_based_sampler": { - "description": "Whether to use parent based sampling", - "default": true, - "type": "boolean" - }, - "resource": { - "description": "The Open Telemetry resource", - "default": {}, - "type": "object", - "additionalProperties": { - "description": "#/definitions/AttributeValue", - "$ref": "#/definitions/AttributeValue" - } - }, - "sampler": { - "description": "#/definitions/SamplerOption", - "$ref": "#/definitions/SamplerOption" - }, - "service_name": { - "description": "The trace service name", - "default": null, - "type": "string", - "nullable": true - }, - "service_namespace": { - "description": "The trace service namespace", - "default": null, - "type": "string", - "nullable": true - } - }, - "additionalProperties": false - }, - "Ttl": { - "description": "Per subgraph configuration for entity caching", - "type": "string" - }, - "TypeName": { - "oneOf": [ - { - "description": "The GraphQL type name", - "type": "string", - "enum": [ - "string" - ] - } - ] - }, - "UriEndpoint": { - "type": "string" - }, - "WebSocketConfiguration": { - "description": "WebSocket configuration for a specific subgraph", - "type": "object", - "properties": { - "heartbeat_interval": { - "description": "#/definitions/HeartbeatInterval", - "$ref": "#/definitions/HeartbeatInterval" - }, - "path": { - "description": "Path on which WebSockets are listening", - "default": null, - "type": "string", - "nullable": true - }, - "protocol": { - "description": "#/definitions/WebSocketProtocol", - "$ref": "#/definitions/WebSocketProtocol" - } - }, - "additionalProperties": false - }, - "WebSocketProtocol": { - "type": "string", - "enum": [ - "graphql_ws", - "graphql_transport_ws" - ] - }, - "conditional_attribute_apollo_router::plugins::telemetry::config_new::selectors::RouterSelector": { - "anyOf": [ - { - "description": "#/definitions/RouterSelector", - "$ref": "#/definitions/RouterSelector" - }, - { - "properties": { - "condition": { - "description": "#/definitions/Condition_for_RouterSelector", - "$ref": "#/definitions/Condition_for_RouterSelector" - } - } - } - ] - }, - "conditional_attribute_apollo_router::plugins::telemetry::config_new::selectors::SubgraphSelector": { - "anyOf": [ - { - "description": "#/definitions/SubgraphSelector", - "$ref": "#/definitions/SubgraphSelector" - }, - { - "properties": { - "condition": { - "description": "#/definitions/Condition_for_SubgraphSelector", - "$ref": "#/definitions/Condition_for_SubgraphSelector" - } - } - } - ] - }, - "conditional_attribute_apollo_router::plugins::telemetry::config_new::selectors::SupergraphSelector": { - "anyOf": [ - { - "description": "#/definitions/SupergraphSelector", - "$ref": "#/definitions/SupergraphSelector" - }, - { - "properties": { - "condition": { - "description": "#/definitions/Condition_for_SupergraphSelector", - "$ref": "#/definitions/Condition_for_SupergraphSelector" - } - } - } - ] - }, - "extendable_attribute_apollo_router::plugins::telemetry::config_new::attributes::RouterAttributes_apollo_router::plugins::telemetry::config_new::conditional::Conditional": { - "description": "Common attributes for http server and client. See https://opentelemetry.io/docs/specs/semconv/http/http-spans/#common-attributes", - "type": "object", - "properties": { - "baggage": { - "description": "All key values from trace baggage.", - "default": null, - "type": "boolean", - "nullable": true - }, - "dd.trace_id": { - "description": "The datadog trace ID. This can be output in logs and used to correlate traces in Datadog.", - "default": null, - "type": "boolean", - "nullable": true - }, - "error.type": { - "description": "Describes a class of error the operation ended with. Examples:\n\n* timeout * name_resolution_error * 500\n\nRequirement level: Conditionally Required: If request has ended with an error.", - "default": null, - "type": "boolean", - "nullable": true - }, - "http.request.body.size": { - "description": "The size of the request payload body in bytes. This is the number of bytes transferred excluding headers and is often, but not always, present as the Content-Length header. For requests using transport encoding, this should be the compressed size. Examples:\n\n* 3495\n\nRequirement level: Recommended", - "default": null, - "type": "boolean", - "nullable": true - }, - "http.request.method": { - "description": "HTTP request method. Examples:\n\n* GET * POST * HEAD\n\nRequirement level: Required", - "default": null, - "type": "boolean", - "nullable": true - }, - "http.response.body.size": { - "description": "The size of the response payload body in bytes. This is the number of bytes transferred excluding headers and is often, but not always, present as the Content-Length header. For requests using transport encoding, this should be the compressed size. Examples:\n\n* 3495\n\nRequirement level: Recommended", - "default": null, - "type": "boolean", - "nullable": true - }, - "http.response.status_code": { - "description": "HTTP response status code. Examples:\n\n* 200\n\nRequirement level: Conditionally Required: If and only if one was received/sent.", - "default": null, - "type": "boolean", - "nullable": true - }, - "http.route": { - "description": "The matched route (path template in the format used by the respective server framework). Examples:\n\n* /graphql\n\nRequirement level: Conditionally Required: If and only if it’s available", - "default": null, - "type": "boolean", - "nullable": true - }, - "network.local.address": { - "description": "Local socket address. Useful in case of a multi-IP host. Examples:\n\n* 10.1.2.80 * /tmp/my.sock\n\nRequirement level: Opt-In", - "default": null, - "type": "boolean", - "nullable": true - }, - "network.local.port": { - "description": "Local socket port. Useful in case of a multi-port host. Examples:\n\n* 65123\n\nRequirement level: Opt-In", - "default": null, - "type": "boolean", - "nullable": true - }, - "network.peer.address": { - "description": "Peer address of the network connection - IP address or Unix domain socket name. Examples:\n\n* 10.1.2.80 * /tmp/my.sock\n\nRequirement level: Recommended", - "default": null, - "type": "boolean", - "nullable": true - }, - "network.peer.port": { - "description": "Peer port number of the network connection. Examples:\n\n* 65123\n\nRequirement level: Recommended", - "default": null, - "type": "boolean", - "nullable": true - }, - "network.protocol.name": { - "description": "OSI application layer or non-OSI equivalent. Examples:\n\n* http * spdy\n\nRequirement level: Recommended: if not default (http).", - "default": null, - "type": "boolean", - "nullable": true - }, - "network.protocol.version": { - "description": "Version of the protocol specified in network.protocol.name. Examples:\n\n* 1.0 * 1.1 * 2 * 3\n\nRequirement level: Recommended", - "default": null, - "type": "boolean", - "nullable": true - }, - "network.transport": { - "description": "OSI transport layer. Examples:\n\n* tcp * udp\n\nRequirement level: Conditionally Required", - "default": null, - "type": "boolean", - "nullable": true - }, - "network.type": { - "description": "OSI network layer or non-OSI equivalent. Examples:\n\n* ipv4 * ipv6\n\nRequirement level: Recommended", - "default": null, - "type": "boolean", - "nullable": true - }, - "server.address": { - "description": "Name of the local HTTP server that received the request. Examples:\n\n* example.com * 10.1.2.80 * /tmp/my.sock\n\nRequirement level: Recommended", - "default": null, - "type": "boolean", - "nullable": true - }, - "server.port": { - "description": "Port of the local HTTP server that received the request. Examples:\n\n* 80 * 8080 * 443\n\nRequirement level: Recommended", - "default": null, - "type": "boolean", - "nullable": true - }, - "trace_id": { - "description": "The OpenTelemetry trace ID. This can be output in logs.", - "default": null, - "type": "boolean", - "nullable": true - }, - "url.path": { - "description": "The URI path component Examples:\n\n* /search\n\nRequirement level: Required", - "default": null, - "type": "boolean", - "nullable": true - }, - "url.query": { - "description": "The URI query component Examples:\n\n* q=OpenTelemetry\n\nRequirement level: Conditionally Required: If and only if one was received/sent.", - "default": null, - "type": "boolean", - "nullable": true - }, - "url.scheme": { - "description": "The URI scheme component identifying the used protocol. Examples:\n\n* http * https\n\nRequirement level: Required", - "default": null, - "type": "boolean", - "nullable": true - }, - "user_agent.original": { - "description": "Value of the HTTP User-Agent header sent by the client. Examples:\n\n* CERN-LineMode/2.15 * libwww/2.17b3\n\nRequirement level: Recommended", - "default": null, - "type": "boolean", - "nullable": true - } - }, - "additionalProperties": { - "description": "#/definitions/conditional_attribute_apollo_router::plugins::telemetry::config_new::selectors::RouterSelector", - "$ref": "#/definitions/conditional_attribute_apollo_router::plugins::telemetry::config_new::selectors::RouterSelector" - } - }, - "extendable_attribute_apollo_router::plugins::telemetry::config_new::attributes::RouterAttributes_apollo_router::plugins::telemetry::config_new::selectors::RouterSelector": { - "description": "Common attributes for http server and client. See https://opentelemetry.io/docs/specs/semconv/http/http-spans/#common-attributes", - "type": "object", - "properties": { - "baggage": { - "description": "All key values from trace baggage.", - "default": null, - "type": "boolean", - "nullable": true - }, - "dd.trace_id": { - "description": "The datadog trace ID. This can be output in logs and used to correlate traces in Datadog.", - "default": null, - "type": "boolean", - "nullable": true - }, - "error.type": { - "description": "Describes a class of error the operation ended with. Examples:\n\n* timeout * name_resolution_error * 500\n\nRequirement level: Conditionally Required: If request has ended with an error.", - "default": null, - "type": "boolean", - "nullable": true - }, - "http.request.body.size": { - "description": "The size of the request payload body in bytes. This is the number of bytes transferred excluding headers and is often, but not always, present as the Content-Length header. For requests using transport encoding, this should be the compressed size. Examples:\n\n* 3495\n\nRequirement level: Recommended", - "default": null, - "type": "boolean", - "nullable": true - }, - "http.request.method": { - "description": "HTTP request method. Examples:\n\n* GET * POST * HEAD\n\nRequirement level: Required", - "default": null, - "type": "boolean", - "nullable": true - }, - "http.response.body.size": { - "description": "The size of the response payload body in bytes. This is the number of bytes transferred excluding headers and is often, but not always, present as the Content-Length header. For requests using transport encoding, this should be the compressed size. Examples:\n\n* 3495\n\nRequirement level: Recommended", - "default": null, - "type": "boolean", - "nullable": true - }, - "http.response.status_code": { - "description": "HTTP response status code. Examples:\n\n* 200\n\nRequirement level: Conditionally Required: If and only if one was received/sent.", - "default": null, - "type": "boolean", - "nullable": true - }, - "http.route": { - "description": "The matched route (path template in the format used by the respective server framework). Examples:\n\n* /graphql\n\nRequirement level: Conditionally Required: If and only if it’s available", - "default": null, - "type": "boolean", - "nullable": true - }, - "network.local.address": { - "description": "Local socket address. Useful in case of a multi-IP host. Examples:\n\n* 10.1.2.80 * /tmp/my.sock\n\nRequirement level: Opt-In", - "default": null, - "type": "boolean", - "nullable": true - }, - "network.local.port": { - "description": "Local socket port. Useful in case of a multi-port host. Examples:\n\n* 65123\n\nRequirement level: Opt-In", - "default": null, - "type": "boolean", - "nullable": true - }, - "network.peer.address": { - "description": "Peer address of the network connection - IP address or Unix domain socket name. Examples:\n\n* 10.1.2.80 * /tmp/my.sock\n\nRequirement level: Recommended", - "default": null, - "type": "boolean", - "nullable": true - }, - "network.peer.port": { - "description": "Peer port number of the network connection. Examples:\n\n* 65123\n\nRequirement level: Recommended", - "default": null, - "type": "boolean", - "nullable": true - }, - "network.protocol.name": { - "description": "OSI application layer or non-OSI equivalent. Examples:\n\n* http * spdy\n\nRequirement level: Recommended: if not default (http).", - "default": null, - "type": "boolean", - "nullable": true - }, - "network.protocol.version": { - "description": "Version of the protocol specified in network.protocol.name. Examples:\n\n* 1.0 * 1.1 * 2 * 3\n\nRequirement level: Recommended", - "default": null, - "type": "boolean", - "nullable": true - }, - "network.transport": { - "description": "OSI transport layer. Examples:\n\n* tcp * udp\n\nRequirement level: Conditionally Required", - "default": null, - "type": "boolean", - "nullable": true - }, - "network.type": { - "description": "OSI network layer or non-OSI equivalent. Examples:\n\n* ipv4 * ipv6\n\nRequirement level: Recommended", - "default": null, - "type": "boolean", - "nullable": true - }, - "server.address": { - "description": "Name of the local HTTP server that received the request. Examples:\n\n* example.com * 10.1.2.80 * /tmp/my.sock\n\nRequirement level: Recommended", - "default": null, - "type": "boolean", - "nullable": true - }, - "server.port": { - "description": "Port of the local HTTP server that received the request. Examples:\n\n* 80 * 8080 * 443\n\nRequirement level: Recommended", - "default": null, - "type": "boolean", - "nullable": true - }, - "trace_id": { - "description": "The OpenTelemetry trace ID. This can be output in logs.", - "default": null, - "type": "boolean", - "nullable": true - }, - "url.path": { - "description": "The URI path component Examples:\n\n* /search\n\nRequirement level: Required", - "default": null, - "type": "boolean", - "nullable": true - }, - "url.query": { - "description": "The URI query component Examples:\n\n* q=OpenTelemetry\n\nRequirement level: Conditionally Required: If and only if one was received/sent.", - "default": null, - "type": "boolean", - "nullable": true - }, - "url.scheme": { - "description": "The URI scheme component identifying the used protocol. Examples:\n\n* http * https\n\nRequirement level: Required", - "default": null, - "type": "boolean", - "nullable": true - }, - "user_agent.original": { - "description": "Value of the HTTP User-Agent header sent by the client. Examples:\n\n* CERN-LineMode/2.15 * libwww/2.17b3\n\nRequirement level: Recommended", - "default": null, - "type": "boolean", - "nullable": true - } - }, - "additionalProperties": { - "description": "#/definitions/RouterSelector", - "$ref": "#/definitions/RouterSelector" - } - }, - "extendable_attribute_apollo_router::plugins::telemetry::config_new::attributes::SubgraphAttributes_apollo_router::plugins::telemetry::config_new::conditional::Conditional": { - "type": "object", - "properties": { - "subgraph.graphql.document": { - "description": "The GraphQL document being executed. Examples:\n\n* `query findBookById { bookById(id: ?) { name } }`\n\nRequirement level: Recommended", - "default": null, - "type": "boolean", - "nullable": true - }, - "subgraph.graphql.operation.name": { - "description": "The name of the operation being executed. Examples:\n\n* findBookById\n\nRequirement level: Recommended", - "default": null, - "type": "boolean", - "nullable": true - }, - "subgraph.graphql.operation.type": { - "description": "The type of the operation being executed. Examples:\n\n* query * subscription * mutation\n\nRequirement level: Recommended", - "default": null, - "type": "boolean", - "nullable": true - }, - "subgraph.name": { - "description": "The name of the subgraph Examples:\n\n* products\n\nRequirement level: Required", - "default": null, - "type": "boolean", - "nullable": true - } - }, - "additionalProperties": { - "description": "#/definitions/conditional_attribute_apollo_router::plugins::telemetry::config_new::selectors::SubgraphSelector", - "$ref": "#/definitions/conditional_attribute_apollo_router::plugins::telemetry::config_new::selectors::SubgraphSelector" - } - }, - "extendable_attribute_apollo_router::plugins::telemetry::config_new::attributes::SubgraphAttributes_apollo_router::plugins::telemetry::config_new::selectors::SubgraphSelector": { - "type": "object", - "properties": { - "subgraph.graphql.document": { - "description": "The GraphQL document being executed. Examples:\n\n* `query findBookById { bookById(id: ?) { name } }`\n\nRequirement level: Recommended", - "default": null, - "type": "boolean", - "nullable": true - }, - "subgraph.graphql.operation.name": { - "description": "The name of the operation being executed. Examples:\n\n* findBookById\n\nRequirement level: Recommended", - "default": null, - "type": "boolean", - "nullable": true - }, - "subgraph.graphql.operation.type": { - "description": "The type of the operation being executed. Examples:\n\n* query * subscription * mutation\n\nRequirement level: Recommended", - "default": null, - "type": "boolean", - "nullable": true - }, - "subgraph.name": { - "description": "The name of the subgraph Examples:\n\n* products\n\nRequirement level: Required", - "default": null, - "type": "boolean", - "nullable": true - } - }, - "additionalProperties": { - "description": "#/definitions/SubgraphSelector", - "$ref": "#/definitions/SubgraphSelector" - } - }, - "extendable_attribute_apollo_router::plugins::telemetry::config_new::attributes::SupergraphAttributes_apollo_router::plugins::telemetry::config_new::conditional::Conditional": { - "description": "Attributes for Cost", - "type": "object", - "properties": { - "cost.actual": { - "description": "The actual cost of the operation using the currently configured cost model", - "default": null, - "type": "boolean", - "nullable": true - }, - "cost.delta": { - "description": "The delta (estimated - actual) cost of the operation using the currently configured cost model", - "default": null, - "type": "boolean", - "nullable": true - }, - "cost.estimated": { - "description": "The estimated cost of the operation using the currently configured cost model", - "default": null, - "type": "boolean", - "nullable": true - }, - "cost.result": { - "description": "The cost result, this is an error code returned by the cost calculation or COST_OK", - "default": null, - "type": "boolean", - "nullable": true - }, - "graphql.document": { - "description": "The GraphQL document being executed. Examples:\n\n* `query findBookById { bookById(id: ?) { name } }`\n\nRequirement level: Recommended", - "default": null, - "type": "boolean", - "nullable": true - }, - "graphql.operation.name": { - "description": "The name of the operation being executed. Examples:\n\n* findBookById\n\nRequirement level: Recommended", - "default": null, - "type": "boolean", - "nullable": true - }, - "graphql.operation.type": { - "description": "The type of the operation being executed. Examples:\n\n* query * subscription * mutation\n\nRequirement level: Recommended", - "default": null, - "type": "boolean", - "nullable": true - } - }, - "additionalProperties": { - "description": "#/definitions/conditional_attribute_apollo_router::plugins::telemetry::config_new::selectors::SupergraphSelector", - "$ref": "#/definitions/conditional_attribute_apollo_router::plugins::telemetry::config_new::selectors::SupergraphSelector" - } - }, - "extendable_attribute_apollo_router::plugins::telemetry::config_new::attributes::SupergraphAttributes_apollo_router::plugins::telemetry::config_new::selectors::SupergraphSelector": { - "description": "Attributes for Cost", - "type": "object", - "properties": { - "cost.actual": { - "description": "The actual cost of the operation using the currently configured cost model", - "default": null, - "type": "boolean", - "nullable": true - }, - "cost.delta": { - "description": "The delta (estimated - actual) cost of the operation using the currently configured cost model", - "default": null, - "type": "boolean", - "nullable": true - }, - "cost.estimated": { - "description": "The estimated cost of the operation using the currently configured cost model", - "default": null, - "type": "boolean", - "nullable": true - }, - "cost.result": { - "description": "The cost result, this is an error code returned by the cost calculation or COST_OK", - "default": null, - "type": "boolean", - "nullable": true - }, - "graphql.document": { - "description": "The GraphQL document being executed. Examples:\n\n* `query findBookById { bookById(id: ?) { name } }`\n\nRequirement level: Recommended", - "default": null, - "type": "boolean", - "nullable": true - }, - "graphql.operation.name": { - "description": "The name of the operation being executed. Examples:\n\n* findBookById\n\nRequirement level: Recommended", - "default": null, - "type": "boolean", - "nullable": true - }, - "graphql.operation.type": { - "description": "The type of the operation being executed. Examples:\n\n* query * subscription * mutation\n\nRequirement level: Recommended", - "default": null, - "type": "boolean", - "nullable": true - } - }, - "additionalProperties": { - "description": "#/definitions/SupergraphSelector", - "$ref": "#/definitions/SupergraphSelector" - } - }, - "extendable_attribute_apollo_router::plugins::telemetry::config_new::cache::CacheInstrumentsConfig_apollo_router::plugins::telemetry::config_new::instruments::Instrument": { - "type": "object", - "properties": { - "apollo.router.operations.entity.cache": { - "description": "#/definitions/DefaultedStandardInstrument_for_extendable_attribute_apollo_router::plugins::telemetry::config_new::cache::attributes::CacheAttributes_apollo_router::plugins::telemetry::config_new::selectors::SubgraphSelector", - "$ref": "#/definitions/DefaultedStandardInstrument_for_extendable_attribute_apollo_router::plugins::telemetry::config_new::cache::attributes::CacheAttributes_apollo_router::plugins::telemetry::config_new::selectors::SubgraphSelector" - } - }, - "additionalProperties": { - "description": "#/definitions/Instrument_for_CacheAttributes_and_SubgraphSelector_and_SubgraphValue", - "$ref": "#/definitions/Instrument_for_CacheAttributes_and_SubgraphSelector_and_SubgraphValue" - } - }, - "extendable_attribute_apollo_router::plugins::telemetry::config_new::cache::attributes::CacheAttributes_apollo_router::plugins::telemetry::config_new::selectors::SubgraphSelector": { - "type": "object", - "properties": { - "entity.type": { - "description": "Entity type", - "default": null, - "type": "boolean", - "nullable": true - } - }, - "additionalProperties": { - "description": "#/definitions/SubgraphSelector", - "$ref": "#/definitions/SubgraphSelector" - } - }, - "extendable_attribute_apollo_router::plugins::telemetry::config_new::events::RouterEventsConfig_apollo_router::plugins::telemetry::config_new::events::Event": { - "type": "object", - "properties": { - "error": { - "description": "#/definitions/StandardEventConfig_for_RouterSelector", - "$ref": "#/definitions/StandardEventConfig_for_RouterSelector" - }, - "request": { - "description": "#/definitions/StandardEventConfig_for_RouterSelector", - "$ref": "#/definitions/StandardEventConfig_for_RouterSelector" - }, - "response": { - "description": "#/definitions/StandardEventConfig_for_RouterSelector", - "$ref": "#/definitions/StandardEventConfig_for_RouterSelector" - } - }, - "additionalProperties": { - "description": "#/definitions/Event_for_RouterAttributes_and_RouterSelector", - "$ref": "#/definitions/Event_for_RouterAttributes_and_RouterSelector" - } - }, - "extendable_attribute_apollo_router::plugins::telemetry::config_new::events::SubgraphEventsConfig_apollo_router::plugins::telemetry::config_new::events::Event": { - "type": "object", - "properties": { - "error": { - "description": "#/definitions/StandardEventConfig_for_SubgraphSelector", - "$ref": "#/definitions/StandardEventConfig_for_SubgraphSelector" - }, - "request": { - "description": "#/definitions/StandardEventConfig_for_SubgraphSelector", - "$ref": "#/definitions/StandardEventConfig_for_SubgraphSelector" - }, - "response": { - "description": "#/definitions/StandardEventConfig_for_SubgraphSelector", - "$ref": "#/definitions/StandardEventConfig_for_SubgraphSelector" - } - }, - "additionalProperties": { - "description": "#/definitions/Event_for_SubgraphAttributes_and_SubgraphSelector", - "$ref": "#/definitions/Event_for_SubgraphAttributes_and_SubgraphSelector" - } - }, - "extendable_attribute_apollo_router::plugins::telemetry::config_new::events::SupergraphEventsConfig_apollo_router::plugins::telemetry::config_new::events::Event": { - "type": "object", - "properties": { - "error": { - "description": "#/definitions/StandardEventConfig_for_SupergraphSelector", - "$ref": "#/definitions/StandardEventConfig_for_SupergraphSelector" - }, - "request": { - "description": "#/definitions/StandardEventConfig_for_SupergraphSelector", - "$ref": "#/definitions/StandardEventConfig_for_SupergraphSelector" - }, - "response": { - "description": "#/definitions/StandardEventConfig_for_SupergraphSelector", - "$ref": "#/definitions/StandardEventConfig_for_SupergraphSelector" - } - }, - "additionalProperties": { - "description": "#/definitions/Event_for_SupergraphAttributes_and_SupergraphSelector", - "$ref": "#/definitions/Event_for_SupergraphAttributes_and_SupergraphSelector" - } - }, - "extendable_attribute_apollo_router::plugins::telemetry::config_new::graphql::GraphQLInstrumentsConfig_apollo_router::plugins::telemetry::config_new::instruments::Instrument": { - "type": "object", - "properties": { - "field.execution": { - "description": "#/definitions/DefaultedStandardInstrument_for_extendable_attribute_apollo_router::plugins::telemetry::config_new::graphql::attributes::GraphQLAttributes_apollo_router::plugins::telemetry::config_new::graphql::selectors::GraphQLSelector", - "$ref": "#/definitions/DefaultedStandardInstrument_for_extendable_attribute_apollo_router::plugins::telemetry::config_new::graphql::attributes::GraphQLAttributes_apollo_router::plugins::telemetry::config_new::graphql::selectors::GraphQLSelector" - }, - "list.length": { - "description": "#/definitions/DefaultedStandardInstrument_for_extendable_attribute_apollo_router::plugins::telemetry::config_new::graphql::attributes::GraphQLAttributes_apollo_router::plugins::telemetry::config_new::graphql::selectors::GraphQLSelector", - "$ref": "#/definitions/DefaultedStandardInstrument_for_extendable_attribute_apollo_router::plugins::telemetry::config_new::graphql::attributes::GraphQLAttributes_apollo_router::plugins::telemetry::config_new::graphql::selectors::GraphQLSelector" - } - }, - "additionalProperties": { - "description": "#/definitions/Instrument_for_GraphQLAttributes_and_GraphQLSelector_and_GraphQLValue", - "$ref": "#/definitions/Instrument_for_GraphQLAttributes_and_GraphQLSelector_and_GraphQLValue" - } - }, - "extendable_attribute_apollo_router::plugins::telemetry::config_new::graphql::attributes::GraphQLAttributes_apollo_router::plugins::telemetry::config_new::graphql::selectors::GraphQLSelector": { - "type": "object", - "properties": { - "graphql.field.name": { - "description": "The GraphQL field name", - "default": null, - "type": "boolean", - "nullable": true - }, - "graphql.field.type": { - "description": "The GraphQL field type", - "default": null, - "type": "boolean", - "nullable": true - }, - "graphql.list.length": { - "description": "If the field is a list, the length of the list", - "default": null, - "type": "boolean", - "nullable": true - }, - "graphql.operation.name": { - "description": "The GraphQL operation name", - "default": null, - "type": "boolean", - "nullable": true - }, - "graphql.type.name": { - "description": "The GraphQL type name", - "default": null, - "type": "boolean", - "nullable": true - } - }, - "additionalProperties": { - "description": "#/definitions/GraphQLSelector", - "$ref": "#/definitions/GraphQLSelector" - } - }, - "extendable_attribute_apollo_router::plugins::telemetry::config_new::instruments::RouterInstrumentsConfig_apollo_router::plugins::telemetry::config_new::instruments::Instrument": { - "type": "object", - "properties": { - "http.server.active_requests": { - "description": "#/definitions/DefaultedStandardInstrument_for_ActiveRequestsAttributes", - "$ref": "#/definitions/DefaultedStandardInstrument_for_ActiveRequestsAttributes" - }, - "http.server.request.body.size": { - "description": "#/definitions/DefaultedStandardInstrument_for_extendable_attribute_apollo_router::plugins::telemetry::config_new::attributes::RouterAttributes_apollo_router::plugins::telemetry::config_new::selectors::RouterSelector", - "$ref": "#/definitions/DefaultedStandardInstrument_for_extendable_attribute_apollo_router::plugins::telemetry::config_new::attributes::RouterAttributes_apollo_router::plugins::telemetry::config_new::selectors::RouterSelector" - }, - "http.server.request.duration": { - "description": "#/definitions/DefaultedStandardInstrument_for_extendable_attribute_apollo_router::plugins::telemetry::config_new::attributes::RouterAttributes_apollo_router::plugins::telemetry::config_new::selectors::RouterSelector", - "$ref": "#/definitions/DefaultedStandardInstrument_for_extendable_attribute_apollo_router::plugins::telemetry::config_new::attributes::RouterAttributes_apollo_router::plugins::telemetry::config_new::selectors::RouterSelector" - }, - "http.server.response.body.size": { - "description": "#/definitions/DefaultedStandardInstrument_for_extendable_attribute_apollo_router::plugins::telemetry::config_new::attributes::RouterAttributes_apollo_router::plugins::telemetry::config_new::selectors::RouterSelector", - "$ref": "#/definitions/DefaultedStandardInstrument_for_extendable_attribute_apollo_router::plugins::telemetry::config_new::attributes::RouterAttributes_apollo_router::plugins::telemetry::config_new::selectors::RouterSelector" - } - }, - "additionalProperties": { - "description": "#/definitions/Instrument_for_RouterAttributes_and_RouterSelector_and_RouterValue", - "$ref": "#/definitions/Instrument_for_RouterAttributes_and_RouterSelector_and_RouterValue" - } - }, - "extendable_attribute_apollo_router::plugins::telemetry::config_new::instruments::SubgraphInstrumentsConfig_apollo_router::plugins::telemetry::config_new::instruments::Instrument": { - "type": "object", - "properties": { - "http.client.request.body.size": { - "description": "#/definitions/DefaultedStandardInstrument_for_extendable_attribute_apollo_router::plugins::telemetry::config_new::attributes::SubgraphAttributes_apollo_router::plugins::telemetry::config_new::selectors::SubgraphSelector", - "$ref": "#/definitions/DefaultedStandardInstrument_for_extendable_attribute_apollo_router::plugins::telemetry::config_new::attributes::SubgraphAttributes_apollo_router::plugins::telemetry::config_new::selectors::SubgraphSelector" - }, - "http.client.request.duration": { - "description": "#/definitions/DefaultedStandardInstrument_for_extendable_attribute_apollo_router::plugins::telemetry::config_new::attributes::SubgraphAttributes_apollo_router::plugins::telemetry::config_new::selectors::SubgraphSelector", - "$ref": "#/definitions/DefaultedStandardInstrument_for_extendable_attribute_apollo_router::plugins::telemetry::config_new::attributes::SubgraphAttributes_apollo_router::plugins::telemetry::config_new::selectors::SubgraphSelector" - }, - "http.client.response.body.size": { - "description": "#/definitions/DefaultedStandardInstrument_for_extendable_attribute_apollo_router::plugins::telemetry::config_new::attributes::SubgraphAttributes_apollo_router::plugins::telemetry::config_new::selectors::SubgraphSelector", - "$ref": "#/definitions/DefaultedStandardInstrument_for_extendable_attribute_apollo_router::plugins::telemetry::config_new::attributes::SubgraphAttributes_apollo_router::plugins::telemetry::config_new::selectors::SubgraphSelector" - } - }, - "additionalProperties": { - "description": "#/definitions/Instrument_for_SubgraphAttributes_and_SubgraphSelector_and_SubgraphValue", - "$ref": "#/definitions/Instrument_for_SubgraphAttributes_and_SubgraphSelector_and_SubgraphValue" - } - }, - "extendable_attribute_apollo_router::plugins::telemetry::config_new::instruments::SupergraphInstrumentsConfig_apollo_router::plugins::telemetry::config_new::instruments::Instrument": { - "type": "object", - "properties": { - "cost.actual": { - "description": "#/definitions/DefaultedStandardInstrument_for_extendable_attribute_apollo_router::plugins::telemetry::config_new::attributes::SupergraphAttributes_apollo_router::plugins::telemetry::config_new::selectors::SupergraphSelector", - "$ref": "#/definitions/DefaultedStandardInstrument_for_extendable_attribute_apollo_router::plugins::telemetry::config_new::attributes::SupergraphAttributes_apollo_router::plugins::telemetry::config_new::selectors::SupergraphSelector" - }, - "cost.delta": { - "description": "#/definitions/DefaultedStandardInstrument_for_extendable_attribute_apollo_router::plugins::telemetry::config_new::attributes::SupergraphAttributes_apollo_router::plugins::telemetry::config_new::selectors::SupergraphSelector", - "$ref": "#/definitions/DefaultedStandardInstrument_for_extendable_attribute_apollo_router::plugins::telemetry::config_new::attributes::SupergraphAttributes_apollo_router::plugins::telemetry::config_new::selectors::SupergraphSelector" - }, - "cost.estimated": { - "description": "#/definitions/DefaultedStandardInstrument_for_extendable_attribute_apollo_router::plugins::telemetry::config_new::attributes::SupergraphAttributes_apollo_router::plugins::telemetry::config_new::selectors::SupergraphSelector", - "$ref": "#/definitions/DefaultedStandardInstrument_for_extendable_attribute_apollo_router::plugins::telemetry::config_new::attributes::SupergraphAttributes_apollo_router::plugins::telemetry::config_new::selectors::SupergraphSelector" - } - }, - "additionalProperties": { - "description": "#/definitions/Instrument_for_SupergraphAttributes_and_SupergraphSelector_and_SupergraphValue", - "$ref": "#/definitions/Instrument_for_SupergraphAttributes_and_SupergraphSelector_and_SupergraphValue" - } - }, - "logging_format": { - "oneOf": [ - { - "description": "Tracing subscriber https://docs.rs/tracing-subscriber/latest/tracing_subscriber/fmt/format/struct.Json.html", - "type": "object", - "required": [ - "json" - ], - "properties": { - "json": { - "type": "object", - "properties": { - "display_current_span": { - "description": "Include the current span in this log event.", - "default": false, - "type": "boolean" - }, - "display_filename": { - "description": "Include the filename with the log event.", - "default": false, - "type": "boolean" - }, - "display_level": { - "description": "Include the level with the log event. (default: true)", - "default": true, - "type": "boolean" - }, - "display_line_number": { - "description": "Include the line number with the log event.", - "default": false, - "type": "boolean" - }, - "display_resource": { - "description": "Include the resource with the log event. (default: true)", - "default": true, - "type": "boolean" - }, - "display_span_id": { - "description": "Include the span id (if any) with the log event. (default: true)", - "default": true, - "type": "boolean" - }, - "display_span_list": { - "description": "Include all of the containing span information with the log event. (default: true)", - "default": true, - "type": "boolean" - }, - "display_target": { - "description": "Include the target with the log event. (default: true)", - "default": true, - "type": "boolean" - }, - "display_thread_id": { - "description": "Include the thread_id with the log event.", - "default": false, - "type": "boolean" - }, - "display_thread_name": { - "description": "Include the thread_name with the log event.", - "default": false, - "type": "boolean" - }, - "display_timestamp": { - "description": "Include the timestamp with the log event. (default: true)", - "default": true, - "type": "boolean" - }, - "display_trace_id": { - "description": "#/definitions/DisplayTraceIdFormat", - "$ref": "#/definitions/DisplayTraceIdFormat" - }, - "span_attributes": { - "description": "List of span attributes to attach to the json log object", - "default": [], - "type": "array", - "items": { - "type": "string" - }, - "uniqueItems": true - } - }, - "additionalProperties": false - } - }, - "additionalProperties": false - }, - { - "description": "Tracing subscriber https://docs.rs/tracing-subscriber/latest/tracing_subscriber/fmt/format/struct.Json.html", - "type": "string", - "enum": [ - "json" - ] - }, - { - "description": "Tracing subscriber https://docs.rs/tracing-subscriber/latest/tracing_subscriber/fmt/format/struct.Full.html", - "type": "object", - "required": [ - "text" - ], - "properties": { - "text": { - "type": "object", - "properties": { - "ansi_escape_codes": { - "description": "Process ansi escapes (default: true)", - "default": true, - "type": "boolean" - }, - "display_current_span": { - "description": "Include the current span in this log event. (default: true)", - "default": true, - "type": "boolean" - }, - "display_filename": { - "description": "Include the filename with the log event.", - "default": false, - "type": "boolean" - }, - "display_level": { - "description": "Include the level with the log event. (default: true)", - "default": true, - "type": "boolean" - }, - "display_line_number": { - "description": "Include the line number with the log event.", - "default": false, - "type": "boolean" - }, - "display_resource": { - "description": "Include the resource with the log event.", - "default": false, - "type": "boolean" - }, - "display_service_name": { - "description": "Include the service name with the log event.", - "default": false, - "type": "boolean" - }, - "display_service_namespace": { - "description": "Include the service namespace with the log event.", - "default": false, - "type": "boolean" - }, - "display_span_id": { - "description": "Include the span id (if any) with the log event. (default: false)", - "default": false, - "type": "boolean" - }, - "display_span_list": { - "description": "Include all of the containing span information with the log event. (default: true)", - "default": true, - "type": "boolean" - }, - "display_target": { - "description": "Include the target with the log event.", - "default": false, - "type": "boolean" - }, - "display_thread_id": { - "description": "Include the thread_id with the log event.", - "default": false, - "type": "boolean" - }, - "display_thread_name": { - "description": "Include the thread_name with the log event.", - "default": false, - "type": "boolean" - }, - "display_timestamp": { - "description": "Include the timestamp with the log event. (default: true)", - "default": true, - "type": "boolean" - }, - "display_trace_id": { - "description": "#/definitions/DisplayTraceIdFormat", - "$ref": "#/definitions/DisplayTraceIdFormat" - } - }, - "additionalProperties": false - } - }, - "additionalProperties": false - }, - { - "description": "Tracing subscriber https://docs.rs/tracing-subscriber/latest/tracing_subscriber/fmt/format/struct.Full.html", - "type": "string", - "enum": [ - "text" - ] - } - ] - } - } -} From c8e3e1a4e6f5cf2e3d8664d77dc996cf568dc035 Mon Sep 17 00:00:00 2001 From: Lenz Weber-Tronic Date: Fri, 18 Oct 2024 13:10:25 +0200 Subject: [PATCH 4/4] github is fun, github changes operation systems --- .github/workflows/E2E.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/E2E.yml b/.github/workflows/E2E.yml index aa951bc8..890ef982 100644 --- a/.github/workflows/E2E.yml +++ b/.github/workflows/E2E.yml @@ -12,7 +12,7 @@ jobs: matrix: version: ["1.90.0", "stable", "insiders"] steps: - - run: sudo apt update && sudo apt install -y libasound2t64 libgbm1 libgtk-3-0 libnss3 xvfb expect + - run: sudo apt update && sudo apt install -y libasound2 libgbm1 libgtk-3-0 libnss3 xvfb expect - uses: actions/checkout@v4 - uses: actions/setup-node@v4 with: