Xentara v2.0.1
User Manual
Structure of the Model File

The Root Node

At the root of the Xentara model file is a JSON object that represents the anonymous root node of the model:

{
"$schema": "https://docs.xentara.io/xentara/schema-xentara-model.json",
"ACL": { "..." },
"children": [
...
]
}

Object Members
$schema

An optional string value containing the URI of the JSON schema for Xentara model files. Xentara itself ignores this member, but some editors may use it to associate the model file with the correct JSON schema.

The schema schould always point to https://docs.xentara.io/xentara/schema-xentara-model.json.

ACLAn optional JSON object containing the element ACL of the Xentara model. The format of the object is described under JSON Format for ACLs.
children

A JSON array containing the top level elements in the model. This member is named children because the top level elements are considered children of the anonymous root node.

The individual child elements are each represented by a double nested JSON object, as described in Element Blocks below.

Element Blocks

Structure of an Element Block

The individual elements within the model are each represented by a double nested JSON object. The outer object has a single member whose name is the type of element, and whose value is another JSON object that contains the actual properties of the element.

An element block has the following general structure:

{
"@ElementType": {
...
}
}

"@ElementType" is the type designation of the element, as described in the documentation of the specific element type. The element type for data points, for example, is "@DataPoint".

Note
The doubly nested JSON object is necessary because the members of JSON objects do not have a fixed order. By nesting the other properties of the element inside an inner block, Xentara can ensure that the type is already known before any of the properties are loaded. If the type was just another object member, a JSON editor would be allowed to move it to the end of the object block, and Xentara would have to look through the entire block for the type before being able to load any properties.

A model containing three data points will look like this:

{
"$schema": "https://docs.xentara.io/xentara/schema-xentara-model.json",
"children": [
{
"@DataPoint": {
...
}
},
{
"@DataPoint": {
...
}
},
{
"@DataPoint": {
...
}
}
]
}

Skill Element Blocks

Skill element blocks are eaxtly like built-in element blocks, but the type designation has a special format. A JSON object describing a skill element looks like this:

{
"@Skill.SkillName.ElementType": {
...
}
}

The type designation of the element ("@Skill.SkillName.ElementType") consists of three parts:

  • @Skill: This part is fixed and always appears exaclty as shown.
  • SkillName: This is the name of the skill that publishes the element type.
  • ElementType: This is the actual type of the element.

The type designation for summary state elements from the built-in SignalProcessing skill, for example, is "@Skill.SignalProcessing.SummaryState".

Content Common to all Element Types

JSON objects representing Xentara model elements all have a number of common members. All element types share the following configuration parameters:

{
"@ElementType": {
"name": "Name",
"UUID": "56c48c42-4f3a-4234-b6c5-76e1986c0a88",
"ACL": { ... },
"children": [
...
]
}
}

"@ElementType" is the type designation of the specific element type, as describen in Element Blocks above.

Object Members
nameA string value containing the name of the element. The name is used to construct the element’s primary key.
UUIDA string value containing the unique UUID of the element.
ACLAn optional JSON object containing the element ACL of the element. The format of the object is described under JSON Format for ACLs.
children

A JSON array containing the children of the element. The types of elements allowed as children depend on the specific type of the parent element. See the documentation of the individual element types for details on which element types are supported as children, if any.

Each child elements is again represented by its own element block, consisting of a double nested JSON object.

Each element type can have additional members. The actual JSON format for the individual element types can be found here:

The format of skill elements loaded from plugins is described in the documentation of the respective plugin.

JSON Schema File

A JSON schema file to validate model files is available here.