diff --git a/.github/CODEOWNERS b/.github/CODEOWNERS index 9af79663348..68a103fa786 100644 --- a/.github/CODEOWNERS +++ b/.github/CODEOWNERS @@ -27,12 +27,12 @@ src/test/youtrack-app/ @skoch13 @andrey-skl @zmaks src/negative_test/youtrack-app/ @skoch13 @andrey-skl @zmaks # Managed by Vector Informatik canoe-ci-tools team -src/schemas/json/venvironment-* @vectorgrp/canoe-ci-tools @raphael-grimm @JoergSrj -src/test/venvironment-* @vectorgrp/canoe-ci-tools @raphael-grimm @JoergSrj -src/negative_test/venvironment-* @vectorgrp/canoe-ci-tools @raphael-grimm @JoergSrj -src/schemas/json/venvplus-* @vectorgrp/canoe-ci-tools @raphael-grimm @JoergSrj -src/test/venvplus-* @vectorgrp/canoe-ci-tools @raphael-grimm @JoergSrj -src/negative_test/venvplus-* @vectorgrp/canoe-ci-tools @raphael-grimm @JoergSrj +src/schemas/json/venvironment-* @vectorgrp/canoe-ci-tools @raphael-grimm @JoergSrj @VCecileKefelian +src/test/venvironment-* @vectorgrp/canoe-ci-tools @raphael-grimm @JoergSrj @VCecileKefelian +src/negative_test/venvironment-* @vectorgrp/canoe-ci-tools @raphael-grimm @JoergSrj @VCecileKefelian +src/schemas/json/venvplus-* @vectorgrp/canoe-ci-tools @raphael-grimm @JoergSrj @VCecileKefelian +src/test/venvplus-* @vectorgrp/canoe-ci-tools @raphael-grimm @JoergSrj @VCecileKefelian +src/negative_test/venvplus-* @vectorgrp/canoe-ci-tools @raphael-grimm @JoergSrj @VCecileKefelian # Managed by CTFer.io team: src/schemas/json/ctfd.json @pandatix @NicoFgrx diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index 84c0650c976..31d814b216b 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -1,7 +1,7 @@ --- repos: - repo: 'https://github.com/rbubley/mirrors-prettier' - rev: 'v3.5.3' + rev: 'v3.6.2' hooks: - id: 'prettier' types: [text] diff --git a/src/api/json/catalog.json b/src/api/json/catalog.json index bcbbfafaae6..fa0d742c788 100644 --- a/src/api/json/catalog.json +++ b/src/api/json/catalog.json @@ -3203,7 +3203,8 @@ "1.11": "https://ifstate.net/schema/1.11/ifstate.conf.schema.json", "1.12": "https://ifstate.net/schema/1.12/ifstate.conf.schema.json", "1.13": "https://ifstate.net/schema/1.13/ifstate.conf.schema.json", - "2.0": "https://ifstate.net/schema/2.0/ifstate.conf.schema.json" + "2.0": "https://ifstate.net/schema/2.0/ifstate.conf.schema.json", + "2.1": "https://ifstate.net/schema/2.1/ifstate.conf.schema.json" } }, { @@ -4988,7 +4989,7 @@ "name": "QType AI DSL", "description": "A DSL for rapid prototyping of AI applications", "fileMatch": ["qtype.config.yaml", "*.qtype.yaml"], - "url": "https://raw.githubusercontent.com/lou-k/qtype/refs/heads/main/schema/qtype.schema.json" + "url": "https://raw.githubusercontent.com/bazaarvoice/qtype/refs/heads/main/schema/qtype.schema.json" }, { "name": "Railway", @@ -6278,29 +6279,8 @@ "3.1.0": "https://www.schemastore.org/venvironment-schema-v3.1.0.json", "3.2.0": "https://www.schemastore.org/venvironment-schema-v3.2.0.json", "4.0.0": "https://www.schemastore.org/venvironment-schema-v4.0.0.json", - "4.1.0": "https://www.schemastore.org/venvironment-schema-v4.1.0.json" - } - }, - { - "name": "venvironment-basic.yaml", - "description": "Test environment for Vector Test Unit Runner", - "fileMatch": [ - "venvironment-basic.yaml", - "*.venvironment-basic.yaml", - "venvironment-basic.yml", - "*.venvironment-basic.yml", - "venvironment-basic.json", - "*.venvironment-basic.json" - ], - "url": "https://www.schemastore.org/venvironment-basic-schema-v4.0.0.json", - "versions": { - "1.0.0": "https://www.schemastore.org/venvironment-basic-schema-v1.0.0.json", - "1.1.0": "https://www.schemastore.org/venvironment-basic-schema-v1.1.0.json", - "2.0.0": "https://www.schemastore.org/venvironment-basic-schema-v2.0.0.json", - "2.1.0": "https://www.schemastore.org/venvironment-basic-schema-v2.1.0.json", - "3.0.0": "https://www.schemastore.org/venvironment-basic-schema-v3.0.0.json", - "3.2.0": "https://www.schemastore.org/venvironment-basic-schema-v3.2.0.json", - "4.0.0": "https://www.schemastore.org/venvironment-basic-schema-v4.0.0.json" + "4.1.0": "https://www.schemastore.org/venvironment-schema-v4.1.0.json", + "4.2.0": "https://www.schemastore.org/venvironment-schema-v4.2.0.json" } }, { @@ -6319,22 +6299,6 @@ "1.0.0": "https://www.schemastore.org/venvplus-schema-v1.0.0.json" } }, - { - "name": "venvplus-basic.yaml", - "description": "venvplus-basic settings of Vector Test Unit Runner", - "fileMatch": [ - "venvplus-basic.yaml", - "*.venvplus-basic.yaml", - "venvplus-basic.yml", - "*.venvplus-basic.yml", - "venvplus-basic.json", - "*.venvplus-basic.json" - ], - "url": "https://www.schemastore.org/venvplus-basic-schema-v1.0.0.json", - "versions": { - "1.0.0": "https://www.schemastore.org/venvplus-basic-schema-v1.0.0.json" - } - }, { "name": "Version Bumper config", "description": "Configuration for Version Bumper, a Composer plugin to bump project versions during release preparations", @@ -6933,6 +6897,15 @@ "fileMatch": ["**/api.json"], "url": "https://www.schemastore.org/apibuilder.json" }, + { + "name": "Apollo Router", + "description": "Apollo Router: The runtime for graph-based API orchestration", + "fileMatch": ["apollo-router-*.json"], + "url": "https://www.schemastore.org/apollo-router-2.8.1.json", + "versions": { + "2.8.1": "https://www.schemastore.org/apollo-router-2.8.1.json" + } + }, { "name": "Gradle Enterprise", "description": "Gradle Enterprise configuration", @@ -8323,6 +8296,18 @@ ], "url": "https://raw.githubusercontent.com/wiremock/wiremock/refs/heads/master/schemas/wiremock-stub-mapping-or-mappings.json" }, + { + "name": "WireMock CLI local service configuration", + "description": "WireMock CLI and Runner local service config file format", + "fileMatch": ["wiremock.yaml"], + "url": "https://static.wiremock.io/schemas/wiremock.yaml-schema.json" + }, + { + "name": "WireMock CLI import configuration", + "description": "WireMock CLI import and record config file format", + "fileMatch": ["wiremock-import-config.yaml"], + "url": "https://static.wiremock.io/schemas/wiremock-import-config.yaml-schema.json" + }, { "name": "Bitmovin Encoding Template", "description": "An encoding workflow from a single configuration template", @@ -8786,6 +8771,12 @@ "**/destination-*/metadata.yaml" ], "url": "https://raw.githubusercontent.com/airbytehq/airbyte/refs/heads/master/airbyte-ci/connectors/metadata_service/lib/metadata_service/models/generated/ConnectorMetadataDefinitionV0.json" + }, + { + "name": "Jarl", + "description": "Configuration for R linter", + "fileMatch": ["jarl.toml"], + "url": "https://github.com/etiennebacher/jarl/releases/latest/download/jarl.schema.json" } ] } diff --git a/src/negative_test/venvironment-basic-schema-v2.1.0/missing-version.yaml b/src/negative_test/venvironment-basic-schema-v2.1.0/missing-version.yaml deleted file mode 100644 index 481c5926210..00000000000 --- a/src/negative_test/venvironment-basic-schema-v2.1.0/missing-version.yaml +++ /dev/null @@ -1,3 +0,0 @@ -# yaml-language-server: $schema=../../schemas/json/venvironment-basic-schema-v2.1.0.json -can-networks: - - name: can diff --git a/src/negative_test/venvironment-basic-schema-v3.2.0/invalid-version.yaml b/src/negative_test/venvironment-basic-schema-v3.2.0/invalid-version.yaml deleted file mode 100644 index 5f4b1f093dd..00000000000 --- a/src/negative_test/venvironment-basic-schema-v3.2.0/invalid-version.yaml +++ /dev/null @@ -1,2 +0,0 @@ -# yaml-language-server: $schema=../../schemas/json/venvironment-basic-schema-v3.2.0.json -version: 2.2.0 diff --git a/src/negative_test/venvironment-basic-schema-v3.2.0/missing-version.yaml b/src/negative_test/venvironment-basic-schema-v3.2.0/missing-version.yaml deleted file mode 100644 index ebe9c4fa8f3..00000000000 --- a/src/negative_test/venvironment-basic-schema-v3.2.0/missing-version.yaml +++ /dev/null @@ -1,3 +0,0 @@ -# yaml-language-server: $schema=../../schemas/json/venvironment-basic-schema-v3.2.0.json -can-networks: - - name: can diff --git a/src/negative_test/venvironment-basic-schema-v4.0.0/invalid-version.yaml b/src/negative_test/venvironment-schema-v4.2.0/invalid-version.yaml similarity index 75% rename from src/negative_test/venvironment-basic-schema-v4.0.0/invalid-version.yaml rename to src/negative_test/venvironment-schema-v4.2.0/invalid-version.yaml index dec6f7b1c18..a5fa86e70bc 100644 --- a/src/negative_test/venvironment-basic-schema-v4.0.0/invalid-version.yaml +++ b/src/negative_test/venvironment-schema-v4.2.0/invalid-version.yaml @@ -1,2 +1,2 @@ -# yaml-language-server: $schema=../../schemas/json/venvironment-basic-schema-v4.0.0.json +# yaml-language-server: $schema=../../schemas/json/venvironment-schema-v4.2.0.json version: 2.2.0 diff --git a/src/negative_test/venvironment-basic-schema-v4.0.0/missing-version.yaml b/src/negative_test/venvironment-schema-v4.2.0/missing-version.yaml similarity index 52% rename from src/negative_test/venvironment-basic-schema-v4.0.0/missing-version.yaml rename to src/negative_test/venvironment-schema-v4.2.0/missing-version.yaml index 1d5a18a2f38..3542eb2c841 100644 --- a/src/negative_test/venvironment-basic-schema-v4.0.0/missing-version.yaml +++ b/src/negative_test/venvironment-schema-v4.2.0/missing-version.yaml @@ -1,3 +1,4 @@ -# yaml-language-server: $schema=../../schemas/json/venvironment-basic-schema-v4.0.0.json -can-networks: - - name: can +# yaml-language-server: $schema=../../schemas/json/venvironment-schema-v4.2.0.json +variables: + - name: var + value: -42 diff --git a/src/negative_test/venvplus-basic-schema-v1.0.0/invalid-version.yaml b/src/negative_test/venvplus-basic-schema-v1.0.0/invalid-version.yaml deleted file mode 100644 index 316763e0dfe..00000000000 --- a/src/negative_test/venvplus-basic-schema-v1.0.0/invalid-version.yaml +++ /dev/null @@ -1,2 +0,0 @@ -# yaml-language-server: $schema=../../schemas/json/venvplus-basic-schema-v1.0.0.json -version: 0.1.0 diff --git a/src/negative_test/venvplus-basic-schema-v1.0.0/missing-version.yaml b/src/negative_test/venvplus-basic-schema-v1.0.0/missing-version.yaml deleted file mode 100644 index 601c34b17eb..00000000000 --- a/src/negative_test/venvplus-basic-schema-v1.0.0/missing-version.yaml +++ /dev/null @@ -1,4 +0,0 @@ -# yaml-language-server: $schema=../../schemas/json/venvplus-basic-schema-v1.0.0.json -offline-config: - source-files: - - file-path: LoggingFile.blf diff --git a/src/schema-validation.jsonc b/src/schema-validation.jsonc index 22f25513ba0..a7e6f76b246 100644 --- a/src/schema-validation.jsonc +++ b/src/schema-validation.jsonc @@ -685,6 +685,10 @@ "apibuilder.json": { "externalSchema": ["base-04.json"] }, + "apollo-router-2.8.1.json": { + "externalSchema": ["base.json"], + "unknownFormat": ["uint", "uint32", "uint64"] + }, "app-config.json": { "externalSchema": ["base.json"] }, diff --git a/src/schemas/json/apollo-router-2.8.1.json b/src/schemas/json/apollo-router-2.8.1.json new file mode 100644 index 00000000000..2f365769915 --- /dev/null +++ b/src/schemas/json/apollo-router-2.8.1.json @@ -0,0 +1,11154 @@ +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "$id": "https://json.schemastore.org/apollo-router-2.8.1.json", + "title": "Configuration", + "description": "The configuration for the router.\n\nCan be created through `serde::Deserialize` from various formats,\nor inline in Rust code with `serde_json::json!` and `serde_json::from_value`.", + "type": "object", + "properties": { + "health_check": { + "$ref": "#/definitions/HealthCheckConfig" + }, + "sandbox": { + "description": "Sandbox configuration", + "default": { + "enabled": false + }, + "allOf": [ + { + "$ref": "#/definitions/Sandbox" + } + ] + }, + "homepage": { + "description": "Homepage configuration", + "default": { + "enabled": true, + "graph_ref": null + }, + "allOf": [ + { + "$ref": "#/definitions/Homepage" + } + ] + }, + "server": { + "description": "Configuration for the server", + "default": { + "http": { + "header_read_timeout": { + "secs": 10, + "nanos": 0 + } + } + }, + "allOf": [ + { + "$ref": "#/definitions/Server" + } + ] + }, + "supergraph": { + "description": "Configuration for the supergraph", + "default": { + "listen": "127.0.0.1:4000", + "connection_shutdown_timeout": { + "secs": 60, + "nanos": 0 + }, + "path": "/", + "introspection": false, + "generate_query_fragments": true, + "defer_support": true, + "query_planning": { + "cache": { + "in_memory": { + "limit": 512 + }, + "redis": null + }, + "warmed_up_queries": null, + "experimental_plans_limit": null, + "experimental_paths_limit": null, + "experimental_reuse_query_plans": false, + "experimental_cooperative_cancellation": { + "enabled": true, + "mode": "measure", + "timeout": null + } + }, + "early_cancel": false, + "enable_result_coercion_errors": false, + "experimental_log_on_broken_pipe": false + }, + "allOf": [ + { + "$ref": "#/definitions/Supergraph" + } + ] + }, + "cors": { + "description": "Cross origin request headers.", + "default": { + "allow_any_origin": false, + "allow_credentials": false, + "allow_headers": [], + "expose_headers": null, + "methods": ["GET", "POST", "OPTIONS"], + "max_age": null, + "policies": [ + { + "allow_credentials": null, + "allow_headers": [], + "expose_headers": [], + "match_origins": [], + "max_age": null, + "methods": ["GET", "POST", "OPTIONS"], + "origins": ["https://studio.apollographql.com"] + } + ] + }, + "allOf": [ + { + "$ref": "#/definitions/Cors" + } + ] + }, + "tls": { + "default": { + "supergraph": null, + "subgraph": { + "all": { + "certificate_authorities": null, + "client_authentication": null + }, + "subgraphs": {} + }, + "connector": { + "sources": {}, + "all": { + "certificate_authorities": null, + "client_authentication": null + } + } + }, + "allOf": [ + { + "$ref": "#/definitions/Tls" + } + ] + }, + "apq": { + "description": "Configures automatic persisted queries", + "default": { + "enabled": true, + "router": { + "cache": { + "in_memory": { + "limit": 512 + }, + "redis": null + } + }, + "subgraph": { + "all": { + "enabled": false + }, + "subgraphs": {} + } + }, + "allOf": [ + { + "$ref": "#/definitions/Apq" + } + ] + }, + "persisted_queries": { + "description": "Configures managed persisted queries", + "default": { + "enabled": false, + "log_unknown": false, + "safelist": { + "enabled": false, + "require_id": false + }, + "experimental_prewarm_query_plan_cache": { + "on_startup": false, + "on_reload": true + }, + "local_manifests": null, + "hot_reload": false + }, + "allOf": [ + { + "$ref": "#/definitions/PersistedQueries" + } + ] + }, + "limits": { + "$ref": "#/definitions/LimitsConfig" + }, + "experimental_chaos": { + "description": "Configuration for chaos testing, trying to reproduce bugs that require uncommon conditions.\nYou probably don’t want this in production!", + "default": { + "force_schema_reload": null, + "force_config_reload": null + }, + "allOf": [ + { + "$ref": "#/definitions/Config" + } + ] + }, + "plugins": { + "description": "Plugin configuration", + "default": null, + "allOf": [ + { + "$ref": "#/definitions/Plugins" + } + ] + }, + "authentication": { + "$ref": "#/definitions/AuthenticationConfig" + }, + "authorization": { + "$ref": "#/definitions/AuthorizationConfig" + }, + "connectors": { + "$ref": "#/definitions/ConnectorsConfig" + }, + "coprocessor": { + "$ref": "#/definitions/CoprocessorConfig" + }, + "csrf": { + "$ref": "#/definitions/CSRFConfig" + }, + "demand_control": { + "$ref": "#/definitions/DemandControlConfig" + }, + "enhanced_client_awareness": { + "$ref": "#/definitions/Config4" + }, + "experimental_diagnostics": { + "$ref": "#/definitions/Config5" + }, + "fleet_detector": { + "$ref": "#/definitions/Conf" + }, + "forbid_mutations": { + "$ref": "#/definitions/ForbidMutationsConfig" + }, + "headers": { + "$ref": "#/definitions/HeadersConfig" + }, + "include_subgraph_errors": { + "$ref": "#/definitions/IncludeSubgraphErrorsConfig" + }, + "license_enforcement": { + "$ref": "#/definitions/LicenseEnforcementConfig" + }, + "override_subgraph_url": { + "$ref": "#/definitions/Conf2" + }, + "preview_entity_cache": { + "$ref": "#/definitions/Config6" + }, + "preview_file_uploads": { + "$ref": "#/definitions/FileUploadsConfig" + }, + "progressive_override": { + "$ref": "#/definitions/Config9" + }, + "rhai": { + "$ref": "#/definitions/RhaiConfig" + }, + "subscription": { + "$ref": "#/definitions/SubscriptionConfig" + }, + "telemetry": { + "$ref": "#/definitions/TelemetryConfig" + }, + "traffic_shaping": { + "$ref": "#/definitions/TrafficShapingConfig" + }, + "batching": { + "description": "Batching configuration.", + "default": { + "enabled": false, + "mode": "batch_http_link", + "subgraph": null, + "maximum_size": null + }, + "allOf": [ + { + "$ref": "#/definitions/Batching" + } + ] + }, + "experimental_type_conditioned_fetching": { + "description": "Type conditioned fetching configuration.", + "type": "boolean", + "default": false + } + }, + "patternProperties": { + "^experimental_mock_subgraphs$": { + "type": "object", + "additionalProperties": { + "$ref": "#/definitions/SubgraphConfig" + } + }, + "^preview_response_cache$": { + "$ref": "#/definitions/Config7" + } + }, + "additionalProperties": false, + "definitions": { + "HealthCheckConfig": { + "description": "Configuration options pertaining to the health component.", + "type": "object", + "properties": { + "listen": { + "description": "The socket address and port to listen on\nDefaults to 127.0.0.1:8088", + "default": "127.0.0.1:8088", + "allOf": [ + { + "$ref": "#/definitions/ListenAddr" + } + ] + }, + "enabled": { + "description": "Set to false to disable the health check", + "type": "boolean", + "default": true + }, + "path": { + "description": "Optionally set a custom healthcheck path\nDefaults to /health", + "type": "string", + "default": "/health" + }, + "readiness": { + "description": "Optionally specify readiness configuration", + "default": { + "interval": { + "sampling": "5s", + "unready": null + }, + "allowed": 100 + }, + "allOf": [ + { + "$ref": "#/definitions/ReadinessConfig" + } + ] + } + }, + "additionalProperties": false + }, + "ListenAddr": { + "description": "Listening address.", + "anyOf": [ + { + "description": "Socket address.", + "type": "string" + }, + { + "description": "Unix socket.", + "type": "string" + } + ] + }, + "ReadinessConfig": { + "description": "Configuration options pertaining to the readiness health sub-component.", + "type": "object", + "properties": { + "interval": { + "description": "The readiness interval configuration", + "default": { + "sampling": "5s", + "unready": null + }, + "allOf": [ + { + "$ref": "#/definitions/ReadinessIntervalConfig" + } + ] + }, + "allowed": { + "description": "How many rejections are allowed in an interval (default: 100)\nIf this number is exceeded, the router will start to report unready.", + "type": "integer", + "format": "uint", + "minimum": 0, + "default": 100 + } + }, + "additionalProperties": false + }, + "ReadinessIntervalConfig": { + "description": "Configuration options pertaining to the readiness health interval sub-component.", + "type": "object", + "properties": { + "sampling": { + "description": "The sampling interval (default: 5s)", + "type": ["string", "null"], + "default": "0s" + }, + "unready": { + "description": "The unready interval (default: 2 * sampling interval)", + "type": ["string", "null"], + "default": null + } + }, + "additionalProperties": false + }, + "Sandbox": { + "description": "Configuration options pertaining to the sandbox page.", + "type": "object", + "properties": { + "enabled": { + "description": "Set to true to enable sandbox", + "type": "boolean", + "default": false + } + }, + "additionalProperties": false + }, + "Homepage": { + "description": "Configuration options pertaining to the home page.", + "type": "object", + "properties": { + "enabled": { + "description": "Set to false to disable the homepage", + "type": "boolean", + "default": true + }, + "graph_ref": { + "description": "Graph reference\nThis will allow you to redirect from the Apollo Router landing page back to Apollo Studio Explorer", + "type": ["string", "null"], + "default": null + } + }, + "additionalProperties": false + }, + "Server": { + "type": "object", + "properties": { + "http": { + "description": "The server http configuration", + "default": { + "header_read_timeout": { + "secs": 10, + "nanos": 0 + } + }, + "allOf": [ + { + "$ref": "#/definitions/ServerHttpConfig" + } + ] + } + }, + "additionalProperties": false + }, + "ServerHttpConfig": { + "description": "Configuration for HTTP", + "type": "object", + "properties": { + "header_read_timeout": { + "description": "Header read timeout in human-readable format; defaults to 10s", + "type": "string", + "default": { + "secs": 10, + "nanos": 0 + } + } + }, + "additionalProperties": false + }, + "Supergraph": { + "description": "Configuration options pertaining to the supergraph server component.", + "type": "object", + "properties": { + "listen": { + "description": "The socket address and port to listen on\nDefaults to 127.0.0.1:4000", + "default": "127.0.0.1:4000", + "allOf": [ + { + "$ref": "#/definitions/ListenAddr" + } + ] + }, + "connection_shutdown_timeout": { + "description": "The timeout for shutting down connections during a router shutdown or a schema reload.", + "type": "string", + "default": { + "secs": 60, + "nanos": 0 + } + }, + "path": { + "description": "The HTTP path on which GraphQL requests will be served.\ndefault: \"/\"", + "type": "string", + "default": "/" + }, + "introspection": { + "description": "Enable introspection\nDefault: false", + "type": "boolean", + "default": false + }, + "generate_query_fragments": { + "description": "Enable QP generation of fragments for subgraph requests\nDefault: true", + "type": "boolean", + "default": true + }, + "defer_support": { + "description": "Set to false to disable defer support", + "type": "boolean", + "default": true + }, + "query_planning": { + "description": "Query planning options", + "default": { + "cache": { + "in_memory": { + "limit": 512 + }, + "redis": null + }, + "warmed_up_queries": null, + "experimental_plans_limit": null, + "experimental_paths_limit": null, + "experimental_reuse_query_plans": false, + "experimental_cooperative_cancellation": { + "enabled": true, + "mode": "measure", + "timeout": null + } + }, + "allOf": [ + { + "$ref": "#/definitions/QueryPlanning" + } + ] + }, + "early_cancel": { + "description": "abort request handling when the client drops the connection.\nDefault: false.\nWhen set to true, some parts of the request pipeline like telemetry will not work properly,\nbut request handling will stop immediately when the client connection is closed.", + "type": "boolean", + "default": false + }, + "enable_result_coercion_errors": { + "description": "Enable errors generated during response reformatting and result coercion to be returned in\nresponses.\nDefault: false\nAll subgraph responses are checked and corrected to ensure alignment with the schema and\nquery. When enabled, misaligned values will generate errors which are included in errors\narray in the response.", + "type": "boolean", + "default": false + }, + "experimental_log_on_broken_pipe": { + "description": "Log a message if the client closes the connection before the response is sent.\nDefault: false.", + "type": "boolean", + "default": false + } + }, + "additionalProperties": false + }, + "QueryPlanning": { + "description": "Query planning cache configuration", + "type": "object", + "properties": { + "cache": { + "description": "Cache configuration", + "default": { + "in_memory": { + "limit": 512 + }, + "redis": null + }, + "allOf": [ + { + "$ref": "#/definitions/QueryPlanCache" + } + ] + }, + "warmed_up_queries": { + "description": "Warms up the cache on reloads by running the query plan over\na list of the most used queries (from the in memory cache)\nConfigures the number of queries warmed up. Defaults to 1/3 of\nthe in memory cache", + "type": ["integer", "null"], + "format": "uint", + "minimum": 0, + "default": null + }, + "experimental_plans_limit": { + "description": "Sets a limit to the number of generated query plans.\nThe planning process generates many different query plans as it\nexplores the graph, and the list can grow large. By using this\nlimit, we prevent that growth and still get a valid query plan,\nbut it may not be the optimal one.\n\nThe default limit is set to 10000, but it may change in the future", + "type": ["integer", "null"], + "format": "uint32", + "minimum": 0, + "default": null + }, + "experimental_paths_limit": { + "description": "Before creating query plans, for each path of fields in the query we compute all the\npossible options to traverse that path via the subgraphs. Multiple options can arise because\nfields in the path can be provided by multiple subgraphs, and abstract types (i.e. unions\nand interfaces) returned by fields sometimes require the query planner to traverse through\neach constituent object type. The number of options generated in this computation can grow\nlarge if the schema or query are sufficiently complex, and that will increase the time spent\nplanning.\n\nThis config allows specifying a per-path limit to the number of options considered. If any\npath's options exceeds this limit, query planning will abort and the operation will fail.\n\nThe default value is None, which specifies no limit.", + "type": ["integer", "null"], + "format": "uint32", + "minimum": 0, + "default": null + }, + "experimental_reuse_query_plans": { + "description": "If cache warm up is configured, this will allow the router to keep a query plan created with\nthe old schema, if it determines that the schema update does not affect the corresponding query", + "type": "boolean", + "default": false + }, + "experimental_cooperative_cancellation": { + "description": "Configures cooperative cancellation of query planning\n\nSee [`CooperativeCancellation`] for more details.", + "default": { + "enabled": true, + "mode": "measure", + "timeout": null + }, + "allOf": [ + { + "$ref": "#/definitions/CooperativeCancellation" + } + ] + } + }, + "additionalProperties": false + }, + "QueryPlanCache": { + "description": "Cache configuration", + "type": "object", + "properties": { + "in_memory": { + "description": "Configures the in memory cache (always active)", + "default": { + "limit": 512 + }, + "allOf": [ + { + "$ref": "#/definitions/InMemoryCache" + } + ] + }, + "redis": { + "description": "Configures and activates the Redis cache", + "anyOf": [ + { + "$ref": "#/definitions/QueryPlanRedisCache" + }, + { + "type": "null" + } + ], + "default": null + } + }, + "additionalProperties": false + }, + "InMemoryCache": { + "description": "In memory cache configuration", + "type": "object", + "properties": { + "limit": { + "description": "Number of entries in the Least Recently Used cache", + "type": "integer", + "format": "uint", + "minimum": 1 + } + }, + "additionalProperties": false, + "required": ["limit"] + }, + "QueryPlanRedisCache": { + "description": "Redis cache configuration", + "type": "object", + "properties": { + "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", "null"] + }, + "password": { + "description": "Redis password if not provided in the URLs. This field takes precedence over the password in the URL", + "type": ["string", "null"] + }, + "timeout": { + "description": "Redis request timeout (default: 500ms)", + "type": ["string", "null"], + "default": { + "secs": 0, + "nanos": 0 + } + }, + "ttl": { + "description": "TTL for entries", + "type": ["string", "null"], + "default": { + "secs": 2592000, + "nanos": 0 + } + }, + "namespace": { + "description": "namespace used to prefix Redis keys", + "type": ["string", "null"] + }, + "tls": { + "description": "TLS client configuration", + "anyOf": [ + { + "$ref": "#/definitions/TlsClient" + }, + { + "type": "null" + } + ], + "default": null + }, + "required_to_start": { + "description": "Prevents the router from starting if it cannot connect to Redis", + "type": "boolean", + "default": false + }, + "reset_ttl": { + "description": "When a TTL is set on a key, reset it when reading the data from that key", + "type": "boolean", + "default": true + }, + "pool_size": { + "description": "The size of the Redis connection pool", + "type": "integer", + "format": "uint32", + "minimum": 0, + "default": 1 + } + }, + "additionalProperties": false, + "required": ["urls"] + }, + "TlsClient": { + "description": "Configuration options pertaining to the subgraph server component.", + "type": "object", + "properties": { + "certificate_authorities": { + "description": "list of certificate authorities in PEM format", + "type": ["string", "null"], + "default": null + }, + "client_authentication": { + "description": "client certificate authentication", + "anyOf": [ + { + "$ref": "#/definitions/TlsClientAuth" + }, + { + "type": "null" + } + ], + "default": null + } + }, + "additionalProperties": false + }, + "TlsClientAuth": { + "description": "TLS client authentication", + "type": "object", + "properties": { + "certificate_chain": { + "description": "list of certificates in PEM format", + "type": "string", + "writeOnly": true + }, + "key": { + "description": "key in PEM format", + "type": "string", + "writeOnly": true + } + }, + "additionalProperties": false, + "required": ["certificate_chain", "key"] + }, + "CooperativeCancellation": { + "type": "object", + "properties": { + "enabled": { + "description": "When true, cooperative cancellation is enabled.", + "type": "boolean", + "default": true + }, + "mode": { + "description": "When enabled, this sets whether the router will cancel query planning or\nmerely emit a metric when it would have happened.", + "default": "measure", + "allOf": [ + { + "$ref": "#/definitions/Mode" + } + ] + }, + "timeout": { + "description": "Enable timeout for query planning.", + "type": ["string", "null"], + "default": null + } + }, + "additionalProperties": false + }, + "Mode": { + "type": "string", + "enum": ["measure", "enforce"] + }, + "Cors": { + "description": "Cross origin request configuration.", + "type": "object", + "properties": { + "allow_any_origin": { + "description": "Set to true to allow any origin. Defaults to false. This is the only way to allow Origin: null.", + "type": "boolean", + "default": false + }, + "allow_credentials": { + "description": "Set to true to add the `Access-Control-Allow-Credentials` header.", + "type": "boolean", + "default": false + }, + "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,\nyou also want to have a look at your `CSRF` plugins configuration,\nand make sure you either:\n- accept `x-apollo-operation-name` AND / OR `apollo-require-preflight`\n- defined `csrf` required headers in your yml configuration, as shown in the\n `examples/cors-and-csrf/custom-headers.router.yaml` files.", + "type": "array", + "items": { + "type": "string" + }, + "default": [] + }, + "expose_headers": { + "description": "Which response headers should be made available to scripts running in the browser,\nin response to a cross-origin request.", + "type": ["array", "null"], + "items": { + "type": "string" + }, + "default": null + }, + "methods": { + "description": "Allowed request methods. See module documentation for default behavior.", + "type": "array", + "items": { + "type": "string" + }, + "default": ["GET", "POST", "OPTIONS"] + }, + "max_age": { + "description": "The `Access-Control-Max-Age` header value in time units", + "type": "string", + "default": null + }, + "policies": { + "description": "The origin(s) to allow requests from. The router matches request origins against policies\nin order, first by exact match, then by regex. See module documentation for default behavior.", + "type": ["array", "null"], + "items": { + "$ref": "#/definitions/Policy" + }, + "default": [ + { + "allow_credentials": null, + "allow_headers": [], + "expose_headers": [], + "match_origins": [], + "max_age": null, + "methods": ["GET", "POST", "OPTIONS"], + "origins": ["https://studio.apollographql.com"] + } + ] + } + }, + "additionalProperties": false + }, + "Policy": { + "description": "Configuration for a specific set of origins", + "type": "object", + "properties": { + "allow_credentials": { + "description": "Set to true to add the `Access-Control-Allow-Credentials` header for these origins", + "type": ["boolean", "null"], + "default": null + }, + "allow_headers": { + "description": "The headers to allow for these origins", + "type": "array", + "items": { + "type": "string" + }, + "default": [] + }, + "expose_headers": { + "description": "Which response headers should be made available to scripts running in the browser", + "type": "array", + "items": { + "type": "string" + }, + "default": [] + }, + "match_origins": { + "description": "Regex patterns to match origins against.", + "type": "array", + "items": { + "type": "string" + }, + "default": [] + }, + "max_age": { + "description": "The `Access-Control-Max-Age` header value in time units", + "type": "string", + "default": null + }, + "methods": { + "description": "Allowed request methods for these origins.", + "type": ["array", "null"], + "items": { + "type": "string" + }, + "default": null + }, + "origins": { + "description": "The origins to allow requests from.", + "type": "array", + "items": { + "type": "string" + }, + "default": ["https://studio.apollographql.com"] + } + }, + "additionalProperties": false + }, + "Tls": { + "description": "TLS related configuration options.", + "type": "object", + "properties": { + "supergraph": { + "description": "TLS server configuration\n\nThis will affect the GraphQL endpoint and any other endpoint targeting the same listen address.", + "anyOf": [ + { + "$ref": "#/definitions/TlsSupergraph" + }, + { + "type": "null" + } + ], + "default": null + }, + "subgraph": { + "description": "Outgoing TLS configuration to subgraphs.", + "default": { + "all": { + "certificate_authorities": null, + "client_authentication": null + }, + "subgraphs": {} + }, + "allOf": [ + { + "$ref": "#/definitions/SubgraphTlsClientConfiguration" + } + ] + }, + "connector": { + "description": "Outgoing TLS configuration to Apollo Connectors.", + "default": { + "sources": {}, + "all": { + "certificate_authorities": null, + "client_authentication": null + } + }, + "allOf": [ + { + "$ref": "#/definitions/ConnectorConfiguration" + } + ] + } + }, + "additionalProperties": false + }, + "TlsSupergraph": { + "description": "Configuration options pertaining to the supergraph server component.", + "type": "object", + "properties": { + "certificate": { + "description": "server certificate in PEM format", + "type": "string", + "writeOnly": true + }, + "key": { + "description": "server key in PEM format", + "type": "string", + "writeOnly": true + }, + "certificate_chain": { + "description": "list of certificate authorities in PEM format", + "type": "string", + "writeOnly": true + } + }, + "additionalProperties": false, + "required": ["certificate", "key", "certificate_chain"] + }, + "SubgraphTlsClientConfiguration": { + "description": "Configuration options pertaining to the subgraph server component.", + "type": "object", + "properties": { + "all": { + "description": "options applying to all subgraphs", + "default": { + "certificate_authorities": null, + "client_authentication": null + }, + "allOf": [ + { + "$ref": "#/definitions/TlsClient" + } + ] + }, + "subgraphs": { + "description": "per subgraph options", + "type": "object", + "additionalProperties": { + "$ref": "#/definitions/TlsClient" + }, + "default": {} + } + } + }, + "ConnectorConfiguration": { + "type": "object", + "properties": { + "sources": { + "description": "Map of subgraph_name.connector_source_name to configuration", + "type": "object", + "additionalProperties": { + "$ref": "#/definitions/TlsClient" + }, + "default": {} + }, + "all": { + "description": "Options applying to all sources", + "default": { + "certificate_authorities": null, + "client_authentication": null + }, + "allOf": [ + { + "$ref": "#/definitions/TlsClient" + } + ] + } + } + }, + "Apq": { + "description": "Automatic Persisted Queries (APQ) configuration", + "type": "object", + "properties": { + "enabled": { + "description": "Activates Automatic Persisted Queries (enabled by default)", + "type": "boolean", + "default": true + }, + "router": { + "default": { + "cache": { + "in_memory": { + "limit": 512 + }, + "redis": null + } + }, + "allOf": [ + { + "$ref": "#/definitions/Router" + } + ] + }, + "subgraph": { + "default": { + "all": { + "enabled": false + }, + "subgraphs": {} + }, + "allOf": [ + { + "$ref": "#/definitions/SubgraphSubgraphApqConfiguration" + } + ] + } + }, + "additionalProperties": false + }, + "Router": { + "description": "Router level (APQ) configuration", + "type": "object", + "properties": { + "cache": { + "default": { + "in_memory": { + "limit": 512 + }, + "redis": null + }, + "allOf": [ + { + "$ref": "#/definitions/Cache" + } + ] + } + }, + "additionalProperties": false + }, + "Cache": { + "description": "Cache configuration", + "type": "object", + "properties": { + "in_memory": { + "description": "Configures the in memory cache (always active)", + "default": { + "limit": 512 + }, + "allOf": [ + { + "$ref": "#/definitions/InMemoryCache" + } + ] + }, + "redis": { + "description": "Configures and activates the Redis cache", + "anyOf": [ + { + "$ref": "#/definitions/RedisCache" + }, + { + "type": "null" + } + ], + "default": null + } + }, + "additionalProperties": false + }, + "RedisCache": { + "description": "Redis cache configuration", + "type": "object", + "properties": { + "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", "null"] + }, + "password": { + "description": "Redis password if not provided in the URLs. This field takes precedence over the password in the URL", + "type": ["string", "null"] + }, + "timeout": { + "description": "Redis request timeout (default: 500ms)", + "type": ["string", "null"], + "default": { + "secs": 0, + "nanos": 0 + } + }, + "ttl": { + "description": "TTL for entries", + "type": ["string", "null"], + "default": null + }, + "namespace": { + "description": "namespace used to prefix Redis keys", + "type": ["string", "null"] + }, + "tls": { + "description": "TLS client configuration", + "anyOf": [ + { + "$ref": "#/definitions/TlsClient" + }, + { + "type": "null" + } + ], + "default": null + }, + "required_to_start": { + "description": "Prevents the router from starting if it cannot connect to Redis", + "type": "boolean", + "default": false + }, + "reset_ttl": { + "description": "When a TTL is set on a key, reset it when reading the data from that key", + "type": "boolean", + "default": true + }, + "pool_size": { + "description": "The size of the Redis connection pool", + "type": "integer", + "format": "uint32", + "minimum": 0, + "default": 1 + }, + "metrics_interval": { + "description": "Interval for collecting Redis metrics (default: 1s)", + "type": ["string", "null"], + "default": { + "secs": 0, + "nanos": 0 + } + } + }, + "additionalProperties": false, + "required": ["urls"] + }, + "SubgraphSubgraphApqConfiguration": { + "description": "Configuration options pertaining to the subgraph server component.", + "type": "object", + "properties": { + "all": { + "description": "options applying to all subgraphs", + "default": { + "enabled": false + }, + "allOf": [ + { + "$ref": "#/definitions/SubgraphApq" + } + ] + }, + "subgraphs": { + "description": "per subgraph options", + "type": "object", + "additionalProperties": { + "$ref": "#/definitions/SubgraphApq" + }, + "default": {} + } + } + }, + "SubgraphApq": { + "description": "Subgraph level Automatic Persisted Queries (APQ) configuration", + "type": "object", + "properties": { + "enabled": { + "description": "Enable", + "type": "boolean", + "default": false + } + }, + "additionalProperties": false + }, + "PersistedQueries": { + "description": "Persisted Queries (PQ) configuration", + "type": "object", + "properties": { + "enabled": { + "description": "Activates Persisted Queries (disabled by default)", + "type": "boolean", + "default": false + }, + "log_unknown": { + "description": "Enabling this field configures the router to log any freeform GraphQL request that is not in the persisted query list", + "type": "boolean", + "default": false + }, + "safelist": { + "description": "Restricts execution of operations that are not found in the Persisted Query List", + "default": { + "enabled": false, + "require_id": false + }, + "allOf": [ + { + "$ref": "#/definitions/PersistedQueriesSafelist" + } + ] + }, + "experimental_prewarm_query_plan_cache": { + "description": "Experimental feature to prewarm the query plan cache with persisted queries", + "default": { + "on_startup": false, + "on_reload": true + }, + "allOf": [ + { + "$ref": "#/definitions/PersistedQueriesPrewarmQueryPlanCache" + } + ] + }, + "local_manifests": { + "description": "Enables using a local copy of the persisted query manifest to safelist operations", + "type": ["array", "null"], + "items": { + "type": "string" + }, + "default": null + }, + "hot_reload": { + "description": "Enables hot reloading of the local persisted query manifests", + "type": "boolean", + "default": false + } + }, + "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)", + "type": "boolean", + "default": false + }, + "require_id": { + "description": "Enabling this field configures the router to reject any request that does not include the persisted query ID", + "type": "boolean", + "default": false + } + }, + "additionalProperties": false + }, + "PersistedQueriesPrewarmQueryPlanCache": { + "description": "Persisted Queries (PQ) query plan cache prewarm configuration", + "type": "object", + "properties": { + "on_startup": { + "description": "Enabling this field uses the persisted query list to pre-warm the query planner cache on startup (disabled by default)", + "type": "boolean", + "default": false + }, + "on_reload": { + "description": "Enabling this field uses the persisted query list to pre-warm the query planner cache on schema and config changes (enabled by default)", + "type": "boolean", + "default": true + } + }, + "additionalProperties": false + }, + "LimitsConfig": { + "description": "Configuration for operation limits, parser limits, HTTP limits, etc.", + "type": "object", + "properties": { + "max_depth": { + "description": "If set, requests with operations deeper than this maximum\nare rejected with a HTTP 400 Bad Request response and GraphQL error with\n`\"extensions\": {\"code\": \"MAX_DEPTH_LIMIT\"}`\n\nCounts depth of an operation, looking at its selection sets,˛\nincluding fields in fragments and inline fragments. The following\nexample has a depth of 3.\n\n```graphql\nquery getProduct {\n book { # 1\n ...bookDetails\n }\n}\n\nfragment bookDetails on Book {\n details { # 2\n ... on ProductDetailsBook {\n country # 3\n }\n }\n}\n```", + "type": ["integer", "null"], + "format": "uint32", + "minimum": 0, + "default": null + }, + "max_height": { + "description": "If set, requests with operations higher than this maximum\nare rejected with a HTTP 400 Bad Request response and GraphQL error with\n`\"extensions\": {\"code\": \"MAX_DEPTH_LIMIT\"}`\n\nHeight is based on simple merging of fields using the same name or alias,\nbut only within the same selection set.\nFor example `name` here is only counted once and the query has height 3, not 4:\n\n```graphql\nquery {\n name { first }\n name { last }\n}\n```\n\nThis may change in a future version of Apollo Router to do\n[full field merging across fragments][merging] instead.\n\n[merging]: https://spec.graphql.org/October2021/#sec-Field-Selection-Merging]", + "type": ["integer", "null"], + "format": "uint32", + "minimum": 0, + "default": null + }, + "max_root_fields": { + "description": "If set, requests with operations with more root fields than this maximum\nare rejected with a HTTP 400 Bad Request response and GraphQL error with\n`\"extensions\": {\"code\": \"MAX_ROOT_FIELDS_LIMIT\"}`\n\nThis limit counts only the top level fields in a selection set,\nincluding fragments and inline fragments.", + "type": ["integer", "null"], + "format": "uint32", + "minimum": 0, + "default": null + }, + "max_aliases": { + "description": "If set, requests with operations with more aliases than this maximum\nare rejected with a HTTP 400 Bad Request response and GraphQL error with\n`\"extensions\": {\"code\": \"MAX_ALIASES_LIMIT\"}`", + "type": ["integer", "null"], + "format": "uint32", + "minimum": 0, + "default": null + }, + "warn_only": { + "description": "If set to true (which is the default is dev mode),\nrequests that exceed a `max_*` limit are *not* rejected.\nInstead they are executed normally, and a warning is logged.", + "type": "boolean", + "default": false + }, + "parser_max_recursion": { + "description": "Limit recursion in the GraphQL parser to protect against stack overflow.\ndefault: 500", + "type": "integer", + "format": "uint", + "minimum": 0, + "default": 500 + }, + "parser_max_tokens": { + "description": "Limit the number of tokens the GraphQL parser processes before aborting.", + "type": "integer", + "format": "uint", + "minimum": 0, + "default": 15000 + }, + "http_max_request_bytes": { + "description": "Limit the size of incoming HTTP requests read from the network,\nto protect against running out of memory. Default: 2000000 (2 MB)", + "type": "integer", + "format": "uint", + "minimum": 0, + "default": 2000000 + }, + "http1_max_request_headers": { + "description": "Limit the maximum number of headers of incoming HTTP1 requests. Default is 100.\n\nIf router receives more headers than the buffer size, it responds to the client with\n\"431 Request Header Fields Too Large\".", + "type": ["integer", "null"], + "format": "uint", + "minimum": 0, + "default": null + }, + "http1_max_request_buf_size": { + "description": "Limit the maximum buffer size for the HTTP1 connection.\n\nDefault is ~400kib.", + "type": ["string", "null"], + "default": null + }, + "introspection_max_depth": { + "description": "Limit the depth of nested list fields in introspection queries\nto protect avoid generating huge responses. Returns a GraphQL\nerror with `{ message: \"Maximum introspection depth exceeded\" }`\nwhen nested fields exceed the limit.\nDefault: true", + "type": "boolean", + "default": true + } + }, + "additionalProperties": false + }, + "Config": { + "description": "Configuration for chaos testing, trying to reproduce bugs that require uncommon conditions.\nYou probably don't want this in production!\n\n## How Chaos Reloading Works\n\nThe chaos system automatically captures and replays the last known schema and configuration\nevents to force hot reloads even when the underlying content hasn't actually changed. This\nis particularly useful for memory leak detection during hot reload scenarios.\nIf configured, it will activate upon the first config event that is encountered.\n\n### Schema Reloading (`force_schema_reload`)\nWhen enabled, the router will periodically replay the last schema event with a timestamp\ncomment injected into the SDL (e.g., `# Chaos reload timestamp: 1234567890`). This ensures\nthe schema is seen as \"different\" and triggers a full hot reload, even though the functional\nschema content is identical.\n\n### Configuration Reloading (`force_config_reload`)\nWhen enabled, the router will periodically replay the last configuration event. The\nconfiguration is cloned and re-emitted, which triggers the router's configuration change\ndetection and reload logic.\n\n### Example Usage\n```yaml\nexperimental_chaos:\n force_schema_reload: \"30s\" # Trigger schema reload every 30 seconds\n force_config_reload: \"2m\" # Trigger config reload every 2 minutes\n```", + "type": "object", + "properties": { + "force_schema_reload": { + "description": "Force a hot reload of the schema at regular intervals by injecting a timestamp comment\ninto the SDL. This ensures schema reloads occur even when the functional schema content\nhasn't changed, which is useful for testing memory leaks during schema hot reloads.\n\nThe system automatically captures the last schema event and replays it with a timestamp\ncomment added to make it appear \"different\" to the reload detection logic.", + "type": ["string", "null"], + "default": null + }, + "force_config_reload": { + "description": "Force a hot reload of the configuration at regular intervals by replaying the last\nconfiguration event. This triggers the router's configuration change detection even\nwhen the configuration content hasn't actually changed.\n\nThe system automatically captures the last configuration event and replays it to\nforce configuration reload processing.", + "type": ["string", "null"], + "default": null + } + }, + "additionalProperties": false + }, + "Plugins": { + "type": "object", + "properties": { + "experimental.broken": { + "$ref": "#/definitions/Config2" + }, + "experimental.expose_query_plan": { + "$ref": "#/definitions/ExposeQueryPlanConfig" + }, + "experimental.record": { + "$ref": "#/definitions/RecordConfig" + }, + "experimental.restricted": { + "$ref": "#/definitions/Config3" + } + }, + "additionalProperties": false, + "patternProperties": {} + }, + "Config2": { + "description": "This is a broken plugin for testing purposes only.", + "type": "object", + "properties": { + "enabled": { + "description": "Enable the broken plugin.", + "type": "boolean" + } + }, + "required": ["enabled"] + }, + "ExposeQueryPlanConfig": { + "description": "Expose query plan", + "type": "boolean" + }, + "RecordConfig": { + "description": "Request recording configuration.", + "type": "object", + "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\nthe current working directory.", + "type": ["string", "null"] + } + }, + "additionalProperties": false, + "required": ["enabled"] + }, + "Config3": { + "description": "Restricted plugin (for testing purposes only)", + "type": "object", + "properties": { + "enabled": { + "description": "Enable the restricted plugin (for testing purposes only)", + "type": "boolean" + } + }, + "required": ["enabled"] + }, + "AuthenticationConfig": { + "description": "Authentication", + "type": "object", + "properties": { + "router": { + "description": "Router configuration", + "anyOf": [ + { + "$ref": "#/definitions/AuthenticationRouterConfig" + }, + { + "type": "null" + } + ] + }, + "subgraph": { + "description": "Subgraph configuration", + "anyOf": [ + { + "$ref": "#/definitions/AuthenticationSubgraphConfig" + }, + { + "type": "null" + } + ] + }, + "connector": { + "description": "Connector configuration", + "anyOf": [ + { + "$ref": "#/definitions/AuthenticationConnectorConfig" + }, + { + "type": "null" + } + ] + } + }, + "additionalProperties": false + }, + "AuthenticationRouterConfig": { + "type": "object", + "properties": { + "jwt": { + "description": "The JWT configuration", + "allOf": [ + { + "$ref": "#/definitions/JWTConf" + } + ] + } + }, + "additionalProperties": false, + "required": ["jwt"] + }, + "JWTConf": { + "type": "object", + "properties": { + "jwks": { + "description": "List of JWKS used to verify tokens", + "type": "array", + "items": { + "$ref": "#/definitions/JwksConf" + } + }, + "header_name": { + "description": "HTTP header expected to contain JWT", + "type": "string", + "default": "authorization" + }, + "header_value_prefix": { + "description": "Header value prefix", + "type": "string", + "default": "Bearer" + }, + "ignore_other_prefixes": { + "description": "Whether to ignore any mismatched prefixes", + "type": "boolean", + "default": false + }, + "sources": { + "description": "Alternative sources to extract the JWT", + "type": "array", + "items": { + "$ref": "#/definitions/Source" + } + }, + "on_error": { + "description": "Control the behavior when an error occurs during the authentication process.\n\nDefaults to `Error`. When set to `Continue`, requests that fail JWT authentication will\ncontinue to be processed by the router, but without the JWT claims in the context. When set\nto `Error`, requests that fail JWT authentication will be rejected with a HTTP 403 error.", + "allOf": [ + { + "$ref": "#/definitions/OnError" + } + ] + } + }, + "additionalProperties": false, + "required": ["jwks"] + }, + "JwksConf": { + "type": "object", + "properties": { + "url": { + "description": "Retrieve the JWK Set", + "type": "string" + }, + "poll_interval": { + "description": "Polling interval for each JWKS endpoint in human-readable format; defaults to 60s", + "type": "string", + "default": { + "secs": 60, + "nanos": 0 + } + }, + "issuers": { + "description": "Expected issuers for tokens verified by that JWKS\n\nIf not specified, the issuer will not be checked.", + "type": ["array", "null"], + "uniqueItems": true, + "items": { + "type": "string" + } + }, + "audiences": { + "description": "Expected audiences for tokens verified by that JWKS\n\nIf not specified, the audience will not be checked.", + "type": ["array", "null"], + "uniqueItems": true, + "items": { + "type": "string" + } + }, + "algorithms": { + "description": "List of accepted algorithms. Possible values are `HS256`, `HS384`, `HS512`, `ES256`, `ES384`, `RS256`, `RS384`, `RS512`, `PS256`, `PS384`, `PS512`, `EdDSA`", + "type": ["array", "null"], + "items": { + "type": "string" + }, + "default": null + }, + "headers": { + "description": "List of headers to add to the JWKS request", + "type": "array", + "items": { + "$ref": "#/definitions/Header" + } + } + }, + "additionalProperties": false, + "required": ["url"] + }, + "Header": { + "description": "Insert a header", + "type": "object", + "properties": { + "name": { + "description": "The name of the header", + "type": "string" + }, + "value": { + "description": "The value for the header", + "type": "string" + } + }, + "additionalProperties": false, + "required": ["name", "value"] + }, + "Source": { + "oneOf": [ + { + "type": "object", + "properties": { + "name": { + "description": "HTTP header expected to contain JWT", + "type": "string", + "default": "authorization" + }, + "value_prefix": { + "description": "Header value prefix", + "type": "string", + "default": "Bearer" + }, + "type": { + "type": "string", + "const": "header" + } + }, + "additionalProperties": false, + "required": ["type"] + }, + { + "type": "object", + "properties": { + "name": { + "description": "Name of the cookie containing the JWT", + "type": "string" + }, + "type": { + "type": "string", + "const": "cookie" + } + }, + "additionalProperties": false, + "required": ["type", "name"] + } + ] + }, + "OnError": { + "type": "string", + "enum": ["Continue", "Error"] + }, + "AuthenticationSubgraphConfig": { + "description": "Configure subgraph authentication", + "type": "object", + "properties": { + "all": { + "description": "Configuration that will apply to all subgraphs.", + "anyOf": [ + { + "$ref": "#/definitions/AuthConfig" + }, + { + "type": "null" + } + ], + "default": null + }, + "subgraphs": { + "description": "Create a configuration that will apply only to a specific subgraph.", + "type": "object", + "additionalProperties": { + "$ref": "#/definitions/AuthConfig" + }, + "default": {} + } + }, + "additionalProperties": false + }, + "AuthConfig": { + "oneOf": [ + { + "type": "object", + "properties": { + "aws_sig_v4": { + "$ref": "#/definitions/AWSSigV4Config" + } + }, + "required": ["aws_sig_v4"], + "additionalProperties": false + } + ] + }, + "AWSSigV4Config": { + "description": "Configure AWS sigv4 auth.", + "oneOf": [ + { + "type": "object", + "properties": { + "hardcoded": { + "$ref": "#/definitions/AWSSigV4HardcodedConfig" + } + }, + "required": ["hardcoded"], + "additionalProperties": false + }, + { + "type": "object", + "properties": { + "default_chain": { + "$ref": "#/definitions/DefaultChainConfig" + } + }, + "required": ["default_chain"], + "additionalProperties": false + } + ] + }, + "AWSSigV4HardcodedConfig": { + "description": "Hardcoded Config using access_key and secret.\nPrefer using DefaultChain instead.", + "type": "object", + "properties": { + "access_key_id": { + "description": "The ID for this access key.", + "type": "string" + }, + "secret_access_key": { + "description": "The secret key used to sign requests.", + "type": "string" + }, + "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" + }, + "assume_role": { + "description": "Specify assumed role configuration.", + "anyOf": [ + { + "$ref": "#/definitions/AssumeRoleProvider" + }, + { + "type": "null" + } + ] + } + }, + "additionalProperties": false, + "required": [ + "access_key_id", + "secret_access_key", + "region", + "service_name" + ] + }, + "AssumeRoleProvider": { + "description": "Specify assumed role configuration.", + "type": "object", + "properties": { + "role_arn": { + "description": "Amazon Resource Name (ARN)\nfor 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" + }, + "external_id": { + "description": "Unique identifier that might be required when you assume a role in another account.", + "type": ["string", "null"] + } + }, + "additionalProperties": false, + "required": ["role_arn", "session_name"] + }, + "DefaultChainConfig": { + "description": "Configuration of the DefaultChainProvider", + "type": "object", + "properties": { + "region": { + "description": "The AWS region this chain applies to.", + "type": "string" + }, + "profile_name": { + "description": "The profile name used by this provider", + "type": ["string", "null"] + }, + "service_name": { + "description": "The service you're trying to access, eg: \"s3\", \"vpc-lattice-svcs\", etc.", + "type": "string" + }, + "assume_role": { + "description": "Specify assumed role configuration.", + "anyOf": [ + { + "$ref": "#/definitions/AssumeRoleProvider" + }, + { + "type": "null" + } + ] + } + }, + "additionalProperties": false, + "required": ["region", "service_name"] + }, + "AuthenticationConnectorConfig": { + "description": "Configure connector authentication", + "type": "object", + "properties": { + "sources": { + "description": "Create a configuration that will apply only to a specific source.", + "type": "object", + "additionalProperties": { + "$ref": "#/definitions/AuthConfig" + }, + "default": {} + } + }, + "additionalProperties": false + }, + "AuthorizationConfig": { + "description": "Authorization plugin", + "type": "object", + "properties": { + "require_authentication": { + "description": "Reject unauthenticated requests", + "type": "boolean", + "default": false + }, + "directives": { + "description": "`@authenticated`, `@requiresScopes` and `@policy` directives", + "allOf": [ + { + "$ref": "#/definitions/AuthorizationDirectivesConfig" + } + ] + } + } + }, + "AuthorizationDirectivesConfig": { + "type": "object", + "properties": { + "enabled": { + "description": "enables the `@authenticated` and `@requiresScopes` directives", + "type": "boolean", + "default": true + }, + "dry_run": { + "description": "generates the authorization error messages without modying the query", + "type": "boolean", + "default": false + }, + "reject_unauthorized": { + "description": "refuse a query entirely if any part would be filtered", + "type": "boolean", + "default": false + }, + "errors": { + "description": "authorization errors behaviour", + "default": { + "log": true, + "response": "errors" + }, + "allOf": [ + { + "$ref": "#/definitions/AuthorizationErrorConfig" + } + ] + } + } + }, + "AuthorizationErrorConfig": { + "type": "object", + "properties": { + "log": { + "description": "log authorization errors", + "type": "boolean", + "default": true + }, + "response": { + "description": "location of authorization errors in the GraphQL response", + "default": "errors", + "allOf": [ + { + "$ref": "#/definitions/ErrorLocation" + } + ] + } + } + }, + "ErrorLocation": { + "oneOf": [ + { + "description": "store authorization errors in the response errors", + "type": "string", + "const": "errors" + }, + { + "description": "store authorization errors in the response extensions", + "type": "string", + "const": "extensions" + }, + { + "description": "do not add the authorization errors to the GraphQL response", + "type": "string", + "const": "disabled" + } + ] + }, + "ConnectorsConfig": { + "description": "Configuration for Apollo Connectors.\n\nhttps://www.apollographql.com/docs/graphos/routing/configuration/yaml#connectors", + "type": "object", + "properties": { + "subgraphs": { + "description": "A map of subgraph name to connectors config for that subgraph", + "type": "object", + "additionalProperties": { + "$ref": "#/definitions/SubgraphConnectorConfiguration" + }, + "deprecated": true, + "default": {} + }, + "sources": { + "description": "Map of subgraph_name.connector_source_name to source configuration", + "type": "object", + "additionalProperties": { + "$ref": "#/definitions/SourceConfiguration" + }, + "default": {} + }, + "debug_extensions": { + "description": "Enables connector debugging information on response extensions if the feature is enabled", + "type": "boolean", + "default": false + }, + "max_requests_per_operation_per_source": { + "description": "The maximum number of requests for a connector source", + "type": ["integer", "null"], + "format": "uint", + "minimum": 0, + "default": null + }, + "expose_sources_in_context": { + "description": "When enabled, adds an entry to the context for use in coprocessors\n\n```json\n{\n \"context\": {\n \"entries\": {\n \"apollo_connectors::sources_in_query_plan\": [\n { \"subgraph_name\": \"subgraph\", \"source_name\": \"source\" }\n ]\n }\n }\n}\n```", + "type": "boolean", + "default": false + }, + "preview_connect_v0_2": { + "description": "Enables Connect spec v0.2 during the preview.", + "type": ["boolean", "null"], + "deprecated": true, + "default": null + }, + "preview_connect_v0_3": { + "description": "Feature gate for Connect spec v0.3. Set to `true` to enable the using\nthe v0.3 spec during the preview phase.", + "type": ["boolean", "null"], + "deprecated": true, + "default": null + }, + "preview_connect_v0_4": { + "description": "Feature gate for Connect spec v0.3. Set to `true` to enable the using\nthe v0.3 spec during the preview phase.", + "type": ["boolean", "null"], + "default": null + } + }, + "additionalProperties": false + }, + "SubgraphConnectorConfiguration": { + "description": "Configuration for a connector subgraph", + "type": "object", + "properties": { + "$config": { + "description": "Other values that can be used by connectors via `{$config.}`", + "type": "object", + "additionalProperties": true, + "default": {} + }, + "sources": { + "description": "A map of `@source(name:)` to configuration for that source", + "type": "object", + "additionalProperties": { + "$ref": "#/definitions/SourceConfiguration" + }, + "default": {} + } + }, + "additionalProperties": false + }, + "SourceConfiguration": { + "description": "Configuration for a `@source` directive", + "type": "object", + "properties": { + "$config": { + "description": "Other values that can be used by connectors via `{$config.}`", + "type": "object", + "additionalProperties": true, + "default": {} + }, + "override_url": { + "description": "Override the `@source(http: {baseURL:})`", + "type": ["string", "null"], + "format": "uri", + "default": null + }, + "max_requests_per_operation": { + "description": "The maximum number of requests for this source", + "type": ["integer", "null"], + "format": "uint", + "minimum": 0, + "default": null + } + }, + "additionalProperties": false + }, + "CoprocessorConfig": { + "description": "Configures the externalization plugin", + "type": "object", + "properties": { + "url": { + "description": "The url you'd like to offload processing to (can be overridden per-stage)", + "type": "string" + }, + "client": { + "anyOf": [ + { + "$ref": "#/definitions/Client" + }, + { + "type": "null" + } + ] + }, + "timeout": { + "description": "The timeout for external requests", + "type": "string", + "default": { + "secs": 1, + "nanos": 0 + } + }, + "response_validation": { + "description": "Response validation defaults to true", + "type": "boolean", + "default": true + }, + "router": { + "description": "The router stage request/response configuration", + "allOf": [ + { + "$ref": "#/definitions/RouterStage" + } + ] + }, + "supergraph": { + "description": "The supergraph stage request/response configuration", + "allOf": [ + { + "$ref": "#/definitions/SupergraphStage" + } + ] + }, + "execution": { + "description": "The execution stage request/response configuration", + "allOf": [ + { + "$ref": "#/definitions/ExecutionStage" + } + ] + }, + "subgraph": { + "description": "The subgraph stage request/response configuration", + "allOf": [ + { + "$ref": "#/definitions/SubgraphStages" + } + ] + } + }, + "additionalProperties": false, + "required": ["url"] + }, + "Client": { + "description": "HTTP client configuration for coprocessors.", + "type": "object", + "properties": { + "experimental_http2": { + "description": "Use HTTP/2 to communicate with the coprocessor.", + "anyOf": [ + { + "$ref": "#/definitions/Http2Config" + }, + { + "type": "null" + } + ] + }, + "dns_resolution_strategy": { + "description": "Specify a DNS resolution strategy to use when resolving the coprocessor URL.", + "anyOf": [ + { + "$ref": "#/definitions/DnsResolutionStrategy" + }, + { + "type": "null" + } + ] + } + }, + "additionalProperties": false + }, + "Http2Config": { + "oneOf": [ + { + "description": "Enable HTTP2 for subgraphs", + "type": "string", + "const": "enable" + }, + { + "description": "Disable HTTP2 for subgraphs", + "type": "string", + "const": "disable" + }, + { + "description": "Only HTTP2 is active", + "type": "string", + "const": "http2only" + } + ] + }, + "DnsResolutionStrategy": { + "oneOf": [ + { + "description": "Only query for `A` (IPv4) records", + "type": "string", + "const": "ipv4_only" + }, + { + "description": "Only query for `AAAA` (IPv6) records", + "type": "string", + "const": "ipv6_only" + }, + { + "description": "Query for both `A` (IPv4) and `AAAA` (IPv6) records in parallel", + "type": "string", + "const": "ipv4_and_ipv6" + }, + { + "description": "Query for `AAAA` (IPv6) records first; if that fails, query for `A` (IPv4) records", + "type": "string", + "const": "ipv6_then_ipv4" + }, + { + "description": "Default: Query for `A` (IPv4) records first; if that fails, query for `AAAA` (IPv6) records", + "type": "string", + "const": "ipv4_then_ipv6" + } + ] + }, + "RouterStage": { + "type": "object", + "properties": { + "request": { + "description": "The request configuration", + "allOf": [ + { + "$ref": "#/definitions/RouterRequestConf" + } + ] + }, + "response": { + "description": "The response configuration", + "allOf": [ + { + "$ref": "#/definitions/RouterResponseConf" + } + ] + } + } + }, + "RouterRequestConf": { + "description": "What information is passed to a router request/response stage", + "type": "object", + "properties": { + "condition": { + "description": "Condition to trigger this stage", + "anyOf": [ + { + "$ref": "#/definitions/ConditionRouterSelector" + }, + { + "type": "null" + } + ] + }, + "headers": { + "description": "Send the headers", + "type": "boolean", + "default": false + }, + "context": { + "description": "Send the context", + "allOf": [ + { + "$ref": "#/definitions/ContextConf" + } + ] + }, + "body": { + "description": "Send the body", + "type": "boolean", + "default": false + }, + "sdl": { + "description": "Send the SDL", + "type": "boolean", + "default": false + }, + "path": { + "description": "Send the path", + "type": "boolean", + "default": false + }, + "method": { + "description": "Send the method", + "type": "boolean", + "default": false + }, + "url": { + "description": "The coprocessor URL for this stage (overrides the global URL if specified)", + "type": ["string", "null"], + "default": null + } + }, + "additionalProperties": false + }, + "ConditionRouterSelector": { + "description": "Specify a condition for when an [instrument][] should be mutated or an [event][] should be triggered.\n\n[instrument]: https://www.apollographql.com/docs/graphos/routing/observability/telemetry/instrumentation/instruments\n[event]: https://www.apollographql.com/docs/graphos/routing/observability/telemetry/instrumentation/events", + "oneOf": [ + { + "description": "A condition to check a selection against a value.", + "type": "object", + "properties": { + "eq": { + "type": "array", + "items": { + "$ref": "#/definitions/RouterSelectorOrValue" + }, + "minItems": 2, + "maxItems": 2 + } + }, + "required": ["eq"], + "additionalProperties": false + }, + { + "description": "The first selection must be greater than the second selection.", + "type": "object", + "properties": { + "gt": { + "type": "array", + "items": { + "$ref": "#/definitions/RouterSelectorOrValue" + }, + "minItems": 2, + "maxItems": 2 + } + }, + "required": ["gt"], + "additionalProperties": false + }, + { + "description": "The first selection must be less than the second selection.", + "type": "object", + "properties": { + "lt": { + "type": "array", + "items": { + "$ref": "#/definitions/RouterSelectorOrValue" + }, + "minItems": 2, + "maxItems": 2 + } + }, + "required": ["lt"], + "additionalProperties": false + }, + { + "description": "A condition to check a selection against a selector.", + "type": "object", + "properties": { + "exists": { + "$ref": "#/definitions/RouterSelector" + } + }, + "required": ["exists"], + "additionalProperties": false + }, + { + "description": "All sub-conditions must be true.", + "type": "object", + "properties": { + "all": { + "type": "array", + "items": { + "$ref": "#/definitions/ConditionRouterSelector" + } + } + }, + "required": ["all"], + "additionalProperties": false + }, + { + "description": "At least one sub-conditions must be true.", + "type": "object", + "properties": { + "any": { + "type": "array", + "items": { + "$ref": "#/definitions/ConditionRouterSelector" + } + } + }, + "required": ["any"], + "additionalProperties": false + }, + { + "description": "The sub-condition must not be true", + "type": "object", + "properties": { + "not": { + "$ref": "#/definitions/ConditionRouterSelector" + } + }, + "required": ["not"], + "additionalProperties": false + }, + { + "description": "Static true condition", + "type": "string", + "const": "true" + }, + { + "description": "Static false condition", + "type": "string", + "const": "false" + } + ] + }, + "RouterSelectorOrValue": { + "anyOf": [ + { + "description": "A constant value.", + "allOf": [ + { + "$ref": "#/definitions/AttributeValue" + } + ] + }, + { + "description": "Selector to extract a value from the pipeline.", + "allOf": [ + { + "$ref": "#/definitions/RouterSelector" + } + ] + } + ] + }, + "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": "Array of homogeneous values", + "allOf": [ + { + "$ref": "#/definitions/AttributeArray" + } + ] + } + ] + }, + "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" + } + } + ] + }, + "RouterSelector": { + "anyOf": [ + { + "description": "A value from baggage.", + "type": "object", + "properties": { + "baggage": { + "description": "The name of the baggage item.", + "type": "string" + }, + "default": { + "description": "Optional default value.", + "anyOf": [ + { + "$ref": "#/definitions/AttributeValue" + }, + { + "type": "null" + } + ] + } + }, + "additionalProperties": false, + "required": ["baggage"] + }, + { + "description": "A value from an environment variable.", + "type": "object", + "properties": { + "env": { + "description": "The name of the environment variable", + "type": "string" + }, + "default": { + "description": "Optional default value.", + "type": ["string", "null"] + } + }, + "additionalProperties": false, + "required": ["env"] + }, + { + "description": "Critical error if it happens", + "type": "object", + "properties": { + "error": { + "$ref": "#/definitions/ErrorRepr" + } + }, + "additionalProperties": false, + "required": ["error"] + }, + { + "description": "Boolean set to true if the response body contains graphql error", + "type": "object", + "properties": { + "on_graphql_error": { + "type": "boolean" + } + }, + "additionalProperties": false, + "required": ["on_graphql_error"] + }, + { + "description": "The operation name from the query.", + "type": "object", + "properties": { + "operation_name": { + "description": "The operation name from the query.", + "allOf": [ + { + "$ref": "#/definitions/OperationName" + } + ] + }, + "default": { + "description": "Optional default value.", + "type": ["string", "null"] + } + }, + "additionalProperties": false, + "required": ["operation_name"] + }, + { + "description": "A header from the request", + "type": "object", + "properties": { + "request_header": { + "description": "The name of the request header.", + "type": "string" + }, + "default": { + "description": "Optional default value.", + "anyOf": [ + { + "$ref": "#/definitions/AttributeValue" + }, + { + "type": "null" + } + ] + } + }, + "additionalProperties": false, + "required": ["request_header"] + }, + { + "description": "A value from context.", + "type": "object", + "properties": { + "request_context": { + "description": "The request context key.", + "type": "string" + }, + "default": { + "description": "Optional default value.", + "anyOf": [ + { + "$ref": "#/definitions/AttributeValue" + }, + { + "type": "null" + } + ] + } + }, + "additionalProperties": false, + "required": ["request_context"] + }, + { + "description": "The request method.", + "type": "object", + "properties": { + "request_method": { + "description": "The request method enabled or not", + "type": "boolean" + } + }, + "additionalProperties": false, + "required": ["request_method"] + }, + { + "description": "The body of the response", + "type": "object", + "properties": { + "response_body": { + "description": "The response body enabled or not", + "type": "boolean" + } + }, + "additionalProperties": false, + "required": ["response_body"] + }, + { + "description": "The body response errors", + "type": "object", + "properties": { + "response_errors": { + "description": "The router response body json path of the chunks.", + "type": "string" + } + }, + "additionalProperties": false, + "required": ["response_errors"] + }, + { + "description": "A header from the response", + "type": "object", + "properties": { + "response_header": { + "description": "The name of the request header.", + "type": "string" + }, + "default": { + "description": "Optional default value.", + "anyOf": [ + { + "$ref": "#/definitions/AttributeValue" + }, + { + "type": "null" + } + ] + } + }, + "additionalProperties": false, + "required": ["response_header"] + }, + { + "description": "A value from context.", + "type": "object", + "properties": { + "response_context": { + "description": "The response context key.", + "type": "string" + }, + "default": { + "description": "Optional default value.", + "anyOf": [ + { + "$ref": "#/definitions/AttributeValue" + }, + { + "type": "null" + } + ] + } + }, + "additionalProperties": false, + "required": ["response_context"] + }, + { + "description": "A status from the response", + "type": "object", + "properties": { + "response_status": { + "description": "The http response status code.", + "allOf": [ + { + "$ref": "#/definitions/ResponseStatus" + } + ] + } + }, + "additionalProperties": false, + "required": ["response_status"] + }, + { + "description": "Router overhead duration (time not spent in subgraph requests)", + "type": "object", + "properties": { + "router_overhead": { + "description": "Extract router overhead duration in seconds", + "type": "boolean" + } + }, + "additionalProperties": false, + "required": ["router_overhead"] + }, + { + "description": "Number of active subgraph requests at the time of overhead calculation", + "type": "object", + "properties": { + "active_subgraph_requests": { + "description": "The mode for extracting active subgraph request information", + "allOf": [ + { + "$ref": "#/definitions/ActiveSubgraphRequests" + } + ] + } + }, + "additionalProperties": false, + "required": ["active_subgraph_requests"] + }, + { + "description": "Deprecated, should not be used anymore, use static field instead", + "type": "string" + }, + { + "type": "object", + "properties": { + "static": { + "description": "A static value", + "allOf": [ + { + "$ref": "#/definitions/AttributeValue" + } + ] + } + }, + "additionalProperties": false, + "required": ["static"] + }, + { + "description": "Apollo Studio operation id", + "type": "object", + "properties": { + "studio_operation_id": { + "description": "Apollo Studio operation id", + "type": "boolean" + } + }, + "additionalProperties": false, + "required": ["studio_operation_id"] + }, + { + "description": "The trace ID of the request.", + "type": "object", + "properties": { + "trace_id": { + "description": "The format of the trace ID.", + "allOf": [ + { + "$ref": "#/definitions/TraceIdFormat" + } + ] + } + }, + "additionalProperties": false, + "required": ["trace_id"] + } + ] + }, + "ErrorRepr": { + "oneOf": [ + { + "description": "The error reason", + "type": "string", + "const": "reason" + } + ] + }, + "OperationName": { + "oneOf": [ + { + "description": "The raw operation name.", + "type": "string", + "const": "string" + }, + { + "description": "A hash of the operation name.", + "type": "string", + "const": "hash" + } + ] + }, + "ResponseStatus": { + "oneOf": [ + { + "description": "The http status code.", + "type": "string", + "const": "code" + }, + { + "description": "The http status reason.", + "type": "string", + "const": "reason" + } + ] + }, + "ActiveSubgraphRequests": { + "oneOf": [ + { + "description": "The number of active subgraph requests as a count.", + "type": "string", + "const": "count" + }, + { + "description": "Whether there are any active subgraph requests as a boolean.", + "type": "string", + "const": "bool" + } + ] + }, + "TraceIdFormat": { + "oneOf": [ + { + "description": "Format the Trace ID as a hexadecimal number\n\n(e.g. Trace ID 16 -> 00000000000000000000000000000010)", + "type": "string", + "const": "hexadecimal" + }, + { + "description": "Format the Trace ID as a hexadecimal number\n\n(e.g. Trace ID 16 -> 00000000000000000000000000000010)", + "type": "string", + "const": "open_telemetry" + }, + { + "description": "Format the Trace ID as a decimal number\n\n(e.g. Trace ID 16 -> 16)", + "type": "string", + "const": "decimal" + }, + { + "description": "Datadog", + "type": "string", + "const": "datadog" + }, + { + "description": "UUID format with dashes\n(eg. 67e55044-10b1-426f-9247-bb680e5fe0c8)", + "type": "string", + "const": "uuid" + } + ] + }, + "ContextConf": { + "description": "Configures the context", + "anyOf": [ + { + "description": "Deprecated configuration using a boolean", + "type": "boolean" + }, + { + "$ref": "#/definitions/NewContextConf" + } + ] + }, + "NewContextConf": { + "description": "Configures the context", + "oneOf": [ + { + "description": "Send all context keys to coprocessor", + "type": "string", + "const": "all" + }, + { + "description": "Send all context keys using deprecated names (from router 1.x) to coprocessor", + "type": "string", + "const": "deprecated" + }, + { + "description": "Only send the list of context keys to coprocessor", + "type": "object", + "properties": { + "selective": { + "type": "array", + "uniqueItems": true, + "items": { + "type": "string" + } + } + }, + "required": ["selective"], + "additionalProperties": false + } + ] + }, + "RouterResponseConf": { + "description": "What information is passed to a router request/response stage", + "type": "object", + "properties": { + "condition": { + "description": "Condition to trigger this stage", + "allOf": [ + { + "$ref": "#/definitions/ConditionRouterSelector" + } + ] + }, + "headers": { + "description": "Send the headers", + "type": "boolean", + "default": false + }, + "context": { + "description": "Send the context", + "allOf": [ + { + "$ref": "#/definitions/ContextConf" + } + ] + }, + "body": { + "description": "Send the body", + "type": "boolean", + "default": false + }, + "sdl": { + "description": "Send the SDL", + "type": "boolean", + "default": false + }, + "status_code": { + "description": "Send the HTTP status", + "type": "boolean", + "default": false + }, + "url": { + "description": "The coprocessor URL for this stage (overrides the global URL if specified)", + "type": ["string", "null"], + "default": null + } + }, + "additionalProperties": false + }, + "SupergraphStage": { + "type": "object", + "properties": { + "request": { + "description": "The request configuration", + "allOf": [ + { + "$ref": "#/definitions/SupergraphRequestConf" + } + ] + }, + "response": { + "$ref": "#/definitions/SupergraphResponseConf" + } + } + }, + "SupergraphRequestConf": { + "description": "What information is passed to a router request/response stage", + "type": "object", + "properties": { + "condition": { + "description": "Condition to trigger this stage", + "allOf": [ + { + "$ref": "#/definitions/ConditionSupergraphSelector" + } + ] + }, + "headers": { + "description": "Send the headers", + "type": "boolean", + "default": false + }, + "context": { + "description": "Send the context", + "allOf": [ + { + "$ref": "#/definitions/ContextConf" + } + ] + }, + "body": { + "description": "Send the body", + "type": "boolean", + "default": false + }, + "sdl": { + "description": "Send the SDL", + "type": "boolean", + "default": false + }, + "method": { + "description": "Send the method", + "type": "boolean", + "default": false + }, + "url": { + "description": "The coprocessor URL for this stage (overrides the global URL if specified)", + "type": ["string", "null"], + "default": null + } + }, + "additionalProperties": false + }, + "ConditionSupergraphSelector": { + "description": "Specify a condition for when an [instrument][] should be mutated or an [event][] should be triggered.\n\n[instrument]: https://www.apollographql.com/docs/graphos/routing/observability/telemetry/instrumentation/instruments\n[event]: https://www.apollographql.com/docs/graphos/routing/observability/telemetry/instrumentation/events", + "oneOf": [ + { + "description": "A condition to check a selection against a value.", + "type": "object", + "properties": { + "eq": { + "type": "array", + "items": { + "$ref": "#/definitions/SupergraphSelectorOrValue" + }, + "minItems": 2, + "maxItems": 2 + } + }, + "required": ["eq"], + "additionalProperties": false + }, + { + "description": "The first selection must be greater than the second selection.", + "type": "object", + "properties": { + "gt": { + "type": "array", + "items": { + "$ref": "#/definitions/SupergraphSelectorOrValue" + }, + "minItems": 2, + "maxItems": 2 + } + }, + "required": ["gt"], + "additionalProperties": false + }, + { + "description": "The first selection must be less than the second selection.", + "type": "object", + "properties": { + "lt": { + "type": "array", + "items": { + "$ref": "#/definitions/SupergraphSelectorOrValue" + }, + "minItems": 2, + "maxItems": 2 + } + }, + "required": ["lt"], + "additionalProperties": false + }, + { + "description": "A condition to check a selection against a selector.", + "type": "object", + "properties": { + "exists": { + "$ref": "#/definitions/SupergraphSelector" + } + }, + "required": ["exists"], + "additionalProperties": false + }, + { + "description": "All sub-conditions must be true.", + "type": "object", + "properties": { + "all": { + "type": "array", + "items": { + "$ref": "#/definitions/ConditionSupergraphSelector" + } + } + }, + "required": ["all"], + "additionalProperties": false + }, + { + "description": "At least one sub-conditions must be true.", + "type": "object", + "properties": { + "any": { + "type": "array", + "items": { + "$ref": "#/definitions/ConditionSupergraphSelector" + } + } + }, + "required": ["any"], + "additionalProperties": false + }, + { + "description": "The sub-condition must not be true", + "type": "object", + "properties": { + "not": { + "$ref": "#/definitions/ConditionSupergraphSelector" + } + }, + "required": ["not"], + "additionalProperties": false + }, + { + "description": "Static true condition", + "type": "string", + "const": "true" + }, + { + "description": "Static false condition", + "type": "string", + "const": "false" + } + ] + }, + "SupergraphSelectorOrValue": { + "anyOf": [ + { + "description": "A constant value.", + "allOf": [ + { + "$ref": "#/definitions/AttributeValue" + } + ] + }, + { + "description": "Selector to extract a value from the pipeline.", + "allOf": [ + { + "$ref": "#/definitions/SupergraphSelector" + } + ] + } + ] + }, + "SupergraphSelector": { + "anyOf": [ + { + "type": "object", + "properties": { + "operation_name": { + "description": "The operation name from the query.", + "allOf": [ + { + "$ref": "#/definitions/OperationName" + } + ] + }, + "default": { + "description": "Optional default value.", + "type": ["string", "null"] + } + }, + "additionalProperties": false, + "required": ["operation_name"] + }, + { + "type": "object", + "properties": { + "operation_kind": { + "description": "The operation kind from the query (query|mutation|subscription).", + "allOf": [ + { + "$ref": "#/definitions/OperationKind" + } + ] + } + }, + "additionalProperties": false, + "required": ["operation_kind"] + }, + { + "type": "object", + "properties": { + "query": { + "description": "The graphql query.", + "allOf": [ + { + "$ref": "#/definitions/Query" + } + ] + }, + "default": { + "description": "Optional default value.", + "type": ["string", "null"] + } + }, + "additionalProperties": false, + "required": ["query"] + }, + { + "type": "object", + "properties": { + "query_variable": { + "description": "The name of a graphql query variable.", + "type": "string" + }, + "default": { + "description": "Optional default value.", + "anyOf": [ + { + "$ref": "#/definitions/AttributeValue" + }, + { + "type": "null" + } + ] + } + }, + "additionalProperties": false, + "required": ["query_variable"] + }, + { + "type": "object", + "properties": { + "request_header": { + "description": "The name of the request header.", + "type": "string" + }, + "default": { + "description": "Optional default value.", + "type": ["string", "null"] + } + }, + "additionalProperties": false, + "required": ["request_header"] + }, + { + "type": "object", + "properties": { + "response_header": { + "description": "The name of the response header.", + "type": "string" + }, + "default": { + "description": "Optional default value.", + "type": ["string", "null"] + } + }, + "additionalProperties": false, + "required": ["response_header"] + }, + { + "description": "A status from the response", + "type": "object", + "properties": { + "response_status": { + "description": "The http response status code.", + "allOf": [ + { + "$ref": "#/definitions/ResponseStatus" + } + ] + } + }, + "additionalProperties": false, + "required": ["response_status"] + }, + { + "type": "object", + "properties": { + "request_context": { + "description": "The request context key.", + "type": "string" + }, + "default": { + "description": "Optional default value.", + "anyOf": [ + { + "$ref": "#/definitions/AttributeValue" + }, + { + "type": "null" + } + ] + } + }, + "additionalProperties": false, + "required": ["request_context"] + }, + { + "type": "object", + "properties": { + "response_context": { + "description": "The response context key.", + "type": "string" + }, + "default": { + "description": "Optional default value.", + "anyOf": [ + { + "$ref": "#/definitions/AttributeValue" + }, + { + "type": "null" + } + ] + } + }, + "additionalProperties": false, + "required": ["response_context"] + }, + { + "type": "object", + "properties": { + "response_data": { + "description": "The supergraph response body json path of the chunks.", + "type": "string" + }, + "default": { + "description": "Optional default value.", + "anyOf": [ + { + "$ref": "#/definitions/AttributeValue" + }, + { + "type": "null" + } + ] + } + }, + "additionalProperties": false, + "required": ["response_data"] + }, + { + "type": "object", + "properties": { + "response_errors": { + "description": "The supergraph response body json path of the chunks.", + "type": "string" + }, + "default": { + "description": "Optional default value.", + "anyOf": [ + { + "$ref": "#/definitions/AttributeValue" + }, + { + "type": "null" + } + ] + } + }, + "additionalProperties": false, + "required": ["response_errors"] + }, + { + "type": "object", + "properties": { + "baggage": { + "description": "The name of the baggage item.", + "type": "string" + }, + "default": { + "description": "Optional default value.", + "anyOf": [ + { + "$ref": "#/definitions/AttributeValue" + }, + { + "type": "null" + } + ] + } + }, + "additionalProperties": false, + "required": ["baggage"] + }, + { + "type": "object", + "properties": { + "env": { + "description": "The name of the environment variable", + "type": "string" + }, + "default": { + "description": "Optional default value.", + "type": ["string", "null"] + } + }, + "additionalProperties": false, + "required": ["env"] + }, + { + "description": "Deprecated, should not be used anymore, use static field instead", + "type": "string" + }, + { + "type": "object", + "properties": { + "static": { + "description": "A static value", + "allOf": [ + { + "$ref": "#/definitions/AttributeValue" + } + ] + } + }, + "additionalProperties": false, + "required": ["static"] + }, + { + "type": "object", + "properties": { + "on_graphql_error": { + "description": "Boolean set to true if the response body contains graphql error", + "type": "boolean" + } + }, + "additionalProperties": false, + "required": ["on_graphql_error"] + }, + { + "type": "object", + "properties": { + "error": { + "description": "Critical error if it happens", + "allOf": [ + { + "$ref": "#/definitions/ErrorRepr" + } + ] + } + }, + "additionalProperties": false, + "required": ["error"] + }, + { + "description": "Cost attributes", + "type": "object", + "properties": { + "cost": { + "description": "The cost value to select, one of: estimated, actual, delta.", + "allOf": [ + { + "$ref": "#/definitions/CostValue" + } + ] + } + }, + "additionalProperties": false, + "required": ["cost"] + }, + { + "description": "Boolean returning true if it's the primary response and not events like subscription events or deferred responses", + "type": "object", + "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, + "required": ["is_primary_response"] + } + ] + }, + "OperationKind": { + "oneOf": [ + { + "description": "The raw operation kind.", + "type": "string", + "const": "string" + } + ] + }, + "Query": { + "oneOf": [ + { + "description": "The raw query kind.", + "type": "string", + "const": "string" + }, + { + "description": "The query aliases.", + "type": "string", + "const": "aliases" + }, + { + "description": "The query depth.", + "type": "string", + "const": "depth" + }, + { + "description": "The query height.", + "type": "string", + "const": "height" + }, + { + "description": "The query root fields.", + "type": "string", + "const": "root_fields" + } + ] + }, + "CostValue": { + "oneOf": [ + { + "description": "The estimated cost of the operation using the currently configured cost model", + "type": "string", + "const": "estimated" + }, + { + "description": "The actual cost of the operation using the currently configured cost model", + "type": "string", + "const": "actual" + }, + { + "description": "The delta between the estimated and actual cost of the operation using the currently configured cost model", + "type": "string", + "const": "delta" + }, + { + "description": "The result of the cost calculation. This is the error code returned by the cost calculation.", + "type": "string", + "const": "result" + } + ] + }, + "SupergraphResponseConf": { + "description": "What information is passed to a router request/response stage", + "type": "object", + "properties": { + "condition": { + "description": "Condition to trigger this stage", + "allOf": [ + { + "$ref": "#/definitions/ConditionSupergraphSelector" + } + ] + }, + "headers": { + "description": "Send the headers", + "type": "boolean", + "default": false + }, + "context": { + "description": "Send the context", + "allOf": [ + { + "$ref": "#/definitions/ContextConf" + } + ] + }, + "body": { + "description": "Send the body", + "type": "boolean", + "default": false + }, + "sdl": { + "description": "Send the SDL", + "type": "boolean", + "default": false + }, + "status_code": { + "description": "Send the HTTP status", + "type": "boolean", + "default": false + }, + "url": { + "description": "The coprocessor URL for this stage (overrides the global URL if specified)", + "type": ["string", "null"], + "default": null + } + }, + "additionalProperties": false + }, + "ExecutionStage": { + "type": "object", + "properties": { + "request": { + "description": "The request configuration", + "allOf": [ + { + "$ref": "#/definitions/ExecutionRequestConf" + } + ] + }, + "response": { + "$ref": "#/definitions/ExecutionResponseConf" + } + } + }, + "ExecutionRequestConf": { + "description": "What information is passed to a router request/response stage", + "type": "object", + "properties": { + "headers": { + "description": "Send the headers", + "type": "boolean", + "default": false + }, + "context": { + "description": "Send the context", + "allOf": [ + { + "$ref": "#/definitions/ContextConf" + } + ] + }, + "body": { + "description": "Send the body", + "type": "boolean", + "default": false + }, + "sdl": { + "description": "Send the SDL", + "type": "boolean", + "default": false + }, + "method": { + "description": "Send the method", + "type": "boolean", + "default": false + }, + "query_plan": { + "description": "Send the query plan", + "type": "boolean", + "default": false + }, + "url": { + "description": "The coprocessor URL for this stage (overrides the global URL if specified)", + "type": ["string", "null"], + "default": null + } + }, + "additionalProperties": false + }, + "ExecutionResponseConf": { + "description": "What information is passed to a router request/response stage", + "type": "object", + "properties": { + "headers": { + "description": "Send the headers", + "type": "boolean", + "default": false + }, + "context": { + "description": "Send the context", + "allOf": [ + { + "$ref": "#/definitions/ContextConf" + } + ] + }, + "body": { + "description": "Send the body", + "type": "boolean", + "default": false + }, + "sdl": { + "description": "Send the SDL", + "type": "boolean", + "default": false + }, + "status_code": { + "description": "Send the HTTP status", + "type": "boolean", + "default": false + }, + "url": { + "description": "The coprocessor URL for this stage (overrides the global URL if specified)", + "type": ["string", "null"], + "default": null + } + }, + "additionalProperties": false + }, + "SubgraphStages": { + "description": "What information is passed to a subgraph request/response stage", + "type": "object", + "properties": { + "all": { + "$ref": "#/definitions/SubgraphStage" + } + }, + "additionalProperties": false + }, + "SubgraphStage": { + "description": "What information is passed to a subgraph request/response stage", + "type": "object", + "properties": { + "request": { + "$ref": "#/definitions/SubgraphRequestConf" + }, + "response": { + "$ref": "#/definitions/SubgraphResponseConf" + } + }, + "additionalProperties": false + }, + "SubgraphRequestConf": { + "description": "What information is passed to a subgraph request/response stage", + "type": "object", + "properties": { + "condition": { + "description": "Condition to trigger this stage", + "allOf": [ + { + "$ref": "#/definitions/ConditionSubgraphSelector" + } + ] + }, + "headers": { + "description": "Send the headers", + "type": "boolean", + "default": false + }, + "context": { + "description": "Send the context", + "allOf": [ + { + "$ref": "#/definitions/ContextConf" + } + ] + }, + "body": { + "description": "Send the body", + "type": "boolean", + "default": false + }, + "uri": { + "description": "Send the subgraph URI", + "type": "boolean", + "default": false + }, + "method": { + "description": "Send the method URI", + "type": "boolean", + "default": false + }, + "service_name": { + "description": "Send the service name", + "type": "boolean", + "default": false + }, + "subgraph_request_id": { + "description": "Send the subgraph request id", + "type": "boolean", + "default": false + }, + "url": { + "description": "The coprocessor URL for this stage (overrides the global URL if specified)", + "type": ["string", "null"], + "default": null + } + }, + "additionalProperties": false + }, + "ConditionSubgraphSelector": { + "description": "Specify a condition for when an [instrument][] should be mutated or an [event][] should be triggered.\n\n[instrument]: https://www.apollographql.com/docs/graphos/routing/observability/telemetry/instrumentation/instruments\n[event]: https://www.apollographql.com/docs/graphos/routing/observability/telemetry/instrumentation/events", + "oneOf": [ + { + "description": "A condition to check a selection against a value.", + "type": "object", + "properties": { + "eq": { + "type": "array", + "items": { + "$ref": "#/definitions/SubgraphSelectorOrValue" + }, + "minItems": 2, + "maxItems": 2 + } + }, + "required": ["eq"], + "additionalProperties": false + }, + { + "description": "The first selection must be greater than the second selection.", + "type": "object", + "properties": { + "gt": { + "type": "array", + "items": { + "$ref": "#/definitions/SubgraphSelectorOrValue" + }, + "minItems": 2, + "maxItems": 2 + } + }, + "required": ["gt"], + "additionalProperties": false + }, + { + "description": "The first selection must be less than the second selection.", + "type": "object", + "properties": { + "lt": { + "type": "array", + "items": { + "$ref": "#/definitions/SubgraphSelectorOrValue" + }, + "minItems": 2, + "maxItems": 2 + } + }, + "required": ["lt"], + "additionalProperties": false + }, + { + "description": "A condition to check a selection against a selector.", + "type": "object", + "properties": { + "exists": { + "$ref": "#/definitions/SubgraphSelector" + } + }, + "required": ["exists"], + "additionalProperties": false + }, + { + "description": "All sub-conditions must be true.", + "type": "object", + "properties": { + "all": { + "type": "array", + "items": { + "$ref": "#/definitions/ConditionSubgraphSelector" + } + } + }, + "required": ["all"], + "additionalProperties": false + }, + { + "description": "At least one sub-conditions must be true.", + "type": "object", + "properties": { + "any": { + "type": "array", + "items": { + "$ref": "#/definitions/ConditionSubgraphSelector" + } + } + }, + "required": ["any"], + "additionalProperties": false + }, + { + "description": "The sub-condition must not be true", + "type": "object", + "properties": { + "not": { + "$ref": "#/definitions/ConditionSubgraphSelector" + } + }, + "required": ["not"], + "additionalProperties": false + }, + { + "description": "Static true condition", + "type": "string", + "const": "true" + }, + { + "description": "Static false condition", + "type": "string", + "const": "false" + } + ] + }, + "SubgraphSelectorOrValue": { + "anyOf": [ + { + "description": "A constant value.", + "allOf": [ + { + "$ref": "#/definitions/AttributeValue" + } + ] + }, + { + "description": "Selector to extract a value from the pipeline.", + "allOf": [ + { + "$ref": "#/definitions/SubgraphSelector" + } + ] + } + ] + }, + "SubgraphSelector": { + "anyOf": [ + { + "type": "object", + "properties": { + "subgraph_operation_name": { + "description": "The operation name from the subgraph query.", + "allOf": [ + { + "$ref": "#/definitions/OperationName" + } + ] + }, + "default": { + "description": "Optional default value.", + "type": ["string", "null"] + } + }, + "additionalProperties": false, + "required": ["subgraph_operation_name"] + }, + { + "type": "object", + "properties": { + "subgraph_operation_kind": { + "description": "The kind of the subgraph operation (query|mutation|subscription).", + "allOf": [ + { + "$ref": "#/definitions/OperationKind" + } + ] + } + }, + "additionalProperties": false, + "required": ["subgraph_operation_kind"] + }, + { + "type": "object", + "properties": { + "subgraph_name": { + "description": "The subgraph name", + "type": "boolean" + } + }, + "additionalProperties": false, + "required": ["subgraph_name"] + }, + { + "type": "object", + "properties": { + "subgraph_query": { + "description": "The graphql query to the subgraph.", + "allOf": [ + { + "$ref": "#/definitions/SubgraphQuery" + } + ] + }, + "default": { + "description": "Optional default value.", + "type": ["string", "null"] + } + }, + "additionalProperties": false, + "required": ["subgraph_query"] + }, + { + "type": "object", + "properties": { + "subgraph_query_variable": { + "description": "The name of a subgraph query variable.", + "type": "string" + }, + "default": { + "description": "Optional default value.", + "anyOf": [ + { + "$ref": "#/definitions/AttributeValue" + }, + { + "type": "null" + } + ] + } + }, + "additionalProperties": false, + "required": ["subgraph_query_variable"] + }, + { + "type": "object", + "properties": { + "subgraph_response_data": { + "description": "The subgraph response body json path.", + "type": "string" + }, + "default": { + "description": "Optional default value.", + "anyOf": [ + { + "$ref": "#/definitions/AttributeValue" + }, + { + "type": "null" + } + ] + } + }, + "additionalProperties": false, + "required": ["subgraph_response_data"] + }, + { + "type": "object", + "properties": { + "subgraph_response_errors": { + "description": "The subgraph response body json path.", + "type": "string" + }, + "default": { + "description": "Optional default value.", + "anyOf": [ + { + "$ref": "#/definitions/AttributeValue" + }, + { + "type": "null" + } + ] + } + }, + "additionalProperties": false, + "required": ["subgraph_response_errors"] + }, + { + "type": "object", + "properties": { + "subgraph_request_header": { + "description": "The name of a subgraph request header.", + "type": "string" + }, + "default": { + "description": "Optional default value.", + "type": ["string", "null"] + } + }, + "additionalProperties": false, + "required": ["subgraph_request_header"] + }, + { + "type": "object", + "properties": { + "subgraph_response_header": { + "description": "The name of a subgraph response header.", + "type": "string" + }, + "default": { + "description": "Optional default value.", + "type": ["string", "null"] + } + }, + "additionalProperties": false, + "required": ["subgraph_response_header"] + }, + { + "type": "object", + "properties": { + "subgraph_response_status": { + "description": "The subgraph http response status code.", + "allOf": [ + { + "$ref": "#/definitions/ResponseStatus" + } + ] + } + }, + "additionalProperties": false, + "required": ["subgraph_response_status"] + }, + { + "type": "object", + "properties": { + "subgraph_resend_count": { + "description": "The subgraph http resend count", + "type": "boolean" + }, + "default": { + "description": "Optional default value.", + "anyOf": [ + { + "$ref": "#/definitions/AttributeValue" + }, + { + "type": "null" + } + ] + } + }, + "additionalProperties": false, + "required": ["subgraph_resend_count"] + }, + { + "type": "object", + "properties": { + "supergraph_operation_name": { + "description": "The supergraph query operation name.", + "allOf": [ + { + "$ref": "#/definitions/OperationName" + } + ] + }, + "default": { + "description": "Optional default value.", + "type": ["string", "null"] + } + }, + "additionalProperties": false, + "required": ["supergraph_operation_name"] + }, + { + "type": "object", + "properties": { + "supergraph_operation_kind": { + "description": "The supergraph query operation kind (query|mutation|subscription).", + "allOf": [ + { + "$ref": "#/definitions/OperationKind" + } + ] + } + }, + "additionalProperties": false, + "required": ["supergraph_operation_kind"] + }, + { + "type": "object", + "properties": { + "supergraph_query": { + "description": "The supergraph query to the subgraph.", + "allOf": [ + { + "$ref": "#/definitions/Query" + } + ] + }, + "default": { + "description": "Optional default value.", + "type": ["string", "null"] + } + }, + "additionalProperties": false, + "required": ["supergraph_query"] + }, + { + "type": "object", + "properties": { + "supergraph_query_variable": { + "description": "The supergraph query variable name.", + "type": "string" + }, + "default": { + "description": "Optional default value.", + "anyOf": [ + { + "$ref": "#/definitions/AttributeValue" + }, + { + "type": "null" + } + ] + } + }, + "additionalProperties": false, + "required": ["supergraph_query_variable"] + }, + { + "type": "object", + "properties": { + "supergraph_request_header": { + "description": "The supergraph request header name.", + "type": "string" + }, + "default": { + "description": "Optional default value.", + "type": ["string", "null"] + } + }, + "additionalProperties": false, + "required": ["supergraph_request_header"] + }, + { + "type": "object", + "properties": { + "request_context": { + "description": "The request context key.", + "type": "string" + }, + "default": { + "description": "Optional default value.", + "anyOf": [ + { + "$ref": "#/definitions/AttributeValue" + }, + { + "type": "null" + } + ] + } + }, + "additionalProperties": false, + "required": ["request_context"] + }, + { + "type": "object", + "properties": { + "response_context": { + "description": "The response context key.", + "type": "string" + }, + "default": { + "description": "Optional default value.", + "anyOf": [ + { + "$ref": "#/definitions/AttributeValue" + }, + { + "type": "null" + } + ] + } + }, + "additionalProperties": false, + "required": ["response_context"] + }, + { + "type": "object", + "properties": { + "subgraph_on_graphql_error": { + "description": "Boolean set to true if the response body contains graphql error", + "type": "boolean" + } + }, + "additionalProperties": false, + "required": ["subgraph_on_graphql_error"] + }, + { + "type": "object", + "properties": { + "baggage": { + "description": "The name of the baggage item.", + "type": "string" + }, + "default": { + "description": "Optional default value.", + "anyOf": [ + { + "$ref": "#/definitions/AttributeValue" + }, + { + "type": "null" + } + ] + } + }, + "additionalProperties": false, + "required": ["baggage"] + }, + { + "type": "object", + "properties": { + "env": { + "description": "The name of the environment variable", + "type": "string" + }, + "default": { + "description": "Optional default value.", + "type": ["string", "null"] + } + }, + "additionalProperties": false, + "required": ["env"] + }, + { + "description": "Deprecated, should not be used anymore, use static field instead", + "type": "string" + }, + { + "type": "object", + "properties": { + "static": { + "description": "A static value", + "allOf": [ + { + "$ref": "#/definitions/AttributeValue" + } + ] + } + }, + "additionalProperties": false, + "required": ["static"] + }, + { + "type": "object", + "properties": { + "error": { + "description": "Critical error if it happens", + "allOf": [ + { + "$ref": "#/definitions/ErrorRepr" + } + ] + } + }, + "additionalProperties": false, + "required": ["error"] + }, + { + "type": "object", + "properties": { + "cache": { + "description": "Select if you want to get cache hit or cache miss", + "allOf": [ + { + "$ref": "#/definitions/CacheKind" + } + ] + }, + "entity_type": { + "description": "Specify the entity type on which you want the cache data. (default: all)", + "anyOf": [ + { + "$ref": "#/definitions/EntityType" + }, + { + "type": "null" + } + ] + } + }, + "additionalProperties": false, + "required": ["cache"] + }, + { + "type": "object", + "properties": { + "response_cache": { + "description": "Select if you want to get response cache hit or response cache miss", + "allOf": [ + { + "$ref": "#/definitions/CacheKind" + } + ] + }, + "entity_type": { + "description": "Specify the entity type on which you want the cache data. (default: all)", + "anyOf": [ + { + "$ref": "#/definitions/EntityType" + }, + { + "type": "null" + } + ] + } + }, + "additionalProperties": false, + "required": ["response_cache"] + }, + { + "type": "object", + "properties": { + "response_cache_status": { + "description": "Select if you want to know if it's a cache hit (all data coming from cache), miss (all data coming from subgraph) or partial_hit (not all entities are coming from cache for example)", + "allOf": [ + { + "$ref": "#/definitions/CacheStatus" + } + ] + }, + "entity_type": { + "description": "Specify the entity type on which you want the cache data status. (default: all)", + "anyOf": [ + { + "$ref": "#/definitions/EntityType" + }, + { + "type": "null" + } + ] + } + }, + "additionalProperties": false, + "required": ["response_cache_status"] + } + ] + }, + "SubgraphQuery": { + "oneOf": [ + { + "description": "The raw query kind.", + "type": "string", + "const": "string" + } + ] + }, + "CacheKind": { + "type": "string", + "enum": ["hit", "miss"] + }, + "EntityType": { + "anyOf": [ + { + "$ref": "#/definitions/All" + }, + { + "type": "string" + } + ] + }, + "All": { + "type": "string", + "enum": ["all"] + }, + "CacheStatus": { + "type": "string", + "enum": ["hit", "miss", "partial_hit", "status"] + }, + "SubgraphResponseConf": { + "description": "What information is passed to a subgraph request/response stage", + "type": "object", + "properties": { + "condition": { + "description": "Condition to trigger this stage", + "allOf": [ + { + "$ref": "#/definitions/ConditionSubgraphSelector" + } + ] + }, + "headers": { + "description": "Send the headers", + "type": "boolean", + "default": false + }, + "context": { + "description": "Send the context", + "allOf": [ + { + "$ref": "#/definitions/ContextConf" + } + ] + }, + "body": { + "description": "Send the body", + "type": "boolean", + "default": false + }, + "service_name": { + "description": "Send the service name", + "type": "boolean", + "default": false + }, + "status_code": { + "description": "Send the http status", + "type": "boolean", + "default": false + }, + "subgraph_request_id": { + "description": "Send the subgraph request id", + "type": "boolean", + "default": false + }, + "url": { + "description": "The coprocessor URL for this stage (overrides the global URL if specified)", + "type": ["string", "null"], + "default": null + } + }, + "additionalProperties": false + }, + "CSRFConfig": { + "description": "CSRF protection configuration.\n\nSee for an explanation on CSRF attacks.", + "type": "object", + "properties": { + "unsafe_disabled": { + "description": "The CSRF plugin is enabled by default.\n\nSetting `unsafe_disabled: true` *disables* CSRF protection.", + "type": "boolean", + "default": false + }, + "required_headers": { + "description": "Override the headers to check for by setting\ncustom_headers\nNote that if you set required_headers here,\nyou may also want to have a look at your `CORS` configuration,\nand make sure you either:\n- did not set any `allow_headers` list (so it defaults to `mirror_request`)\n- added your required headers to the allow_headers list, as shown in the\n `examples/cors-and-csrf/custom-headers.router.yaml` files.", + "type": "array", + "items": { + "type": "string" + }, + "default": ["x-apollo-operation-name", "apollo-require-preflight"] + } + }, + "additionalProperties": false + }, + "DemandControlConfig": { + "description": "Demand control configuration", + "type": "object", + "properties": { + "enabled": { + "description": "Enable demand control", + "type": "boolean" + }, + "mode": { + "description": "The mode that the demand control plugin should operate in.\n- Measure: The plugin will measure the cost of incoming requests but not reject them.\n- Enforce: The plugin will enforce the cost of incoming requests and reject them if the algorithm indicates that they should be rejected.", + "allOf": [ + { + "$ref": "#/definitions/Mode2" + } + ] + }, + "strategy": { + "description": "The strategy used to reject requests.", + "allOf": [ + { + "$ref": "#/definitions/StrategyConfig" + } + ] + } + }, + "additionalProperties": false, + "required": ["enabled", "mode", "strategy"] + }, + "Mode2": { + "type": "string", + "enum": ["measure", "enforce"] + }, + "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:\n- Mutation: 10\n- Query: 0\n- Subscription 0\n\nType costs:\n- Object: 1\n- Interface: 1\n- Union: 1\n- Scalar: 0\n- Enum: 0", + "type": "object", + "properties": { + "static_estimated": { + "type": "object", + "properties": { + "list_size": { + "description": "The assumed length of lists returned by the operation.", + "type": "integer", + "format": "uint32", + "minimum": 0 + }, + "max": { + "description": "The maximum cost of a query", + "type": "number", + "format": "double" + } + }, + "additionalProperties": false, + "required": ["list_size", "max"] + } + }, + "required": ["static_estimated"], + "additionalProperties": false + } + ] + }, + "Config4": { + "description": "The enhanced client-awareness plugin has no configuration.", + "type": "object" + }, + "Config5": { + "description": "Configuration for the diagnostics plugin\n\n**Platform Requirements**: This plugin is supported on all platforms.\nHeap dump functionality is only available on Linux platforms due to\njemalloc requirements. Other diagnostic features work across platforms.", + "type": "object", + "properties": { + "enabled": { + "description": "Enable the diagnostics plugin", + "type": "boolean", + "default": false + }, + "listen": { + "description": "The socket address and port to listen on\nDefaults to 127.0.0.1:8089\nDo not expose this endpoint to the internet as it exposes sensitive information.", + "default": "127.0.0.1:8089", + "allOf": [ + { + "$ref": "#/definitions/ListenAddr" + } + ] + }, + "output_directory": { + "description": "Directory path for memory dump files\nDefaults to \"/tmp/router-diagnostics\" on Unix, or temp directory on other platforms\n\nThis directory will be created automatically if it doesn't exist.\nNote: Memory dumps are only generated on Linux platforms.", + "type": "string", + "default": "/tmp/router-diagnostics" + } + }, + "additionalProperties": false + }, + "SubgraphConfig": { + "description": "Configuration for one subgraph for the `mock_subgraphs` plugin", + "type": "object", + "properties": { + "headers": { + "description": "HTTP headers for the subgraph response", + "type": "object", + "additionalProperties": { + "type": "string" + } + }, + "query": { + "description": "Data for `query` operations (excluding the special `_entities` field)\n\nIn maps nested in this one (but not at the top level), the `__cacheTags` key is special.\nInstead of representing a field that can be selected, when its parent field is selected\nits value is expected to be an array which is appended\nto the `response.extensions[\"apolloCacheTags\"]` array.", + "type": "object", + "additionalProperties": true, + "default": {} + }, + "mutation": { + "description": "Data for `mutation` operations", + "type": ["object", "null"], + "additionalProperties": true, + "default": null + }, + "entities": { + "description": "Entities that can be queried through Federation’s special `_entities` field\n\nIn maps directly in the top-level `Vec` (but not in other maps nested deeper),\nthe `__cacheTags` key is special.\nInstead of representing a field that can be selected, when its parent entity is selected\nits contents are added to the `response.extensions[\"apolloEntityCacheTags\"]` array.", + "type": "array", + "items": { + "type": "object", + "additionalProperties": true + }, + "default": [] + } + } + }, + "Conf": { + "description": "The fleet detector plugin has no configuration.", + "type": "object" + }, + "ForbidMutationsConfig": { + "description": "Forbid mutations configuration", + "type": "boolean" + }, + "HeadersConfig": { + "description": "Configuration for header propagation", + "type": "object", + "properties": { + "all": { + "description": "Rules to apply to all subgraphs", + "anyOf": [ + { + "$ref": "#/definitions/HeadersLocation" + }, + { + "type": "null" + } + ] + }, + "subgraphs": { + "description": "Rules to specific subgraphs", + "type": "object", + "additionalProperties": { + "$ref": "#/definitions/HeadersLocation" + } + }, + "connector": { + "description": "Rules for connectors", + "allOf": [ + { + "$ref": "#/definitions/ConnectorHeadersConfiguration" + } + ] + } + }, + "additionalProperties": false + }, + "HeadersLocation": { + "type": "object", + "properties": { + "request": { + "description": "Propagate/Insert/Remove headers from request", + "type": "array", + "items": { + "$ref": "#/definitions/Operation" + } + } + }, + "additionalProperties": false, + "required": ["request"] + }, + "Operation": { + "oneOf": [ + { + "type": "object", + "properties": { + "insert": { + "$ref": "#/definitions/Insert" + } + }, + "required": ["insert"], + "additionalProperties": false + }, + { + "type": "object", + "properties": { + "remove": { + "$ref": "#/definitions/Remove" + } + }, + "required": ["remove"], + "additionalProperties": false + }, + { + "type": "object", + "properties": { + "propagate": { + "$ref": "#/definitions/Propagate" + } + }, + "required": ["propagate"], + "additionalProperties": false + } + ] + }, + "Insert": { + "description": "Insert header", + "anyOf": [ + { + "description": "Insert static header", + "allOf": [ + { + "$ref": "#/definitions/InsertStatic" + } + ] + }, + { + "description": "Insert header with a value coming from context key (works only for a string in the context)", + "allOf": [ + { + "$ref": "#/definitions/InsertFromContext" + } + ] + }, + { + "description": "Insert header with a value coming from body", + "allOf": [ + { + "$ref": "#/definitions/InsertFromBody" + } + ] + } + ] + }, + "InsertStatic": { + "description": "Insert static header", + "type": "object", + "properties": { + "name": { + "description": "The name of the header", + "type": "string" + }, + "value": { + "description": "The value for the header", + "type": "string" + } + }, + "additionalProperties": false, + "required": ["name", "value"] + }, + "InsertFromContext": { + "description": "Insert header with a value coming from context key", + "type": "object", + "properties": { + "name": { + "description": "Specify header name", + "type": "string" + }, + "from_context": { + "description": "Specify context key to fetch value", + "type": "string" + } + }, + "additionalProperties": false, + "required": ["name", "from_context"] + }, + "InsertFromBody": { + "description": "Insert header with a value coming from body", + "type": "object", + "properties": { + "name": { + "description": "The target header name", + "type": "string" + }, + "path": { + "description": "The path in the request body", + "type": "string" + }, + "default": { + "description": "The default if the path in the body did not resolve to an element", + "type": ["string", "null"] + } + }, + "additionalProperties": false, + "required": ["name", "path"] + }, + "Remove": { + "description": "Remove header", + "oneOf": [ + { + "description": "Remove a header given a header name", + "type": "object", + "properties": { + "named": { + "description": "Remove a header given a header name", + "type": "string", + "default": null + } + }, + "required": ["named"], + "additionalProperties": false + }, + { + "description": "Remove a header given a regex matching header name", + "type": "object", + "properties": { + "matching": { + "description": "Remove a header given a regex matching against the header name", + "type": "string", + "default": null + } + }, + "required": ["matching"], + "additionalProperties": false + } + ] + }, + "Propagate": { + "description": "Propagate header", + "anyOf": [ + { + "description": "Propagate header given a header name", + "type": "object", + "properties": { + "named": { + "description": "The source header name", + "type": "string" + }, + "rename": { + "description": "An optional target header name", + "type": ["string", "null"] + }, + "default": { + "description": "Default value for the header.", + "type": ["string", "null"] + } + }, + "additionalProperties": false, + "required": ["named"] + }, + { + "description": "Propagate header given a regex to match header name", + "type": "object", + "properties": { + "matching": { + "description": "The regex on header name", + "type": "string", + "default": null + } + }, + "additionalProperties": false, + "required": ["matching"] + } + ] + }, + "ConnectorHeadersConfiguration": { + "type": "object", + "properties": { + "sources": { + "description": "Map of subgraph_name.connector_source_name to configuration", + "type": "object", + "additionalProperties": { + "$ref": "#/definitions/HeadersLocation" + } + }, + "all": { + "description": "Options applying to all sources across all subgraphs", + "anyOf": [ + { + "$ref": "#/definitions/HeadersLocation" + }, + { + "type": "null" + } + ] + } + }, + "additionalProperties": false + }, + "IncludeSubgraphErrorsConfig": { + "description": "Configuration for exposing errors that originate from subgraphs", + "type": "object", + "properties": { + "all": { + "description": "Global configuration for error redaction. Applies to all subgraphs.", + "default": false, + "allOf": [ + { + "$ref": "#/definitions/ErrorMode" + } + ] + }, + "subgraphs": { + "description": "Overrides global configuration on a per-subgraph basis", + "type": "object", + "additionalProperties": { + "$ref": "#/definitions/SubgraphConfig2" + }, + "default": {} + } + }, + "additionalProperties": false + }, + "ErrorMode": { + "anyOf": [ + { + "description": "When `true`, Propagate the original error as is. Otherwise, redact it.", + "type": "boolean" + }, + { + "description": "Allow specific extension keys with required redact_message", + "type": "object", + "properties": { + "allow_extensions_keys": { + "description": "Allow specific extension keys", + "type": "array", + "items": { + "type": "string" + } + }, + "redact_message": { + "description": "redact error messages for all subgraphs", + "type": "boolean" + } + }, + "required": ["allow_extensions_keys", "redact_message"] + }, + { + "description": "Deny specific extension keys with required redact_message", + "type": "object", + "properties": { + "deny_extensions_keys": { + "description": "Deny specific extension keys", + "type": "array", + "items": { + "type": "string" + } + }, + "redact_message": { + "description": "redact error messages for all subgraphs", + "type": "boolean" + } + }, + "required": ["deny_extensions_keys", "redact_message"] + } + ] + }, + "SubgraphConfig2": { + "anyOf": [ + { + "description": "Enable or disable error redaction for a subgraph", + "type": "boolean" + }, + { + "description": "Allow specific error extension keys for a subgraph", + "type": "object", + "properties": { + "allow_extensions_keys": { + "description": "Allow specific extension keys for a subgraph. Will extending global allow list or override a global deny list", + "type": "array", + "items": { + "type": "string" + } + }, + "redact_message": { + "description": "Redact error messages for a subgraph", + "type": ["boolean", "null"] + }, + "exclude_global_keys": { + "description": "Exclude specific extension keys from global allow/deny list", + "type": "array", + "items": { + "type": "string" + }, + "default": [] + } + }, + "required": ["allow_extensions_keys"] + }, + { + "description": "Deny specific error extension keys for a subgraph", + "type": "object", + "properties": { + "deny_extensions_keys": { + "description": "Allow specific extension keys for a subgraph. Will extending global deny list or override a global allow list", + "type": "array", + "items": { + "type": "string" + } + }, + "redact_message": { + "description": "Redact error messages for a subgraph", + "type": ["boolean", "null"] + }, + "exclude_global_keys": { + "description": "Exclude specific extension keys from global allow/deny list", + "type": "array", + "items": { + "type": "string" + }, + "default": [] + } + }, + "required": ["deny_extensions_keys"] + }, + { + "description": "Override global configuration, but don't allow or deny any new keys explicitly", + "type": "object", + "properties": { + "redact_message": { + "description": "Redact error messages for a subgraph", + "type": ["boolean", "null"] + }, + "exclude_global_keys": { + "description": "Exclude specific extension keys from global allow/deny list", + "type": "array", + "items": { + "type": "string" + }, + "default": [] + } + } + } + ] + }, + "LicenseEnforcementConfig": { + "description": "The license enforcement plugin has no configuration.", + "type": "object" + }, + "Conf2": { + "description": "Subgraph URL mappings", + "anyOf": [ + { + "description": "Subgraph URL mappings", + "type": "object", + "additionalProperties": { + "type": "string" + } + } + ] + }, + "Config6": { + "description": "Configuration for entity caching", + "type": "object", + "properties": { + "enabled": { + "description": "Enable or disable the entity caching feature", + "type": "boolean", + "default": false + }, + "expose_keys_in_context": { + "description": "Expose cache keys in context", + "type": "boolean", + "default": false + }, + "subgraph": { + "description": "Configure invalidation per subgraph", + "allOf": [ + { + "$ref": "#/definitions/SubgraphSubgraphConfiguration" + } + ] + }, + "invalidation": { + "description": "Global invalidation configuration", + "anyOf": [ + { + "$ref": "#/definitions/InvalidationEndpointConfig" + }, + { + "type": "null" + } + ] + }, + "metrics": { + "description": "Entity caching evaluation metrics", + "allOf": [ + { + "$ref": "#/definitions/Metrics" + } + ] + } + }, + "additionalProperties": false, + "required": ["subgraph"] + }, + "SubgraphSubgraphConfiguration": { + "description": "Configuration options pertaining to the subgraph server component.", + "type": "object", + "properties": { + "all": { + "description": "options applying to all subgraphs", + "default": { + "redis": null, + "ttl": null, + "enabled": true, + "private_id": null, + "invalidation": null + }, + "allOf": [ + { + "$ref": "#/definitions/Subgraph" + } + ] + }, + "subgraphs": { + "description": "per subgraph options", + "type": "object", + "additionalProperties": { + "$ref": "#/definitions/Subgraph" + }, + "default": {} + } + } + }, + "Subgraph": { + "description": "Per subgraph configuration for entity caching", + "type": "object", + "properties": { + "redis": { + "description": "Redis configuration", + "anyOf": [ + { + "$ref": "#/definitions/RedisCache" + }, + { + "type": "null" + } + ], + "default": null + }, + "ttl": { + "description": "expiration for all keys for this subgraph, unless overridden by the `Cache-Control` header in subgraph responses", + "anyOf": [ + { + "$ref": "#/definitions/Ttl" + }, + { + "type": "null" + } + ], + "default": null + }, + "enabled": { + "description": "activates caching for this subgraph, overrides the global configuration", + "type": ["boolean", "null"], + "default": true + }, + "private_id": { + "description": "Context key used to separate cache sections per user", + "type": ["string", "null"], + "default": null + }, + "invalidation": { + "description": "Invalidation configuration", + "anyOf": [ + { + "$ref": "#/definitions/SubgraphInvalidationConfig" + }, + { + "type": "null" + } + ], + "default": null + } + }, + "additionalProperties": false + }, + "Ttl": { + "description": "Per subgraph configuration for entity caching", + "type": "string" + }, + "SubgraphInvalidationConfig": { + "type": "object", + "properties": { + "enabled": { + "description": "Enable the invalidation", + "type": "boolean", + "default": false + }, + "shared_key": { + "description": "Shared key needed to request the invalidation endpoint", + "type": "string", + "default": "" + } + }, + "additionalProperties": false + }, + "InvalidationEndpointConfig": { + "type": "object", + "properties": { + "path": { + "description": "Specify on which path you want to listen for invalidation endpoint.", + "type": "string" + }, + "listen": { + "description": "Listen address on which the invalidation endpoint must listen.", + "allOf": [ + { + "$ref": "#/definitions/ListenAddr" + } + ] + }, + "scan_count": { + "description": "Number of keys to return at once from a redis SCAN command", + "type": "integer", + "format": "uint32", + "minimum": 0, + "default": 1000 + }, + "concurrent_requests": { + "description": "Number of concurrent invalidation requests", + "type": "integer", + "format": "uint32", + "minimum": 0, + "default": 10 + } + }, + "additionalProperties": false, + "required": ["path", "listen"] + }, + "Metrics": { + "description": "Per subgraph configuration for entity caching", + "type": "object", + "properties": { + "enabled": { + "description": "enables metrics evaluating the benefits of entity caching", + "type": "boolean", + "default": false + }, + "ttl": { + "description": "Metrics counter TTL", + "anyOf": [ + { + "$ref": "#/definitions/Ttl" + }, + { + "type": "null" + } + ] + }, + "separate_per_type": { + "description": "Adds the entity type name to attributes. This can greatly increase the cardinality", + "type": "boolean", + "default": false + } + }, + "additionalProperties": false + }, + "FileUploadsConfig": { + "description": "Configuration for File Uploads plugin", + "type": "object", + "properties": { + "enabled": { + "description": "Whether the file upload plugin should be enabled (default: false)", + "type": "boolean" + }, + "protocols": { + "description": "Supported protocol configurations for file uploads", + "allOf": [ + { + "$ref": "#/definitions/FileUploadProtocols" + } + ] + } + }, + "additionalProperties": false, + "required": ["enabled", "protocols"] + }, + "FileUploadProtocols": { + "description": "Configuration for the various protocols supported by the file upload plugin", + "type": "object", + "properties": { + "multipart": { + "description": "Configuration for multipart requests.\n\nThis protocol conforms to [jaydenseric's multipart spec](https://github.com/jaydenseric/graphql-multipart-request-spec)", + "allOf": [ + { + "$ref": "#/definitions/MultipartRequest" + } + ] + } + }, + "additionalProperties": false, + "required": ["multipart"] + }, + "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)", + "type": "boolean", + "default": true + }, + "mode": { + "description": "The supported mode for the request (default: [MultipartRequestMode::Stream])", + "allOf": [ + { + "$ref": "#/definitions/MultipartRequestMode" + } + ] + }, + "limits": { + "description": "Resource limits for multipart requests", + "allOf": [ + { + "$ref": "#/definitions/MultipartRequestLimits" + } + ] + } + }, + "additionalProperties": false + }, + "MultipartRequestMode": { + "description": "Supported mode for a multipart request", + "oneOf": [ + { + "description": "The multipart request will not be loaded into memory and instead will\nbe streamed directly to the subgraph in the order received. This has some\nlimitations, mainly that the query _must_ be able to be streamed directly\nto the subgraph without buffering.\n\nIn practice, this means that certain queries will fail due to ordering of the\nfiles.", + "type": "string", + "const": "stream" + } + ] + }, + "MultipartRequestLimits": { + "description": "Request limits for a multipart request", + "type": "object", + "properties": { + "max_files": { + "description": "The maximum amount of files allowed for a single query (default: 4)", + "type": "integer", + "format": "uint", + "minimum": 0 + }, + "max_file_size": { + "description": "The maximum size of each file, in bytes (default: 5MB)", + "type": "string" + } + }, + "additionalProperties": false, + "required": ["max_files", "max_file_size"] + }, + "Config7": { + "description": "Configuration for response caching", + "type": "object", + "properties": { + "enabled": { + "description": "Enable or disable the response caching feature", + "type": "boolean", + "default": false + }, + "debug": { + "description": "Enable debug mode for the debugger", + "type": "boolean", + "default": false + }, + "subgraph": { + "description": "Configure invalidation per subgraph", + "allOf": [ + { + "$ref": "#/definitions/SubgraphSubgraphConfiguration2" + } + ] + }, + "invalidation": { + "description": "Global invalidation configuration", + "anyOf": [ + { + "$ref": "#/definitions/InvalidationEndpointConfig2" + }, + { + "type": "null" + } + ] + }, + "private_queries_buffer_size": { + "description": "Buffer size for known private queries (default: 2048)", + "type": "integer", + "format": "uint", + "minimum": 1, + "default": 2048 + } + }, + "additionalProperties": false, + "required": ["subgraph"] + }, + "SubgraphSubgraphConfiguration2": { + "description": "Configuration options pertaining to the subgraph server component.", + "type": "object", + "properties": { + "all": { + "description": "options applying to all subgraphs", + "default": { + "redis": null, + "ttl": null, + "enabled": true, + "private_id": null, + "invalidation": null + }, + "allOf": [ + { + "$ref": "#/definitions/Subgraph2" + } + ] + }, + "subgraphs": { + "description": "per subgraph options", + "type": "object", + "additionalProperties": { + "$ref": "#/definitions/Subgraph2" + }, + "default": {} + } + } + }, + "Subgraph2": { + "description": "Per subgraph configuration for response caching", + "type": "object", + "properties": { + "redis": { + "description": "Redis configuration", + "anyOf": [ + { + "$ref": "#/definitions/Config8" + }, + { + "type": "null" + } + ], + "default": null + }, + "ttl": { + "description": "expiration for all keys for this subgraph, unless overridden by the `Cache-Control` header in subgraph responses", + "anyOf": [ + { + "$ref": "#/definitions/Ttl2" + }, + { + "type": "null" + } + ], + "default": null + }, + "enabled": { + "description": "activates caching for this subgraph, overrides the global configuration", + "type": ["boolean", "null"], + "default": true + }, + "private_id": { + "description": "Context key used to separate cache sections per user", + "type": ["string", "null"], + "default": null + }, + "invalidation": { + "description": "Invalidation configuration", + "anyOf": [ + { + "$ref": "#/definitions/SubgraphInvalidationConfig2" + }, + { + "type": "null" + } + ], + "default": null + } + }, + "additionalProperties": false + }, + "Config8": { + "description": "Redis cache configuration", + "type": "object", + "properties": { + "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", "null"] + }, + "password": { + "description": "Redis password if not provided in the URLs. This field takes precedence over the password in the URL", + "type": ["string", "null"] + }, + "fetch_timeout": { + "description": "Timeout for Redis fetch commands (default: 150ms)", + "type": ["string", "null"], + "default": { + "secs": 0, + "nanos": 0 + } + }, + "insert_timeout": { + "description": "Timeout for Redis insert commands (default: 500ms)\n\nInserts are processed asynchronously, so this will not affect response duration.", + "type": ["string", "null"], + "default": { + "secs": 0, + "nanos": 0 + } + }, + "invalidate_timeout": { + "description": "Timeout for Redis invalidation commands (default: 1s)", + "type": ["string", "null"], + "default": { + "secs": 0, + "nanos": 0 + } + }, + "maintenance_timeout": { + "description": "Timeout for Redis maintenance commands (default: 500ms)\n\nMaintenance tasks are processed asynchronously, so this will not affect response duration.", + "type": ["string", "null"], + "default": { + "secs": 0, + "nanos": 0 + } + }, + "ttl": { + "description": "TTL for entries", + "type": ["string", "null"], + "default": null + }, + "namespace": { + "description": "namespace used to prefix Redis keys", + "type": ["string", "null"] + }, + "tls": { + "description": "TLS client configuration", + "anyOf": [ + { + "$ref": "#/definitions/TlsClient" + }, + { + "type": "null" + } + ], + "default": null + }, + "required_to_start": { + "description": "Prevents the router from starting if it cannot connect to Redis", + "type": "boolean", + "default": false + }, + "pool_size": { + "description": "The size of the Redis connection pool (default: 5)", + "type": "integer", + "format": "uint32", + "minimum": 0, + "default": 5 + }, + "metrics_interval": { + "description": "Interval for collecting Redis metrics (default: 1s)", + "type": ["string", "null"], + "default": { + "secs": 0, + "nanos": 0 + } + } + }, + "additionalProperties": false, + "required": ["urls"] + }, + "Ttl2": { + "description": "Per subgraph configuration for response caching", + "type": "string" + }, + "SubgraphInvalidationConfig2": { + "type": "object", + "properties": { + "enabled": { + "description": "Enable the invalidation", + "type": "boolean", + "default": false + }, + "shared_key": { + "description": "Shared key needed to request the invalidation endpoint", + "type": "string", + "default": "" + } + }, + "additionalProperties": false + }, + "InvalidationEndpointConfig2": { + "type": "object", + "properties": { + "path": { + "description": "Specify on which path you want to listen for invalidation endpoint.", + "type": "string" + }, + "listen": { + "description": "Listen address on which the invalidation endpoint must listen.", + "allOf": [ + { + "$ref": "#/definitions/ListenAddr" + } + ] + } + }, + "additionalProperties": false, + "required": ["path", "listen"] + }, + "Config9": { + "description": "Configuration for the progressive override plugin", + "type": "object" + }, + "RhaiConfig": { + "description": "Configuration for the Rhai Plugin", + "type": "object", + "properties": { + "scripts": { + "description": "The directory where Rhai scripts can be found", + "type": ["string", "null"] + }, + "main": { + "description": "The main entry point for Rhai script evaluation", + "type": ["string", "null"] + } + }, + "additionalProperties": false + }, + "SubscriptionConfig": { + "description": "Subscriptions configuration", + "type": "object", + "properties": { + "enabled": { + "description": "Enable subscription", + "type": "boolean", + "default": true + }, + "mode": { + "description": "Select a subscription mode (callback or passthrough)", + "default": { + "callback": null, + "passthrough": null + }, + "allOf": [ + { + "$ref": "#/definitions/SubscriptionModeConfig" + } + ] + }, + "deduplication": { + "description": "Configure subgraph subscription deduplication", + "default": { + "enabled": true, + "ignored_headers": [] + }, + "allOf": [ + { + "$ref": "#/definitions/DeduplicationConfig" + } + ] + }, + "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.", + "type": ["integer", "null"], + "format": "uint", + "minimum": 0, + "default": null + }, + "queue_capacity": { + "description": "It represent the capacity of the in memory queue to know how many events we can keep in a buffer", + "type": ["integer", "null"], + "format": "uint", + "minimum": 0, + "default": null + } + }, + "additionalProperties": false + }, + "SubscriptionModeConfig": { + "type": "object", + "properties": { + "callback": { + "description": "Enable callback mode for subgraph(s)", + "anyOf": [ + { + "$ref": "#/definitions/CallbackMode" + }, + { + "type": "null" + } + ] + }, + "passthrough": { + "description": "Enable passthrough mode for subgraph(s)", + "anyOf": [ + { + "$ref": "#/definitions/SubgraphPassthroughMode" + }, + { + "type": "null" + } + ] + } + }, + "additionalProperties": false + }, + "CallbackMode": { + "description": "Using a callback url", + "type": "object", + "properties": { + "public_url": { + "description": "URL used to access this router instance, including the path configured on the Router", + "type": "string" + }, + "heartbeat_interval": { + "description": "Heartbeat interval for callback mode (default: 5secs)", + "default": "enabled", + "allOf": [ + { + "$ref": "#/definitions/HeartbeatInterval" + } + ] + }, + "listen": { + "description": "Listen address on which the callback must listen (default: 127.0.0.1:4000)", + "anyOf": [ + { + "$ref": "#/definitions/ListenAddr" + }, + { + "type": "null" + } + ], + "writeOnly": true + }, + "path": { + "description": "Specify on which path you want to listen for callbacks (default: /callback)", + "type": ["string", "null"], + "writeOnly": true + }, + "subgraphs": { + "description": "Specify on which subgraph we enable the callback mode for subscription\nIf empty it applies to all subgraphs (passthrough mode takes precedence)", + "type": "array", + "uniqueItems": true, + "items": { + "type": "string" + }, + "default": [] + } + }, + "additionalProperties": false, + "required": ["public_url"] + }, + "HeartbeatInterval": { + "anyOf": [ + { + "description": "disable heartbeat", + "allOf": [ + { + "$ref": "#/definitions/Disabled" + } + ] + }, + { + "description": "enable with default interval of 5s", + "allOf": [ + { + "$ref": "#/definitions/Enabled" + } + ] + }, + { + "description": "enable with custom interval, e.g. '100ms', '10s' or '1m'", + "type": "string" + } + ] + }, + "Disabled": { + "type": "string", + "enum": ["disabled"] + }, + "Enabled": { + "type": "string", + "enum": ["enabled"] + }, + "SubgraphPassthroughMode": { + "type": "object", + "properties": { + "all": { + "description": "Configuration for all subgraphs", + "anyOf": [ + { + "$ref": "#/definitions/WebSocketConfiguration" + }, + { + "type": "null" + } + ], + "default": null + }, + "subgraphs": { + "description": "Configuration for specific subgraphs", + "type": "object", + "additionalProperties": { + "$ref": "#/definitions/WebSocketConfiguration" + }, + "default": {} + } + }, + "additionalProperties": false + }, + "WebSocketConfiguration": { + "description": "WebSocket configuration for a specific subgraph", + "type": "object", + "properties": { + "path": { + "description": "Path on which WebSockets are listening", + "type": ["string", "null"], + "default": null + }, + "protocol": { + "description": "Which WebSocket GraphQL protocol to use for this subgraph possible values are: 'graphql_ws' | 'graphql_transport_ws' (default: graphql_ws)", + "default": "graphql_ws", + "allOf": [ + { + "$ref": "#/definitions/WebSocketProtocol" + } + ] + }, + "heartbeat_interval": { + "description": "Heartbeat interval for graphql-ws protocol (default: disabled)", + "default": "disabled", + "allOf": [ + { + "$ref": "#/definitions/HeartbeatInterval" + } + ] + } + }, + "additionalProperties": false + }, + "WebSocketProtocol": { + "oneOf": [ + { + "description": "The modern graphql-ws protocol. The subprotocol name is \"graphql-transport-ws\".\n\nSpec URL: https://github.com/enisdenjo/graphql-ws/blob/0c0eb499c3a0278c6d9cc799064f22c5d24d2f60/PROTOCOL.md", + "type": "string", + "const": "graphql_ws" + }, + { + "description": "The legacy subscriptions-transport-ws protocol. Confusingly, the subprotocol name is\n\"graphql-ws\".\n\nhttps://github.com/apollographql/subscriptions-transport-ws/blob/36f3f6f780acc1a458b768db13fd39c65e5e6518/PROTOCOL.md", + "type": "string", + "const": "graphql_transport_ws" + } + ] + }, + "DeduplicationConfig": { + "description": "Subscription deduplication configuration", + "type": "object", + "properties": { + "enabled": { + "description": "Enable subgraph subscription deduplication. When enabled, multiple identical requests to the same subgraph will share one WebSocket connection in passthrough mode.\n(default: true)", + "type": "boolean", + "default": true + }, + "ignored_headers": { + "description": "List of headers to ignore for deduplication. Even if these headers are different, the subscription request is considered identical.\nFor example, if you forward the \"User-Agent\" header, but the subgraph doesn't depend on the value of that header,\nadding it to this list will let the router dedupe subgraph subscriptions even if the header value is different.", + "type": "array", + "uniqueItems": true, + "items": { + "type": "string" + }, + "default": [] + } + }, + "additionalProperties": false + }, + "TelemetryConfig": { + "description": "Telemetry configuration", + "type": "object", + "properties": { + "apollo": { + "description": "Apollo reporting configuration", + "allOf": [ + { + "$ref": "#/definitions/ApolloTelemetryConfig" + } + ] + }, + "exporters": { + "description": "Instrumentation configuration", + "allOf": [ + { + "$ref": "#/definitions/Exporters" + } + ] + }, + "instrumentation": { + "description": "Instrumentation configuration", + "allOf": [ + { + "$ref": "#/definitions/Instrumentation" + } + ] + } + }, + "additionalProperties": false + }, + "ApolloTelemetryConfig": { + "type": "object", + "properties": { + "endpoint": { + "description": "The Apollo Studio endpoint for exporting traces and metrics.", + "type": "string", + "default": "https://usage-reporting.api.apollographql.com/api/ingress/traces" + }, + "experimental_otlp_endpoint": { + "description": "The Apollo Studio endpoint for exporting traces and metrics.", + "type": "string", + "default": "https://usage-reporting.api.apollographql.com/" + }, + "client_name_header": { + "description": "The name of the header to extract from requests when populating 'client name' for traces and metrics in Apollo Studio.", + "type": ["string", "null"], + "default": "apollographql-client-name" + }, + "client_version_header": { + "description": "The name of the header to extract from requests when populating 'client version' for traces and metrics in Apollo Studio.", + "type": ["string", "null"], + "default": "apollographql-client-version" + }, + "buffer_size": { + "description": "The buffer size for sending traces to Apollo. Increase this if you are experiencing lost traces.", + "type": "integer", + "format": "uint", + "minimum": 1, + "default": 10000 + }, + "field_level_instrumentation_sampler": { + "description": "Field level instrumentation for subgraphs via ftv1. ftv1 tracing can cause performance issues as it is transmitted in band with subgraph responses.", + "allOf": [ + { + "$ref": "#/definitions/SamplerOption" + } + ] + }, + "otlp_tracing_sampler": { + "description": "Percentage of traces to send via the OTel protocol when sending to Apollo Studio.", + "allOf": [ + { + "$ref": "#/definitions/SamplerOption" + } + ] + }, + "experimental_otlp_tracing_protocol": { + "description": "OTLP protocol used for OTel traces.\nNote this only applies if OTel traces are enabled and is only intended for use in tests.", + "default": "grpc", + "allOf": [ + { + "$ref": "#/definitions/Protocol" + } + ] + }, + "experimental_otlp_metrics_protocol": { + "description": "OTLP protocol used for OTel metrics.\nNote this is only intended for use in tests.", + "default": "grpc", + "allOf": [ + { + "$ref": "#/definitions/Protocol" + } + ] + }, + "send_headers": { + "description": "To configure which request header names and values are included in trace data that's sent to Apollo Studio.", + "allOf": [ + { + "$ref": "#/definitions/ForwardHeaders" + } + ] + }, + "send_variable_values": { + "description": "To configure which GraphQL variable values are included in trace data that's sent to Apollo Studio", + "allOf": [ + { + "$ref": "#/definitions/ForwardValues" + } + ] + }, + "tracing": { + "description": "Configuration for tracing.", + "allOf": [ + { + "$ref": "#/definitions/TracingConfiguration" + } + ] + }, + "metrics": { + "description": "Configuration for metrics.", + "allOf": [ + { + "$ref": "#/definitions/MetricsConfiguration" + } + ] + }, + "errors": { + "description": "Configure the way errors are transmitted to Apollo Studio", + "allOf": [ + { + "$ref": "#/definitions/ErrorsConfiguration" + } + ] + }, + "signature_normalization_algorithm": { + "description": "Set the signature normalization algorithm to use when sending Apollo usage reports.", + "default": "enhanced", + "allOf": [ + { + "$ref": "#/definitions/ApolloSignatureNormalizationAlgorithm" + } + ] + }, + "metrics_reference_mode": { + "description": "Set the Apollo usage report reference reporting mode to use.", + "allOf": [ + { + "$ref": "#/definitions/ApolloMetricsReferenceMode" + } + ] + }, + "experimental_local_field_metrics": { + "description": "Enable field metrics that are generated without FTV1 to be sent to Apollo Studio.", + "type": "boolean", + "default": false + }, + "subgraph_metrics": { + "description": "Enable sending additional subgraph metrics to Apollo Studio via OTLP", + "type": "boolean", + "default": false + } + }, + "additionalProperties": false + }, + "SamplerOption": { + "anyOf": [ + { + "description": "Sample a given fraction. Fractions >= 1 will always sample.", + "type": "number", + "format": "double" + }, + { + "$ref": "#/definitions/Sampler" + } + ] + }, + "Sampler": { + "oneOf": [ + { + "description": "Always sample", + "type": "string", + "const": "always_on" + }, + { + "description": "Never sample", + "type": "string", + "const": "always_off" + } + ] + }, + "Protocol": { + "type": "string", + "enum": ["grpc", "http"] + }, + "ForwardHeaders": { + "description": "Forward headers", + "oneOf": [ + { + "description": "Don't send any headers", + "type": "string", + "const": "none" + }, + { + "description": "Send all headers", + "type": "string", + "const": "all" + }, + { + "description": "Send only the headers specified", + "type": "object", + "properties": { + "only": { + "description": "Send only the headers specified", + "type": "array", + "items": { + "type": "string" + }, + "default": null + } + }, + "required": ["only"], + "additionalProperties": false + }, + { + "description": "Send all headers except those specified", + "type": "object", + "properties": { + "except": { + "description": "Send all headers except those specified", + "type": "array", + "items": { + "type": "string" + }, + "default": null + } + }, + "required": ["except"], + "additionalProperties": false + } + ] + }, + "ForwardValues": { + "description": "Forward GraphQL variables", + "oneOf": [ + { + "description": "Dont send any variables", + "type": "string", + "const": "none" + }, + { + "description": "Send all variables", + "type": "string", + "const": "all" + }, + { + "description": "Send only the variables specified", + "type": "object", + "properties": { + "only": { + "description": "Send only the variables specified", + "type": "array", + "items": { + "type": "string" + }, + "default": null + } + }, + "required": ["only"], + "additionalProperties": false + }, + { + "description": "Send all variables except those specified", + "type": "object", + "properties": { + "except": { + "description": "Send all variables except those specified", + "type": "array", + "items": { + "type": "string" + }, + "default": null + } + }, + "required": ["except"], + "additionalProperties": false + } + ] + }, + "TracingConfiguration": { + "type": "object", + "properties": { + "batch_processor": { + "description": "Configuration for tracing batch processor.", + "allOf": [ + { + "$ref": "#/definitions/BatchProcessorConfig" + } + ] + } + }, + "additionalProperties": false + }, + "BatchProcessorConfig": { + "description": "Batch processor configuration", + "type": "object", + "properties": { + "scheduled_delay": { + "description": "The delay interval in milliseconds between two consecutive processing\nof batches. The default value is 5 seconds.", + "type": "string", + "default": { + "secs": 5, + "nanos": 0 + } + }, + "max_queue_size": { + "description": "The maximum queue size to buffer spans for delayed processing. If the\nqueue gets full it drops the spans. The default value is 2048.", + "type": "integer", + "format": "uint", + "minimum": 0, + "default": 2048 + }, + "max_export_batch_size": { + "description": "The maximum number of spans to process in a single batch. If there are\nmore than one batch worth of spans then it processes multiple batches\nof spans one batch after the other without any delay. The default value\nis 512.", + "type": "integer", + "format": "uint", + "minimum": 0, + "default": 512 + }, + "max_export_timeout": { + "description": "The maximum duration to export a batch of data.\nThe default value is 30 seconds.", + "type": "string", + "default": { + "secs": 30, + "nanos": 0 + } + }, + "max_concurrent_exports": { + "description": "Maximum number of concurrent exports\n\nLimits the number of spawned tasks for exports and thus memory consumed\nby an exporter. A value of 1 will cause exports to be performed\nsynchronously on the BatchSpanProcessor task.\nThe default is 1.", + "type": "integer", + "format": "uint", + "minimum": 0, + "default": 1 + } + } + }, + "MetricsConfiguration": { + "type": "object", + "properties": { + "otlp": { + "description": "Configuration for exporting metrics via OTLP.", + "allOf": [ + { + "$ref": "#/definitions/OtlpMetricsConfiguration" + } + ] + }, + "usage_reports": { + "description": "Configuration for exporting metrics via Apollo usage reports.", + "allOf": [ + { + "$ref": "#/definitions/UsageReportsMetricsConfiguration" + } + ] + } + }, + "additionalProperties": false + }, + "OtlpMetricsConfiguration": { + "type": "object", + "properties": { + "batch_processor": { + "description": "Batch processor config for OTLP metrics.", + "allOf": [ + { + "$ref": "#/definitions/OtlpMetricsBatchProcessorConfiguration" + } + ] + } + }, + "additionalProperties": false + }, + "OtlpMetricsBatchProcessorConfiguration": { + "type": "object", + "properties": { + "scheduled_delay": { + "description": "The delay interval in milliseconds between two consecutive processing\nof batches. The default value is 5 seconds.", + "type": "string", + "default": { + "secs": 5, + "nanos": 0 + } + }, + "max_export_timeout": { + "description": "The maximum duration to export a batch of data.\nThe default value is 30 seconds.", + "type": "string", + "default": { + "secs": 30, + "nanos": 0 + } + } + } + }, + "UsageReportsMetricsConfiguration": { + "type": "object", + "properties": { + "batch_processor": { + "description": "Batch processor config for Apollo usage report metrics.", + "allOf": [ + { + "$ref": "#/definitions/ApolloUsageReportsBatchProcessorConfiguration" + } + ] + } + }, + "additionalProperties": false + }, + "ApolloUsageReportsBatchProcessorConfiguration": { + "type": "object", + "properties": { + "scheduled_delay": { + "description": "The delay interval in milliseconds between two consecutive processing\nof batches. The default value is 5 seconds.", + "type": "string", + "default": { + "secs": 5, + "nanos": 0 + } + }, + "max_queue_size": { + "description": "The maximum queue size to buffer spans for delayed processing. If the\nqueue gets full it drops the reports. The default value is 2048.", + "type": "integer", + "format": "uint", + "minimum": 0, + "default": 2048 + }, + "max_export_timeout": { + "description": "The maximum duration to export a batch of data.\nThe default value is 30 seconds.", + "type": "string", + "default": { + "secs": 30, + "nanos": 0 + } + } + } + }, + "ErrorsConfiguration": { + "type": "object", + "properties": { + "subgraph": { + "description": "Handling of errors coming from subgraph", + "allOf": [ + { + "$ref": "#/definitions/SubgraphErrorConfig" + } + ] + }, + "preview_extended_error_metrics": { + "description": "Send error metrics via OTLP with additional dimensions [`extensions.service`, `extensions.code`]", + "allOf": [ + { + "$ref": "#/definitions/ExtendedErrorMetricsMode" + } + ] + } + }, + "additionalProperties": false + }, + "SubgraphErrorConfig": { + "type": "object", + "properties": { + "all": { + "description": "Handling of errors coming from all subgraphs", + "allOf": [ + { + "$ref": "#/definitions/ErrorConfiguration" + } + ] + }, + "subgraphs": { + "description": "Handling of errors coming from specified subgraphs", + "type": "object", + "additionalProperties": { + "$ref": "#/definitions/ErrorConfiguration" + } + } + }, + "additionalProperties": false + }, + "ErrorConfiguration": { + "type": "object", + "properties": { + "send": { + "description": "Send subgraph errors to Apollo Studio", + "type": "boolean", + "default": true + }, + "redact": { + "description": "Redact subgraph errors to Apollo Studio", + "type": "boolean", + "default": true + }, + "redaction_policy": { + "description": "Allows additional dimension `extensions.code` to be sent with errors\neven when `redact` is set to `true`. Has no effect when `redact` is false.", + "allOf": [ + { + "$ref": "#/definitions/ErrorRedactionPolicy" + } + ] + } + }, + "additionalProperties": false + }, + "ErrorRedactionPolicy": { + "description": "Allow some error fields to be send to Apollo Studio even when `redact` is true.", + "oneOf": [ + { + "description": "Applies redaction to all error details.", + "type": "string", + "const": "strict" + }, + { + "description": "Modifies the `redact` setting by excluding the `extensions.code` field in errors from redaction.", + "type": "string", + "const": "extended" + } + ] + }, + "ExtendedErrorMetricsMode": { + "description": "Extended Open Telemetry error metrics mode", + "oneOf": [ + { + "description": "Do not send extended OTLP error metrics", + "type": "string", + "const": "disabled" + }, + { + "description": "Send extended OTLP error metrics to Apollo Studio with additional dimensions [`extensions.service`, `extensions.code`].\nIf enabled, it's also recommended to enable `redaction_policy: extended` on subgraphs to send the `extensions.code` for subgraph errors.", + "type": "string", + "const": "enabled" + } + ] + }, + "ApolloSignatureNormalizationAlgorithm": { + "description": "Apollo usage report signature normalization algorithm", + "oneOf": [ + { + "description": "Use the algorithm that matches the JavaScript-based implementation.", + "type": "string", + "const": "legacy" + }, + { + "description": "Use a new algorithm that includes input object forms, normalized aliases and variable names, and removes some\nedge cases from the JS implementation that affected normalization.", + "type": "string", + "const": "enhanced" + } + ] + }, + "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", + "const": "extended" + }, + { + "description": "Use the standard mode that only reports referenced object fields.", + "type": "string", + "const": "standard" + } + ] + }, + "Exporters": { + "description": "Exporter configuration", + "type": "object", + "properties": { + "logging": { + "description": "Logging configuration", + "allOf": [ + { + "$ref": "#/definitions/Logging" + } + ] + }, + "metrics": { + "description": "Metrics configuration", + "allOf": [ + { + "$ref": "#/definitions/Metrics2" + } + ] + }, + "tracing": { + "description": "Tracing configuration", + "allOf": [ + { + "$ref": "#/definitions/Tracing" + } + ] + } + }, + "additionalProperties": false + }, + "Logging": { + "description": "Logging configuration.", + "type": "object", + "properties": { + "common": { + "description": "Common configuration", + "allOf": [ + { + "$ref": "#/definitions/LoggingCommon" + } + ] + }, + "stdout": { + "description": "Settings for logging to stdout.", + "allOf": [ + { + "$ref": "#/definitions/StdOut" + } + ] + } + }, + "additionalProperties": false + }, + "LoggingCommon": { + "type": "object", + "properties": { + "service_name": { + "description": "Set a service.name resource in your metrics", + "type": ["string", "null"], + "default": null + }, + "service_namespace": { + "description": "Set a service.namespace attribute in your metrics", + "type": ["string", "null"], + "default": null + }, + "resource": { + "description": "The Open Telemetry resource", + "type": "object", + "additionalProperties": { + "$ref": "#/definitions/AttributeValue" + }, + "default": {} + } + }, + "additionalProperties": false + }, + "StdOut": { + "type": "object", + "properties": { + "enabled": { + "description": "Set to true to log to stdout.", + "type": "boolean", + "default": true + }, + "format": { + "description": "The format to log to stdout.", + "allOf": [ + { + "$ref": "#/definitions/logging_format" + } + ] + }, + "tty_format": { + "description": "The format to log to stdout when you're running on an interactive terminal. When configured it will automatically use this `tty_format`` instead of the original `format` when an interactive terminal is detected", + "anyOf": [ + { + "$ref": "#/definitions/logging_format" + }, + { + "type": "null" + } + ] + }, + "rate_limit": { + "description": "Log rate limiting. The limit is set per type of log message", + "allOf": [ + { + "$ref": "#/definitions/RateLimit" + } + ] + } + }, + "additionalProperties": false + }, + "logging_format": { + "oneOf": [ + { + "description": "Tracing subscriber https://docs.rs/tracing-subscriber/latest/tracing_subscriber/fmt/format/struct.Json.html", + "type": "object", + "properties": { + "json": { + "type": "object", + "properties": { + "display_timestamp": { + "description": "Include the timestamp with the log event. (default: true)", + "type": "boolean", + "default": true + }, + "display_target": { + "description": "Include the target with the log event. (default: true)", + "type": "boolean", + "default": true + }, + "display_level": { + "description": "Include the level with the log event. (default: true)", + "type": "boolean", + "default": true + }, + "display_thread_id": { + "description": "Include the thread_id with the log event.", + "type": "boolean", + "default": false + }, + "display_thread_name": { + "description": "Include the thread_name with the log event.", + "type": "boolean", + "default": false + }, + "display_filename": { + "description": "Include the filename with the log event.", + "type": "boolean", + "default": false + }, + "display_line_number": { + "description": "Include the line number with the log event.", + "type": "boolean", + "default": false + }, + "display_current_span": { + "description": "Include the current span in this log event.", + "type": "boolean", + "default": false + }, + "display_span_list": { + "description": "Include all of the containing span information with the log event. (default: true)", + "type": "boolean", + "default": true + }, + "display_resource": { + "description": "Include the resource with the log event. (default: true)", + "type": "boolean", + "default": true + }, + "display_trace_id": { + "description": "Include the trace id (if any) with the log event. (default: true)", + "allOf": [ + { + "$ref": "#/definitions/DisplayTraceIdFormat" + } + ] + }, + "display_span_id": { + "description": "Include the span id (if any) with the log event. (default: true)", + "type": "boolean", + "default": true + }, + "span_attributes": { + "description": "List of span attributes to attach to the json log object", + "type": "array", + "uniqueItems": true, + "items": { + "type": "string" + }, + "default": [] + } + }, + "additionalProperties": false + } + }, + "required": ["json"], + "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", + "properties": { + "text": { + "type": "object", + "properties": { + "ansi_escape_codes": { + "description": "Process ansi escapes (default: true)", + "type": "boolean", + "default": true + }, + "display_timestamp": { + "description": "Include the timestamp with the log event. (default: true)", + "type": "boolean", + "default": true + }, + "display_target": { + "description": "Include the target with the log event.", + "type": "boolean", + "default": false + }, + "display_level": { + "description": "Include the level with the log event. (default: true)", + "type": "boolean", + "default": true + }, + "display_thread_id": { + "description": "Include the thread_id with the log event.", + "type": "boolean", + "default": false + }, + "display_thread_name": { + "description": "Include the thread_name with the log event.", + "type": "boolean", + "default": false + }, + "display_filename": { + "description": "Include the filename with the log event.", + "type": "boolean", + "default": false + }, + "display_line_number": { + "description": "Include the line number with the log event.", + "type": "boolean", + "default": false + }, + "display_service_namespace": { + "description": "Include the service namespace with the log event.", + "type": "boolean", + "default": false + }, + "display_service_name": { + "description": "Include the service name with the log event.", + "type": "boolean", + "default": false + }, + "display_resource": { + "description": "Include the resource with the log event.", + "type": "boolean", + "default": false + }, + "display_current_span": { + "description": "Include the current span in this log event. (default: true)", + "type": "boolean", + "default": true + }, + "display_span_list": { + "description": "Include all of the containing span information with the log event. (default: true)", + "type": "boolean", + "default": true + }, + "display_trace_id": { + "description": "Include the trace id (if any) with the log event. (default: false)", + "allOf": [ + { + "$ref": "#/definitions/DisplayTraceIdFormat" + } + ] + }, + "display_span_id": { + "description": "Include the span id (if any) with the log event. (default: false)", + "type": "boolean", + "default": false + } + }, + "additionalProperties": false + } + }, + "required": ["text"], + "additionalProperties": false + }, + { + "description": "Tracing subscriber https://docs.rs/tracing-subscriber/latest/tracing_subscriber/fmt/format/struct.Full.html", + "type": "string", + "enum": ["text"] + } + ] + }, + "DisplayTraceIdFormat": { + "anyOf": [ + { + "$ref": "#/definitions/TraceIdFormat" + }, + { + "type": "boolean" + } + ] + }, + "RateLimit": { + "type": "object", + "properties": { + "enabled": { + "description": "Set to true to limit the rate of log messages", + "type": "boolean", + "default": false + }, + "capacity": { + "description": "Number of log lines allowed in interval per message", + "type": "integer", + "format": "uint32", + "minimum": 0, + "default": 1 + }, + "interval": { + "description": "Interval for rate limiting", + "type": "string", + "default": { + "secs": 1, + "nanos": 0 + } + } + }, + "additionalProperties": false + }, + "Metrics2": { + "description": "Metrics configuration", + "type": "object", + "properties": { + "common": { + "description": "Common metrics configuration across all exporters", + "allOf": [ + { + "$ref": "#/definitions/MetricsCommon" + } + ] + }, + "otlp": { + "description": "Open Telemetry native exporter configuration", + "allOf": [ + { + "$ref": "#/definitions/OTLPConfig" + } + ] + }, + "prometheus": { + "description": "Prometheus exporter configuration", + "allOf": [ + { + "$ref": "#/definitions/PrometheusMetricsConfig" + } + ] + } + }, + "additionalProperties": false + }, + "MetricsCommon": { + "type": "object", + "properties": { + "service_name": { + "description": "Set a service.name resource in your metrics", + "type": ["string", "null"], + "default": null + }, + "service_namespace": { + "description": "Set a service.namespace attribute in your metrics", + "type": ["string", "null"], + "default": null + }, + "resource": { + "description": "The Open Telemetry resource", + "type": "object", + "additionalProperties": { + "$ref": "#/definitions/AttributeValue" + }, + "default": {} + }, + "buckets": { + "description": "Custom buckets for all histograms", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "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 + ] + }, + "views": { + "description": "Views applied on metrics", + "type": "array", + "items": { + "$ref": "#/definitions/MetricView" + } + } + }, + "additionalProperties": false + }, + "MetricView": { + "type": "object", + "properties": { + "name": { + "description": "The instrument name you're targeting", + "type": "string" + }, + "rename": { + "description": "Rename the metric to this name\n\nThis allows you to customize metric names for both OTLP and Prometheus exporters.\nNote: Prometheus will apply additional transformations (dots to underscores, unit suffixes).\nApollo metrics are not affected by this rename - they will retain original names.", + "type": ["string", "null"] + }, + "description": { + "description": "New description to set to the instrument", + "type": ["string", "null"] + }, + "unit": { + "description": "New unit to set to the instrument", + "type": ["string", "null"] + }, + "aggregation": { + "description": "New aggregation settings to set", + "anyOf": [ + { + "$ref": "#/definitions/MetricAggregation" + }, + { + "type": "null" + } + ] + }, + "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\ndropped. If the set is empty, all attributes will be dropped, if `None` all\nattributes will be kept.", + "type": ["array", "null"], + "uniqueItems": true, + "items": { + "type": "string" + } + } + }, + "additionalProperties": false, + "required": ["name"] + }, + "MetricAggregation": { + "oneOf": [ + { + "description": "An aggregation that summarizes a set of measurements as an histogram with\nexplicitly defined buckets.", + "type": "object", + "properties": { + "histogram": { + "type": "object", + "properties": { + "buckets": { + "type": "array", + "items": { + "type": "number", + "format": "double" + } + } + }, + "additionalProperties": false, + "required": ["buckets"] + } + }, + "required": ["histogram"], + "additionalProperties": false + }, + { + "description": "Simply drop the metrics matching this view", + "type": "string", + "const": "drop" + } + ] + }, + "OTLPConfig": { + "type": "object", + "properties": { + "enabled": { + "description": "Enable otlp", + "type": "boolean" + }, + "endpoint": { + "description": "The endpoint to send data to", + "type": ["string", "null"], + "default": null + }, + "protocol": { + "description": "The protocol to use when sending data", + "default": "grpc", + "allOf": [ + { + "$ref": "#/definitions/Protocol" + } + ] + }, + "grpc": { + "description": "gRPC configuration settings", + "default": { + "domain_name": null, + "ca": null, + "cert": null, + "key": null, + "metadata": {} + }, + "allOf": [ + { + "$ref": "#/definitions/GrpcExporter" + } + ] + }, + "http": { + "description": "HTTP configuration settings", + "default": { + "headers": {} + }, + "allOf": [ + { + "$ref": "#/definitions/HttpExporter" + } + ] + }, + "batch_processor": { + "description": "Batch processor settings", + "allOf": [ + { + "$ref": "#/definitions/BatchProcessorConfig" + } + ] + }, + "temporality": { + "description": "Temporality for export (default: `Cumulative`).\nNote that when exporting to Datadog agent use `Delta`.", + "default": "cumulative", + "allOf": [ + { + "$ref": "#/definitions/Temporality" + } + ] + } + }, + "additionalProperties": false, + "required": ["enabled"] + }, + "GrpcExporter": { + "type": "object", + "properties": { + "domain_name": { + "description": "The optional domain name for tls config.\nNote that domain name is will be defaulted to match the endpoint is not explicitly set.", + "type": ["string", "null"], + "default": null + }, + "ca": { + "description": "The optional certificate authority (CA) certificate to be used in TLS configuration.", + "type": ["string", "null"], + "default": null + }, + "cert": { + "description": "The optional cert for tls config", + "type": ["string", "null"], + "default": null + }, + "key": { + "description": "The optional private key file for TLS configuration.", + "type": ["string", "null"], + "default": null + }, + "metadata": { + "description": "gRPC metadata", + "type": "object", + "additionalProperties": true, + "default": {} + } + }, + "additionalProperties": false + }, + "HttpExporter": { + "type": "object", + "properties": { + "headers": { + "description": "Headers to send on report requests", + "type": "object", + "additionalProperties": { + "type": "string" + }, + "default": {} + } + }, + "additionalProperties": false + }, + "Temporality": { + "oneOf": [ + { + "description": "Export cumulative metrics.", + "type": "string", + "const": "cumulative" + }, + { + "description": "Export delta metrics. `Delta` should be used when exporting to DataDog Agent.", + "type": "string", + "const": "delta" + } + ] + }, + "PrometheusMetricsConfig": { + "description": "Prometheus configuration", + "type": "object", + "properties": { + "enabled": { + "description": "Set to true to enable", + "type": "boolean", + "default": false + }, + "resource_selector": { + "description": "resource_selector is used to select which resource to export with every metrics.", + "allOf": [ + { + "$ref": "#/definitions/ResourceSelectorConfig" + } + ] + }, + "listen": { + "description": "The listen address", + "default": "127.0.0.1:9090", + "allOf": [ + { + "$ref": "#/definitions/ListenAddr" + } + ] + }, + "path": { + "description": "The path where prometheus will be exposed", + "type": "string", + "default": "/metrics" + } + }, + "additionalProperties": false + }, + "ResourceSelectorConfig": { + "oneOf": [ + { + "description": "Export all resource attributes with every metrics.", + "type": "string", + "const": "all" + }, + { + "description": "Do not export any resource attributes with every metrics.", + "type": "string", + "const": "none" + } + ] + }, + "Tracing": { + "description": "Tracing configuration", + "type": "object", + "properties": { + "experimental_response_trace_id": { + "description": "A way to expose trace id in response headers", + "allOf": [ + { + "$ref": "#/definitions/ExposeTraceId" + } + ] + }, + "propagation": { + "description": "Propagation configuration", + "allOf": [ + { + "$ref": "#/definitions/Propagation" + } + ] + }, + "common": { + "description": "Common configuration", + "allOf": [ + { + "$ref": "#/definitions/TracingCommon" + } + ] + }, + "otlp": { + "description": "OpenTelemetry native exporter configuration", + "allOf": [ + { + "$ref": "#/definitions/OTLPConfig" + } + ] + }, + "zipkin": { + "description": "Zipkin exporter configuration", + "allOf": [ + { + "$ref": "#/definitions/ZipkinConfig" + } + ] + }, + "datadog": { + "description": "Datadog exporter configuration", + "allOf": [ + { + "$ref": "#/definitions/DatadogConfig" + } + ] + } + }, + "additionalProperties": false + }, + "ExposeTraceId": { + "type": "object", + "properties": { + "enabled": { + "description": "Expose the trace_id in response headers", + "type": "boolean", + "default": false + }, + "header_name": { + "description": "Choose the header name to expose trace_id (default: apollo-trace-id)", + "type": ["string", "null"] + }, + "format": { + "description": "Format of the trace ID in response headers", + "allOf": [ + { + "$ref": "#/definitions/TraceIdFormat" + } + ] + } + }, + "additionalProperties": false + }, + "Propagation": { + "description": "Configure propagation of traces. In general you won't have to do this as these are automatically configured\nalong with any exporter you configure.", + "type": "object", + "properties": { + "request": { + "description": "Select a custom request header to set your own trace_id (header value must be convertible from hexadecimal to set a correct trace_id)", + "allOf": [ + { + "$ref": "#/definitions/RequestPropagation" + } + ] + }, + "baggage": { + "description": "Propagate baggage https://www.w3.org/TR/baggage/", + "type": "boolean", + "default": false + }, + "trace_context": { + "description": "Propagate trace context https://www.w3.org/TR/trace-context/", + "type": "boolean", + "default": false + }, + "jaeger": { + "description": "Propagate Jaeger", + "type": "boolean", + "default": false + }, + "datadog": { + "description": "Propagate Datadog", + "type": "boolean", + "default": false + }, + "zipkin": { + "description": "Propagate Zipkin", + "type": "boolean", + "default": false + }, + "aws_xray": { + "description": "Propagate AWS X-Ray", + "type": "boolean", + "default": false + } + }, + "additionalProperties": false + }, + "RequestPropagation": { + "type": "object", + "properties": { + "header_name": { + "description": "Choose the header name to expose trace_id (default: apollo-trace-id)", + "type": "string" + }, + "format": { + "description": "The trace ID format that will be used when propagating to subgraph services.", + "allOf": [ + { + "$ref": "#/definitions/TraceIdFormat" + } + ] + } + }, + "additionalProperties": false, + "required": ["header_name"] + }, + "TracingCommon": { + "type": "object", + "properties": { + "service_name": { + "description": "The trace service name", + "type": ["string", "null"], + "default": null + }, + "service_namespace": { + "description": "The trace service namespace", + "type": ["string", "null"], + "default": null + }, + "sampler": { + "description": "The sampler, always_on, always_off or a decimal between 0.0 and 1.0", + "allOf": [ + { + "$ref": "#/definitions/SamplerOption" + } + ] + }, + "preview_datadog_agent_sampling": { + "description": "Use datadog agent sampling. This means that all spans will be sent to the Datadog agent\nand the `sampling.priority` attribute will be used to control if the span will then be sent to Datadog", + "type": ["boolean", "null"], + "default": null + }, + "parent_based_sampler": { + "description": "Whether to use parent based sampling", + "type": "boolean", + "default": true + }, + "max_events_per_span": { + "description": "The maximum events per span before discarding", + "type": "integer", + "format": "uint32", + "minimum": 0, + "default": 128 + }, + "max_attributes_per_span": { + "description": "The maximum attributes per span before discarding", + "type": "integer", + "format": "uint32", + "minimum": 0, + "default": 128 + }, + "max_links_per_span": { + "description": "The maximum links per span before discarding", + "type": "integer", + "format": "uint32", + "minimum": 0, + "default": 128 + }, + "max_attributes_per_event": { + "description": "The maximum attributes per event before discarding", + "type": "integer", + "format": "uint32", + "minimum": 0, + "default": 128 + }, + "max_attributes_per_link": { + "description": "The maximum attributes per link before discarding", + "type": "integer", + "format": "uint32", + "minimum": 0, + "default": 128 + }, + "resource": { + "description": "The Open Telemetry resource", + "type": "object", + "additionalProperties": { + "$ref": "#/definitions/AttributeValue" + }, + "default": {} + } + }, + "additionalProperties": false + }, + "ZipkinConfig": { + "type": "object", + "properties": { + "enabled": { + "description": "Enable zipkin", + "type": "boolean" + }, + "endpoint": { + "description": "The endpoint to send to", + "allOf": [ + { + "$ref": "#/definitions/UriEndpoint" + } + ] + }, + "batch_processor": { + "description": "Batch processor configuration", + "allOf": [ + { + "$ref": "#/definitions/BatchProcessorConfig" + } + ] + } + }, + "additionalProperties": false, + "required": ["enabled"] + }, + "UriEndpoint": { + "type": "string" + }, + "DatadogConfig": { + "type": "object", + "properties": { + "enabled": { + "description": "Enable datadog", + "type": "boolean" + }, + "endpoint": { + "description": "The endpoint to send to", + "allOf": [ + { + "$ref": "#/definitions/UriEndpoint" + } + ] + }, + "batch_processor": { + "description": "batch processor configuration", + "allOf": [ + { + "$ref": "#/definitions/BatchProcessorConfig" + } + ] + }, + "enable_span_mapping": { + "description": "Enable datadog span mapping for span name and resource name.", + "type": "boolean", + "default": true + }, + "fixed_span_names": { + "description": "Fixes the span names, this means that the APM view will show the original span names in the operation dropdown.", + "type": "boolean", + "default": true + }, + "resource_mapping": { + "description": "Custom mapping to be used as the resource field in spans, defaults to:\nrouter -> http.route\nsupergraph -> graphql.operation.name\nquery_planning -> graphql.operation.name\nsubgraph -> subgraph.name\nsubgraph_request -> subgraph.name\nhttp_request -> http.route", + "type": "object", + "additionalProperties": { + "type": "string" + }, + "default": {} + }, + "span_metrics": { + "description": "Which spans will be eligible for span stats to be collected for viewing in the APM view.\nDefaults to true for `request`, `router`, `query_parsing`, `supergraph`, `execution`, `query_planning`, `subgraph`, `subgraph_request`, `connect`, `connect_request` and `http_request`.", + "type": "object", + "additionalProperties": { + "type": "boolean" + }, + "default": { + "supergraph": true, + "http_request": true, + "connect_request": true, + "request": true, + "execution": true, + "connect": true, + "subgraph": true, + "router": true, + "parse_query": true, + "query_planning": true, + "subgraph_request": true + } + } + }, + "additionalProperties": false, + "required": ["enabled"] + }, + "Instrumentation": { + "description": "Instrumentation configuration", + "type": "object", + "properties": { + "events": { + "description": "Event configuration", + "allOf": [ + { + "$ref": "#/definitions/Events" + } + ] + }, + "spans": { + "description": "Span configuration", + "allOf": [ + { + "$ref": "#/definitions/Spans" + } + ] + }, + "instruments": { + "description": "Instrument configuration", + "allOf": [ + { + "$ref": "#/definitions/InstrumentsConfig" + } + ] + } + }, + "additionalProperties": false + }, + "Events": { + "description": "Events are", + "type": "object", + "properties": { + "router": { + "description": "Router service events", + "allOf": [ + { + "$ref": "#/definitions/ExtendedRouterEventsConfigWithEvent" + } + ] + }, + "supergraph": { + "description": "Subgraph service events", + "allOf": [ + { + "$ref": "#/definitions/ExtendedSupergraphEventsConfigWithEvent" + } + ] + }, + "subgraph": { + "description": "Supergraph service events", + "allOf": [ + { + "$ref": "#/definitions/ExtendedSubgraphEventsConfigWithEvent" + } + ] + }, + "connector": { + "description": "Connector events", + "allOf": [ + { + "$ref": "#/definitions/ExtendedConnectorEventsConfigWithEvent" + } + ] + } + }, + "additionalProperties": false + }, + "ExtendedRouterEventsConfigWithEvent": { + "type": "object", + "properties": { + "request": { + "description": "Log the router request", + "allOf": [ + { + "$ref": "#/definitions/StandardEventConfigRouterSelector" + } + ] + }, + "response": { + "description": "Log the router response", + "allOf": [ + { + "$ref": "#/definitions/StandardEventConfigRouterSelector" + } + ] + }, + "error": { + "description": "Log the router error", + "allOf": [ + { + "$ref": "#/definitions/StandardEventConfigRouterSelector" + } + ] + } + }, + "additionalProperties": { + "$ref": "#/definitions/Event" + } + }, + "Event": { + "description": "An event that can be logged as part of a trace.\nThe event has an implicit `type` attribute that matches the name of the event in the yaml\nand a message that can be used to provide additional information.", + "type": "object", + "properties": { + "level": { + "description": "The log level of the event.", + "allOf": [ + { + "$ref": "#/definitions/EventLevelConfig" + } + ] + }, + "message": { + "description": "The event message.", + "type": "string" + }, + "on": { + "description": "When to trigger the event.", + "allOf": [ + { + "$ref": "#/definitions/EventOn" + } + ] + }, + "attributes": { + "description": "The event attributes.", + "allOf": [ + { + "$ref": "#/definitions/ExtendedRouterAttributesWithRouterSelector" + } + ] + }, + "condition": { + "description": "The event conditions.", + "allOf": [ + { + "$ref": "#/definitions/ConditionRouterSelector" + } + ] + } + }, + "required": ["level", "message", "on"] + }, + "EventLevelConfig": { + "description": "Log level configuration for events. Use \"off\" to not log the event, or a level name to log the\nevent at that level and above.", + "type": "string", + "enum": ["info", "warn", "error", "off"] + }, + "EventOn": { + "description": "When to trigger the event.", + "oneOf": [ + { + "description": "Log the event on request", + "type": "string", + "const": "request" + }, + { + "description": "Log the event on response", + "type": "string", + "const": "response" + }, + { + "description": "Log the event on every chunks in the response", + "type": "string", + "const": "event_response" + }, + { + "description": "Log the event on error", + "type": "string", + "const": "error" + } + ] + }, + "ExtendedRouterAttributesWithRouterSelector": { + "description": "Common attributes for http server and client.\nSee https://opentelemetry.io/docs/specs/semconv/http/http-spans/#common-attributes", + "type": "object", + "properties": { + "dd.trace_id": { + "description": "The datadog trace ID.\nThis can be output in logs and used to correlate traces in Datadog.", + "anyOf": [ + { + "$ref": "#/definitions/StandardAttribute" + }, + { + "type": "null" + } + ] + }, + "trace_id": { + "description": "The OpenTelemetry trace ID.\nThis can be output in logs.", + "anyOf": [ + { + "$ref": "#/definitions/StandardAttribute" + }, + { + "type": "null" + } + ] + }, + "baggage": { + "description": "All key values from trace baggage.", + "type": ["boolean", "null"], + "default": null + }, + "error.type": { + "description": "Describes a class of error the operation ended with.\nExamples:\n\n* timeout\n* name_resolution_error\n* 500\n\nRequirement level: Conditionally Required: If request has ended with an error.", + "anyOf": [ + { + "$ref": "#/definitions/StandardAttribute" + }, + { + "type": "null" + } + ] + }, + "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.\nExamples:\n\n* 3495\n\nRequirement level: Recommended", + "anyOf": [ + { + "$ref": "#/definitions/StandardAttribute" + }, + { + "type": "null" + } + ] + }, + "http.request.method": { + "description": "HTTP request method.\nExamples:\n\n* GET\n* POST\n* HEAD\n\nRequirement level: Required", + "anyOf": [ + { + "$ref": "#/definitions/StandardAttribute" + }, + { + "type": "null" + } + ] + }, + "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.\nExamples:\n\n* 3495\n\nRequirement level: Recommended", + "anyOf": [ + { + "$ref": "#/definitions/StandardAttribute" + }, + { + "type": "null" + } + ] + }, + "http.response.status_code": { + "description": "HTTP response status code.\nExamples:\n\n* 200\n\nRequirement level: Conditionally Required: If and only if one was received/sent.", + "anyOf": [ + { + "$ref": "#/definitions/StandardAttribute" + }, + { + "type": "null" + } + ] + }, + "network.protocol.name": { + "description": "OSI application layer or non-OSI equivalent.\nExamples:\n\n* http\n* spdy\n\nRequirement level: Recommended: if not default (http).", + "anyOf": [ + { + "$ref": "#/definitions/StandardAttribute" + }, + { + "type": "null" + } + ] + }, + "network.protocol.version": { + "description": "Version of the protocol specified in network.protocol.name.\nExamples:\n\n* 1.0\n* 1.1\n* 2\n* 3\n\nRequirement level: Recommended", + "anyOf": [ + { + "$ref": "#/definitions/StandardAttribute" + }, + { + "type": "null" + } + ] + }, + "network.transport": { + "description": "OSI transport layer.\nExamples:\n\n* tcp\n* udp\n\nRequirement level: Conditionally Required", + "anyOf": [ + { + "$ref": "#/definitions/StandardAttribute" + }, + { + "type": "null" + } + ] + }, + "network.type": { + "description": "OSI network layer or non-OSI equivalent.\nExamples:\n\n* ipv4\n* ipv6\n\nRequirement level: Recommended", + "anyOf": [ + { + "$ref": "#/definitions/StandardAttribute" + }, + { + "type": "null" + } + ] + }, + "http.route": { + "description": "The matched route (path template in the format used by the respective server framework).\nExamples:\n\n* /graphql\n\nRequirement level: Conditionally Required: If and only if it’s available", + "anyOf": [ + { + "$ref": "#/definitions/StandardAttribute" + }, + { + "type": "null" + } + ] + }, + "network.local.address": { + "description": "Local socket address. Useful in case of a multi-IP host.\nExamples:\n\n* 10.1.2.80\n* /tmp/my.sock\n\nRequirement level: Opt-In", + "anyOf": [ + { + "$ref": "#/definitions/StandardAttribute" + }, + { + "type": "null" + } + ] + }, + "network.local.port": { + "description": "Local socket port. Useful in case of a multi-port host.\nExamples:\n\n* 65123\n\nRequirement level: Opt-In", + "anyOf": [ + { + "$ref": "#/definitions/StandardAttribute" + }, + { + "type": "null" + } + ] + }, + "network.peer.address": { + "description": "Peer address of the network connection - IP address or Unix domain socket name.\nExamples:\n\n* 10.1.2.80\n* /tmp/my.sock\n\nRequirement level: Recommended", + "anyOf": [ + { + "$ref": "#/definitions/StandardAttribute" + }, + { + "type": "null" + } + ] + }, + "network.peer.port": { + "description": "Peer port number of the network connection.\nExamples:\n\n* 65123\n\nRequirement level: Recommended", + "anyOf": [ + { + "$ref": "#/definitions/StandardAttribute" + }, + { + "type": "null" + } + ] + }, + "server.address": { + "description": "Name of the local HTTP server that received the request.\nExamples:\n\n* example.com\n* 10.1.2.80\n* /tmp/my.sock\n\nRequirement level: Recommended", + "anyOf": [ + { + "$ref": "#/definitions/StandardAttribute" + }, + { + "type": "null" + } + ] + }, + "server.port": { + "description": "Port of the local HTTP server that received the request.\nExamples:\n\n* 80\n* 8080\n* 443\n\nRequirement level: Recommended", + "anyOf": [ + { + "$ref": "#/definitions/StandardAttribute" + }, + { + "type": "null" + } + ] + }, + "url.path": { + "description": "The URI path component\nExamples:\n\n* /search\n\nRequirement level: Required", + "anyOf": [ + { + "$ref": "#/definitions/StandardAttribute" + }, + { + "type": "null" + } + ] + }, + "url.query": { + "description": "The URI query component\nExamples:\n\n* q=OpenTelemetry\n\nRequirement level: Conditionally Required: If and only if one was received/sent.", + "anyOf": [ + { + "$ref": "#/definitions/StandardAttribute" + }, + { + "type": "null" + } + ] + }, + "url.scheme": { + "description": "The URI scheme component identifying the used protocol.\nExamples:\n\n* http\n* https\n\nRequirement level: Required", + "anyOf": [ + { + "$ref": "#/definitions/StandardAttribute" + }, + { + "type": "null" + } + ] + }, + "user_agent.original": { + "description": "Value of the HTTP User-Agent header sent by the client.\nExamples:\n\n* CERN-LineMode/2.15\n* libwww/2.17b3\n\nRequirement level: Recommended", + "anyOf": [ + { + "$ref": "#/definitions/StandardAttribute" + }, + { + "type": "null" + } + ] + } + }, + "additionalProperties": { + "$ref": "#/definitions/RouterSelector" + } + }, + "StandardAttribute": { + "anyOf": [ + { + "type": "boolean" + }, + { + "type": "object", + "properties": { + "alias": { + "type": "string" + } + }, + "additionalProperties": false, + "required": ["alias"] + } + ] + }, + "StandardEventConfigRouterSelector": { + "anyOf": [ + { + "$ref": "#/definitions/EventLevelConfig" + }, + { + "type": "object", + "properties": { + "level": { + "$ref": "#/definitions/EventLevelConfig" + }, + "condition": { + "$ref": "#/definitions/ConditionRouterSelector" + } + }, + "required": ["level", "condition"] + } + ] + }, + "ExtendedSupergraphEventsConfigWithEvent": { + "type": "object", + "properties": { + "request": { + "description": "Log the supergraph request", + "allOf": [ + { + "$ref": "#/definitions/StandardEventConfigSupergraphSelector" + } + ] + }, + "response": { + "description": "Log the supergraph response", + "allOf": [ + { + "$ref": "#/definitions/StandardEventConfigSupergraphSelector" + } + ] + }, + "error": { + "description": "Log the supergraph error", + "allOf": [ + { + "$ref": "#/definitions/StandardEventConfigSupergraphSelector" + } + ] + } + }, + "additionalProperties": { + "$ref": "#/definitions/Event2" + } + }, + "Event2": { + "description": "An event that can be logged as part of a trace.\nThe event has an implicit `type` attribute that matches the name of the event in the yaml\nand a message that can be used to provide additional information.", + "type": "object", + "properties": { + "level": { + "description": "The log level of the event.", + "allOf": [ + { + "$ref": "#/definitions/EventLevelConfig" + } + ] + }, + "message": { + "description": "The event message.", + "type": "string" + }, + "on": { + "description": "When to trigger the event.", + "allOf": [ + { + "$ref": "#/definitions/EventOn" + } + ] + }, + "attributes": { + "description": "The event attributes.", + "allOf": [ + { + "$ref": "#/definitions/ExtendedSupergraphAttributesWithSupergraphSelector" + } + ] + }, + "condition": { + "description": "The event conditions.", + "allOf": [ + { + "$ref": "#/definitions/ConditionSupergraphSelector" + } + ] + } + }, + "required": ["level", "message", "on"] + }, + "ExtendedSupergraphAttributesWithSupergraphSelector": { + "description": "Attributes for Cost", + "type": "object", + "properties": { + "graphql.document": { + "description": "The GraphQL document being executed.\nExamples:\n\n* `query findBookById { bookById(id: ?) { name } }`\n\nRequirement level: Recommended", + "anyOf": [ + { + "$ref": "#/definitions/StandardAttribute" + }, + { + "type": "null" + } + ] + }, + "graphql.operation.name": { + "description": "The name of the operation being executed.\nExamples:\n\n* findBookById\n\nRequirement level: Recommended", + "anyOf": [ + { + "$ref": "#/definitions/StandardAttribute" + }, + { + "type": "null" + } + ] + }, + "graphql.operation.type": { + "description": "The type of the operation being executed.\nExamples:\n\n* query\n* subscription\n* mutation\n\nRequirement level: Recommended", + "anyOf": [ + { + "$ref": "#/definitions/StandardAttribute" + }, + { + "type": "null" + } + ] + }, + "cost.estimated": { + "description": "The estimated cost of the operation using the currently configured cost model", + "anyOf": [ + { + "$ref": "#/definitions/StandardAttribute" + }, + { + "type": "null" + } + ] + }, + "cost.actual": { + "description": "The actual cost of the operation using the currently configured cost model", + "anyOf": [ + { + "$ref": "#/definitions/StandardAttribute" + }, + { + "type": "null" + } + ] + }, + "cost.delta": { + "description": "The delta (estimated - actual) cost of the operation using the currently configured cost model", + "anyOf": [ + { + "$ref": "#/definitions/StandardAttribute" + }, + { + "type": "null" + } + ] + }, + "cost.result": { + "description": "The cost result, this is an error code returned by the cost calculation or COST_OK", + "anyOf": [ + { + "$ref": "#/definitions/StandardAttribute" + }, + { + "type": "null" + } + ] + } + }, + "additionalProperties": { + "$ref": "#/definitions/SupergraphSelector" + } + }, + "StandardEventConfigSupergraphSelector": { + "anyOf": [ + { + "$ref": "#/definitions/EventLevelConfig" + }, + { + "type": "object", + "properties": { + "level": { + "$ref": "#/definitions/EventLevelConfig" + }, + "condition": { + "$ref": "#/definitions/ConditionSupergraphSelector" + } + }, + "required": ["level", "condition"] + } + ] + }, + "ExtendedSubgraphEventsConfigWithEvent": { + "type": "object", + "properties": { + "request": { + "description": "Log the subgraph request", + "allOf": [ + { + "$ref": "#/definitions/StandardEventConfigSubgraphSelector" + } + ] + }, + "response": { + "description": "Log the subgraph response", + "allOf": [ + { + "$ref": "#/definitions/StandardEventConfigSubgraphSelector" + } + ] + }, + "error": { + "description": "Log the subgraph error", + "allOf": [ + { + "$ref": "#/definitions/StandardEventConfigSubgraphSelector" + } + ] + } + }, + "additionalProperties": { + "$ref": "#/definitions/Event3" + } + }, + "Event3": { + "description": "An event that can be logged as part of a trace.\nThe event has an implicit `type` attribute that matches the name of the event in the yaml\nand a message that can be used to provide additional information.", + "type": "object", + "properties": { + "level": { + "description": "The log level of the event.", + "allOf": [ + { + "$ref": "#/definitions/EventLevelConfig" + } + ] + }, + "message": { + "description": "The event message.", + "type": "string" + }, + "on": { + "description": "When to trigger the event.", + "allOf": [ + { + "$ref": "#/definitions/EventOn" + } + ] + }, + "attributes": { + "description": "The event attributes.", + "allOf": [ + { + "$ref": "#/definitions/ExtendedSubgraphAttributesWithSubgraphSelector" + } + ] + }, + "condition": { + "description": "The event conditions.", + "allOf": [ + { + "$ref": "#/definitions/ConditionSubgraphSelector" + } + ] + } + }, + "required": ["level", "message", "on"] + }, + "ExtendedSubgraphAttributesWithSubgraphSelector": { + "type": "object", + "properties": { + "subgraph.name": { + "description": "The name of the subgraph\nExamples:\n\n* products\n\nRequirement level: Required", + "anyOf": [ + { + "$ref": "#/definitions/StandardAttribute" + }, + { + "type": "null" + } + ] + }, + "subgraph.graphql.document": { + "description": "The GraphQL document being executed.\nExamples:\n\n* `query findBookById { bookById(id: ?) { name } }`\n\nRequirement level: Recommended", + "anyOf": [ + { + "$ref": "#/definitions/StandardAttribute" + }, + { + "type": "null" + } + ] + }, + "subgraph.graphql.operation.name": { + "description": "The name of the operation being executed.\nExamples:\n\n* findBookById\n\nRequirement level: Recommended", + "anyOf": [ + { + "$ref": "#/definitions/StandardAttribute" + }, + { + "type": "null" + } + ] + }, + "subgraph.graphql.operation.type": { + "description": "The type of the operation being executed.\nExamples:\n\n* query\n* subscription\n* mutation\n\nRequirement level: Recommended", + "anyOf": [ + { + "$ref": "#/definitions/StandardAttribute" + }, + { + "type": "null" + } + ] + }, + "http.request.resend_count": { + "description": "The number of times the request has been resent", + "anyOf": [ + { + "$ref": "#/definitions/StandardAttribute" + }, + { + "type": "null" + } + ] + } + }, + "additionalProperties": { + "$ref": "#/definitions/SubgraphSelector" + } + }, + "StandardEventConfigSubgraphSelector": { + "anyOf": [ + { + "$ref": "#/definitions/EventLevelConfig" + }, + { + "type": "object", + "properties": { + "level": { + "$ref": "#/definitions/EventLevelConfig" + }, + "condition": { + "$ref": "#/definitions/ConditionSubgraphSelector" + } + }, + "required": ["level", "condition"] + } + ] + }, + "ExtendedConnectorEventsConfigWithEvent": { + "type": "object", + "properties": { + "request": { + "description": "Log the connector HTTP request", + "allOf": [ + { + "$ref": "#/definitions/StandardEventConfigConnectorSelector" + } + ] + }, + "response": { + "description": "Log the connector HTTP response", + "allOf": [ + { + "$ref": "#/definitions/StandardEventConfigConnectorSelector" + } + ] + }, + "error": { + "description": "Log the connector HTTP error", + "allOf": [ + { + "$ref": "#/definitions/StandardEventConfigConnectorSelector" + } + ] + } + }, + "additionalProperties": { + "$ref": "#/definitions/Event4" + } + }, + "Event4": { + "description": "An event that can be logged as part of a trace.\nThe event has an implicit `type` attribute that matches the name of the event in the yaml\nand a message that can be used to provide additional information.", + "type": "object", + "properties": { + "level": { + "description": "The log level of the event.", + "allOf": [ + { + "$ref": "#/definitions/EventLevelConfig" + } + ] + }, + "message": { + "description": "The event message.", + "type": "string" + }, + "on": { + "description": "When to trigger the event.", + "allOf": [ + { + "$ref": "#/definitions/EventOn" + } + ] + }, + "attributes": { + "description": "The event attributes.", + "allOf": [ + { + "$ref": "#/definitions/ExtendedConnectorAttributesWithConnectorSelector" + } + ] + }, + "condition": { + "description": "The event conditions.", + "allOf": [ + { + "$ref": "#/definitions/ConditionConnectorSelector" + } + ] + } + }, + "required": ["level", "message", "on"] + }, + "ExtendedConnectorAttributesWithConnectorSelector": { + "type": "object", + "properties": { + "subgraph.name": { + "description": "The name of the subgraph containing the connector\nExamples:\n\n* posts\n\nRequirement level: Required", + "anyOf": [ + { + "$ref": "#/definitions/StandardAttribute" + }, + { + "type": "null" + } + ] + }, + "connector.source.name": { + "description": "The name of the source for this connector, if defined\nExamples:\n\n* posts_api\n\nRequirement level: Conditionally Required: If the connector has a source defined", + "anyOf": [ + { + "$ref": "#/definitions/StandardAttribute" + }, + { + "type": "null" + } + ] + }, + "connector.http.method": { + "description": "The HTTP method for the connector\nExamples:\n\n* GET\n* POST\n\nRequirement level: Required", + "anyOf": [ + { + "$ref": "#/definitions/StandardAttribute" + }, + { + "type": "null" + } + ] + }, + "connector.url.template": { + "description": "The connector URL template, relative to the source base URL if one is defined\nExamples:\n\n* /users/{$this.id!}/post\n\nRequirement level: Required", + "anyOf": [ + { + "$ref": "#/definitions/StandardAttribute" + }, + { + "type": "null" + } + ] + } + }, + "additionalProperties": { + "$ref": "#/definitions/ConnectorSelector" + } + }, + "ConnectorSelector": { + "anyOf": [ + { + "type": "object", + "properties": { + "subgraph_name": { + "description": "The subgraph name", + "type": "boolean" + } + }, + "additionalProperties": false, + "required": ["subgraph_name"] + }, + { + "type": "object", + "properties": { + "connector_source": { + "description": "The connector source.", + "allOf": [ + { + "$ref": "#/definitions/ConnectorSource" + } + ] + } + }, + "additionalProperties": false, + "required": ["connector_source"] + }, + { + "type": "object", + "properties": { + "connector_http_request_header": { + "description": "The name of a connector HTTP request header.", + "type": "string" + }, + "default": { + "description": "Optional default value.", + "type": ["string", "null"] + } + }, + "additionalProperties": false, + "required": ["connector_http_request_header"] + }, + { + "type": "object", + "properties": { + "connector_http_response_header": { + "description": "The name of a connector HTTP response header.", + "type": "string" + }, + "default": { + "description": "Optional default value.", + "type": ["string", "null"] + } + }, + "additionalProperties": false, + "required": ["connector_http_response_header"] + }, + { + "type": "object", + "properties": { + "connector_http_response_status": { + "description": "The connector HTTP response status code.", + "allOf": [ + { + "$ref": "#/definitions/ResponseStatus" + } + ] + } + }, + "additionalProperties": false, + "required": ["connector_http_response_status"] + }, + { + "type": "object", + "properties": { + "connector_http_method": { + "description": "The connector HTTP method.", + "type": "boolean" + } + }, + "additionalProperties": false, + "required": ["connector_http_method"] + }, + { + "type": "object", + "properties": { + "connector_url_template": { + "description": "The connector URL template.", + "type": "boolean" + } + }, + "additionalProperties": false, + "required": ["connector_url_template"] + }, + { + "type": "object", + "properties": { + "static": { + "description": "A static value", + "allOf": [ + { + "$ref": "#/definitions/AttributeValue" + } + ] + } + }, + "additionalProperties": false, + "required": ["static"] + }, + { + "type": "object", + "properties": { + "error": { + "description": "Critical error if it happens", + "allOf": [ + { + "$ref": "#/definitions/ErrorRepr" + } + ] + } + }, + "additionalProperties": false, + "required": ["error"] + }, + { + "type": "object", + "properties": { + "connector_request_mapping_problems": { + "description": "Request mapping problems, if any", + "allOf": [ + { + "$ref": "#/definitions/MappingProblems" + } + ] + } + }, + "additionalProperties": false, + "required": ["connector_request_mapping_problems"] + }, + { + "type": "object", + "properties": { + "connector_response_mapping_problems": { + "description": "Response mapping problems, if any", + "allOf": [ + { + "$ref": "#/definitions/MappingProblems" + } + ] + } + }, + "additionalProperties": false, + "required": ["connector_response_mapping_problems"] + }, + { + "type": "object", + "properties": { + "request_context": { + "description": "The request context key.", + "type": "string" + }, + "default": { + "description": "Optional default value.", + "anyOf": [ + { + "$ref": "#/definitions/AttributeValue" + }, + { + "type": "null" + } + ] + } + }, + "additionalProperties": false, + "required": ["request_context"] + }, + { + "type": "object", + "properties": { + "supergraph_operation_name": { + "description": "The supergraph query operation name.", + "allOf": [ + { + "$ref": "#/definitions/OperationName" + } + ] + }, + "default": { + "description": "Optional default value.", + "type": ["string", "null"] + } + }, + "additionalProperties": false, + "required": ["supergraph_operation_name"] + }, + { + "type": "object", + "properties": { + "supergraph_operation_kind": { + "description": "The supergraph query operation kind (query|mutation|subscription).", + "allOf": [ + { + "$ref": "#/definitions/OperationKind" + } + ] + } + }, + "additionalProperties": false, + "required": ["supergraph_operation_kind"] + }, + { + "type": "object", + "properties": { + "connector_on_response_error": { + "description": "Boolean set to true if the response's `is_successful` condition is false. If this is not\nset, returns true when the response contains a non-200 status code", + "type": "boolean" + } + }, + "additionalProperties": false, + "required": ["connector_on_response_error"] + } + ] + }, + "ConnectorSource": { + "oneOf": [ + { + "description": "The name of the connector source.", + "type": "string", + "const": "name" + } + ] + }, + "MappingProblems": { + "oneOf": [ + { + "description": "String representation of all problems", + "type": "string", + "const": "problems" + }, + { + "description": "The count of mapping problems", + "type": "string", + "const": "count" + }, + { + "description": "Whether there are any mapping problems", + "type": "string", + "const": "boolean" + } + ] + }, + "ConditionConnectorSelector": { + "description": "Specify a condition for when an [instrument][] should be mutated or an [event][] should be triggered.\n\n[instrument]: https://www.apollographql.com/docs/graphos/routing/observability/telemetry/instrumentation/instruments\n[event]: https://www.apollographql.com/docs/graphos/routing/observability/telemetry/instrumentation/events", + "oneOf": [ + { + "description": "A condition to check a selection against a value.", + "type": "object", + "properties": { + "eq": { + "type": "array", + "items": { + "$ref": "#/definitions/ConnectorSelectorOrValue" + }, + "minItems": 2, + "maxItems": 2 + } + }, + "required": ["eq"], + "additionalProperties": false + }, + { + "description": "The first selection must be greater than the second selection.", + "type": "object", + "properties": { + "gt": { + "type": "array", + "items": { + "$ref": "#/definitions/ConnectorSelectorOrValue" + }, + "minItems": 2, + "maxItems": 2 + } + }, + "required": ["gt"], + "additionalProperties": false + }, + { + "description": "The first selection must be less than the second selection.", + "type": "object", + "properties": { + "lt": { + "type": "array", + "items": { + "$ref": "#/definitions/ConnectorSelectorOrValue" + }, + "minItems": 2, + "maxItems": 2 + } + }, + "required": ["lt"], + "additionalProperties": false + }, + { + "description": "A condition to check a selection against a selector.", + "type": "object", + "properties": { + "exists": { + "$ref": "#/definitions/ConnectorSelector" + } + }, + "required": ["exists"], + "additionalProperties": false + }, + { + "description": "All sub-conditions must be true.", + "type": "object", + "properties": { + "all": { + "type": "array", + "items": { + "$ref": "#/definitions/ConditionConnectorSelector" + } + } + }, + "required": ["all"], + "additionalProperties": false + }, + { + "description": "At least one sub-conditions must be true.", + "type": "object", + "properties": { + "any": { + "type": "array", + "items": { + "$ref": "#/definitions/ConditionConnectorSelector" + } + } + }, + "required": ["any"], + "additionalProperties": false + }, + { + "description": "The sub-condition must not be true", + "type": "object", + "properties": { + "not": { + "$ref": "#/definitions/ConditionConnectorSelector" + } + }, + "required": ["not"], + "additionalProperties": false + }, + { + "description": "Static true condition", + "type": "string", + "const": "true" + }, + { + "description": "Static false condition", + "type": "string", + "const": "false" + } + ] + }, + "ConnectorSelectorOrValue": { + "anyOf": [ + { + "description": "A constant value.", + "allOf": [ + { + "$ref": "#/definitions/AttributeValue" + } + ] + }, + { + "description": "Selector to extract a value from the pipeline.", + "allOf": [ + { + "$ref": "#/definitions/ConnectorSelector" + } + ] + } + ] + }, + "StandardEventConfigConnectorSelector": { + "anyOf": [ + { + "$ref": "#/definitions/EventLevelConfig" + }, + { + "type": "object", + "properties": { + "level": { + "$ref": "#/definitions/EventLevelConfig" + }, + "condition": { + "$ref": "#/definitions/ConditionConnectorSelector" + } + }, + "required": ["level", "condition"] + } + ] + }, + "Spans": { + "type": "object", + "properties": { + "mode": { + "description": "Use new OpenTelemetry spec compliant span attributes or preserve existing. This will be defaulted in future to `spec_compliant`, eventually removed in future.", + "allOf": [ + { + "$ref": "#/definitions/SpanMode" + } + ] + }, + "default_attribute_requirement_level": { + "description": "The attributes to include by default in spans based on their level as specified in the otel semantic conventions and Apollo documentation.", + "allOf": [ + { + "$ref": "#/definitions/DefaultAttributeRequirementLevel" + } + ] + }, + "router": { + "description": "Configuration of router spans.\nLog events inherit attributes from the containing span, so attributes configured here will be included on log events for a request.\nRouter spans contain http request and response information and therefore contain http specific attributes.", + "allOf": [ + { + "$ref": "#/definitions/RouterSpans" + } + ] + }, + "supergraph": { + "description": "Configuration of supergraph spans.\nSupergraph spans contain information about the graphql request and response and therefore contain graphql specific attributes.", + "allOf": [ + { + "$ref": "#/definitions/SupergraphSpans" + } + ] + }, + "subgraph": { + "description": "Attributes to include on the subgraph span.\nSubgraph spans contain information about the subgraph request and response and therefore contain subgraph specific attributes.", + "allOf": [ + { + "$ref": "#/definitions/SubgraphSpans" + } + ] + }, + "connector": { + "description": "Attributes to include on the connector span.\nConnector spans contain information about the connector request and response and therefore contain connector specific attributes.", + "allOf": [ + { + "$ref": "#/definitions/ConnectorSpans" + } + ] + }, + "http_client": { + "description": "Attributes to include on the HTTP client span.\nHTTP client spans contain information about HTTP requests made to subgraphs, including any changes made by Rhai scripts.", + "allOf": [ + { + "$ref": "#/definitions/HttpClientSpans" + } + ] + } + }, + "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", + "const": "deprecated" + }, + { + "description": "Use new OpenTelemetry spec compliant span attributes or preserve existing. This will be the default in future.", + "type": "string", + "const": "spec_compliant" + } + ] + }, + "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", + "const": "none" + }, + { + "description": "Attributes that are marked as required in otel semantic conventions and apollo documentation will be included (default)", + "type": "string", + "const": "required" + }, + { + "description": "Attributes that are marked as required or recommended in otel semantic conventions and apollo documentation will be included", + "type": "string", + "const": "recommended" + } + ] + }, + "RouterSpans": { + "type": "object", + "properties": { + "attributes": { + "description": "Custom attributes that are attached to the router span.", + "allOf": [ + { + "$ref": "#/definitions/ExtendedRouterAttributesWithConditionalRouterSelector" + } + ] + } + }, + "additionalProperties": false + }, + "ExtendedRouterAttributesWithConditionalRouterSelector": { + "description": "Common attributes for http server and client.\nSee https://opentelemetry.io/docs/specs/semconv/http/http-spans/#common-attributes", + "type": "object", + "properties": { + "dd.trace_id": { + "description": "The datadog trace ID.\nThis can be output in logs and used to correlate traces in Datadog.", + "anyOf": [ + { + "$ref": "#/definitions/StandardAttribute" + }, + { + "type": "null" + } + ] + }, + "trace_id": { + "description": "The OpenTelemetry trace ID.\nThis can be output in logs.", + "anyOf": [ + { + "$ref": "#/definitions/StandardAttribute" + }, + { + "type": "null" + } + ] + }, + "baggage": { + "description": "All key values from trace baggage.", + "type": ["boolean", "null"], + "default": null + }, + "error.type": { + "description": "Describes a class of error the operation ended with.\nExamples:\n\n* timeout\n* name_resolution_error\n* 500\n\nRequirement level: Conditionally Required: If request has ended with an error.", + "anyOf": [ + { + "$ref": "#/definitions/StandardAttribute" + }, + { + "type": "null" + } + ] + }, + "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.\nExamples:\n\n* 3495\n\nRequirement level: Recommended", + "anyOf": [ + { + "$ref": "#/definitions/StandardAttribute" + }, + { + "type": "null" + } + ] + }, + "http.request.method": { + "description": "HTTP request method.\nExamples:\n\n* GET\n* POST\n* HEAD\n\nRequirement level: Required", + "anyOf": [ + { + "$ref": "#/definitions/StandardAttribute" + }, + { + "type": "null" + } + ] + }, + "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.\nExamples:\n\n* 3495\n\nRequirement level: Recommended", + "anyOf": [ + { + "$ref": "#/definitions/StandardAttribute" + }, + { + "type": "null" + } + ] + }, + "http.response.status_code": { + "description": "HTTP response status code.\nExamples:\n\n* 200\n\nRequirement level: Conditionally Required: If and only if one was received/sent.", + "anyOf": [ + { + "$ref": "#/definitions/StandardAttribute" + }, + { + "type": "null" + } + ] + }, + "network.protocol.name": { + "description": "OSI application layer or non-OSI equivalent.\nExamples:\n\n* http\n* spdy\n\nRequirement level: Recommended: if not default (http).", + "anyOf": [ + { + "$ref": "#/definitions/StandardAttribute" + }, + { + "type": "null" + } + ] + }, + "network.protocol.version": { + "description": "Version of the protocol specified in network.protocol.name.\nExamples:\n\n* 1.0\n* 1.1\n* 2\n* 3\n\nRequirement level: Recommended", + "anyOf": [ + { + "$ref": "#/definitions/StandardAttribute" + }, + { + "type": "null" + } + ] + }, + "network.transport": { + "description": "OSI transport layer.\nExamples:\n\n* tcp\n* udp\n\nRequirement level: Conditionally Required", + "anyOf": [ + { + "$ref": "#/definitions/StandardAttribute" + }, + { + "type": "null" + } + ] + }, + "network.type": { + "description": "OSI network layer or non-OSI equivalent.\nExamples:\n\n* ipv4\n* ipv6\n\nRequirement level: Recommended", + "anyOf": [ + { + "$ref": "#/definitions/StandardAttribute" + }, + { + "type": "null" + } + ] + }, + "http.route": { + "description": "The matched route (path template in the format used by the respective server framework).\nExamples:\n\n* /graphql\n\nRequirement level: Conditionally Required: If and only if it’s available", + "anyOf": [ + { + "$ref": "#/definitions/StandardAttribute" + }, + { + "type": "null" + } + ] + }, + "network.local.address": { + "description": "Local socket address. Useful in case of a multi-IP host.\nExamples:\n\n* 10.1.2.80\n* /tmp/my.sock\n\nRequirement level: Opt-In", + "anyOf": [ + { + "$ref": "#/definitions/StandardAttribute" + }, + { + "type": "null" + } + ] + }, + "network.local.port": { + "description": "Local socket port. Useful in case of a multi-port host.\nExamples:\n\n* 65123\n\nRequirement level: Opt-In", + "anyOf": [ + { + "$ref": "#/definitions/StandardAttribute" + }, + { + "type": "null" + } + ] + }, + "network.peer.address": { + "description": "Peer address of the network connection - IP address or Unix domain socket name.\nExamples:\n\n* 10.1.2.80\n* /tmp/my.sock\n\nRequirement level: Recommended", + "anyOf": [ + { + "$ref": "#/definitions/StandardAttribute" + }, + { + "type": "null" + } + ] + }, + "network.peer.port": { + "description": "Peer port number of the network connection.\nExamples:\n\n* 65123\n\nRequirement level: Recommended", + "anyOf": [ + { + "$ref": "#/definitions/StandardAttribute" + }, + { + "type": "null" + } + ] + }, + "server.address": { + "description": "Name of the local HTTP server that received the request.\nExamples:\n\n* example.com\n* 10.1.2.80\n* /tmp/my.sock\n\nRequirement level: Recommended", + "anyOf": [ + { + "$ref": "#/definitions/StandardAttribute" + }, + { + "type": "null" + } + ] + }, + "server.port": { + "description": "Port of the local HTTP server that received the request.\nExamples:\n\n* 80\n* 8080\n* 443\n\nRequirement level: Recommended", + "anyOf": [ + { + "$ref": "#/definitions/StandardAttribute" + }, + { + "type": "null" + } + ] + }, + "url.path": { + "description": "The URI path component\nExamples:\n\n* /search\n\nRequirement level: Required", + "anyOf": [ + { + "$ref": "#/definitions/StandardAttribute" + }, + { + "type": "null" + } + ] + }, + "url.query": { + "description": "The URI query component\nExamples:\n\n* q=OpenTelemetry\n\nRequirement level: Conditionally Required: If and only if one was received/sent.", + "anyOf": [ + { + "$ref": "#/definitions/StandardAttribute" + }, + { + "type": "null" + } + ] + }, + "url.scheme": { + "description": "The URI scheme component identifying the used protocol.\nExamples:\n\n* http\n* https\n\nRequirement level: Required", + "anyOf": [ + { + "$ref": "#/definitions/StandardAttribute" + }, + { + "type": "null" + } + ] + }, + "user_agent.original": { + "description": "Value of the HTTP User-Agent header sent by the client.\nExamples:\n\n* CERN-LineMode/2.15\n* libwww/2.17b3\n\nRequirement level: Recommended", + "anyOf": [ + { + "$ref": "#/definitions/StandardAttribute" + }, + { + "type": "null" + } + ] + } + }, + "additionalProperties": { + "$ref": "#/definitions/ConditionalRouterSelector" + } + }, + "ConditionalRouterSelector": { + "anyOf": [ + { + "$ref": "#/definitions/RouterSelector" + }, + { + "type": "object", + "properties": { + "condition": { + "$ref": "#/definitions/ConditionRouterSelector" + } + } + } + ] + }, + "SupergraphSpans": { + "type": "object", + "properties": { + "attributes": { + "description": "Custom attributes that are attached to the supergraph span.", + "allOf": [ + { + "$ref": "#/definitions/ExtendedSupergraphAttributesWithConditionalSupergraphSelector" + } + ] + } + }, + "additionalProperties": false + }, + "ExtendedSupergraphAttributesWithConditionalSupergraphSelector": { + "description": "Attributes for Cost", + "type": "object", + "properties": { + "graphql.document": { + "description": "The GraphQL document being executed.\nExamples:\n\n* `query findBookById { bookById(id: ?) { name } }`\n\nRequirement level: Recommended", + "anyOf": [ + { + "$ref": "#/definitions/StandardAttribute" + }, + { + "type": "null" + } + ] + }, + "graphql.operation.name": { + "description": "The name of the operation being executed.\nExamples:\n\n* findBookById\n\nRequirement level: Recommended", + "anyOf": [ + { + "$ref": "#/definitions/StandardAttribute" + }, + { + "type": "null" + } + ] + }, + "graphql.operation.type": { + "description": "The type of the operation being executed.\nExamples:\n\n* query\n* subscription\n* mutation\n\nRequirement level: Recommended", + "anyOf": [ + { + "$ref": "#/definitions/StandardAttribute" + }, + { + "type": "null" + } + ] + }, + "cost.estimated": { + "description": "The estimated cost of the operation using the currently configured cost model", + "anyOf": [ + { + "$ref": "#/definitions/StandardAttribute" + }, + { + "type": "null" + } + ] + }, + "cost.actual": { + "description": "The actual cost of the operation using the currently configured cost model", + "anyOf": [ + { + "$ref": "#/definitions/StandardAttribute" + }, + { + "type": "null" + } + ] + }, + "cost.delta": { + "description": "The delta (estimated - actual) cost of the operation using the currently configured cost model", + "anyOf": [ + { + "$ref": "#/definitions/StandardAttribute" + }, + { + "type": "null" + } + ] + }, + "cost.result": { + "description": "The cost result, this is an error code returned by the cost calculation or COST_OK", + "anyOf": [ + { + "$ref": "#/definitions/StandardAttribute" + }, + { + "type": "null" + } + ] + } + }, + "additionalProperties": { + "$ref": "#/definitions/ConditionalSupergraphSelector" + } + }, + "ConditionalSupergraphSelector": { + "anyOf": [ + { + "$ref": "#/definitions/SupergraphSelector" + }, + { + "type": "object", + "properties": { + "condition": { + "$ref": "#/definitions/ConditionSupergraphSelector" + } + } + } + ] + }, + "SubgraphSpans": { + "type": "object", + "properties": { + "attributes": { + "description": "Custom attributes that are attached to the subgraph span.", + "allOf": [ + { + "$ref": "#/definitions/ExtendedSubgraphAttributesWithConditionalSubgraphSelector" + } + ] + } + }, + "additionalProperties": false + }, + "ExtendedSubgraphAttributesWithConditionalSubgraphSelector": { + "type": "object", + "properties": { + "subgraph.name": { + "description": "The name of the subgraph\nExamples:\n\n* products\n\nRequirement level: Required", + "anyOf": [ + { + "$ref": "#/definitions/StandardAttribute" + }, + { + "type": "null" + } + ] + }, + "subgraph.graphql.document": { + "description": "The GraphQL document being executed.\nExamples:\n\n* `query findBookById { bookById(id: ?) { name } }`\n\nRequirement level: Recommended", + "anyOf": [ + { + "$ref": "#/definitions/StandardAttribute" + }, + { + "type": "null" + } + ] + }, + "subgraph.graphql.operation.name": { + "description": "The name of the operation being executed.\nExamples:\n\n* findBookById\n\nRequirement level: Recommended", + "anyOf": [ + { + "$ref": "#/definitions/StandardAttribute" + }, + { + "type": "null" + } + ] + }, + "subgraph.graphql.operation.type": { + "description": "The type of the operation being executed.\nExamples:\n\n* query\n* subscription\n* mutation\n\nRequirement level: Recommended", + "anyOf": [ + { + "$ref": "#/definitions/StandardAttribute" + }, + { + "type": "null" + } + ] + }, + "http.request.resend_count": { + "description": "The number of times the request has been resent", + "anyOf": [ + { + "$ref": "#/definitions/StandardAttribute" + }, + { + "type": "null" + } + ] + } + }, + "additionalProperties": { + "$ref": "#/definitions/ConditionalSubgraphSelector" + } + }, + "ConditionalSubgraphSelector": { + "anyOf": [ + { + "$ref": "#/definitions/SubgraphSelector" + }, + { + "type": "object", + "properties": { + "condition": { + "$ref": "#/definitions/ConditionSubgraphSelector" + } + } + } + ] + }, + "ConnectorSpans": { + "type": "object", + "properties": { + "attributes": { + "description": "Custom attributes that are attached to the connector span.", + "allOf": [ + { + "$ref": "#/definitions/ExtendedConnectorAttributesWithConditionalConnectorSelector" + } + ] + } + }, + "additionalProperties": false + }, + "ExtendedConnectorAttributesWithConditionalConnectorSelector": { + "type": "object", + "properties": { + "subgraph.name": { + "description": "The name of the subgraph containing the connector\nExamples:\n\n* posts\n\nRequirement level: Required", + "anyOf": [ + { + "$ref": "#/definitions/StandardAttribute" + }, + { + "type": "null" + } + ] + }, + "connector.source.name": { + "description": "The name of the source for this connector, if defined\nExamples:\n\n* posts_api\n\nRequirement level: Conditionally Required: If the connector has a source defined", + "anyOf": [ + { + "$ref": "#/definitions/StandardAttribute" + }, + { + "type": "null" + } + ] + }, + "connector.http.method": { + "description": "The HTTP method for the connector\nExamples:\n\n* GET\n* POST\n\nRequirement level: Required", + "anyOf": [ + { + "$ref": "#/definitions/StandardAttribute" + }, + { + "type": "null" + } + ] + }, + "connector.url.template": { + "description": "The connector URL template, relative to the source base URL if one is defined\nExamples:\n\n* /users/{$this.id!}/post\n\nRequirement level: Required", + "anyOf": [ + { + "$ref": "#/definitions/StandardAttribute" + }, + { + "type": "null" + } + ] + } + }, + "additionalProperties": { + "$ref": "#/definitions/ConditionalConnectorSelector" + } + }, + "ConditionalConnectorSelector": { + "anyOf": [ + { + "$ref": "#/definitions/ConnectorSelector" + }, + { + "type": "object", + "properties": { + "condition": { + "$ref": "#/definitions/ConditionConnectorSelector" + } + } + } + ] + }, + "HttpClientSpans": { + "type": "object", + "properties": { + "attributes": { + "description": "Custom attributes that are attached to the HTTP client span.", + "allOf": [ + { + "$ref": "#/definitions/ExtendedHttpClientAttributesWithConditionalHttpClientSelector" + } + ] + } + }, + "additionalProperties": false + }, + "ExtendedHttpClientAttributesWithConditionalHttpClientSelector": { + "type": "object", + "additionalProperties": { + "$ref": "#/definitions/ConditionalHttpClientSelector" + } + }, + "ConditionalHttpClientSelector": { + "anyOf": [ + { + "$ref": "#/definitions/HttpClientSelector" + }, + { + "type": "object", + "properties": { + "condition": { + "$ref": "#/definitions/ConditionHttpClientSelector" + } + } + } + ] + }, + "HttpClientSelector": { + "anyOf": [ + { + "description": "A header from the HTTP request", + "type": "object", + "properties": { + "request_header": { + "description": "The name of the request header.", + "type": "string" + }, + "default": { + "description": "Optional default value.", + "type": ["string", "null"] + } + }, + "additionalProperties": false, + "required": ["request_header"] + }, + { + "description": "A header from the HTTP response", + "type": "object", + "properties": { + "response_header": { + "description": "The name of the response header.", + "type": "string" + }, + "default": { + "description": "Optional default value.", + "type": ["string", "null"] + } + }, + "additionalProperties": false, + "required": ["response_header"] + } + ] + }, + "ConditionHttpClientSelector": { + "description": "Specify a condition for when an [instrument][] should be mutated or an [event][] should be triggered.\n\n[instrument]: https://www.apollographql.com/docs/graphos/routing/observability/telemetry/instrumentation/instruments\n[event]: https://www.apollographql.com/docs/graphos/routing/observability/telemetry/instrumentation/events", + "oneOf": [ + { + "description": "A condition to check a selection against a value.", + "type": "object", + "properties": { + "eq": { + "type": "array", + "items": { + "$ref": "#/definitions/HttpClientSelectorOrValue" + }, + "minItems": 2, + "maxItems": 2 + } + }, + "required": ["eq"], + "additionalProperties": false + }, + { + "description": "The first selection must be greater than the second selection.", + "type": "object", + "properties": { + "gt": { + "type": "array", + "items": { + "$ref": "#/definitions/HttpClientSelectorOrValue" + }, + "minItems": 2, + "maxItems": 2 + } + }, + "required": ["gt"], + "additionalProperties": false + }, + { + "description": "The first selection must be less than the second selection.", + "type": "object", + "properties": { + "lt": { + "type": "array", + "items": { + "$ref": "#/definitions/HttpClientSelectorOrValue" + }, + "minItems": 2, + "maxItems": 2 + } + }, + "required": ["lt"], + "additionalProperties": false + }, + { + "description": "A condition to check a selection against a selector.", + "type": "object", + "properties": { + "exists": { + "$ref": "#/definitions/HttpClientSelector" + } + }, + "required": ["exists"], + "additionalProperties": false + }, + { + "description": "All sub-conditions must be true.", + "type": "object", + "properties": { + "all": { + "type": "array", + "items": { + "$ref": "#/definitions/ConditionHttpClientSelector" + } + } + }, + "required": ["all"], + "additionalProperties": false + }, + { + "description": "At least one sub-conditions must be true.", + "type": "object", + "properties": { + "any": { + "type": "array", + "items": { + "$ref": "#/definitions/ConditionHttpClientSelector" + } + } + }, + "required": ["any"], + "additionalProperties": false + }, + { + "description": "The sub-condition must not be true", + "type": "object", + "properties": { + "not": { + "$ref": "#/definitions/ConditionHttpClientSelector" + } + }, + "required": ["not"], + "additionalProperties": false + }, + { + "description": "Static true condition", + "type": "string", + "const": "true" + }, + { + "description": "Static false condition", + "type": "string", + "const": "false" + } + ] + }, + "HttpClientSelectorOrValue": { + "anyOf": [ + { + "description": "A constant value.", + "allOf": [ + { + "$ref": "#/definitions/AttributeValue" + } + ] + }, + { + "description": "Selector to extract a value from the pipeline.", + "allOf": [ + { + "$ref": "#/definitions/HttpClientSelector" + } + ] + } + ] + }, + "InstrumentsConfig": { + "type": "object", + "properties": { + "default_requirement_level": { + "description": "The attributes and instruments to include by default in instruments based on their level as specified in the otel semantic conventions and Apollo documentation.", + "allOf": [ + { + "$ref": "#/definitions/DefaultAttributeRequirementLevel" + } + ] + }, + "router": { + "description": "Router service instruments. For more information see documentation on Router lifecycle.", + "allOf": [ + { + "$ref": "#/definitions/ExtendedRouterInstrumentsConfigWithInstrument" + } + ] + }, + "supergraph": { + "description": "Supergraph service instruments. For more information see documentation on Router lifecycle.", + "allOf": [ + { + "$ref": "#/definitions/ExtendedSupergraphInstrumentsConfigWithInstrument" + } + ] + }, + "subgraph": { + "description": "Subgraph service instruments. For more information see documentation on Router lifecycle.", + "allOf": [ + { + "$ref": "#/definitions/ExtendedSubgraphInstrumentsConfigWithInstrument" + } + ] + }, + "connector": { + "description": "Connector service instruments.", + "allOf": [ + { + "$ref": "#/definitions/ExtendedConnectorInstrumentsConfigWithInstrument" + } + ] + }, + "graphql": { + "description": "GraphQL response field instruments.", + "allOf": [ + { + "$ref": "#/definitions/ExtendedGraphQLInstrumentsConfigWithInstrument" + } + ] + }, + "cache": { + "description": "Cache instruments", + "allOf": [ + { + "$ref": "#/definitions/ExtendedCacheInstrumentsConfigWithInstrument" + } + ] + } + }, + "additionalProperties": false + }, + "ExtendedRouterInstrumentsConfigWithInstrument": { + "type": "object", + "properties": { + "http.server.request.duration": { + "description": "Histogram of server request duration", + "allOf": [ + { + "$ref": "#/definitions/StandardInstrumentExtendedRouterAttributesWithRouterSelector" + } + ] + }, + "http.server.active_requests": { + "description": "Counter of active requests", + "allOf": [ + { + "$ref": "#/definitions/StandardInstrumentActiveRequestsAttributes" + } + ] + }, + "http.server.request.body.size": { + "description": "Histogram of server request body size", + "allOf": [ + { + "$ref": "#/definitions/StandardInstrumentExtendedRouterAttributesWithRouterSelector" + } + ] + }, + "http.server.response.body.size": { + "description": "Histogram of server response body size", + "allOf": [ + { + "$ref": "#/definitions/StandardInstrumentExtendedRouterAttributesWithRouterSelector" + } + ] + }, + "apollo.router.overhead": { + "description": "Histogram of router overhead (time not spent in subgraph requests)", + "allOf": [ + { + "$ref": "#/definitions/StandardInstrumentExtendedRouterOverheadAttributesWithRouterSelector" + } + ] + } + }, + "additionalProperties": { + "$ref": "#/definitions/Instrument" + } + }, + "Instrument": { + "type": "object", + "properties": { + "type": { + "description": "The type of instrument.", + "allOf": [ + { + "$ref": "#/definitions/InstrumentType" + } + ] + }, + "value": { + "description": "The value of the instrument.", + "allOf": [ + { + "$ref": "#/definitions/RouterValue" + } + ] + }, + "description": { + "description": "The description of the instrument.", + "type": "string" + }, + "unit": { + "description": "The units of the instrument, e.g. \"ms\", \"bytes\", \"requests\".", + "type": "string" + }, + "attributes": { + "description": "Attributes to include on the instrument.", + "allOf": [ + { + "$ref": "#/definitions/ExtendedRouterAttributesWithRouterSelector" + } + ] + }, + "condition": { + "description": "The instrument conditions.", + "allOf": [ + { + "$ref": "#/definitions/ConditionRouterSelector" + } + ] + } + }, + "additionalProperties": false, + "required": ["type", "value", "description", "unit"] + }, + "InstrumentType": { + "oneOf": [ + { + "description": "A monotonic counter https://opentelemetry.io/docs/specs/otel/metrics/data-model/#sums", + "type": "string", + "const": "counter" + }, + { + "description": "A histogram https://opentelemetry.io/docs/specs/otel/metrics/data-model/#histogram", + "type": "string", + "const": "histogram" + } + ] + }, + "RouterValue": { + "anyOf": [ + { + "$ref": "#/definitions/Standard" + }, + { + "$ref": "#/definitions/RouterSelector" + } + ] + }, + "Standard": { + "type": "string", + "enum": ["duration", "unit"] + }, + "StandardInstrumentExtendedRouterAttributesWithRouterSelector": { + "anyOf": [ + { + "type": "null" + }, + { + "type": "boolean" + }, + { + "type": "object", + "properties": { + "attributes": { + "$ref": "#/definitions/ExtendedRouterAttributesWithRouterSelector" + } + }, + "additionalProperties": false, + "required": ["attributes"] + } + ] + }, + "StandardInstrumentActiveRequestsAttributes": { + "anyOf": [ + { + "type": "null" + }, + { + "type": "boolean" + }, + { + "type": "object", + "properties": { + "attributes": { + "$ref": "#/definitions/ActiveRequestsAttributes" + } + }, + "additionalProperties": false, + "required": ["attributes"] + } + ] + }, + "ActiveRequestsAttributes": { + "type": "object", + "properties": { + "http.request.method": { + "description": "The HTTP request method", + "type": "boolean", + "default": false + }, + "server.address": { + "description": "The server address", + "type": "boolean", + "default": false + }, + "server.port": { + "description": "The server port", + "type": "boolean", + "default": false + }, + "url.scheme": { + "description": "The URL scheme", + "type": "boolean", + "default": false + } + }, + "additionalProperties": false + }, + "StandardInstrumentExtendedRouterOverheadAttributesWithRouterSelector": { + "anyOf": [ + { + "type": "null" + }, + { + "type": "boolean" + }, + { + "type": "object", + "properties": { + "attributes": { + "$ref": "#/definitions/ExtendedRouterOverheadAttributesWithRouterSelector" + } + }, + "additionalProperties": false, + "required": ["attributes"] + } + ] + }, + "ExtendedRouterOverheadAttributesWithRouterSelector": { + "description": "Empty attributes struct for router overhead - no standard attributes, only custom selectors", + "type": "object", + "additionalProperties": { + "$ref": "#/definitions/RouterSelector" + } + }, + "ExtendedSupergraphInstrumentsConfigWithInstrument": { + "type": "object", + "properties": { + "cost.estimated": { + "description": "A histogram of the estimated cost of the operation using the currently configured cost model", + "allOf": [ + { + "$ref": "#/definitions/StandardInstrumentExtendedSupergraphAttributesWithSupergraphSelector" + } + ] + }, + "cost.actual": { + "description": "A histogram of the actual cost of the operation using the currently configured cost model", + "allOf": [ + { + "$ref": "#/definitions/StandardInstrumentExtendedSupergraphAttributesWithSupergraphSelector" + } + ] + }, + "cost.delta": { + "description": "A histogram of the delta between the estimated and actual cost of the operation using the currently configured cost model", + "allOf": [ + { + "$ref": "#/definitions/StandardInstrumentExtendedSupergraphAttributesWithSupergraphSelector" + } + ] + } + }, + "additionalProperties": { + "$ref": "#/definitions/Instrument2" + } + }, + "Instrument2": { + "type": "object", + "properties": { + "type": { + "description": "The type of instrument.", + "allOf": [ + { + "$ref": "#/definitions/InstrumentType" + } + ] + }, + "value": { + "description": "The value of the instrument.", + "allOf": [ + { + "$ref": "#/definitions/SupergraphValue" + } + ] + }, + "description": { + "description": "The description of the instrument.", + "type": "string" + }, + "unit": { + "description": "The units of the instrument, e.g. \"ms\", \"bytes\", \"requests\".", + "type": "string" + }, + "attributes": { + "description": "Attributes to include on the instrument.", + "allOf": [ + { + "$ref": "#/definitions/ExtendedSupergraphAttributesWithSupergraphSelector" + } + ] + }, + "condition": { + "description": "The instrument conditions.", + "allOf": [ + { + "$ref": "#/definitions/ConditionSupergraphSelector" + } + ] + } + }, + "additionalProperties": false, + "required": ["type", "value", "description", "unit"] + }, + "SupergraphValue": { + "anyOf": [ + { + "$ref": "#/definitions/Standard" + }, + { + "$ref": "#/definitions/Event5" + }, + { + "$ref": "#/definitions/SupergraphSelector" + } + ] + }, + "Event5": { + "oneOf": [ + { + "description": "For every supergraph response payload (including subscription events and defer events)", + "type": "string", + "const": "event_duration" + }, + { + "description": "For every supergraph response payload (including subscription events and defer events)", + "type": "string", + "const": "event_unit" + }, + { + "description": "For every supergraph response payload (including subscription events and defer events)", + "type": "object", + "properties": { + "event_custom": { + "$ref": "#/definitions/SupergraphSelector" + } + }, + "required": ["event_custom"], + "additionalProperties": false + } + ] + }, + "StandardInstrumentExtendedSupergraphAttributesWithSupergraphSelector": { + "anyOf": [ + { + "type": "null" + }, + { + "type": "boolean" + }, + { + "type": "object", + "properties": { + "attributes": { + "$ref": "#/definitions/ExtendedSupergraphAttributesWithSupergraphSelector" + } + }, + "additionalProperties": false, + "required": ["attributes"] + } + ] + }, + "ExtendedSubgraphInstrumentsConfigWithInstrument": { + "type": "object", + "properties": { + "http.client.request.duration": { + "description": "Histogram of client request duration", + "allOf": [ + { + "$ref": "#/definitions/StandardInstrumentExtendedSubgraphAttributesWithSubgraphSelector" + } + ] + }, + "http.client.request.body.size": { + "description": "Histogram of client request body size", + "allOf": [ + { + "$ref": "#/definitions/StandardInstrumentExtendedSubgraphAttributesWithSubgraphSelector" + } + ] + }, + "http.client.response.body.size": { + "description": "Histogram of client response body size", + "allOf": [ + { + "$ref": "#/definitions/StandardInstrumentExtendedSubgraphAttributesWithSubgraphSelector" + } + ] + } + }, + "additionalProperties": { + "$ref": "#/definitions/Instrument3" + } + }, + "Instrument3": { + "type": "object", + "properties": { + "type": { + "description": "The type of instrument.", + "allOf": [ + { + "$ref": "#/definitions/InstrumentType" + } + ] + }, + "value": { + "description": "The value of the instrument.", + "allOf": [ + { + "$ref": "#/definitions/SubgraphValue" + } + ] + }, + "description": { + "description": "The description of the instrument.", + "type": "string" + }, + "unit": { + "description": "The units of the instrument, e.g. \"ms\", \"bytes\", \"requests\".", + "type": "string" + }, + "attributes": { + "description": "Attributes to include on the instrument.", + "allOf": [ + { + "$ref": "#/definitions/ExtendedSubgraphAttributesWithSubgraphSelector" + } + ] + }, + "condition": { + "description": "The instrument conditions.", + "allOf": [ + { + "$ref": "#/definitions/ConditionSubgraphSelector" + } + ] + } + }, + "additionalProperties": false, + "required": ["type", "value", "description", "unit"] + }, + "SubgraphValue": { + "anyOf": [ + { + "$ref": "#/definitions/Standard" + }, + { + "$ref": "#/definitions/SubgraphSelector" + } + ] + }, + "StandardInstrumentExtendedSubgraphAttributesWithSubgraphSelector": { + "anyOf": [ + { + "type": "null" + }, + { + "type": "boolean" + }, + { + "type": "object", + "properties": { + "attributes": { + "$ref": "#/definitions/ExtendedSubgraphAttributesWithSubgraphSelector" + } + }, + "additionalProperties": false, + "required": ["attributes"] + } + ] + }, + "ExtendedConnectorInstrumentsConfigWithInstrument": { + "type": "object", + "properties": { + "http.client.request.duration": { + "description": "Histogram of client request duration", + "allOf": [ + { + "$ref": "#/definitions/StandardInstrumentExtendedConnectorAttributesWithConnectorSelector" + } + ] + }, + "http.client.request.body.size": { + "description": "Histogram of client request body size", + "allOf": [ + { + "$ref": "#/definitions/StandardInstrumentExtendedConnectorAttributesWithConnectorSelector" + } + ] + }, + "http.client.response.body.size": { + "description": "Histogram of client response body size", + "allOf": [ + { + "$ref": "#/definitions/StandardInstrumentExtendedConnectorAttributesWithConnectorSelector" + } + ] + } + }, + "additionalProperties": { + "$ref": "#/definitions/Instrument4" + } + }, + "Instrument4": { + "type": "object", + "properties": { + "type": { + "description": "The type of instrument.", + "allOf": [ + { + "$ref": "#/definitions/InstrumentType" + } + ] + }, + "value": { + "description": "The value of the instrument.", + "allOf": [ + { + "$ref": "#/definitions/ConnectorValue" + } + ] + }, + "description": { + "description": "The description of the instrument.", + "type": "string" + }, + "unit": { + "description": "The units of the instrument, e.g. \"ms\", \"bytes\", \"requests\".", + "type": "string" + }, + "attributes": { + "description": "Attributes to include on the instrument.", + "allOf": [ + { + "$ref": "#/definitions/ExtendedConnectorAttributesWithConnectorSelector" + } + ] + }, + "condition": { + "description": "The instrument conditions.", + "allOf": [ + { + "$ref": "#/definitions/ConditionConnectorSelector" + } + ] + } + }, + "additionalProperties": false, + "required": ["type", "value", "description", "unit"] + }, + "ConnectorValue": { + "anyOf": [ + { + "$ref": "#/definitions/Standard" + }, + { + "$ref": "#/definitions/ConnectorSelector" + } + ] + }, + "StandardInstrumentExtendedConnectorAttributesWithConnectorSelector": { + "anyOf": [ + { + "type": "null" + }, + { + "type": "boolean" + }, + { + "type": "object", + "properties": { + "attributes": { + "$ref": "#/definitions/ExtendedConnectorAttributesWithConnectorSelector" + } + }, + "additionalProperties": false, + "required": ["attributes"] + } + ] + }, + "ExtendedGraphQLInstrumentsConfigWithInstrument": { + "type": "object", + "properties": { + "list.length": { + "description": "A histogram of the length of a selected field in the GraphQL response", + "allOf": [ + { + "$ref": "#/definitions/StandardInstrumentExtendedGraphQLAttributesWithGraphQLSelector" + } + ] + }, + "field.execution": { + "description": "A counter of the number of times a field is used.", + "allOf": [ + { + "$ref": "#/definitions/StandardInstrumentExtendedGraphQLAttributesWithGraphQLSelector" + } + ] + } + }, + "additionalProperties": { + "$ref": "#/definitions/Instrument5" + } + }, + "Instrument5": { + "type": "object", + "properties": { + "type": { + "description": "The type of instrument.", + "allOf": [ + { + "$ref": "#/definitions/InstrumentType" + } + ] + }, + "value": { + "description": "The value of the instrument.", + "allOf": [ + { + "$ref": "#/definitions/GraphQLValue" + } + ] + }, + "description": { + "description": "The description of the instrument.", + "type": "string" + }, + "unit": { + "description": "The units of the instrument, e.g. \"ms\", \"bytes\", \"requests\".", + "type": "string" + }, + "attributes": { + "description": "Attributes to include on the instrument.", + "allOf": [ + { + "$ref": "#/definitions/ExtendedGraphQLAttributesWithGraphQLSelector" + } + ] + }, + "condition": { + "description": "The instrument conditions.", + "allOf": [ + { + "$ref": "#/definitions/ConditionGraphQLSelector" + } + ] + } + }, + "additionalProperties": false, + "required": ["type", "value", "description", "unit"] + }, + "GraphQLValue": { + "anyOf": [ + { + "$ref": "#/definitions/StandardUnit" + }, + { + "$ref": "#/definitions/GraphQLSelector" + } + ] + }, + "StandardUnit": { + "type": "string", + "enum": ["unit"] + }, + "GraphQLSelector": { + "anyOf": [ + { + "description": "If the field is a list, the length of the list", + "type": "object", + "properties": { + "list_length": { + "$ref": "#/definitions/ListLength" + } + }, + "additionalProperties": false, + "required": ["list_length"] + }, + { + "description": "The GraphQL field name", + "type": "object", + "properties": { + "field_name": { + "$ref": "#/definitions/FieldName" + } + }, + "additionalProperties": false, + "required": ["field_name"] + }, + { + "description": "The GraphQL field type", + "type": "object", + "properties": { + "field_type": { + "$ref": "#/definitions/FieldType" + } + }, + "additionalProperties": false, + "required": ["field_type"] + }, + { + "description": "The GraphQL type name", + "type": "object", + "properties": { + "type_name": { + "$ref": "#/definitions/TypeName" + } + }, + "additionalProperties": false, + "required": ["type_name"] + }, + { + "type": "object", + "properties": { + "operation_name": { + "description": "The operation name from the query.", + "allOf": [ + { + "$ref": "#/definitions/OperationName" + } + ] + }, + "default": { + "description": "Optional default value.", + "type": ["string", "null"] + } + }, + "additionalProperties": false, + "required": ["operation_name"] + }, + { + "type": "object", + "properties": { + "static": { + "description": "A static value", + "allOf": [ + { + "$ref": "#/definitions/AttributeValue" + } + ] + } + }, + "additionalProperties": false, + "required": ["static"] + } + ] + }, + "ListLength": { + "oneOf": [ + { + "description": "The length of the list", + "type": "string", + "const": "value" + } + ] + }, + "FieldName": { + "oneOf": [ + { + "description": "The GraphQL field name", + "type": "string", + "const": "string" + } + ] + }, + "FieldType": { + "oneOf": [ + { + "description": "The GraphQL field name", + "type": "string", + "const": "name" + }, + { + "description": "The GraphQL field type\n- `bool`\n- `number`\n- `scalar`\n- `object`\n- `list`", + "type": "string", + "const": "type" + } + ] + }, + "TypeName": { + "oneOf": [ + { + "description": "The GraphQL type name", + "type": "string", + "const": "string" + } + ] + }, + "ExtendedGraphQLAttributesWithGraphQLSelector": { + "type": "object", + "properties": { + "graphql.field.name": { + "description": "The GraphQL field name", + "anyOf": [ + { + "$ref": "#/definitions/StandardAttribute" + }, + { + "type": "null" + } + ] + }, + "graphql.field.type": { + "description": "The GraphQL field type", + "anyOf": [ + { + "$ref": "#/definitions/StandardAttribute" + }, + { + "type": "null" + } + ] + }, + "graphql.list.length": { + "description": "If the field is a list, the length of the list", + "anyOf": [ + { + "$ref": "#/definitions/StandardAttribute" + }, + { + "type": "null" + } + ] + }, + "graphql.operation.name": { + "description": "The GraphQL operation name", + "anyOf": [ + { + "$ref": "#/definitions/StandardAttribute" + }, + { + "type": "null" + } + ] + }, + "graphql.type.name": { + "description": "The GraphQL type name", + "anyOf": [ + { + "$ref": "#/definitions/StandardAttribute" + }, + { + "type": "null" + } + ] + } + }, + "additionalProperties": { + "$ref": "#/definitions/GraphQLSelector" + } + }, + "ConditionGraphQLSelector": { + "description": "Specify a condition for when an [instrument][] should be mutated or an [event][] should be triggered.\n\n[instrument]: https://www.apollographql.com/docs/graphos/routing/observability/telemetry/instrumentation/instruments\n[event]: https://www.apollographql.com/docs/graphos/routing/observability/telemetry/instrumentation/events", + "oneOf": [ + { + "description": "A condition to check a selection against a value.", + "type": "object", + "properties": { + "eq": { + "type": "array", + "items": { + "$ref": "#/definitions/GraphQLSelectorOrValue" + }, + "minItems": 2, + "maxItems": 2 + } + }, + "required": ["eq"], + "additionalProperties": false + }, + { + "description": "The first selection must be greater than the second selection.", + "type": "object", + "properties": { + "gt": { + "type": "array", + "items": { + "$ref": "#/definitions/GraphQLSelectorOrValue" + }, + "minItems": 2, + "maxItems": 2 + } + }, + "required": ["gt"], + "additionalProperties": false + }, + { + "description": "The first selection must be less than the second selection.", + "type": "object", + "properties": { + "lt": { + "type": "array", + "items": { + "$ref": "#/definitions/GraphQLSelectorOrValue" + }, + "minItems": 2, + "maxItems": 2 + } + }, + "required": ["lt"], + "additionalProperties": false + }, + { + "description": "A condition to check a selection against a selector.", + "type": "object", + "properties": { + "exists": { + "$ref": "#/definitions/GraphQLSelector" + } + }, + "required": ["exists"], + "additionalProperties": false + }, + { + "description": "All sub-conditions must be true.", + "type": "object", + "properties": { + "all": { + "type": "array", + "items": { + "$ref": "#/definitions/ConditionGraphQLSelector" + } + } + }, + "required": ["all"], + "additionalProperties": false + }, + { + "description": "At least one sub-conditions must be true.", + "type": "object", + "properties": { + "any": { + "type": "array", + "items": { + "$ref": "#/definitions/ConditionGraphQLSelector" + } + } + }, + "required": ["any"], + "additionalProperties": false + }, + { + "description": "The sub-condition must not be true", + "type": "object", + "properties": { + "not": { + "$ref": "#/definitions/ConditionGraphQLSelector" + } + }, + "required": ["not"], + "additionalProperties": false + }, + { + "description": "Static true condition", + "type": "string", + "const": "true" + }, + { + "description": "Static false condition", + "type": "string", + "const": "false" + } + ] + }, + "GraphQLSelectorOrValue": { + "anyOf": [ + { + "description": "A constant value.", + "allOf": [ + { + "$ref": "#/definitions/AttributeValue" + } + ] + }, + { + "description": "Selector to extract a value from the pipeline.", + "allOf": [ + { + "$ref": "#/definitions/GraphQLSelector" + } + ] + } + ] + }, + "StandardInstrumentExtendedGraphQLAttributesWithGraphQLSelector": { + "anyOf": [ + { + "type": "null" + }, + { + "type": "boolean" + }, + { + "type": "object", + "properties": { + "attributes": { + "$ref": "#/definitions/ExtendedGraphQLAttributesWithGraphQLSelector" + } + }, + "additionalProperties": false, + "required": ["attributes"] + } + ] + }, + "ExtendedCacheInstrumentsConfigWithInstrument": { + "type": "object", + "properties": { + "apollo.router.operations.entity.cache": { + "description": "A counter of times we have a cache hit or cache miss (deprecated)", + "allOf": [ + { + "$ref": "#/definitions/StandardInstrumentExtendedCacheAttributesWithSubgraphSelector" + } + ] + }, + "apollo.router.operations.response.cache": { + "description": "A counter of times we have a cache hit or cache miss", + "allOf": [ + { + "$ref": "#/definitions/StandardInstrumentExtendedCacheAttributesWithSubgraphSelector" + } + ] + } + }, + "additionalProperties": { + "$ref": "#/definitions/Instrument6" + } + }, + "Instrument6": { + "type": "object", + "properties": { + "type": { + "description": "The type of instrument.", + "allOf": [ + { + "$ref": "#/definitions/InstrumentType" + } + ] + }, + "value": { + "description": "The value of the instrument.", + "allOf": [ + { + "$ref": "#/definitions/SubgraphValue" + } + ] + }, + "description": { + "description": "The description of the instrument.", + "type": "string" + }, + "unit": { + "description": "The units of the instrument, e.g. \"ms\", \"bytes\", \"requests\".", + "type": "string" + }, + "attributes": { + "description": "Attributes to include on the instrument.", + "allOf": [ + { + "$ref": "#/definitions/ExtendedCacheAttributesWithSubgraphSelector" + } + ] + }, + "condition": { + "description": "The instrument conditions.", + "allOf": [ + { + "$ref": "#/definitions/ConditionSubgraphSelector" + } + ] + } + }, + "additionalProperties": false, + "required": ["type", "value", "description", "unit"] + }, + "ExtendedCacheAttributesWithSubgraphSelector": { + "type": "object", + "properties": { + "graphql.type.name": { + "description": "Entity type", + "anyOf": [ + { + "$ref": "#/definitions/StandardAttribute" + }, + { + "type": "null" + } + ] + } + }, + "additionalProperties": { + "$ref": "#/definitions/SubgraphSelector" + } + }, + "StandardInstrumentExtendedCacheAttributesWithSubgraphSelector": { + "anyOf": [ + { + "type": "null" + }, + { + "type": "boolean" + }, + { + "type": "object", + "properties": { + "attributes": { + "$ref": "#/definitions/ExtendedCacheAttributesWithSubgraphSelector" + } + }, + "additionalProperties": false, + "required": ["attributes"] + } + ] + }, + "TrafficShapingConfig": { + "description": "Configuration for the traffic shaping plugin", + "type": "object", + "properties": { + "router": { + "description": "Applied at the router level", + "anyOf": [ + { + "$ref": "#/definitions/RouterShaping" + }, + { + "type": "null" + } + ] + }, + "all": { + "description": "Applied on all subgraphs", + "anyOf": [ + { + "$ref": "#/definitions/SubgraphShaping" + }, + { + "type": "null" + } + ] + }, + "subgraphs": { + "description": "Applied on specific subgraphs", + "type": "object", + "additionalProperties": { + "$ref": "#/definitions/SubgraphShaping" + } + }, + "connector": { + "description": "Applied on specific subgraphs", + "allOf": [ + { + "$ref": "#/definitions/ConnectorsShapingConfig" + } + ] + }, + "deduplicate_variables": { + "description": "DEPRECATED, now always enabled: Enable variable deduplication optimization when sending requests to subgraphs (https://github.com/apollographql/router/issues/87)", + "type": ["boolean", "null"], + "default": null + } + }, + "additionalProperties": false + }, + "RouterShaping": { + "type": "object", + "properties": { + "concurrency_limit": { + "description": "The global concurrency limit", + "type": ["integer", "null"], + "format": "uint", + "minimum": 0 + }, + "global_rate_limit": { + "description": "Enable global rate limiting", + "anyOf": [ + { + "$ref": "#/definitions/RateLimitConf" + }, + { + "type": "null" + } + ] + }, + "timeout": { + "description": "Enable timeout for incoming requests", + "type": "string", + "default": null + } + }, + "additionalProperties": false + }, + "RateLimitConf": { + "type": "object", + "properties": { + "capacity": { + "description": "Number of requests allowed", + "type": "integer", + "format": "uint64", + "minimum": 1 + }, + "interval": { + "description": "Per interval", + "type": "string" + } + }, + "additionalProperties": false, + "required": ["capacity", "interval"] + }, + "SubgraphShaping": { + "description": "Traffic shaping options", + "type": "object", + "properties": { + "deduplicate_query": { + "description": "Enable query deduplication", + "type": ["boolean", "null"] + }, + "compression": { + "description": "Enable compression for subgraphs (available compressions are deflate, br, gzip)", + "anyOf": [ + { + "$ref": "#/definitions/Compression" + }, + { + "type": "null" + } + ] + }, + "global_rate_limit": { + "description": "Enable global rate limiting", + "anyOf": [ + { + "$ref": "#/definitions/RateLimitConf" + }, + { + "type": "null" + } + ] + }, + "timeout": { + "description": "Enable timeout for incoming requests", + "type": "string", + "default": null + }, + "experimental_http2": { + "description": "Enable HTTP2 for subgraphs", + "anyOf": [ + { + "$ref": "#/definitions/Http2Config" + }, + { + "type": "null" + } + ] + }, + "dns_resolution_strategy": { + "description": "DNS resolution strategy for subgraphs", + "anyOf": [ + { + "$ref": "#/definitions/DnsResolutionStrategy" + }, + { + "type": "null" + } + ] + } + }, + "additionalProperties": false + }, + "Compression": { + "oneOf": [ + { + "description": "gzip", + "type": "string", + "const": "gzip" + }, + { + "description": "deflate", + "type": "string", + "const": "deflate" + }, + { + "description": "brotli", + "type": "string", + "const": "br" + }, + { + "description": "identity", + "type": "string", + "const": "identity" + } + ] + }, + "ConnectorsShapingConfig": { + "type": "object", + "properties": { + "all": { + "description": "Applied on all connectors", + "anyOf": [ + { + "$ref": "#/definitions/ConnectorShaping" + }, + { + "type": "null" + } + ] + }, + "sources": { + "description": "Applied on specific connector sources", + "type": "object", + "additionalProperties": { + "$ref": "#/definitions/ConnectorShaping" + } + } + }, + "additionalProperties": false + }, + "ConnectorShaping": { + "type": "object", + "properties": { + "compression": { + "description": "Enable compression for connectors (available compressions are deflate, br, gzip)", + "anyOf": [ + { + "$ref": "#/definitions/Compression" + }, + { + "type": "null" + } + ] + }, + "global_rate_limit": { + "description": "Enable global rate limiting", + "anyOf": [ + { + "$ref": "#/definitions/RateLimitConf" + }, + { + "type": "null" + } + ] + }, + "timeout": { + "description": "Enable timeout for connectors requests", + "type": "string", + "default": null + }, + "experimental_http2": { + "description": "Enable HTTP2 for connectors", + "anyOf": [ + { + "$ref": "#/definitions/Http2Config" + }, + { + "type": "null" + } + ] + }, + "dns_resolution_strategy": { + "description": "DNS resolution strategy for connectors", + "anyOf": [ + { + "$ref": "#/definitions/DnsResolutionStrategy" + }, + { + "type": "null" + } + ] + } + }, + "additionalProperties": false + }, + "Batching": { + "description": "Configuration for Batching", + "type": "object", + "properties": { + "enabled": { + "description": "Activates Batching (disabled by default)", + "type": "boolean", + "default": false + }, + "mode": { + "description": "Batching mode", + "allOf": [ + { + "$ref": "#/definitions/BatchingMode" + } + ] + }, + "subgraph": { + "description": "Subgraph options for batching", + "anyOf": [ + { + "$ref": "#/definitions/SubgraphCommonBatchingConfigConfiguration" + }, + { + "type": "null" + } + ] + }, + "maximum_size": { + "description": "Maximum size for a batch", + "type": ["integer", "null"], + "format": "uint", + "minimum": 0, + "default": null + } + }, + "additionalProperties": false, + "required": ["mode"] + }, + "BatchingMode": { + "oneOf": [ + { + "description": "batch_http_link", + "type": "string", + "const": "batch_http_link" + } + ] + }, + "SubgraphCommonBatchingConfigConfiguration": { + "description": "Configuration options pertaining to the subgraph server component.", + "type": "object", + "properties": { + "all": { + "description": "options applying to all subgraphs", + "default": { + "enabled": false + }, + "allOf": [ + { + "$ref": "#/definitions/CommonBatchingConfig" + } + ] + }, + "subgraphs": { + "description": "per subgraph options", + "type": "object", + "additionalProperties": { + "$ref": "#/definitions/CommonBatchingConfig" + }, + "default": {} + } + } + }, + "CommonBatchingConfig": { + "description": "Common options for configuring subgraph batching", + "type": "object", + "properties": { + "enabled": { + "description": "Whether this batching config should be enabled", + "type": "boolean" + } + }, + "required": ["enabled"] + } + } +} diff --git a/src/schemas/json/hatch.json b/src/schemas/json/hatch.json index b8ddd2e802c..6ae32ed6786 100644 --- a/src/schemas/json/hatch.json +++ b/src/schemas/json/hatch.json @@ -57,6 +57,17 @@ } }, "type": "boolean" + }, + "hooks": { + "title": "Metadata Hook Plugins", + "description": "Configuration for plugin hooks that allow for the modification of project metadata after it has been loaded", + "x-taplo": { + "links": { + "key": "https://hatch.pypa.io/latest/plugins/metadata-hook" + } + }, + "type": "object", + "additionalProperties": true } } }, @@ -528,6 +539,17 @@ "additionalProperties": { "type": "string" } + }, + "bypass-selection": { + "title": "Bypass Selection", + "description": "Whether or not to suppress the error when one has not defined any file selection options and all heuristics have failed to determine what to ship", + "x-taplo": { + "links": { + "key": "https://hatch.pypa.io/latest/plugins/builder/wheel/#options" + } + }, + "type": "boolean", + "default": false } } }, @@ -598,9 +620,9 @@ } } }, - "Hooks": { - "title": "Hooks", - "description": "Build hooks", + "BuildHooks": { + "title": "Build Hook Plugins", + "description": "Configuration for plugin hooks that will be executed at various stages of the build process", "x-taplo": { "links": { "key": "https://hatch.pypa.io/latest/config/build/#build-hooks" @@ -726,13 +748,14 @@ "$ref": "#/definitions/CustomTargets" }, "hooks": { - "$ref": "#/definitions/Hooks" + "$ref": "#/definitions/BuildHooks" } } }, "Version": { "title": "Version", "description": "Version configuration", + "additionalProperties": true, "x-taplo": { "links": { "key": "https://hatch.pypa.io/latest/version/#configuration" diff --git a/src/schemas/json/partial-pytest.json b/src/schemas/json/partial-pytest.json index 3b442f63b51..28652d4e7f4 100644 --- a/src/schemas/json/partial-pytest.json +++ b/src/schemas/json/partial-pytest.json @@ -3,26 +3,41 @@ "$id": "https://json.schemastore.org/partial-pytest.json", "description": "JSON schema for pytest configuration options under `[tool.pytest]` in `pyproject.toml`.", "type": "object", - "properties": { - "ini_options": { - "allOf": [ - { - "$ref": "#/definitions/IniOptions" - }, - { - "$ref": "#/definitions/IniOptionsAsyncio" - } - ], - "title": "Bridge Configuration Options for `pytest.ini` File", - "description": "The `ini_options` table is used as a bridge between the existing `pytest.ini` configuration system and future configuration formats. `pytest.ini` takes precedence over `[tool.pytest.ini_options]` in `pyproject.toml`." - } - }, - "additionalProperties": false, "x-tombi-table-keys-order": "schema", + "oneOf": [ + { + "$ref": "#/definitions/LegacyConfig" + }, + { + "$ref": "#/definitions/Config" + } + ], "definitions": { - "IniOptions": { - "$comment": "additionalProperties is true because the schema is merged with other schemas", + "LegacyConfig": { + "description": "Legacy configuration using ini_options table (pytest <9)", + "type": "object", + "deprecated": true, + "properties": { + "ini_options": { + "allOf": [ + { + "$ref": "#/definitions/IniOptionsPytest" + }, + { + "$ref": "#/definitions/IniOptionsAsyncio" + } + ], + "title": "Bridge Configuration Options for `pytest.ini` File", + "description": "The `ini_options` table is used as a bridge between the existing `pytest.ini` configuration system and future configuration formats. `pytest.ini` takes precedence over `[tool.pytest.ini_options]` in `pyproject.toml`." + } + }, + "required": ["ini_options"], + "additionalProperties": false, + "x-tombi-table-keys-order": "schema" + }, + "IniOptionsPytest": { "type": "object", + "deprecated": true, "properties": { "addopts": { "oneOf": [ @@ -36,18 +51,25 @@ "type": "string" } ], - "description": "Extra command line options to be added by default.", + "description": "Add the specified OPTS to the set of command line arguments as if they had been specified by the user.", "x-tombi-array-values-order": "ascending" }, "cache_dir": { "type": "string", - "description": "Sets directory for cache plugin. Can include environment variables.", + "description": "Sets the directory where the cache plugin's content is stored.", "default": ".pytest_cache" }, + "collect_imported_tests": { + "type": "string", + "enum": ["true", "false"], + "description": "Settings this to false will make pytest collect classes/functions from test files _only_ if they are defined in that file (as opposed to imported there).", + "default": "true" + }, "consider_namespace_packages": { - "type": "boolean", - "description": "Controls whether pytest attempts to identify namespace packages.", - "default": false + "type": "string", + "enum": ["true", "false"], + "description": "Controls if pytest should attempt to identify namespace packages when collecting Python modules.", + "default": "false" }, "console_output_style": { "type": "string", @@ -55,14 +77,21 @@ "classic", "progress", "progress-even-when-capture-no", - "count" + "count", + "times" ], "description": "Sets console output style during test execution.", "default": "progress" }, + "disable_test_id_escaping_and_forfeit_all_rights_to_community_support": { + "type": "string", + "enum": ["true", "false"], + "description": "pytest by default escapes any non-ascii characters used in unicode strings for the parametrization because it has several downsides. If however you would like to use unicode strings in parametrization and see them in the terminal as is (non-escaped), use this option in your configuration file", + "default": "false" + }, "doctest_encoding": { "type": "string", - "description": "Sets default encoding for doctest files." + "description": "Default encoding to use to decode text files with docstrings." }, "doctest_optionflags": { "oneOf": [ @@ -76,18 +105,31 @@ "type": "string" } ], - "description": "Specifies doctest flag names from the `doctest` module.", + "description": "One or more doctest flag names from the standard doctest module.", "x-tombi-array-values-order": "ascending" }, "empty_parameter_set_mark": { "type": "string", "enum": ["skip", "xfail", "fail_at_collect"], - "description": "Defines behavior for empty parameter sets in parameterization.", + "description": "Allows to pick the action for empty parametersets in parameterization.", "default": "skip" }, + "enable_assertion_pass_hook": { + "type": "string", + "enum": ["true", "false"], + "description": "Enables the pytest_assertion_pass hook. Make sure to delete any previously generated .pyc cache files.", + "default": "false" + }, + "faulthandler_exit_on_timeout": { + "type": "string", + "enum": ["true", "false"], + "description": "Exit the pytest process after the per-test timeout is reached by passing exit=True to the faulthandler.dump_traceback_later() function. This is particularly useful to avoid wasting CI resources for test suites that are prone to putting the main Python interpreter into a deadlock state.", + "default": "false" + }, "faulthandler_timeout": { - "type": "integer", - "description": "Sets timeout in seconds for dumping the traceback of all threads if a test takes too long." + "type": "string", + "pattern": "^[0-9]+$", + "description": "Dumps the tracebacks of all threads if a test takes longer than X seconds to run (including fixture setup and teardown). Implemented using the faulthandler.dump_traceback_later() function, so all caveats there apply." }, "filterwarnings": { "oneOf": [ @@ -101,97 +143,101 @@ "type": "string" } ], - "description": "Sets action to take for matching warnings. Each item is a warning specification string.", + "description": "Sets a list of filters and actions that should be taken for matched warnings. By default all warnings emitted during the test session will be displayed in a summary at the end of the test session.", "x-tombi-array-values-order": "ascending" }, "junit_duration_report": { "type": "string", "enum": ["total", "call"], - "description": "Sets how to record test durations in JUnit XML report.", + "description": "Configures how durations are recorded into the JUnit XML report:", "default": "total" }, "junit_family": { "type": "string", "enum": ["legacy", "xunit1", "xunit2"], - "description": "Sets format of generated JUnit XML files.", + "description": "Configures the format of the generated JUnit XML file.", "default": "xunit2" }, + "junit_log_passing_tests": { + "type": "string", + "enum": ["true", "false"], + "description": "If junit_logging is enabled, configures if the captured output should be written to the JUnit XML file for passing tests.", + "default": "true" + }, "junit_logging": { "type": "string", "enum": ["no", "log", "system-out", "system-err", "out-err", "all"], - "description": "Controls whether captured output is written to JUnit XML file.", + "description": "Configures if captured output should be written to the JUnit XML file.", "default": "no" }, - "junit_log_passing_tests": { - "type": "boolean", - "description": "If `junit_logging` is not 'no', controls whether to include output of passing tests.", - "default": true - }, "junit_suite_name": { "type": "string", - "description": "Sets name of root test suite in JUnit XML report." + "description": "To set the name of the root test suite xml item, you can configure the junit_suite_name option in your config file." }, "log_auto_indent": { - "description": "Allows selective auto-indentation of multiline log messages. Can be true, false, positive integer, 'On', or 'Off'.", + "description": "Allow selective auto-indentation of multiline log messages.", "oneOf": [ { - "type": "boolean", - "default": false - }, - { - "type": "integer", - "minimum": 0 + "type": "string", + "enum": ["true", "false", "On", "Off"] }, { "type": "string", - "enum": ["On", "Off"] + "pattern": "^[0-9]+$" } ] }, "log_cli": { - "type": "boolean", - "description": "Enables log display during test run (live logging).", - "default": false + "type": "string", + "enum": ["true", "false"], + "description": "Enable log display during test run (also known as \"live logging\").", + "default": "false" }, "log_cli_date_format": { "type": "string", - "description": "Sets date format for live logging using `time.strftime()` format." + "description": "Sets a time.strftime()-compatible string that will be used when formatting dates for live logging." }, "log_cli_format": { "type": "string", - "description": "Sets message format for live logging using `logging` format." + "description": "Sets a logging-compatible string used to format live logging messages." }, "log_cli_level": { "$ref": "#/definitions/LogLevel", - "description": "Sets minimum log level for live logging. Can be level name or integer value." + "description": "Sets the minimum log message level that should be captured for live logging. The integer value or the names of the levels can be used." }, "log_date_format": { "type": "string", - "description": "Sets date format for captured logging using `time.strftime()` format." + "description": "Sets a time.strftime()-compatible string that will be used when formatting dates for logging capture." }, "log_file": { "type": "string", - "description": "Sets file path to write log messages to." + "description": "Sets a file name relative to the current working directory where log messages should be written to, in addition to the other logging facilities that are active." }, "log_file_date_format": { "type": "string", - "description": "Sets date format for log file using `time.strftime()` format." + "description": "Sets a time.strftime()-compatible string that will be used when formatting dates for the logging file." }, "log_file_format": { "type": "string", - "description": "Sets message format for log file using `logging` format." + "description": "Sets a logging-compatible string used to format logging messages redirected to the logging file." }, "log_file_level": { "$ref": "#/definitions/LogLevel", - "description": "Sets minimum log level for log file. Can be level name or integer value." + "description": "Sets the minimum log message level that should be captured for the logging file. The integer value or the names of the levels can be used." + }, + "log_file_mode": { + "type": "string", + "enum": ["a", "w"], + "description": "Sets the mode that the logging file is opened with. The options are 'w' to recreate the file (the default) or 'a' to append to the file.", + "default": "a" }, "log_format": { "type": "string", - "description": "Sets message format for captured logging using `logging` format." + "description": "Sets a logging-compatible string used to format captured logging messages." }, "log_level": { "$ref": "#/definitions/LogLevel", - "description": "Sets minimum log level for captured logging. Can be level name or integer value." + "description": "Sets the minimum log message level that should be captured for logging capture. The integer value or the names of the levels can be used." }, "markers": { "oneOf": [ @@ -205,12 +251,12 @@ "type": "string" } ], - "description": "Allows registering additional markers for test functions.", + "description": "When the strict_markers configuration option is set, only known markers - defined in code by core pytest or some plugin - are allowed. You can list additional markers in this setting to add them to the whitelist, in which case you probably want to set strict_markers to true to avoid future regressions.", "x-tombi-array-values-order": "ascending" }, "minversion": { "type": "string", - "description": "Specifies minimum required pytest version." + "description": "Specifies a minimal pytest version required for running tests." }, "norecursedirs": { "oneOf": [ @@ -224,7 +270,8 @@ "type": "string" } ], - "description": "Sets base name patterns for directories to be skipped during test discovery. Uses fnmatch-style matching. Replaces default patterns.", + "default": "*.egg .* _darcs build CVS dist node_modules venv {arch}", + "description": "Set the directory basename patterns to avoid when recursing for test discovery. The individual (fnmatch-style) patterns are applied to the basename of a directory to decide if to recurse into it.", "x-tombi-array-values-order": "ascending" }, "python_classes": { @@ -239,7 +286,7 @@ "type": "string" } ], - "description": "Specifies name prefixes or glob patterns for identifying test classes.", + "description": "One or more name prefixes or glob-style patterns determining which classes are considered for test collection. Search for multiple glob patterns by adding a space between patterns. By default, pytest will consider any class prefixed with Test as a test collection.", "x-tombi-array-values-order": "ascending" }, "python_files": { @@ -254,7 +301,7 @@ "type": "string" } ], - "description": "Specifies glob patterns for identifying Python test module files.", + "description": "One or more Glob-style file patterns determining which python files are considered as test modules.", "default": ["test_*.py", "*_test.py"], "x-tombi-array-values-order": "ascending" }, @@ -270,7 +317,7 @@ "type": "string" } ], - "description": "Specifies name prefixes or glob patterns for identifying test functions and methods.", + "description": "One or more name prefixes or glob-patterns determining which test functions and methods are considered tests. Search for multiple glob patterns by adding a space between patterns. By default, pytest will consider any function prefixed with test as a test.", "default": ["test_*"], "x-tombi-array-values-order": "ascending" }, @@ -286,7 +333,7 @@ "type": "string" } ], - "description": "Sets list of directories to be added to the Python search path. Paths are relative to root directory.", + "description": "Sets list of directories that should be added to the python search path. Directories will be added to the head of sys.path. Similar to the PYTHONPATH environment variable, the directories will be included in where Python will look for imported modules. Paths are relative to the rootdir directory.", "x-tombi-array-values-order": "ascending" }, "required_plugins": { @@ -301,9 +348,39 @@ "type": "string" } ], - "description": "Space-separated list of plugins required to run pytest. Can include version specifiers.", + "description": "A list of plugins that must be present for pytest to run. Plugins can be listed with or without version specifiers directly following their name.", "x-tombi-array-values-order": "ascending" }, + "strict": { + "type": "string", + "enum": ["true", "false"], + "description": "If set to true, enable 'strict mode', which enables a number of other strict options.", + "default": "false" + }, + "strict_config": { + "type": "string", + "enum": ["true", "false"], + "description": "If set to true, any warnings encountered while parsing the pytest section of the configuration file will raise errors.", + "default": "false" + }, + "strict_markers": { + "type": "string", + "enum": ["true", "false"], + "description": "If set to true, markers not registered in the markers section of the configuration file will raise errors.", + "default": "false" + }, + "strict_parametrization_ids": { + "type": "string", + "enum": ["true", "false"], + "description": "If set to true, pytest emits an error if it detects non-unique parameter set IDs. If not set (the default), pytest automatically handles this by adding 0, 1, … to duplicate IDs, making them unique.", + "default": "false" + }, + "strict_xfail": { + "type": "string", + "enum": ["true", "false"], + "description": "If set to true, tests marked with @pytest.mark.xfail that actually succeed will by default fail the test suite.", + "default": "false" + }, "testpaths": { "oneOf": [ { @@ -316,20 +393,33 @@ "type": "string" } ], - "description": "Sets directories to search for tests when no specific paths are given on the command line. Paths are relative to root directory. Shell-style wildcards can be used.", + "description": "Sets list of directories that should be searched for tests when no specific directories, files or test ids are given in the command line when executing pytest from the rootdir directory. File system paths may use shell-style wildcards, including the recursive ** pattern. Useful when all project tests are in a known location to speed up test collection and to avoid picking up undesired tests by accident.", "x-tombi-array-values-order": "ascending" }, "tmp_path_retention_count": { - "type": "integer", - "description": "Number of sessions to retain `tmp_path` directories for.", - "default": 3 + "type": "string", + "pattern": "^[0-9]+$", + "description": "How many sessions should we keep the tmp_path directories, according to tmp_path_retention_policy.", + "default": "3" }, "tmp_path_retention_policy": { "type": "string", "enum": ["all", "failed", "none"], - "description": "Controls which `tmp_path` directories to retain based on test outcome.", + "description": "Controls which directories created by the tmp_path fixture are kept around, based on test outcome.", "default": "all" }, + "truncation_limit_chars": { + "type": "string", + "pattern": "^[0-9]+$", + "description": "Controls maximum number of characters to truncate assertion message contents. Setting value to 0 disables the character limit for truncation.", + "default": "640" + }, + "truncation_limit_lines": { + "type": "string", + "pattern": "^[0-9]+$", + "description": "Controls maximum number of linesto truncate assertion message contents. Setting value to 0 disables the lines limit for truncation.", + "default": "8" + }, "usefixtures": { "oneOf": [ { @@ -342,39 +432,54 @@ "type": "string" } ], - "description": "List of fixtures that will be applied to all test functions.", + "description": "List of fixtures that will be applied to all test functions; this is semantically the same to apply the @pytest.mark.usefixtures marker to all test functions.", "x-tombi-array-values-order": "ascending" }, "verbosity_assertions": { "oneOf": [ { - "type": "integer", - "minimum": 0 + "type": "string", + "pattern": "^[0-9]+$" }, { "type": "string", "enum": ["auto"] } ], - "description": "Sets verbosity specific to assertion-related output. Can be integer or 'auto'." + "description": "Set a verbosity level specifically for assertion related output, overriding the application wide level." + }, + "verbosity_subtests": { + "oneOf": [ + { + "type": "string", + "pattern": "^[0-9]+$" + }, + { + "type": "string", + "enum": ["auto"] + } + ], + "description": "Set the verbosity level specifically for passed subtests. A value of 1 or higher will show output for passed subtests (failed subtests are always reported). Passed subtests output can be suppressed with the value 0, which overwrites the -v command-line option." }, "verbosity_test_cases": { "oneOf": [ { - "type": "integer", - "minimum": 0 + "type": "string", + "pattern": "^[0-9]+$" }, { "type": "string", "enum": ["auto"] } ], - "description": "Sets verbosity specific to test case execution output. Can be integer or 'auto'." + "description": "Set a verbosity level specifically for test case execution related output, overriding the application wide level." }, "xfail_strict": { - "type": "boolean", - "description": "If true, test suite will fail if a test marked with `@pytest.mark.xfail` unexpectedly passes.", - "default": false + "type": "string", + "enum": ["true", "false"], + "description": "DEPRECATED. Alias for strict_xfail. If true, test suite will fail if a test marked with `@pytest.mark.xfail` unexpectedly passes.", + "deprecated": true, + "default": "false" } }, "additionalProperties": true, @@ -384,6 +489,7 @@ "$comment": "additionalProperties is true because the schema is merged with other schemas", "description": "Configuration options for pytest-asyncio.\nhttps://pytest-asyncio.readthedocs.io/en/latest/reference/configuration.html", "type": "object", + "deprecated": true, "properties": { "asyncio_default_fixture_loop_scope": { "$ref": "#/definitions/AsyncioScope", @@ -396,6 +502,12 @@ "description": "Default event loop scope of asynchronous tests. When this configuration option is unset, it default to function scope", "default": "function" }, + "asyncio_debug": { + "type": "string", + "enum": ["true", "false"], + "description": "Enables asyncio debug mode for the default event loop used by asynchronous tests and fixtures.", + "default": "false" + }, "asyncio_mode": { "type": "string", "oneOf": [ @@ -436,6 +548,426 @@ "enum": ["FATAL", "WARN"] } ] + }, + "Config": { + "description": "Direct key configuration with proper TOML types (pytest >=9)\nhttps://docs.pytest.org/en/stable/reference/reference.html#configuration-options", + "type": "object", + "allOf": [ + { + "$ref": "#/definitions/ConfigOptionsPytest" + }, + { + "$ref": "#/definitions/ConfigOptionsAsyncio" + } + ], + "properties": { + "ini_options": { + "not": {} + } + }, + "additionalProperties": true, + "x-tombi-table-keys-order": "schema" + }, + "ConfigOptionsPytest": { + "type": "object", + "properties": { + "addopts": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Add the specified OPTS to the set of command line arguments as if they had been specified by the user.", + "x-tombi-array-values-order": "ascending" + }, + "cache_dir": { + "type": "string", + "description": "Sets the directory where the cache plugin’s content is stored.", + "default": ".pytest_cache" + }, + "collect_imported_tests": { + "type": "boolean", + "description": "Settings this to false will make pytest collect classes/functions from test files _only_ if they are defined in that file (as opposed to imported there).", + "default": true + }, + "consider_namespace_packages": { + "type": "boolean", + "description": "Controls if pytest should attempt to identify namespace packages when collecting Python modules.", + "default": false + }, + "console_output_style": { + "type": "string", + "enum": [ + "classic", + "progress", + "progress-even-when-capture-no", + "count", + "times" + ], + "description": "Sets console output style during test execution.", + "default": "progress" + }, + "disable_test_id_escaping_and_forfeit_all_rights_to_community_support": { + "type": "boolean", + "description": "pytest by default escapes any non-ascii characters used in unicode strings for the parametrization because it has several downsides. If however you would like to use unicode strings in parametrization and see them in the terminal as is (non-escaped), use this option in your configuration file", + "default": false + }, + "doctest_encoding": { + "type": "string", + "description": "Default encoding to use to decode text files with docstrings." + }, + "doctest_optionflags": { + "type": "array", + "items": { + "type": "string" + }, + "description": "One or more doctest flag names from the standard doctest module.", + "x-tombi-array-values-order": "ascending" + }, + "empty_parameter_set_mark": { + "type": "string", + "enum": ["skip", "xfail", "fail_at_collect"], + "description": "Allows to pick the action for empty parametersets in parameterization.", + "default": "skip" + }, + "enable_assertion_pass_hook": { + "type": "boolean", + "description": "Enables the pytest_assertion_pass hook. Make sure to delete any previously generated .pyc cache files.", + "default": false + }, + "faulthandler_exit_on_timeout": { + "type": "boolean", + "description": "Exit the pytest process after the per-test timeout is reached by passing exit=True to the faulthandler.dump_traceback_later() function. This is particularly useful to avoid wasting CI resources for test suites that are prone to putting the main Python interpreter into a deadlock state.", + "default": false + }, + "faulthandler_timeout": { + "type": "integer", + "description": "Dumps the tracebacks of all threads if a test takes longer than X seconds to run (including fixture setup and teardown). Implemented using the faulthandler.dump_traceback_later() function, so all caveats there apply." + }, + "filterwarnings": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Sets a list of filters and actions that should be taken for matched warnings. By default all warnings emitted during the test session will be displayed in a summary at the end of the test session.", + "x-tombi-array-values-order": "ascending" + }, + "junit_duration_report": { + "type": "string", + "enum": ["total", "call"], + "description": "Configures how durations are recorded into the JUnit XML report:", + "default": "total" + }, + "junit_family": { + "type": "string", + "enum": ["legacy", "xunit1", "xunit2"], + "description": "Configures the format of the generated JUnit XML file.", + "default": "xunit2" + }, + "junit_log_passing_tests": { + "type": "boolean", + "description": "If junit_logging is enabled, configures if the captured output should be written to the JUnit XML file for passing tests.", + "default": true + }, + "junit_logging": { + "type": "string", + "enum": ["no", "log", "system-out", "system-err", "out-err", "all"], + "description": "Configures if captured output should be written to the JUnit XML file.", + "default": "no" + }, + "junit_suite_name": { + "type": "string", + "description": "To set the name of the root test suite xml item, you can configure the junit_suite_name option in your config file." + }, + "log_auto_indent": { + "description": "Allow selective auto-indentation of multiline log messages.", + "oneOf": [ + { + "type": "boolean", + "default": false + }, + { + "type": "integer", + "minimum": 0 + }, + { + "type": "string", + "enum": ["On", "Off"] + } + ] + }, + "log_cli": { + "type": "boolean", + "description": "Enable log display during test run (also known as “live logging”).", + "default": false + }, + "log_cli_date_format": { + "type": "string", + "description": "Sets a time.strftime()-compatible string that will be used when formatting dates for live logging." + }, + "log_cli_format": { + "type": "string", + "description": "Sets a logging-compatible string used to format live logging messages." + }, + "log_cli_level": { + "$ref": "#/definitions/LogLevel", + "description": "Sets the minimum log message level that should be captured for live logging. The integer value or the names of the levels can be used." + }, + "log_date_format": { + "type": "string", + "description": "Sets a time.strftime()-compatible string that will be used when formatting dates for logging capture." + }, + "log_file": { + "type": "string", + "description": "Sets a file name relative to the current working directory where log messages should be written to, in addition to the other logging facilities that are active." + }, + "log_file_date_format": { + "type": "string", + "description": "Sets a time.strftime()-compatible string that will be used when formatting dates for the logging file." + }, + "log_file_format": { + "type": "string", + "description": "Sets a logging-compatible string used to format logging messages redirected to the logging file." + }, + "log_file_level": { + "$ref": "#/definitions/LogLevel", + "description": "Sets the minimum log message level that should be captured for the logging file. The integer value or the names of the levels can be used." + }, + "log_file_mode": { + "type": "string", + "enum": ["a", "w"], + "description": "Sets the mode that the logging file is opened with. The options are 'w' to recreate the file (the default) or 'a' to append to the file.", + "default": "a" + }, + "log_format": { + "type": "string", + "description": "Sets a logging-compatible string used to format captured logging messages." + }, + "log_level": { + "$ref": "#/definitions/LogLevel", + "description": "Sets the minimum log message level that should be captured for logging capture. The integer value or the names of the levels can be used." + }, + "markers": { + "type": "array", + "items": { + "type": "string" + }, + "description": "When the strict_markers configuration option is set, only known markers - defined in code by core pytest or some plugin - are allowed. You can list additional markers in this setting to add them to the whitelist, in which case you probably want to set strict_markers to true to avoid future regressions.", + "x-tombi-array-values-order": "ascending" + }, + "minversion": { + "type": "string", + "description": "Specifies a minimal pytest version required for running tests." + }, + "norecursedirs": { + "type": "array", + "items": { + "type": "string" + }, + "default": [ + "*.egg", + ".*", + "_darcs", + "build", + "CVS", + "dist", + "node_modules", + "venv", + "{arch}" + ], + "description": "Set the directory basename patterns to avoid when recursing for test discovery. The individual (fnmatch-style) patterns are applied to the basename of a directory to decide if to recurse into it.", + "x-tombi-array-values-order": "ascending" + }, + "python_classes": { + "type": "array", + "items": { + "type": "string" + }, + "description": "One or more name prefixes or glob-style patterns determining which classes are considered for test collection. Search for multiple glob patterns by adding a space between patterns. By default, pytest will consider any class prefixed with Test as a test collection.", + "x-tombi-array-values-order": "ascending" + }, + "python_files": { + "type": "array", + "items": { + "type": "string" + }, + "description": "One or more Glob-style file patterns determining which python files are considered as test modules.", + "default": ["test_*.py", "*_test.py"], + "x-tombi-array-values-order": "ascending" + }, + "python_functions": { + "type": "array", + "items": { + "type": "string" + }, + "description": "One or more name prefixes or glob-patterns determining which test functions and methods are considered tests. Search for multiple glob patterns by adding a space between patterns. By default, pytest will consider any function prefixed with test as a test.", + "default": ["test_*"], + "x-tombi-array-values-order": "ascending" + }, + "pythonpath": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Sets list of directories that should be added to the python search path. Directories will be added to the head of sys.path. Similar to the PYTHONPATH environment variable, the directories will be included in where Python will look for imported modules. Paths are relative to the rootdir directory.", + "x-tombi-array-values-order": "ascending" + }, + "required_plugins": { + "type": "array", + "items": { + "type": "string" + }, + "description": "A list of plugins that must be present for pytest to run. Plugins can be listed with or without version specifiers directly following their name.", + "x-tombi-array-values-order": "ascending" + }, + "strict": { + "type": "boolean", + "description": "If set to true, enable 'strict mode', which enables a number of other strict options.", + "default": false + }, + "strict_config": { + "type": "boolean", + "description": "If set to true, any warnings encountered while parsing the pytest section of the configuration file will raise errors.", + "default": false + }, + "strict_markers": { + "type": "boolean", + "description": "If set to true, markers not registered in the markers section of the configuration file will raise errors.", + "default": false + }, + "strict_parametrization_ids": { + "type": "boolean", + "description": "If set to true, pytest emits an error if it detects non-unique parameter set IDs. If not set (the default), pytest automatically handles this by adding 0, 1, … to duplicate IDs, making them unique.", + "default": false + }, + "strict_xfail": { + "type": "boolean", + "description": "If set to true, tests marked with @pytest.mark.xfail that actually succeed will by default fail the test suite.", + "default": false + }, + "testpaths": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Sets list of directories that should be searched for tests when no specific directories, files or test ids are given in the command line when executing pytest from the rootdir directory. File system paths may use shell-style wildcards, including the recursive ** pattern. Useful when all project tests are in a known location to speed up test collection and to avoid picking up undesired tests by accident.", + "x-tombi-array-values-order": "ascending" + }, + "tmp_path_retention_count": { + "type": "integer", + "description": "How many sessions should we keep the tmp_path directories, according to tmp_path_retention_policy.", + "default": 3 + }, + "tmp_path_retention_policy": { + "type": "string", + "enum": ["all", "failed", "none"], + "description": "Controls which directories created by the tmp_path fixture are kept around, based on test outcome.", + "default": "all" + }, + "truncation_limit_chars": { + "type": "integer", + "description": "Controls maximum number of characters to truncate assertion message contents. Setting value to 0 disables the character limit for truncation.", + "default": 640 + }, + "truncation_limit_lines": { + "type": "integer", + "description": "Controls maximum number of linesto truncate assertion message contents. Setting value to 0 disables the lines limit for truncation.", + "default": 8 + }, + "usefixtures": { + "type": "array", + "items": { + "type": "string" + }, + "description": "List of fixtures that will be applied to all test functions; this is semantically the same to apply the @pytest.mark.usefixtures marker to all test functions.", + "x-tombi-array-values-order": "ascending" + }, + "verbosity_assertions": { + "oneOf": [ + { + "type": "integer", + "minimum": 0 + }, + { + "type": "string", + "enum": ["auto"] + } + ], + "description": "Set a verbosity level specifically for assertion related output, overriding the application wide level." + }, + "verbosity_subtests": { + "oneOf": [ + { + "type": "integer", + "minimum": 0 + }, + { + "type": "string", + "enum": ["auto"] + } + ], + "description": "Set the verbosity level specifically for passed subtests. A value of 1 or higher will show output for passed subtests (failed subtests are always reported). Passed subtests output can be suppressed with the value 0, which overwrites the -v command-line option." + }, + "verbosity_test_cases": { + "oneOf": [ + { + "type": "integer", + "minimum": 0 + }, + { + "type": "string", + "enum": ["auto"] + } + ], + "description": "Set a verbosity level specifically for test case execution related output, overriding the application wide level." + }, + "xfail_strict": { + "type": "boolean", + "description": "DEPRECATED. Alias for strict_xfail. If true, test suite will fail if a test marked with `@pytest.mark.xfail` unexpectedly passes.", + "deprecated": true, + "default": false + } + }, + "additionalProperties": true, + "x-tombi-table-keys-order": "schema" + }, + "ConfigOptionsAsyncio": { + "description": "Configuration options for pytest-asyncio.\nhttps://pytest-asyncio.readthedocs.io/en/latest/reference/configuration.html", + "type": "object", + "properties": { + "asyncio_default_fixture_loop_scope": { + "$ref": "#/definitions/AsyncioScope", + "type": "string", + "description": "Default event loop scope of asynchronous fixtures. When this configuration option is unset, it defaults to the fixture scope. In future versions of pytest-asyncio, the value will default to function when unset" + }, + "asyncio_default_test_loop_scope": { + "$ref": "#/definitions/AsyncioScope", + "type": "string", + "description": "Default event loop scope of asynchronous tests. When this configuration option is unset, it default to function scope", + "default": "function" + }, + "asyncio_debug": { + "type": "boolean", + "description": "Enables asyncio debug mode for the default event loop used by asynchronous tests and fixtures.", + "default": false + }, + "asyncio_mode": { + "type": "string", + "oneOf": [ + { + "const": "auto", + "description": "Automatically handling all async functions by the plugin" + }, + { + "const": "strict", + "description": "Auto processing disabling (useful if different async frameworks should be tested together, e.g. both pytest-asyncio and pytest-trio are used in the same project" + } + ], + "description": "Sets the asyncio mode for pytest-asyncio.", + "default": "strict" + } + }, + "additionalProperties": true, + "x-tombi-table-keys-order": "schema" } } } diff --git a/src/schemas/json/pnpm-workspace.json b/src/schemas/json/pnpm-workspace.json index 21b7e7671e1..ba92f64dccd 100644 --- a/src/schemas/json/pnpm-workspace.json +++ b/src/schemas/json/pnpm-workspace.json @@ -805,6 +805,14 @@ "enum": ["off", "no-downgrade"] } ] + }, + "trustPolicyExclude": { + "description": "Exclude specific packages from trust policy checks.", + "type": "array", + "uniqueItems": true, + "items": { + "type": "string" + } } }, "additionalProperties": false diff --git a/src/schemas/json/uplugin.json b/src/schemas/json/uplugin.json index 23207054110..f61a9190299 100644 --- a/src/schemas/json/uplugin.json +++ b/src/schemas/json/uplugin.json @@ -1,5 +1,6 @@ { - "$schema": "http://json-schema.org/draft-04/schema#", + "$schema": "http://json-schema.org/draft-07/schema#", + "$id": "https://json.schemastore.org/uplugin.json", "additionalProperties": false, "definitions": { "BuildConfiguration": { @@ -225,11 +226,21 @@ } }, "required": ["Enabled", "Name"] + }, + "URL": { + "type": "string", + "format": "uri", + "pattern": "^https?://" } }, "description": "Descriptor for plugins. Contains all the information contained within a `.uplugin` file.", - "id": "https://json.schemastore.org/uplugin.json", "properties": { + "BuiltInInitialFeatureState": { + "description": "Determine the initial feature state for a built-in plugin", + "type": "string", + "enum": ["Installed", "Registered", "Loaded", "Active"], + "default": "Active" + }, "CanContainContent": { "description": "Can this plugin contain content?", "type": "boolean", @@ -290,16 +301,16 @@ "type": "string" }, "CreatedByURL": { - "description": "Hyperlink URL string for the company or individual who created this plugin. This is optional.", - "type": "string" + "$ref": "#/definitions/URL", + "description": "Hyperlink URL string for the company or individual who created this plugin. This is optional." }, "Description": { "description": "Description of the plugin", "type": "string" }, "DocsURL": { - "description": "Documentation URL string.", - "type": "string" + "$ref": "#/definitions/URL", + "description": "Documentation URL string." }, "EditorCustomVirtualPath": { "description": "Optional custom virtual path to display in editor to better organize.", diff --git a/src/schemas/json/venvironment-basic-schema-v1.0.0.json b/src/schemas/json/venvironment-basic-schema-v1.0.0.json deleted file mode 100644 index 2869fb4f170..00000000000 --- a/src/schemas/json/venvironment-basic-schema-v1.0.0.json +++ /dev/null @@ -1,198 +0,0 @@ -{ - "$schema": "http://json-schema.org/draft-07/schema#", - "$id": "https://json.schemastore.org/venvironment-basic-schema-v1.0.0.json", - "$ref": "#/definitions/e0721/full", - "type": "object", - "title": "venvironment-basic schema", - "definitions": { - "e0721": { - "full": { - "$schema": "http://json-schema.org/draft-07/schema#", - "title": "venvironment-basic schema", - "type": "object", - "additionalProperties": false, - "required": ["version"], - "properties": { - "version": { - "$ref": "#/definitions/ac6e5/full" - }, - "includes": { - "$ref": "#/definitions/6c391/full" - }, - "datasources": { - "$ref": "#/definitions/63f09/full" - }, - "system-variables": { - "$ref": "#/definitions/b6d06/full" - } - } - } - }, - "ac6e5": { - "full": { - "$schema": "http://json-schema.org/draft-07/schema#", - "title": "Version", - "description": "Json schema version for the vEnvironment-Basic configuration file. Acceptance criteria: equal major version, less/equal minor and patch version.", - "const": "1.0.0", - "type": "string", - "examples": ["1.0.0"] - } - }, - "b6d06": { - "full": { - "$schema": "http://json-schema.org/draft-07/schema#", - "title": "System Variables", - "description": "A lists of system variables to be used by the simulation.", - "type": "array", - "items": { - "$ref": "#/definitions/9f6ed/full" - }, - "examples": [ - [ - { - "file-path": "path/to/my.vsysvar" - } - ] - ] - } - }, - "6c391": { - "local": { - "one": { - "type": "string", - "pattern": "\\.([Yy][Aa][Mm][Ll]|[Jj][Ss][Oo][Nn])$" - } - }, - "full": { - "$schema": "http://json-schema.org/draft-07/schema#", - "title": "Include files", - "description": "Include a different file (similar to #include of the c preprocessor). The order of includes does not matter. Circular / multiple includes are resolved correctly.", - "oneOf": [ - { - "$ref": "#/definitions/6c391/local/one" - }, - { - "type": "array", - "items": { - "$ref": "#/definitions/6c391/local/one" - } - } - ], - "examples": [ - "my_include.yaml", - ["my_include.yaml", "my_other_include.json"] - ] - } - }, - "63f09": { - "full": { - "$schema": "http://json-schema.org/draft-07/schema#", - "title": "Datasources", - "description": "The definition of datasources used by application models.", - "type": "object", - "additionalProperties": false, - "properties": { - "input-files": { - "type": "array", - "items": { - "type": "object", - "additionalProperties": false, - "required": ["file-path"], - "properties": { - "file-path": { - "$ref": "#/definitions/59271/full" - } - } - } - } - }, - "examples": [ - { - "input-files": [ - { - "file-path": "path/to/my.vcdl" - } - ] - } - ] - } - }, - "59271": { - "full": { - "$schema": "http://json-schema.org/draft-07/schema#", - "anyOf": [ - { - "$ref": "#/definitions/1440f/full" - }, - { - "type": "array", - "items": { - "$ref": "#/definitions/1440f/full" - }, - "examples": [["path/to/my.vcdl"], ["path/to/my.vcodm"]] - } - ], - "examples": ["path/to/my.vcdl", ["path/to/my.vcodm"]] - } - }, - "9f6ed": { - "full": { - "$schema": "http://json-schema.org/draft-07/schema#", - "title": "System variables", - "description": "Absolute or relative path to an external file containing system variables. Relative path specifications are resolved relative to the defining configuration file.", - "type": "object", - "additionalProperties": false, - "required": ["file-path"], - "properties": { - "file-path": { - "anyOf": [ - { - "$ref": "#/definitions/94751/full" - }, - { - "type": "array", - "items": { - "$ref": "#/definitions/94751/full" - } - } - ] - } - }, - "examples": [ - { - "file-path": "path/to/my.vsysvar" - } - ] - } - }, - "1440f": { - "full": { - "$schema": "http://json-schema.org/draft-07/schema#", - "description": "Reference to external datasource files (.vcdl/.vcodm). Absolute or relative path. Relative path specifications are resolved relative to the defining configuration file.", - "type": "string", - "anyOf": [ - { - "pattern": "^.*\\.[vV][cC][dD][lL]$" - }, - { - "pattern": "^.*\\.[vV][cC][oO][dD][mM]$" - } - ], - "examples": ["path/to/my.vcdl", "path/to/my.vcodm"] - } - }, - "94751": { - "full": { - "$schema": "http://json-schema.org/draft-07/schema#", - "description": "Absolute or relative path to a vsysvar file. Relative path specifications are resolved relative to the configuration file.", - "type": "string", - "anyOf": [ - { - "pattern": "^.*\\.[vV][sS][yY][sS][vV][aA][rR]$" - } - ], - "examples": ["path/to/my.vsysvar"] - } - } - } -} diff --git a/src/schemas/json/venvironment-basic-schema-v1.1.0.json b/src/schemas/json/venvironment-basic-schema-v1.1.0.json deleted file mode 100644 index 29faaecb707..00000000000 --- a/src/schemas/json/venvironment-basic-schema-v1.1.0.json +++ /dev/null @@ -1,535 +0,0 @@ -{ - "$schema": "http://json-schema.org/draft-07/schema#", - "$id": "https://json.schemastore.org/venvironment-basic-schema-v1.1.0.json", - "$ref": "#/definitions/aab8d/full", - "type": "object", - "title": "venvironment-basic schema", - "definitions": { - "aab8d": { - "full": { - "$schema": "http://json-schema.org/draft-07/schema#", - "title": "venvironment-basic schema", - "type": "object", - "additionalProperties": false, - "required": ["version"], - "properties": { - "version": { - "$ref": "#/definitions/61417/full" - }, - "includes": { - "$ref": "#/definitions/85495/full" - }, - "datasources": { - "$ref": "#/definitions/63f09/full" - }, - "functional-mockup-units": { - "$ref": "#/definitions/28dd9/full" - }, - "sil-kit": { - "$ref": "#/definitions/913f7/full" - }, - "system-variables": { - "$ref": "#/definitions/b6d06/full" - }, - "logging": { - "$ref": "#/definitions/d3026/full" - } - } - } - }, - "b6d06": { - "full": { - "$schema": "http://json-schema.org/draft-07/schema#", - "title": "System Variables", - "description": "A lists of system variables to be used by the simulation.", - "type": "array", - "items": { - "$ref": "#/definitions/9f6ed/full" - }, - "examples": [ - [ - { - "file-path": "path/to/my.vsysvar" - } - ] - ] - } - }, - "d3026": { - "full": { - "$schema": "http://json-schema.org/draft-07/schema#", - "title": "Logging Block", - "description": "Configuration of the standalone logging block.", - "type": "object", - "additionalProperties": false, - "required": ["file-name"], - "properties": { - "file-name": { - "$ref": "#/definitions/b8ec5/full" - }, - "logging-events": { - "type": "array", - "default": [ - "bus", - "diagnostic", - "internal", - "statistic", - "system-variable", - "test" - ], - "items": { - "anyOf": [ - { - "type": "string", - "enum": [ - "bus", - "diagnostic", - "internal", - "statistic", - "system-variable", - "test" - ] - } - ] - } - }, - "advanced": { - "$ref": "#/definitions/cb820/full" - } - }, - "examples": [] - } - }, - "b8ec5": { - "full": { - "$schema": "http://json-schema.org/draft-07/schema#", - "$comment": "|<|>", - "description": "Name of a blf file, supporting the field codes: {ComputerName}, {LocalTime}, {MeasurementIndex}, {MeasurementStart}, {IncSize|001|100MB} and {IncTime|001|01h00m}.", - "type": "string", - "anyOf": [ - { - "pattern": "^(?!.*(\\{TriggerCondition\\}|\\{LoggingBlock\\}|\\{IncMeasurement\\}|\\{ConfigName\\}|\\{IncTrigger\\|[0-9]*\\}|[\"<>*?:/\\\\])).*\\.[bB][lL][fF]$" - } - ], - "examples": [ - "fileName.blf", - "log_{ComputerName}.blf", - "log_{LocalTime}.blf", - "log_{MeasurementIndex}.blf", - "log_{MeasurementStart}.blf" - ] - } - }, - "cb820": { - "full": { - "$schema": "http://json-schema.org/draft-07/schema#", - "description": "Advanced logging configurations", - "type": "object", - "additionalProperties": false, - "properties": { - "warn-overwritten-log-file": { - "anyOf": [ - { - "type": "boolean" - } - ], - "default": true - }, - "show-error-on-data-loss": { - "anyOf": [ - { - "type": "boolean" - } - ], - "default": true - } - }, - "examples": [ - { - "warn-overwritten-log-file": false, - "show-error-on-data-loss": true - }, - { - "warn-overwritten-log-file": true - } - ] - } - }, - "61417": { - "full": { - "$schema": "http://json-schema.org/draft-07/schema#", - "title": "Version", - "description": "Json schema version for the vEnvironment-Basic configuration file. Acceptance criteria: equal major version, less/equal minor and patch version.", - "const": "1.1.0", - "type": "string", - "examples": ["1.1.0"] - } - }, - "85495": { - "local": { - "one": { - "type": "string", - "pattern": "\\.([Yy][Aa]?[Mm][Ll]|[Jj][Ss][Oo][Nn])$" - } - }, - "full": { - "$schema": "http://json-schema.org/draft-07/schema#", - "title": "Include files", - "description": "Include a different file (similar to #include of the c preprocessor). The order of includes does not matter. Circular / multiple includes are resolved correctly.", - "oneOf": [ - { - "$ref": "#/definitions/85495/local/one" - }, - { - "type": "array", - "items": { - "$ref": "#/definitions/85495/local/one" - } - } - ], - "examples": [ - "my_include.yaml", - ["my_include.yml", "my_other_include.json"] - ] - } - }, - "63f09": { - "full": { - "$schema": "http://json-schema.org/draft-07/schema#", - "title": "Datasources", - "description": "The definition of datasources used by application models.", - "type": "object", - "additionalProperties": false, - "properties": { - "input-files": { - "type": "array", - "items": { - "type": "object", - "additionalProperties": false, - "required": ["file-path"], - "properties": { - "file-path": { - "$ref": "#/definitions/59271/full" - } - } - } - } - }, - "examples": [ - { - "input-files": [ - { - "file-path": "path/to/my.vcdl" - } - ] - } - ] - } - }, - "28dd9": { - "full": { - "$schema": "http://json-schema.org/draft-07/schema#", - "title": "Functional mockup units", - "description": "List of functional mockup units.", - "type": "array", - "items": { - "$ref": "#/definitions/5e98c/full" - }, - "examples": [ - [ - { - "file-path": "path/to/some.fmu", - "stepsize-in-sec": 0.001 - } - ], - [ - { - "file-path": "path/to/some.fmu", - "stepsize-in-sec": 0.001, - "debug-output": true - } - ], - [ - { - "file-path": "path/to/some.fmu", - "stepsize-in-sec": 0.001, - "debug-output": false, - "active-model-variables": ["Variable1", "Variable2"] - } - ], - [ - { - "file-path": "path/to/some.fmu", - "stepsize-in-sec": 0.001, - "debug-output": false, - "inactive-model-variables": ["Variable3"] - } - ] - ] - } - }, - "913f7": { - "full": { - "$schema": "http://json-schema.org/draft-07/schema#", - "title": "SIL Kit", - "description": "SIL Kit settings.", - "type": "object", - "additionalProperties": false, - "required": ["participant-name"], - "properties": { - "registry-uri": { - "description": "registry URI", - "type": "string", - "anyOf": [ - { - "pattern": "^[^:]+://[^:/]+(:[0-9]+)?(/[^?#/]+)*(\\?([^=#&]+=[^=#&]+)(&([^=#&]+=[^=#&]+))*)?(#.+)?" - } - ], - "examples": ["silkit://localhost:8500"] - }, - "participant-name": { - "description": "Name used by CANoe4SW to join a simulation as a participant at the start of a measurement.", - "anyOf": [ - { - "type": "string" - } - ], - "examples": ["CANoe4SW"] - }, - "config-file-path": { - "$ref": "#/definitions/0a5c9/full" - } - }, - "examples": [ - { - "registry-uri": "silkit://localhost:8500", - "participant-name": "CANoe4SW", - "config-file-path": "path/to/config-file.json" - } - ] - } - }, - "59271": { - "full": { - "$schema": "http://json-schema.org/draft-07/schema#", - "anyOf": [ - { - "$ref": "#/definitions/1440f/full" - }, - { - "type": "array", - "items": { - "$ref": "#/definitions/1440f/full" - }, - "examples": [["path/to/my.vcdl"], ["path/to/my.vcodm"]] - } - ], - "examples": ["path/to/my.vcdl", ["path/to/my.vcodm"]] - } - }, - "5e98c": { - "local": { - "stepsize-in-sec": { - "description": "step size in seconds", - "anyOf": [ - { - "type": "number", - "minimum": 0, - "maximum": 1.79769e308 - } - ], - "examples": [0, 0.0005, 1568714585] - }, - "debug-output": { - "description": "Are the debug outputs on", - "anyOf": [ - { - "type": "boolean", - "default": false - } - ], - "examples": [false, true] - }, - "active-model-variables": { - "description": "List of the FMU variables which should be exported", - "type": "array", - "items": { - "anyOf": [ - { - "type": "string" - } - ], - "examples": ["Variable1"] - } - }, - "inactive-model-variables": { - "description": "List of the FMU variables which should be excluded from the export", - "type": "array", - "items": { - "anyOf": [ - { - "type": "string" - } - ], - "examples": ["Variable1"] - } - } - }, - "full": { - "$schema": "http://json-schema.org/draft-07/schema#", - "title": "Functional mockup unit", - "description": "Represents a functional mockup unit used in a scenario", - "type": "object", - "anyOf": [ - { - "additionalProperties": false, - "required": ["file-path", "stepsize-in-sec"], - "properties": { - "file-path": { - "$ref": "#/definitions/503be/full" - }, - "stepsize-in-sec": { - "$ref": "#/definitions/5e98c/local/stepsize-in-sec" - }, - "debug-output": { - "$ref": "#/definitions/5e98c/local/debug-output" - } - } - }, - { - "additionalProperties": false, - "required": [ - "file-path", - "stepsize-in-sec", - "active-model-variables" - ], - "properties": { - "file-path": { - "$ref": "#/definitions/503be/full" - }, - "stepsize-in-sec": { - "$ref": "#/definitions/5e98c/local/stepsize-in-sec" - }, - "debug-output": { - "$ref": "#/definitions/5e98c/local/debug-output" - }, - "active-model-variables": { - "$ref": "#/definitions/5e98c/local/active-model-variables" - } - } - }, - { - "additionalProperties": false, - "required": [ - "file-path", - "stepsize-in-sec", - "inactive-model-variables" - ], - "properties": { - "file-path": { - "$ref": "#/definitions/503be/full" - }, - "stepsize-in-sec": { - "$ref": "#/definitions/5e98c/local/stepsize-in-sec" - }, - "debug-output": { - "$ref": "#/definitions/5e98c/local/debug-output" - }, - "inactive-model-variables": { - "$ref": "#/definitions/5e98c/local/inactive-model-variables" - } - } - } - ] - } - }, - "0a5c9": { - "full": { - "$schema": "http://json-schema.org/draft-07/schema#", - "description": "Absolute or relative path to a SIL Kit config file (.yaml or .json). Relative path specifications are resolved relative to the configuration file.", - "type": "string", - "anyOf": [ - { - "pattern": "^.*\\.[yY][aA][mM][lL]$" - }, - { - "pattern": "^.*\\.[jJ][sS][oO][nN]$" - } - ], - "examples": ["path/to/myConfigFile.json", "path/to/myConfigFile.yaml"] - } - }, - "9f6ed": { - "full": { - "$schema": "http://json-schema.org/draft-07/schema#", - "title": "System variables", - "description": "Absolute or relative path to an external file containing system variables. Relative path specifications are resolved relative to the defining configuration file.", - "type": "object", - "additionalProperties": false, - "required": ["file-path"], - "properties": { - "file-path": { - "anyOf": [ - { - "$ref": "#/definitions/94751/full" - }, - { - "type": "array", - "items": { - "$ref": "#/definitions/94751/full" - } - } - ] - } - }, - "examples": [ - { - "file-path": "path/to/my.vsysvar" - } - ] - } - }, - "1440f": { - "full": { - "$schema": "http://json-schema.org/draft-07/schema#", - "description": "Reference to external datasource files (.vcdl/.vcodm). Absolute or relative path. Relative path specifications are resolved relative to the defining configuration file.", - "type": "string", - "anyOf": [ - { - "pattern": "^.*\\.[vV][cC][dD][lL]$" - }, - { - "pattern": "^.*\\.[vV][cC][oO][dD][mM]$" - } - ], - "examples": ["path/to/my.vcdl", "path/to/my.vcodm"] - } - }, - "503be": { - "full": { - "$schema": "http://json-schema.org/draft-07/schema#", - "description": "Absolute or relative path to a source file of a functional mockup unit (.fmu). Relative path specifications are resolved relative to the defining configuration file.", - "type": "string", - "anyOf": [ - { - "pattern": "^.*\\.[Ff][Mm][Uu]$" - } - ], - "examples": ["my_functional_mockup_unit.fmu", "Inputs/MyFmu.FMU"] - } - }, - "94751": { - "full": { - "$schema": "http://json-schema.org/draft-07/schema#", - "description": "Absolute or relative path to a vsysvar file. Relative path specifications are resolved relative to the configuration file.", - "type": "string", - "anyOf": [ - { - "pattern": "^.*\\.[vV][sS][yY][sS][vV][aA][rR]$" - } - ], - "examples": ["path/to/my.vsysvar"] - } - } - } -} diff --git a/src/schemas/json/venvironment-basic-schema-v2.0.0.json b/src/schemas/json/venvironment-basic-schema-v2.0.0.json deleted file mode 100644 index eefb8cba52d..00000000000 --- a/src/schemas/json/venvironment-basic-schema-v2.0.0.json +++ /dev/null @@ -1,606 +0,0 @@ -{ - "$schema": "http://json-schema.org/draft-07/schema#", - "$id": "https://json.schemastore.org/venvironment-basic-schema-v2.0.0.json", - "$ref": "#/definitions/243be/full", - "type": "object", - "title": "venvironment-basic schema", - "definitions": { - "f9c04": { - "full": { - "$schema": "http://json-schema.org/draft-07/schema#", - "title": "Functional mockup units", - "description": "List of functional mockup units.", - "type": "array", - "items": { - "$ref": "#/definitions/9652c/full" - }, - "examples": [ - [ - { - "file-path": "path/to/some.fmu", - "stepsize-in-sec": 0.001 - } - ], - [ - { - "file-path": "path/to/some.fmu", - "stepsize-in-sec": 0.001, - "debug-output": true - } - ], - [ - { - "file-path": "path/to/some.fmu", - "stepsize-in-sec": 0.001, - "debug-output": false, - "active-model-variables": ["Variable1", "Variable2"] - } - ], - [ - { - "file-path": "path/to/some.fmu", - "stepsize-in-sec": 0.001, - "debug-output": false, - "inactive-model-variables": ["Variable3"] - } - ] - ] - } - }, - "b6d06": { - "full": { - "$schema": "http://json-schema.org/draft-07/schema#", - "title": "System Variables", - "description": "A lists of system variables to be used by the simulation.", - "type": "array", - "items": { - "$ref": "#/definitions/9f6ed/full" - }, - "examples": [ - [ - { - "file-path": "path/to/my.vsysvar" - } - ] - ] - } - }, - "b8ec5": { - "full": { - "$schema": "http://json-schema.org/draft-07/schema#", - "$comment": "|<|>", - "description": "Name of a blf file, supporting the field codes: {ComputerName}, {LocalTime}, {MeasurementIndex}, {MeasurementStart}, {IncSize|001|100MB} and {IncTime|001|01h00m}.", - "type": "string", - "anyOf": [ - { - "pattern": "^(?!.*(\\{TriggerCondition\\}|\\{LoggingBlock\\}|\\{IncMeasurement\\}|\\{ConfigName\\}|\\{IncTrigger\\|[0-9]*\\}|[\"<>*?:/\\\\])).*\\.[bB][lL][fF]$" - } - ], - "examples": [ - "fileName.blf", - "log_{ComputerName}.blf", - "log_{LocalTime}.blf", - "log_{MeasurementIndex}.blf", - "log_{MeasurementStart}.blf" - ] - } - }, - "243be": { - "full": { - "$schema": "http://json-schema.org/draft-07/schema#", - "title": "venvironment-basic schema", - "type": "object", - "additionalProperties": false, - "required": ["version"], - "properties": { - "version": { - "$ref": "#/definitions/380de/full" - }, - "global-settings": { - "$ref": "#/definitions/9af4e/full" - }, - "includes": { - "$ref": "#/definitions/85495/full" - }, - "datasources": { - "$ref": "#/definitions/63f09/full" - }, - "functional-mockup-units": { - "$ref": "#/definitions/f9c04/full" - }, - "sil-kit": { - "$ref": "#/definitions/5d5f2/full" - }, - "system-variables": { - "$ref": "#/definitions/b6d06/full" - }, - "logging": { - "$ref": "#/definitions/4e805/full" - } - } - } - }, - "380de": { - "full": { - "$schema": "http://json-schema.org/draft-07/schema#", - "title": "Version", - "description": "Json schema version for the vEnvironment-Basic configuration file. Acceptance criteria: equal major version, less/equal minor and patch version.", - "const": "2.0.0", - "type": "string", - "examples": ["2.0.0"] - } - }, - "9af4e": { - "full": { - "$schema": "http://json-schema.org/draft-07/schema#", - "title": "Global Settings", - "description": "Global settings for all scenarios.", - "type": "object", - "additionalProperties": false, - "properties": { - "time-source": { - "description": "Time source for the simulation. Operate without hardware and simulate all buses completely. \n'internal-realtime': The time response of the measurement (time basis) is controlled internally. \n'external-software': The time response of the measurement (time basis) is controlled by an external program.", - "default": "internal-realtime", - "anyOf": [ - { - "type": "string", - "enum": ["internal-realtime", "external-software"] - } - ], - "examples": ["internal-realtime", "external-software"] - } - }, - "examples": [ - { - "time-source": "internal-realtime" - } - ] - } - }, - "85495": { - "local": { - "one": { - "type": "string", - "pattern": "\\.([Yy][Aa]?[Mm][Ll]|[Jj][Ss][Oo][Nn])$" - } - }, - "full": { - "$schema": "http://json-schema.org/draft-07/schema#", - "title": "Include files", - "description": "Include a different file (similar to #include of the c preprocessor). The order of includes does not matter. Circular / multiple includes are resolved correctly.", - "oneOf": [ - { - "$ref": "#/definitions/85495/local/one" - }, - { - "type": "array", - "items": { - "$ref": "#/definitions/85495/local/one" - } - } - ], - "examples": [ - "my_include.yaml", - ["my_include.yml", "my_other_include.json"] - ] - } - }, - "63f09": { - "full": { - "$schema": "http://json-schema.org/draft-07/schema#", - "title": "Datasources", - "description": "The definition of datasources used by application models.", - "type": "object", - "additionalProperties": false, - "properties": { - "input-files": { - "type": "array", - "items": { - "type": "object", - "additionalProperties": false, - "required": ["file-path"], - "properties": { - "file-path": { - "$ref": "#/definitions/59271/full" - } - } - } - } - }, - "examples": [ - { - "input-files": [ - { - "file-path": "path/to/my.vcdl" - } - ] - } - ] - } - }, - "5d5f2": { - "full": { - "$schema": "http://json-schema.org/draft-07/schema#", - "title": "SIL Kit", - "description": "SIL Kit settings.", - "type": "object", - "additionalProperties": false, - "required": ["participant-name"], - "properties": { - "registry-uri": { - "description": "The URI of the registry.", - "type": "string", - "anyOf": [ - { - "pattern": "^[^:]+://[^:/]+(:[0-9]+)?(/[^?#/]+)*(\\?([^=#&]+=[^=#&]+)(&([^=#&]+=[^=#&]+))*)?(#.+)?", - "default": "silkit://localhost:8500" - } - ], - "examples": ["silkit://localhost:8500"] - }, - "participant-name": { - "description": "Name used by the simulation tool to join a simulation as a participant at the start of a measurement.", - "anyOf": [ - { - "type": "string" - } - ], - "examples": ["CANoe4SW-SE"] - }, - "config-file-path": { - "$ref": "#/definitions/0a5c9/full" - }, - "simulation-step-in-micro-sec": { - "description": "Time length of a single simulation step. Valid only for the time-source \"external-software\".", - "anyOf": [ - { - "type": "integer", - "minimum": 0, - "maximum": 9223372036854775, - "default": 100 - } - ] - }, - "life-cycle-event-timeout-in-sec": { - "description": "Maximum waiting time for the other simulation participants. Valid only for the time-source \"external-software\".", - "anyOf": [ - { - "type": "integer", - "minimum": 0, - "maximum": 9223372036, - "default": 30 - } - ] - } - }, - "examples": [ - { - "participant-name": "CANoe4SW-SE" - }, - { - "registry-uri": "silkit://localhost:8500", - "participant-name": "CANoe4SW-SE", - "config-file-path": "path/to/config-file.json" - }, - { - "registry-uri": "silkit://localhost:8500", - "participant-name": "CANoe4SW-SE", - "config-file-path": "path/to/config-file.json", - "simulation-step-in-micro-sec": 150 - }, - { - "registry-uri": "silkit://localhost:8500", - "participant-name": "CANoe4SW-SE", - "config-file-path": "path/to/config-file.json", - "simulation-step-in-micro-sec": 150, - "life-cycle-event-timeout-in-sec": 30 - } - ] - } - }, - "4e805": { - "full": { - "$schema": "http://json-schema.org/draft-07/schema#", - "title": "Logging Block", - "description": "Configuration of the logging for the environment.", - "type": "object", - "additionalProperties": false, - "required": ["file-name"], - "properties": { - "file-name": { - "$ref": "#/definitions/b8ec5/full" - }, - "logging-events": { - "type": "array", - "default": [ - "application-layer", - "bus", - "diagnostic", - "internal", - "statistic", - "system-variable", - "test" - ], - "items": { - "anyOf": [ - { - "type": "string", - "enum": [ - "application-layer", - "bus", - "diagnostic", - "internal", - "statistic", - "system-variable", - "test" - ] - } - ] - } - }, - "advanced": { - "$ref": "#/definitions/17c8c/full" - } - }, - "examples": [] - } - }, - "59271": { - "full": { - "$schema": "http://json-schema.org/draft-07/schema#", - "anyOf": [ - { - "$ref": "#/definitions/1440f/full" - }, - { - "type": "array", - "items": { - "$ref": "#/definitions/1440f/full" - }, - "examples": [["path/to/my.vcdl"], ["path/to/my.vcodm"]] - } - ], - "examples": ["path/to/my.vcdl", ["path/to/my.vcodm"]] - } - }, - "9652c": { - "local": { - "stepsize-in-sec": { - "description": "Step size in seconds.", - "anyOf": [ - { - "type": "number", - "minimum": 0, - "maximum": 10000 - } - ], - "examples": [0, 0.0005, 10000] - }, - "debug-output": { - "description": "Is the debug output active.", - "anyOf": [ - { - "type": "boolean", - "default": false - } - ], - "examples": [false, true] - }, - "active-model-variables": { - "description": "List of the FMU variables which should be exported", - "type": "array", - "items": { - "anyOf": [ - { - "type": "string" - } - ], - "examples": ["Variable1"] - } - }, - "inactive-model-variables": { - "description": "List of the FMU variables which should be excluded from the export", - "type": "array", - "items": { - "anyOf": [ - { - "type": "string" - } - ], - "examples": ["Variable1"] - } - } - }, - "full": { - "$schema": "http://json-schema.org/draft-07/schema#", - "title": "Functional mockup unit", - "description": "Represents a functional mockup unit used in a scenario.", - "type": "object", - "anyOf": [ - { - "additionalProperties": false, - "required": ["file-path", "stepsize-in-sec"], - "properties": { - "file-path": { - "$ref": "#/definitions/503be/full" - }, - "stepsize-in-sec": { - "$ref": "#/definitions/9652c/local/stepsize-in-sec" - }, - "debug-output": { - "$ref": "#/definitions/9652c/local/debug-output" - } - } - }, - { - "additionalProperties": false, - "required": [ - "file-path", - "stepsize-in-sec", - "active-model-variables" - ], - "properties": { - "file-path": { - "$ref": "#/definitions/503be/full" - }, - "stepsize-in-sec": { - "$ref": "#/definitions/9652c/local/stepsize-in-sec" - }, - "debug-output": { - "$ref": "#/definitions/9652c/local/debug-output" - }, - "active-model-variables": { - "$ref": "#/definitions/9652c/local/active-model-variables" - } - } - }, - { - "additionalProperties": false, - "required": [ - "file-path", - "stepsize-in-sec", - "inactive-model-variables" - ], - "properties": { - "file-path": { - "$ref": "#/definitions/503be/full" - }, - "stepsize-in-sec": { - "$ref": "#/definitions/9652c/local/stepsize-in-sec" - }, - "debug-output": { - "$ref": "#/definitions/9652c/local/debug-output" - }, - "inactive-model-variables": { - "$ref": "#/definitions/9652c/local/inactive-model-variables" - } - } - } - ] - } - }, - "0a5c9": { - "full": { - "$schema": "http://json-schema.org/draft-07/schema#", - "description": "Absolute or relative path to a SIL Kit config file (.yaml or .json). Relative path specifications are resolved relative to the configuration file.", - "type": "string", - "anyOf": [ - { - "pattern": "^.*\\.[yY][aA][mM][lL]$" - }, - { - "pattern": "^.*\\.[jJ][sS][oO][nN]$" - } - ], - "examples": ["path/to/myConfigFile.json", "path/to/myConfigFile.yaml"] - } - }, - "9f6ed": { - "full": { - "$schema": "http://json-schema.org/draft-07/schema#", - "title": "System variables", - "description": "Absolute or relative path to an external file containing system variables. Relative path specifications are resolved relative to the defining configuration file.", - "type": "object", - "additionalProperties": false, - "required": ["file-path"], - "properties": { - "file-path": { - "anyOf": [ - { - "$ref": "#/definitions/94751/full" - }, - { - "type": "array", - "items": { - "$ref": "#/definitions/94751/full" - } - } - ] - } - }, - "examples": [ - { - "file-path": "path/to/my.vsysvar" - } - ] - } - }, - "17c8c": { - "full": { - "$schema": "http://json-schema.org/draft-07/schema#", - "description": "Advanced logging configurations.", - "type": "object", - "additionalProperties": false, - "properties": { - "warn-overwritten-log-file": { - "anyOf": [ - { - "type": "boolean" - } - ], - "default": true - }, - "show-error-on-data-loss": { - "anyOf": [ - { - "type": "boolean" - } - ], - "default": true - } - }, - "examples": [ - { - "warn-overwritten-log-file": false, - "show-error-on-data-loss": true - }, - { - "warn-overwritten-log-file": true - } - ] - } - }, - "1440f": { - "full": { - "$schema": "http://json-schema.org/draft-07/schema#", - "description": "Reference to external datasource files (.vcdl/.vcodm). Absolute or relative path. Relative path specifications are resolved relative to the defining configuration file.", - "type": "string", - "anyOf": [ - { - "pattern": "^.*\\.[vV][cC][dD][lL]$" - }, - { - "pattern": "^.*\\.[vV][cC][oO][dD][mM]$" - } - ], - "examples": ["path/to/my.vcdl", "path/to/my.vcodm"] - } - }, - "503be": { - "full": { - "$schema": "http://json-schema.org/draft-07/schema#", - "description": "Absolute or relative path to a source file of a functional mockup unit (.fmu). Relative path specifications are resolved relative to the defining configuration file.", - "type": "string", - "anyOf": [ - { - "pattern": "^.*\\.[Ff][Mm][Uu]$" - } - ], - "examples": ["my_functional_mockup_unit.fmu", "Inputs/MyFmu.FMU"] - } - }, - "94751": { - "full": { - "$schema": "http://json-schema.org/draft-07/schema#", - "description": "Absolute or relative path to a vsysvar file. Relative path specifications are resolved relative to the configuration file.", - "type": "string", - "anyOf": [ - { - "pattern": "^.*\\.[vV][sS][yY][sS][vV][aA][rR]$" - } - ], - "examples": ["path/to/my.vsysvar"] - } - } - } -} diff --git a/src/schemas/json/venvironment-basic-schema-v2.1.0.json b/src/schemas/json/venvironment-basic-schema-v2.1.0.json deleted file mode 100644 index 7b5e72af85a..00000000000 --- a/src/schemas/json/venvironment-basic-schema-v2.1.0.json +++ /dev/null @@ -1,670 +0,0 @@ -{ - "$schema": "http://json-schema.org/draft-07/schema#", - "$id": "https://json.schemastore.org/venvironment-basic-schema-v2.1.0.json", - "$ref": "#/definitions/7676f/full", - "type": "object", - "title": "venvironment-basic schema", - "definitions": { - "be664": { - "full": { - "$schema": "http://json-schema.org/draft-07/schema#", - "title": "Version", - "description": "Json schema version for the vEnvironment-Basic configuration file. Acceptance criteria: equal major version, less/equal minor and patch version.", - "const": "2.1.0", - "type": "string", - "examples": ["2.1.0"] - } - }, - "b6d06": { - "full": { - "$schema": "http://json-schema.org/draft-07/schema#", - "title": "System Variables", - "description": "A lists of system variables to be used by the simulation.", - "type": "array", - "items": { - "$ref": "#/definitions/9f6ed/full" - }, - "examples": [ - [ - { - "file-path": "path/to/my.vsysvar" - } - ] - ] - } - }, - "f9c04": { - "full": { - "$schema": "http://json-schema.org/draft-07/schema#", - "title": "Functional mockup units", - "description": "List of functional mockup units.", - "type": "array", - "items": { - "$ref": "#/definitions/9652c/full" - }, - "examples": [ - [ - { - "file-path": "path/to/some.fmu", - "stepsize-in-sec": 0.001 - } - ], - [ - { - "file-path": "path/to/some.fmu", - "stepsize-in-sec": 0.001, - "debug-output": true - } - ], - [ - { - "file-path": "path/to/some.fmu", - "stepsize-in-sec": 0.001, - "debug-output": false, - "active-model-variables": ["Variable1", "Variable2"] - } - ], - [ - { - "file-path": "path/to/some.fmu", - "stepsize-in-sec": 0.001, - "debug-output": false, - "inactive-model-variables": ["Variable3"] - } - ] - ] - } - }, - "b8ec5": { - "full": { - "$schema": "http://json-schema.org/draft-07/schema#", - "$comment": "|<|>", - "description": "Name of a blf file, supporting the field codes: {ComputerName}, {LocalTime}, {MeasurementIndex}, {MeasurementStart}, {IncSize|001|100MB} and {IncTime|001|01h00m}.", - "type": "string", - "anyOf": [ - { - "pattern": "^(?!.*(\\{TriggerCondition\\}|\\{LoggingBlock\\}|\\{IncMeasurement\\}|\\{ConfigName\\}|\\{IncTrigger\\|[0-9]*\\}|[\"<>*?:/\\\\])).*\\.[bB][lL][fF]$" - } - ], - "examples": [ - "fileName.blf", - "log_{ComputerName}.blf", - "log_{LocalTime}.blf", - "log_{MeasurementIndex}.blf", - "log_{MeasurementStart}.blf" - ] - } - }, - "7676f": { - "full": { - "$schema": "http://json-schema.org/draft-07/schema#", - "title": "venvironment-basic schema", - "type": "object", - "additionalProperties": false, - "required": ["version"], - "properties": { - "version": { - "$ref": "#/definitions/be664/full" - }, - "includes": { - "$ref": "#/definitions/85495/full" - }, - "global-settings": { - "$ref": "#/definitions/11d8e/full" - }, - "system-variables": { - "$ref": "#/definitions/b6d06/full" - }, - "datasources": { - "$ref": "#/definitions/63f09/full" - }, - "user-files": { - "$ref": "#/definitions/67623/full" - }, - "functional-mockup-units": { - "$ref": "#/definitions/f9c04/full" - }, - "sil-kit": { - "$ref": "#/definitions/5d5f2/full" - }, - "logging": { - "$ref": "#/definitions/7b0d8/full" - } - } - } - }, - "85495": { - "local": { - "one": { - "type": "string", - "pattern": "\\.([Yy][Aa]?[Mm][Ll]|[Jj][Ss][Oo][Nn])$" - } - }, - "full": { - "$schema": "http://json-schema.org/draft-07/schema#", - "title": "Include files", - "description": "Include a different file (similar to #include of the c preprocessor). The order of includes does not matter. Circular / multiple includes are resolved correctly.", - "oneOf": [ - { - "$ref": "#/definitions/85495/local/one" - }, - { - "type": "array", - "items": { - "$ref": "#/definitions/85495/local/one" - } - } - ], - "examples": [ - "my_include.yaml", - ["my_include.yml", "my_other_include.json"] - ] - } - }, - "11d8e": { - "full": { - "$schema": "http://json-schema.org/draft-07/schema#", - "title": "Global Settings", - "description": "Global settings for all scenarios.", - "type": "object", - "additionalProperties": false, - "properties": { - "time-source": { - "description": "Time source for the simulation. Operate without hardware and simulate all buses completely. \n'internal-realtime': The time response of the measurement (time basis) is controlled internally. \n'external-software': The time response of the measurement (time basis) is controlled by an external program.", - "default": "internal-realtime", - "anyOf": [ - { - "enum": ["internal-realtime", "external-software"] - } - ], - "examples": ["internal-realtime", "external-software"] - } - }, - "examples": [ - { - "time-source": "internal-realtime" - } - ] - } - }, - "63f09": { - "full": { - "$schema": "http://json-schema.org/draft-07/schema#", - "title": "Datasources", - "description": "The definition of datasources used by application models.", - "type": "object", - "additionalProperties": false, - "properties": { - "input-files": { - "type": "array", - "items": { - "type": "object", - "additionalProperties": false, - "required": ["file-path"], - "properties": { - "file-path": { - "$ref": "#/definitions/59271/full" - } - } - } - } - }, - "examples": [ - { - "input-files": [ - { - "file-path": "path/to/my.vcdl" - } - ] - } - ] - } - }, - "67623": { - "full": { - "$schema": "http://json-schema.org/draft-07/schema#", - "title": "User Files", - "description": "List of user files.", - "type": "array", - "items": { - "$ref": "#/definitions/07a14/full" - }, - "examples": [ - [ - { - "file-path": "path/to/my.txt" - } - ] - ] - } - }, - "5d5f2": { - "full": { - "$schema": "http://json-schema.org/draft-07/schema#", - "title": "SIL Kit", - "description": "SIL Kit settings.", - "type": "object", - "additionalProperties": false, - "required": ["participant-name"], - "properties": { - "registry-uri": { - "description": "The URI of the registry.", - "type": "string", - "anyOf": [ - { - "pattern": "^[^:]+://[^:/]+(:[0-9]+)?(/[^?#/]+)*(\\?([^=#&]+=[^=#&]+)(&([^=#&]+=[^=#&]+))*)?(#.+)?", - "default": "silkit://localhost:8500" - } - ], - "examples": ["silkit://localhost:8500"] - }, - "participant-name": { - "description": "Name used by the simulation tool to join a simulation as a participant at the start of a measurement.", - "anyOf": [ - { - "type": "string" - } - ], - "examples": ["CANoe4SW-SE"] - }, - "config-file-path": { - "$ref": "#/definitions/0a5c9/full" - }, - "simulation-step-in-micro-sec": { - "description": "Time length of a single simulation step. Valid only for the time-source \"external-software\".", - "anyOf": [ - { - "type": "integer", - "minimum": 0, - "maximum": 9223372036854775, - "default": 100 - } - ] - }, - "life-cycle-event-timeout-in-sec": { - "description": "Maximum waiting time for the other simulation participants. Valid only for the time-source \"external-software\".", - "anyOf": [ - { - "type": "integer", - "minimum": 0, - "maximum": 9223372036, - "default": 30 - } - ] - } - }, - "examples": [ - { - "participant-name": "CANoe4SW-SE" - }, - { - "registry-uri": "silkit://localhost:8500", - "participant-name": "CANoe4SW-SE", - "config-file-path": "path/to/config-file.json" - }, - { - "registry-uri": "silkit://localhost:8500", - "participant-name": "CANoe4SW-SE", - "config-file-path": "path/to/config-file.json", - "simulation-step-in-micro-sec": 150 - }, - { - "registry-uri": "silkit://localhost:8500", - "participant-name": "CANoe4SW-SE", - "config-file-path": "path/to/config-file.json", - "simulation-step-in-micro-sec": 150, - "life-cycle-event-timeout-in-sec": 30 - } - ] - } - }, - "7b0d8": { - "full": { - "$schema": "http://json-schema.org/draft-07/schema#", - "title": "Logging Block", - "description": "Configuration of the logging for the environment.", - "type": "object", - "additionalProperties": false, - "required": ["file-name"], - "properties": { - "file-name": { - "$ref": "#/definitions/b8ec5/full" - }, - "logging-events": { - "type": "array", - "default": [ - "application-layer", - "bus", - "diagnostic", - "internal", - "statistic", - "system-variable", - "test" - ], - "items": { - "anyOf": [ - { - "type": "string", - "enum": [ - "application-layer", - "bus", - "diagnostic", - "internal", - "statistic", - "system-variable", - "test" - ] - } - ] - } - }, - "advanced": { - "$ref": "#/definitions/17c8c/full" - } - }, - "examples": [ - { - "file-name": "file-name.blf", - "logging-events": ["application-layer", "system-variable"], - "advanced": { - "warn-overwritten-log-file": true, - "show-error-on-data-loss": false - } - } - ] - } - }, - "9f6ed": { - "full": { - "$schema": "http://json-schema.org/draft-07/schema#", - "title": "System variables", - "description": "Absolute or relative path to an external file containing system variables. Relative path specifications are resolved relative to the defining configuration file.", - "type": "object", - "additionalProperties": false, - "required": ["file-path"], - "properties": { - "file-path": { - "anyOf": [ - { - "$ref": "#/definitions/94751/full" - }, - { - "type": "array", - "items": { - "$ref": "#/definitions/94751/full" - } - } - ] - } - }, - "examples": [ - { - "file-path": "path/to/my.vsysvar" - } - ] - } - }, - "59271": { - "full": { - "$schema": "http://json-schema.org/draft-07/schema#", - "anyOf": [ - { - "$ref": "#/definitions/1440f/full" - }, - { - "type": "array", - "items": { - "$ref": "#/definitions/1440f/full" - }, - "examples": [["path/to/my.vcdl"], ["path/to/my.vcodm"]] - } - ], - "examples": ["path/to/my.vcdl", ["path/to/my.vcodm"]] - } - }, - "07a14": { - "full": { - "$schema": "http://json-schema.org/draft-07/schema#", - "title": "User files", - "description": "Absolute or relative path to user files that can be read/written by CAPL/.NET Scripts. Relative path specifications are resolved relative to the defining configuration file.", - "type": "object", - "additionalProperties": false, - "required": ["file-path"], - "properties": { - "file-path": { - "anyOf": [ - { - "type": "string", - "examples": ["path/to/my.txt"] - }, - { - "type": "array", - "items": { - "type": "string" - }, - "examples": [["path/to/my.txt"]] - } - ] - } - }, - "examples": [ - { - "file-path": "path/to/my.txt" - }, - { - "file-path": "path/to/my_file.ini" - } - ] - } - }, - "9652c": { - "local": { - "stepsize-in-sec": { - "description": "Step size in seconds.", - "anyOf": [ - { - "type": "number", - "minimum": 0, - "maximum": 10000 - } - ], - "examples": [0, 0.0005, 10000] - }, - "debug-output": { - "description": "Is the debug output active.", - "anyOf": [ - { - "type": "boolean", - "default": false - } - ], - "examples": [false, true] - }, - "active-model-variables": { - "description": "List of the FMU variables which should be exported", - "type": "array", - "items": { - "anyOf": [ - { - "type": "string" - } - ], - "examples": ["Variable1"] - } - }, - "inactive-model-variables": { - "description": "List of the FMU variables which should be excluded from the export", - "type": "array", - "items": { - "anyOf": [ - { - "type": "string" - } - ], - "examples": ["Variable1"] - } - } - }, - "full": { - "$schema": "http://json-schema.org/draft-07/schema#", - "title": "Functional mockup unit", - "description": "Represents a functional mockup unit used in a scenario.", - "type": "object", - "anyOf": [ - { - "additionalProperties": false, - "required": ["file-path", "stepsize-in-sec"], - "properties": { - "file-path": { - "$ref": "#/definitions/503be/full" - }, - "stepsize-in-sec": { - "$ref": "#/definitions/9652c/local/stepsize-in-sec" - }, - "debug-output": { - "$ref": "#/definitions/9652c/local/debug-output" - } - } - }, - { - "additionalProperties": false, - "required": [ - "file-path", - "stepsize-in-sec", - "active-model-variables" - ], - "properties": { - "file-path": { - "$ref": "#/definitions/503be/full" - }, - "stepsize-in-sec": { - "$ref": "#/definitions/9652c/local/stepsize-in-sec" - }, - "debug-output": { - "$ref": "#/definitions/9652c/local/debug-output" - }, - "active-model-variables": { - "$ref": "#/definitions/9652c/local/active-model-variables" - } - } - }, - { - "additionalProperties": false, - "required": [ - "file-path", - "stepsize-in-sec", - "inactive-model-variables" - ], - "properties": { - "file-path": { - "$ref": "#/definitions/503be/full" - }, - "stepsize-in-sec": { - "$ref": "#/definitions/9652c/local/stepsize-in-sec" - }, - "debug-output": { - "$ref": "#/definitions/9652c/local/debug-output" - }, - "inactive-model-variables": { - "$ref": "#/definitions/9652c/local/inactive-model-variables" - } - } - } - ] - } - }, - "0a5c9": { - "full": { - "$schema": "http://json-schema.org/draft-07/schema#", - "description": "Absolute or relative path to a SIL Kit config file (.yaml or .json). Relative path specifications are resolved relative to the configuration file.", - "type": "string", - "anyOf": [ - { - "pattern": "^.*\\.[yY][aA][mM][lL]$" - }, - { - "pattern": "^.*\\.[jJ][sS][oO][nN]$" - } - ], - "examples": ["path/to/myConfigFile.json", "path/to/myConfigFile.yaml"] - } - }, - "17c8c": { - "full": { - "$schema": "http://json-schema.org/draft-07/schema#", - "description": "Advanced logging configurations.", - "type": "object", - "additionalProperties": false, - "properties": { - "warn-overwritten-log-file": { - "anyOf": [ - { - "type": "boolean" - } - ], - "default": true - }, - "show-error-on-data-loss": { - "anyOf": [ - { - "type": "boolean" - } - ], - "default": true - } - }, - "examples": [ - { - "warn-overwritten-log-file": false, - "show-error-on-data-loss": true - }, - { - "warn-overwritten-log-file": true - } - ] - } - }, - "94751": { - "full": { - "$schema": "http://json-schema.org/draft-07/schema#", - "description": "Absolute or relative path to a vsysvar file. Relative path specifications are resolved relative to the configuration file.", - "type": "string", - "anyOf": [ - { - "pattern": "^.*\\.[vV][sS][yY][sS][vV][aA][rR]$" - } - ], - "examples": ["path/to/my.vsysvar"] - } - }, - "1440f": { - "full": { - "$schema": "http://json-schema.org/draft-07/schema#", - "description": "Reference to external datasource files (.vcdl/.vcodm). Absolute or relative path. Relative path specifications are resolved relative to the defining configuration file.", - "type": "string", - "anyOf": [ - { - "pattern": "^.*\\.[vV][cC][dD][lL]$" - }, - { - "pattern": "^.*\\.[vV][cC][oO][dD][mM]$" - } - ], - "examples": ["path/to/my.vcdl", "path/to/my.vcodm"] - } - }, - "503be": { - "full": { - "$schema": "http://json-schema.org/draft-07/schema#", - "description": "Absolute or relative path to a source file of a functional mockup unit (.fmu). Relative path specifications are resolved relative to the defining configuration file.", - "type": "string", - "anyOf": [ - { - "pattern": "^.*\\.[Ff][Mm][Uu]$" - } - ], - "examples": ["my_functional_mockup_unit.fmu", "Inputs/MyFmu.FMU"] - } - } - } -} diff --git a/src/schemas/json/venvironment-basic-schema-v3.0.0.json b/src/schemas/json/venvironment-basic-schema-v3.0.0.json deleted file mode 100644 index caee9767f57..00000000000 --- a/src/schemas/json/venvironment-basic-schema-v3.0.0.json +++ /dev/null @@ -1,821 +0,0 @@ -{ - "$schema": "http://json-schema.org/draft-07/schema#", - "$id": "https://json.schemastore.org/venvironment-basic-schema-v3.0.0.json", - "$ref": "#/definitions/ba070/full", - "type": "object", - "title": "venvironment-basic schema", - "definitions": { - "ba070": { - "full": { - "$schema": "http://json-schema.org/draft-07/schema#", - "title": "venvironment-basic schema", - "type": "object", - "additionalProperties": false, - "required": ["version"], - "properties": { - "version": { - "$ref": "#/definitions/0b082/full" - }, - "datasources": { - "$ref": "#/definitions/dddd9/full" - }, - "functional-mockup-units": { - "$ref": "#/definitions/aa92d/full" - }, - "global-settings": { - "$ref": "#/definitions/dae99/full" - }, - "includes": { - "$ref": "#/definitions/8e88e/full" - }, - "logging": { - "$ref": "#/definitions/031ab/full" - }, - "sil-kit": { - "$ref": "#/definitions/647f7/full" - }, - "system-variables": { - "$ref": "#/definitions/4c5be/full" - }, - "user-files": { - "$ref": "#/definitions/00ea9/full" - } - } - } - }, - "dddd9": { - "full": { - "$schema": "http://json-schema.org/draft-07/schema#", - "title": "Datasources", - "description": "List of datasources.", - "type": "array", - "items": { - "$ref": "#/definitions/f6303/full" - }, - "examples": [ - [ - { - "file-path": "path/to/my.vcdl" - } - ] - ] - } - }, - "aa92d": { - "full": { - "$schema": "http://json-schema.org/draft-07/schema#", - "title": "Functional mockup units", - "description": "List of functional mockup units.", - "type": "array", - "items": { - "$ref": "#/definitions/5e57d/full" - }, - "examples": [ - [ - { - "file-path": "path/to/some.fmu", - "stepsize-in-sec": 1e-5 - } - ], - [ - { - "file-path": "path/to/some.fmu", - "stepsize-in-sec": 2.0, - "debug-output": true, - "inactive-model-variables": ["Variable3"] - } - ], - [ - { - "file-path": "path/to/some.fmu", - "stepsize-in-sec": 100.0, - "debug-output": false, - "active-model-variables": ["Variable1", "Variable2"] - } - ] - ] - } - }, - "dae99": { - "full": { - "$schema": "http://json-schema.org/draft-07/schema#", - "title": "Global Settings", - "description": "Global settings for all scenarios.", - "type": "object", - "additionalProperties": false, - "properties": { - "working-mode": { - "$ref": "#/definitions/d33e2/full" - } - }, - "examples": [ - { - "working-mode": { - "time-source": "internal-realtime" - } - }, - { - "working-mode": { - "time-source": "external-software" - } - } - ] - } - }, - "f6303": { - "full": { - "$schema": "http://json-schema.org/draft-07/schema#", - "title": "Datasources", - "description": "Defines datasources used by the application models (.vcdl/.vcodm).", - "type": "object", - "additionalProperties": false, - "required": ["file-path"], - "properties": { - "file-path": { - "$ref": "#/definitions/1b880/full" - } - }, - "examples": [ - { - "file-path": "path/to/my.vcdl" - } - ] - } - }, - "d33e2": { - "full": { - "$schema": "http://json-schema.org/draft-07/schema#", - "title": "Global settings for the simulation working mode.", - "description": "Global settings for the simulation working mode.", - "type": "object", - "additionalProperties": false, - "properties": { - "time-source": { - "description": "Time source for the simulation. Operate without hardware and simulate all buses completely. \nIf this property is set, \"default-network-mapping\" is also required. \n\"internal-realtime\": The time response of the measurement (time basis) is controlled internally. \n\"internal-scaled\": The simulation speed is provided through the property \"time-scaling-factor\". \n\"external-software\": The time response of the measurement (time basis) is controlled by an external program. \nThe property \"time-scaling-factor\" is mandatory if \"time-source\" is set to \"internal-scaled\" and is forbidden otherwise.", - "default": "internal-realtime", - "oneOf": [ - { - "enum": ["internal-realtime", "external-software"] - } - ], - "examples": ["internal-realtime", "external-software"] - } - }, - "examples": [ - { - "time-source": "internal-realtime" - }, - { - "time-source": "external-software" - } - ] - } - }, - "bd3f9": { - "full": { - "$schema": "http://json-schema.org/draft-07/schema#", - "description": "Name of a .blf file, supporting the field codes: {ComputerName}, {LocalTime}, {MeasurementIndex}, {MeasurementStart}, {IncSize|001|100MB}, {IncTime|001|01h00m}, {IncTrigger|001}, {TriggerCondition} and {IncTrigger|001}_{TriggerCondition}", - "type": "string", - "anyOf": [ - { - "pattern": "^(?!.*(\\{LoggingBlock\\}|\\{IncMeasurement\\}|\\{ConfigName\\}|[\"<>*?:/\\\\])).*\\.[bB][lL][fF]$" - } - ], - "examples": [ - "fileName.blf", - "log_{ComputerName}.blf", - "log_{LocalTime}.blf", - "log_{MeasurementIndex}.blf", - "log_{MeasurementStart}.blf", - "log_{IncTrigger|001}.blf", - "log_{TriggerCondition}.blf" - ] - } - }, - "a63a9": { - "full": { - "$schema": "http://json-schema.org/draft-07/schema#", - "description": "Absolute or relative path to a SIL Kit config file (.yaml/.json). Relative path specifications are resolved relative to the configuration file.", - "type": "string", - "anyOf": [ - { - "pattern": "^.*\\.[yY][aA][mM][lL]$" - }, - { - "pattern": "^.*\\.[jJ][sS][oO][nN]$" - } - ], - "examples": ["path/to/myConfigFile.json", "path/to/myConfigFile.yaml"] - } - }, - "f05e7": { - "full": { - "$schema": "http://json-schema.org/draft-07/schema#", - "title": "User files", - "description": "Describes a user file that can be read/written by CAPL/.NET scripts.", - "type": "object", - "additionalProperties": false, - "required": ["file-path"], - "properties": { - "file-path": { - "description": "Absolute or relative path to a user file. Relative path specifications are resolved relative to the configuration file.", - "oneOf": [ - { - "type": "string", - "examples": ["path/to/my.txt"] - }, - { - "type": "array", - "items": { - "type": "string" - }, - "examples": [["path/to/my.txt"]] - } - ] - } - }, - "examples": [ - { - "file-path": "path/to/my.txt" - }, - { - "file-path": "path/to/my_file.ini" - } - ] - } - }, - "b8dca": { - "full": { - "$schema": "http://json-schema.org/draft-07/schema#", - "description": "Absolute or relative path to a functional mockup unit file (.fmu). Relative path specifications are resolved relative to the configuration file.", - "type": "string", - "anyOf": [ - { - "pattern": "^.*\\.[Ff][Mm][Uu]$" - } - ], - "examples": ["my_functional_mockup_unit.fmu", "Inputs/MyFmu.FMU"] - } - }, - "0b082": { - "full": { - "$schema": "http://json-schema.org/draft-07/schema#", - "title": "Version", - "description": "Schema version for the venvironment.yaml configuration file. Acceptance criteria: equal major version, less/equal minor and patch version.", - "const": "3.0.0", - "type": "string", - "examples": ["3.0.0"] - } - }, - "8e88e": { - "local": { - "one": { - "type": "string", - "pattern": "\\.([Yy][Aa]?[Mm][Ll]|[Jj][Ss][Oo][Nn])$" - } - }, - "full": { - "$schema": "http://json-schema.org/draft-07/schema#", - "title": "Include files", - "description": "Include a different file (similar to #include of the c preprocessor). The order of includes does not matter. Circular/multiple includes are resolved correctly.", - "oneOf": [ - { - "$ref": "#/definitions/8e88e/local/one" - }, - { - "type": "array", - "items": { - "$ref": "#/definitions/8e88e/local/one" - } - } - ], - "examples": [ - "my_include.yaml", - ["my_include.yml", "my_other_include.json"] - ] - } - }, - "031ab": { - "full": { - "$schema": "http://json-schema.org/draft-07/schema#", - "title": "Logging Block", - "description": "Configuration of the logging.", - "type": "object", - "additionalProperties": false, - "required": ["file-name"], - "properties": { - "file-name": { - "$ref": "#/definitions/bd3f9/full" - }, - "logging-events": { - "type": "array", - "description": "List of event types to be logged.", - "default": [ - "application-layer", - "bus", - "diagnostic", - "internal", - "statistic", - "system-variable", - "test" - ], - "items": { - "anyOf": [ - { - "type": "string", - "enum": [ - "application-layer", - "bus", - "diagnostic", - "internal", - "statistic", - "system-variable", - "test" - ] - } - ] - } - }, - "advanced": { - "$ref": "#/definitions/186fc/full" - }, - "test-trigger": { - "$ref": "#/definitions/51fe4/full" - } - }, - "examples": [ - { - "file-name": "log_{IncTrigger|001}.blf", - "test-trigger": { - "scope": "test-unit", - "verdict": ["fail", "error-in-test-system"], - "pre-trigger-time-ms": 1000, - "post-trigger-time-ms": 1000, - "buffer-size": 5000 - } - }, - { - "file-name": "log_{TriggerCondition}_{LocalTime}.blf" - } - ] - } - }, - "647f7": { - "full": { - "$schema": "http://json-schema.org/draft-07/schema#", - "title": "SIL Kit", - "description": "SIL Kit settings.", - "type": "object", - "additionalProperties": false, - "required": ["participant-name"], - "properties": { - "registry-uri": { - "description": "The URI of the registry.", - "type": "string", - "anyOf": [ - { - "pattern": "^[^:]+://[^:/]+(:[0-9]+)?(/[^?#/]+)*(\\?([^=#&]+=[^=#&]+)(&([^=#&]+=[^=#&]+))*)?(#.+)?", - "default": "silkit://localhost:8500" - } - ], - "examples": ["silkit://localhost:8500"] - }, - "participant-name": { - "description": "Name used by the simulation tool to join a simulation as a participant at the start of a measurement.", - "anyOf": [ - { - "type": "string" - } - ], - "examples": ["CANoe4SW-SE"] - }, - "config-file-path": { - "$ref": "#/definitions/a63a9/full" - }, - "simulation-step-in-micro-sec": { - "description": "Time length of a single simulation step. Valid only when \"time-source\" is set to \"external-software\".", - "oneOf": [ - { - "type": "integer", - "minimum": 0, - "maximum": 9223372036854775, - "default": 100 - } - ] - }, - "life-cycle-event-timeout-in-sec": { - "description": "Maximum waiting time for the other simulation participants. Valid only when \"time-source\" is set to \"external-software\".", - "oneOf": [ - { - "type": "integer", - "minimum": 0, - "maximum": 9223372036, - "default": 30 - } - ] - } - }, - "examples": [ - { - "participant-name": "CANoe4SW-SE" - }, - { - "registry-uri": "silkit://localhost:8500", - "participant-name": "CANoe4SW-SE", - "config-file-path": "path/to/config-file.json" - }, - { - "registry-uri": "silkit://localhost:8500", - "participant-name": "CANoe4SW-SE", - "config-file-path": "path/to/config-file.json", - "simulation-step-in-micro-sec": 150 - }, - { - "registry-uri": "silkit://localhost:8500", - "participant-name": "CANoe4SW-SE", - "config-file-path": "path/to/config-file.json", - "simulation-step-in-micro-sec": 150, - "life-cycle-event-timeout-in-sec": 30 - } - ] - } - }, - "4c5be": { - "full": { - "$schema": "http://json-schema.org/draft-07/schema#", - "title": "System Variables", - "description": "A list of system variable files.", - "type": "array", - "items": { - "$ref": "#/definitions/4839f/full" - }, - "examples": [ - [ - { - "file-path": "path/to/my.vsysvar" - } - ] - ] - } - }, - "00ea9": { - "full": { - "$schema": "http://json-schema.org/draft-07/schema#", - "title": "User Files", - "description": "List of user files.", - "type": "array", - "items": { - "$ref": "#/definitions/f05e7/full" - }, - "examples": [ - [ - { - "file-path": "path/to/my.txt" - } - ] - ] - } - }, - "5e57d": { - "local": { - "stepsize-in-sec": { - "description": "Step size in seconds.", - "oneOf": [ - { - "type": "number", - "exclusiveMinimum": 0, - "maximum": 10000, - "multipleOf": 1e-5 - } - ], - "examples": [1e-5, 2, 10000] - }, - "debug-output": { - "description": "Is the debug output active.", - "oneOf": [ - { - "type": "boolean", - "default": false - } - ], - "examples": [false, true] - }, - "active-model-variables": { - "description": "List of the FMU variables which should be exported", - "type": "array", - "items": { - "anyOf": [ - { - "type": "string" - } - ], - "examples": ["Variable1"] - } - }, - "inactive-model-variables": { - "description": "List of the FMU variables which should be excluded from the export", - "type": "array", - "items": { - "anyOf": [ - { - "type": "string" - } - ], - "examples": ["Variable1"] - } - } - }, - "full": { - "$schema": "http://json-schema.org/draft-07/schema#", - "title": "Functional mockup unit", - "description": "Defines a functional mockup unit (.fmu). By default, all the fmu variables are activated.", - "type": "object", - "oneOf": [ - { - "additionalProperties": false, - "required": ["file-path", "stepsize-in-sec"], - "properties": { - "file-path": { - "$ref": "#/definitions/b8dca/full" - }, - "stepsize-in-sec": { - "$ref": "#/definitions/5e57d/local/stepsize-in-sec" - }, - "debug-output": { - "$ref": "#/definitions/5e57d/local/debug-output" - } - } - }, - { - "additionalProperties": false, - "required": [ - "file-path", - "stepsize-in-sec", - "active-model-variables" - ], - "properties": { - "file-path": { - "$ref": "#/definitions/b8dca/full" - }, - "stepsize-in-sec": { - "$ref": "#/definitions/5e57d/local/stepsize-in-sec" - }, - "debug-output": { - "$ref": "#/definitions/5e57d/local/debug-output" - }, - "active-model-variables": { - "$ref": "#/definitions/5e57d/local/active-model-variables" - } - } - }, - { - "additionalProperties": false, - "required": [ - "file-path", - "stepsize-in-sec", - "inactive-model-variables" - ], - "properties": { - "file-path": { - "$ref": "#/definitions/b8dca/full" - }, - "stepsize-in-sec": { - "$ref": "#/definitions/5e57d/local/stepsize-in-sec" - }, - "debug-output": { - "$ref": "#/definitions/5e57d/local/debug-output" - }, - "inactive-model-variables": { - "$ref": "#/definitions/5e57d/local/inactive-model-variables" - } - } - } - ] - } - }, - "186fc": { - "full": { - "$schema": "http://json-schema.org/draft-07/schema#", - "description": "Advanced logging configurations.", - "type": "object", - "additionalProperties": false, - "properties": { - "warn-overwritten-log-file": { - "description": "Specifies whether a warning is shown at the start of measurement before overwriting an existing logging file.", - "oneOf": [ - { - "type": "boolean" - } - ], - "default": true - }, - "show-error-on-data-loss": { - "description": "Specifies whether an error is shown after the measurement if data loss occurred during the measurement. Lines in the logging file marked with a * as a special symbol have corrupted lines around them.", - "oneOf": [ - { - "type": "boolean" - } - ], - "default": true - } - }, - "examples": [ - { - "warn-overwritten-log-file": false, - "show-error-on-data-loss": true - }, - { - "warn-overwritten-log-file": true - } - ] - } - }, - "51fe4": { - "full": { - "$schema": "http://json-schema.org/draft-07/schema#", - "description": "Test trigger settings. The execution period of test elements controls the start and stop of logging.", - "type": "object", - "required": ["scope"], - "additionalProperties": false, - "properties": { - "scope": { - "description": "Scope of the test trigger, for each a logging file is created.", - "oneOf": [ - { - "enum": ["test-unit", "test-implementation-entity", "test-case"] - } - ], - "examples": ["test-unit", "test-implementation-entity", "test-case"] - }, - "verdict": { - "type": "array", - "description": "List of test verdicts for which logging files will remain stored.", - "default": [ - "none", - "pass", - "inconclusive", - "fail", - "error-in-test-system" - ], - "items": { - "anyOf": [ - { - "type": "string", - "enum": [ - "none", - "pass", - "inconclusive", - "fail", - "error-in-test-system" - ] - } - ] - }, - "examples": [ - ["none"], - ["pass"], - ["inconclusive"], - ["fail"], - ["error-in-test-system"] - ] - }, - "pre-trigger-time-ms": { - "description": "Time before triggering that should also be logged.", - "oneOf": [ - { - "type": "integer", - "minimum": 0, - "maximum": 21000000, - "default": 0 - } - ] - }, - "post-trigger-time-ms": { - "description": "Time after the triggered stopped that should also be logged.", - "oneOf": [ - { - "type": "integer", - "minimum": 0, - "maximum": 21000000, - "default": 0 - } - ] - }, - "buffer-size": { - "description": "Event buffer size for events pre-trigger-time-ms", - "oneOf": [ - { - "type": "integer", - "minimum": 1, - "maximum": 2097152, - "default": 5000 - } - ] - } - }, - "examples": [ - { - "scope": "test-unit", - "verdict": [ - "none", - "pass", - "inconclusive", - "fail", - "error-in-test-system" - ] - }, - { - "scope": "test-unit", - "verdict": ["fail", "error-in-test-system"], - "pre-trigger-time-ms": 1000, - "post-trigger-time-ms": 1000, - "buffer-size": 5000 - } - ] - } - }, - "4839f": { - "full": { - "$schema": "http://json-schema.org/draft-07/schema#", - "title": "System variables", - "description": "Describes a system variable file (.vsysvar/.xml).", - "type": "object", - "additionalProperties": false, - "required": ["file-path"], - "properties": { - "file-path": { - "oneOf": [ - { - "$ref": "#/definitions/13681/full" - }, - { - "type": "array", - "items": { - "$ref": "#/definitions/13681/full" - } - } - ] - } - }, - "examples": [ - { - "file-path": "path/to/my.vsysvar" - }, - { - "file-path": "path/to/my.xml" - } - ] - } - }, - "1b880": { - "full": { - "$schema": "http://json-schema.org/draft-07/schema#", - "oneOf": [ - { - "$ref": "#/definitions/196f6/full" - }, - { - "type": "array", - "items": { - "$ref": "#/definitions/196f6/full" - }, - "examples": [["path/to/my.vcdl"], ["path/to/my.vcodm"]] - } - ], - "examples": ["path/to/my.vcdl", ["path/to/my.vcodm"]] - } - }, - "13681": { - "full": { - "$schema": "http://json-schema.org/draft-07/schema#", - "description": "Absolute or relative path to a system variable file (.vsysvar/.xml). Relative path specifications are resolved relative to the configuration file.", - "type": "string", - "anyOf": [ - { - "pattern": "^.*\\.[vV][sS][yY][sS][vV][aA][rR]$" - }, - { - "pattern": "^.*\\.[xX][mM][lL]$" - } - ], - "examples": ["path/to/my.vsysvar", "path/to/my.xml"] - } - }, - "196f6": { - "full": { - "$schema": "http://json-schema.org/draft-07/schema#", - "description": "Absolute or relative path to a datasource file (.vcdl/.vcodm). Relative path specifications are resolved relative to the configuration file.", - "type": "string", - "anyOf": [ - { - "pattern": "^.*\\.[vV][cC][dD][lL]$" - }, - { - "pattern": "^.*\\.[vV][cC][oO][dD][mM]$" - } - ], - "examples": ["path/to/my.vcdl", "path/to/my.vcodm"] - } - } - } -} diff --git a/src/schemas/json/venvironment-basic-schema-v3.2.0.json b/src/schemas/json/venvironment-basic-schema-v3.2.0.json deleted file mode 100644 index 98d1c3aa887..00000000000 --- a/src/schemas/json/venvironment-basic-schema-v3.2.0.json +++ /dev/null @@ -1,885 +0,0 @@ -{ - "$schema": "http://json-schema.org/draft-07/schema#", - "$id": "https://json.schemastore.org/venvironment-basic-schema-v3.2.0.json", - "$ref": "#/definitions/b5051/full", - "type": "object", - "title": "venvironment-basic schema", - "definitions": { - "b5051": { - "full": { - "$schema": "http://json-schema.org/draft-07/schema#", - "title": "venvironment-basic schema", - "type": "object", - "additionalProperties": false, - "required": ["version"], - "properties": { - "version": { - "$ref": "#/definitions/3316c/full" - }, - "datasources": { - "$ref": "#/definitions/dddd9/full" - }, - "functional-mockup-units": { - "$ref": "#/definitions/aa92d/full" - }, - "global-settings": { - "$ref": "#/definitions/52870/full" - }, - "includes": { - "$ref": "#/definitions/8e88e/full" - }, - "logging": { - "$ref": "#/definitions/031ab/full" - }, - "sil-kit": { - "$ref": "#/definitions/647f7/full" - }, - "symbol-mappings": { - "$ref": "#/definitions/d86e6/full" - }, - "system-variables": { - "$ref": "#/definitions/4c5be/full" - }, - "user-files": { - "$ref": "#/definitions/00ea9/full" - } - } - } - }, - "dddd9": { - "full": { - "$schema": "http://json-schema.org/draft-07/schema#", - "title": "Datasources", - "description": "List of datasources.", - "type": "array", - "items": { - "$ref": "#/definitions/f6303/full" - }, - "examples": [ - [ - { - "file-path": "path/to/my.vcdl" - } - ] - ] - } - }, - "aa92d": { - "full": { - "$schema": "http://json-schema.org/draft-07/schema#", - "title": "Functional mockup units", - "description": "List of functional mockup units.", - "type": "array", - "items": { - "$ref": "#/definitions/5e57d/full" - }, - "examples": [ - [ - { - "file-path": "path/to/some.fmu", - "stepsize-in-sec": 1e-5 - } - ], - [ - { - "file-path": "path/to/some.fmu", - "stepsize-in-sec": 2.0, - "debug-output": true, - "inactive-model-variables": ["Variable3"] - } - ], - [ - { - "file-path": "path/to/some.fmu", - "stepsize-in-sec": 100.0, - "debug-output": false, - "active-model-variables": ["Variable1", "Variable2"] - } - ] - ] - } - }, - "d86e6": { - "full": { - "$schema": "http://json-schema.org/draft-07/schema#", - "title": "Symbol mappings", - "description": "List of symbol mapping files. Please ensure that the mappings are valid for the environment. No symbol validation will be performed.", - "type": "array", - "items": { - "$ref": "#/definitions/c4c02/full" - }, - "examples": [ - [ - { - "file-path": "path/to/my.vmap" - } - ] - ] - } - }, - "f6303": { - "full": { - "$schema": "http://json-schema.org/draft-07/schema#", - "title": "Datasources", - "description": "Defines datasources used by the application models (.vcdl/.vcodm).", - "type": "object", - "additionalProperties": false, - "required": ["file-path"], - "properties": { - "file-path": { - "$ref": "#/definitions/1b880/full" - } - }, - "examples": [ - { - "file-path": "path/to/my.vcdl" - } - ] - } - }, - "bd3f9": { - "full": { - "$schema": "http://json-schema.org/draft-07/schema#", - "description": "Name of a .blf file, supporting the field codes: {ComputerName}, {LocalTime}, {MeasurementIndex}, {MeasurementStart}, {IncSize|001|100MB}, {IncTime|001|01h00m}, {IncTrigger|001}, {TriggerCondition} and {IncTrigger|001}_{TriggerCondition}", - "type": "string", - "anyOf": [ - { - "pattern": "^(?!.*(\\{LoggingBlock\\}|\\{IncMeasurement\\}|\\{ConfigName\\}|[\"<>*?:/\\\\])).*\\.[bB][lL][fF]$" - } - ], - "examples": [ - "fileName.blf", - "log_{ComputerName}.blf", - "log_{LocalTime}.blf", - "log_{MeasurementIndex}.blf", - "log_{MeasurementStart}.blf", - "log_{IncTrigger|001}.blf", - "log_{TriggerCondition}.blf" - ] - } - }, - "a63a9": { - "full": { - "$schema": "http://json-schema.org/draft-07/schema#", - "description": "Absolute or relative path to a SIL Kit config file (.yaml/.json). Relative path specifications are resolved relative to the configuration file.", - "type": "string", - "anyOf": [ - { - "pattern": "^.*\\.[yY][aA][mM][lL]$" - }, - { - "pattern": "^.*\\.[jJ][sS][oO][nN]$" - } - ], - "examples": ["path/to/myConfigFile.json", "path/to/myConfigFile.yaml"] - } - }, - "c4c02": { - "full": { - "$schema": "http://json-schema.org/draft-07/schema#", - "title": "System variables", - "description": "Describes a symbol mapping file (.vmap). Please ensure that the mappings are valid for the environment. No symbol validation will be performed.", - "type": "object", - "additionalProperties": false, - "required": ["file-path"], - "properties": { - "file-path": { - "oneOf": [ - { - "$ref": "#/definitions/15ac2/full" - }, - { - "type": "array", - "items": { - "$ref": "#/definitions/15ac2/full" - } - } - ] - } - }, - "examples": [ - { - "file-path": "path/to/my.vmap" - } - ] - } - }, - "f05e7": { - "full": { - "$schema": "http://json-schema.org/draft-07/schema#", - "title": "User files", - "description": "Describes a user file that can be read/written by CAPL/.NET scripts.", - "type": "object", - "additionalProperties": false, - "required": ["file-path"], - "properties": { - "file-path": { - "description": "Absolute or relative path to a user file. Relative path specifications are resolved relative to the configuration file.", - "oneOf": [ - { - "type": "string", - "examples": ["path/to/my.txt"] - }, - { - "type": "array", - "items": { - "type": "string" - }, - "examples": [["path/to/my.txt"]] - } - ] - } - }, - "examples": [ - { - "file-path": "path/to/my.txt" - }, - { - "file-path": "path/to/my_file.ini" - } - ] - } - }, - "b8dca": { - "full": { - "$schema": "http://json-schema.org/draft-07/schema#", - "description": "Absolute or relative path to a functional mockup unit file (.fmu). Relative path specifications are resolved relative to the configuration file.", - "type": "string", - "anyOf": [ - { - "pattern": "^.*\\.[Ff][Mm][Uu]$" - } - ], - "examples": ["my_functional_mockup_unit.fmu", "Inputs/MyFmu.FMU"] - } - }, - "3316c": { - "full": { - "$schema": "http://json-schema.org/draft-07/schema#", - "title": "Version", - "description": "Schema version for the venvironment.yaml configuration file. Acceptance criteria: equal major version, less/equal minor and patch version.", - "const": "3.2.0", - "type": "string", - "examples": ["3.2.0"] - } - }, - "52870": { - "full": { - "$schema": "http://json-schema.org/draft-07/schema#", - "title": "Global Settings", - "description": "Global settings for all scenarios.", - "type": "object", - "additionalProperties": false, - "properties": { - "working-mode": { - "$ref": "#/definitions/99f4b/full" - } - }, - "examples": [ - { - "working-mode": { - "time-source": "internal-realtime" - } - }, - { - "working-mode": { - "time-source": "external-software" - } - } - ] - } - }, - "8e88e": { - "local": { - "one": { - "type": "string", - "pattern": "\\.([Yy][Aa]?[Mm][Ll]|[Jj][Ss][Oo][Nn])$" - } - }, - "full": { - "$schema": "http://json-schema.org/draft-07/schema#", - "title": "Include files", - "description": "Include a different file (similar to #include of the c preprocessor). The order of includes does not matter. Circular/multiple includes are resolved correctly.", - "oneOf": [ - { - "$ref": "#/definitions/8e88e/local/one" - }, - { - "type": "array", - "items": { - "$ref": "#/definitions/8e88e/local/one" - } - } - ], - "examples": [ - "my_include.yaml", - ["my_include.yml", "my_other_include.json"] - ] - } - }, - "031ab": { - "full": { - "$schema": "http://json-schema.org/draft-07/schema#", - "title": "Logging Block", - "description": "Configuration of the logging.", - "type": "object", - "additionalProperties": false, - "required": ["file-name"], - "properties": { - "file-name": { - "$ref": "#/definitions/bd3f9/full" - }, - "logging-events": { - "type": "array", - "description": "List of event types to be logged.", - "default": [ - "application-layer", - "bus", - "diagnostic", - "internal", - "statistic", - "system-variable", - "test" - ], - "items": { - "anyOf": [ - { - "type": "string", - "enum": [ - "application-layer", - "bus", - "diagnostic", - "internal", - "statistic", - "system-variable", - "test" - ] - } - ] - } - }, - "advanced": { - "$ref": "#/definitions/186fc/full" - }, - "test-trigger": { - "$ref": "#/definitions/51fe4/full" - } - }, - "examples": [ - { - "file-name": "log_{IncTrigger|001}.blf", - "test-trigger": { - "scope": "test-unit", - "verdict": ["fail", "error-in-test-system"], - "pre-trigger-time-ms": 1000, - "post-trigger-time-ms": 1000, - "buffer-size": 5000 - } - }, - { - "file-name": "log_{TriggerCondition}_{LocalTime}.blf" - } - ] - } - }, - "647f7": { - "full": { - "$schema": "http://json-schema.org/draft-07/schema#", - "title": "SIL Kit", - "description": "SIL Kit settings.", - "type": "object", - "additionalProperties": false, - "required": ["participant-name"], - "properties": { - "registry-uri": { - "description": "The URI of the registry.", - "type": "string", - "anyOf": [ - { - "pattern": "^[^:]+://[^:/]+(:[0-9]+)?(/[^?#/]+)*(\\?([^=#&]+=[^=#&]+)(&([^=#&]+=[^=#&]+))*)?(#.+)?", - "default": "silkit://localhost:8500" - } - ], - "examples": ["silkit://localhost:8500"] - }, - "participant-name": { - "description": "Name used by the simulation tool to join a simulation as a participant at the start of a measurement.", - "anyOf": [ - { - "type": "string" - } - ], - "examples": ["CANoe4SW-SE"] - }, - "config-file-path": { - "$ref": "#/definitions/a63a9/full" - }, - "simulation-step-in-micro-sec": { - "description": "Time length of a single simulation step. Valid only when \"time-source\" is set to \"external-software\".", - "oneOf": [ - { - "type": "integer", - "minimum": 0, - "maximum": 9223372036854775, - "default": 100 - } - ] - }, - "life-cycle-event-timeout-in-sec": { - "description": "Maximum waiting time for the other simulation participants. Valid only when \"time-source\" is set to \"external-software\".", - "oneOf": [ - { - "type": "integer", - "minimum": 0, - "maximum": 9223372036, - "default": 30 - } - ] - } - }, - "examples": [ - { - "participant-name": "CANoe4SW-SE" - }, - { - "registry-uri": "silkit://localhost:8500", - "participant-name": "CANoe4SW-SE", - "config-file-path": "path/to/config-file.json" - }, - { - "registry-uri": "silkit://localhost:8500", - "participant-name": "CANoe4SW-SE", - "config-file-path": "path/to/config-file.json", - "simulation-step-in-micro-sec": 150 - }, - { - "registry-uri": "silkit://localhost:8500", - "participant-name": "CANoe4SW-SE", - "config-file-path": "path/to/config-file.json", - "simulation-step-in-micro-sec": 150, - "life-cycle-event-timeout-in-sec": 30 - } - ] - } - }, - "4c5be": { - "full": { - "$schema": "http://json-schema.org/draft-07/schema#", - "title": "System Variables", - "description": "A list of system variable files.", - "type": "array", - "items": { - "$ref": "#/definitions/4839f/full" - }, - "examples": [ - [ - { - "file-path": "path/to/my.vsysvar" - } - ] - ] - } - }, - "00ea9": { - "full": { - "$schema": "http://json-schema.org/draft-07/schema#", - "title": "User Files", - "description": "List of user files.", - "type": "array", - "items": { - "$ref": "#/definitions/f05e7/full" - }, - "examples": [ - [ - { - "file-path": "path/to/my.txt" - } - ] - ] - } - }, - "5e57d": { - "local": { - "stepsize-in-sec": { - "description": "Step size in seconds.", - "oneOf": [ - { - "type": "number", - "exclusiveMinimum": 0, - "maximum": 10000, - "multipleOf": 1e-5 - } - ], - "examples": [1e-5, 2, 10000] - }, - "debug-output": { - "description": "Is the debug output active.", - "oneOf": [ - { - "type": "boolean", - "default": false - } - ], - "examples": [false, true] - }, - "active-model-variables": { - "description": "List of the FMU variables which should be exported", - "type": "array", - "items": { - "anyOf": [ - { - "type": "string" - } - ], - "examples": ["Variable1"] - } - }, - "inactive-model-variables": { - "description": "List of the FMU variables which should be excluded from the export", - "type": "array", - "items": { - "anyOf": [ - { - "type": "string" - } - ], - "examples": ["Variable1"] - } - } - }, - "full": { - "$schema": "http://json-schema.org/draft-07/schema#", - "title": "Functional mockup unit", - "description": "Defines a functional mockup unit (.fmu). By default, all the fmu variables are activated.", - "type": "object", - "oneOf": [ - { - "additionalProperties": false, - "required": ["file-path", "stepsize-in-sec"], - "properties": { - "file-path": { - "$ref": "#/definitions/b8dca/full" - }, - "stepsize-in-sec": { - "$ref": "#/definitions/5e57d/local/stepsize-in-sec" - }, - "debug-output": { - "$ref": "#/definitions/5e57d/local/debug-output" - } - } - }, - { - "additionalProperties": false, - "required": [ - "file-path", - "stepsize-in-sec", - "active-model-variables" - ], - "properties": { - "file-path": { - "$ref": "#/definitions/b8dca/full" - }, - "stepsize-in-sec": { - "$ref": "#/definitions/5e57d/local/stepsize-in-sec" - }, - "debug-output": { - "$ref": "#/definitions/5e57d/local/debug-output" - }, - "active-model-variables": { - "$ref": "#/definitions/5e57d/local/active-model-variables" - } - } - }, - { - "additionalProperties": false, - "required": [ - "file-path", - "stepsize-in-sec", - "inactive-model-variables" - ], - "properties": { - "file-path": { - "$ref": "#/definitions/b8dca/full" - }, - "stepsize-in-sec": { - "$ref": "#/definitions/5e57d/local/stepsize-in-sec" - }, - "debug-output": { - "$ref": "#/definitions/5e57d/local/debug-output" - }, - "inactive-model-variables": { - "$ref": "#/definitions/5e57d/local/inactive-model-variables" - } - } - } - ] - } - }, - "99f4b": { - "full": { - "$schema": "http://json-schema.org/draft-07/schema#", - "title": "Global settings for the simulation working mode.", - "description": "Global settings for the simulation working mode.", - "type": "object", - "additionalProperties": false, - "properties": { - "time-source": { - "description": "Time source for the simulation. \n\"internal-realtime\": The time response of the measurement (time basis) is controlled internally. \n\"external-software\": The time response of the measurement (time basis) is controlled by an external program.", - "default": "internal-realtime", - "oneOf": [ - { - "enum": ["internal-realtime", "external-software"] - } - ], - "examples": ["internal-realtime", "external-software"] - } - }, - "examples": [ - { - "time-source": "internal-realtime" - }, - { - "time-source": "external-software" - } - ] - } - }, - "186fc": { - "full": { - "$schema": "http://json-schema.org/draft-07/schema#", - "description": "Advanced logging configurations.", - "type": "object", - "additionalProperties": false, - "properties": { - "warn-overwritten-log-file": { - "description": "Specifies whether a warning is shown at the start of measurement before overwriting an existing logging file.", - "oneOf": [ - { - "type": "boolean" - } - ], - "default": true - }, - "show-error-on-data-loss": { - "description": "Specifies whether an error is shown after the measurement if data loss occurred during the measurement. Lines in the logging file marked with a * as a special symbol have corrupted lines around them.", - "oneOf": [ - { - "type": "boolean" - } - ], - "default": true - } - }, - "examples": [ - { - "warn-overwritten-log-file": false, - "show-error-on-data-loss": true - }, - { - "warn-overwritten-log-file": true - } - ] - } - }, - "51fe4": { - "full": { - "$schema": "http://json-schema.org/draft-07/schema#", - "description": "Test trigger settings. The execution period of test elements controls the start and stop of logging.", - "type": "object", - "required": ["scope"], - "additionalProperties": false, - "properties": { - "scope": { - "description": "Scope of the test trigger, for each a logging file is created.", - "oneOf": [ - { - "enum": ["test-unit", "test-implementation-entity", "test-case"] - } - ], - "examples": ["test-unit", "test-implementation-entity", "test-case"] - }, - "verdict": { - "type": "array", - "description": "List of test verdicts for which logging files will remain stored.", - "default": [ - "none", - "pass", - "inconclusive", - "fail", - "error-in-test-system" - ], - "items": { - "anyOf": [ - { - "type": "string", - "enum": [ - "none", - "pass", - "inconclusive", - "fail", - "error-in-test-system" - ] - } - ] - }, - "examples": [ - ["none"], - ["pass"], - ["inconclusive"], - ["fail"], - ["error-in-test-system"] - ] - }, - "pre-trigger-time-ms": { - "description": "Time before triggering that should also be logged.", - "oneOf": [ - { - "type": "integer", - "minimum": 0, - "maximum": 21000000, - "default": 0 - } - ] - }, - "post-trigger-time-ms": { - "description": "Time after the triggered stopped that should also be logged.", - "oneOf": [ - { - "type": "integer", - "minimum": 0, - "maximum": 21000000, - "default": 0 - } - ] - }, - "buffer-size": { - "description": "Event buffer size for events pre-trigger-time-ms", - "oneOf": [ - { - "type": "integer", - "minimum": 1, - "maximum": 2097152, - "default": 5000 - } - ] - } - }, - "examples": [ - { - "scope": "test-unit", - "verdict": [ - "none", - "pass", - "inconclusive", - "fail", - "error-in-test-system" - ] - }, - { - "scope": "test-unit", - "verdict": ["fail", "error-in-test-system"], - "pre-trigger-time-ms": 1000, - "post-trigger-time-ms": 1000, - "buffer-size": 5000 - } - ] - } - }, - "4839f": { - "full": { - "$schema": "http://json-schema.org/draft-07/schema#", - "title": "System variables", - "description": "Describes a system variable file (.vsysvar/.xml).", - "type": "object", - "additionalProperties": false, - "required": ["file-path"], - "properties": { - "file-path": { - "oneOf": [ - { - "$ref": "#/definitions/13681/full" - }, - { - "type": "array", - "items": { - "$ref": "#/definitions/13681/full" - } - } - ] - } - }, - "examples": [ - { - "file-path": "path/to/my.vsysvar" - }, - { - "file-path": "path/to/my.xml" - } - ] - } - }, - "1b880": { - "full": { - "$schema": "http://json-schema.org/draft-07/schema#", - "oneOf": [ - { - "$ref": "#/definitions/196f6/full" - }, - { - "type": "array", - "items": { - "$ref": "#/definitions/196f6/full" - }, - "examples": [["path/to/my.vcdl"], ["path/to/my.vcodm"]] - } - ], - "examples": ["path/to/my.vcdl", ["path/to/my.vcodm"]] - } - }, - "15ac2": { - "full": { - "$schema": "http://json-schema.org/draft-07/schema#", - "description": "Absolute or relative path to a symbol mapping file (.vmap). Relative path specifications are resolved relative to the configuration file.", - "type": "string", - "anyOf": [ - { - "pattern": "^.*\\.[vV][mM][aA][pP]$" - } - ], - "examples": ["path/to/my.vmap"] - } - }, - "13681": { - "full": { - "$schema": "http://json-schema.org/draft-07/schema#", - "description": "Absolute or relative path to a system variable file (.vsysvar/.xml). Relative path specifications are resolved relative to the configuration file.", - "type": "string", - "anyOf": [ - { - "pattern": "^.*\\.[vV][sS][yY][sS][vV][aA][rR]$" - }, - { - "pattern": "^.*\\.[xX][mM][lL]$" - } - ], - "examples": ["path/to/my.vsysvar", "path/to/my.xml"] - } - }, - "196f6": { - "full": { - "$schema": "http://json-schema.org/draft-07/schema#", - "description": "Absolute or relative path to a datasource file (.vcdl/.vcodm). Relative path specifications are resolved relative to the configuration file.", - "type": "string", - "anyOf": [ - { - "pattern": "^.*\\.[vV][cC][dD][lL]$" - }, - { - "pattern": "^.*\\.[vV][cC][oO][dD][mM]$" - } - ], - "examples": ["path/to/my.vcdl", "path/to/my.vcodm"] - } - } - } -} diff --git a/src/schemas/json/venvironment-basic-schema-v4.0.0.json b/src/schemas/json/venvironment-basic-schema-v4.0.0.json deleted file mode 100644 index 9b713d9328e..00000000000 --- a/src/schemas/json/venvironment-basic-schema-v4.0.0.json +++ /dev/null @@ -1,1076 +0,0 @@ -{ - "$schema": "http://json-schema.org/draft-07/schema#", - "$id": "https://json.schemastore.org/venvironment-basic-schema-v4.0.0.json", - "$ref": "#/definitions/85afc/full", - "type": "object", - "title": "venvironment-basic schema", - "definitions": { - "dddd9": { - "full": { - "$schema": "http://json-schema.org/draft-07/schema#", - "title": "Datasources", - "description": "List of datasources.", - "type": "array", - "items": { - "$ref": "#/definitions/f6303/full" - }, - "examples": [ - [ - { - "file-path": "path/to/my.vcdl" - } - ] - ] - } - }, - "d86e6": { - "full": { - "$schema": "http://json-schema.org/draft-07/schema#", - "title": "Symbol mappings", - "description": "List of symbol mapping files. Please ensure that the mappings are valid for the environment. No symbol validation will be performed.", - "type": "array", - "items": { - "$ref": "#/definitions/c4c02/full" - }, - "examples": [ - [ - { - "file-path": "path/to/my.vmap" - } - ] - ] - } - }, - "f8f25": { - "full": { - "$schema": "http://json-schema.org/draft-07/schema#", - "title": "VT System", - "description": "VT System settings.", - "type": "object", - "additionalProperties": false, - "required": ["file-path", "module-description-folder"], - "properties": { - "file-path": { - "$ref": "#/definitions/a7855/full" - }, - "module-description-folder": { - "description": "Absolute or relative path to the folder containing the VT System module description files. Relative path specifications are resolved relative to the configuration file.", - "anyOf": [ - { - "type": "string" - } - ], - "examples": ["path/to/folder/"] - } - }, - "examples": [ - { - "file-path": "path/to/config-file.vtcfg", - "module-description-folder": "path/to/moduledescriptions/" - } - ] - } - }, - "f6303": { - "full": { - "$schema": "http://json-schema.org/draft-07/schema#", - "title": "Datasources", - "description": "Defines datasources used by the application models (.vcdl/.vcodm).", - "type": "object", - "additionalProperties": false, - "required": ["file-path"], - "properties": { - "file-path": { - "$ref": "#/definitions/1b880/full" - } - }, - "examples": [ - { - "file-path": "path/to/my.vcdl" - } - ] - } - }, - "bd3f9": { - "full": { - "$schema": "http://json-schema.org/draft-07/schema#", - "description": "Name of a .blf file, supporting the field codes: {ComputerName}, {LocalTime}, {MeasurementIndex}, {MeasurementStart}, {IncSize|001|100MB}, {IncTime|001|01h00m}, {IncTrigger|001}, {TriggerCondition} and {IncTrigger|001}_{TriggerCondition}", - "type": "string", - "anyOf": [ - { - "pattern": "^(?!.*(\\{LoggingBlock\\}|\\{IncMeasurement\\}|\\{ConfigName\\}|[\"<>*?:/\\\\])).*\\.[bB][lL][fF]$" - } - ], - "examples": [ - "fileName.blf", - "log_{ComputerName}.blf", - "log_{LocalTime}.blf", - "log_{MeasurementIndex}.blf", - "log_{MeasurementStart}.blf", - "log_{IncTrigger|001}.blf", - "log_{TriggerCondition}.blf" - ] - } - }, - "e89c6": { - "full": { - "$schema": "http://json-schema.org/draft-07/schema#", - "type": "array", - "description": "List of event types to be logged.", - "default": [ - "application-layer", - "bus", - "diagnostic", - "internal", - "statistic", - "system-variable", - "test", - "trigger" - ], - "items": { - "anyOf": [ - { - "type": "string", - "enum": [ - "application-layer", - "bus", - "diagnostic", - "internal", - "statistic", - "system-variable", - "test", - "trigger" - ] - } - ] - } - } - }, - "a63a9": { - "full": { - "$schema": "http://json-schema.org/draft-07/schema#", - "description": "Absolute or relative path to a SIL Kit config file (.yaml/.json). Relative path specifications are resolved relative to the configuration file.", - "type": "string", - "anyOf": [ - { - "pattern": "^.*\\.[yY][aA][mM][lL]$" - }, - { - "pattern": "^.*\\.[jJ][sS][oO][nN]$" - } - ], - "examples": ["path/to/myConfigFile.json", "path/to/myConfigFile.yaml"] - } - }, - "c4c02": { - "full": { - "$schema": "http://json-schema.org/draft-07/schema#", - "title": "System variables", - "description": "Describes a symbol mapping file (.vmap). Please ensure that the mappings are valid for the environment. No symbol validation will be performed.", - "type": "object", - "additionalProperties": false, - "required": ["file-path"], - "properties": { - "file-path": { - "oneOf": [ - { - "$ref": "#/definitions/15ac2/full" - }, - { - "type": "array", - "items": { - "$ref": "#/definitions/15ac2/full" - } - } - ] - } - }, - "examples": [ - { - "file-path": "path/to/my.vmap" - } - ] - } - }, - "f05e7": { - "full": { - "$schema": "http://json-schema.org/draft-07/schema#", - "title": "User files", - "description": "Describes a user file that can be read/written by CAPL/.NET scripts.", - "type": "object", - "additionalProperties": false, - "required": ["file-path"], - "properties": { - "file-path": { - "description": "Absolute or relative path to a user file. Relative path specifications are resolved relative to the configuration file.", - "oneOf": [ - { - "type": "string", - "examples": ["path/to/my.txt"] - }, - { - "type": "array", - "items": { - "type": "string" - }, - "examples": [["path/to/my.txt"]] - } - ] - } - }, - "examples": [ - { - "file-path": "path/to/my.txt" - }, - { - "file-path": "path/to/my_file.ini" - } - ] - } - }, - "a7855": { - "full": { - "$schema": "http://json-schema.org/draft-07/schema#", - "description": "Absolute or relative path to a VT System configuration file (.vtcfg). Relative path specifications are resolved relative to the configuration file.", - "type": "string", - "anyOf": [ - { - "pattern": "^.*\\.[vV][tT][cC][fF][gG]$" - } - ], - "examples": ["path/to/my.vtcfg"] - } - }, - "b8dca": { - "full": { - "$schema": "http://json-schema.org/draft-07/schema#", - "description": "Absolute or relative path to a functional mockup unit file (.fmu). Relative path specifications are resolved relative to the configuration file.", - "type": "string", - "anyOf": [ - { - "pattern": "^.*\\.[Ff][Mm][Uu]$" - } - ], - "examples": ["my_functional_mockup_unit.fmu", "Inputs/MyFmu.FMU"] - } - }, - "85afc": { - "full": { - "$schema": "http://json-schema.org/draft-07/schema#", - "title": "venvironment-basic schema", - "type": "object", - "additionalProperties": false, - "required": ["version"], - "properties": { - "version": { - "$ref": "#/definitions/02120/full" - }, - "datasources": { - "$ref": "#/definitions/dddd9/full" - }, - "functional-mockup-units": { - "$ref": "#/definitions/536be/full" - }, - "global-settings": { - "$ref": "#/definitions/8a258/full" - }, - "includes": { - "$ref": "#/definitions/8e88e/full" - }, - "logging": { - "$ref": "#/definitions/67ba6/full" - }, - "sil-kit": { - "$ref": "#/definitions/936d0/full" - }, - "symbol-mappings": { - "$ref": "#/definitions/d86e6/full" - }, - "system-variables": { - "$ref": "#/definitions/4c5be/full" - }, - "user-files": { - "$ref": "#/definitions/00ea9/full" - }, - "vio-system": { - "$ref": "#/definitions/021c7/full" - }, - "vt-system": { - "$ref": "#/definitions/f8f25/full" - } - } - } - }, - "02120": { - "full": { - "$schema": "http://json-schema.org/draft-07/schema#", - "title": "Version", - "description": "Schema version for the venvironment.yaml configuration file. Acceptance criteria: equal major version, less/equal minor and patch version.", - "const": "4.0.0", - "type": "string", - "examples": ["4.0.0"] - } - }, - "536be": { - "full": { - "$schema": "http://json-schema.org/draft-07/schema#", - "title": "Functional mockup units", - "description": "List of functional mockup units.", - "type": "array", - "items": { - "$ref": "#/definitions/8fe77/full" - }, - "examples": [ - [ - { - "file-path": "path/to/some.fmu", - "stepsize-in-sec": 1e-5 - } - ], - [ - { - "file-path": "path/to/some.fmu", - "stepsize-in-sec": 2.0, - "debug-output": true, - "inactive-model-variables": ["Variable3"] - } - ], - [ - { - "file-path": "path/to/some.fmu", - "stepsize-in-sec": 100.0, - "debug-output": false, - "active-model-variables": ["Variable1", "Variable2"] - } - ] - ] - } - }, - "8a258": { - "full": { - "$schema": "http://json-schema.org/draft-07/schema#", - "title": "Global Settings", - "description": "Global settings for all scenarios.", - "type": "object", - "additionalProperties": false, - "properties": { - "dotnet": { - "$ref": "#/definitions/62fe0/full" - }, - "working-mode": { - "$ref": "#/definitions/2f0df/full" - }, - "python": { - "$ref": "#/definitions/8430a/full" - } - }, - "examples": [ - { - "working-mode": { - "time-source": "internal-realtime" - } - }, - { - "working-mode": { - "time-source": "external-sil-kit" - } - }, - { - "dotnet": { - "target-version": "dotnet-8" - } - }, - { - "python": { - "interpreter": "3.10.0" - } - } - ] - } - }, - "8e88e": { - "local": { - "one": { - "type": "string", - "pattern": "\\.([Yy][Aa]?[Mm][Ll]|[Jj][Ss][Oo][Nn])$" - } - }, - "full": { - "$schema": "http://json-schema.org/draft-07/schema#", - "title": "Include files", - "description": "Include a different file (similar to #include of the c preprocessor). The order of includes does not matter. Circular/multiple includes are resolved correctly.", - "oneOf": [ - { - "$ref": "#/definitions/8e88e/local/one" - }, - { - "type": "array", - "items": { - "$ref": "#/definitions/8e88e/local/one" - } - } - ], - "examples": [ - "my_include.yaml", - ["my_include.yml", "my_other_include.json"] - ] - } - }, - "67ba6": { - "full": { - "$schema": "http://json-schema.org/draft-07/schema#", - "title": "Logging Block", - "description": "Configuration of the logging.", - "oneOf": [ - { - "type": "object", - "additionalProperties": false, - "required": ["file-name"], - "properties": { - "file-name": { - "$ref": "#/definitions/bd3f9/full" - }, - "logging-events": { - "$ref": "#/definitions/e89c6/full" - }, - "advanced": { - "$ref": "#/definitions/186fc/full" - } - } - }, - { - "type": "object", - "additionalProperties": false, - "required": ["file-name", "test-trigger"], - "properties": { - "file-name": { - "$ref": "#/definitions/bd3f9/full" - }, - "logging-events": { - "$ref": "#/definitions/e89c6/full" - }, - "advanced": { - "$ref": "#/definitions/186fc/full" - }, - "test-trigger": { - "$ref": "#/definitions/51fe4/full" - } - } - } - ], - "examples": [ - { - "file-name": "log_{IncTrigger|001}.blf", - "test-trigger": { - "scope": "test-unit", - "verdict": ["fail", "error-in-test-system"], - "pre-trigger-time-ms": 1000, - "post-trigger-time-ms": 1000, - "buffer-size": 5000 - } - }, - { - "file-name": "log_{TriggerCondition}_{LocalTime}.blf" - } - ] - } - }, - "936d0": { - "full": { - "$schema": "http://json-schema.org/draft-07/schema#", - "title": "SIL Kit", - "description": "SIL Kit settings.", - "type": "object", - "additionalProperties": false, - "required": ["participant-name"], - "properties": { - "registry-uri": { - "description": "The URI of the registry.", - "type": "string", - "anyOf": [ - { - "pattern": "^[^:]+://[^:/]+(:[0-9]+)?(/[^?#/]+)*(\\?([^=#&]+=[^=#&]+)(&([^=#&]+=[^=#&]+))*)?(#.+)?", - "default": "silkit://localhost:8500" - } - ], - "examples": ["silkit://localhost:8500"] - }, - "participant-name": { - "description": "Name used by the simulation tool to join a simulation as a participant at the start of a measurement.", - "anyOf": [ - { - "type": "string" - } - ], - "examples": ["CANoe4SW-SE"] - }, - "config-file-path": { - "$ref": "#/definitions/a63a9/full" - }, - "simulation-step-in-micro-sec": { - "description": "Time length of a single simulation step. Valid only when \"time-source\" is set to \"external-sil-kit\".", - "oneOf": [ - { - "type": "integer", - "minimum": 0, - "maximum": 9223372036854775, - "default": 100 - } - ] - }, - "life-cycle-event-timeout-in-sec": { - "description": "Maximum waiting time for the other simulation participants. Valid only when \"time-source\" is set to \"external-sil-kit\".", - "oneOf": [ - { - "type": "integer", - "minimum": 0, - "maximum": 9223372036, - "default": 30 - } - ] - } - }, - "examples": [ - { - "participant-name": "CANoe4SW-SE" - }, - { - "registry-uri": "silkit://localhost:8500", - "participant-name": "CANoe4SW-SE", - "config-file-path": "path/to/config-file.json" - }, - { - "registry-uri": "silkit://localhost:8500", - "participant-name": "CANoe4SW-SE", - "config-file-path": "path/to/config-file.json", - "simulation-step-in-micro-sec": 150 - }, - { - "registry-uri": "silkit://localhost:8500", - "participant-name": "CANoe4SW-SE", - "config-file-path": "path/to/config-file.json", - "simulation-step-in-micro-sec": 150, - "life-cycle-event-timeout-in-sec": 30 - } - ] - } - }, - "4c5be": { - "full": { - "$schema": "http://json-schema.org/draft-07/schema#", - "title": "System Variables", - "description": "A list of system variable files.", - "type": "array", - "items": { - "$ref": "#/definitions/4839f/full" - }, - "examples": [ - [ - { - "file-path": "path/to/my.vsysvar" - } - ] - ] - } - }, - "00ea9": { - "full": { - "$schema": "http://json-schema.org/draft-07/schema#", - "title": "User Files", - "description": "List of user files.", - "type": "array", - "items": { - "$ref": "#/definitions/f05e7/full" - }, - "examples": [ - [ - { - "file-path": "path/to/my.txt" - } - ] - ] - } - }, - "021c7": { - "full": { - "$schema": "http://json-schema.org/draft-07/schema#", - "title": "VIO System", - "description": "VIO System settings.", - "type": "object", - "additionalProperties": false, - "required": ["file-path", "ccd-folder"], - "properties": { - "file-path": { - "$ref": "#/definitions/9ff0e/full" - }, - "ccd-folder": { - "description": "Absolute or relative path to the folder containing the Card Capability Description files (.ccd) of the I/O cards. Relative path specifications are resolved relative to the configuration file.", - "anyOf": [ - { - "type": "string" - } - ], - "examples": ["path/to/folder/"] - } - }, - "examples": [ - { - "file-path": "path/to/config-file.viocfg", - "ccd-folder": "path/to/ccdfiles/" - } - ] - } - }, - "8fe77": { - "local": { - "stepsize-in-sec": { - "description": "Step size in seconds.", - "oneOf": [ - { - "type": "number", - "exclusiveMinimum": 0, - "maximum": 10000, - "multipleOf": 1e-5 - } - ], - "examples": [1e-5, 2, 10000] - }, - "debug-output": { - "description": "Is the debug output active.", - "oneOf": [ - { - "type": "boolean", - "default": false - } - ], - "examples": [false, true] - }, - "active-model-variables": { - "description": "List of FMU model variables to be considered during the simulation.", - "type": "array", - "items": { - "anyOf": [ - { - "type": "string" - } - ], - "examples": ["Variable1"] - } - }, - "inactive-model-variables": { - "description": "List of FMU model variables to be ignored during the simulation.", - "type": "array", - "items": { - "anyOf": [ - { - "type": "string" - } - ], - "examples": ["Variable1"] - } - } - }, - "full": { - "$schema": "http://json-schema.org/draft-07/schema#", - "title": "Functional mockup unit", - "description": "Defines a functional mockup unit (.fmu). By default, all the fmu variables are activated.", - "type": "object", - "oneOf": [ - { - "additionalProperties": false, - "required": ["file-path", "stepsize-in-sec"], - "properties": { - "file-path": { - "$ref": "#/definitions/b8dca/full" - }, - "stepsize-in-sec": { - "$ref": "#/definitions/8fe77/local/stepsize-in-sec" - }, - "debug-output": { - "$ref": "#/definitions/8fe77/local/debug-output" - } - } - }, - { - "additionalProperties": false, - "required": [ - "file-path", - "stepsize-in-sec", - "active-model-variables" - ], - "properties": { - "file-path": { - "$ref": "#/definitions/b8dca/full" - }, - "stepsize-in-sec": { - "$ref": "#/definitions/8fe77/local/stepsize-in-sec" - }, - "debug-output": { - "$ref": "#/definitions/8fe77/local/debug-output" - }, - "active-model-variables": { - "$ref": "#/definitions/8fe77/local/active-model-variables" - } - } - }, - { - "additionalProperties": false, - "required": [ - "file-path", - "stepsize-in-sec", - "inactive-model-variables" - ], - "properties": { - "file-path": { - "$ref": "#/definitions/b8dca/full" - }, - "stepsize-in-sec": { - "$ref": "#/definitions/8fe77/local/stepsize-in-sec" - }, - "debug-output": { - "$ref": "#/definitions/8fe77/local/debug-output" - }, - "inactive-model-variables": { - "$ref": "#/definitions/8fe77/local/inactive-model-variables" - } - } - } - ] - } - }, - "62fe0": { - "full": { - "$schema": "http://json-schema.org/draft-07/schema#", - "title": "Global settings for .NET", - "description": "Global settings for .NET", - "type": "object", - "properties": { - "target-version": { - "description": "The .NET target version.", - "default": "dotnet-8", - "oneOf": [ - { - "enum": ["dotnet-8", "dotnet-4.7"] - } - ], - "examples": ["dotnet-8", "dotnet-4.7"] - } - }, - "additionalProperties": false - } - }, - "2f0df": { - "full": { - "$schema": "http://json-schema.org/draft-07/schema#", - "title": "Global settings for the simulation working mode.", - "description": "Global settings for the simulation working mode.", - "type": "object", - "additionalProperties": false, - "properties": { - "time-source": { - "description": "Time source for the simulation. \n\"internal-realtime\": The time response of the measurement (time basis) is controlled internally. \n\"external-sil-kit\" : The time response of the measurement (time basis) is controlled by Vector SIL Kit. \n\"external-hardware\": The time response of the measurement (time basis) is controlled by external hardware.", - "default": "internal-realtime", - "oneOf": [ - { - "enum": [ - "internal-realtime", - "external-sil-kit", - "external-hardware" - ] - } - ], - "examples": [ - "internal-realtime", - "external-sil-kit", - "external-hardware" - ] - } - }, - "examples": [ - { - "time-source": "internal-realtime" - }, - { - "time-source": "external-sil-kit" - } - ] - } - }, - "8430a": { - "full": { - "$schema": "http://json-schema.org/draft-07/schema#", - "title": "Global settings for Python", - "description": "Global settings for Python", - "type": "object", - "properties": { - "interpreter": { - "description": "The Python interpreter version. If no interpreter is specified, one is selected automatically. Version greater than or equal to 3.10.0 are supported.", - "anyOf": [ - { - "type": "string", - "pattern": "^(3)\\.([1-9][0-9]{1,3})\\.([0-9]{1,4})$" - } - ], - "examples": ["3.10.0", "3.11.0", "3.12.0", "3.13.0"] - } - }, - "additionalProperties": false, - "examples": [ - { - "interpreter": "3.10.0" - } - ] - } - }, - "186fc": { - "full": { - "$schema": "http://json-schema.org/draft-07/schema#", - "description": "Advanced logging configurations.", - "type": "object", - "additionalProperties": false, - "properties": { - "warn-overwritten-log-file": { - "description": "Specifies whether a warning is shown at the start of measurement before overwriting an existing logging file.", - "oneOf": [ - { - "type": "boolean" - } - ], - "default": true - }, - "show-error-on-data-loss": { - "description": "Specifies whether an error is shown after the measurement if data loss occurred during the measurement. Lines in the logging file marked with a * as a special symbol have corrupted lines around them.", - "oneOf": [ - { - "type": "boolean" - } - ], - "default": true - } - }, - "examples": [ - { - "warn-overwritten-log-file": false, - "show-error-on-data-loss": true - }, - { - "warn-overwritten-log-file": true - } - ] - } - }, - "51fe4": { - "full": { - "$schema": "http://json-schema.org/draft-07/schema#", - "description": "Test trigger settings. The execution period of test elements controls the start and stop of logging.", - "type": "object", - "required": ["scope"], - "additionalProperties": false, - "properties": { - "scope": { - "description": "Scope of the test trigger, for each a logging file is created.", - "oneOf": [ - { - "enum": ["test-unit", "test-implementation-entity", "test-case"] - } - ], - "examples": ["test-unit", "test-implementation-entity", "test-case"] - }, - "verdict": { - "type": "array", - "description": "List of test verdicts for which logging files will remain stored.", - "default": [ - "none", - "pass", - "inconclusive", - "fail", - "error-in-test-system" - ], - "items": { - "anyOf": [ - { - "type": "string", - "enum": [ - "none", - "pass", - "inconclusive", - "fail", - "error-in-test-system" - ] - } - ] - }, - "examples": [ - ["none"], - ["pass"], - ["inconclusive"], - ["fail"], - ["error-in-test-system"] - ] - }, - "pre-trigger-time-ms": { - "description": "Time before triggering that should also be logged.", - "oneOf": [ - { - "type": "integer", - "minimum": 0, - "maximum": 21000000, - "default": 0 - } - ] - }, - "post-trigger-time-ms": { - "description": "Time after the triggered stopped that should also be logged.", - "oneOf": [ - { - "type": "integer", - "minimum": 0, - "maximum": 21000000, - "default": 0 - } - ] - }, - "buffer-size": { - "description": "Event buffer size for events pre-trigger-time-ms", - "oneOf": [ - { - "type": "integer", - "minimum": 1, - "maximum": 2097152, - "default": 5000 - } - ] - } - }, - "examples": [ - { - "scope": "test-unit", - "verdict": [ - "none", - "pass", - "inconclusive", - "fail", - "error-in-test-system" - ] - }, - { - "scope": "test-unit", - "verdict": ["fail", "error-in-test-system"], - "pre-trigger-time-ms": 1000, - "post-trigger-time-ms": 1000, - "buffer-size": 5000 - } - ] - } - }, - "4839f": { - "full": { - "$schema": "http://json-schema.org/draft-07/schema#", - "title": "System variables", - "description": "Describes a system variable file (.vsysvar/.xml).", - "type": "object", - "additionalProperties": false, - "required": ["file-path"], - "properties": { - "file-path": { - "oneOf": [ - { - "$ref": "#/definitions/13681/full" - }, - { - "type": "array", - "items": { - "$ref": "#/definitions/13681/full" - } - } - ] - } - }, - "examples": [ - { - "file-path": "path/to/my.vsysvar" - }, - { - "file-path": "path/to/my.xml" - } - ] - } - }, - "9ff0e": { - "full": { - "$schema": "http://json-schema.org/draft-07/schema#", - "description": "Absolute or relative path to a VIO System configuration file (.viocfg). Relative path specifications are resolved relative to the configuration file.", - "type": "string", - "anyOf": [ - { - "pattern": "^.*\\.[vV][iI][oO][cC][fF][gG]$" - } - ], - "examples": ["path/to/my.viocfg"] - } - }, - "1b880": { - "full": { - "$schema": "http://json-schema.org/draft-07/schema#", - "oneOf": [ - { - "$ref": "#/definitions/196f6/full" - }, - { - "type": "array", - "items": { - "$ref": "#/definitions/196f6/full" - }, - "examples": [["path/to/my.vcdl"], ["path/to/my.vcodm"]] - } - ], - "examples": ["path/to/my.vcdl", ["path/to/my.vcodm"]] - } - }, - "15ac2": { - "full": { - "$schema": "http://json-schema.org/draft-07/schema#", - "description": "Absolute or relative path to a symbol mapping file (.vmap). Relative path specifications are resolved relative to the configuration file.", - "type": "string", - "anyOf": [ - { - "pattern": "^.*\\.[vV][mM][aA][pP]$" - } - ], - "examples": ["path/to/my.vmap"] - } - }, - "13681": { - "full": { - "$schema": "http://json-schema.org/draft-07/schema#", - "description": "Absolute or relative path to a system variable file (.vsysvar/.xml). Relative path specifications are resolved relative to the configuration file.", - "type": "string", - "anyOf": [ - { - "pattern": "^.*\\.[vV][sS][yY][sS][vV][aA][rR]$" - }, - { - "pattern": "^.*\\.[xX][mM][lL]$" - } - ], - "examples": ["path/to/my.vsysvar", "path/to/my.xml"] - } - }, - "196f6": { - "full": { - "$schema": "http://json-schema.org/draft-07/schema#", - "description": "Absolute or relative path to a datasource file (.vcdl/.vcodm). Relative path specifications are resolved relative to the configuration file.", - "type": "string", - "anyOf": [ - { - "pattern": "^.*\\.[vV][cC][dD][lL]$" - }, - { - "pattern": "^.*\\.[vV][cC][oO][dD][mM]$" - } - ], - "examples": ["path/to/my.vcdl", "path/to/my.vcodm"] - } - } - } -} diff --git a/src/schemas/json/venvironment-schema-v4.2.0.json b/src/schemas/json/venvironment-schema-v4.2.0.json new file mode 100644 index 00000000000..62d2f2c9e20 --- /dev/null +++ b/src/schemas/json/venvironment-schema-v4.2.0.json @@ -0,0 +1,8261 @@ +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "$id": "https://json.schemastore.org/venvironment-schema-v4.2.0.json", + "$ref": "#/definitions/e6d7d/full", + "type": "object", + "title": "venvironment schema", + "definitions": { + "e6d7d": { + "full": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "venvironment schema", + "type": "object", + "additionalProperties": false, + "required": ["version"], + "properties": { + "version": { + "$ref": "#/definitions/f1ad4/full" + }, + "application-models": { + "$ref": "#/definitions/bcf85/full" + }, + "can-networks": { + "$ref": "#/definitions/fa384/full" + }, + "can-replay-blocks": { + "$ref": "#/definitions/35a8b/full" + }, + "databases": { + "$ref": "#/definitions/0e884/full" + }, + "datasources": { + "$ref": "#/definitions/96ca3/full" + }, + "defines": { + "$ref": "#/definitions/bf74a/full" + }, + "diag-descriptions": { + "$ref": "#/definitions/4adac/full" + }, + "ethernet-networks": { + "$ref": "#/definitions/b7e4b/full" + }, + "ethernet-replay-blocks": { + "$ref": "#/definitions/6e2dd/full" + }, + "fdx": { + "$ref": "#/definitions/59a17/full" + }, + "flexray-clusters": { + "$ref": "#/definitions/1f18c/full" + }, + "flexray-replay-blocks": { + "$ref": "#/definitions/99370/full" + }, + "functional-mockup-units": { + "$ref": "#/definitions/85173/full" + }, + "global-settings": { + "$ref": "#/definitions/9adad/full" + }, + "includes": { + "$ref": "#/definitions/8e88e/full" + }, + "lin-networks": { + "$ref": "#/definitions/18fc9/full" + }, + "lin-replay-blocks": { + "$ref": "#/definitions/648b8/full" + }, + "logging": { + "$ref": "#/definitions/5806f/full" + }, + "programming-modules": { + "$ref": "#/definitions/e46c0/full" + }, + "scenarios": { + "$ref": "#/definitions/72c68/full" + }, + "security": { + "$ref": "#/definitions/da8b6/full" + }, + "sil-kit": { + "$ref": "#/definitions/e7b50/full" + }, + "simulation-nodes": { + "$ref": "#/definitions/ea6c8/full" + }, + "symbol-mappings": { + "$ref": "#/definitions/0fe8c/full" + }, + "system-variables": { + "$ref": "#/definitions/c47fa/full" + }, + "user-files": { + "$ref": "#/definitions/f4ed6/full" + }, + "variables": { + "$ref": "#/definitions/6cf52/full" + }, + "vio-system": { + "$ref": "#/definitions/b3d04/full" + }, + "vt-system": { + "$ref": "#/definitions/5620d/full" + }, + "xcp-configuration-files": { + "$ref": "#/definitions/b18cf/full" + }, + "xil": { + "$ref": "#/definitions/b6ab2/full" + } + } + } + }, + "f1ad4": { + "full": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "Version", + "description": "Schema version for the venvironment.yaml configuration file. Acceptance criteria: equal major version, less/equal minor and patch version.", + "const": "4.2.0", + "type": "string", + "examples": ["4.2.0"] + } + }, + "bcf85": { + "full": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "Application Models", + "description": "List of application models representing some program. Entries can be deactivated with when.", + "type": "array", + "items": { + "$ref": "#/definitions/18095/full" + }, + "examples": [ + [ + { + "file-path": "path/to/my/file.can", + "defines": ["mydefine1", "mydefine=2"] + } + ] + ] + } + }, + "fa384": { + "full": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "CAN and CAN FD Networks", + "description": "List of CAN and CAN FD networks. Entries can be deactivated with when.", + "type": "array", + "items": { + "$ref": "#/definitions/5f27a/full" + }, + "examples": [ + [ + { + "name": "my_can_network", + "database": "DB_1", + "when": "SCENARIO_NAME == \"my_scenario_name\"" + } + ], + [ + { + "name": "my_canfd", + "database": ["DB_1", "DB_2"], + "mapping": "internal-simulator" + } + ], + [ + { + "name": "my_can_network", + "database": "DB_1", + "application-channel": 42, + "mapping": "internal-simulator", + "can-settings": { + "bit-rate-k-bit-s": 500.0, + "sample-point-in-percent": 75.0 + } + } + ], + [ + { + "name": "my_canfd", + "database": "databaseName", + "can-fd-settings": { + "mode": "iso", + "arbitration-bit-rate-k-bit-s": 500.0, + "data-bit-rate-k-bit-s": 1000.0, + "arbitration-sample-point-in-percent": 75.0, + "data-sample-point-in-percent": 80.0 + } + } + ] + ] + } + }, + "bf74a": { + "full": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "Defines", + "description": "List of defines to be passed to CAPL, .NET, Python and VCDL. Entries can be deactivated with when.", + "type": "array", + "items": { + "$ref": "#/definitions/689c5/full" + }, + "examples": [ + [ + { + "define": "mydefine1" + } + ], + [ + { + "define": ["mydefine1", "mydefine2"] + }, + { + "define": ["mydefine1", "mydefine2"], + "when": "SCENARIO_NAME == \"my_scenario_name\"" + }, + { + "define": [ + "mydefine_with_value=42", + "${var_with_define_name}=${var_with_define_value}" + ] + } + ] + ] + } + }, + "b7e4b": { + "full": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "CAN Networks", + "description": "List of Ethernet networks. Entries can be deactivated with when.", + "type": "array", + "items": { + "$ref": "#/definitions/5156f/full" + }, + "examples": [ + [ + { + "name": "my_eth_network" + } + ], + [ + { + "name": "my_eth_network", + "database": "DB", + "when": "SCENARIO_NAME == \"my_scenario_name\"" + } + ], + [ + { + "name": "my_eth_network", + "mapping": "internal-simulator", + "global-tcp-ip-stack-adapter": { + "mtu": 1500, + "ipv4-settings": { + "address-configuration": "static", + "addresses": [ + { + "address": "192.168.0.1", + "subnet-mask": "255.255.0.0" + } + ] + }, + "ipv6-settings": { + "address-configuration": "dhcp" + }, + "vlans": [ + { + "id": 42, + "priority": 0 + } + ] + } + } + ], + [ + { + "name": "my_eth_network", + "database": "DB", + "measurement-ports": ["port1", "port2"] + } + ] + ] + } + }, + "e46c0": { + "full": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "Programming Modules", + "description": "Lists of programming modules to be used by the simulation. Entries can be deactivated with when.", + "type": "array", + "items": { + "$ref": "#/definitions/17563/full" + }, + "examples": [ + [ + { + "capl-library-path": "path/to/my.vmodule" + } + ], + [ + { + "c-library-path": "${path_in_variable}" + }, + { + "c-library-path": "path/${name_in_variable}" + } + ], + [ + { + "capl-library-path": "path/to/my.vmodule", + "when": "SCENARIO_NAME == \"my_scenario_name\"" + }, + { + "capl-library-path": "path/to/my2.vmodule", + "when": "SCENARIO_NAME == \"another_scenario_name\"" + }, + { + "c-library-path": "path/to/my.vmodule", + "when": "SCENARIO_NAME == \"my_scenario_name\"" + } + ] + ] + } + }, + "da8b6": { + "full": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "Security", + "description": "Security settings", + "type": "object", + "additionalProperties": false, + "properties": { + "network-profile-assignments": { + "$ref": "#/definitions/469f5/full" + }, + "stack-profile-assignments": { + "$ref": "#/definitions/6fca5/full" + }, + "operating-system-stack-profile-id": { + "$ref": "#/definitions/adad4/full", + "description": "The ID of the assigned security profile to the OS Ethernet stack." + }, + "shared-canoe-stack-profile-id": { + "$ref": "#/definitions/adad4/full", + "description": "The ID of the assigned security profile to the shared CANoe Ethernet stack." + }, + "test-stack-profile-id": { + "$ref": "#/definitions/adad4/full", + "description": "The ID of the assigned security profile to the test Ethernet stack." + }, + "macsec": { + "$ref": "#/definitions/08b94/full", + "description": "MACsec settings" + } + }, + "examples": [ + { + "network-profile-assignments": [ + { + "network": "CAN", + "profile-id": 123456 + } + ] + }, + { + "stack-profile-assignments": [ + { + "simulation-node": "MyNode", + "profile-id": 123456 + }, + { + "simulation-node": "AnotherNode", + "profile-id": 987654 + } + ], + "operating-system-stack-profile-id": 24680, + "shared-canoe-stack-profile-id": 13579, + "test-stack-profile-id": 13579 + }, + { + "macsec": { + "profile-id": 1234, + "ports": [ + { + "network": "Eth1", + "measurement-port": "Port1", + "port-configuration": "authenticator", + "vlan-id": 5, + "vlan-in-clear": true, + "implementation": "use-software", + "bypass-filter": [ + { + "vlan-id": 7, + "mask": 4095, + "direction": "ingress" + }, + { + "ether-type": 34667, + "direction": "both" + }, + { + "source-mac": "00:1A:2B:3C:4D:5E", + "mask": "FF:FF:FF:FF:FF:FF", + "direction": "egress" + }, + { + "destination-mac": "00:1A:2B:3C:4D:5E", + "mask": "AA:BB:CC:DD:EE:FF", + "direction": "egress" + } + ] + } + ] + } + } + ] + } + }, + "e7b50": { + "full": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "SIL Kit", + "description": "SIL Kit settings. Entry can be deactivated with when.", + "type": "object", + "additionalProperties": false, + "required": ["participant-name"], + "properties": { + "when": { + "$ref": "#/definitions/24f1f/full" + }, + "registry-uri": { + "description": "The URI of the registry.", + "type": "string", + "anyOf": [ + { + "pattern": "^[^:]+://[^:/]+(:[0-9]+)?(/[^?#/]+)*(\\?([^=#&]+=[^=#&]+)(&([^=#&]+=[^=#&]+))*)?(#.+)?", + "default": "silkit://localhost:8500" + }, + { + "$ref": "#/definitions/779cd/full" + } + ], + "examples": ["silkit://localhost:8500"] + }, + "participant-name": { + "description": "Name used by the simulation tool to join a simulation as a participant at the start of a measurement.", + "anyOf": [ + { + "type": "string" + }, + { + "$ref": "#/definitions/779cd/full" + } + ], + "examples": ["CANoe4SW-SE"] + }, + "hybrid-networks": { + "$ref": "#/definitions/9796e/full" + }, + "config-file-path": { + "$ref": "#/definitions/89e83/full" + }, + "simulation-step-in-micro-sec": { + "description": "Time length of a single simulation step. Valid only when \"time-source\" is set to \"external-sil-kit\".", + "oneOf": [ + { + "type": "integer", + "minimum": 0, + "maximum": 9223372036854775, + "default": 100 + }, + { + "$ref": "#/definitions/779cd/full" + } + ] + }, + "life-cycle-event-timeout-in-sec": { + "description": "Maximum waiting time for the other simulation participants. Valid only when \"time-source\" is set to \"external-sil-kit\".", + "oneOf": [ + { + "type": "integer", + "minimum": 0, + "maximum": 9223372036, + "default": 30 + }, + { + "$ref": "#/definitions/779cd/full" + } + ] + } + }, + "examples": [ + { + "participant-name": "CANoe4SW-SE" + }, + { + "registry-uri": "silkit://localhost:8500", + "participant-name": "CANoe4SW-SE", + "config-file-path": "path/to/config-file.json" + }, + { + "registry-uri": "silkit://localhost:8500", + "participant-name": "CANoe4SW-SE", + "config-file-path": "path/to/config-file.json", + "simulation-step-in-micro-sec": 150 + }, + { + "registry-uri": "silkit://localhost:8500", + "participant-name": "CANoe4SW-SE", + "config-file-path": "path/to/config-file.json", + "simulation-step-in-micro-sec": 150, + "life-cycle-event-timeout-in-sec": 30, + "hybrid-networks": [ + { + "network": "Ethernet1", + "sil-kit-network": "Ethernet3" + } + ] + } + ] + } + }, + "ea6c8": { + "full": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "Simulation Nodes", + "description": "List of simulation nodes. Entries can be deactivated with when.", + "type": "array", + "items": { + "$ref": "#/definitions/78c74/full" + }, + "examples": [ + [ + { + "name": "mynode", + "network-assignments": [ + { + "network": "my_can_network_1" + } + ] + } + ], + [ + { + "name": "anotherNameAsInDb", + "network-assignments": [ + { + "network": "my_can_network_1" + } + ], + "database-node": "nodeNameInDb", + "when": "SCENARIO_NAME == \"my_scenario_name\"" + } + ], + [ + { + "name": "anotherNameAsInDb", + "network-assignments": [ + { + "network": "my_can_network_1" + } + ], + "database-node": "dbName::nodeNameInDb", + "when": "SCENARIO_NAME == \"my_scenario_name\"" + } + ], + [ + { + "name": "mynode", + "network-assignments": [ + { + "network": "my_can_network_1" + } + ], + "file-path": "path/to/my_capl_script.can", + "when": "SCENARIO_NAME == \"my_scenario_name1\"" + }, + { + "name": "programming_node", + "file-path": "path/to/my_dotnet.cs", + "database-node": false, + "network-assignments": [ + { + "network": "my_can_network_1" + } + ], + "defines": ["mydefine1", "mydefine2"], + "modeling-libraries": ["modeling/lib/1.vmodule", "${path_in_var}"] + } + ] + ] + } + }, + "c47fa": { + "full": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "System Variables", + "description": "A list of system variable files. Entries can be deactivated with when.", + "type": "array", + "items": { + "$ref": "#/definitions/8b228/full" + }, + "examples": [ + [ + { + "file-path": "path/to/my.vsysvar" + } + ], + [ + { + "file-path": "path/to/my.vsysvar", + "when": "SCENARIO_NAME == \"my_scenario_name\"" + } + ], + [ + { + "file-path": ["${path_in_variable}", "path/${name_in_variable}"] + }, + { + "file-path": "path/to/my.vsysvar" + } + ] + ] + } + }, + "f4ed6": { + "full": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "User Files", + "description": "List of user files. Entries can be deactivated with when.", + "type": "array", + "items": { + "$ref": "#/definitions/9541b/full" + }, + "examples": [ + [ + { + "file-path": "path/to/my.txt" + } + ], + [ + { + "file-path": "path/to/my.txt", + "when": "SCENARIO_NAME == \"my_scenario_name\"" + } + ], + [ + { + "file-path": ["${path_in_variable}", "path/${name_in_variable}"] + }, + { + "file-path": "path/to/my_file.txt" + } + ] + ] + } + }, + "b3d04": { + "full": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "VIO System", + "description": "VIO System settings. Entry can be deactivated with when.", + "type": "object", + "additionalProperties": false, + "required": ["file-path", "ccd-folder"], + "properties": { + "when": { + "$ref": "#/definitions/24f1f/full" + }, + "file-path": { + "$ref": "#/definitions/0d74c/full" + }, + "ccd-folder": { + "description": "Absolute or relative path to the folder containing the Card Capability Description files (.ccd) of the I/O cards. Relative path specifications are resolved relative to the configuration file.", + "anyOf": [ + { + "type": "string" + }, + { + "$ref": "#/definitions/779cd/full" + } + ], + "examples": [ + "path/to/folder/", + "${folder_path_in_variable}", + "path/${folder_name_in_variable}" + ] + } + }, + "examples": [ + { + "file-path": "path/to/config-file.viocfg", + "ccd-folder": "path/to/ccdfiles/" + }, + { + "file-path": "${path_in_variable}", + "ccd-folder": "path/to/ccdfiles/", + "when": "SCENARIO_NAME = \"my_scenario_name\"" + } + ] + } + }, + "b18cf": { + "full": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "XCP files", + "description": "List of XCP configuration files. Entries can be deactivated with when.", + "type": "array", + "items": { + "$ref": "#/definitions/2b57a/full" + }, + "examples": [ + [ + { + "file-path": "path/to/my.xcpcfg" + } + ], + [ + { + "file-path": "path/to/my.xcpcfg", + "when": "SCENARIO_NAME == \"my_scenario_name\"" + } + ], + [ + { + "file-path": ["${path_in_variable}", "path/${name_in_variable}"] + }, + { + "file-path": "path/to/my.xcp.yaml" + } + ] + ] + } + }, + "b6ab2": { + "full": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "XIL API Settings", + "description": "Enables the XIL API server. Entry can be deactivated with when.", + "type": "object", + "additionalProperties": false, + "required": ["port"], + "properties": { + "when": { + "$ref": "#/definitions/24f1f/full" + }, + "port": { + "description": "TCP port to be used for the XIL API, usually set to \"3030\" for CANoe", + "oneOf": [ + { + "type": "integer", + "minimum": 0, + "maximum": 65535 + }, + { + "$ref": "#/definitions/779cd/full" + } + ] + } + }, + "examples": [ + { + "port": 3030 + } + ] + } + }, + "e7902": { + "full": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "Database", + "description": "Describes a .arxml/.dbc/.ldf. A network from the database can be selected implicitly via \"name\" or explicitly via \"network-name\".", + "type": "object", + "additionalProperties": false, + "required": ["name", "file-path"], + "properties": { + "name": { + "$ref": "#/definitions/ee012/full" + }, + "when": { + "$ref": "#/definitions/24f1f/full" + }, + "network-name": { + "description": "Selects a network from the database (cluster if .arxml). Overrides the selection of the name property.", + "type": "string" + }, + "file-path": { + "$ref": "#/definitions/b29db/full" + } + }, + "examples": [ + { + "name": "mydbname", + "file-path": "path/to/some.dbc" + }, + { + "name": "mydbname", + "file-path": "path/to/some.arxml", + "network-name": "network_in_db" + }, + { + "name": "mydbname", + "file-path": "path/to/some.dbc", + "when": "SCENARIO_NAME == \"my_scenario_name\"" + } + ] + } + }, + "e1d24": { + "full": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "Datasources", + "description": "Defines datasources used by the application models (.vcdl/.vcodm). Input files can be deactivated with when.", + "type": "object", + "additionalProperties": false, + "required": ["file-path"], + "properties": { + "when": { + "$ref": "#/definitions/24f1f/full" + }, + "file-path": { + "$ref": "#/definitions/66d5a/full" + }, + "defines": { + "$ref": "#/definitions/b0390/full" + } + }, + "examples": [ + { + "file-path": "path/to/my.vcdl" + }, + { + "file-path": [ + "path/to/my.vcodm", + "${path_in_variable}", + "path/${name_in_variable}" + ] + }, + { + "file-path": "path/to/my.vcdl", + "defines": ["A", "B=42"], + "when": "SCENARIO_NAME == \"my_scenario_name\"" + } + ] + } + }, + "dc13d": { + "full": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "Diagnostic description", + "description": "Diagnostic description with CDD, MDX, PDX or RDX.", + "type": "object", + "additionalProperties": false, + "required": [ + "name", + "file-path", + "interface", + "variant", + "network-assignment" + ], + "properties": { + "name": { + "$ref": "#/definitions/9a523/full", + "description": "A unique name that can be used to reference this diagnostic description in programming APIs such as CAPL.\nMust be a C-identifier (case sensitive)." + }, + "ecu-identifier": { + "$ref": "#/definitions/09693/full" + }, + "when": { + "$ref": "#/definitions/24f1f/full" + }, + "file-path": { + "$ref": "#/definitions/64491/full" + }, + "interface": { + "$ref": "#/definitions/8ab6a/full", + "description": "Interfaces in diagnostic description files define the communication parameters for accessing an ECU. Additional default interfaces are offered." + }, + "variant": { + "$ref": "#/definitions/39b87/full" + }, + "network-assignment": { + "$ref": "#/definitions/8ab6a/full", + "description": "Name of the network this diagnostic description is attached to." + }, + "language": { + "$ref": "#/definitions/a855d/full" + }, + "seed-and-key-library-path": { + "$ref": "#/definitions/e842d/full" + }, + "communication-parameters": { + "$ref": "#/definitions/26a64/full" + }, + "can-settings": { + "$ref": "#/definitions/f5320/full" + }, + "doip-settings": { + "$ref": "#/definitions/26b44/full" + }, + "flexray-settings": { + "$ref": "#/definitions/deffc/full" + }, + "lin-settings": { + "$ref": "#/definitions/61039/full" + }, + "additional-diag-descriptions": { + "$ref": "#/definitions/71f64/full" + } + }, + "examples": [ + { + "name": "DoorFL", + "file-path": "description.cdd", + "interface": "Normal_29BitBase_Variant", + "variant": "Common", + "language": "en-US", + "network-assignment": "can_network" + }, + { + "name": "DoorFL", + "file-path": "description.pdx", + "ecu-identifier": "Door", + "interface": "Normal_29BitBase_Variant", + "variant": "Common", + "network-assignment": "can_network" + }, + { + "name": "DoorFL", + "when": "SCENARIO_NAME == \"MyScenario\"", + "file-path": "description.cdd", + "interface": "Normal_29BitBase_Variant", + "variant": "Common", + "network-assignment": "can_network" + }, + { + "name": "DoorFL", + "file-path": "description.cdd", + "interface": "${MyVariable}", + "variant": "Common", + "network-assignment": "eth_network", + "communication-parameters": { + "p6-client": 1000, + "p2-server": 50, + "timeout-cr": 200, + "timeout-as": 300 + }, + "doip-settings": { + "tls-mode": "routing-activation", + "tls-client": "Initial TLS Configuration", + "tcp-ip-stack-adapter": "ref_name", + "addressing": { + "logical-ecu-address-func": 1, + "logical-ecu-address-phys": 0, + "logical-tester-address": 3584, + "logical-gateway-address": 1 + } + } + }, + { + "name": "DoorFL", + "file-path": "description.cdd", + "interface": "LIN", + "variant": "Common", + "network-assignment": "lin_network", + "lin-settings": { + "database-node": "Door", + "scheduling-mode": "diagnostics-only", + "node-address": 7 + } + }, + { + "name": "DoorFL", + "file-path": "description.cdd", + "interface": "${MyVariable}", + "variant": "Common", + "network-assignment": "fr_cluster", + "flexray-settings": { + "database-node": "Door", + "transport-protocol-type": "autosar-3-x", + "tester-pdus-phys": ["PDU_a", "PDU_b"], + "tester-pdus-func": ["PDU_c", "PDU_d", "PDU_e"], + "ecu-pdus": ["PDU_f"] + } + } + ] + } + }, + "cee65": { + "full": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "FlexRay cluster", + "description": "A cluster using the FlexRay protocol.", + "type": "object", + "additionalProperties": false, + "required": ["name", "database"], + "properties": { + "name": { + "$ref": "#/definitions/9a523/full", + "description": "A unique name that can be used to reference this FlexRay cluster in the configuration file or in programming APIs such as CAPL.\nMust be a C-identifier (case sensitive)." + }, + "when": { + "$ref": "#/definitions/24f1f/full" + }, + "database": { + "$ref": "#/definitions/8ab6a/full", + "description": "Reference to a database declared in the configuration file." + }, + "application-channel": { + "description": "Index of the Application Channel. Each bus type should provide consecutive indices. Starts counting at 1. Value between 1 and 32. Value \"0\" is not allowed.", + "oneOf": [ + { + "type": "integer", + "minimum": 1, + "maximum": 32, + "default": 1 + }, + { + "$ref": "#/definitions/779cd/full" + } + ] + }, + "mapping": { + "$ref": "#/definitions/eaf9e/full" + }, + "key-slot-configuration": { + "$ref": "#/definitions/f6a56/full" + }, + "mode": { + "oneOf": [ + { + "enum": ["synchronous", "asynchronous", "mixed"] + }, + { + "$ref": "#/definitions/779cd/full" + } + ], + "description": "The operation mode of VN Interface. \n\"synchronous\": In synchronous cc state frames can be sent and received. \n\"asynchronous\": In all bus phases frames and symbols can be received. Sending is not possible. \n\"mixed\": In asynchronous cc phase frames and symbols can be received. In synchronous cc state frames can can be sent and received.", + "default": "mixed" + }, + "automatic-restart": { + "description": "Restart of the communication controller when synchronisation is lost.", + "oneOf": [ + { + "type": "boolean", + "default": false + }, + { + "$ref": "#/definitions/779cd/full" + } + ] + }, + "send-wakeup-pattern": { + "description": "Send Wakeup Pattern at measurement start. If true database settings are used", + "oneOf": [ + { + "type": "boolean", + "default": false + }, + { + "$ref": "#/definitions/779cd/full" + } + ] + } + }, + "examples": [ + { + "name": "my_flexray_cluster", + "database": "DB_1" + }, + { + "name": "my_flexray_cluster", + "when": "SCENARIO_NAME == \"my_scenario_name\"", + "database": "FR_DB" + }, + { + "name": "my_flexray_cluster", + "database": "DB_1", + "application-channel": 12, + "mapping": "internal-simulator", + "key-slot-configuration": { + "slot-1": { + "mode": "manual", + "usage": "startup", + "mask": "A", + "slot": 1, + "leading-cold-start": true + }, + "slot-2": { + "mode": "automatic" + } + } + }, + { + "name": "my_flexray_cluster", + "database": "DB_1", + "mode": "synchronous", + "automatic-restart": true, + "send-wakeup-pattern": true + } + ] + } + }, + "bc82a": { + "full": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "FlexRay replay block", + "description": "A replay block for the FlexRay protocol.", + "type": "object", + "additionalProperties": false, + "required": ["name", "file-path", "network"], + "properties": { + "name": { + "$ref": "#/definitions/9a523/full", + "description": "A unique name that can be used to reference this FlexRay replay block in programming APIs such as CAPL.\nMust be a C-identifier (case sensitive)." + }, + "when": { + "$ref": "#/definitions/24f1f/full" + }, + "file-path": { + "$ref": "#/definitions/ac192/full" + }, + "network": { + "$ref": "#/definitions/8ab6a/full", + "description": "Name of the FlexRay cluster, this replay node is attached to." + }, + "replay-on-measurement-start": { + "description": "Replay starts with measurement start.", + "oneOf": [ + { + "type": "boolean", + "default": true + }, + { + "$ref": "#/definitions/779cd/full" + } + ], + "examples": [true, false, "${variable}"] + }, + "channel-mapping": { + "$ref": "#/definitions/5664c/full" + }, + "replay-nodes": { + "description": "List of nodes, whose transmitted messages should be replayed from the logging file. If not set, all are active by default.", + "default": [], + "type": "array", + "items": { + "$ref": "#/definitions/8ab6a/full" + } + } + }, + "examples": [ + { + "name": "ReplayBlock", + "file-path": "MyLoggingFile.blf", + "network": "flexRay1" + }, + { + "name": "ReplayBlock", + "file-path": "MyLoggingFile.blf", + "network": "flexRay1", + "when": "SCENARIO_NAME == \"MyScenario\"" + }, + { + "name": "ReplayBlock", + "file-path": "MyLoggingFile.blf", + "network": "flexRay1", + "replay-on-measurement-start": true, + "channel-mapping": { + "default-mapping": "as-in-original" + }, + "replay-nodes": ["ECU1", "ECU2"] + }, + { + "name": "ReplayBlock", + "file-path": "MyLoggingFile.blf", + "network": "flexRay1", + "channel-mapping": { + "default-mapping": "ignore-all", + "mappings": [ + { + "source-network": "flexray2" + } + ] + } + } + ] + } + }, + "f8fa6": { + "full": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "Global settings for Ethernet", + "description": "Global settings for Ethernet.", + "type": "object", + "properties": { + "access-mode": { + "description": "Mode of the underlying Ethernet bus. Classic approach is the \"channel-based\" setup. More recent and recommended mode is the switched \"network-based\" mode (port based).", + "oneOf": [ + { + "enum": ["network-based", "channel-based"], + "default": "network-based" + }, + { + "$ref": "#/definitions/779cd/full" + } + ], + "examples": ["network-based", "channel-based"] + }, + "signal-updates": { + "description": "Specifies how signals are updated on Network-based access. Will be ignored on channel-based setups. \"always\": events of all ports are used to update a signal without qualified Ethernet port. \"rx-only\": only packets received by the interface are used, which leads to less duplicated updates. \"never\": signals without qualified Ethernet ports are not updated.", + "oneOf": [ + { + "$ref": "#/definitions/779cd/full" + }, + { + "const": "always", + "description": "Events of all ports are used to update a signal without qualified Ethernet port." + }, + { + "const": "rx-only", + "description": "Only packets received by the interface are used, which leads to less duplicated updates." + }, + { + "const": "never", + "description": "Signals without qualified Ethernet ports are not updated." + } + ], + "default": "always", + "examples": ["always", "rx-only", "never"] + }, + "global-tcp-ip-stack": { + "$ref": "#/definitions/8a906/full" + }, + "test-tcp-ip-stack": { + "$ref": "#/definitions/37869/full", + "description": "Configuration for the test TCP/IP stack. If individual configuration a port labeled \"TestStack\" is created automatically." + }, + "protocol-identification": { + "$ref": "#/definitions/a165a/full" + } + }, + "additionalProperties": false, + "examples": [ + { + "access-mode": "network-based" + }, + { + "access-mode": "channel-based", + "signal-updates": "always" + }, + { + "signal-updates": "rx-only" + }, + { + "signal-updates": "never" + } + ] + } + }, + "e1289": { + "full": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "Global settings for .NET", + "description": "Global settings for .NET", + "type": "object", + "properties": { + "database-namespace-generation": { + "description": "This setting can be used to specify that certain namespaces should be generated for all .NET symbols (regardless of their uniqueness). The options \"use-node\" and \"use-frame\" are only relevant for signals. If no value is given, the namespaces for signals are automatically generated so that each class is unique. For each frame, a class is generated in the namespace \"NetworkDB.Frames\".", + "type": "array", + "minItems": 1, + "items": { + "oneOf": [ + { + "type": "string", + "enum": [ + "use-network", + "use-database", + "use-frame", + "use-node" + ] + }, + { + "$ref": "#/definitions/779cd/full" + } + ] + }, + "examples": [ + ["use-network", "use-database", "use-frame", "use-node"] + ] + }, + "target-version": { + "description": "The .NET target version.", + "default": "dotnet-8", + "oneOf": [ + { + "enum": ["dotnet-8", "dotnet-4.7"] + }, + { + "$ref": "#/definitions/779cd/full" + } + ], + "examples": ["dotnet-8", "dotnet-4.7", "${someVariable}"] + } + }, + "additionalProperties": false, + "examples": [ + { + "database-namespace-generation": ["use-network", "${someVariable}"] + } + ] + } + }, + "f4433": { + "full": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "Global performance settings", + "description": "Global performance settings", + "type": "object", + "properties": { + "concurrent-model-execution": { + "description": "Timing behavior of the remaining bus simulation while executing concurrent application models.\n \"prioritize-simulation\": If an overrun occurs during the concurrent execution of a model, this is reported to the model and the pending model execution is delayed until the previous model execution has been completed. During this delay, the simulation time continues to run.\n If time-scaling-factor as-fast-is-possible is active this behavior does not work, so the behavior \"wait-on-overrun\" is used instead.\n \"wait-on-overrun\": If an overrun occurs during the concurrent execution of a model, the simulation time is paused until the previous model execution has been completed. \n \"wait-during-calculation\": The simulation time is paused during model execution. The model only runs concurrently with actions that are to be executed at the same simulation time.", + "default": "prioritize-simulation", + "oneOf": [ + { + "enum": [ + "prioritize-simulation", + "wait-on-overrun", + "wait-during-calculation" + ] + }, + { + "$ref": "#/definitions/779cd/full" + } + ], + "examples": [ + "prioritize-simulation", + "wait-on-overrun", + "wait-during-calculation" + ] + } + }, + "additionalProperties": false, + "examples": [ + { + "concurrent-model-execution": "prioritize-simulation" + } + ] + } + }, + "b7440": { + "full": { + "$schema": "http://json-schema.org/draft-07/schema#", + "description": "Name of a .blf file, supporting the field codes: {ComputerName}, {LocalTime}, {MeasurementIndex}, {MeasurementStart}, {IncSize|001|100MB}, {IncTime|001|01h00m}, {IncTrigger|001}, {TriggerCondition} and {IncTrigger|001}_{TriggerCondition}", + "type": "string", + "anyOf": [ + { + "pattern": "^(?!.*(\\{LoggingBlock\\}|\\{IncMeasurement\\}|\\{ConfigName\\}|[\"<>*?:/\\\\])).*\\.[bB][lL][fF]$" + }, + { + "$ref": "#/definitions/779cd/full" + } + ], + "examples": [ + "fileName.blf", + "file_${SCENARIO_NAME}.blf", + "${name_in_variable}", + "log_{ComputerName}.blf", + "log_{LocalTime}.blf", + "log_{MeasurementIndex}.blf", + "log_{MeasurementStart}.blf", + "log_{IncTrigger|001}.blf", + "log_{TriggerCondition}.blf", + "log_{TriggerCondition|30}.blf" + ] + } + }, + "ad583": { + "full": { + "$schema": "http://json-schema.org/draft-07/schema#", + "type": "array", + "description": "List of event types to be logged.", + "default": [ + "application-layer", + "bus", + "diagnostic", + "internal", + "statistic", + "system-variable", + "test", + "trigger" + ], + "items": { + "anyOf": [ + { + "type": "string", + "enum": [ + "application-layer", + "bus", + "diagnostic", + "internal", + "statistic", + "system-variable", + "test", + "trigger" + ] + }, + { + "$ref": "#/definitions/779cd/full" + } + ] + } + } + }, + "adad4": { + "full": { + "$schema": "http://json-schema.org/draft-07/schema#", + "oneOf": [ + { + "$ref": "#/definitions/779cd/full" + }, + { + "$ref": "#/definitions/1030e/full" + } + ] + } + }, + "ecbde": { + "full": { + "$schema": "http://json-schema.org/draft-07/schema#", + "description": "Absolute or relative path to a VT System configuration file (.vtcfg). Relative path specifications are resolved relative to the configuration file.", + "type": "string", + "anyOf": [ + { + "pattern": "^.*\\.[vV][tT][cC][fF][gG]$" + }, + { + "$ref": "#/definitions/779cd/full" + } + ], + "examples": [ + "path/to/my.vtcfg", + "${path_in_variable}", + "path/${name_in_variable}" + ] + } + }, + "def7c": { + "full": { + "$schema": "http://json-schema.org/draft-07/schema#", + "oneOf": [ + { + "$ref": "#/definitions/8ab6a/full" + }, + { + "type": "array", + "minItems": 1, + "items": { + "$ref": "#/definitions/8ab6a/full" + } + } + ], + "examples": [ + "myDatabase", + [ + "myid", + "THIS_IS_CASE_SENSITIVE", + "__1_2_3_4_5__", + "${id_in_variable}" + ] + ] + } + }, + "eaf9e": { + "full": { + "$schema": "http://json-schema.org/draft-07/schema#", + "$ref": "#/definitions/83eeb/full", + "description": "Defines the mapping of the network to an underlying layer. \nConnects the network either to simulated network (\"internal-simulator\"), hardware (\"external-hardware\") or to SIL Kit (\"external-sil-kit\"). \nThe supported options depend on the time-source. \n\"internal-realtime\" and \"external-software\" are supporting \"internal-simulator\" and \"external-sil-kit\".\n\"internal-scaled\" only supports \"internal-simulator\".\n\"external-hardware\" supports all mappings." + } + }, + "bc336": { + "full": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "CAN FD network settings", + "description": "Settings for the CAN FD network.", + "type": "object", + "additionalProperties": false, + "minProperties": 1, + "properties": { + "mode": { + "description": "Operation mode setting (iso or non-iso mode).", + "oneOf": [ + { + "type": "string", + "enum": ["iso", "non-iso"], + "default": "iso" + }, + { + "$ref": "#/definitions/779cd/full" + } + ] + }, + "arbitration-bit-rate-k-bit-s": { + "description": "Bit rate for the CAN FD arbitration phase in kbit/s. \n If this value is set, it has priority. \n If this value is not set, the arbitration bit rate is read from the database. If it is missing from the database, the default value is used.", + "oneOf": [ + { + "type": "number", + "minimum": 5.0, + "maximum": 2000, + "default": 500.0, + "multipleOf": 0.001 + }, + { + "$ref": "#/definitions/779cd/full" + } + ] + }, + "data-bit-rate-k-bit-s": { + "description": "Bit rate for the CAN FD data phase in kbit/s. \n If this value is set, it has priority. \n If this value is not set, the data bit rate is read from the database. If it is missing from the database, the default value is used.", + "oneOf": [ + { + "type": "number", + "minimum": 5.0, + "maximum": 10000, + "default": 1000.0, + "multipleOf": 0.001 + }, + { + "$ref": "#/definitions/779cd/full" + } + ] + }, + "arbitration-sample-point-in-percent": { + "$ref": "#/definitions/f8ea0/full", + "default": 80.0 + }, + "data-sample-point-in-percent": { + "$ref": "#/definitions/f8ea0/full", + "default": 70.0 + } + }, + "oneOf": [ + { + "required": [ + "arbitration-sample-point-in-percent", + "data-sample-point-in-percent", + "arbitration-bit-rate-k-bit-s", + "data-bit-rate-k-bit-s" + ], + "properties": { + "arbitration-sample-point-in-percent": true, + "data-sample-point-in-percent": true, + "arbitration-bit-rate-k-bit-s": true, + "data-bit-rate-k-bit-s": true + } + }, + { + "required": [ + "arbitration-sample-point-in-percent", + "data-sample-point-in-percent" + ], + "properties": { + "arbitration-sample-point-in-percent": true, + "data-sample-point-in-percent": true, + "arbitration-bit-rate-k-bit-s": false, + "data-bit-rate-k-bit-s": false + } + }, + { + "required": [ + "arbitration-bit-rate-k-bit-s", + "data-bit-rate-k-bit-s" + ], + "properties": { + "arbitration-sample-point-in-percent": false, + "data-sample-point-in-percent": false, + "arbitration-bit-rate-k-bit-s": true, + "data-bit-rate-k-bit-s": true + } + }, + { + "properties": { + "arbitration-sample-point-in-percent": false, + "data-sample-point-in-percent": false, + "arbitration-bit-rate-k-bit-s": false, + "data-bit-rate-k-bit-s": false + } + } + ], + "examples": [ + { + "arbitration-bit-rate-k-bit-s": 500.0, + "data-bit-rate-k-bit-s": 1000.0 + }, + { + "mode": "non-iso", + "arbitration-sample-point-in-percent": 60.0, + "data-sample-point-in-percent": 70.0 + }, + { + "mode": "iso", + "arbitration-bit-rate-k-bit-s": 500.0, + "data-bit-rate-k-bit-s": 1000.0, + "arbitration-sample-point-in-percent": 75.0, + "data-sample-point-in-percent": 80.0 + } + ] + } + }, + "ac192": { + "full": { + "$schema": "http://json-schema.org/draft-07/schema#", + "description": "Absolute or relative path to a logging file (.blf). Relative path specifications are resolved relative to the configuration file.", + "type": "string", + "anyOf": [ + { + "pattern": "^.*\\.[bB][lL][fF]$" + }, + { + "$ref": "#/definitions/779cd/full" + } + ], + "examples": [ + "path/to/my.blf", + "${path_in_variable}", + "path/${name_in_variable}" + ] + } + }, + "ee012": { + "full": { + "$schema": "http://json-schema.org/draft-07/schema#", + "description": "A unique name that can be used to reference this database in the configuration file.\nMust be a C-identifier (case sensitive).", + "type": "string", + "pattern": "^[a-zA-Z_][a-zA-Z0-9_]*$", + "examples": ["myid", "THIS_IS_CASE_SENSITIVE", "__1_2_3_4_5__"] + } + }, + "b29db": { + "full": { + "$schema": "http://json-schema.org/draft-07/schema#", + "description": "Absolute or relative path to a .arxml/.dbc/.ldf. Relative path specifications are resolved relative to the configuration file.", + "type": "string", + "anyOf": [ + { + "pattern": "^.*\\.[Aa][Rr][Xx][Mm][Ll]$" + }, + { + "pattern": "^.*\\.[Dd][Bb][Cc]$" + }, + { + "pattern": "^.*\\.[Ll][Dd][Ff]$" + }, + { + "$ref": "#/definitions/779cd/full" + } + ], + "examples": [ + "path/to/some.dbc", + "path/to/some.arxml", + "path/to/some.ldf", + "path/${var_with_name}", + "${var_with_path}" + ] + } + }, + "b0390": { + "full": { + "$schema": "http://json-schema.org/draft-07/schema#", + "description": "List of defines to be passed to the VCDL importer.", + "type": "array", + "items": { + "anyOf": [ + { + "$ref": "#/definitions/3e203/full" + }, + { + "$ref": "#/definitions/779cd/full" + } + ] + }, + "examples": [ + ["mydefine1", "mydefine2"], + [ + "mydefine_with_value=42", + "${var_with_define_name}=${var_with_define_value}" + ] + ] + } + }, + "e173a": { + "full": { + "$schema": "http://json-schema.org/draft-07/schema#", + "description": "Define to be passed to CAPL, .NET, Python and VCDL.", + "type": "string", + "pattern": "^([a-zA-Z_]|([a-zA-Z_][a-zA-Z0-9_]*)?\\$\\{[a-zA-Z_][a-zA-Z0-9_]*\\})[a-zA-Z0-9_]*(=([+-]?(0|[1-9][0-9]*)|(\\$\\{[a-zA-Z_][a-zA-Z0-9_]*\\})|[Tt]rue|[Ff]alse))?$", + "examples": [ + "mydefine1", + "mydefine2", + "mydefine_with_value=42", + "${var_with_define_name}=${var_with_define_value}" + ] + } + }, + "a855d": { + "full": { + "$schema": "http://json-schema.org/draft-07/schema#", + "description": "A diagnostic description file can contain several language versions of which one has to be selected. Note, that some diagnostic descriptions only support one single language.", + "type": "string", + "oneOf": [ + { + "pattern": "^[a-z]{2}[-][A-Z]{2}$" + }, + { + "pattern": "^[a-z]{2}$" + }, + { + "$ref": "#/definitions/779cd/full" + } + ] + } + }, + "e842d": { + "full": { + "$schema": "http://json-schema.org/draft-07/schema#", + "description": "The seed-and-key file is used to unlock the ECU from CAPL, test units and test modules.", + "type": "string", + "anyOf": [ + { + "pattern": "^.*\\.[dD][lL][lL]$" + }, + { + "$ref": "#/definitions/779cd/full" + } + ], + "examples": [ + "path/to/library.dll", + "path/${var_with_name}", + "${var_with_path}" + ] + } + }, + "f5320": { + "full": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "CAN Settings", + "description": "Settings related to diagnostics with CAN.", + "type": "object", + "additionalProperties": false, + "properties": { + "addressing": { + "$ref": "#/definitions/9f24e/full" + } + } + } + }, + "deffc": { + "full": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "FlexRay Settings", + "description": "Settings related to diagnostics of FlexRay clusters.", + "type": "object", + "additionalProperties": false, + "required": ["database-node"], + "properties": { + "database-node": { + "$ref": "#/definitions/8ab6a/full", + "description": "Database node selected for communication." + }, + "transport-protocol-type": { + "description": "The following protocol types can be selected:\n \"iso-10681-2\"\n \"autosar-2-x\"\n \"autosar-3-x\"", + "default": "iso-10681-2", + "oneOf": [ + { + "type": "string" + }, + { + "$ref": "#/definitions/779cd/full" + } + ] + }, + "tester-pdus-phys": { + "type": "array", + "description": "List of appropriate PDUs from the database for requests and responses used by the diagnostic implementation. Only PDUs with service types \"TPL\", \"DIAG-REQUEST\", DIAG-RESPONSE\" or \"DIAG-STATE\" are available.", + "items": { + "anyOf": [ + { + "type": "string" + }, + { + "$ref": "#/definitions/779cd/full" + } + ] + } + }, + "tester-pdus-func": { + "type": "array", + "description": "List of appropriate PDUs from the database for requests and responses used by the diagnostic implementation. Only PDUs with service types \"TPL\", \"DIAG-REQUEST\", DIAG-RESPONSE\" or \"DIAG-STATE\" are available.", + "items": { + "anyOf": [ + { + "type": "string" + }, + { + "$ref": "#/definitions/779cd/full" + } + ] + } + }, + "ecu-pdus": { + "type": "array", + "description": "List of appropriate PDUs from the database for requests and responses used by the diagnostic implementation. Only PDUs with service types \"TPL\", \"DIAG-REQUEST\", DIAG-RESPONSE\" or \"DIAG-STATE\" are available.", + "items": { + "anyOf": [ + { + "type": "string" + }, + { + "$ref": "#/definitions/779cd/full" + } + ] + } + } + } + } + }, + "f58e9": { + "full": { + "$schema": "http://json-schema.org/draft-07/schema#", + "type": "object", + "additionalProperties": false, + "properties": { + "mac-address": { + "$ref": "#/definitions/d9feb/full" + }, + "mtu": { + "$ref": "#/definitions/cb1c2/full" + }, + "ipv4-settings": { + "$ref": "#/definitions/3d54a/full" + }, + "ipv6-settings": { + "$ref": "#/definitions/f34eb/full" + }, + "vlans": { + "$ref": "#/definitions/31e20/full" + } + }, + "examples": [ + { + "mac-address": "02:84:cf:3b:be:01" + }, + { + "mtu": 1500, + "ipv4-settings": { + "address-configuration": "static", + "addresses": [ + { + "address": "192.168.0.1", + "subnet-mask": "255.255.0.0" + } + ] + }, + "ipv6-settings": { + "address-configuration": "dhcp" + }, + "vlans": [ + { + "id": 42, + "priority": 0 + } + ] + } + ] + } + }, + "f6a56": { + "full": { + "$schema": "http://json-schema.org/draft-07/schema#", + "description": "Via the key slot configuration it is possible to transmit two start-up/sync frames. Thus an external start-up node is not required for the start-up of a FlexRay cluster.", + "type": "object", + "additionalProperties": false, + "properties": { + "slot-1": { + "$ref": "#/definitions/d15ff/full" + }, + "slot-2": { + "$ref": "#/definitions/d15ff/full" + } + } + } + }, + "a165a": { + "full": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "Global protocol identification settings for Ethernet", + "description": "Global protocol identification settings for Ethernet.", + "type": "object", + "minProperties": 1, + "properties": { + "autosar-pdu-multiplexing": { + "type": "object", + "additionalProperties": false, + "minProperties": 1, + "description": "Protocol identification settings for AUTOSAR PDU Multiplexing.", + "properties": { + "udp-port": { + "$ref": "#/definitions/17b86/full", + "description": "UDP port for AUTOSAR PDU Multiplexing." + }, + "tcp-port": { + "$ref": "#/definitions/17b86/full", + "description": "TCP port for AUTOSAR PDU Multiplexing." + } + } + }, + "ccs-sdp": { + "type": "object", + "additionalProperties": false, + "minProperties": 1, + "description": "Protocol identification settings for CCS SDP.", + "properties": { + "udp-port": { + "$ref": "#/definitions/17b86/full", + "description": "UDP port for CCS SDP.", + "default": "[15118]" + } + } + }, + "ccs-v2g": { + "type": "object", + "additionalProperties": false, + "minProperties": 1, + "description": "Protocol identification settings for CCS V2G.", + "properties": { + "tcp-port": { + "$ref": "#/definitions/17b86/full", + "description": "TCP port for CCS V2G." + }, + "tls-port": { + "$ref": "#/definitions/17b86/full", + "description": "TLS port for CCS V2G." + } + } + }, + "dhcpv4": { + "type": "object", + "additionalProperties": false, + "minProperties": 1, + "description": "Protocol identification settings for DHCPv4.", + "properties": { + "udp-port": { + "$ref": "#/definitions/17b86/full", + "description": "UDP port for DHCPv4.", + "default": "[67-68]" + } + } + }, + "dhcpv6": { + "type": "object", + "additionalProperties": false, + "minProperties": 1, + "description": "Protocol identification settings for DHCPv6.", + "properties": { + "udp-port": { + "$ref": "#/definitions/17b86/full", + "description": "UDP port for DHCPv6.", + "default": "[546-547]" + } + } + }, + "doip": { + "type": "object", + "additionalProperties": false, + "minProperties": 1, + "description": "Protocol identification settings for DoIP.", + "properties": { + "udp-port": { + "$ref": "#/definitions/17b86/full", + "description": "UDP port for DoIP.", + "default": "[13400-13402]" + }, + "tcp-port": { + "$ref": "#/definitions/17b86/full", + "description": "TCP port for DoIP.", + "default": "[13400]" + }, + "tls-port": { + "$ref": "#/definitions/17b86/full", + "description": "TLS port for DoIP.", + "default": "[3496]" + } + } + }, + "http": { + "type": "object", + "additionalProperties": false, + "minProperties": 1, + "description": "Protocol identification settings for HTTP.", + "properties": { + "tcp-port": { + "$ref": "#/definitions/17b86/full", + "description": "TCP port for HTTP.", + "default": "[80,8080]" + }, + "tls-port": { + "$ref": "#/definitions/17b86/full", + "description": "TLS port for HTTP.", + "default": "[443]" + } + } + }, + "ikev2": { + "type": "object", + "additionalProperties": false, + "minProperties": 1, + "description": "Protocol identification settings for IKEv2.", + "properties": { + "udp-port": { + "$ref": "#/definitions/17b86/full", + "description": "UDP port for IKEv2.", + "default": "[500]" + } + } + }, + "ntp": { + "type": "object", + "additionalProperties": false, + "minProperties": 1, + "description": "Protocol identification settings for NTP.", + "properties": { + "udp-port": { + "$ref": "#/definitions/17b86/full", + "description": "UDP port for NTP.", + "default": "[123]" + } + } + }, + "rtcp": { + "type": "object", + "additionalProperties": false, + "minProperties": 1, + "description": "Protocol identification settings for RTCP.", + "properties": { + "udp-port": { + "$ref": "#/definitions/17b86/full", + "description": "UDP port for RTCP." + } + } + }, + "rtp": { + "type": "object", + "additionalProperties": false, + "minProperties": 1, + "description": "Protocol identification settings for RTP.", + "properties": { + "udp-port": { + "$ref": "#/definitions/17b86/full", + "description": "UDP port for RTP." + } + } + }, + "snmp": { + "type": "object", + "additionalProperties": false, + "minProperties": 1, + "description": "Protocol identification settings for SNMP.", + "properties": { + "udp-port": { + "$ref": "#/definitions/17b86/full", + "description": "UDP port for SNMP.", + "default": "[161,162]" + } + } + }, + "some-ip": { + "type": "object", + "additionalProperties": false, + "minProperties": 1, + "description": "Protocol identification settings for SOME/IP.", + "properties": { + "udp-port": { + "$ref": "#/definitions/17b86/full", + "description": "UDP port for SOME/IP.", + "default": "[30490]" + }, + "tcp-port": { + "$ref": "#/definitions/17b86/full", + "description": "TCP port for SOME/IP." + }, + "tls-port": { + "$ref": "#/definitions/17b86/full", + "description": "TLS port for SOME/IP." + }, + "dtls-port": { + "$ref": "#/definitions/17b86/full", + "description": "DTLS port for SOME/IP." + } + } + }, + "tftp": { + "type": "object", + "additionalProperties": false, + "minProperties": 1, + "description": "Protocol identification settings for TFTP.", + "properties": { + "udp-port": { + "$ref": "#/definitions/17b86/full", + "description": "UDP port for TFTP.", + "default": "[69]" + } + } + }, + "udp-nm": { + "type": "object", + "additionalProperties": false, + "minProperties": 1, + "description": "Protocol identification settings for UDP NM.", + "properties": { + "udp-port": { + "$ref": "#/definitions/17b86/full", + "description": "UDP port for UDP NM." + } + } + }, + "xcp": { + "type": "object", + "additionalProperties": false, + "minProperties": 1, + "description": "Protocol identification settings for XCP.", + "properties": { + "udp-port": { + "$ref": "#/definitions/17b86/full", + "description": "UDP port for XCP.", + "default": [5555] + }, + "tcp-port": { + "$ref": "#/definitions/17b86/full", + "description": "TCP port for XCP.", + "default": [5555] + } + } + } + }, + "additionalProperties": false, + "examples": [ + { + "doip": { + "udp-port": ["13400-13402"], + "tcp-port": [13400], + "tls-port": [3496] + }, + "http": { + "tcp-port": [80, 8080], + "tls-port": [443] + }, + "some-ip": { + "udp-port": [30490] + } + } + ] + } + }, + "de949": { + "full": { + "$schema": "http://json-schema.org/draft-07/schema#", + "description": "Absolute or relative path to a .vmodule. Relative path specifications are resolved relative to the configuration file.", + "type": "string", + "anyOf": [ + { + "pattern": "^.*\\.[vV][mM][oO][dD][uU][lL][eE]$" + }, + { + "$ref": "#/definitions/779cd/full" + } + ], + "examples": [ + "path/to/my.vmodule", + "${path_in_variable}", + "path/${name_in_variable}" + ] + } + }, + "d5f5d": { + "full": { + "$schema": "http://json-schema.org/draft-07/schema#", + "type": "array", + "minItems": 1, + "items": { + "$ref": "#/definitions/63149/full" + } + } + }, + "d01ad": { + "full": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "Hybdrid Network Mapping", + "description": "A mapping connecting a CANoe and a SIL Kit network of type CAN or Ethernet.", + "type": "object", + "additionalProperties": false, + "required": ["network", "sil-kit-network"], + "properties": { + "network": { + "$ref": "#/definitions/8ab6a/full", + "description": "Name of a CAN or Ethernet network describing a CANoe network.\nMust be a C-identifier (case sensitive)." + }, + "sil-kit-network": { + "$ref": "#/definitions/8ab6a/full", + "description": "Name of a CAN or Ethernet network describing a SIL Kit network.\nMust be a C-identifier (case sensitive)." + }, + "when": { + "$ref": "#/definitions/24f1f/full" + } + }, + "examples": [ + { + "network": "Ethernet1", + "sil-kit-network": "Ethernet3" + } + ] + } + }, + "d2ba8": { + "full": { + "$schema": "http://json-schema.org/draft-07/schema#", + "description": "Absolute or relative path to a .vmodule file. Relative paths are resolved relative to the configuration file.\n If no modeling library is found in the working directory, it is searched in the global modeling libraries.", + "type": "string", + "anyOf": [ + { + "pattern": "^.*\\.[vV][mM][oO][dD][uU][lL][eE]$" + }, + { + "$ref": "#/definitions/779cd/full" + } + ], + "examples": [ + "CANoeILNLVector.vmodule", + "SomeIP_IL.vmodule", + "AsrPDUIL2.vmodule", + "OSEKNM01.vmodule", + "DMOSEKNM.vmodule", + "AsrNM30.vmodule", + "AsrNM33.vmodule", + "AsrUdpNm.vmodule", + "AVB_IL.vmodule", + "CANoeILNL_AUTOSAR_Eth.vmodule", + "LINtp.vmodule", + "SCC_ChargePoint.vmodule", + "SCC_Monitor.vmodule", + "SCC_Vehicle.vmodule", + "path/to/my.vmodule", + "${path_in_variable}", + "path/${name_in_variable}" + ] + } + }, + "f1459": { + "full": { + "$schema": "http://json-schema.org/draft-07/schema#", + "anyOf": [ + { + "type": "object", + "additionalProperties": false, + "required": ["selected-stack"], + "properties": { + "selected-stack": { + "description": "If a linked database contains a stack configuration, it is preferred over other configurations. If set to \"operating-system\", the machine configuration is used.\n If set to \"canoe\", the configuration on the global level is used (this requires global-settings/ethernet/tcp-ip-stack/selected-stack to be set to \"canoe\").\n If set to \"individual\", a custom configuration can be provided at network-assignments[]/tcp-ip-stack-adapter.", + "enum": ["operating-system", "canoe"], + "default": "individual", + "examples": ["operating-system", "canoe", "individual"] + } + } + }, + { + "type": "object", + "additionalProperties": false, + "required": ["selected-stack"], + "properties": { + "selected-stack": { + "description": "If a linked database contains a stack configuration, it is preferred over other configurations. If set to \"operating-system\", the machine configuration is used.\n If set to \"canoe\", the configuration on the global level is used (this requires global-settings/ethernet/tcp-ip-stack/selected-stack to be set to \"canoe\").\n If set to \"individual\", a custom configuration can be provided at network-assignments[]/tcp-ip-stack-adapter.", + "oneOf": [ + { + "enum": ["individual"] + }, + { + "$ref": "#/definitions/779cd/full" + } + ], + "default": "individual", + "examples": ["operating-system", "canoe", "individual"] + }, + "activate-routing": { + "$ref": "#/definitions/698c3/full" + }, + "tcp-delayed-ack": { + "$ref": "#/definitions/6665e/full" + }, + "ipv4-gateway": { + "$ref": "#/definitions/d420a/full" + }, + "ipv6-gateway": { + "$ref": "#/definitions/ea3d5/full" + } + } + } + ] + } + }, + "dfb26": { + "full": { + "$schema": "http://json-schema.org/draft-07/schema#", + "description": "Absolute or relative path to a symbol mapping file (.vmap). Relative path specifications are resolved relative to the configuration file.", + "type": "string", + "anyOf": [ + { + "pattern": "^.*\\.[vV][mM][aA][pP]$" + }, + { + "$ref": "#/definitions/779cd/full" + } + ], + "examples": [ + "path/to/my.vmap", + "${path_in_variable}", + "path/${name_in_variable}" + ] + } + }, + "c49a5": { + "full": { + "$schema": "http://json-schema.org/draft-07/schema#", + "type": "integer", + "minimum": -9223372036854775808, + "maximum": 9223372036854775807 + } + }, + "aa785": { + "full": { + "$schema": "http://json-schema.org/draft-07/schema#", + "$comment": "can't use 18446744073709551615 since our validator uses int64", + "type": "integer", + "minimum": 0, + "maximum": 9223372036854775807 + } + }, + "f26f2": { + "full": { + "$schema": "http://json-schema.org/draft-07/schema#", + "type": "number", + "minimum": -1.79769e308, + "maximum": 1.79769e308 + } + }, + "f8ea0": { + "full": { + "$schema": "http://json-schema.org/draft-07/schema#", + "description": "Sample point in percent.", + "oneOf": [ + { + "type": "number", + "minimum": 50, + "maximum": 100, + "multipleOf": 0.01 + }, + { + "$ref": "#/definitions/779cd/full" + } + ], + "examples": [60.15, 75.0, "${some_variable}"] + } + }, + "d3f0b": { + "full": { + "$schema": "http://json-schema.org/draft-07/schema#", + "description": "Absolute or relative path to a datasource file (.vcdl/.vcodm). Relative path specifications are resolved relative to the configuration file.", + "type": "string", + "anyOf": [ + { + "pattern": "^.*\\.[vV][cC][dD][lL]$" + }, + { + "pattern": "^.*\\.[vV][cC][oO][dD][mM]$" + }, + { + "$ref": "#/definitions/779cd/full" + } + ], + "examples": [ + "path/to/my.vcdl", + "path/to/my.vcodm", + "${path_in_variable}", + "path/${name_in_variable}" + ] + } + }, + "ca6a3": { + "full": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "DoIP addressing", + "description": "Addressing parameter in conformance with the DoIP protocol.", + "type": "object", + "additionalProperties": false, + "properties": { + "logical-ecu-address-func": { + "$ref": "#/definitions/37aed/full", + "description": "Logical address of the ECU for functional diagnostic requests." + }, + "logical-ecu-address-phys": { + "$ref": "#/definitions/37aed/full", + "description": "Logical address of the ECU for physical diagnostic requests." + }, + "logical-tester-address": { + "$ref": "#/definitions/37aed/full", + "description": "Defines the tester address. Messages from the tester will contain this address as source address within the message header." + }, + "logical-gateway-address": { + "$ref": "#/definitions/37aed/full", + "description": "The logical address of the DoIP gateway." + } + } + } + }, + "d9feb": { + "full": { + "$schema": "http://json-schema.org/draft-07/schema#", + "description": "MAC address of the current TCP/IP stack (cannot be a multicast address).", + "type": "string", + "oneOf": [ + { + "pattern": "[0-9a-fA-F][02468aceACE](:[0-9a-fA-F]{2}){5}" + }, + { + "$ref": "#/definitions/779cd/full" + } + ], + "examples": [ + "02:84:cf:3b:be:01", + "aa:bb:cc:dd:ee:ff", + "AA:BB:CC:DD:EE:FF" + ] + } + }, + "cb1c2": { + "full": { + "$schema": "http://json-schema.org/draft-07/schema#", + "description": "Maximum Transmission Unit.", + "oneOf": [ + { + "type": "integer", + "minimum": 1, + "maximum": 1500 + }, + { + "$ref": "#/definitions/779cd/full" + } + ], + "default": 1500 + } + }, + "f34eb": { + "full": { + "$schema": "http://json-schema.org/draft-07/schema#", + "description": "Configurations for IPv6.", + "anyOf": [ + { + "type": "object", + "additionalProperties": false, + "required": ["address-configuration"], + "properties": { + "name": { + "$ref": "#/definitions/9a523/full", + "description": "A unique name that can be used to reference this IPv6 setting in the configuration file.\nMust be a C-identifier (case sensitive)." + }, + "address-configuration": { + "description": "Defines how the addresses are configured. Use \"static\" to configure them manually with the \"addresses\" property or use \"dhcp\" for automatic configuration.", + "examples": ["dhcp", "static"], + "oneOf": [ + { + "const": "dhcp" + }, + { + "$ref": "#/definitions/779cd/full" + } + ] + } + } + }, + { + "type": "object", + "additionalProperties": false, + "required": ["address-configuration", "addresses"], + "properties": { + "addresses": { + "$ref": "#/definitions/698d7/full" + }, + "name": { + "$ref": "#/definitions/9a523/full", + "description": "A unique name that can be used to reference this IPv6 setting in the configuration file.\nMust be a C-identifier (case sensitive)." + }, + "address-configuration": { + "description": "Defines how the addresses are configured. Use \"static\" to configure them manually with the \"addresses\" property or use \"dhcp\" for automatic configuration.", + "oneOf": [ + { + "const": "static" + }, + { + "$ref": "#/definitions/779cd/full" + } + ], + "examples": ["dhcp", "static"] + } + } + } + ], + "examples": [ + { + "address-configuration": "dhcp", + "name": "refNameForDoIP" + }, + { + "address-configuration": "static", + "addresses": [ + { + "address": "1234::abce", + "subnet-prefix-length": 42 + }, + { + "address": "1234::abcf", + "subnet-prefix-length": 24 + } + ] + } + ] + } + }, + "d15ff": { + "full": { + "$schema": "http://json-schema.org/draft-07/schema#", + "description": "Configuration of a key slot node.", + "type": "object", + "additionalProperties": false, + "required": ["mode"], + "properties": { + "mode": { + "description": "Key slot operating modes. \n\"automatic\": the key slot is possibly active. Any active frame in the Tx buffer will be selected for this key slot, if marked as start-up and/or sync frame. \n\"deactivated\": the key slot is not used. \n\"manual\": explicit definition of the key slot properties. If set to \"manual\" the properties \"usage\", \"slot\", \"mask\" and \"leading-cold-start\" are mandatory.", + "default": "automatic", + "oneOf": [ + { + "const": "automatic" + }, + { + "const": "deactivated" + }, + { + "const": "manual" + }, + { + "$ref": "#/definitions/779cd/full" + } + ], + "examples": ["manual", "automatic"] + }, + "usage": { + "oneOf": [ + { + "enum": ["startup", "sync"] + }, + { + "$ref": "#/definitions/779cd/full" + } + ], + "description": "The frame in this slot can be send as start-up or only as sync frame. Only allowed if property \"mode\" is set to \"manual\".", + "default": "startup" + }, + "slot": { + "oneOf": [ + { + "type": "integer", + "minimum": 1, + "maximum": 2047, + "default": 1 + }, + { + "$ref": "#/definitions/779cd/full" + } + ], + "description": "Explicit slot number of the static segment that will be used as the key slot. Only allowed if property \"mode\" is set to \"manual\"." + }, + "mask": { + "oneOf": [ + { + "enum": ["A", "B", "AB"] + }, + { + "$ref": "#/definitions/779cd/full" + } + ], + "description": "Explicit channel mask used for the key slot. Only allowed if property \"mode\" is set to \"manual\".", + "default": "A" + }, + "leading-cold-start": { + "oneOf": [ + { + "type": "boolean" + }, + { + "$ref": "#/definitions/779cd/full" + } + ], + "description": "If deactivated the key slot can only act as a following start-up or integrating sync frame. Only allowed if property \"mode\" is set to \"manual\".", + "default": true + } + }, + "allOf": [ + { + "$comment": "prune-node-from-doc", + "if": { + "required": ["mode"], + "properties": { + "mode": { + "const": "manual" + } + } + }, + "then": { + "required": ["usage", "slot", "mask", "leading-cold-start"], + "properties": { + "mask": true, + "usage": true, + "slot": true, + "leading-cold-start": true + } + } + }, + { + "$comment": "prune-node-from-doc", + "if": { + "required": ["mode"], + "properties": { + "mode": { + "anyOf": [ + { + "const": "deactivated" + }, + { + "const": "automatic" + } + ] + } + } + }, + "then": { + "properties": { + "usage": false, + "slot": false, + "mask": false, + "leading-cold-start": false + } + } + } + ], + "examples": [ + { + "mode": "automatic" + }, + { + "mode": "manual", + "usage": "startup", + "slot": 2, + "mask": "A", + "leading-cold-start": true + } + ] + } + }, + "d420a": { + "full": { + "$schema": "http://json-schema.org/draft-07/schema#", + "description": "IPv4-Address of the Gateway", + "anyOf": [ + { + "$ref": "#/definitions/779cd/full" + }, + { + "$ref": "#/definitions/6dbd8/full" + } + ], + "default": "0.0.0.0" + } + }, + "ea3d5": { + "full": { + "$schema": "http://json-schema.org/draft-07/schema#", + "description": "IPv6-Address of the Gateway", + "anyOf": [ + { + "$ref": "#/definitions/779cd/full" + }, + { + "$ref": "#/definitions/47638/full" + } + ], + "default": "::" + } + }, + "d6d53": { + "full": { + "$schema": "http://json-schema.org/draft-07/schema#", + "type": "integer", + "minimum": 0, + "maximum": 255 + } + }, + "ee814": { + "full": { + "$schema": "http://json-schema.org/draft-07/schema#", + "oneOf": [ + { + "$ref": "#/definitions/779cd/full" + }, + { + "type": "integer", + "minimum": 1, + "maximum": 4094 + } + ], + "examples": [1, 2, 4094] + } + }, + "faee5": { + "full": { + "$schema": "http://json-schema.org/draft-07/schema#", + "type": "array", + "minItems": 1, + "items": { + "$ref": "#/definitions/bea5e/full" + } + } + }, + "f3ec9": { + "full": { + "$schema": "http://json-schema.org/draft-07/schema#", + "$ref": "#/definitions/47638/full", + "description": "IPv6 address" + } + }, + "bea5e": { + "full": { + "$schema": "http://json-schema.org/draft-07/schema#", + "description": "Bypass filter for Ethernet frames that should exceptionally bypass MACsec. It filters either by VLAN ID, EtherType, source MAC address or destination MAC address.", + "type": "object", + "oneOf": [ + { + "additionalProperties": false, + "required": ["vlan-id"], + "properties": { + "vlan-id": { + "$ref": "#/definitions/ee814/full", + "description": "VLAN ID for which the MACsec operations should be bypassed." + }, + "direction": { + "$ref": "#/definitions/1da57/full" + }, + "mask": { + "oneOf": [ + { + "type": "integer", + "minimum": 0, + "maximum": 4095 + }, + { + "$ref": "#/definitions/779cd/full" + } + ], + "default": "0xFFF", + "examples": [1, 4095] + } + } + }, + { + "additionalProperties": false, + "required": ["ether-type"], + "properties": { + "ether-type": { + "description": "Value of the EtherType field for which the MACsec operations should be bypassed.", + "oneOf": [ + { + "type": "integer", + "minimum": 0, + "maximum": 65535 + }, + { + "$ref": "#/definitions/779cd/full" + } + ], + "examples": [512, 34667, 34998] + }, + "direction": { + "$ref": "#/definitions/1da57/full" + } + } + }, + { + "additionalProperties": false, + "required": ["source-mac"], + "properties": { + "source-mac": { + "$ref": "#/definitions/2c5a2/full", + "description": "Source MAC address for which the MACsec operations should be bypassed." + }, + "mask": { + "$ref": "#/definitions/2c5a2/full", + "description": "Mask for source MAC address.", + "default": "FF:FF:FF:FF:FF:FF", + "examples": ["FF:FF:FF:FF:FF:FF"] + }, + "direction": { + "$ref": "#/definitions/1da57/full" + } + } + }, + { + "additionalProperties": false, + "required": ["destination-mac"], + "properties": { + "destination-mac": { + "$ref": "#/definitions/2c5a2/full", + "description": "Destination MAC address for which the MACsec operations should be bypassed." + }, + "mask": { + "$ref": "#/definitions/2c5a2/full", + "description": "Mask for destination MAC address.", + "default": "FF:FF:FF:FF:FF:FF", + "examples": ["FF:FF:FF:FF:FF:FF"] + }, + "direction": { + "$ref": "#/definitions/1da57/full" + } + } + } + ] + } + }, + "35a8b": { + "full": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "CAN Replay Blocks", + "description": "List of CAN replay blocks. Entries can be deactivated with when.", + "type": "array", + "items": { + "$ref": "#/definitions/2f7a0/full" + }, + "examples": [ + [ + { + "name": "my_can_replay_block", + "file-path": "my_logging_file.blf" + } + ], + [ + { + "name": "my_can_replay_block", + "file-path": "my_logging_file.blf", + "when": "SCENARIO_NAME == \"my_scenario_name\"" + }, + { + "name": "my_can_replay_block", + "file-path": "another_logging_file.blf", + "when": "SCENARIO_NAME == \"another_scenario_name\"" + } + ], + [ + { + "name": "ReplayBlock", + "file-path": "MyLoggingFile.blf", + "replay-on-measurement-start": true, + "send-system-variables": false, + "send-tx-messages": true, + "send-rx-messages": false, + "start-timing-condition": { + "condition": "immediately" + }, + "channel-mapping": { + "default-mapping": "as-in-original" + } + } + ] + ] + } + }, + "0e884": { + "full": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "Databases", + "description": "List of databases. Entries can be deactivated with when.", + "type": "array", + "items": { + "$ref": "#/definitions/e7902/full" + }, + "examples": [ + [ + { + "name": "mydbname", + "file-path": "path/to/some.dbc" + } + ], + [ + { + "name": "mydbname", + "file-path": "path/to/some.dbc" + }, + { + "name": "mydbname", + "file-path": "path/to/some.arxml", + "network-name": "network_in_db" + }, + { + "name": "mydbname", + "file-path": "path/to/some.dbc", + "when": "SCENARIO_NAME == \"my_scenario_name\"" + } + ] + ] + } + }, + "96ca3": { + "full": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "Datasources", + "description": "List of datasources. Entries can be deactivated with when.", + "type": "array", + "items": { + "$ref": "#/definitions/e1d24/full" + }, + "examples": [ + [ + { + "file-path": "path/to/my.vcdl" + } + ], + [ + { + "file-path": [ + "path/to/my.vcodm", + "${path_in_variable}", + "path/${name_in_variable}" + ] + } + ], + [ + { + "file-path": "path/to/my.vcdl", + "defines": ["A", "B=42"], + "when": "SCENARIO_NAME == \"my_scenario_name\"" + } + ] + ] + } + }, + "4adac": { + "full": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "Diagnostic description", + "description": "Diagnostic description with CDD.", + "type": "array", + "items": { + "$ref": "#/definitions/dc13d/full" + }, + "examples": [ + [ + { + "name": "DoorFL", + "file-path": "description.cdd", + "interface": "Normal_29BitBase_Variant", + "variant": "Common", + "network-assignment": "can_network" + }, + { + "name": "DoorFL", + "when": "SCENARIO_NAME == \"MyScenario\"", + "file-path": "description.cdd", + "interface": "Normal_29BitBase_Variant", + "variant": "Common", + "network-assignment": "can_network" + } + ], + [ + { + "name": "DoorFL", + "file-path": "description.cdd", + "interface": "${MyVariable}", + "variant": "Common", + "network-assignment": "eth_network", + "communication-parameters": { + "p6-client": 1000, + "p2-server": 50, + "timeout-cr": 200, + "timeout-as": 300 + }, + "doip-settings": { + "tls-mode": "routing-activation", + "tls-client": "Initial TLS Configuration", + "tcp-ip-stack-adapter": "ref_name", + "addressing": { + "logical-ecu-address-func": 1, + "logical-ecu-address-phys": 0, + "logical-tester-address": 3584, + "logical-gateway-address": 1 + } + } + } + ], + [ + { + "name": "DoorFL", + "file-path": "description.cdd", + "interface": "${MyVariable}", + "variant": "Common", + "network-assignment": "fr_cluster", + "flexray-settings": { + "database-node": "Door", + "transport-protocol-type": "autosar-3-x", + "tester-pdus-phys": ["PDU_a", "PDU_b"], + "tester-pdus-func": ["PDU_c", "PDU_d", "PDU_e"], + "ecu-pdus": ["PDU_f"] + } + } + ], + [ + { + "name": "DoorFL", + "file-path": "description.cdd", + "interface": "LIN", + "variant": "Common", + "network-assignment": "lin_network", + "lin-settings": { + "database-node": "Door", + "scheduling-mode": "diagnostics-only", + "node-address": 7 + } + } + ] + ] + } + }, + "6e2dd": { + "full": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "Ethernet Replay Blocks", + "description": "List of Ethernet replay blocks. Entries can be deactivated with when.", + "type": "array", + "items": { + "$ref": "#/definitions/6914e/full" + }, + "examples": [ + [ + { + "name": "my_ethernet_replay_block", + "file-path": "my_logging_file.blf" + } + ], + [ + { + "name": "my_ethernet_replay_block", + "file-path": "my_logging_file.blf", + "when": "SCENARIO_NAME == \"my_scenario_name\"" + }, + { + "name": "my_ethernet_replay_block", + "file-path": "another_logging_file.blf", + "when": "SCENARIO_NAME == \"another_scenario_name\"" + } + ], + [ + { + "name": "ReplayBlock", + "file-path": "MyLoggingFile.blf", + "replay-on-measurement-start": true, + "send-system-variables": false, + "start-timing-condition": { + "condition": "immediately" + }, + "channel-mapping": { + "default-mapping": "as-in-original" + } + } + ] + ] + } + }, + "59a17": { + "full": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "FDX", + "description": "FDX settings. Entry can be deactivated with when.", + "type": "object", + "additionalProperties": false, + "required": ["transport-layer", "port"], + "properties": { + "when": { + "$ref": "#/definitions/24f1f/full" + }, + "transport-layer": { + "description": "Protocol to be used as transport layer for the FDX protocol", + "oneOf": [ + { + "type": "string", + "enum": ["udp/ipv4", "udp/ipv6", "tcp/ipv4", "tcp/ipv6"] + }, + { + "$ref": "#/definitions/779cd/full" + } + ] + }, + "port": { + "description": "UDP or TCP port to be used for the FDX protocol", + "oneOf": [ + { + "type": "integer", + "minimum": 0, + "maximum": 65535 + }, + { + "$ref": "#/definitions/779cd/full" + } + ] + }, + "description-files": { + "description": "List of FDX description files (.xml) that describe which signals or variables are to be exchanged and the manner in which this is to occur (e.g., with regard to grouping).", + "type": "array", + "items": { + "type": "object", + "additionalProperties": false, + "required": ["file-path"], + "properties": { + "when": { + "$ref": "#/definitions/24f1f/full" + }, + "file-path": { + "$ref": "#/definitions/4c810/full" + } + } + } + } + }, + "examples": [ + { + "transport-layer": "udp/ipv4", + "port": 2809 + }, + { + "transport-layer": "tcp/ipv4", + "port": 1859, + "when": "SCENARIO_NAME == \"MyScenario\"" + }, + { + "transport-layer": "tcp/ipv6", + "port": 5555, + "description-files": [ + { + "file-path": "path/to/first.xml" + }, + { + "file-path": "path/to/second.xml" + } + ] + } + ] + } + }, + "1f18c": { + "full": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "FlexRay Clusters", + "description": "List of FlexRay clusters. Entries can be deactivated with when.", + "type": "array", + "items": { + "$ref": "#/definitions/cee65/full" + }, + "examples": [ + [ + { + "name": "my_flexray_cluster", + "database": "DB_1", + "when": "SCENARIO_NAME == \"my_scenario_name\"" + } + ], + [ + { + "name": "my_flexray_cluster", + "database": "DB_1", + "key-slot-configuration": { + "slot-1": { + "mode": "manual", + "usage": "startup", + "mask": "A", + "slot": 1, + "leading-cold-start": true + }, + "slot-2": { + "mode": "automatic" + } + }, + "mapping": "internal-simulator" + } + ], + [ + { + "name": "my_flexray_cluster", + "database": "DB_1", + "mode": "synchronous", + "automatic-restart": true, + "send-wakeup-pattern": true + } + ] + ] + } + }, + "99370": { + "full": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "FlexRay Replay Blocks", + "description": "List of FlexRay replay blocks. Entries can be deactivated with when.", + "type": "array", + "items": { + "$ref": "#/definitions/bc82a/full" + }, + "examples": [ + [ + { + "name": "my_flexray_replay_block", + "file-path": "my_logging_file.blf", + "network": "frCluster" + } + ], + [ + { + "name": "my_flexray_replay_block", + "file-path": "my_logging_file.blf", + "when": "SCENARIO_NAME == \"my_scenario_name\"", + "network": "frCluster" + }, + { + "name": "my_flexray_replay_block", + "file-path": "another_logging_file.blf", + "when": "SCENARIO_NAME == \"another_scenario_name\"", + "network": "frCluster" + } + ] + ] + } + }, + "85173": { + "full": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "Functional mockup units", + "description": "List of functional mockup units. Entries can be deactivated with when.", + "type": "array", + "items": { + "$ref": "#/definitions/25adc/full" + }, + "examples": [ + [ + { + "file-path": "path/to/some.fmu", + "stepsize-in-sec": 1e-5 + } + ], + [ + { + "file-path": "path/to/some.fmu", + "stepsize-in-sec": 2.0, + "debug-output": true, + "when": "SCENARIO_NAME == \"MyScenario\"", + "inactive-model-variables": ["Variable3"] + } + ], + [ + { + "file-path": "path/to/some.fmu", + "stepsize-in-sec": 100.0, + "debug-output": false, + "active-model-variables": ["Variable1", "Variable2"] + } + ] + ] + } + }, + "9adad": { + "full": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "Global Settings", + "description": "Global settings for all scenarios.", + "type": "object", + "additionalProperties": false, + "properties": { + "ethernet": { + "$ref": "#/definitions/f8fa6/full" + }, + "flexray": { + "$ref": "#/definitions/29784/full" + }, + "database": { + "$ref": "#/definitions/9b9c0/full" + }, + "dotnet": { + "$ref": "#/definitions/e1289/full" + }, + "working-mode": { + "$ref": "#/definitions/08952/full" + }, + "python": { + "$ref": "#/definitions/7f875/full" + }, + "performance": { + "$ref": "#/definitions/f4433/full" + } + }, + "examples": [ + { + "ethernet": { + "access-mode": "channel-based", + "signal-updates": "always", + "global-tcp-ip-stack": { + "selected-stack": "canoe", + "activate-routing": true, + "tcp-delayed-ack": true, + "ipv4-gateway": "192.168.0.33", + "ipv6-gateway": "::" + }, + "test-tcp-ip-stack": { + "selected-stack": "individual" + } + } + }, + { + "ethernet": { + "protocol-identification": { + "doip": { + "udp-port": ["13400-13402"], + "tcp-port": [13400], + "tls-port": [3496] + }, + "http": { + "tcp-port": [80, 8080], + "tls-port": [443] + }, + "some-ip": { + "udp-port": [30490] + } + } + } + }, + { + "flexray": { + "enable-dual-channel-support": false, + "postfixes-for-ambiguous-pdus-on-channel": "no-postfixes" + } + }, + { + "database": { + "autosar-pdu-layer": "no-pdus", + "autosar-text-table-entries": "short-label", + "some-ip-pdus-without-service-context": "generate-service", + "use-application-layer-objects": ["ethernet"] + } + }, + { + "working-mode": { + "time-source": "${source}", + "default-network-mapping": "${mapping}" + } + }, + { + "working-mode": { + "time-source": "internal-realtime", + "default-network-mapping": "internal-simulator" + } + }, + { + "working-mode": { + "time-source": "external-software", + "default-network-mapping": "internal-simulator" + } + }, + { + "working-mode": { + "time-source": "external-sil-kit", + "default-network-mapping": "external-sil-kit" + } + }, + { + "working-mode": { + "time-source": "internal-scaled", + "time-scaling-factor": "as-fast-as-possible", + "default-network-mapping": "internal-simulator" + } + }, + { + "working-mode": { + "time-source": "internal-scaled", + "time-scaling-factor": 0.01, + "default-network-mapping": "internal-simulator" + } + }, + { + "working-mode": { + "time-source": "internal-scaled", + "time-scaling-factor": 1, + "default-network-mapping": "internal-simulator" + } + }, + { + "dotnet": { + "target-version": "dotnet-8", + "database-namespace-generation": [ + "use-network", + "${someVariable}" + ] + } + }, + { + "python": { + "interpreter": "3.10.0" + } + }, + { + "performance": { + "concurrent-model-execution": "wait-on-overrun" + } + } + ] + } + }, + "8e88e": { + "local": { + "one": { + "type": "string", + "pattern": "\\.([Yy][Aa]?[Mm][Ll]|[Jj][Ss][Oo][Nn])$" + } + }, + "full": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "Include files", + "description": "Include a different file (similar to #include of the c preprocessor). The order of includes does not matter. Circular/multiple includes are resolved correctly.", + "oneOf": [ + { + "$ref": "#/definitions/8e88e/local/one" + }, + { + "type": "array", + "items": { + "$ref": "#/definitions/8e88e/local/one" + } + } + ], + "examples": [ + "my_include.yaml", + ["my_include.yml", "my_other_include.json"] + ] + } + }, + "18fc9": { + "full": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "LIN Networks", + "description": "List of LIN networks. Entries can be deactivated with when.", + "type": "array", + "items": { + "$ref": "#/definitions/207cb/full" + }, + "examples": [ + [ + { + "name": "my_lin_network" + } + ], + [ + { + "name": "my_lin_network", + "database": "DB_1", + "when": "SCENARIO_NAME == \"my_scenario_name\"" + } + ], + [ + { + "name": "my_lin_network", + "database": "DB_1", + "application-channel": 42, + "mapping": "internal-simulator", + "mode": "responder" + } + ] + ] + } + }, + "648b8": { + "full": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "LIN Replay Blocks", + "description": "List of LIN replay blocks. Entries can be deactivated with when.", + "type": "array", + "items": { + "$ref": "#/definitions/7cd4c/full" + }, + "examples": [ + [ + { + "name": "my_lin_replay_block", + "file-path": "my_logging_file.blf" + } + ], + [ + { + "name": "my_lin_replay_block", + "file-path": "my_logging_file.blf", + "when": "SCENARIO_NAME == \"my_scenario_name\"" + }, + { + "name": "my_lin_replay_block", + "file-path": "another_logging_file.blf", + "when": "SCENARIO_NAME == \"another_scenario_name\"" + } + ], + [ + { + "name": "ReplayBlock", + "file-path": "MyLoggingFile.blf", + "replay-on-measurement-start": true, + "send-system-variables": false, + "start-timing-condition": { + "condition": "immediately" + }, + "channel-mapping": { + "default-mapping": "as-in-original" + }, + "replay-mode": "master-responses-only", + "send-events": ["tx-responses", "rx-responses", "wakeup-signals"] + } + ] + ] + } + }, + "5806f": { + "full": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "Logging Block", + "description": "Configuration of the logging.", + "oneOf": [ + { + "type": "object", + "additionalProperties": false, + "required": ["file-name"], + "properties": { + "file-name": { + "$ref": "#/definitions/b7440/full" + }, + "when": { + "$ref": "#/definitions/24f1f/full" + }, + "logging-events": { + "$ref": "#/definitions/ad583/full" + }, + "advanced": { + "$ref": "#/definitions/34a76/full" + } + } + }, + { + "type": "object", + "additionalProperties": false, + "required": ["file-name", "toggle-trigger"], + "properties": { + "file-name": { + "$ref": "#/definitions/b7440/full" + }, + "when": { + "$ref": "#/definitions/24f1f/full" + }, + "logging-events": { + "$ref": "#/definitions/ad583/full" + }, + "advanced": { + "$ref": "#/definitions/34a76/full" + }, + "toggle-trigger": { + "$ref": "#/definitions/8cc99/full" + } + } + }, + { + "type": "object", + "additionalProperties": false, + "required": ["file-name", "test-trigger"], + "properties": { + "file-name": { + "$ref": "#/definitions/b7440/full" + }, + "when": { + "$ref": "#/definitions/24f1f/full" + }, + "logging-events": { + "$ref": "#/definitions/ad583/full" + }, + "advanced": { + "$ref": "#/definitions/34a76/full" + }, + "test-trigger": { + "$ref": "#/definitions/0a579/full" + } + } + } + ], + "examples": [ + { + "file-name": "file-name.blf", + "logging-events": [ + "bus", + "diagnostic", + "internal", + "${someVariable}" + ], + "advanced": { + "warn-overwritten-log-file": true, + "show-error-on-data-loss": false + } + }, + { + "file-name": "log_{IncTrigger|001}.blf", + "test-trigger": { + "scope": "test-unit", + "verdict": ["fail", "error-in-test-system"], + "pre-trigger-time-ms": 1000, + "post-trigger-time-ms": 1000, + "buffer-size": 5000 + } + }, + { + "file-name": "log_{TriggerCondition}_{LocalTime}.blf", + "toggle-trigger": { + "pre-trigger-time-ms": 1000, + "post-trigger-time-ms": 1000, + "buffer-size": 5000 + } + } + ] + } + }, + "72c68": { + "full": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "Scenarios", + "description": "List of scenarios with the option to define or override variables and defines.", + "type": "array", + "items": { + "$ref": "#/definitions/51ba8/full" + }, + "examples": [ + [ + { + "name": "my_scenario_name" + } + ], + [ + { + "name": "my_scenario_name" + }, + { + "name": "override_variables", + "variables": [ + { + "name": "three", + "value": 3 + } + ] + }, + { + "name": "override_defines", + "defines": ["mydefine", "mydevine_with_value=42"] + } + ], + [ + { + "name": "internal", + "variables": [ + { + "name": "source", + "value": "internal-realtime" + }, + { + "name": "mapping", + "value": "internal-simulator" + } + ] + }, + { + "name": "externalHardware", + "variables": [ + { + "name": "source", + "value": "external-hardware" + }, + { + "name": "mapping", + "value": "external-hardware" + } + ] + }, + { + "name": "externalSoftware", + "variables": [ + { + "name": "source", + "value": "external-software" + }, + { + "name": "mapping", + "value": "external-sil-kit" + } + ] + } + ] + ] + } + }, + "0fe8c": { + "full": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "Symbol mappings", + "description": "List of symbol mapping files. Please ensure that the mappings are valid for the environment. No symbol validation will be performed. Entries can be deactivated with when.", + "type": "array", + "items": { + "$ref": "#/definitions/72fc8/full" + }, + "examples": [ + [ + { + "file-path": "path/to/my.vmap" + } + ], + [ + { + "file-path": ["${path_in_variable}", "path/${name_in_variable}"] + }, + { + "file-path": "path/to/my.vmap", + "when": "SCENARIO_NAME == \"my_scenario_name\"" + } + ] + ] + } + }, + "6cf52": { + "full": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "Variables", + "description": "List of variables to be used in this configuration file.", + "type": "array", + "items": { + "$ref": "#/definitions/9d153/full" + }, + "examples": [ + [ + { + "name": "var", + "value": -42 + } + ], + [ + { + "name": "my_string", + "value": "implicit-type" + }, + { + "name": "var", + "value": 422200000000.0, + "type": "float" + }, + { + "name": "path_var", + "value": "path/to/somewhere", + "type": "path" + }, + { + "name": "uint_enum", + "value": 43, + "type": "uint", + "options": [1, 43, 127] + } + ] + ] + } + }, + "5620d": { + "full": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "VT System", + "description": "VT System settings. Entry can be deactivated with when.", + "type": "object", + "additionalProperties": false, + "required": ["file-path", "module-description-folder"], + "properties": { + "when": { + "$ref": "#/definitions/24f1f/full" + }, + "file-path": { + "$ref": "#/definitions/ecbde/full" + }, + "module-description-folder": { + "description": "Absolute or relative path to the folder containing the VT System module description files. Relative path specifications are resolved relative to the configuration file.", + "anyOf": [ + { + "type": "string" + }, + { + "$ref": "#/definitions/779cd/full" + } + ], + "examples": [ + "path/to/folder/", + "${folder_path_in_variable}", + "path/${folder_name_in_variable}" + ] + } + }, + "examples": [ + { + "file-path": "path/to/config-file.vtcfg", + "module-description-folder": "path/to/moduledescriptions/" + }, + { + "file-path": "${path_in_variable}", + "module-description-folder": "path/to/moduledescriptions/", + "when": "SCENARIO_NAME = \"my_scenario_name\"" + } + ] + } + }, + "18095": { + "full": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "Application Model", + "description": "Describes an application model (.can/.canencr/.cs/.sln/.py/.vmodule/.dll (dotnet assembly)). Also supports local defines.", + "type": "object", + "additionalProperties": false, + "required": ["file-path"], + "properties": { + "when": { + "$ref": "#/definitions/24f1f/full" + }, + "file-path": { + "$ref": "#/definitions/925c3/full" + }, + "defines": { + "$ref": "#/definitions/4a339/full" + } + }, + "examples": [ + { + "file-path": "path/to/my/file.can", + "defines": ["mydefine1", "mydefine=2"] + }, + { + "file-path": "path/to/my/file.can", + "defines": ["mydefine1", "mydefine=2"], + "when": "SCENARIO_NAME == \"my_scenario_name\"" + } + ] + } + }, + "5f27a": { + "full": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "CAN or CAN FD network", + "description": "A network using the CAN or CAN FD protocol.", + "oneOf": [ + { + "type": "object", + "additionalProperties": false, + "required": ["name"], + "properties": { + "name": { + "$ref": "#/definitions/9a523/full", + "description": "A unique name that can be used to reference this CAN/CAN FD network in the configuration file or in programming APIs such as CAPL.\nMust be a C-identifier (case sensitive)." + }, + "when": { + "$ref": "#/definitions/24f1f/full" + }, + "database": { + "$ref": "#/definitions/def7c/full", + "description": "Reference to one or more databases declared in the configuration file. If multiple databases are referenced, the network settings will be read from the first database with valid settings following the order provided here." + }, + "mapping": { + "$ref": "#/definitions/eaf9e/full" + }, + "application-channel": { + "description": "Index of the application channel. Each bus type should provide consecutive indices. Starts counting at 1. Value between 1 and 255. Value \"0\" is not allowed.", + "oneOf": [ + { + "type": "integer", + "minimum": 1, + "maximum": 255, + "default": 1 + }, + { + "$ref": "#/definitions/779cd/full" + } + ] + } + } + }, + { + "type": "object", + "additionalProperties": false, + "required": ["name", "can-settings"], + "properties": { + "name": { + "$ref": "#/definitions/9a523/full", + "description": "A unique name that can be used to reference this CAN/CAN FD network in the configuration file or in programming APIs such as CAPL.\nMust be a C-identifier (case sensitive)." + }, + "when": { + "$ref": "#/definitions/24f1f/full" + }, + "database": { + "$ref": "#/definitions/def7c/full", + "description": "Reference to one or more databases declared in the configuration file. If multiple databases are referenced, the network settings will be read from the first database with valid settings following the order provided here." + }, + "mapping": { + "$ref": "#/definitions/eaf9e/full" + }, + "application-channel": { + "description": "Index of the application channel. Each bus type should provide consecutive indices. Starts counting at 1. Value between 1 and 255. Value \"0\" is not allowed.", + "oneOf": [ + { + "type": "integer", + "minimum": 1, + "maximum": 255, + "default": 1 + }, + { + "$ref": "#/definitions/779cd/full" + } + ] + }, + "can-settings": { + "$ref": "#/definitions/40c96/full" + } + } + }, + { + "type": "object", + "additionalProperties": false, + "required": ["name", "can-fd-settings"], + "properties": { + "name": { + "$ref": "#/definitions/9a523/full", + "description": "A unique name that can be used to reference this CAN/CAN FD network in the configuration file or in programming APIs such as CAPL.\nMust be a C-identifier (case sensitive)." + }, + "when": { + "$ref": "#/definitions/24f1f/full" + }, + "database": { + "$ref": "#/definitions/def7c/full", + "description": "Reference to one or more databases declared in the configuration file. If multiple databases are referenced, the network settings will be read from the first database with valid settings following the order provided here." + }, + "mapping": { + "$ref": "#/definitions/eaf9e/full" + }, + "application-channel": { + "description": "Index of the application channel. Each bus type should provide consecutive indices. Starts counting at 1. Value between 1 and 255. Value \"0\" is not allowed.", + "oneOf": [ + { + "type": "integer", + "minimum": 1, + "maximum": 255, + "default": 1 + }, + { + "$ref": "#/definitions/779cd/full" + } + ] + }, + "can-fd-settings": { + "$ref": "#/definitions/bc336/full" + } + } + } + ], + "examples": [ + { + "name": "my_can_network", + "database": "databaseName" + }, + { + "name": "my_can_network", + "can-settings": { + "bit-rate-k-bit-s": 500.0, + "sample-point-in-percent": 70.0 + } + }, + { + "name": "my_canfd", + "database": "databaseName", + "can-fd-settings": { + "mode": "iso", + "arbitration-bit-rate-k-bit-s": 500.0, + "data-bit-rate-k-bit-s": 1000.0, + "arbitration-sample-point-in-percent": 75.0, + "data-sample-point-in-percent": 80.0 + } + }, + { + "name": "my_can_network", + "when": "SCENARIO_NAME == \"my_scenario_name\"" + } + ] + } + }, + "2f7a0": { + "full": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "CAN replay block", + "description": "A replay block for the CAN protocol.", + "type": "object", + "additionalProperties": false, + "required": ["name", "file-path"], + "properties": { + "name": { + "$ref": "#/definitions/9a523/full", + "description": "A unique name that can be used to reference this CAN replay block in programming APIs such as CAPL.\nMust be a C-identifier (case sensitive)." + }, + "when": { + "$ref": "#/definitions/24f1f/full" + }, + "file-path": { + "$ref": "#/definitions/ac192/full" + }, + "replay-on-measurement-start": { + "description": "Replay starts with measurement start.", + "oneOf": [ + { + "type": "boolean", + "default": true + }, + { + "$ref": "#/definitions/779cd/full" + } + ], + "examples": [true, false, "${variable}"] + }, + "send-system-variables": { + "description": "Sends the system variable values.", + "oneOf": [ + { + "type": "boolean", + "default": true + }, + { + "$ref": "#/definitions/779cd/full" + } + ], + "examples": [true, false, "${variable}"] + }, + "start-timing-condition": { + "$ref": "#/definitions/548bf/full" + }, + "channel-mapping": { + "$ref": "#/definitions/46335/full" + }, + "send-tx-messages": { + "description": "Sends the tx messages.", + "oneOf": [ + { + "type": "boolean", + "default": true + }, + { + "$ref": "#/definitions/779cd/full" + } + ], + "examples": [true, false, "${variable}"] + }, + "send-rx-messages": { + "description": "Sends the rx messages.", + "oneOf": [ + { + "type": "boolean", + "default": true + }, + { + "$ref": "#/definitions/779cd/full" + } + ], + "examples": [true, false, "${variable}"] + } + }, + "examples": [ + { + "name": "ReplayBlock", + "file-path": "MyLoggingFile.blf" + }, + { + "name": "ReplayBlock", + "file-path": "MyLoggingFile.blf", + "when": "SCENARIO_NAME == \"MyScenario\"" + }, + { + "name": "ReplayBlock", + "file-path": "MyLoggingFile.blf", + "replay-on-measurement-start": true, + "send-system-variables": false, + "send-tx-messages": true, + "send-rx-messages": false, + "start-timing-condition": { + "condition": "immediately" + }, + "channel-mapping": { + "default-mapping": "as-in-original" + } + } + ] + } + }, + "689c5": { + "full": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "Define", + "description": "Defines to be passed to CAPL, .NET, Python and VCDL.", + "type": "object", + "additionalProperties": false, + "required": ["define"], + "properties": { + "when": { + "$ref": "#/definitions/24f1f/full" + }, + "define": { + "anyOf": [ + { + "$ref": "#/definitions/e173a/full" + }, + { + "$ref": "#/definitions/4a339/full" + }, + { + "$ref": "#/definitions/779cd/full" + } + ] + } + }, + "examples": [ + { + "define": "mydefine1" + }, + { + "define": ["mydefine1", "mydefine2"] + }, + { + "define": ["mydefine1", "mydefine2"], + "when": "SCENARIO_NAME == \"my_scenario_name\"" + }, + { + "define": [ + "mydefine_with_value=42", + "${var_with_define_name}=${var_with_define_value}" + ] + } + ] + } + }, + "5156f": { + "full": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "Ethernet network", + "description": "A network using the Ethernet protocol.", + "type": "object", + "additionalProperties": false, + "required": ["name"], + "properties": { + "name": { + "$ref": "#/definitions/9a523/full", + "description": "A unique name that can be used to reference this ethernet network in the configuration file or in programming APIs such as CAPL.\nMust be a C-identifier (case sensitive)." + }, + "when": { + "$ref": "#/definitions/24f1f/full" + }, + "database": { + "$ref": "#/definitions/8ab6a/full", + "description": "Reference to a database declared in the configuration file." + }, + "global-tcp-ip-stack-adapter": { + "$ref": "#/definitions/f58e9/full", + "description": "Address configuration for the global TCP/IP stack. This setting is relevant if global-settings/ethernet/global-tcp-ip-stack/selected-stack is set to \"canoe\"." + }, + "test-tcp-ip-stack-adapter": { + "$ref": "#/definitions/f58e9/full", + "description": "Address configuration for the test TCP/IP stack. This setting is relevant if global-settings/ethernet/test-tcp-ip-stack/selected-stack is set to \"individual\"." + }, + "mapping": { + "$ref": "#/definitions/eaf9e/full" + }, + "application-channel": { + "description": "Index of the application channel. Each bus type should provide consecutive indices. Starts counting at 1. Value between 1 and 32. Value \"0\" is not allowed.", + "oneOf": [ + { + "$ref": "#/definitions/779cd/full" + }, + { + "type": "integer", + "minimum": 1, + "maximum": 32 + } + ] + }, + "measurement-ports": { + "description": "A list of measurement ports whose data you want to measure (e.g. for logging).", + "type": "array", + "items": { + "type": "string", + "oneOf": [ + { + "pattern": "^[a-zA-Z][a-zA-Z0-9_]*$" + }, + { + "pattern": "^([a-zA-Z][a-zA-Z0-9_]*)?\\$\\{[a-zA-Z_][a-zA-Z0-9_]*\\}[a-zA-Z0-9_]*$" + } + ], + "examples": ["Port1", "Port2", "${var_with_port}"] + } + } + }, + "examples": [ + { + "name": "my_eth_network" + }, + { + "name": "my_eth_network", + "when": "SCENARIO_NAME == \"my_scenario_name\"" + }, + { + "name": "my_eth_network", + "database": "DB", + "application-channel": 12, + "global-tcp-ip-stack-adapter": { + "mac-address": "02:84:cf:3b:be:01" + }, + "test-tcp-ip-stack-adapter": { + "mtu": 1200, + "mac-address": "02:84:cf:3b:be:01" + }, + "mapping": "external-sil-kit" + }, + { + "name": "my_eth_network", + "database": "DB", + "application-channel": 12, + "mapping": "internal-simulator", + "global-tcp-ip-stack-adapter": { + "mtu": 1500, + "ipv4-settings": { + "address-configuration": "static", + "addresses": [ + { + "address": "192.168.0.1", + "subnet-mask": "255.255.0.0" + } + ] + }, + "ipv6-settings": { + "address-configuration": "dhcp" + }, + "vlans": [ + { + "id": 42, + "priority": 0 + } + ] + } + } + ] + } + }, + "6914e": { + "full": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "Ethernet replay block", + "description": "A replay block for the Ethernet protocol.", + "type": "object", + "additionalProperties": false, + "required": ["name", "file-path"], + "properties": { + "name": { + "$ref": "#/definitions/9a523/full", + "description": "A unique name that can be used to reference this ethernet replay block in programming APIs such as CAPL.\nMust be a C-identifier (case sensitive)." + }, + "when": { + "$ref": "#/definitions/24f1f/full" + }, + "file-path": { + "$ref": "#/definitions/ac192/full" + }, + "replay-on-measurement-start": { + "description": "Replay starts with measurement start.", + "oneOf": [ + { + "type": "boolean", + "default": true + }, + { + "$ref": "#/definitions/779cd/full" + } + ], + "examples": [true, false, "${variable}"] + }, + "send-system-variables": { + "description": "Sends the system variable values.", + "oneOf": [ + { + "type": "boolean", + "default": true + }, + { + "$ref": "#/definitions/779cd/full" + } + ], + "examples": [true, false, "${variable}"] + }, + "start-timing-condition": { + "$ref": "#/definitions/548bf/full" + }, + "channel-mapping": { + "$ref": "#/definitions/46335/full" + } + }, + "examples": [ + { + "name": "ReplayBlock", + "file-path": "MyLoggingFile.blf" + }, + { + "name": "ReplayBlock", + "file-path": "MyLoggingFile.blf", + "when": "SCENARIO_NAME == \"MyScenario\"" + }, + { + "name": "ReplayBlock", + "file-path": "MyLoggingFile.blf", + "replay-on-measurement-start": true, + "send-system-variables": false, + "start-timing-condition": { + "condition": "immediately" + }, + "channel-mapping": { + "default-mapping": "as-in-original" + } + } + ] + } + }, + "24f1f": { + "full": { + "$schema": "http://json-schema.org/draft-07/schema#", + "description": "Node is added to the environment only if the specified condition is true.", + "oneOf": [ + { + "$comment": "impossible to express this grammar as a regex", + "description": "A condition containing logical operators (e.g., ` (intvar > 0 && boolvar) || strvar != \"setup_a\"`). Variables do not have to be escaped. The additional variable \"SCENARIO_NAME\" always contains the current scenario name.", + "type": "string" + }, + { + "description": "A boolean constant.", + "type": "boolean" + } + ], + "examples": [ + "SCENARIO_NAME == \"my_scenario_name\"", + "some_variable == \"somevalue\"", + "some_int_variable > 42 && some_other_int_variable <= 42", + true + ] + } + }, + "779cd": { + "full": { + "$schema": "http://json-schema.org/draft-07/schema#", + "type": "string", + "pattern": "\\$\\{[a-zA-Z_][a-zA-Z0-9_]*\\}", + "examples": ["${myvarname}"] + } + }, + "4c810": { + "full": { + "$schema": "http://json-schema.org/draft-07/schema#", + "description": "Absolute or relative path to a FDX description file (.xml). Relative path specifications are resolved relative to the configuration file.", + "type": "string", + "anyOf": [ + { + "pattern": "^.*\\.[xX][mM][lL]$" + }, + { + "$ref": "#/definitions/779cd/full" + } + ], + "examples": [ + "path/to/myDescriptionFile.xml", + "${path_in_variable}", + "path/${name_in_variable}" + ] + } + }, + "25adc": { + "local": { + "stepsize-in-sec": { + "description": "Step size in seconds.", + "oneOf": [ + { + "type": "number", + "exclusiveMinimum": 0, + "maximum": 10000, + "multipleOf": 1e-5 + }, + { + "$ref": "#/definitions/779cd/full" + } + ], + "examples": [1e-5, 2, 10000, "${var_with_path}"] + }, + "debug-output": { + "description": "Is the debug output active.", + "oneOf": [ + { + "type": "boolean", + "default": false + }, + { + "$ref": "#/definitions/779cd/full" + } + ], + "examples": [false, true, "${var_with_path}"] + }, + "active-model-variables": { + "description": "List of FMU model variables to be considered during the simulation.", + "type": "array", + "items": { + "anyOf": [ + { + "type": "string" + }, + { + "$ref": "#/definitions/779cd/full" + } + ], + "examples": ["Variable1", "${var_with_path}"] + } + }, + "inactive-model-variables": { + "description": "List of FMU model variables to be ignored during the simulation.", + "type": "array", + "items": { + "anyOf": [ + { + "type": "string" + }, + { + "$ref": "#/definitions/779cd/full" + } + ], + "examples": ["Variable1", "${var_with_path}"] + } + } + }, + "full": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "Functional mockup unit", + "description": "Defines a functional mockup unit (.fmu). By default, all the fmu variables are activated.", + "type": "object", + "oneOf": [ + { + "additionalProperties": false, + "required": ["file-path", "stepsize-in-sec"], + "properties": { + "when": { + "$ref": "#/definitions/24f1f/full" + }, + "file-path": { + "$ref": "#/definitions/325f7/full" + }, + "stepsize-in-sec": { + "$ref": "#/definitions/25adc/local/stepsize-in-sec" + }, + "debug-output": { + "$ref": "#/definitions/25adc/local/debug-output" + } + } + }, + { + "additionalProperties": false, + "required": [ + "file-path", + "stepsize-in-sec", + "active-model-variables" + ], + "properties": { + "when": { + "$ref": "#/definitions/24f1f/full" + }, + "file-path": { + "$ref": "#/definitions/325f7/full" + }, + "stepsize-in-sec": { + "$ref": "#/definitions/25adc/local/stepsize-in-sec" + }, + "debug-output": { + "$ref": "#/definitions/25adc/local/debug-output" + }, + "active-model-variables": { + "$ref": "#/definitions/25adc/local/active-model-variables" + } + } + }, + { + "additionalProperties": false, + "required": [ + "file-path", + "stepsize-in-sec", + "inactive-model-variables" + ], + "properties": { + "when": { + "$ref": "#/definitions/24f1f/full" + }, + "file-path": { + "$ref": "#/definitions/325f7/full" + }, + "stepsize-in-sec": { + "$ref": "#/definitions/25adc/local/stepsize-in-sec" + }, + "debug-output": { + "$ref": "#/definitions/25adc/local/debug-output" + }, + "inactive-model-variables": { + "$ref": "#/definitions/25adc/local/inactive-model-variables" + } + } + } + ] + } + }, + "29784": { + "full": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "Global settings for FlexRay", + "description": "Global settings for FlexRay controlling the interpretation of frames and PDUs of FlexRay configurations with channels A and B.", + "type": "object", + "additionalProperties": false, + "properties": { + "enable-dual-channel-support": { + "description": "If active, PDUs on both channels will be configured with channel mask \"AB\" and channel postfixes (e.g. xy_Ch_A, xy_Ch_B) will be created for ambiguous objects. If this property is provided \"postfixes-for-ambiguous-pdus-on-channel\" is forbidden.", + "oneOf": [ + { + "$ref": "#/definitions/779cd/full" + }, + { + "type": "boolean" + } + ], + "default": true + }, + "postfixes-for-ambiguous-pdus-on-channel": { + "description": "Definition of postfix settings if dual channel support is not activated. If this property is provided \"enable-dual-channel-support\" is forbidden.", + "oneOf": [ + { + "enum": ["A", "B", "A&B", "no-postfixes"] + }, + { + "$ref": "#/definitions/779cd/full" + } + ], + "default": "A&B" + } + }, + "allOf": [ + { + "$comment": "prune-node-from-doc", + "if": { + "required": ["enable-dual-channel-support"], + "properties": { + "enable-dual-channel-support": { + "const": true + } + } + }, + "then": { + "properties": { + "postfixes-for-ambiguous-pdus-on-channel": false + } + } + }, + { + "$comment": "prune-node-from-doc", + "if": { + "required": ["enable-dual-channel-support"], + "properties": { + "enable-dual-channel-support": { + "const": false + } + } + }, + "then": { + "required": ["postfixes-for-ambiguous-pdus-on-channel"], + "properties": { + "postfixes-for-ambiguous-pdus-on-channel": true + } + } + } + ], + "examples": [ + { + "enable-dual-channel-support": true + }, + { + "enable-dual-channel-support": false, + "postfixes-for-ambiguous-pdus-on-channel": "no-postfixes" + } + ] + } + }, + "9b9c0": { + "full": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "Global settings for database", + "description": "Global settings for database.", + "type": "object", + "additionalProperties": false, + "properties": { + "autosar-pdu-layer": { + "default": "from-autosar-4.2", + "description": "Configures the PDU layer in relation to AUTOSAR databases.\n\"no-pdus\" : Creation of frames only \n\"from-autosar-4.0\" : Creation of AUTOSAR PDUs for AUTOSAR DBs >= 4.0 \n\"from-autosar-4.2\" : Creation of AUTOSAR PDUs for AUTOSAR DBs >= 4.2 ", + "oneOf": [ + { + "type": "string", + "enum": ["no-pdus", "from-autosar-4.0", "from-autosar-4.2"], + "examples": ["no-pdus", "from-autosar-4.0", "from-autosar-4.2"] + }, + { + "$ref": "#/definitions/779cd/full" + } + ] + }, + "autosar-text-table-entries": { + "description": "Controls naming of text table entries and influences signal qualification.\n\"compu-const\": uses text from COMPU-CONST nodes.\n \"short-label\": uses text from SHORT-LABEL nodes.", + "default": "compu-const", + "oneOf": [ + { + "type": "string", + "enum": ["compu-const", "short-label"], + "examples": ["compu-const", "short-label"] + }, + { + "$ref": "#/definitions/779cd/full" + } + ] + }, + "some-ip-pdus-without-service-context": { + "description": "Controls the generation of services for SOME/IP PDUs without service context.", + "default": "ignore", + "oneOf": [ + { + "type": "string", + "enum": ["ignore", "generate-service"], + "examples": ["ignore", "generate-service"] + }, + { + "$ref": "#/definitions/779cd/full" + } + ] + }, + "use-application-layer-objects": { + "description": "Generates application layer objects for the specified network types.", + "type": "array", + "default": ["ethernet"], + "minItems": 0, + "items": { + "oneOf": [ + { + "type": "string", + "enum": ["ethernet"] + }, + { + "$ref": "#/definitions/779cd/full" + } + ] + }, + "examples": [["ethernet"], ["${my_variable}"]] + }, + "split-overlapping-nm-flexray-frames": { + "description": "If active, FlexRay network management frames whose slot cycles overlap are split into several frames. If necessary, new frames/PDUs are created and optimally distributed to the free slot cycles found in the schedule table.", + "oneOf": [ + { + "$ref": "#/definitions/779cd/full" + }, + { + "type": "boolean" + } + ], + "default": true + } + }, + "examples": [ + { + "autosar-pdu-layer": "no-pdus" + }, + { + "autosar-text-table-entries": "compu-const" + }, + { + "some-ip-pdus-without-service-context": "generate-service" + }, + { + "use-application-layer-objects": ["ethernet"] + }, + { + "autosar-pdu-layer": "no-pdus", + "autosar-text-table-entries": "short-label", + "some-ip-pdus-without-service-context": "generate-service", + "use-application-layer-objects": ["ethernet"] + }, + { + "split-overlapping-nm-flexray-frames": false + } + ] + } + }, + "08952": { + "full": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "Global settings for the simulation working mode.", + "description": "Global settings for the simulation working mode.", + "type": "object", + "additionalProperties": false, + "properties": { + "time-scaling-factor": { + "description": "This property is only evaluated if \"time-source\" is set to \"internal-scaled\". If a number is provided, the measurement is slowed-down by this factor. For scaling factors between zero and one, the simulation is accelerated accordingly. For example, if you enter the value 0.1 the measurement is accelerated by a factor of 10. \n\"as-fast-as-possible\": Run the simulation as fast as possible. The simulation speed is not constant and depends on the performance of the computer and the load that is provoked by the simulation.", + "oneOf": [ + { + "type": "number", + "exclusiveMinimum": 0, + "maximum": 1e37, + "multipleOf": 1e-6 + }, + { + "const": "as-fast-as-possible" + }, + { + "$ref": "#/definitions/779cd/full" + } + ], + "default": "as-fast-as-possible", + "examples": [0.005, 1, 100, "as-fast-as-possible"] + }, + "time-source": { + "description": "Time source for the simulation. \nIf this property is set, \"default-network-mapping\" is also required. \n\"internal-realtime\": The time response of the measurement (time basis) is controlled internally. \n\"internal-scaled\": The simulation speed is provided through the property \"time-scaling-factor\". \n\"external-software\": The time response of the measurement (time basis) is controlled by an external program which is not Vector SIL Kit. \n\"external-sil-kit\" : The time response of the measurement (time basis) is controlled by Vector SIL Kit. \n\"external-hardware\": The time response of the measurement (time basis) is controlled by external hardware.", + "default": "internal-realtime", + "oneOf": [ + { + "enum": [ + "internal-realtime", + "internal-scaled", + "external-software", + "external-sil-kit", + "external-hardware" + ] + }, + { + "$ref": "#/definitions/779cd/full" + } + ], + "examples": [ + "internal-realtime", + "internal-scaled", + "external-software", + "external-sil-kit", + "external-hardware" + ] + }, + "default-network-mapping": { + "$ref": "#/definitions/83eeb/full", + "description": "Defines the default network mapping to an underlying layer. \nConnects the networks either to simulated network (\"internal-simulator\"), hardware (\"external-hardware\") or to SIL Kit (\"external-sil-kit\"). \nThis value can be overwritten on network level. If \"time-source\" is set, this property is also required. \nThe supported options depend on the time-source. \n\"internal-realtime\", \"external-software\" and \"external-sil-kit\" are supporting \"internal-simulator\" and \"external-sil-kit\".\n\"internal-scaled\" only supports \"internal-simulator\".\n\"external-hardware\" supports all mappings.", + "default": "internal-simulator" + } + }, + "allOf": [ + { + "$comment": "prune-node-from-doc", + "if": { + "required": ["time-source"], + "properties": { + "time-source": { + "const": "internal-scaled" + } + } + }, + "then": { + "required": ["default-network-mapping"], + "properties": { + "time-scaling-factor": true, + "default-network-mapping": { + "const": "internal-simulator" + } + } + } + }, + { + "$comment": "prune-node-from-doc", + "if": { + "required": ["time-source"], + "properties": { + "time-source": { + "enum": ["internal-realtime", "external-software"] + } + } + }, + "then": { + "required": ["default-network-mapping"], + "properties": { + "time-scaling-factor": false, + "default-network-mapping": { + "oneOf": [ + { + "const": "internal-simulator" + }, + { + "const": "external-sil-kit" + } + ] + } + } + } + } + ], + "examples": [ + { + "time-source": "internal-realtime", + "default-network-mapping": "internal-simulator" + }, + { + "time-source": "external-software", + "default-network-mapping": "external-sil-kit" + }, + { + "time-source": "internal-scaled", + "time-scaling-factor": "as-fast-as-possible", + "default-network-mapping": "internal-simulator" + }, + { + "time-source": "internal-scaled", + "time-scaling-factor": 0.01, + "default-network-mapping": "internal-simulator" + }, + { + "time-source": "internal-scaled", + "time-scaling-factor": 1, + "default-network-mapping": "internal-simulator" + }, + { + "time-source": "external-sil-kit", + "default-network-mapping": "external-sil-kit" + } + ] + } + }, + "7f875": { + "full": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "Global settings for Python", + "description": "Global settings for Python", + "type": "object", + "properties": { + "interpreter": { + "description": "The Python interpreter version. If no interpreter is specified, one is selected automatically. Version greater than or equal to 3.10.0 are supported.", + "anyOf": [ + { + "$ref": "#/definitions/779cd/full" + }, + { + "type": "string", + "pattern": "^(3)\\.([1-9][0-9]{1,3})\\.([0-9]{1,4})$" + } + ], + "examples": ["3.10.0", "3.11.0", "3.12.0", "3.13.0"] + } + }, + "additionalProperties": false, + "examples": [ + { + "interpreter": "3.10.0" + } + ] + } + }, + "207cb": { + "full": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "LIN network", + "description": "A network using the LIN protocol.", + "type": "object", + "additionalProperties": false, + "required": ["name"], + "properties": { + "name": { + "$ref": "#/definitions/9a523/full", + "description": "A unique name that can be used to reference this LIN network in the configuration file or in programming APIs such as CAPL.\nMust be a C-identifier (case sensitive)." + }, + "when": { + "$ref": "#/definitions/24f1f/full" + }, + "database": { + "$ref": "#/definitions/8ab6a/full", + "description": "Reference to a database declared in the configuration file." + }, + "application-channel": { + "description": "Index of the application channel. Each bus type should provide consecutive indices. Starts counting at 1. Value between 1 and 255. Value \"0\" is not allowed.", + "oneOf": [ + { + "type": "integer", + "minimum": 1, + "maximum": 255, + "default": 1 + }, + { + "$ref": "#/definitions/779cd/full" + } + ] + }, + "mapping": { + "$ref": "#/definitions/eaf9e/full" + }, + "mode": { + "description": "Working mode of the LIN interface.\n \"commander\": the LIN network interface is able to output message headers on the network.\n\"responder\": the LIN network interface responds to received LIN headers if a response to the LIN ID contained within the header has been configured.\n \"commander-no-resistor\": commander but with disabled resistor.", + "oneOf": [ + { + "enum": ["commander", "responder", "commander-no-resistor"] + }, + { + "$ref": "#/definitions/779cd/full" + } + ], + "default": "commander", + "examples": ["commander", "responder", "commander-no-resistor"] + } + }, + "examples": [ + { + "name": "my_lin_network" + }, + { + "name": "my_lin_network", + "when": "SCENARIO_NAME == \"my_scenario_name\"" + }, + { + "name": "my_lin_network", + "database": "DB_1", + "application-channel": 42, + "mapping": "internal-simulator", + "mode": "responder" + } + ] + } + }, + "7cd4c": { + "full": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "LIN replay block", + "description": "A replay block for the LIN protocol.", + "type": "object", + "additionalProperties": false, + "required": ["name", "file-path"], + "properties": { + "name": { + "$ref": "#/definitions/9a523/full", + "description": "A unique name that can be used to reference this LIN replay block in programming APIs such as CAPL.\nMust be a C-identifier (case sensitive)." + }, + "when": { + "$ref": "#/definitions/24f1f/full" + }, + "file-path": { + "$ref": "#/definitions/ac192/full" + }, + "replay-on-measurement-start": { + "description": "Replay starts with measurement start.", + "oneOf": [ + { + "type": "boolean", + "default": true + }, + { + "$ref": "#/definitions/779cd/full" + } + ], + "examples": [true, false, "${variable}"] + }, + "send-system-variables": { + "description": "Sends the system variable values.", + "oneOf": [ + { + "type": "boolean", + "default": true + }, + { + "$ref": "#/definitions/779cd/full" + } + ], + "examples": [true, false, "${variable}"] + }, + "start-timing-condition": { + "$ref": "#/definitions/548bf/full" + }, + "channel-mapping": { + "$ref": "#/definitions/46335/full" + }, + "replay-mode": { + "description": "Selects events to be replayed. \n\"all-responses\": replay all the responses.\n\"master-responses-only\": replay the responses only for frames published by the Master node.\n\"master-requests-only\": replay only 0x3c responses.\n\"no-headers\": disable replay of the LIN frame headers.", + "default": "all-responses", + "oneOf": [ + { + "type": "string", + "enum": [ + "all-responses", + "master-responses-only", + "master-requests-only", + "no-headers" + ] + }, + { + "$ref": "#/definitions/779cd/full" + } + ] + }, + "send-events": { + "description": "Selects which events from \"rx-responses\", \"tx-responses\" and \"wakeup-signals\" are replayed. If not set, the default value depends on the value of replay-mode.\n For \"all-responses\" or \"master-responses-only\": all events are sent.\n For \"master-requests-only\": only wakeup-events are sent.\n For \"no-headers\": none of the events are sent.", + "type": "array", + "items": { + "anyOf": [ + { + "type": "string", + "enum": ["tx-responses", "rx-responses", "wakeup-signals"] + }, + { + "$ref": "#/definitions/779cd/full" + } + ] + } + } + }, + "examples": [ + { + "name": "ReplayBlock", + "file-path": "MyLoggingFile.blf" + }, + { + "name": "ReplayBlock", + "file-path": "MyLoggingFile.blf", + "when": "SCENARIO_NAME == \"MyScenario\"" + }, + { + "name": "ReplayBlock", + "file-path": "MyLoggingFile.blf", + "replay-on-measurement-start": true, + "send-system-variables": false, + "start-timing-condition": { + "condition": "immediately" + }, + "channel-mapping": { + "default-mapping": "as-in-original" + }, + "replay-mode": "master-responses-only", + "send-events": ["tx-responses", "rx-responses", "wakeup-signals"] + } + ] + } + }, + "34a76": { + "full": { + "$schema": "http://json-schema.org/draft-07/schema#", + "description": "Advanced logging configurations.", + "type": "object", + "additionalProperties": false, + "properties": { + "warn-overwritten-log-file": { + "description": "Specifies whether a warning is shown at the start of measurement before overwriting an existing logging file.", + "oneOf": [ + { + "type": "boolean" + }, + { + "$ref": "#/definitions/779cd/full" + } + ], + "default": true + }, + "show-error-on-data-loss": { + "description": "Specifies whether an error is shown after the measurement if data loss occurred during the measurement. Lines in the logging file marked with a * as a special symbol have corrupted lines around them.", + "oneOf": [ + { + "type": "boolean" + }, + { + "$ref": "#/definitions/779cd/full" + } + ], + "default": true + } + }, + "examples": [ + { + "warn-overwritten-log-file": false, + "show-error-on-data-loss": true + }, + { + "warn-overwritten-log-file": true + } + ] + } + }, + "8cc99": { + "full": { + "$schema": "http://json-schema.org/draft-07/schema#", + "description": "Toggle trigger settings. The user can control the start and stop of logging. For example via CAPL.\n Must not be used together with \"test-trigger\".", + "type": "object", + "additionalProperties": false, + "minProperties": 1, + "properties": { + "pre-trigger-time-ms": { + "description": "Time before triggering that should also be logged.", + "oneOf": [ + { + "type": "integer", + "minimum": 0, + "maximum": 21000000, + "default": 0 + }, + { + "$ref": "#/definitions/779cd/full" + } + ] + }, + "post-trigger-time-ms": { + "description": "Time after the triggered stopped that should also be logged.", + "oneOf": [ + { + "type": "integer", + "minimum": 0, + "maximum": 21000000, + "default": 0 + }, + { + "$ref": "#/definitions/779cd/full" + } + ] + }, + "buffer-size": { + "description": "Event buffer size for events pre-trigger-time-ms", + "oneOf": [ + { + "type": "integer", + "minimum": 1, + "maximum": 2097152, + "default": 5000 + }, + { + "$ref": "#/definitions/779cd/full" + } + ] + } + }, + "examples": [ + { + "pre-trigger-time-ms": 100 + }, + { + "pre-trigger-time-ms": 1000, + "post-trigger-time-ms": 1000, + "buffer-size": 5000 + } + ] + } + }, + "0a579": { + "full": { + "$schema": "http://json-schema.org/draft-07/schema#", + "description": "Test trigger settings. The execution period of test elements controls the start and stop of logging.", + "type": "object", + "required": ["scope"], + "additionalProperties": false, + "properties": { + "scope": { + "description": "Scope of the test trigger, for each a logging file is created.", + "oneOf": [ + { + "enum": ["test-unit", "test-implementation-entity", "test-case"] + }, + { + "$ref": "#/definitions/779cd/full" + } + ], + "examples": ["test-unit", "test-implementation-entity", "test-case"] + }, + "verdict": { + "type": "array", + "description": "List of test verdicts for which logging files will remain stored.", + "default": [ + "none", + "pass", + "inconclusive", + "fail", + "error-in-test-system" + ], + "items": { + "anyOf": [ + { + "type": "string", + "enum": [ + "none", + "pass", + "inconclusive", + "fail", + "error-in-test-system" + ] + }, + { + "$ref": "#/definitions/779cd/full" + } + ] + }, + "examples": [ + ["none"], + ["pass"], + ["inconclusive"], + ["fail"], + ["error-in-test-system"] + ] + }, + "pre-trigger-time-ms": { + "description": "Time before triggering that should also be logged.", + "oneOf": [ + { + "type": "integer", + "minimum": 0, + "maximum": 21000000, + "default": 0 + }, + { + "$ref": "#/definitions/779cd/full" + } + ], + "examples": [] + }, + "post-trigger-time-ms": { + "description": "Time after the triggered stopped that should also be logged.", + "oneOf": [ + { + "type": "integer", + "minimum": 0, + "maximum": 21000000, + "default": 0 + }, + { + "$ref": "#/definitions/779cd/full" + } + ] + }, + "buffer-size": { + "description": "Event buffer size for events pre-trigger-time-ms", + "oneOf": [ + { + "type": "integer", + "minimum": 1, + "maximum": 2097152, + "default": 5000 + }, + { + "$ref": "#/definitions/779cd/full" + } + ] + } + }, + "examples": [ + { + "scope": "test-unit", + "verdict": [ + "none", + "pass", + "inconclusive", + "fail", + "error-in-test-system" + ] + }, + { + "scope": "test-unit", + "verdict": ["fail", "error-in-test-system"], + "pre-trigger-time-ms": 1000, + "post-trigger-time-ms": 1000, + "buffer-size": 5000 + } + ] + } + }, + "17563": { + "full": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "Programming modules", + "description": "Describes a CAPL or C library (.vmodule).", + "type": "object", + "additionalProperties": false, + "properties": { + "when": { + "$ref": "#/definitions/24f1f/full" + }, + "capl-library-path": { + "description": "Absolute or relative path to a CAPL library (.vmodule). Relative path specifications are resolved relative to the configuration file.", + "oneOf": [ + { + "$ref": "#/definitions/de949/full" + }, + { + "type": "array", + "items": { + "$ref": "#/definitions/de949/full" + } + } + ] + }, + "c-library-path": { + "description": "Absolute or relative path to a C-library (.vmodule). Relative path specifications are resolved relative to the configuration file.", + "oneOf": [ + { + "$ref": "#/definitions/de949/full" + }, + { + "type": "array", + "items": { + "$ref": "#/definitions/de949/full" + } + } + ] + } + } + } + }, + "51ba8": { + "full": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "Scenario", + "description": "A scenario with the option to define or override variables and defines.", + "type": "object", + "additionalProperties": false, + "required": ["name"], + "properties": { + "name": { + "description": "Name of the scenario", + "type": "string", + "pattern": "^[a-zA-Z_][a-zA-Z0-9_]*$", + "not": { + "const": "Default" + } + }, + "variables": { + "$ref": "#/definitions/6cf52/full" + }, + "defines": { + "$ref": "#/definitions/4a339/full" + } + }, + "examples": [ + { + "name": "my_scenario_name" + }, + { + "name": "override_variables", + "variables": [ + { + "name": "three", + "value": 3 + } + ] + }, + { + "name": "override_defines", + "defines": ["mydefine", "mydevine_with_value=42"] + } + ] + } + }, + "469f5": { + "full": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "Network Security Profile Assignments", + "description": "List with security profile to network assignments. The security profile is used for SecOC, Diagnostics and Backend Access.", + "type": "array", + "items": { + "title": "Network Security Profile Assignment", + "type": "object", + "description": "Assignment of a security profile to a network.", + "additionalProperties": false, + "required": ["network", "profile-id"], + "properties": { + "network": { + "$ref": "#/definitions/8ab6a/full", + "description": "The name of the network to which the security profile shall be assigned." + }, + "profile-id": { + "$ref": "#/definitions/adad4/full", + "description": "The ID of the assigned security profile." + }, + "when": { + "$ref": "#/definitions/24f1f/full" + } + } + }, + "examples": [ + [ + { + "network": "CAN1", + "profile-id": 123456 + }, + { + "network": "CAN2", + "profile-id": 654321 + } + ], + [ + { + "network": "CAN", + "profile-id": "${SECURITY_PROFILE_ID}" + } + ], + [ + { + "network": "CAN", + "profile-id": 123456, + "when": "SCENARIO_NAME == \"MyScenarioWithEnabledSecurity\"" + } + ] + ] + } + }, + "6fca5": { + "full": { + "$schema": "http://json-schema.org/draft-07/schema", + "title": "Ethernet Stack Security Profile Assignments", + "description": "List with security profile to Ethernet stack assignments. The security profile is used for TLS and IPSec.", + "type": "array", + "items": { + "title": "Ethernet Stack Security Profile Assignment", + "type": "object", + "description": "Assignment of a security profile to an Ethernet stack.", + "additionalProperties": false, + "required": ["simulation-node", "profile-id"], + "properties": { + "simulation-node": { + "$ref": "#/definitions/8ab6a/full", + "description": "The name of the simulation node. The security profile will be assigned to the Ethernet stack of the simulation node." + }, + "profile-id": { + "$ref": "#/definitions/adad4/full", + "description": "The ID of the assigned security profile." + }, + "when": { + "$ref": "#/definitions/24f1f/full" + } + } + }, + "examples": [ + [ + { + "simulation-node": "MySimulationNode", + "profile-id": 123456 + }, + { + "simulation-node": "AnotherSimulationNode", + "profile-id": 654321 + } + ], + [ + { + "simulation-node": "MySimulationNode", + "profile-id": "${SECURITY_PROFILE_ID}" + } + ], + [ + { + "simulation-node": "MySimulationNode", + "profile-id": 123456, + "when": "SCENARIO_NAME == \"MyScenarioWithEnabledSecurity\"" + } + ] + ] + } + }, + "08b94": { + "full": { + "$schema": "http://json-schema.org/draft-07/schema#", + "type": "object", + "additionalProperties": false, + "required": ["profile-id", "ports"], + "properties": { + "profile-id": { + "$ref": "#/definitions/adad4/full", + "description": "The ID of the assigned security profile to be used for securing Ethernet communication with MACsec. This security profile must contain valid MACsec port configurations." + }, + "ports": { + "$ref": "#/definitions/d5f5d/full", + "description": "List of physical ports to be protected with MACsec. Each port must be assigned a MACsec port configuration from the security profile." + } + }, + "examples": [ + { + "profile-id": 1234, + "ports": [ + { + "network": "Eth1", + "measurement-port": "Port1", + "port-configuration": "authenticator" + } + ] + }, + { + "profile-id": 1234, + "ports": [ + { + "network": "Eth1", + "measurement-port": "Port1", + "port-configuration": "authenticator", + "vlan-id": 5, + "vlan-in-clear": true, + "implementation": "use-software", + "bypass-filter": [ + { + "vlan-id": 5, + "mask": 6, + "direction": "ingress" + }, + { + "ether-type": 34667, + "direction": "both" + }, + { + "source-mac": "00:1A:2B:3C:4D:5E", + "mask": "FF:FF:FF:FF:FF:FF", + "direction": "egress" + }, + { + "destination-mac": "00:1A:2B:3C:4D:5E", + "mask": "AA:BB:CC:DD:EE:FF", + "direction": "egress" + } + ] + } + ] + } + ] + } + }, + "9796e": { + "full": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "Hybdrid Network Mappings", + "description": "Mappings connecting CANoe and SIL Kit networks of type CAN or Ethernet.", + "type": "array", + "items": { + "$ref": "#/definitions/d01ad/full" + }, + "examples": [ + [ + { + "network": "Ethernet1", + "sil-kit-network": "Ethernet3" + } + ], + [ + { + "network": "canA", + "sil-kit-network": "canB" + } + ] + ] + } + }, + "89e83": { + "full": { + "$schema": "http://json-schema.org/draft-07/schema#", + "description": "Absolute or relative path to a SIL Kit config file (.yaml/.json). Relative path specifications are resolved relative to the configuration file.", + "type": "string", + "anyOf": [ + { + "pattern": "^.*\\.[yY][aA][mM][lL]$" + }, + { + "pattern": "^.*\\.[jJ][sS][oO][nN]$" + }, + { + "$ref": "#/definitions/779cd/full" + } + ], + "examples": [ + "path/to/myConfigFile.json", + "path/to/myConfigFile.yaml", + "${path_in_variable}", + "path/${name_in_variable}" + ] + } + }, + "78c74": { + "full": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "Simulation Node", + "description": "Represents a simulation node.", + "type": "object", + "additionalProperties": false, + "required": ["name", "network-assignments"], + "properties": { + "name": { + "$ref": "#/definitions/9a523/full", + "description": "A unique name that can be used to reference this simulation node block in programming APIs such as CAPL.\nMust be a C-identifier (case sensitive)." + }, + "when": { + "$ref": "#/definitions/24f1f/full" + }, + "file-path": { + "$ref": "#/definitions/8722b/full" + }, + "network-assignments": { + "$ref": "#/definitions/876e2/full" + }, + "defines": { + "$ref": "#/definitions/4a339/full" + }, + "database-node": { + "description": "Assigns explicitly a database node to a simulation node. If not set, the simulation-node name will be used as database-node. To deactivate automatic assignment, it should be set to false. For CAN networks, if the node is contained in more than one database assigned to the network, the name of the database should be specified using the syntax \"dbName::nodeName\".", + "oneOf": [ + { + "type": "boolean", + "default": true + }, + { + "type": "string", + "not": { + "$ref": "#/definitions/779cd/full" + }, + "examples": ["aNodeName", "dbName::aNodeName"] + }, + { + "$ref": "#/definitions/779cd/full" + } + ], + "examples": [false, true, "aDatabaseNodeName", "${var_with_path}"] + }, + "modeling-libraries": { + "type": "array", + "items": { + "$ref": "#/definitions/d2ba8/full" + }, + "description": "A list of .vmodule modeling libraries to assign to the simulation node." + }, + "tcp-ip-stack": { + "$ref": "#/definitions/f1459/full", + "description": "Simulation node configuration for the TCP/IP stack." + } + }, + "examples": [ + { + "name": "mynode", + "network-assignments": [ + { + "network": "my_can_network_1" + } + ], + "file-path": "path/to/my_capl_script.can", + "when": "SCENARIO_NAME == \"my_scenario_name\"" + }, + { + "name": "mynode", + "file-path": "path/to/my_dotnet.cs", + "database-node": true, + "network-assignments": [ + { + "network": "my_can_network_1" + } + ], + "defines": ["mydefine1", "mydefine2"], + "modeling-libraries": ["modeling/lib/1.vmodule", "${path_in_var}"], + "when": "SCENARIO_NAME == \"my_scenario_name\"" + }, + { + "name": "mynode", + "file-path": "path/to/my_dotnet.cs", + "database-node": false, + "network-assignments": [ + { + "network": "my_can_network_1" + } + ] + }, + { + "name": "otherNameThanInDb", + "file-path": "path/to/my_dotnet.cs", + "database-node": "nameFromDB", + "network-assignments": [ + { + "network": "my_can_network_1" + } + ] + } + ] + } + }, + "72fc8": { + "full": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "System variables", + "description": "Describes a symbol mapping file (.vmap). Please ensure that the mappings are valid for the environment. No symbol validation will be performed.", + "type": "object", + "additionalProperties": false, + "required": ["file-path"], + "properties": { + "when": { + "$ref": "#/definitions/24f1f/full" + }, + "file-path": { + "oneOf": [ + { + "$ref": "#/definitions/dfb26/full" + }, + { + "type": "array", + "items": { + "$ref": "#/definitions/dfb26/full" + } + } + ] + } + }, + "examples": [ + { + "file-path": "path/to/my.vmap" + }, + { + "file-path": ["${path_in_variable}", "path/${name_in_variable}"] + }, + { + "file-path": "path/to/my.vmap", + "when": "SCENARIO_NAME == \"my_scenario_name\"" + } + ] + } + }, + "8b228": { + "full": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "System variables", + "description": "Describes a system variable file (.vsysvar/.xml).", + "type": "object", + "additionalProperties": false, + "required": ["file-path"], + "properties": { + "when": { + "$ref": "#/definitions/24f1f/full" + }, + "file-path": { + "oneOf": [ + { + "$ref": "#/definitions/16f8a/full" + }, + { + "type": "array", + "items": { + "$ref": "#/definitions/16f8a/full" + } + } + ] + } + }, + "examples": [ + { + "file-path": "path/to/my.vsysvar" + }, + { + "file-path": "path/to/my.xml" + }, + { + "file-path": ["${path_in_variable}", "path/${name_in_variable}"] + }, + { + "file-path": "path/to/my.vsysvar", + "when": "SCENARIO_NAME == \"my_scenario_name\"" + } + ] + } + }, + "9541b": { + "full": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "User files", + "description": "Describes a user file that can be read/written by CAPL/.NET scripts.", + "type": "object", + "additionalProperties": false, + "required": ["file-path"], + "properties": { + "when": { + "$ref": "#/definitions/24f1f/full" + }, + "file-path": { + "description": "Absolute or relative path to a user file. Relative path specifications are resolved relative to the configuration file.", + "oneOf": [ + { + "type": "string", + "examples": [ + "path/to/my.txt", + "${path_in_variable}", + "path/${name_in_variable}" + ] + }, + { + "type": "array", + "items": { + "type": "string" + }, + "examples": [ + ["path/to/my.txt"], + ["${path_in_variable}", "path/${name_in_variable}"] + ] + } + ] + } + }, + "examples": [ + { + "file-path": "path/to/my.txt" + }, + { + "file-path": ["${path_in_variable}", "path/${name_in_variable}"] + }, + { + "file-path": "path/to/my_file.ini", + "when": "SCENARIO_NAME == \"my_scenario_name\"" + } + ] + } + }, + "9d153": { + "local": { + "name": { + "type": "string", + "description": "A C-identifier for this variable (case sensitive).", + "pattern": "^[a-zA-Z_][a-zA-Z0-9_]*$", + "allOf": [ + { + "not": { + "pattern": "^[cC][aA][nN][oO][eE]_.*$" + } + }, + { + "not": { + "pattern": "^[aA][nN][dD]$" + } + }, + { + "not": { + "pattern": "^[aA][sS]$" + } + }, + { + "not": { + "pattern": "^[aA][sS][sS][eE][rR][tT]$" + } + }, + { + "not": { + "pattern": "^[bB][oO][oO][lL]$" + } + }, + { + "not": { + "pattern": "^[bB][rR][eE][aA][kK]$" + } + }, + { + "not": { + "pattern": "^[cC][aA][sS][eE]$" + } + }, + { + "not": { + "pattern": "^[cC][aA][tT][cC][hH]$" + } + }, + { + "not": { + "pattern": "^[cC][lL][aA][sS][sS]$" + } + }, + { + "not": { + "pattern": "^[cC][oO][nN][tT][iI][nN][uU][eE]$" + } + }, + { + "not": { + "pattern": "^[dD][eE][fF]$" + } + }, + { + "not": { + "pattern": "^[dD][eE][lL][eE][tT][eE]$" + } + }, + { + "not": { + "pattern": "^[eE][lL][iI][fF]$" + } + }, + { + "not": { + "pattern": "^[eE][lL][sS][eE]$" + } + }, + { + "not": { + "pattern": "^[eE][xX][cC][eE][pP][tT]$" + } + }, + { + "not": { + "pattern": "^[fF][aA][lL][sS][eE]$" + } + }, + { + "not": { + "pattern": "^[fF][iI][nN][aA][lL][lL][yY]$" + } + }, + { + "not": { + "pattern": "^[fF][lL][oO][aA][tT]$" + } + }, + { + "not": { + "pattern": "^[fF][oO][rR]$" + } + }, + { + "not": { + "pattern": "^[fF][rR][oO][mM]$" + } + }, + { + "not": { + "pattern": "^[gG][lL][oO][bB][aA][lL]$" + } + }, + { + "not": { + "pattern": "^[iI][fF]$" + } + }, + { + "not": { + "pattern": "^[iI][mM][pP][oO][rR][tT]$" + } + }, + { + "not": { + "pattern": "^[iI][nN]$" + } + }, + { + "not": { + "pattern": "^[iI][nN][tT]$" + } + }, + { + "not": { + "pattern": "^[iI][nN][tT][eE][gG][eE][rR]$" + } + }, + { + "not": { + "pattern": "^[iI][sS]$" + } + }, + { + "not": { + "pattern": "^[lL][oO][nN][gG]$" + } + }, + { + "not": { + "pattern": "^[nN][oO][nN][eE]$" + } + }, + { + "not": { + "pattern": "^[nN][oO][tT]$" + } + }, + { + "not": { + "pattern": "^[oO][rR]$" + } + }, + { + "not": { + "pattern": "^[pP][aA][sS][sS]$" + } + }, + { + "not": { + "pattern": "^[rR][aA][iI][sS][eE]$" + } + }, + { + "not": { + "pattern": "^[rR][eE][tT][uU][rR][nN]$" + } + }, + { + "not": { + "pattern": "^[sS][cC][eE][nN][aA][rR][iI][oO]_[nN][aA][mM][eE]$" + } + }, + { + "not": { + "pattern": "^[sS][eE][lL][fF]$" + } + }, + { + "not": { + "pattern": "^[sS][tT][rR][uU][cC][tT]$" + } + }, + { + "not": { + "pattern": "^[sS][wW][iI][tT][cC][hH]$" + } + }, + { + "not": { + "pattern": "^[tT][hH][iI][sS]$" + } + }, + { + "not": { + "pattern": "^[tT][rR][uU][eE]$" + } + }, + { + "not": { + "pattern": "^[tT][rR][yY]$" + } + }, + { + "not": { + "pattern": "^[uU][iI][nN][tT]$" + } + }, + { + "not": { + "pattern": "^[uU][nN][sS][iI][gG][nN][eE][dD]$" + } + }, + { + "not": { + "pattern": "^[vV][oO][iI][dD]$" + } + }, + { + "not": { + "pattern": "^[wW][hH][iI][lL][eE]$" + } + }, + { + "not": { + "pattern": "^[wW][iI][tT][hH]$" + } + }, + { + "not": { + "pattern": "^[xX][oO][rR]$" + } + }, + { + "not": { + "pattern": "^[yY][iI][eE][lL][dD]$" + } + } + ], + "examples": ["my_var"] + }, + "from-environment": { + "type": "boolean", + "description": "Takes the value from a system environment variable.", + "default": false + } + }, + "full": { + "$schema": "http://json-schema.org/draft-07/schema#", + "$comment": "has to be split, since the type determines the valid values", + "title": "Variable", + "description": "This variable can be used in any other node and overwritten by a scenario.", + "type": "object", + "oneOf": [ + { + "$comment": "type implicit", + "additionalProperties": false, + "required": ["value", "name"], + "properties": { + "name": { + "$ref": "#/definitions/9d153/local/name" + }, + "from-environment": { + "$ref": "#/definitions/9d153/local/from-environment" + }, + "value": { + "description": "Variable of implicit type (string, number or bool)", + "oneOf": [ + { + "type": "string" + }, + { + "$comment": "disable-check:no-missing-number-limits", + "type": "number" + }, + { + "type": "boolean" + } + ] + } + } + }, + { + "$comment": "type int", + "additionalProperties": false, + "required": ["type", "name"], + "properties": { + "name": { + "$ref": "#/definitions/9d153/local/name" + }, + "from-environment": { + "$ref": "#/definitions/9d153/local/from-environment" + }, + "value": { + "$ref": "#/definitions/c49a5/full", + "description": "Variable of type integer" + }, + "type": { + "const": "int" + }, + "options": { + "type": "array", + "description": "List of possible values for the variable", + "items": { + "$ref": "#/definitions/c49a5/full" + } + } + } + }, + { + "$comment": "type uint", + "additionalProperties": false, + "required": ["type", "name"], + "properties": { + "name": { + "$ref": "#/definitions/9d153/local/name" + }, + "from-environment": { + "$ref": "#/definitions/9d153/local/from-environment" + }, + "value": { + "$ref": "#/definitions/aa785/full", + "description": "Variable of type unsigned integer" + }, + "type": { + "const": "uint" + }, + "options": { + "type": "array", + "description": "List of possible values for the variable", + "items": { + "$ref": "#/definitions/aa785/full" + } + } + } + }, + { + "$comment": "type string / path", + "additionalProperties": false, + "required": ["type", "name"], + "properties": { + "name": { + "$ref": "#/definitions/9d153/local/name" + }, + "from-environment": { + "$ref": "#/definitions/9d153/local/from-environment" + }, + "value": { + "description": "Variable of type string or path", + "type": "string" + }, + "type": { + "enum": ["string", "path"] + }, + "options": { + "description": "List of possible values for the variable", + "type": "array", + "items": { + "type": "string" + } + } + } + }, + { + "$comment": "type boolean", + "additionalProperties": false, + "required": ["type", "name"], + "properties": { + "name": { + "$ref": "#/definitions/9d153/local/name" + }, + "from-environment": { + "$ref": "#/definitions/9d153/local/from-environment" + }, + "value": { + "description": "Variable of type bool", + "type": "boolean" + }, + "type": { + "const": "bool" + }, + "options": { + "description": "List of possible values for the variable", + "type": "array", + "items": { + "type": "boolean" + } + } + } + }, + { + "$comment": "type float", + "additionalProperties": false, + "required": ["type", "name"], + "properties": { + "name": { + "$ref": "#/definitions/9d153/local/name" + }, + "from-environment": { + "$ref": "#/definitions/9d153/local/from-environment" + }, + "value": { + "$ref": "#/definitions/f26f2/full", + "description": "Variable of type float" + }, + "type": { + "const": "float" + }, + "options": { + "description": "List of possible values for the variable", + "type": "array", + "items": { + "$ref": "#/definitions/f26f2/full" + } + } + } + } + ], + "examples": [ + { + "name": "var", + "value": -42 + }, + { + "name": "my_string", + "value": "implicit-type" + }, + { + "name": "var", + "value": 422200000000.0, + "type": "float" + }, + { + "name": "path_var", + "value": "path/to/somewhere", + "type": "path" + }, + { + "name": "uint_enum", + "value": 43, + "type": "uint", + "options": [1, 43, 127] + } + ] + } + }, + "0d74c": { + "full": { + "$schema": "http://json-schema.org/draft-07/schema#", + "description": "Absolute or relative path to a VIO System configuration file (.viocfg). Relative path specifications are resolved relative to the configuration file.", + "type": "string", + "anyOf": [ + { + "pattern": "^.*\\.[vV][iI][oO][cC][fF][gG]$" + }, + { + "$ref": "#/definitions/779cd/full" + } + ], + "examples": [ + "path/to/my.viocfg", + "${path_in_variable}", + "path/${name_in_variable}" + ] + } + }, + "2b57a": { + "full": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "XCP files", + "description": "Describes a XCP configuration file (.xcp.yaml/.xcpcfg).", + "type": "object", + "additionalProperties": false, + "required": ["file-path"], + "properties": { + "when": { + "$ref": "#/definitions/24f1f/full" + }, + "file-path": { + "oneOf": [ + { + "$ref": "#/definitions/011dc/full" + }, + { + "type": "array", + "items": { + "$ref": "#/definitions/011dc/full" + } + } + ] + } + }, + "examples": [ + { + "file-path": "path/to/my.xcpcfg" + }, + { + "file-path": ["${path_in_variable}", "path/${name_in_variable}"] + }, + { + "file-path": "path/to/my.xcpcfg", + "when": "SCENARIO_NAME == \"my_scenario_name\"" + } + ] + } + }, + "925c3": { + "full": { + "$schema": "http://json-schema.org/draft-07/schema#", + "description": "Absolute or relative path to an application model (.can/.canencr/.cs/.sln/.py/.vmodule/.dll (dotnet assembly)). Relative path specifications are resolved relative to the configuration file.", + "type": "string", + "anyOf": [ + { + "pattern": "^.*\\.[Cc][Ss]$" + }, + { + "pattern": "^.*\\.[Pp][Yy]$" + }, + { + "pattern": "^.*\\.[Ss][Ll][Nn]$" + }, + { + "pattern": "^.*\\.[Cc][Aa][Nn]$" + }, + { + "pattern": "^.*\\.[Cc][Aa][Nn][Ee][Nn][Cc][Rr]$" + }, + { + "pattern": "^.*\\.[vV][mM][oO][dD][uU][lL][eE]$" + }, + { + "pattern": "^.*\\.[dD][lL][lL]$" + }, + { + "$ref": "#/definitions/779cd/full" + } + ], + "examples": [ + "my_dotnet.cs", + "my_python.py", + "my_visual_studio.sln", + "my_capl_file.can", + "my_encrypted_capl_file.canencr", + "my_module.vmodule", + "my_dotnet.dll", + "${some_variable}" + ] + } + }, + "4a339": { + "full": { + "$schema": "http://json-schema.org/draft-07/schema#", + "description": "List of defines to be passed to CAPL, .NET, Python and VCDL.", + "type": "array", + "items": { + "anyOf": [ + { + "$ref": "#/definitions/e173a/full" + }, + { + "$ref": "#/definitions/779cd/full" + } + ] + }, + "examples": [ + ["mydefine1", "mydefine2"], + [ + "mydefine_with_value=42", + "${var_with_define_name}=${var_with_define_value}" + ] + ] + } + }, + "9a523": { + "full": { + "$schema": "http://json-schema.org/draft-07/schema#", + "type": "string", + "pattern": "^[a-zA-Z_][a-zA-Z0-9_]*$", + "examples": ["myid", "THIS_IS_CASE_SENSITIVE", "__1_2_3_4_5__"] + } + }, + "40c96": { + "full": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "CAN network settings", + "description": "Settings for the CAN network.", + "type": "object", + "additionalProperties": false, + "minProperties": 1, + "properties": { + "bit-rate-k-bit-s": { + "description": "Bit rate of the CAN bus in kbit/s. \n If this value is set, it has priority. \n If this value is not set, the bit rate is read from the database. If it is missing from the database, the default value is used.", + "oneOf": [ + { + "type": "number", + "minimum": 5.0, + "maximum": 2000, + "default": 500.0, + "multipleOf": 0.001 + }, + { + "$ref": "#/definitions/779cd/full" + } + ] + }, + "sample-point-in-percent": { + "$ref": "#/definitions/f8ea0/full", + "default": 70.0 + } + }, + "examples": [ + { + "bit-rate-k-bit-s": 500.0 + }, + { + "sample-point-in-percent": 70.0 + }, + { + "bit-rate-k-bit-s": 500.0, + "sample-point-in-percent": 70.0 + } + ] + } + }, + "548bf": { + "full": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "Timing conditions", + "description": "Timing conditions for a replay block.", + "type": "object", + "additionalProperties": false, + "required": [], + "properties": { + "condition": { + "description": "The condition when the replay shall start.", + "oneOf": [ + { + "const": "immediately", + "description": "The first event of the replayed file occurs with measurement start." + }, + { + "const": "first-event-time", + "description": "The original timestamp of the replayed file is used." + }, + { + "const": "delayed", + "description": "The first event is delayed. Can be configured by the \"delayed-ms\" element." + }, + { + "$ref": "#/definitions/779cd/full" + } + ] + }, + "delay-ms": { + "$ref": "#/definitions/230ce/full", + "description": "The delay in ms if the condition \"delayed\" is selected. No effect otherwise." + } + }, + "examples": [ + { + "condition": "immediately" + }, + { + "condition": "first-event-time" + }, + { + "condition": "delayed", + "delay-ms": 1000 + }, + { + "condition": "${variable}" + } + ] + } + }, + "46335": { + "full": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "Channel mapping", + "description": "The channel mapping for a replay block.", + "type": "object", + "additionalProperties": false, + "required": [], + "properties": { + "default-mapping": { + "default": "as-in-original", + "description": "The default mapping of a channel if not explicitly mapped.", + "oneOf": [ + { + "const": "as-in-original", + "description": "The channel is mapped to itself if there is an active network." + }, + { + "const": "ignore-all", + "description": "The channels are ignored by default." + }, + { + "$ref": "#/definitions/779cd/full" + } + ] + }, + "mappings": { + "title": "Explicit mappings", + "description": "The explicitly mapped channels. Overwrites the default mapping for the source.", + "type": "array", + "items": { + "anyOf": [ + { + "title": "Map source channel", + "type": "object", + "description": "Mapping from application channel of the replay file to a target network.", + "additionalProperties": false, + "required": ["source-channel", "target-network"], + "properties": { + "source-channel": { + "$ref": "#/definitions/37aed/full", + "description": "The source application channel from the replayed file." + }, + "target-network": { + "$ref": "#/definitions/8ab6a/full", + "description": "The target network name." + } + } + }, + { + "title": "Map source network", + "type": "object", + "description": "Mapping from a named source network of the replay file to a named target network.", + "additionalProperties": false, + "required": ["source-network", "target-network"], + "properties": { + "source-network": { + "description": "The source network name. Only works if the replay file was created by CANoe and contains the relevant metadata.", + "type": "string" + }, + "target-network": { + "$ref": "#/definitions/8ab6a/full", + "description": "The target network name." + } + } + }, + { + "title": "Ignore source channel", + "type": "object", + "description": "Ignores an application channel of the replay file.", + "additionalProperties": false, + "required": ["ignore-source-channel"], + "properties": { + "ignore-source-channel": { + "$ref": "#/definitions/37aed/full", + "description": "The ignored source channel." + } + } + }, + { + "title": "Ignore source network", + "type": "object", + "description": "Ignores a named source network of the replay file.", + "additionalProperties": false, + "required": ["ignore-source-network"], + "properties": { + "ignore-source-network": { + "description": "The ignored source network name. Only works if the replay file was created by CANoe and contains the relevant metadata.", + "type": "string" + } + } + } + ] + } + } + }, + "examples": [ + { + "default-mapping": "as-in-original" + }, + { + "default-mapping": "ignore-all", + "mappings": [ + { + "source-channel": 1, + "target-network": "CAN1" + } + ] + }, + { + "default-mapping": "as-in-original", + "mappings": [ + { + "source-network": "CAN1", + "target-network": "CAN2" + } + ] + }, + { + "default-mapping": "as-in-original", + "mappings": [ + { + "ignore-source-channel": 2 + }, + { + "ignore-source-network": "CAN4" + } + ] + } + ] + } + }, + "66d5a": { + "full": { + "$schema": "http://json-schema.org/draft-07/schema#", + "oneOf": [ + { + "$ref": "#/definitions/d3f0b/full" + }, + { + "type": "array", + "items": { + "$ref": "#/definitions/d3f0b/full" + }, + "examples": [ + ["path/to/my.vcdl"], + ["path/to/my.vcodm"], + [ + "path/to/my.vcdl", + "path/to/my.vcodm", + "${path_in_variable}", + "path/${name_in_variable}" + ] + ] + } + ], + "examples": [ + "path/to/my.vcdl", + ["path/to/my.vcodm"], + [ + "path/to/my.vcdl", + "path/to/my.vcodm", + "${path_in_variable}", + "path/${name_in_variable}" + ] + ] + } + }, + "09693": { + "full": { + "$schema": "http://json-schema.org/draft-07/schema#", + "$ref": "#/definitions/8ab6a/full", + "description": "If a diagnostic description file contains more than one ECU definition, the ECU identifier selects the one to utilize. Note that this setting is optional for diagnostic description files containing only one ECU definition." + } + }, + "64491": { + "full": { + "$schema": "http://json-schema.org/draft-07/schema#", + "description": "Absolute or relative path to a diagnostic description file (.cdd/.mdx/.pdx/.rdx). Relative path specifications are resolved relative to the configuration file.", + "type": "string", + "anyOf": [ + { + "pattern": "^.*\\.[cC][dD][dD]$" + }, + { + "pattern": "^.*\\.[mM][dD][xX]$" + }, + { + "pattern": "^.*\\.[pP][dD][xX]$" + }, + { + "pattern": "^.*\\.[rR][dD][xX]$" + }, + { + "$ref": "#/definitions/779cd/full" + } + ], + "examples": [ + "path/to/some.cdd", + "path/${var_with_name}", + "path/to/some.pdx", + "${var_with_path}", + "path/to/some.rdx" + ] + } + }, + "8ab6a": { + "full": { + "$schema": "http://json-schema.org/draft-07/schema#", + "type": "string", + "oneOf": [ + { + "pattern": "^[a-zA-Z_][a-zA-Z0-9_]*$" + }, + { + "pattern": "^([a-zA-Z_][a-zA-Z0-9_]*)?\\$\\{[a-zA-Z_][a-zA-Z0-9_]*\\}[a-zA-Z0-9_]*$" + } + ], + "examples": [ + "myid", + "THIS_IS_CASE_SENSITIVE", + "__1_2_3_4_5__", + "${id_in_variable}" + ] + } + }, + "39b87": { + "full": { + "$schema": "http://json-schema.org/draft-07/schema#", + "$ref": "#/definitions/8ab6a/full", + "description": "The variant determines which services and parameters are available for diagnostics and communication." + } + }, + "26a64": { + "full": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "Communications parameters for diagnostics", + "description": "Parameters from diagnostic description for transport and diagnostic layer.", + "type": "object", + "additionalProperties": false, + "properties": { + "st-min": { + "type": "integer", + "description": "Minimum time gap (in ms) between consecutive frames which are to be sent from the ECU to the Tester.", + "minimum": 0, + "maximum": 249 + }, + "s3-client": { + "$ref": "#/definitions/09338/full", + "description": "Time (in ms) between functionally addressed TesterPresent (0x3E) request messages transmitted by the client to keep a diagnostic session other than the defaultSession active in multiple servers (functional communication) or maximum time between physically transmitted request messages to a single server (physical communication).\nAlias: tester-present-time" + }, + "s3-server": { + "$ref": "#/definitions/09338/full", + "description": "Time (in ms) for the server to keep a diagnostic session other than the defaultSession active while not receiving any diagnostic request message.\nAlias: tester-present-time-ecu" + }, + "p2-client": { + "$ref": "#/definitions/09338/full", + "description": "Timeout (in ms) for the client to wait after the successful transmission of a request message for the start of incoming response messages.\nAlias: p2-max" + }, + "p2-ex-client": { + "$ref": "#/definitions/09338/full", + "description": "Enhanced timeout (in ms) for the client to wait after the reception of a negative response message with negative response code 0x78 for the start of incoming response messages.\nAlias: p2-star" + }, + "p2-server": { + "$ref": "#/definitions/09338/full", + "description": "Maximum amount of time (in ms) for the server to start with the response message after the reception of a request message.\nAlias: p2-max-ecu" + }, + "p2-ex-server": { + "$ref": "#/definitions/09338/full", + "description": "Maximum amount of time (in ms) for the server to start with the response message after the transmission of a negative response message with negative response code 0x78 (enhanced response timing).\nAlias: p2-star-ecu" + }, + "p6-client": { + "$ref": "#/definitions/09338/full", + "description": "Timeout (in ms) for the client to wait after the successful transmission of a request message for the end of complete response messages.\nAlias: p6-max" + }, + "p6-ex-client": { + "$ref": "#/definitions/09338/full", + "description": "Enhanced timeout (in ms) for the client to wait after the reception of a negative response message with negative response code 0x78 for the end of complete response messages.\nAlias: p6-star" + }, + "timeout-cr": { + "$ref": "#/definitions/09338/full", + "description": "Time the receiver waits for a frame that is due from the sender (in ms)." + }, + "timeout-as": { + "$ref": "#/definitions/09338/full", + "description": "Time the sender of a frame waits for the send confirmation (in ms)." + } + } + } + }, + "26b44": { + "full": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "DoIP Settings", + "description": "Settings related to diagnostics over IP.", + "type": "object", + "additionalProperties": false, + "properties": { + "tls-mode": { + "description": "Behavior of the diagnostic tester for encrypted communication via TLS.\n \"deactivated\": The tester does not use TLS even if a security profile for TLS is configured.\n \"routing-activation\": The tester at first tries to set up an unencrypted TCP connection. If not successful, the tester tries to connect via TLS.\n \"secure-connection-only\": The tester at first tries to set up an unencrypted TCP connection. On success the tester stops communication. \n\"direct-connection\": The tester directly tries to connect to the ECU via TLS.", + "default": "deactivated", + "oneOf": [ + { + "const": "deactivated" + }, + { + "const": "routing-activation" + }, + { + "const": "secure-connection-only" + }, + { + "const": "direct-connection" + }, + { + "$ref": "#/definitions/779cd/full" + } + ] + }, + "tls-client": { + "description": "TLS client name.", + "oneOf": [ + { + "type": "string" + }, + { + "$ref": "#/definitions/779cd/full" + } + ] + }, + "tcp-ip-stack-adapter": { + "$ref": "#/definitions/8ab6a/full", + "description": "The \"name\" of an ip-setting or an ip-address declared in this environment, referencing a local network interface or IP address via which CANoe or a simulated tester shall communicate." + }, + "addressing": { + "$ref": "#/definitions/ca6a3/full" + } + } + } + }, + "61039": { + "full": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "LIN Settings", + "description": "Settings related to diagnostics of LIN buses.", + "type": "object", + "additionalProperties": false, + "required": ["database-node"], + "properties": { + "database-node": { + "$ref": "#/definitions/8ab6a/full", + "description": "Database node selected for communication." + }, + "scheduling-mode": { + "description": "Scheduling of master request and slave response frames.\n \"selected-scheduling\": The currently running schedule table is used.\n \"diagnostics-only\": Switching between master request and slave response tables found in ldf file.\n \"interleaved\": Between every segment of a request or response the table, which was running before, is run once.\n\"direct-sending\": The master request header is generated automatically, independent of the scheduling.", + "default": "selected-scheduling", + "oneOf": [ + { + "const": "selected-scheduling" + }, + { + "const": "diagnostics-only" + }, + { + "const": "interleaved" + }, + { + "const": "direct-sending" + }, + { + "$ref": "#/definitions/779cd/full" + } + ] + }, + "node-address": { + "$ref": "#/definitions/2ea92/full", + "description": "LIN node address, typically specified in the LDF file and assigned automatically with the selection of a network node." + } + } + } + }, + "71f64": { + "full": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "Additional descriptions", + "description": "Additional diagnostic descriptions used to extend a so called master description.", + "type": "array", + "items": { + "type": "object", + "additionalProperties": false, + "required": ["name", "file-path", "variant"], + "properties": { + "name": { + "$ref": "#/definitions/9a523/full", + "description": "A unique name that can be used to reference this diagnostic description in programming APIs such as CAPL.\nMust be a C-identifier (case sensitive)." + }, + "file-path": { + "$ref": "#/definitions/64491/full" + }, + "variant": { + "$ref": "#/definitions/39b87/full" + }, + "language": { + "$ref": "#/definitions/a855d/full" + }, + "ecu-identifier": { + "$ref": "#/definitions/09693/full" + } + } + } + } + }, + "5664c": { + "full": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "Channel mapping", + "description": "The channel mapping for a FlexRay replay block.", + "type": "object", + "additionalProperties": false, + "required": [], + "properties": { + "default-mapping": { + "default": "as-in-original", + "description": "The default mapping of a channel if not explicitly mapped.", + "oneOf": [ + { + "const": "as-in-original", + "description": "All channels linked to the network this node is attached to are mapped." + }, + { + "const": "ignore-all", + "description": "The channels are ignored by default." + }, + { + "$ref": "#/definitions/779cd/full" + } + ] + }, + "mappings": { + "title": "Explicit mappings", + "description": "The explicitly mapped channels. Overwrites the default mapping for the source.", + "type": "array", + "items": { + "anyOf": [ + { + "title": "Map source network", + "type": "object", + "description": "Mapping of a named source network from the replay file to the network this node is linked to.", + "additionalProperties": false, + "required": ["source-network"], + "properties": { + "source-network": { + "description": "The source network name. Only works if the replay file was created by CANoe and contains the relevant metadata.", + "type": "string" + } + } + }, + { + "title": "Map source channel", + "type": "object", + "description": "Mapping of an application channel from the replay file to the network this node is linked to.", + "additionalProperties": false, + "required": ["source-channel"], + "properties": { + "source-channel": { + "$ref": "#/definitions/37aed/full", + "description": "The source application channel from the replayed file." + } + } + } + ] + } + } + }, + "examples": [ + { + "default-mapping": "as-in-original" + }, + { + "default-mapping": "ignore-all", + "mappings": [ + { + "source-channel": 1 + } + ] + }, + { + "default-mapping": "as-in-original", + "mappings": [ + { + "source-network": "flexray2" + }, + { + "source-channel": 3 + } + ] + } + ] + } + }, + "325f7": { + "full": { + "$schema": "http://json-schema.org/draft-07/schema#", + "description": "Absolute or relative path to a functional mockup unit file (.fmu). Relative path specifications are resolved relative to the configuration file.", + "type": "string", + "anyOf": [ + { + "pattern": "^.*\\.[Ff][Mm][Uu]$" + }, + { + "$ref": "#/definitions/779cd/full" + } + ], + "examples": [ + "my_functional_mockup_unit.fmu", + "Inputs/MyFmu.FMU", + "${some_variable}" + ] + } + }, + "8a906": { + "full": { + "$schema": "http://json-schema.org/draft-07/schema#", + "description": "Global configuration for the TCP/IP stack.", + "anyOf": [ + { + "type": "object", + "additionalProperties": false, + "required": ["selected-stack"], + "properties": { + "selected-stack": { + "description": "If set to \"operating-system\", the machine configuration is used. If set to \"canoe\", a custom configuration can be provided, which can be configured at ethernet-networks[]/global-tcp-ip-stack-adapter.", + "const": "operating-system", + "default": "operating-system", + "examples": ["canoe", "operating-system"] + } + } + }, + { + "type": "object", + "additionalProperties": false, + "required": ["selected-stack"], + "properties": { + "selected-stack": { + "description": "If set to \"operating-system\", the machine configuration is used. If set to \"canoe\", a custom configuration can be provided, which can be configured at ethernet-networks[]/global-tcp-ip-stack-adapter.", + "oneOf": [ + { + "const": "canoe", + "description": "If set to \"canoe\", a custom configuration can be provided (remove other elements for option \"operating-system\")." + }, + { + "$ref": "#/definitions/779cd/full" + } + ], + "default": "operating-system", + "examples": ["canoe", "operating-system"] + }, + "activate-routing": { + "$ref": "#/definitions/698c3/full" + }, + "tcp-delayed-ack": { + "$ref": "#/definitions/6665e/full" + }, + "ipv4-gateway": { + "$ref": "#/definitions/d420a/full" + }, + "ipv6-gateway": { + "$ref": "#/definitions/ea3d5/full" + } + } + } + ], + "examples": [ + { + "selected-stack": "canoe", + "activate-routing": true, + "tcp-delayed-ack": true, + "ipv4-gateway": "192.168.0.33", + "ipv6-gateway": "::1" + }, + { + "selected-stack": "operating-system" + } + ] + } + }, + "37869": { + "full": { + "$schema": "http://json-schema.org/draft-07/schema#", + "anyOf": [ + { + "type": "object", + "additionalProperties": false, + "required": ["selected-stack"], + "properties": { + "selected-stack": { + "description": "If a linked database contains a stack configuration, it is preferred over other configurations. If set to \"operating-system\", the machine configuration is used.\n If set to \"canoe\", the configuration on the global level is used.\n If set to \"individual\", a custom configuration can be provided at ethernet-networks[]/test-tcp-ip-stack-adapter.", + "enum": ["operating-system", "canoe"], + "default": "individual", + "examples": ["operating-system", "canoe", "individual"] + }, + "name": { + "$ref": "#/definitions/9a523/full", + "description": "The name of the test stack, used as name of the test port.\nMust be a C-identifier.", + "default": "Test_Configuration_1" + } + } + }, + { + "type": "object", + "additionalProperties": false, + "required": ["selected-stack"], + "properties": { + "selected-stack": { + "description": "If a linked database contains a stack configuration, it is preferred over other configurations. If set to \"operating-system\", the machine configuration is used.\n If set to \"canoe\", the configuration on the global level is used.\n If set to \"individual\", a custom configuration can be provided at ethernet-networks[]/test-tcp-ip-stack-adapter.", + "oneOf": [ + { + "enum": ["individual"] + }, + { + "$ref": "#/definitions/779cd/full" + } + ], + "default": "individual", + "examples": ["operating-system", "canoe", "individual"] + }, + "activate-routing": { + "$ref": "#/definitions/698c3/full" + }, + "tcp-delayed-ack": { + "$ref": "#/definitions/6665e/full" + }, + "ipv4-gateway": { + "$ref": "#/definitions/d420a/full" + }, + "ipv6-gateway": { + "$ref": "#/definitions/ea3d5/full" + }, + "name": { + "$ref": "#/definitions/9a523/full", + "description": "The name of the test stack, used as name of the test port.\nMust be a C-identifier.", + "default": "Test_Configuration_1" + } + } + } + ] + } + }, + "83eeb": { + "full": { + "$schema": "http://json-schema.org/draft-07/schema#", + "oneOf": [ + { + "enum": [ + "internal-simulator", + "external-sil-kit", + "external-hardware" + ] + }, + { + "$ref": "#/definitions/779cd/full" + } + ], + "examples": [ + "internal-simulator", + "external-sil-kit", + "external-hardware" + ] + } + }, + "1030e": { + "full": { + "$schema": "http://json-schema.org/draft-07/schema#", + "type": "integer", + "minimum": 0, + "maximum": 4294967295 + } + }, + "8722b": { + "full": { + "$schema": "http://json-schema.org/draft-07/schema#", + "description": "Absolute or relative path to a program (.can/.canencr/.cs/.sln/.dll). Relative path specifications are resolved relative to the configuration file.", + "type": "string", + "anyOf": [ + { + "pattern": "^.*\\.[Cc][Aa][Nn]$" + }, + { + "pattern": "^.*\\.[Cc][Aa][Nn][Ee][Nn][Cc][Rr]$" + }, + { + "pattern": "^.*\\.[Cc][Ss]$" + }, + { + "pattern": "^.*\\.[Ss][Ll][Nn]$" + }, + { + "pattern": "^.*\\.[Dd][Ll][Ll]$" + }, + { + "$ref": "#/definitions/779cd/full" + } + ], + "examples": [ + "path/to/my_capl_script.can", + "path/to/my_encrypted_capl_file.canencr", + "path/to/my_dotnet.cs", + "path/to/my_visual_studio.sln", + "path/to/my_dotnet.dll", + "${path_in_variable}", + "path/${name_in_variable}" + ] + } + }, + "876e2": { + "full": { + "$schema": "http://json-schema.org/draft-07/schema#", + "description": "List of networks this node is assigned to.", + "type": "array", + "items": { + "$ref": "#/definitions/0617a/full" + }, + "examples": [ + [ + { + "network": "my_can_network_1" + } + ] + ] + } + }, + "16f8a": { + "full": { + "$schema": "http://json-schema.org/draft-07/schema#", + "description": "Absolute or relative path to a system variable file (.vsysvar/.xml). Relative path specifications are resolved relative to the configuration file.", + "type": "string", + "anyOf": [ + { + "pattern": "^.*\\.[vV][sS][yY][sS][vV][aA][rR]$" + }, + { + "pattern": "^.*\\.[xX][mM][lL]$" + }, + { + "$ref": "#/definitions/779cd/full" + } + ], + "examples": [ + "path/to/my.vsysvar", + "path/to/my.xml", + "${path_in_variable}", + "path/${name_in_variable}" + ] + } + }, + "011dc": { + "full": { + "$schema": "http://json-schema.org/draft-07/schema#", + "description": "Absolute or relative path to a XCP configuration file (.xcp.yaml/.xcpcfg). Relative path specifications are resolved relative to the configuration file.", + "type": "string", + "anyOf": [ + { + "pattern": "^.*\\.[Yy][Aa]?[Mm][Ll]$" + }, + { + "pattern": "^.*\\.[xX][cC][pP][cC][fF][gG]$" + }, + { + "$ref": "#/definitions/779cd/full" + } + ], + "examples": [ + "path/to/my.xcp.yaml", + "path/to/my.xcp.yml", + "path/to/my.xcpcfg", + "${path_in_variable}", + "path/${name_in_variable}" + ] + } + }, + "230ce": { + "full": { + "$schema": "http://json-schema.org/draft-07/schema#", + "$ref": "#/definitions/4f5d5/full", + "default": 0 + } + }, + "37aed": { + "full": { + "$schema": "http://json-schema.org/draft-07/schema#", + "oneOf": [ + { + "$ref": "#/definitions/779cd/full" + }, + { + "$ref": "#/definitions/09338/full" + } + ] + } + }, + "3e203": { + "full": { + "$schema": "http://json-schema.org/draft-07/schema#", + "description": "Define to be passed to the VCDL importer.", + "type": "string", + "pattern": "^([a-zA-Z_]|([a-zA-Z_][a-zA-Z0-9_]*)?\\$\\{[a-zA-Z_][a-zA-Z0-9_]*\\})[a-zA-Z0-9_]*(=((0|[1-9][0-9]*)|(\\$\\{[a-zA-Z_][a-zA-Z0-9_]*\\})|[Tt]rue|[Ff]alse))?$", + "examples": [ + "mydefine1", + "mydefine2", + "mydefine_with_value=42", + "${var_with_define_name}=${var_with_define_value}" + ] + } + }, + "09338": { + "full": { + "$schema": "http://json-schema.org/draft-07/schema#", + "type": "integer", + "minimum": 0, + "maximum": 65535 + } + }, + "9f24e": { + "local": { + "can-id": { + "oneOf": [ + { + "type": "string", + "enum": ["11-bit", "29-bit"] + }, + { + "$ref": "#/definitions/779cd/full" + } + ] + }, + "var-or-diag-int": { + "oneOf": [ + { + "$ref": "#/definitions/779cd/full" + }, + { + "type": "integer", + "minimum": 0, + "maximum": 536870911 + } + ] + }, + "var-or-diag-int-or-uint32max": { + "oneOf": [ + { + "$ref": "#/definitions/779cd/full" + }, + { + "type": "integer", + "minimum": 0, + "maximum": 536870911 + }, + { + "const": 4294967295 + } + ] + }, + "req-can-id-type-phys": { + "$ref": "#/definitions/9f24e/local/can-id", + "description": "Defines if the used CAN identifier is an \"11-bit\" or a \"29-bit\" identifier. For J1939 the identifier \"29-bit\" is also used." + }, + "req-can-id-type-func": { + "$ref": "#/definitions/9f24e/local/can-id", + "description": "Defines if the used CAN identifier is an \"11-bit\" or a \"29-bit\" identifier for functional channels. For J1939 the identifier \"29-bit\" is also used." + }, + "res-can-id-type": { + "$ref": "#/definitions/9f24e/local/can-id", + "description": "Defines if the used CAN identifier is an \"11-bit\" or a \"29-bit\" identifier for diagnostic responses." + }, + "res-can-id-type-uudt": { + "$ref": "#/definitions/9f24e/local/can-id", + "description": "Defines if the used CAN identifier for UUDT response channel is an \"11-bit\" or a \"29-bit\" identifier. For J1939 the identifier \"29-bit\" is also used." + }, + "req-can-id-phys": { + "$ref": "#/definitions/9f24e/local/var-or-diag-int", + "description": " The request CAN identifier for physical requests. The hex value not only describes the identifier but also the priority of the message. The higher the number, the lower the priority." + }, + "req-can-id-func": { + "$ref": "#/definitions/9f24e/local/var-or-diag-int", + "description": "The request CAN identifier for functional requests." + }, + "res-can-id": { + "$ref": "#/definitions/9f24e/local/var-or-diag-int", + "description": "The response CAN identifier for physical responses. The response for functional requests is sent via the physical path." + }, + "res-can-id-uudt": { + "$ref": "#/definitions/9f24e/local/var-or-diag-int-or-uint32max", + "description": "The response CAN identifier for physical responses received on the UUDT channel. The response for functional requests is sent via the physical path." + }, + "ecu-address-phys": { + "$ref": "#/definitions/2ea92/full", + "description": "Defines the ecu address. Messages addressed to the ecu will contain this address as target address within the message header." + }, + "ecu-address-func": { + "$ref": "#/definitions/2ea92/full", + "description": "Defines the group address for functionally addressed requests to a group of ecus sharing the same address. Functional messages addressed from the tester will contain this address as target address within the message header." + }, + "tester-address": { + "$ref": "#/definitions/2ea92/full", + "description": "Defines the tester address. Messages addressed from the Tester will contain this address as source address within the message header." + }, + "default-tx-priority": { + "description": "The priority of CAN frames used within physical request channel. The three bits priority field is used to optimize message latency for transmission onto the CAN bus. The priority field should be masked off by the receiver (ignored). The priority of any CAN message can be set from highest, 0 (000 bin), to lowest, 7 (111 bin).", + "oneOf": [ + { + "$ref": "#/definitions/779cd/full" + }, + { + "type": "integer", + "minimum": 0, + "maximum": 7 + } + ] + } + }, + "full": { + "$schema": "http://json-schema.org/draft-07/schema#", + "type": "object", + "oneOf": [ + { + "additionalProperties": false, + "properties": { + "normal": { + "type": "object", + "title": "Normal addressing", + "description": "The CAN id contains complete addressing information and all 8 data bytes can be used to exchange data. Two CAN ids per control unit are required.", + "additionalProperties": false, + "properties": { + "req-can-id-type-phys": { + "$ref": "#/definitions/9f24e/local/req-can-id-type-phys" + }, + "req-can-id-type-func": { + "$ref": "#/definitions/9f24e/local/req-can-id-type-func" + }, + "res-can-id-type": { + "$ref": "#/definitions/9f24e/local/res-can-id-type" + }, + "res-can-id-type-uudt": { + "$ref": "#/definitions/9f24e/local/res-can-id-type-uudt" + }, + "req-can-id-phys": { + "$ref": "#/definitions/9f24e/local/req-can-id-phys" + }, + "req-can-id-func": { + "$ref": "#/definitions/9f24e/local/req-can-id-func" + }, + "res-can-id": { + "$ref": "#/definitions/9f24e/local/res-can-id" + }, + "res-can-id-uudt": { + "$ref": "#/definitions/9f24e/local/res-can-id-uudt" + } + } + } + } + }, + { + "additionalProperties": false, + "properties": { + "normal-fixed": { + "type": "object", + "title": "Normal fixed addressing", + "description": "Sender and receiver are specified via CAN id and all 8 data bytes can be used to exchange data. Two CAN ids per control unit are required.", + "additionalProperties": false, + "properties": { + "req-can-id-type-phys": { + "$ref": "#/definitions/9f24e/local/req-can-id-type-phys" + }, + "req-can-id-type-func": { + "$ref": "#/definitions/9f24e/local/req-can-id-type-func" + }, + "res-can-id-type": { + "$ref": "#/definitions/9f24e/local/res-can-id-type" + }, + "res-can-id-type-uudt": { + "$ref": "#/definitions/9f24e/local/res-can-id-type-uudt" + }, + "res-can-id-uudt": { + "$ref": "#/definitions/9f24e/local/res-can-id-uudt" + }, + "ecu-address-phys": { + "$ref": "#/definitions/9f24e/local/ecu-address-phys" + }, + "ecu-address-func": { + "$ref": "#/definitions/9f24e/local/ecu-address-func" + }, + "tester-address": { + "$ref": "#/definitions/9f24e/local/tester-address" + }, + "default-tx-priority": { + "$ref": "#/definitions/9f24e/local/default-tx-priority" + } + } + } + } + }, + { + "additionalProperties": false, + "properties": { + "extended-base": { + "type": "object", + "title": "Extended base addressing", + "description": "The destination address is saved in the first data byte, therefore 7 data bytes can be used to exchange data. Only one CAN id per control unit is required for the response.", + "additionalProperties": false, + "properties": { + "req-can-id-type-phys": { + "$ref": "#/definitions/9f24e/local/req-can-id-type-phys" + }, + "req-can-id-type-func": { + "$ref": "#/definitions/9f24e/local/req-can-id-type-func" + }, + "res-can-id-type": { + "$ref": "#/definitions/9f24e/local/res-can-id-type" + }, + "res-can-id-type-uudt": { + "$ref": "#/definitions/9f24e/local/res-can-id-type-uudt" + }, + "res-can-id-uudt": { + "$ref": "#/definitions/9f24e/local/res-can-id-uudt" + }, + "ecu-address-phys": { + "$ref": "#/definitions/9f24e/local/ecu-address-phys" + }, + "ecu-address-func": { + "$ref": "#/definitions/9f24e/local/ecu-address-func" + }, + "tester-address": { + "$ref": "#/definitions/9f24e/local/tester-address" + }, + "base-address": { + "$ref": "#/definitions/37aed/full", + "description": "Defines the base address of the used CAN identifier for both, the tester and ecu side. The tester or the ecu address can be defined during run-time." + } + } + } + } + }, + { + "additionalProperties": false, + "properties": { + "extended-free": { + "type": "object", + "title": "Extended free addressing", + "description": "The destination address is saved in the first data byte, therefore 7 data bytes can be used to exchange data. Only one CAN id per control unit is required for the response.", + "additionalProperties": false, + "properties": { + "req-can-id-type-phys": { + "$ref": "#/definitions/9f24e/local/req-can-id-type-phys" + }, + "req-can-id-type-func": { + "$ref": "#/definitions/9f24e/local/req-can-id-type-func" + }, + "res-can-id-type": { + "$ref": "#/definitions/9f24e/local/res-can-id-type" + }, + "res-can-id-type-uudt": { + "$ref": "#/definitions/9f24e/local/res-can-id-type-uudt" + }, + "req-can-id-phys": { + "$ref": "#/definitions/9f24e/local/req-can-id-phys" + }, + "req-can-id-func": { + "$ref": "#/definitions/9f24e/local/req-can-id-func" + }, + "res-can-id": { + "$ref": "#/definitions/9f24e/local/res-can-id" + }, + "res-can-id-uudt": { + "$ref": "#/definitions/9f24e/local/res-can-id-uudt" + }, + "ecu-address-phys": { + "$ref": "#/definitions/9f24e/local/ecu-address-phys" + }, + "ecu-address-func": { + "$ref": "#/definitions/9f24e/local/ecu-address-func" + }, + "tester-address": { + "$ref": "#/definitions/9f24e/local/tester-address" + } + } + } + } + }, + { + "additionalProperties": false, + "properties": { + "mixed": { + "type": "object", + "title": "Mixed addressing", + "description": "The first data byte is used to address a subnet, therefore 7 data bytes can be used to exchange data. Two CAN ids per control unit are required.", + "additionalProperties": false, + "properties": { + "req-can-id-type-phys": { + "$ref": "#/definitions/9f24e/local/req-can-id-type-phys" + }, + "req-can-id-type-func": { + "$ref": "#/definitions/9f24e/local/req-can-id-type-func" + }, + "res-can-id-type": { + "$ref": "#/definitions/9f24e/local/res-can-id-type" + }, + "res-can-id-type-uudt": { + "$ref": "#/definitions/9f24e/local/res-can-id-type-uudt" + }, + "req-can-id-phys": { + "$ref": "#/definitions/9f24e/local/req-can-id-phys" + }, + "req-can-id-func": { + "$ref": "#/definitions/9f24e/local/req-can-id-func" + }, + "res-can-id": { + "$ref": "#/definitions/9f24e/local/res-can-id" + }, + "res-can-id-uudt": { + "$ref": "#/definitions/9f24e/local/res-can-id-uudt" + }, + "ecu-address-phys": { + "$ref": "#/definitions/9f24e/local/ecu-address-phys" + }, + "ecu-address-func": { + "$ref": "#/definitions/9f24e/local/ecu-address-func" + }, + "tester-address": { + "$ref": "#/definitions/9f24e/local/tester-address" + }, + "default-tx-priority": { + "$ref": "#/definitions/9f24e/local/default-tx-priority" + }, + "address-extension": { + "$ref": "#/definitions/2ea92/full", + "description": "Address extension transmitted with the first data byte of the message frame. The \"address-extension\" usually specifies a different subnet." + } + } + } + } + } + ] + } + }, + "2ea92": { + "full": { + "$schema": "http://json-schema.org/draft-07/schema#", + "oneOf": [ + { + "$ref": "#/definitions/779cd/full" + }, + { + "$ref": "#/definitions/d6d53/full" + } + ] + } + }, + "3d54a": { + "full": { + "$schema": "http://json-schema.org/draft-07/schema#", + "description": "Configurations for IPv4.", + "anyOf": [ + { + "type": "object", + "additionalProperties": false, + "required": ["address-configuration"], + "properties": { + "name": { + "$ref": "#/definitions/9a523/full", + "description": "A unique name that can be used to reference this IPv4 setting in the configuration file.\nMust be a C-identifier (case sensitive)." + }, + "address-configuration": { + "description": "Defines how the addresses are configured. Use \"static\" to configure them manually with the \"addresses\" property, \"dhcp\" for automatic configuration or \"link-local\" to provide a link-local address according to RFC3927.", + "examples": ["dhcp", "static", "link-local"], + "oneOf": [ + { + "enum": ["dhcp", "link-local"] + }, + { + "$ref": "#/definitions/779cd/full" + } + ] + } + } + }, + { + "type": "object", + "additionalProperties": false, + "required": ["address-configuration", "addresses"], + "properties": { + "addresses": { + "$ref": "#/definitions/4d5f8/full" + }, + "name": { + "$ref": "#/definitions/9a523/full", + "description": "A unique name that can be used to reference this IPv4 setting in the configuration file.\nMust be a C-identifier (case sensitive)." + }, + "address-configuration": { + "description": "Defines how the addresses are configured. Use \"static\" to configure them manually with the \"addresses\" property, \"dhcp\" for automatic configuration or \"link-local\" to provide a link-local address according to RFC3927.", + "oneOf": [ + { + "const": "static" + }, + { + "$ref": "#/definitions/779cd/full" + } + ], + "examples": ["dhcp", "static", "link-local"] + } + } + } + ], + "examples": [ + { + "address-configuration": "dhcp", + "name": "refNameForDoIP" + }, + { + "address-configuration": "static", + "addresses": [ + { + "address": "192.168.0.2", + "subnet-mask": "255.255.255.0" + }, + { + "address": "192.168.0.3", + "subnet-prefix-length": 24 + } + ] + } + ] + } + }, + "31e20": { + "local": { + "vlan-settings": { + "type": "object", + "description": "Defines a VLAN with its relevant settings.", + "additionalProperties": false, + "required": ["id", "priority"], + "properties": { + "id": { + "$comment": "reason for 4094: see https://en.wikipedia.org/wiki/IEEE_802.1Q - VLAN identifier (VID)", + "description": "Id of the current VLAN.", + "oneOf": [ + { + "type": "integer", + "minimum": 1, + "maximum": 4094 + }, + { + "$ref": "#/definitions/779cd/full" + } + ], + "examples": [1, 2, 3, 4, 4094] + }, + "priority": { + "description": "Priority of the current VLAN.", + "oneOf": [ + { + "type": "integer", + "minimum": 0, + "maximum": 7 + }, + { + "$ref": "#/definitions/779cd/full" + } + ], + "examples": [0, 1, 2, 3, 4, 5, 6, 7] + }, + "ipv4-settings": { + "$ref": "#/definitions/3d54a/full" + }, + "ipv6-settings": { + "$ref": "#/definitions/f34eb/full" + } + } + } + }, + "full": { + "$schema": "http://json-schema.org/draft-07/schema#", + "description": "A list of VLANs with their relevant settings.", + "type": "array", + "items": { + "$ref": "#/definitions/31e20/local/vlan-settings" + }, + "maxItems": 4094, + "examples": [ + [ + { + "id": 42, + "priority": 0 + } + ], + [ + { + "id": 24, + "priority": 0, + "ipv4-settings": { + "address-configuration": "static", + "addresses": [ + { + "address": "192.168.0.2", + "subnet-mask": "255.255.255.0" + }, + { + "address": "192.168.0.3", + "subnet-prefix-length": 24 + } + ] + }, + "ipv6-settings": { + "address-configuration": "static", + "addresses": [ + { + "address": "1234::abce", + "subnet-prefix-length": 42 + }, + { + "address": "1234::abcf", + "subnet-prefix-length": 24 + } + ] + } + } + ] + ] + } + }, + "698c3": { + "full": { + "$schema": "http://json-schema.org/draft-07/schema#", + "description": "Activates TCP Routing", + "oneOf": [ + { + "type": "boolean" + }, + { + "$ref": "#/definitions/779cd/full" + } + ], + "default": false + } + }, + "6665e": { + "full": { + "$schema": "http://json-schema.org/draft-07/schema#", + "description": "Activates the TCP Delayed Ack Option.", + "oneOf": [ + { + "$ref": "#/definitions/779cd/full" + }, + { + "type": "boolean" + } + ], + "default": true + } + }, + "17b86": { + "full": { + "$schema": "http://json-schema.org/draft-07/schema#", + "type": "array", + "minItems": 1, + "items": { + "$ref": "#/definitions/245c5/full" + }, + "examples": [[15, 20, 25, "1025-1048"]] + } + }, + "63149": { + "full": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "Port configuration.", + "description": "Port configuration.", + "type": "object", + "additionalProperties": false, + "required": ["network", "measurement-port", "port-configuration"], + "properties": { + "network": { + "$ref": "#/definitions/8ab6a/full", + "description": "Name of the Ethernet network where the port is configured." + }, + "measurement-port": { + "description": "Name of a measurement port.", + "type": "string", + "oneOf": [ + { + "pattern": "^[a-zA-Z][a-zA-Z0-9_]*$" + }, + { + "pattern": "^([a-zA-Z][a-zA-Z0-9_]*)?\\$\\{[a-zA-Z_][a-zA-Z0-9_]*\\}[a-zA-Z0-9_]*$" + } + ], + "examples": ["port1"] + }, + "vlan-id": { + "$ref": "#/definitions/ee814/full", + "description": "VLAN ID to be used for packets on the port. Per default no VLAN is used." + }, + "vlan-in-clear": { + "description": "If set to \"true\", the VLAN tag is located before the SecTag in the packet. If set to \"false\", the VLAN tag is located after the SecTag, in the payload of the MACsec packet.", + "oneOf": [ + { + "type": "boolean" + }, + { + "$ref": "#/definitions/779cd/full" + } + ], + "default": false, + "examples": [false, true] + }, + "implementation": { + "description": "Defines where the encoding/decoding of the MACsec frames takes place.\n\"prefer-hardware\": The hardware implementation is automatically executed if the measurement port is assigned to a hardware channel that supports MACsec encryption in hardware.\n\"use-software\": The software implementation is always used.\n\"use-hardware\": If the hardware channel does not support MACsec encryption in hardware, then an error message is output and MACsec is disabled for the port.", + "oneOf": [ + { + "enum": ["use-software", "prefer-hardware", "use-hardware"] + }, + { + "$ref": "#/definitions/779cd/full" + } + ], + "default": "prefer-hardware", + "examples": ["use-software", "prefer-hardware", "use-hardware"] + }, + "port-configuration": { + "description": "Name of an available MACsec port configuration from the security profile.", + "oneOf": [ + { + "type": "string" + }, + { + "$ref": "#/definitions/779cd/full" + } + ] + }, + "bypass-filter": { + "$ref": "#/definitions/faee5/full", + "description": "List of bypass filters." + }, + "when": { + "$ref": "#/definitions/24f1f/full" + } + }, + "examples": [] + } + }, + "0617a": { + "full": { + "$schema": "http://json-schema.org/draft-07/schema#", + "description": "Assigns the simulation node to a network declared in the configuration file. For an Ethernet network a TCP/IP stack can be provided.", + "type": "object", + "additionalProperties": false, + "required": ["network"], + "properties": { + "network": { + "$ref": "#/definitions/8ab6a/full", + "description": "Assigns the simulation node to a network declared in the configuration file.", + "examples": ["network_name"] + }, + "tcp-ip-stack-adapter": { + "$ref": "#/definitions/f58e9/full", + "description": "Address configuration for the associated tcp-ip-stack. Is overwritten by a configuration from a linked database." + } + }, + "examples": [ + { + "network": "my_can_network_1" + } + ] + } + }, + "4f5d5": { + "full": { + "$schema": "http://json-schema.org/draft-07/schema#", + "oneOf": [ + { + "$ref": "#/definitions/779cd/full" + }, + { + "$ref": "#/definitions/815f9/full" + } + ] + } + }, + "4d5f8": { + "local": { + "ipv4-subnet-mask": { + "$ref": "#/definitions/6dbd8/full", + "description": "Subnet mask of an IPv4 Address", + "examples": [ + "255.255.255.0", + "255.255.0.0", + "255.240.0.0", + "255.0.0.0" + ] + }, + "ipv4-subnet-prefix-length": { + "description": "Subnet prefix of an IPv4 Address", + "oneOf": [ + { + "type": "integer", + "minimum": 0, + "maximum": 32 + }, + { + "$ref": "#/definitions/779cd/full" + } + ], + "examples": [0, 24, 16, 12, 8, 32] + }, + "ipv4-with-subnet": { + "type": "object", + "oneOf": [ + { + "additionalProperties": false, + "required": ["address", "subnet-mask"], + "properties": { + "address": { + "$ref": "#/definitions/4f043/full" + }, + "name": { + "$ref": "#/definitions/9a523/full", + "description": "A unique name that can be used to reference this IPv4 address in the configuration file.\nMust be a C-identifier (case sensitive)." + }, + "subnet-mask": { + "$ref": "#/definitions/4d5f8/local/ipv4-subnet-mask" + } + } + }, + { + "additionalProperties": false, + "required": ["address", "subnet-prefix-length"], + "properties": { + "address": { + "$ref": "#/definitions/4f043/full" + }, + "name": { + "$ref": "#/definitions/9a523/full", + "description": "A unique name that can be used to reference this IPv4 address in the configuration file.\nMust be a C-identifier (case sensitive)." + }, + "subnet-prefix-length": { + "$ref": "#/definitions/4d5f8/local/ipv4-subnet-prefix-length" + } + } + } + ] + } + }, + "full": { + "$schema": "http://json-schema.org/draft-07/schema#", + "description": "List of IPv4 addresses with their subnet definition", + "type": "array", + "items": { + "$ref": "#/definitions/4d5f8/local/ipv4-with-subnet" + }, + "examples": [ + [ + { + "address": "192.168.0.2", + "subnet-mask": "255.255.255.0" + } + ], + [ + { + "address": "192.168.0.3", + "subnet-prefix-length": 24, + "name": "refNameForDoIP" + } + ] + ] + } + }, + "698d7": { + "full": { + "$schema": "http://json-schema.org/draft-07/schema#", + "description": "List of IPv6 addresses with their subnet definition", + "type": "array", + "items": { + "type": "object", + "additionalProperties": false, + "required": ["address", "subnet-prefix-length"], + "properties": { + "address": { + "$ref": "#/definitions/f3ec9/full" + }, + "name": { + "$ref": "#/definitions/9a523/full", + "description": "A unique name that can be used to reference this IPv6 address in the configuration file.\nMust be a C-identifier (case sensitive)." + }, + "subnet-prefix-length": { + "description": "Subnetprefix of an IPv6 Address", + "oneOf": [ + { + "type": "integer", + "minimum": 0, + "maximum": 128 + }, + { + "$ref": "#/definitions/779cd/full" + } + ], + "examples": [0, 48, 128] + } + } + }, + "examples": [ + [ + { + "address": "1234::abce", + "subnet-prefix-length": 42 + } + ], + [ + { + "address": "1234::abcf", + "subnet-prefix-length": 24, + "name": "refNameForDoIP" + } + ] + ] + } + }, + "6dbd8": { + "full": { + "$schema": "http://json-schema.org/draft-07/schema#", + "type": "string", + "oneOf": [ + { + "pattern": "((1?[0-9]?[0-9]|2[0-4][0-9]|25[0-5])\\.){3}(1?[0-9]?[0-9]|2[0-4][0-9]|25[0-5])" + }, + { + "$ref": "#/definitions/779cd/full" + } + ], + "examples": ["127.0.0.1", "192.168.0.0", "172.16.0.0", "10.0.0.0"] + } + }, + "47638": { + "full": { + "$schema": "http://json-schema.org/draft-07/schema#", + "type": "string", + "oneOf": [ + { + "pattern": "^([0-9A-Fa-f]{1,4}(:[0-9A-Fa-f]{1,4}){7}|:(:[0-9A-Fa-f]{1,4}){1,7}|([0-9A-Fa-f]{1,4}:){1,7}:|::|([0-9A-Fa-f]{1,4}:){1}(:[0-9A-Fa-f]{1,4}){1,6}|([0-9A-Fa-f]{1,4}:){2}(:[0-9A-Fa-f]{1,4}){1,5}|([0-9A-Fa-f]{1,4}:){3}(:[0-9A-Fa-f]{1,4}){1,4}|([0-9A-Fa-f]{1,4}:){4}(:[0-9A-Fa-f]{1,4}){1,3}|([0-9A-Fa-f]{1,4}:){5}(:[0-9A-Fa-f]{1,4}){1,2}|([0-9A-Fa-f]{1,4}:){6}(:[0-9A-Fa-f]{1,4}){1})$" + }, + { + "$ref": "#/definitions/779cd/full" + } + ], + "examples": [ + "1234:0000:0000:0000:0000:0000:0000:abcd", + "1234::abcd", + "::" + ] + } + }, + "245c5": { + "full": { + "$schema": "http://json-schema.org/draft-07/schema#", + "oneOf": [ + { + "type": "string", + "pattern": "^((6553[0-5])|(655[0-2][0-9])|(65[0-4][0-9]{2})|(6[0-4][0-9]{3})|([1-5][0-9]{4})|([0-5]{0,5})|([0-9]{1,4}))-((6553[0-5])|(655[0-2][0-9])|(65[0-4][0-9]{2})|(6[0-4][0-9]{3})|([1-5][0-9]{4})|([0-5]{0,5})|([0-9]{1,4}))|(0x[0-9A-Fa-f]{1,4}-0x[0-9A-Fa-f]{1,4})$" + }, + { + "$ref": "#/definitions/37aed/full" + } + ], + "examples": [80, "1025-1048", "5-28"] + } + }, + "815f9": { + "full": { + "$schema": "http://json-schema.org/draft-07/schema#", + "type": "integer", + "minimum": 0, + "maximum": 9223372036854775807 + } + }, + "4f043": { + "full": { + "$schema": "http://json-schema.org/draft-07/schema#", + "$ref": "#/definitions/6dbd8/full", + "description": "IPv4 address" + } + }, + "1da57": { + "full": { + "$schema": "http://json-schema.org/draft-07/schema#", + "description": "Defines for which direction the filter should be active.", + "oneOf": [ + { + "type": "string", + "enum": ["both", "egress", "ingress"] + }, + { + "$ref": "#/definitions/779cd/full" + } + ], + "default": "both", + "examples": ["both", "egress", "ingress"] + } + }, + "2c5a2": { + "full": { + "$schema": "http://json-schema.org/draft-07/schema#", + "type": "string", + "oneOf": [ + { + "pattern": "[0-9a-fA-F](:[0-9a-fA-F]{2}){5}" + }, + { + "$ref": "#/definitions/779cd/full" + } + ], + "examples": [ + "02:84:cf:3b:be:01", + "aa:bb:cc:dd:ee:ff", + "AA:BB:CC:DD:EE:FF" + ] + } + } + } +} diff --git a/src/schemas/json/venvplus-basic-schema-v1.0.0.json b/src/schemas/json/venvplus-basic-schema-v1.0.0.json deleted file mode 100644 index 62cd4ff946d..00000000000 --- a/src/schemas/json/venvplus-basic-schema-v1.0.0.json +++ /dev/null @@ -1,135 +0,0 @@ -{ - "$schema": "http://json-schema.org/draft-07/schema#", - "$id": "https://json.schemastore.org/venvplus-basic-schema-v1.0.0.json", - "$ref": "#/definitions/ac0b4/full", - "type": "object", - "title": "venvplus-basic schema", - "definitions": { - "ac0b4": { - "full": { - "$schema": "http://json-schema.org/draft-07/schema#", - "title": "venvplus-basic schema", - "type": "object", - "additionalProperties": false, - "required": ["version"], - "properties": { - "version": { - "$ref": "#/definitions/ab738/full" - }, - "offline-config": { - "$ref": "#/definitions/29dc9/full" - } - } - } - }, - "ab738": { - "full": { - "$schema": "http://json-schema.org/draft-07/schema#", - "title": "Version", - "description": "Json schema version for the venvplus-basic configuration file. Acceptance criteria: equal major version, less/equal minor and patch version.", - "const": "1.0.0", - "type": "string", - "examples": ["1.0.0"] - } - }, - "e0f9d": { - "full": { - "$schema": "http://json-schema.org/draft-07/schema#", - "description": "Absolute or relative path to a logging file (.blf). Relative path specifications are resolved relative to the configuration file.", - "type": "string", - "anyOf": [ - { - "pattern": "^.*\\.[bB][lL][fF]$" - } - ] - } - }, - "29dc9": { - "full": { - "$schema": "http://json-schema.org/draft-07/schema#", - "title": "Offline config", - "description": "Settings for offline mode", - "type": "object", - "additionalProperties": false, - "required": ["source-files"], - "properties": { - "source-files": { - "description": "List of offline source files. A reference to a channel mapping set can be specified.", - "type": "array", - "items": { - "$ref": "#/definitions/908d2/full" - } - }, - "processing-sequence": { - "description": "Processing sequence of the offline sources.\n\"timestamp-only\": The offline sources are processed according to their timestamp, date and time are irrelevant.\n\"date-and-time\": The offline sources are processed according to date/time and the time stamp. Only available if all sources have absolute time stamps.\n\"source-file-sequence\": The offline sources are replayed in the order in which they are given in \"source-files\".", - "default": "timestamp-only", - "enum": ["timestamp-only", "date-and-time", "source-file-sequence"], - "examples": [ - "timestamp-only", - "date-and-time", - "source-file-sequence" - ] - } - }, - "examples": [ - { - "source-files": [ - { - "file-path": ["path/to/my.blf", "path/to/another.blf"] - } - ] - }, - { - "source-files": [ - { - "file-path": "path/to/my.blf" - }, - { - "file-path": "path/to/another.blf" - } - ], - "processing-sequence": "source-file-sequence" - }, - { - "source-files": [ - { - "file-path": "path/to/my.blf" - }, - { - "file-path": "path/to/one.blf" - } - ] - } - ] - } - }, - "908d2": { - "full": { - "$schema": "http://json-schema.org/draft-07/schema#", - "type": "object", - "additionalProperties": false, - "required": ["file-path"], - "properties": { - "file-path": { - "oneOf": [ - { - "$ref": "#/definitions/e0f9d/full" - }, - { - "type": "array", - "items": { - "$ref": "#/definitions/e0f9d/full" - } - } - ], - "examples": [ - "path/to/my.blf", - ["path/to/my.blf"], - ["path/to/my.blf", "path/to/another.blf"] - ] - } - } - } - } - } -} diff --git a/src/test/hatch/metadata-hooks.toml b/src/test/hatch/metadata-hooks.toml new file mode 100644 index 00000000000..e26c4a73b44 --- /dev/null +++ b/src/test/hatch/metadata-hooks.toml @@ -0,0 +1,4 @@ +#:schema ../../schemas/json/hatch.json +[metadata.hooks] +custom = { readme-path = "README.adoc" } +docstring-description = {} diff --git a/src/test/hatch/version-vcs-raw-options.toml b/src/test/hatch/version-vcs-raw-options.toml new file mode 100644 index 00000000000..bf45e46bfae --- /dev/null +++ b/src/test/hatch/version-vcs-raw-options.toml @@ -0,0 +1,4 @@ +#:schema ../../schemas/json/hatch.json +[version] +raw-options = { local_scheme = "no-local-version", version_scheme = "python-simplified-semver" } +source = "vcs" diff --git a/src/test/hatch/wheel-bypass-selection.toml b/src/test/hatch/wheel-bypass-selection.toml new file mode 100644 index 00000000000..68fe7504c1d --- /dev/null +++ b/src/test/hatch/wheel-bypass-selection.toml @@ -0,0 +1,3 @@ +#:schema ../../schemas/json/hatch.json +[build.targets.wheel] +bypass-selection = true diff --git a/src/test/venvironment-basic-schema-v2.1.0/empty.yaml b/src/test/venvironment-basic-schema-v2.1.0/empty.yaml deleted file mode 100644 index 9bb8f4bc225..00000000000 --- a/src/test/venvironment-basic-schema-v2.1.0/empty.yaml +++ /dev/null @@ -1,2 +0,0 @@ -# yaml-language-server: $schema=../../schemas/json/venvironment-basic-schema-v2.1.0.json -version: '2.1.0' diff --git a/src/test/venvironment-basic-schema-v2.1.0/unicode-1.yaml b/src/test/venvironment-basic-schema-v2.1.0/unicode-1.yaml deleted file mode 100644 index 8e5237b7f08..00000000000 --- a/src/test/venvironment-basic-schema-v2.1.0/unicode-1.yaml +++ /dev/null @@ -1,9 +0,0 @@ -# yaml-language-server: $schema=../../schemas/json/venvironment-basic-schema-v2.1.0.json -version: '2.1.0' - -system-variables: - - file-path: Inputs/SysVar_👿👿👿坏街🥳.vsysvar - -datasources: - input-files: - - file-path: Inputs/vcdl_👿👿👿坏街🥳.vcdl diff --git a/src/test/venvironment-basic-schema-v2.1.0/vcdls.yaml b/src/test/venvironment-basic-schema-v2.1.0/vcdls.yaml deleted file mode 100644 index ecec677627f..00000000000 --- a/src/test/venvironment-basic-schema-v2.1.0/vcdls.yaml +++ /dev/null @@ -1,6 +0,0 @@ -# yaml-language-server: $schema=../../schemas/json/venvironment-basic-schema-v2.1.0.json -version: '2.1.0' - -datasources: - input-files: - - file-path: ['Inputs/vCDLs/vCDL1.vcdl', 'Inputs/vCDLs/vCDL2.vcdl'] diff --git a/src/test/venvironment-basic-schema-v3.2.0/empty.yaml b/src/test/venvironment-basic-schema-v3.2.0/empty.yaml deleted file mode 100644 index 886ff18788c..00000000000 --- a/src/test/venvironment-basic-schema-v3.2.0/empty.yaml +++ /dev/null @@ -1,2 +0,0 @@ -# yaml-language-server: $schema=../../schemas/json/venvironment-basic-schema-v3.2.0.json -version: '3.2.0' diff --git a/src/test/venvironment-basic-schema-v3.2.0/unicode-1.yaml b/src/test/venvironment-basic-schema-v3.2.0/unicode-1.yaml deleted file mode 100644 index ee25c8f72e7..00000000000 --- a/src/test/venvironment-basic-schema-v3.2.0/unicode-1.yaml +++ /dev/null @@ -1,8 +0,0 @@ -# yaml-language-server: $schema=../../schemas/json/venvironment-basic-schema-v3.2.0.json -version: '3.2.0' - -system-variables: - - file-path: Inputs/SysVar_👿👿👿坏街🥳.vsysvar - -datasources: - - file-path: [Inputs/vcdl_👿👿👿坏街🥳.vcdl] diff --git a/src/test/venvironment-basic-schema-v4.0.0/empty.yaml b/src/test/venvironment-basic-schema-v4.0.0/empty.yaml deleted file mode 100644 index 2ef576f85be..00000000000 --- a/src/test/venvironment-basic-schema-v4.0.0/empty.yaml +++ /dev/null @@ -1,2 +0,0 @@ -# yaml-language-server: $schema=../../schemas/json/venvironment-basic-schema-v4.0.0.json -version: '4.0.0' diff --git a/src/test/venvironment-basic-schema-v4.0.0/unicode-1.yaml b/src/test/venvironment-basic-schema-v4.0.0/unicode-1.yaml deleted file mode 100644 index dc83ca1a52a..00000000000 --- a/src/test/venvironment-basic-schema-v4.0.0/unicode-1.yaml +++ /dev/null @@ -1,8 +0,0 @@ -# yaml-language-server: $schema=../../schemas/json/venvironment-basic-schema-v4.0.0.json -version: '4.0.0' - -system-variables: - - file-path: Inputs/SysVar_👿👿👿坏街🥳.vsysvar - -datasources: - - file-path: [Inputs/vcdl_👿👿👿坏街🥳.vcdl] diff --git a/src/test/venvironment-basic-schema-v4.0.0/vcdls.yaml b/src/test/venvironment-basic-schema-v4.0.0/vcdls.yaml deleted file mode 100644 index 7a42c361582..00000000000 --- a/src/test/venvironment-basic-schema-v4.0.0/vcdls.yaml +++ /dev/null @@ -1,5 +0,0 @@ -# yaml-language-server: $schema=../../schemas/json/venvironment-basic-schema-v4.0.0.json -version: '4.0.0' - -datasources: - - file-path: ['Inputs/vCDLs/vCDL1.vcdl', 'Inputs/vCDLs/vCDL2.vcdl'] diff --git a/src/test/venvironment-schema-v4.2.0/can-and-canfd.yaml b/src/test/venvironment-schema-v4.2.0/can-and-canfd.yaml new file mode 100644 index 00000000000..e632f6d5c46 --- /dev/null +++ b/src/test/venvironment-schema-v4.2.0/can-and-canfd.yaml @@ -0,0 +1,17 @@ +# yaml-language-server: $schema=../../schemas/json/venvironment-schema-v4.2.0.json +version: '4.2.0' + +databases: + - name: Easy + file-path: 'Inputs/CANdb/easy.dbc' + +can-networks: + - name: can1_network + database: Easy + can-settings: + bit-rate-k-bit-s: 500 + - name: canfd_network + database: Easy + can-fd-settings: + arbitration-bit-rate-k-bit-s: 500 + data-bit-rate-k-bit-s: 1000 diff --git a/src/negative_test/venvironment-basic-schema-v2.1.0/invalid-version.yaml b/src/test/venvironment-schema-v4.2.0/empty.yaml similarity index 61% rename from src/negative_test/venvironment-basic-schema-v2.1.0/invalid-version.yaml rename to src/test/venvironment-schema-v4.2.0/empty.yaml index 8188d3d9811..f8f5e0b4647 100644 --- a/src/negative_test/venvironment-basic-schema-v2.1.0/invalid-version.yaml +++ b/src/test/venvironment-schema-v4.2.0/empty.yaml @@ -1,2 +1,2 @@ -# yaml-language-server: $schema=../../schemas/json/venvironment-basic-schema-v2.1.0.json -version: 2.0.0 +# yaml-language-server: $schema=../../schemas/json/venvironment-schema-v4.2.0.json +version: '4.2.0' diff --git a/src/test/venvironment-schema-v4.2.0/unicode-1.yaml b/src/test/venvironment-schema-v4.2.0/unicode-1.yaml new file mode 100644 index 00000000000..5b23d904027 --- /dev/null +++ b/src/test/venvironment-schema-v4.2.0/unicode-1.yaml @@ -0,0 +1,71 @@ +# yaml-language-server: $schema=../../schemas/json/venvironment-schema-v4.2.0.json +version: '4.2.0' + +system-variables: + - file-path: Inputs/SysVar_👿👿👿坏街🥳.vsysvar + +datasources: + - file-path: Inputs/vcdl_👿👿👿坏街🥳.vcdl + +application-models: + - file-path: Inputs/Nodes/model_👿👿👿坏街🥳.py + +databases: + - name: Easy + file-path: 'Inputs/Databases/easy_👿👿👿坏街🥳.dbc' + - name: Cluster1 + file-path: 'Inputs/Databases/TwoCANClusters_👿👿👿坏街🥳.arxml' + network-name: Cluster1 + - name: Cluster2 + file-path: 'Inputs/Databases/TwoCANClusters_👿👿👿坏街🥳.arxml' + network-name: Cluster2 + +can-networks: + - name: CAN1 + database: Cluster1 + - name: MyNetwork + database: Cluster2 + +simulation-nodes: + - name: MyECU1 + file-path: Inputs/Nodes/MyECU1_👿👿👿坏街🥳.can + modeling-libraries: + [Inputs/ModellingLibraries/AsrPDUIL2_👿👿👿坏街🥳.vmodule] + network-assignments: + - network: CAN1 + - name: VectorSimulationNode1 + file-path: Inputs/Nodes/VectorSimulation1_👿👿👿坏街🥳.can + modeling-libraries: + [Inputs/ModellingLibraries/AsrPDUIL2_👿👿👿坏街🥳.vmodule] + network-assignments: + - network: CAN1 + - name: MyECU2 + file-path: Inputs/Nodes/MyECU2_👿👿👿坏街🥳.can + modeling-libraries: + [Inputs/ModellingLibraries/AsrPDUIL2_👿👿👿坏街🥳.vmodule] + network-assignments: + - network: MyNetwork + - name: VectorSimulationNode2 + file-path: Inputs/Nodes/VectorSimulation2_👿👿👿坏街🥳.can + modeling-libraries: + [Inputs/ModellingLibraries/AsrPDUIL2_👿👿👿坏街🥳.vmodule] + network-assignments: + - network: MyNetwork + - name: Engine + file-path: Inputs/Nodes/engine_👿👿👿坏街🥳.cs + modeling-libraries: + [Inputs/ModellingLibraries/CANoeILNLVectorModule_👿👿👿坏街🥳.vmodule] + network-assignments: + - network: MyNetwork + - name: Light + file-path: Inputs/Nodes/light_👿👿👿坏街🥳.cs + modeling-libraries: + [Inputs/ModellingLibraries/CANoeILNLVectorModule_👿👿👿坏街🥳.vmodule] + network-assignments: + - network: MyNetwork + - name: Display + file-path: Inputs/Nodes/display_👿👿👿坏街🥳.cs + modeling-libraries: + [Inputs/ModellingLibraries/CANoeILNLVectorModule_👿👿👿坏街🥳.vmodule] + network-assignments: + - network: MyNetwork diff --git a/src/test/venvironment-schema-v4.2.0/unicode-2.yaml b/src/test/venvironment-schema-v4.2.0/unicode-2.yaml new file mode 100644 index 00000000000..575e51435d8 --- /dev/null +++ b/src/test/venvironment-schema-v4.2.0/unicode-2.yaml @@ -0,0 +1,31 @@ +# yaml-language-server: $schema=../../schemas/json/venvironment-schema-v4.2.0.json +version: '4.2.0' + +variables: + - name: dbfpath + value: 'Inputs 入力/CANdb 斷續器/easy лёгкий.dbc' + - name: candb + value: Easy + - name: simnodefpath + value: 'Inputs 入力/Nodes عقدہ/node 노드.can' + - name: simnodenetw + value: can1_network + - name: nodeName + value: Display + +databases: + - name: Easy + file-path: ${dbfpath} + +can-networks: + - name: can1_network + database: '${candb}' + +simulation-nodes: + - name: simnode + file-path: ${simnodefpath} + network-assignments: + - network: ${simnodenetw} + +scenarios: + - name: can_easy_scenario diff --git a/src/test/venvironment-basic-schema-v3.2.0/vcdls.yaml b/src/test/venvironment-schema-v4.2.0/vcdls.yaml similarity index 77% rename from src/test/venvironment-basic-schema-v3.2.0/vcdls.yaml rename to src/test/venvironment-schema-v4.2.0/vcdls.yaml index 8e7fe832a26..8f70eeae649 100644 --- a/src/test/venvironment-basic-schema-v3.2.0/vcdls.yaml +++ b/src/test/venvironment-schema-v4.2.0/vcdls.yaml @@ -1,5 +1,5 @@ -# yaml-language-server: $schema=../../schemas/json/venvironment-basic-schema-v3.2.0.json -version: '3.2.0' +# yaml-language-server: $schema=../../schemas/json/venvironment-schema-v4.2.0.json +version: '4.2.0' datasources: - file-path: ['Inputs/vCDLs/vCDL1.vcdl', 'Inputs/vCDLs/vCDL2.vcdl'] diff --git a/src/test/venvironment-schema-v4.2.0/xcp.yaml b/src/test/venvironment-schema-v4.2.0/xcp.yaml new file mode 100644 index 00000000000..814568acb07 --- /dev/null +++ b/src/test/venvironment-schema-v4.2.0/xcp.yaml @@ -0,0 +1,21 @@ +# yaml-language-server: $schema=../../schemas/json/venvironment-schema-v4.2.0.json +version: '4.2.0' + +databases: + - name: XCP + file-path: 'Inputs/db/XCP.dbc' + +can-networks: + - name: can1_network + database: XCP + - name: canfd_network + database: XCP + can-fd-settings: + arbitration-bit-rate-k-bit-s: 500 + data-bit-rate-k-bit-s: 1000 + +application-models: + - file-path: 'Inputs/nodes/model.can' + +xcp-configuration-files: + - file-path: 'Inputs/xcp/demo.xcpcfg' diff --git a/src/test/venvplus-basic-schema-v1.0.0/empty.yaml b/src/test/venvplus-basic-schema-v1.0.0/empty.yaml deleted file mode 100644 index dba35a3e67a..00000000000 --- a/src/test/venvplus-basic-schema-v1.0.0/empty.yaml +++ /dev/null @@ -1,2 +0,0 @@ -# yaml-language-server: $schema=../../schemas/json/venvplus-basic-schema-v1.0.0.json -version: '1.0.0' diff --git a/src/test/venvplus-basic-schema-v1.0.0/offline-config.yaml b/src/test/venvplus-basic-schema-v1.0.0/offline-config.yaml deleted file mode 100644 index 8c5411e936d..00000000000 --- a/src/test/venvplus-basic-schema-v1.0.0/offline-config.yaml +++ /dev/null @@ -1,7 +0,0 @@ -# yaml-language-server: $schema=../../schemas/json/venvplus-basic-schema-v1.0.0.json -version: '1.0.0' - -offline-config: - source-files: - - file-path: 'LoggingFile.blf' - processing-sequence: date-and-time