{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://catalog.lintel.tools/schemas/schemastore/venvironment-yaml/versions/1.0.0.json",
  "title": "venvironment schema",
  "x-lintel": {
    "source": "https://www.schemastore.org/venvironment-schema-v1.0.0.json",
    "sourceSha256": "e9cad9f7d3449ffccb8bd4ac022c82385025e1cee6f1fd5c376a370e88f268ba",
    "fileMatch": [
      "venvironment.yaml",
      "*.venvironment.yaml",
      "venvironment.yml",
      "*.venvironment.yml",
      "venvironment.json",
      "*.venvironment.json"
    ],
    "parsers": [
      "json",
      "yaml"
    ]
  },
  "type": "object",
  "$ref": "#/$defs/b4889/full",
  "$defs": {
    "b4889": {
      "full": {
        "$schema": "http://json-schema.org/draft-07/schema#",
        "title": "venvironment schema",
        "type": "object",
        "additionalProperties": false,
        "required": [
          "version"
        ],
        "properties": {
          "version": {
            "$ref": "#/definitions/0e921/full"
          },
          "includes": {
            "$ref": "#/definitions/6c391/full"
          },
          "variables": {
            "$ref": "#/definitions/f9fcb/full"
          },
          "application-models": {
            "$ref": "#/definitions/497d3/full"
          },
          "datasources": {
            "$ref": "#/definitions/015cb/full"
          },
          "defines": {
            "$ref": "#/definitions/16f14/full"
          },
          "system-variables": {
            "$ref": "#/definitions/3eaba/full"
          },
          "simulation-nodes": {
            "$ref": "#/definitions/c706a/full"
          },
          "databases": {
            "$ref": "#/definitions/13e53/full"
          },
          "can-networks": {
            "$ref": "#/definitions/79d04/full"
          },
          "canfd-networks": {
            "$ref": "#/definitions/252f0/full"
          },
          "scenarios": {
            "$ref": "#/definitions/79a89/full"
          }
        }
      }
    },
    "f9fcb": {
      "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/03ea7/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
              ]
            }
          ]
        ]
      }
    },
    "c706a": {
      "full": {
        "$schema": "http://json-schema.org/draft-07/schema#",
        "title": "Simulation Nodes",
        "description": "A list of simulation nodes used in a simulation. Entries can be deactivated with when.",
        "type": "array",
        "items": {
          "$ref": "#/definitions/86b88/full"
        },
        "examples": [
          [
            {
              "name": "mynode",
              "network-assignments": [
                {
                  "network": "my_can_network_1"
                }
              ]
            }
          ],
          [
            {
              "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",
              "network-assignments": [
                {
                  "network": "my_can_network_1",
                  "database-node": {
                    "database": "mydatabase",
                    "node": "mynode"
                  },
                  "modeling-libraries": [
                    "modeling/lib/2.dll"
                  ]
                }
              ],
              "defines": [
                "mydefine1",
                "mydefine2"
              ],
              "modeling-libraries": [
                "modeling/lib/1.dll",
                "${path_in_var}"
              ],
              "when": "SCENARIO_NAME == \"my_scenario_name\""
            }
          ]
        ]
      }
    },
    "b88a6": {
      "full": {
        "$schema": "http://json-schema.org/draft-07/schema#",
        "anyOf": [
          {
            "$ref": "#/definitions/4de3d/full"
          },
          {
            "type": "array",
            "items": {
              "$ref": "#/definitions/4de3d/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}"
          ]
        ]
      }
    },
    "cd5c2": {
      "full": {
        "$schema": "http://json-schema.org/draft-07/schema#",
        "title": "Define",
        "description": "Defines to be passed to capl / vcdl.",
        "type": "object",
        "additionalProperties": false,
        "required": [
          "define"
        ],
        "properties": {
          "when": {
            "$ref": "#/definitions/09e40/full"
          },
          "define": {
            "anyOf": [
              {
                "$ref": "#/definitions/a8440/full"
              },
              {
                "$ref": "#/definitions/883aa/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}"
            ]
          }
        ]
      }
    },
    "b0b65": {
      "full": {
        "$schema": "http://json-schema.org/draft-07/schema#",
        "title": "CANFD network",
        "description": "A Network using the CANFD protocol taking part in a simulation.",
        "type": "object",
        "additionalProperties": false,
        "required": [
          "name"
        ],
        "properties": {
          "name": {
            "$ref": "#/definitions/038dc/full"
          },
          "when": {
            "$ref": "#/definitions/09e40/full"
          },
          "databases": {
            "$ref": "#/definitions/c2452/full"
          },
          "mode": {
            "description": "Operation Mode setting (iso or non-iso Mode).",
            "anyOf": [
              {
                "type": "string",
                "enum": [
                  "iso",
                  "non-iso"
                ],
                "default": "iso"
              },
              {
                "$ref": "#/definitions/779cd/full"
              }
            ]
          },
          "arbitration-baudrate": {
            "description": "Baudrate for the arbitration phase of CAN FD in Baud.",
            "anyOf": [
              {
                "type": "integer",
                "minimum": 0,
                "maximum": 9223372036854775807,
                "default": 500000
              },
              {
                "$ref": "#/definitions/779cd/full"
              }
            ]
          },
          "data-baudrate": {
            "description": "Baudrate for the data phase of CAN FD in Baud.",
            "anyOf": [
              {
                "type": "integer",
                "minimum": 0,
                "maximum": 9223372036854775807,
                "default": 1000000
              },
              {
                "$ref": "#/definitions/779cd/full"
              }
            ]
          },
          "application-channel": {
            "description": "Index of the Application Channel. Each busytype should provide consecutive indices. Starts counting at 1. Value between 1 and 255. Value '0' is not allowed. Caution: CAN and CANFD share the Application Channels!",
            "anyOf": [
              {
                "type": "integer",
                "minimum": 1,
                "maximum": 255,
                "default": 1
              },
              {
                "$ref": "#/definitions/779cd/full"
              }
            ]
          }
        },
        "examples": [
          {
            "name": "my_canfd_network"
          },
          {
            "name": "my_canfd_network",
            "when": "SCENARIO_NAME == \"my_scenario_name\""
          },
          {
            "name": "my_canfd_network",
            "databases": [
              "DB_1",
              "DB_2"
            ],
            "application-channel": 42,
            "mode": "iso",
            "arbitration-baudrate": 500000,
            "data-baudrate": 1000000
          }
        ]
      }
    },
    "d12ef": {
      "full": {
        "$schema": "http://json-schema.org/draft-07/schema#",
        "title": "Scenario",
        "description": "A scenario with the option to define / override variables or defines",
        "type": "object",
        "additionalProperties": false,
        "required": [
          "name"
        ],
        "properties": {
          "name": {
            "type": "string",
            "pattern": "^[a-zA-Z_][a-zA-Z0-9_]*$",
            "not": {
              "const": "Default"
            }
          },
          "variables": {
            "$ref": "#/definitions/f9fcb/full"
          },
          "defines": {
            "$ref": "#/definitions/883aa/full"
          }
        },
        "examples": [
          {
            "name": "my_scenario_name"
          },
          {
            "name": "override_variables",
            "variables": [
              {
                "name": "three",
                "value": 3
              }
            ]
          },
          {
            "name": "override_defines",
            "defines": [
              "mydefine",
              "mydevine_with_value=42"
            ]
          }
        ]
      }
    },
    "a8440": {
      "full": {
        "$schema": "http://json-schema.org/draft-07/schema#",
        "description": "Define to be passed to capl / 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}"
        ]
      }
    },
    "dc7e6": {
      "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]$"
          },
          {
            "pattern": "^.*\\$\\{[a-zA-Z_][a-zA-Z0-9_]*\\}$"
          }
        ],
        "examples": [
          "path/to/my.vsysvar",
          "${path_in_variable}",
          "path/${name_in_variable}"
        ]
      }
    },
    "a10be": {
      "full": {
        "$schema": "http://json-schema.org/draft-07/schema#",
        "description": "Absolute or relative path to a source file of a simulation node.  Relative path specifications are resolved relative to the defining configuration file.",
        "type": "string",
        "anyOf": [
          {
            "pattern": "^.*\\.[Cc][Aa][Nn]$"
          },
          {
            "pattern": "^.*\\.[Cc][Ss]$"
          },
          {
            "pattern": "^.*\\.[Ss][Ll][Nn]$"
          },
          {
            "pattern": "^.*\\$\\{[a-zA-Z_][a-zA-Z0-9_]*\\}$"
          }
        ],
        "examples": [
          "path/to/my_capl_script.can",
          "path/to/my_dotnet.cs",
          "path/to/my_visual_studio.sln",
          "${path_in_variable}",
          "path/${name_in_variable}"
        ]
      }
    },
    "ee1ae": {
      "full": {
        "$schema": "http://json-schema.org/draft-07/schema#",
        "description": "Absolute or relative path to a dll or vmodule file. Relative path specifications are resolved relative to the configuration file.",
        "type": "string",
        "anyOf": [
          {
            "pattern": "^.*\\.[Dd][Ll]{2}$"
          },
          {
            "pattern": "^.*\\.[vV][mM][oO][dD][uU][lL][eE]$"
          },
          {
            "pattern": "^.*\\$\\{[a-zA-Z_][a-zA-Z0-9_]*\\}$"
          }
        ],
        "examples": [
          "path/to/my.dll",
          "path/to/my.vmodule",
          "${path_in_variable}",
          "path/${name_in_variable}"
        ]
      }
    },
    "c2452": {
      "full": {
        "$schema": "http://json-schema.org/draft-07/schema#",
        "description": "A list of C-identifiers for referenced elements (case sensitive)",
        "type": "array",
        "items": {
          "$ref": "#/definitions/e4921/full"
        },
        "examples": [
          [
            "myid"
          ],
          [
            "THIS_IS_CASE_SENSITIVE",
            "__1_2_3_4_5__"
          ],
          [
            "${id_in_variable}",
            "prefix_${infix_in_variable}_suffix"
          ]
        ]
      }
    },
    "b2479": {
      "full": {
        "$schema": "http://json-schema.org/draft-07/schema#",
        "description": "A network node represented by this application.",
        "type": "object",
        "additionalProperties": false,
        "required": [
          "network"
        ],
        "properties": {
          "network": {
            "type": "string",
            "description": "For assignment of this NetworkNode to a Network.",
            "examples": [
              "network_name"
            ]
          },
          "modeling-libraries": {
            "type": "array",
            "items": {
              "$ref": "#/definitions/ee1ae/full"
            },
            "description": "For assignment of modeling libraries to this NetworkNode"
          },
          "database-node": {
            "$ref": "#/definitions/9acfe/full"
          },
          "lin-role": {
            "anyOf": [
              {
                "$ref": "#/definitions/183d9/full"
              },
              {
                "type": "array",
                "items": {
                  "$ref": "#/definitions/183d9/full"
                }
              }
            ]
          }
        },
        "examples": [
          {
            "network": "my_can_network_1"
          },
          {
            "network": "my_can_network_1",
            "modeling-libraries": [
              "modeling/lib/1.dll",
              "${path_in_var}",
              "path/${name_in_var}"
            ]
          },
          {
            "network": "my_can_network_1",
            "lin-role": "master"
          },
          {
            "network": "my_can_network_1",
            "lin-role": [
              "master",
              "config-tester"
            ]
          },
          {
            "network": "my_can_network_1",
            "database-node": {
              "database": "mydatabase",
              "node": "mynode"
            }
          }
        ]
      }
    },
    "e4921": {
      "full": {
        "$schema": "http://json-schema.org/draft-07/schema#",
        "description": "A C-identifier for a referenced element (case sensitive)",
        "type": "string",
        "anyOf": [
          {
            "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}"
        ]
      }
    },
    "0e921": {
      "full": {
        "$schema": "http://json-schema.org/draft-07/schema#",
        "title": "Version",
        "description": "Json schema version for the vEnvironment configuration file. Acceptance criteria: equal major version, less/equal minor and patch version.",
        "const": "1.0.0",
        "type": "string",
        "examples": [
          "1.0.0"
        ]
      }
    },
    "183d9": {
      "full": {
        "$schema": "http://json-schema.org/draft-07/schema#",
        "description": "Role of a node in a LIN network.",
        "type": "string",
        "enum": [
          "master",
          "slave",
          "config-tester"
        ],
        "examples": [
          "master",
          "slave",
          "config-tester"
        ]
      }
    },
    "497d3": {
      "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/51b90/full"
        },
        "examples": [
          [
            {
              "file-path": "path/to/my/file.can",
              "defines": [
                "mydefine1",
                "mydefine=2"
              ]
            }
          ]
        ]
      }
    },
    "015cb": {
      "full": {
        "$schema": "http://json-schema.org/draft-07/schema#",
        "title": "Datasources",
        "description": "The definition of datasources used by application models. Input files can be deactivated with when.",
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "input-files": {
            "type": "array",
            "items": {
              "type": "object",
              "additionalProperties": false,
              "required": [
                "file-path"
              ],
              "properties": {
                "when": {
                  "$ref": "#/definitions/09e40/full"
                },
                "file-path": {
                  "$ref": "#/definitions/b88a6/full"
                }
              }
            }
          }
        },
        "examples": [
          {
            "input-files": [
              {
                "file-path": "path/to/my.vcdl"
              }
            ]
          },
          {
            "input-files": [
              {
                "file-path": [
                  "path/to/my.vcodm",
                  "${path_in_variable}",
                  "path/${name_in_variable}"
                ]
              }
            ]
          },
          {
            "input-files": [
              {
                "file-path": "path/to/my.vcdl",
                "when": "SCENARIO_NAME == \"my_scenario_name\""
              }
            ]
          }
        ]
      }
    },
    "16f14": {
      "full": {
        "$schema": "http://json-schema.org/draft-07/schema#",
        "title": "Defines",
        "description": "List of defines to be passed to capl / vcdl. Entries can be deactivated with when.",
        "type": "array",
        "items": {
          "$ref": "#/definitions/cd5c2/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}"
              ]
            }
          ]
        ]
      }
    },
    "3eaba": {
      "full": {
        "$schema": "http://json-schema.org/draft-07/schema#",
        "title": "System Variables",
        "description": "A lists of system variables to be used by the simulation. Entries can be deactivated with when.",
        "type": "array",
        "items": {
          "$ref": "#/definitions/21f87/full"
        },
        "examples": [
          [
            {
              "file-path": "path/to/my.vsysvar"
            }
          ],
          [
            {
              "file-path": [
                "${path_in_variable}",
                "path/${name_in_variable}"
              ]
            },
            {
              "file-path": "path/to/my.vsysvar",
              "when": "SCENARIO_NAME == \"my_scenario_name\""
            }
          ]
        ]
      }
    },
    "13e53": {
      "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/3071b/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\""
            }
          ]
        ]
      }
    },
    "79d04": {
      "full": {
        "$schema": "http://json-schema.org/draft-07/schema#",
        "title": "CAN Networks",
        "description": "List of CAN networks. Entries can be deactivated with when.",
        "type": "array",
        "items": {
          "$ref": "#/definitions/00571/full"
        },
        "examples": [
          [
            {
              "name": "my_can_network"
            }
          ],
          [
            {
              "name": "my_can_network",
              "when": "SCENARIO_NAME == \"my_scenario_name\""
            },
            {
              "name": "my_can_network",
              "databases": [
                "DB_1",
                "DB_2"
              ],
              "application-channel": 42,
              "baudrate": 500000
            }
          ]
        ]
      }
    },
    "252f0": {
      "full": {
        "$schema": "http://json-schema.org/draft-07/schema#",
        "title": "CANFD Networks",
        "description": "List of CANFD networks. Entries can be deactivated with when.",
        "type": "array",
        "items": {
          "$ref": "#/definitions/b0b65/full"
        },
        "examples": [
          [
            {
              "name": "my_canfd_network"
            }
          ],
          [
            {
              "name": "my_canfd_network",
              "when": "SCENARIO_NAME == \"my_scenario_name\""
            },
            {
              "name": "my_canfd_network",
              "databases": [
                "DB_1",
                "DB_2"
              ],
              "application-channel": 42,
              "mode": "iso",
              "arbitration-baudrate": 500000,
              "data-baudrate": 1000000
            }
          ]
        ]
      }
    },
    "79a89": {
      "full": {
        "$schema": "http://json-schema.org/draft-07/schema#",
        "title": "Scenarios",
        "description": "List of scenarios with the option to define / override variables or defines.",
        "type": "array",
        "items": {
          "$ref": "#/definitions/d12ef/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"
              ]
            }
          ]
        ]
      }
    },
    "9acfe": {
      "full": {
        "$schema": "http://json-schema.org/draft-07/schema#",
        "description": "Reference to a certain node from a database",
        "type": "object",
        "additionalProperties": false,
        "required": [
          "node",
          "database"
        ],
        "properties": {
          "node": {
            "type": "string",
            "description": "The node from the database",
            "examples": [
              "node_name"
            ]
          },
          "database": {
            "$ref": "#/definitions/e4921/full",
            "description": "The database"
          }
        },
        "examples": [
          {
            "database": "mydatabase",
            "node": "mynode"
          }
        ]
      }
    },
    "51b90": {
      "full": {
        "$schema": "http://json-schema.org/draft-07/schema#",
        "title": "Application Model",
        "description": "Represents an application used in a scenario",
        "type": "object",
        "additionalProperties": false,
        "required": [
          "file-path"
        ],
        "properties": {
          "when": {
            "$ref": "#/definitions/09e40/full"
          },
          "file-path": {
            "$ref": "#/definitions/619f7/full"
          },
          "defines": {
            "$ref": "#/definitions/883aa/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\""
          }
        ]
      }
    },
    "09e40": {
      "full": {
        "$schema": "http://json-schema.org/draft-07/schema#",
        "description": "Declares when to add this node.",
        "anyOf": [
          {
            "$comment": "impossible to express this grammar as a regex",
            "type": "string"
          },
          {
            "type": "boolean"
          }
        ],
        "examples": [
          "SCENARIO_NAME == \"my_scenario_name\"",
          "some_variable == \"somevalue\"",
          "some_int_variable > 42 && some_other_int_variable <= 42",
          true
        ]
      }
    },
    "21f87": {
      "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": {
          "when": {
            "$ref": "#/definitions/09e40/full"
          },
          "file-path": {
            "anyOf": [
              {
                "$ref": "#/definitions/dc7e6/full"
              },
              {
                "type": "array",
                "items": {
                  "$ref": "#/definitions/dc7e6/full"
                }
              }
            ]
          }
        },
        "examples": [
          {
            "file-path": "path/to/my.vsysvar"
          },
          {
            "file-path": [
              "${path_in_variable}",
              "path/${name_in_variable}"
            ]
          },
          {
            "file-path": "path/to/my.vsysvar",
            "when": "SCENARIO_NAME == \"my_scenario_name\""
          }
        ]
      }
    },
    "86b88": {
      "full": {
        "$schema": "http://json-schema.org/draft-07/schema#",
        "title": "Simulation Node",
        "description": "Represents a simulation node used in a simulation",
        "additionalProperties": false,
        "type": "object",
        "required": [
          "name",
          "network-assignments"
        ],
        "properties": {
          "name": {
            "$ref": "#/definitions/038dc/full"
          },
          "when": {
            "$ref": "#/definitions/09e40/full"
          },
          "file-path": {
            "$ref": "#/definitions/a10be/full"
          },
          "network-assignments": {
            "$ref": "#/definitions/34322/full"
          },
          "defines": {
            "$ref": "#/definitions/883aa/full"
          },
          "modeling-libraries": {
            "type": "array",
            "items": {
              "$ref": "#/definitions/ee1ae/full"
            },
            "description": "For assignment of modeling libraries to this simulation node"
          }
        },
        "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",
            "network-assignments": [
              {
                "network": "my_can_network_1",
                "database-node": {
                  "database": "mydatabase",
                  "node": "mynode"
                },
                "modeling-libraries": [
                  "modeling/lib/2.dll"
                ]
              }
            ],
            "defines": [
              "mydefine1",
              "mydefine2"
            ],
            "modeling-libraries": [
              "modeling/lib/1.dll",
              "${path_in_var}"
            ],
            "when": "SCENARIO_NAME == \"my_scenario_name\""
          }
        ]
      }
    },
    "3071b": {
      "full": {
        "$schema": "http://json-schema.org/draft-07/schema#",
        "title": "Database",
        "description": "Absolute or relative path to an external database file (.dbc / .ldf / ...). Relative path specifications are resolved relative to the defining configuration file.",
        "type": "object",
        "additionalProperties": false,
        "required": [
          "name",
          "file-path"
        ],
        "properties": {
          "name": {
            "$ref": "#/definitions/038dc/full"
          },
          "when": {
            "$ref": "#/definitions/09e40/full"
          },
          "network-name": {
            "type": "string"
          },
          "file-path": {
            "type": "string",
            "anyOf": [
              {
                "pattern": "^.*\\.[Aa][Rr][Xx][Mm][Ll]$"
              },
              {
                "pattern": "^.*\\.[Xx][Mm][Ll]$"
              },
              {
                "pattern": "^.*\\.[Dd][Bb][Cc]$"
              },
              {
                "pattern": "^.*\\.[Ll][Dd][Ff]$"
              },
              {
                "pattern": "^.*\\$\\{[a-zA-Z_][a-zA-Z0-9_]*\\}$"
              }
            ],
            "examples": [
              "path/to/some.dbc",
              "path/to/some.arxml",
              "path/to/some.xml",
              "path/to/some.ldf",
              "path/${var_with_name}",
              "${var_with_path}"
            ]
          }
        },
        "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\""
          }
        ]
      }
    },
    "00571": {
      "full": {
        "$schema": "http://json-schema.org/draft-07/schema#",
        "title": "CAN network",
        "description": "A Network using the CAN protocol taking part in a simulation.",
        "type": "object",
        "additionalProperties": false,
        "required": [
          "name"
        ],
        "properties": {
          "name": {
            "$ref": "#/definitions/038dc/full"
          },
          "when": {
            "$ref": "#/definitions/09e40/full"
          },
          "databases": {
            "$ref": "#/definitions/c2452/full"
          },
          "baudrate": {
            "description": "Baudrate in Baud.",
            "anyOf": [
              {
                "type": "integer",
                "minimum": 0,
                "maximum": 9223372036854775807,
                "default": 500000
              },
              {
                "$ref": "#/definitions/779cd/full"
              }
            ]
          },
          "application-channel": {
            "description": "Index of the Application Channel. Each busytype should provide consecutive indices. Starts counting at 1. Value between 1 and 255. Value '0' is not allowed. Caution: CAN and CANFD share the Application Channels!",
            "anyOf": [
              {
                "type": "integer",
                "minimum": 1,
                "maximum": 255,
                "default": 1
              },
              {
                "$ref": "#/definitions/779cd/full"
              }
            ]
          }
        },
        "examples": [
          {
            "name": "my_can_network"
          },
          {
            "name": "my_can_network",
            "when": "SCENARIO_NAME == \"my_scenario_name\""
          },
          {
            "name": "my_can_network",
            "databases": [
              "DB_1",
              "DB_2"
            ],
            "application-channel": 42,
            "baudrate": 500000
          }
        ]
      }
    },
    "619f7": {
      "full": {
        "$schema": "http://json-schema.org/draft-07/schema#",
        "description": "Absolute or relative path to a source file of an application model (can/cs/sln/py/vmodule). Relative path specifications are resolved relative to the defining configuration file.",
        "type": "string",
        "anyOf": [
          {
            "pattern": "^.*\\.[Cc][Ss]$"
          },
          {
            "pattern": "^.*\\.[Pp][Yy]$"
          },
          {
            "pattern": "^.*\\.[Ss][Ll][Nn]$"
          },
          {
            "pattern": "^.*\\.[Cc][Aa][Nn]$"
          },
          {
            "pattern": "^.*\\.[vV][mM][oO][dD][uU][lL][eE]$"
          },
          {
            "pattern": "^.*\\$\\{[a-zA-Z_][a-zA-Z0-9_]*\\}$"
          }
        ],
        "examples": [
          "my_dotnet.cs",
          "my_python.py",
          "my_visual_studio.sln",
          "my_caplfile.can",
          "my_module.vmodule",
          "${some_variable}"
        ]
      }
    },
    "883aa": {
      "full": {
        "$schema": "http://json-schema.org/draft-07/schema#",
        "description": "List of defines to be passed to capl / vcdl.",
        "type": "array",
        "items": {
          "$ref": "#/definitions/a8440/full"
        },
        "examples": [
          [
            "mydefine1",
            "mydefine2"
          ],
          [
            "mydefine_with_value=42",
            "${var_with_define_name}=${var_with_define_value}"
          ]
        ]
      }
    },
    "4de3d": {
      "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]$"
          },
          {
            "pattern": "^.*\\$\\{[a-zA-Z_][a-zA-Z0-9_]*\\}$"
          }
        ],
        "examples": [
          "path/to/my.vcdl",
          "path/to/my.vcodm",
          "${path_in_variable}",
          "path/${name_in_variable}"
        ]
      }
    },
    "038dc": {
      "full": {
        "$schema": "http://json-schema.org/draft-07/schema#",
        "description": "A C-identifier for this element (case sensitive)",
        "type": "string",
        "pattern": "^[a-zA-Z_][a-zA-Z0-9_]*$",
        "examples": [
          "myid",
          "THIS_IS_CASE_SENSITIVE",
          "__1_2_3_4_5__"
        ]
      }
    },
    "34322": {
      "full": {
        "$schema": "http://json-schema.org/draft-07/schema#",
        "description": "List of network nodes represented by this application",
        "type": "array",
        "items": {
          "$ref": "#/definitions/b2479/full"
        },
        "examples": [
          [
            {
              "network": "my_can_network_1"
            }
          ],
          [
            {
              "network": "my_can_network_1",
              "modeling-libraries": [
                "modeling/lib/1.dll",
                "${path_in_var}",
                "path/${name_in_var}"
              ]
            },
            {
              "network": "my_can_network_1",
              "lin-role": "master"
            },
            {
              "network": "my_can_network_1",
              "lin-role": [
                "master",
                "config-tester"
              ]
            },
            {
              "network": "my_can_network_1",
              "database-node": {
                "database": "mydatabase",
                "node": "mynode"
              }
            }
          ]
        ]
      }
    },
    "779cd": {
      "full": {
        "$schema": "http://json-schema.org/draft-07/schema#",
        "type": "string",
        "pattern": "\\$\\{[a-zA-Z_][a-zA-Z0-9_]*\\}",
        "examples": [
          "${myvarname}"
        ]
      }
    },
    "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": "#/$defs/6c391/local/one"
        },
        {
          "type": "array",
          "items": {
            "$ref": "#/$defs/6c391/local/one"
          }
        }
      ],
      "examples": [
        "my_include.yaml",
        [
          "my_include.yaml",
          "my_other_include.json"
        ]
      ]
    }
  }
}
