Where the bundled schemas differ from the published ones
This installation validates against the official VDA5050 JSON schemas from github.com/VDA5050/VDA5050. In the places stated below it cannot use them as published. Every row is read from the schema file itself, so this page describes the copy you are measured against.
The rule this follows
“If there are differences between the JSON schemas and this document, the variant in this document applies.”
– VDA5050 2.1.0, section 6 · VDA5050 3.0.0, section 7
Where a schema and the prose disagree, the specification says the prose wins. Every correction below follows the document against its own schema; none follows our opinion against both.
Corrected files 9
| Schema | Version | Source | What differs |
|---|---|---|---|
factsheet |
2.0.0 |
33d7dc2release/2.0.0 · 2024-09-20 |
finding 3
Finding 3: agvActions[].blockingTypes is declared type array but carries its enum on the array instead of on the items, which no conformant factsheet can satisfy. The enum is moved under items, as the field's own description requires. |
factsheet |
2.1.0 |
64788b6release/2.1.0 · 2024-08-19 |
finding 3
Finding 3: agvActions[].blockingTypes is declared type array but carries its enum on the array instead of on the items, which no conformant factsheet can satisfy. The enum is moved under items, as the field's own description requires. |
factsheet |
3.0 |
baf900arelease/3.0.0 · 2026-03-19 |
finding 5 finding 6
not valid JSON
The published file is not valid JSON — it carries a trailing comma — so the comma was removed and nothing else was changed. Finding 5: typeSpecification.required demands 'mobileRobotKinematic', a property the schema never defines and section 7.10 does not use — it names the field 'mobileRobotKinematics'. Required now matches the property and the prose. Finding 6: mobileRobotActions[].pauseAllowed and .cancelAllowed are declared as string, while section 7.10 defines both as boolean and their own descriptions read "True:"/"False:". Both are typed boolean here. |
order |
3.0 |
baf900arelease/3.0.0 · 2026-03-19 |
not valid JSON
The published file is not valid JSON — it carries a trailing comma — so the comma was removed and nothing else was changed. |
state |
2.0.0 |
33d7dc2release/2.0.0 · 2024-09-20 |
not valid JSON
The published file is not valid JSON — it carries a trailing comma — so the comma was removed and nothing else was changed. |
state |
2.1.0 |
64788b6release/2.1.0 · 2024-08-19 |
finding 28
Finding 28: the actionStatus enum omits 'PAUSED', which section 6.11 lists among the six values and section 7.4 describes as "the action is paused because of a pause instantAction or external trigger" - and which this schema's own description of the field still names. 2.0.0 has it in the enum. A vehicle paused by a startPause has no status to report it with, and the field the fleet controller reads to see the pause take effect is the one the schema forbids. PAUSED is accepted here. |
state |
3.0 |
baf900arelease/3.0.0 · 2026-03-19 |
finding 11
Finding 11: the requestStatus enums of zoneRequest and edgeRequest omit 'QUEUED', which section 6.9 lists among the values the field shall support and section 7.5 allows as a response. A robot answering a queued request has no status to report it with. QUEUED is accepted here; the contradiction is reported to the committee. |
visualization |
3.0 |
baf900arelease/3.0.0 · 2026-03-19 |
not valid JSON
The published file is not valid JSON — it carries a trailing comma — so the comma was removed and nothing else was changed. |
zoneSet |
3.0 |
baf900arelease/3.0.0 · 2026-03-19 |
finding 10
Finding 10: the PRIORITY and PENALTY branches define their factor as 'priorityFactor ' and 'penaltyFactor ', with a trailing space, while 'required' names them without one. Nothing is rejected and nothing is checked either: the bounds 0.0 to 1.0 apply to a property no message carries, so a priorityFactor of 7.5 passes unremarked. The space is removed, which is what makes the range the standard states apply. |
Derived files 5
VDA5050 1.1 is older than the json_schemas/ folder and publishes no schemas. Its files here are derived from 2.1.0 and are not official. Where the 1.1 field tables differ from 2.1.0, the 1.1 table governs.
| Schema | Version | How it was derived |
|---|---|---|
connection |
1.1 | VDA5050 1.1 has no published JSON schema (the official repo first shipped schemas at 2.0.0). Derived from the official 2.1.0 connection schema, whose mandatory fields, types and enumerations 1.1 shares. Reference: vda5050/vda5050 branch release/1.1.0, VDA5050_EN.md. |
instantActions |
1.1 | Derived from the 2.1.0 house schema; VDA5050 1.1 publishes no schemas of its own. One difference read from its own field table (6.9): 1.1 calls the array "instantActions", which 2.0 renamed to "actions". |
order |
1.1 | VDA5050 1.1 has no JSON schema in the official repo (schemas were first published for 2.0.0). Derived from the 2.1.0 house schema: 1.1's mandatory order fields, types and enumerations (blockingType NONE/SOFT/HARD, nodes/edges graph model) are identical to 2.1.0, and 1.1 leaves nodePosition.theta and controlPoint.weight optional exactly as 2.1.0 does. Official reference: vda5050/vda5050 branch release/1.1.0, VDA5050_EN.md section 6.7. zoneSetId is not required: the 1.1 field table (6.7) does not italicise it the way it marks its other optional fields, but its own description reads 'Optional: Some master control systems do not use zones. Do not add to message if no zones are used.' A field a specification tells the sender not to send cannot be mandatory, and every later version has it optional. See docs/analyzer/vda5050-spec-findings.md, finding 25. |
state |
1.1 | VDA5050 1.1 has no JSON schema in the official repo (schemas were first published for 2.0.0). Derived from the 2.1.0 house schema: 1.1's mandatory state fields, types and enumerations are identical to 2.1.0, and 1.1 leaves nodePosition.theta and controlPoint.weight optional exactly as 2.1.0 does (2.0.0 required them). 1.1 has no factsheet topic. Official reference: vda5050/vda5050 branch release/1.1.0, VDA5050_EN.md sections 6.10/6.11. The optional loads array of the 1.1 field table (6.10.6) is modelled too. Two root fields are carried here that the 1.1 document does not name cleanly. The position field is printed 'anyPosition' in the state table, 'agyPosition' in its own object header and 'agvPosition'/'agyPosition'/'ayPosition' in the initPosition row - the name every later version uses, and the one the document itself uses when it references the field, is agvPosition, so that is what is modelled (committee finding 22). Its optional map note is printed 'mapDiscripation' and modelled as mapDescription. The info array is named 'informations' in the 1.1 table while 6.10.4 calls it 'the information array' and 2.0 onwards settled on 'information'; both spellings are accepted rather than judging a robot on which half of its own specification it followed (committee finding 23). The teach-in operating mode is printed 'TEACHIN' in the state's enum row and 'TEACHING' in the OperatingModes table of 6.10.6 that the very same row refers to; both are accepted for the same reason, and 2.0 onwards settled on TEACHIN (committee finding 27). |
visualization |
1.1 | VDA5050 1.1 has no published JSON schema (the official repo first shipped schemas at 2.0.0). Derived from the official 2.1.0 visualization schema, whose mandatory fields, types and enumerations 1.1 shares. Reference: vda5050/vda5050 branch release/1.1.0, VDA5050_EN.md. |
What this does not mean
- The standard is not quietly improved.
Each deviation is declared in the schema file's own
$comment, carries its finding number and is applied by a tool, not by hand-editing a schema. - No correction is carried longer than needed. Before every rebuild the generator checks whether the defect is still present upstream. Once the committee fixes it, the correction is dropped.
- Everything here is reported. All of it belongs to a running list of findings for the VDA5050 working group.
- No certification is claimed. The analyzer produces diagnostic guidance. It issues neither certification nor release approval.
The full document, with the passage behind each deviation, is published at logistixpert.de/documents.html. Found an error in our reading? support@logiq-vda5050.com