diff --git a/.gencode_hash.txt b/.gencode_hash.txt
index 20b523f2c9..6facb5b4c6 100644
--- a/.gencode_hash.txt
+++ b/.gencode_hash.txt
@@ -44,7 +44,7 @@ d8a80ab3180d33bfa17564c969018e1d4350a47dbc70c4ae8a5abbfb25cfedc9 gencode/java/u
04112dd47b0f761131c276c67d3cd8b789d25e6716b5732be9fef14fc6831f1d gencode/java/udmi/schema/DiscoveryModel.java
9962b0eb7d5adf52af6160e9f3131f8eeb52ae9e518954dbb6aead1bcad0245e gencode/java/udmi/schema/DiscoveryState.java
b90ab40a281c5e383881629bd8a791ba3d30491e06ebc623a476e2735a3f6c3a gencode/java/udmi/schema/EndpointConfiguration.java
-885859ea9de29217186c34f3a90b112411d1beddaf58a88b85e7934cd3c92b6f gencode/java/udmi/schema/Entry.java
+6fea7710d4eb64bfc568820f7063a89ce7808853ef7a56763fa90f323e09362f gencode/java/udmi/schema/Entry.java
017f8e237efa959b81d72f3dd2e78b915856198ceef02c041c657b30df93b7c2 gencode/java/udmi/schema/Envelope.java
e9f5c77be81486b6b8c6d88f70f2d50583d8c3fafa2ac09ead80f44b8d5e751e gencode/java/udmi/schema/Event.java
69c3c12ce057b6ab8e27ab8cab6fb009bfd1c997652214b49e6f2a26a58f302c gencode/java/udmi/schema/ExecutionConfiguration.java
@@ -98,11 +98,11 @@ d3968b92497e83a63f18cc0e74484a9807f1bb92db0c92d556ec2caaa143d645 gencode/java/u
ac6f8fd87c8986cce01e872460c15ff6fe71e3816f9bde610acfe25f7d38c8d4 gencode/java/udmi/schema/ValidationEvent.java
f7d117dc8b9764acf0c95a13a2bfdfbdf31d1a8ec83a707448aa4d7391ef07e2 gencode/java/udmi/schema/ValidationState.java
e007ddd1ceeae3603c85110c33e1bb4a418ff9c7a791ca0df25b7ea3caeafd36 gencode/java/udmi/schema/ValidationSummary.java
-67256cd379f8b456a2d8c3b5e64c9bde740569338f8e32be626ecb65ad6fd23c gencode/python/udmi/schema/__init__.py
+fb9618d9177765ef7c4494b6ecfce8e69c9df193b7dc8c2124425b290fa4e359 gencode/python/udmi/schema/__init__.py
4b25dd95f863059b761269f93adcae7049507924a1c6e74d6856849203c179db gencode/python/udmi/schema/ancillary_properties.py
5ecd6c542f33450cb4ce75d940a6dff4d3bd67d4b9de4aff5ee88abcc301dbff gencode/python/udmi/schema/building_config.py
dab4f5fca272ec48c2881bca2b6bc43786ada47fa1f6dd935c35f7ce0eb6b0f6 gencode/python/udmi/schema/building_translation.py
-c33fab16eb86b93692ddbb243a2d6cfe202ca1a0fd76b351a18727a35940d958 gencode/python/udmi/schema/category.py
+470b688984b89b25fcdfa8e08bd95b0c5d8c551d53a6ab5512503ee39419e6fa gencode/python/udmi/schema/category.py
6578d68f65b87b781086e72566de910db4bef365599fe3188862d4d8a81e84fb gencode/python/udmi/schema/command_discovery.py
1254c34d973c9099ae99dcea4534e234e9019f49255e2e27d2afa1bc074fd596 gencode/python/udmi/schema/command_mapping.py
c5a62f92328e2ede167fc1f53bece6e48696a0ab0e37e3a41f65cd98494ba0d7 gencode/python/udmi/schema/common.py
diff --git a/bin/upversion b/bin/upversion
new file mode 100755
index 0000000000..539bfacd59
--- /dev/null
+++ b/bin/upversion
@@ -0,0 +1,155 @@
+#!/bin/bash -e
+#
+# Usage:
+# bin/upversion NEW_VERSION
+#
+# Changes the version where it is hardcoded in UDMI files, performing checks
+# that the new version is available, and that the files can be safely updated.
+# Modifications:
+# - schema/*.json (all files)
+# - etc/categories.json
+# - tests/**/*.json and validator/traces/**/*.out -
+# all files must be added to etc/upversion.txt only files preceeded
+# with a 'y' are updated. Only works with "pretty"/non-minified JSON
+# - documentation in-line exammples
+# - specific java files (Pubber.java, ConfigUtil.java, LocalDevice.java)
+
+UPVERSION_LIST=etc/upversion.txt
+TESTS_REGEX="^(\s{0,4}\"version\"\s*:\s*)([0-9.\"]*)(,?)"
+SCHEMA_VERSION_IDENTIFIER=\$udmi_version # must start with $
+ERROR_MARKER=.upversion_error
+
+# Updates existing $udmi_version in a JSON file.
+# Usage: update_existing_schema_version FILE_TO_UPDATE NEW_VERSION
+function update_existing_schema_version(){
+ file=$1
+ version=$2
+ sed -i -E "s/\"\\$SCHEMA_VERSION_IDENTIFIER\"\s*:\s*\"[0-9.]*\"/\"$SCHEMA_VERSION_IDENTIFIER\": \"$version\"/" $file
+}
+
+# Updates an existing $udmi_version, or adds if missing
+# Usage: update_schema_version FILE_TO_UPDATE NEW_VERSION
+function update_schema_version(){
+ file=$1
+ version=$2
+ if [[ $(jq -r ".[\"$SCHEMA_VERSION_IDENTIFIER\"]" $file) == "null" ]]; then
+ sed -i "s/^{/{\n \"$SCHEMA_VERSION_IDENTIFIER\": \"$version\",/" $file
+ else
+ update_existing_schema_version $file $version
+ fi
+}
+
+# Updates UDMI_VERSION variable in a java file
+# Usage: update_java_file FILE_TO_UPDATE NEW_VERSION
+function update_java_file(){
+ file=$1
+ version=$2
+ [[ $(grep -c "UDMI_VERSION\s*=\s*\"" $file) != 1 ]] && return 1
+ sed -i -e "s/UDMI_VERSION\s*=\s*\"[0-9.]*\"/UDMI_VERSION = \"$version\"/" $file
+}
+
+if [[ "$#" != 1 ]]; then
+ echo Usage: $0 NEW_VERSION
+ exit 1
+fi
+NEW_VERSION=$1
+shift 1
+
+rm .upversion_error
+
+if ! [[ $NEW_VERSION =~ ^[0-9]+\.[0-9]+\.[0-9]+$ ]]; then
+ echo ERROR Invalid version: $NEW_VERSION
+ exit 1
+fi
+
+bin/check_version
+if [[ -n $(git tag -l $NEW_VERSION) ]]; then
+ echo ERROR New version $NEW_VERSION already exists in upstream repo.
+ exit 1
+fi
+
+if [[ -n $(git status --untracked-files=no --porcelain) ]]; then
+ echo ERROR Git not clean .. commit/stash all changes first
+ exit 1
+fi
+
+# Check test files exist in the upversion list
+for test_file in tests/*.tests/*.json; do
+ if [[ $(grep -P -c "^[^#] $test_file" $UPVERSION_LIST) != 1 ]]; then
+ echo $test_file
+ err_upversion_list=1
+ fi
+done
+if [[ -n $err_upversion_list ]]; then
+ echo ERROR .. above files not found in upversion list or listed more than once
+ touch $ERROR_MARKER
+fi
+
+for schema_file in schema/*.json; do
+ if (( $(grep -c "\"\$udmi_version\"" $schema_file) > 1 )); then
+ echo $schema_file
+ err_schema_version=1
+ fi
+done
+if [[ -n $err_schema_version ]]; then
+ echo ERROR .. above files have more than one \$udmi_version
+ touch $ERROR_MARKER
+fi
+
+[[ -f $ERROR_MARKER ]] && exit 1
+
+# Check files in upversion list still exist
+while read action file comment; do
+ if [[ $action != "#" ]] && ! [[ -f $file ]]; then
+ err_stale_file=1
+ echo $file
+ fi
+done <$UPVERSION_LIST
+if [[ -n $err_stale_file ]]; then
+ echo ERROR .. above files etc/upversion.txt no longer exist
+fi
+
+# Check files have exactly 1 matched version fields to avoid unexpected
+# updates. Uses indents to try and match the top level field
+while read action file comment; do
+ if ! [[ -f $file && $action == "y" ]]; then
+ continue
+ fi
+
+ if [[ $(grep -E -c $TESTS_REGEX $file) != 1 ]]; then
+ echo $file
+ err_one_version=1
+ fi
+done <$UPVERSION_LIST
+if [[ -n $err_one_version ]]; then
+ echo ERROR above files do not have exactly one version field
+fi
+
+echo -n Updating files ..
+
+# NOTE using sed because jq reformats text
+for schema_file in schema/*.json; do
+ update_schema_version $schema_file $NEW_VERSION
+done
+
+# Update tests using sed because jq does not handle files with comments
+cat $UPVERSION_LIST | grep "^y" | awk '{print $2}' \
+ | xargs sed -i -E "s/$TESTS_REGEX/\1\"$NEW_VERSION\"\3/g"
+
+update_existing_schema_version etc/category.json $NEW_VERSION
+
+bin/gencode_docs_examples
+
+# TODO a proper way of updating/managing these files
+
+# Version in Pubber payloads
+update_java_file pubber/src/main/java/daq/pubber/Pubber.java $NEW_VERSION
+# Version in validator messages messages
+update_java_file validator/src/main/java/com/google/daq/mqtt/util/ConfigUtil.java $NEW_VERSION
+# Version in for generated_configs which are NOT upgraded
+update_java_file validator/src/main/java/com/google/daq/mqtt/registrar/LocalDevice.java $NEW_VERSION
+
+# NOTE messages & metadata are upgraded when there are schema changes,
+# So they do not necesarily end up at the latest version when upgraded
+
+echo Done!
diff --git a/docs/guides/development.md b/docs/guides/development.md
index 926cd191b2..f7f6418e49 100644
--- a/docs/guides/development.md
+++ b/docs/guides/development.md
@@ -26,6 +26,29 @@ template `etc/schema_readme_template.md`, and must match (case sensitive) the
value of `$section`, otherwise the schema entry is inserted under the `Other`
section
+## Releases
+
+The `bin/upversion` tool updates :
+* the `$udmi_version` field in schema files,
+* the version in `version` of of manually curated payloads in `tests/*.tests`
+* documentation inline message examples.
+* the `UDMI_VERSION` constant in specific JAVA files.
+
+File in the `tests` directory must be listed in `etc/upversion.txt`. Only files
+which are preceded by a `y` in `upversion_yay.txt` will have their version upgraded. Comments are supported after the file path, e.g.
+`y tests/state.tests/makemodel_upgrade.json tests message upgrade from v1`
+
+`bin/upversions` carries out several checks on files which must be cleared before an update.
+
+`bin/upversion` does not update any generated files (e.g. for CI testing).
+
+The following files need to be update:
+* After `bin/test_trace simple`, contents of `sites/udmi_site_model/sites/out/devices`
+ into `validator/traces/simple.out/devices`
+* After `bin/test_validator`, `/tmp/validator.out` into `/etc/validator.out` (reset any changes to sites/udmi_site_model before running)
+* After `bin/test_registrar && bin/test_sites`, the `out` directory for each device in `tests/downgrade.site/devices/` into the `expected` subdirectory (note these files are ignored by git, but must still be comitted)
+
+
## Configuring Cloud CI Tests
To enable the CI tests, there first needs to be a dedicated GCP Project with an IoT Core
diff --git a/docs/specs/sequences/endpoint_reconfiguration.md b/docs/specs/sequences/endpoint_reconfiguration.md
index e37f0fc281..b91490443c 100644
--- a/docs/specs/sequences/endpoint_reconfiguration.md
+++ b/docs/specs/sequences/endpoint_reconfiguration.md
@@ -78,7 +78,7 @@ Config message to initiate Reconfiguration (sequence #1 in diagrams above)
```json
{
- "version": 1,
+ "version": "1.4.0",
"blobset": {
"blobs": {
"_iot_endpoint_config": {
@@ -107,7 +107,7 @@ a successful reconfiguration
```json
{
- "version": 1,
+ "version": "1.4.0",
"timestamp": "2022-07-13T12:00:10.000Z",
"system": {
"hardware": {
@@ -135,7 +135,7 @@ This is an example of the state message sent to the original endpoint after a fa
```json
{
- "version": 1,
+ "version": "1.4.0",
"timestamp": "2022-07-13T12:00:11.000Z",
"system": {
"hardware": {
diff --git a/etc/category.json b/etc/category.json
index 39ec940909..e613836d0c 100644
--- a/etc/category.json
+++ b/etc/category.json
@@ -1,4 +1,6 @@
{
+ "$udmi_version": "1.4.0",
+ "title": "Category",
"$comment": "Auto-generated category mappings from bin/gencode_categories.",
"oneOf": [
@@ gencode stuff goes here
diff --git a/etc/upversion.txt b/etc/upversion.txt
new file mode 100644
index 0000000000..8f333834ff
--- /dev/null
+++ b/etc/upversion.txt
@@ -0,0 +1,101 @@
+# Manually maintained list of all files in tests/*.tests/*.json
+# consumed by bin/upversion when upgrading versions
+#
+# Syntax: ACTION FILE [COMMENT]
+#
+# ACTIONS:
+# y - update the top level "version" in the files
+# n - do not update the file
+#
+n tests/event_discovery.tests/empty.json
+n tests/event_system.tests/empty.json
+n tests/event_pointset.tests/empty.json
+n tests/state.tests/empty.json
+n tests/config.tests/empty.json
+n tests/config.tests/delta_x1_gateway.json
+n tests/config.tests/delta_x1_target.json
+n tests/metadata.tests/empty.json
+n tests/state.tests/delta_x1_gateway.json
+n tests/state.tests/delta_x1_target.json
+n tests/configuration_endpoint.tests/simple.json
+n tests/configuration_endpoint.tests/delta.json
+n tests/model_pointset.tests/example.json
+n tests/envelope.tests/lgtw.json
+n tests/envelope.tests/empty.json
+n tests/envelope.tests/errors2.json
+n tests/envelope.tests/example.json
+n tests/envelope.tests/gateway.json
+n tests/envelope.tests/example2.json
+n tests/envelope.tests/errors1.json
+n tests/state.tests/makemodel_upgrade.json # tests message upgrade from v 1
+n tests/config.tests/errors.json
+n tests/state.tests/errors.json # test complete message upgrade pathway
+y tests/state_validation.tests/report.json
+y tests/event_discovery.tests/from_bacnet.json
+y tests/event_discovery.tests/scan_error.json
+y tests/event_discovery.tests/point_error.json
+y tests/event_discovery.tests/errors.json
+y tests/event_discovery.tests/enumeration.json
+y tests/event_discovery.tests/continuous.json
+y tests/event_discovery.tests/discovery.json
+y tests/event_discovery.tests/implicit.json
+y tests/event_system.tests/metrics.json
+y tests/event_system.tests/errors.json
+y tests/event_system.tests/example.json
+y tests/event_system.tests/fcu.json
+y tests/event_validation.tests/simple_ok.json
+y tests/event_validation.tests/simple_error.json
+y tests/config_mapping.tests/mapping.json
+y tests/event_pointset.tests/errors.json
+y tests/event_pointset.tests/writeback.json
+y tests/event_pointset.tests/example.json
+y tests/event_pointset.tests/fcu.json
+y tests/event_pointset.tests/smartprimus.json
+y tests/event_pointset.tests/partial.json
+y tests/config_pointset.tests/example.json
+y tests/state.tests/scan_stop.json
+y tests/state.tests/scan_error.json
+y tests/state.tests/enumeration.json
+y tests/state.tests/writeback.json
+y tests/state.tests/continuous.json
+y tests/state.tests/periodic.json
+y tests/state.tests/scan_bad.json
+y tests/state.tests/discovery.json
+y tests/state.tests/example.json
+y tests/state.tests/endpoint_reconfiguration_failed.json
+y tests/state.tests/endpoint_reconfiguration.json
+y tests/state.tests/makemodel_error.json # current version but with makemodel, validation error
+y tests/state.tests/blobset_updating.json
+y tests/state.tests/blobset_received.json
+y tests/state.tests/fcu.json
+y tests/state.tests/gateway.json
+y tests/state.tests/restart.json
+y tests/state_pointset.tests/example.json
+y tests/config.tests/blobset_final_incomplete_url.json
+y tests/config.tests/enumeration.json
+y tests/config.tests/writeback.json
+y tests/config.tests/proxy.json
+y tests/config.tests/continuous.json
+y tests/config.tests/delta_endpoint.json
+y tests/config.tests/periodic.json
+y tests/config.tests/discovery.json
+y tests/config.tests/example.json
+y tests/config.tests/endpoint_reconfiguration.json
+y tests/config.tests/fcu.json
+y tests/config.tests/gateway.json
+y tests/config.tests/smartprimus.json
+y tests/config.tests/restart.json
+y tests/config.tests/blobset_final_incomplete_payload.json
+y tests/config.tests/implicit.json
+y tests/state_mapping.tests/mapping.json
+y tests/command_discovery.tests/provision.json
+y tests/event_mapping.tests/mapping.json
+y tests/event_mapping.tests/prediction.json
+y tests/metadata.tests/toomany.json
+y tests/metadata.tests/proxy.json
+y tests/metadata.tests/example.json
+y tests/metadata.tests/gateway.json
+y tests/command_mapping.tests/mapping.json
+y tests/metadata.tests/errors.json
+y tests/config.tests/blobset_final.json
+n tests/configuration_execution.tests/cloud_iot_config.json
\ No newline at end of file
diff --git a/etc/validator.out b/etc/validator.out
index 02c829a387..4fb5dce013 100644
--- a/etc/validator.out
+++ b/etc/validator.out
@@ -20,7 +20,7 @@ sites/udmi_site_model/out/devices/AHU-1/event_pointset.out
::::::::::::::
{
"timestamp" : "1999-10-20T01:02:03Z",
- "version" : "1.3.14",
+ "version" : "1.4.0",
"sub_folder" : "pointset",
"sub_type" : "event",
"status" : {
diff --git a/gencode/java/udmi/schema/Entry.java b/gencode/java/udmi/schema/Entry.java
index 105a88a6f1..c2dada1dde 100644
--- a/gencode/java/udmi/schema/Entry.java
+++ b/gencode/java/udmi/schema/Entry.java
@@ -42,6 +42,8 @@ public class Entry {
@JsonPropertyDescription("An optional extensive entry which can include more detail, e.g. a complete program stack-trace")
public String detail;
/**
+ * Category
+ *
* Auto-generated category mappings from bin/gencode_categories.
* (Required)
*
diff --git a/gencode/python/udmi/schema/__init__.py b/gencode/python/udmi/schema/__init__.py
index 3df63ea23a..552774a7ee 100644
--- a/gencode/python/udmi/schema/__init__.py
+++ b/gencode/python/udmi/schema/__init__.py
@@ -1,7 +1,7 @@
from .ancillary_properties import AncillaryProperties
from .building_config import BuildingConfig
from .building_translation import BuildingTranslation
-from .category import ObjectC50A4669
+from .category import Category
from .command_discovery import DiscoveryCommand
from .command_mapping import MappingCommand
from .common import Common
diff --git a/gencode/python/udmi/schema/category.py b/gencode/python/udmi/schema/category.py
index ad6d434b09..7dfead52f5 100644
--- a/gencode/python/udmi/schema/category.py
+++ b/gencode/python/udmi/schema/category.py
@@ -1,7 +1,7 @@
"""Generated class for category.json"""
-class ObjectC50A4669:
+class Category:
"""Generated schema class"""
def __init__(self):
@@ -11,7 +11,7 @@ def __init__(self):
def from_dict(source):
if not source:
return None
- result = ObjectC50A4669()
+ result = Category()
return result
@staticmethod
@@ -20,7 +20,7 @@ def map_from(source):
return None
result = {}
for key in source:
- result[key] = ObjectC50A4669.from_dict(source[key])
+ result[key] = Category.from_dict(source[key])
return result
@staticmethod
diff --git a/pubber/src/main/java/daq/pubber/Pubber.java b/pubber/src/main/java/daq/pubber/Pubber.java
index 4178c370c0..59b21f5d95 100644
--- a/pubber/src/main/java/daq/pubber/Pubber.java
+++ b/pubber/src/main/java/daq/pubber/Pubber.java
@@ -99,7 +99,7 @@ public class Pubber {
public static final String PUBBER_OUT = "pubber/out";
public static final String PERSISTENT_STORE_FILE = "persistent_data.json";
public static final String PERSISTENT_TMP_FORMAT = "/tmp/pubber_%s_" + PERSISTENT_STORE_FILE;
- private static final String UDMI_VERSION = "1.3.14";
+ private static final String UDMI_VERSION = "1.4.0";
private static final Logger LOG = LoggerFactory.getLogger(Pubber.class);
private static final String HOSTNAME = System.getenv("HOSTNAME");
private static final String CONFIG_TOPIC = "config";
diff --git a/schema/ancillary_properties.json b/schema/ancillary_properties.json
index c8d4d024da..b76242d3ec 100644
--- a/schema/ancillary_properties.json
+++ b/schema/ancillary_properties.json
@@ -1,4 +1,5 @@
{
+ "$udmi_version": "1.4.0",
"title": "Ancillary Properties",
"description": "Arbitrary blob of json associated with this point",
"existingJavaType": "java.util.HashMap",
diff --git a/schema/building_config.json b/schema/building_config.json
index b0a880fac9..d22d1824e5 100644
--- a/schema/building_config.json
+++ b/schema/building_config.json
@@ -1,4 +1,5 @@
{
+ "$udmi_version": "1.4.0",
"title": "Building Config",
"description": "[Discovery result](../docs/specs/discovery.md) with implicit enumeration",
"type": "object",
diff --git a/schema/building_translation.json b/schema/building_translation.json
index e753c56509..0327d21fad 100644
--- a/schema/building_translation.json
+++ b/schema/building_translation.json
@@ -1,4 +1,5 @@
{
+ "$udmi_version": "1.4.0",
"title": "Building Translation",
"description": "[Discovery result](../docs/specs/discovery.md) with implicit enumeration",
"type": "object",
diff --git a/schema/category.json b/schema/category.json
index 1367bbc39f..3f4b26ee8d 100644
--- a/schema/category.json
+++ b/schema/category.json
@@ -1,4 +1,6 @@
{
+ "$udmi_version": "1.4.0",
+ "title": "Category",
"$comment": "Auto-generated category mappings from bin/gencode_categories.",
"oneOf": [
{ "pattern": "^system\\.base\\.start$" },
diff --git a/schema/command_discovery.json b/schema/command_discovery.json
index 39f12ed1b4..2d67162306 100644
--- a/schema/command_discovery.json
+++ b/schema/command_discovery.json
@@ -1,4 +1,5 @@
{
+ "$udmi_version": "1.4.0",
"title": "Discovery Command",
"description": "[Discovery command](../docs/specs/discovery.md) for provisioning",
"type": "object",
diff --git a/schema/command_mapping.json b/schema/command_mapping.json
index f3a28faf86..5a813e99ef 100644
--- a/schema/command_mapping.json
+++ b/schema/command_mapping.json
@@ -1,4 +1,5 @@
{
+ "$udmi_version": "1.4.0",
"title": "Mapping Command",
"description": "[Mapping command](../docs/specs/mapping.md) for provisioning",
"type": "object",
diff --git a/schema/common.json b/schema/common.json
index dfc7ad99c0..732bdab41d 100644
--- a/schema/common.json
+++ b/schema/common.json
@@ -1,4 +1,5 @@
{
+ "$udmi_version": "1.4.0",
"title": "Common",
"$schema": "http://json-schema.org/draft-07/schema#",
"definitions": {
diff --git a/schema/config.json b/schema/config.json
index c6e73ea8e7..d7d08e4232 100644
--- a/schema/config.json
+++ b/schema/config.json
@@ -1,4 +1,5 @@
{
+ "$udmi_version": "1.4.0",
"title": "Config",
"description": "The config block controls a device's intended behavior. [Config Documentation](../docs/messages/config.md)",
"$section": "Messages",
diff --git a/schema/config_blobset.json b/schema/config_blobset.json
index 4f9dbb3cd5..70773f670a 100644
--- a/schema/config_blobset.json
+++ b/schema/config_blobset.json
@@ -1,4 +1,5 @@
{
+ "$udmi_version": "1.4.0",
"title": "Blobset Config",
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
diff --git a/schema/config_blobset_blob.json b/schema/config_blobset_blob.json
index f79eb36f98..033dacc7e6 100644
--- a/schema/config_blobset_blob.json
+++ b/schema/config_blobset_blob.json
@@ -1,4 +1,5 @@
{
+ "$udmi_version": "1.4.0",
"title": "Blob Blobset Config",
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
diff --git a/schema/config_discovery.json b/schema/config_discovery.json
index 3b24a05788..02fdd28be9 100644
--- a/schema/config_discovery.json
+++ b/schema/config_discovery.json
@@ -1,4 +1,5 @@
{
+ "$udmi_version": "1.4.0",
"title": "Discovery Config",
"description": "Configuration for [discovery](../docs/specs/discovery.md)",
"type": "object",
diff --git a/schema/config_discovery_family.json b/schema/config_discovery_family.json
index ff8e073058..167dd32ba4 100644
--- a/schema/config_discovery_family.json
+++ b/schema/config_discovery_family.json
@@ -1,4 +1,5 @@
{
+ "$udmi_version": "1.4.0",
"title": "Family Discovery Config",
"description": "Configuration for [discovery](../docs/specs/discovery.md)",
"type": "object",
diff --git a/schema/config_gateway.json b/schema/config_gateway.json
index 31004203d6..11638a1c2d 100644
--- a/schema/config_gateway.json
+++ b/schema/config_gateway.json
@@ -1,4 +1,5 @@
{
+ "$udmi_version": "1.4.0",
"title": "Gateway Config",
"description": "Configuration for gateways. Only required for devices which are acting as [gateways](../docs/specs/gateway.md)",
"type": "object",
diff --git a/schema/config_localnet.json b/schema/config_localnet.json
index 1971f7f455..62e52861eb 100644
--- a/schema/config_localnet.json
+++ b/schema/config_localnet.json
@@ -1,4 +1,5 @@
{
+ "$udmi_version": "1.4.0",
"title": "Localnet Config",
"description": "Used to describe device local network parameters",
"type": "object",
diff --git a/schema/config_mapping.json b/schema/config_mapping.json
index 67898b0028..e82fa44852 100644
--- a/schema/config_mapping.json
+++ b/schema/config_mapping.json
@@ -1,4 +1,5 @@
{
+ "$udmi_version": "1.4.0",
"title": "Mapping Config",
"description": "Configuration for [mapping](../docs/specs/mapping.md)",
"type": "object",
diff --git a/schema/config_mapping_device.json b/schema/config_mapping_device.json
index 26fcf2fd7a..6ca6098ddb 100644
--- a/schema/config_mapping_device.json
+++ b/schema/config_mapping_device.json
@@ -1,4 +1,5 @@
{
+ "$udmi_version": "1.4.0",
"title": "Device Mapping Config",
"description": "Configuration for [mapping](../docs/specs/mapping.md)",
"type": "object",
diff --git a/schema/config_pointset.json b/schema/config_pointset.json
index b4ed05f3bd..aca0a6ad32 100644
--- a/schema/config_pointset.json
+++ b/schema/config_pointset.json
@@ -1,4 +1,5 @@
{
+ "$udmi_version": "1.4.0",
"title": "Pointset Config",
"description": "[Pointset Config Documentation](../docs/messages/pointset.md#config)",
"type": "object",
diff --git a/schema/config_pointset_point.json b/schema/config_pointset_point.json
index 7b22616448..4e2ca39f0c 100644
--- a/schema/config_pointset_point.json
+++ b/schema/config_pointset_point.json
@@ -1,4 +1,5 @@
{
+ "$udmi_version": "1.4.0",
"title": "Point Pointset Config",
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
diff --git a/schema/config_system.json b/schema/config_system.json
index 5304c879ed..45b987cf7c 100644
--- a/schema/config_system.json
+++ b/schema/config_system.json
@@ -1,4 +1,5 @@
{
+ "$udmi_version": "1.4.0",
"title": "System Config",
"description": "[System Config Documentation](../docs/messages/system.md#config)",
"type": "object",
diff --git a/schema/config_system_testing.json b/schema/config_system_testing.json
index ee8cc70e40..710f3cfbfd 100644
--- a/schema/config_system_testing.json
+++ b/schema/config_system_testing.json
@@ -1,4 +1,5 @@
{
+ "$udmi_version": "1.4.0",
"title": "Testing System Config",
"description": "Configuration parameters for device-under-test",
"type": "object",
diff --git a/schema/configuration_endpoint.json b/schema/configuration_endpoint.json
index 172cbd0a9a..04cada4b53 100644
--- a/schema/configuration_endpoint.json
+++ b/schema/configuration_endpoint.json
@@ -1,4 +1,5 @@
{
+ "$udmi_version": "1.4.0",
"title": "Endpoint Configuration",
"description": "Parameters to define an MQTT endpoint",
"$section": "Blobs",
diff --git a/schema/configuration_execution.json b/schema/configuration_execution.json
index 6c92c768c8..668e8a017d 100644
--- a/schema/configuration_execution.json
+++ b/schema/configuration_execution.json
@@ -1,4 +1,5 @@
{
+ "$udmi_version": "1.4.0",
"title": "Execution Configuration",
"description": "Parameters for configuring the execution run of a UDMI tool",
"$section": "Tool Configuration",
diff --git a/schema/configuration_pubber.json b/schema/configuration_pubber.json
index a51485baec..b68186b635 100644
--- a/schema/configuration_pubber.json
+++ b/schema/configuration_pubber.json
@@ -1,4 +1,5 @@
{
+ "$udmi_version": "1.4.0",
"title": "Pubber Configuration",
"description": "Parameters to define a pubber runtime instance",
"additionalProperties": true,
diff --git a/schema/envelope.json b/schema/envelope.json
index 35eff6166d..eb7e3f384b 100644
--- a/schema/envelope.json
+++ b/schema/envelope.json
@@ -1,4 +1,5 @@
{
+ "$udmi_version": "1.4.0",
"title": "Envelope",
"description": "The UDMI `envelope` is not a message itself, per se, but the attributes and other information that is delivered along with a message. [Message Envelope Documentation](../docs/messages/envelope.md)",
"$section": "Messages",
diff --git a/schema/event.json b/schema/event.json
index ccc54e6c38..4ebced444b 100644
--- a/schema/event.json
+++ b/schema/event.json
@@ -1,4 +1,5 @@
{
+ "$udmi_version": "1.4.0",
"title": "Event",
"description": "Container object for all event schemas, not directly used.",
"type": "object",
diff --git a/schema/event_discovery.json b/schema/event_discovery.json
index ada7a0e33c..30c7d61276 100644
--- a/schema/event_discovery.json
+++ b/schema/event_discovery.json
@@ -1,4 +1,5 @@
{
+ "$udmi_version": "1.4.0",
"title": "Discovery Event",
"description": "[Discovery result](../docs/specs/discovery.md) with implicit enumeration",
"$section": "Messages",
diff --git a/schema/event_discovery_family.json b/schema/event_discovery_family.json
index a781e0bce7..b3b5e21ce5 100644
--- a/schema/event_discovery_family.json
+++ b/schema/event_discovery_family.json
@@ -1,4 +1,5 @@
{
+ "$udmi_version": "1.4.0",
"title": "Family Discovery Event",
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
diff --git a/schema/event_discovery_point.json b/schema/event_discovery_point.json
index 05a87dc3e2..48d827d102 100644
--- a/schema/event_discovery_point.json
+++ b/schema/event_discovery_point.json
@@ -1,4 +1,5 @@
{
+ "$udmi_version": "1.4.0",
"title": "Point Enumeration Event",
"description": "Object representation for for a single point enumeration",
"type": "object",
diff --git a/schema/event_mapping.json b/schema/event_mapping.json
index cc52fe8034..f5e01f06f5 100644
--- a/schema/event_mapping.json
+++ b/schema/event_mapping.json
@@ -1,4 +1,5 @@
{
+ "$udmi_version": "1.4.0",
"title": "Mapping Event",
"description": "[Mapping result](../docs/specs/mapping.md) with implicit enumeration",
"type": "object",
diff --git a/schema/event_pointset.json b/schema/event_pointset.json
index c3c398c668..6ccf90f9f9 100644
--- a/schema/event_pointset.json
+++ b/schema/event_pointset.json
@@ -1,4 +1,5 @@
{
+ "$udmi_version": "1.4.0",
"title": "Pointset Event",
"description": "A set of points reporting telemetry data. [Pointset Event Documentation](../docs/messages/pointset.md#telemetry)",
"$section": "Messages",
diff --git a/schema/event_pointset_point.json b/schema/event_pointset_point.json
index deafabfdfd..aff6887acf 100644
--- a/schema/event_pointset_point.json
+++ b/schema/event_pointset_point.json
@@ -1,4 +1,5 @@
{
+ "$udmi_version": "1.4.0",
"title": "Point Pointset Event",
"description": "Object representation for for a single point",
"type": "object",
diff --git a/schema/event_system.json b/schema/event_system.json
index 99a29519c5..e23721e375 100644
--- a/schema/event_system.json
+++ b/schema/event_system.json
@@ -1,4 +1,5 @@
{
+ "$udmi_version": "1.4.0",
"title": "System Event",
"description": "Used for system events such as logging. [System Event Documentation](../docs/messages/system.md#event)",
"$section": "Messages",
diff --git a/schema/event_validation.json b/schema/event_validation.json
index 58f3e2baad..02798a04e3 100644
--- a/schema/event_validation.json
+++ b/schema/event_validation.json
@@ -1,4 +1,5 @@
{
+ "$udmi_version": "1.4.0",
"title": "Validation Event",
"description": "Validation device result",
"type": "object",
diff --git a/schema/event_validation_device.json b/schema/event_validation_device.json
index 732d5d240a..7d5c890421 100644
--- a/schema/event_validation_device.json
+++ b/schema/event_validation_device.json
@@ -1,4 +1,5 @@
{
+ "$udmi_version": "1.4.0",
"title": "Device Validation Event",
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
diff --git a/schema/metadata.json b/schema/metadata.json
index ee05d300af..0d3416855d 100644
--- a/schema/metadata.json
+++ b/schema/metadata.json
@@ -1,4 +1,5 @@
{
+ "$udmi_version": "1.4.0",
"title": "Metadata",
"description": "[Metadata](../docs/specs/metadata.md) is a description about the device: a specification about how the device should be configured and expectations about what the device should be doing. Defined by `metadata.json`",
"$section": "Site Model",
diff --git a/schema/model_cloud.json b/schema/model_cloud.json
index c4077da8d4..38bafddccf 100644
--- a/schema/model_cloud.json
+++ b/schema/model_cloud.json
@@ -1,4 +1,5 @@
{
+ "$udmi_version": "1.4.0",
"title": "Cloud Model",
"description": "Information specific to how the device communicates with the cloud.",
"type": "object",
diff --git a/schema/model_discovery.json b/schema/model_discovery.json
index cf3d7290d3..9e1cb9da29 100644
--- a/schema/model_discovery.json
+++ b/schema/model_discovery.json
@@ -1,4 +1,5 @@
{
+ "$udmi_version": "1.4.0",
"title": "Discovery Model",
"description": "Discovery target parameters",
"type": "object",
diff --git a/schema/model_discovery_family.json b/schema/model_discovery_family.json
index 531f1f2d9e..968aa62254 100644
--- a/schema/model_discovery_family.json
+++ b/schema/model_discovery_family.json
@@ -1,4 +1,5 @@
{
+ "$udmi_version": "1.4.0",
"title": "Family Discovery Testing Model",
"type": "object",
"$schema": "http://json-schema.org/draft-04/schema#",
diff --git a/schema/model_gateway.json b/schema/model_gateway.json
index 164f6a915c..b728177c22 100644
--- a/schema/model_gateway.json
+++ b/schema/model_gateway.json
@@ -1,4 +1,5 @@
{
+ "$udmi_version": "1.4.0",
"title": "Gateway Model",
"description": "[Gateway Documentation](../docs/specs/gateway.md)",
"type": "object",
diff --git a/schema/model_localnet.json b/schema/model_localnet.json
index d2a9c33efe..57a2bd17f8 100644
--- a/schema/model_localnet.json
+++ b/schema/model_localnet.json
@@ -1,4 +1,5 @@
{
+ "$udmi_version": "1.4.0",
"title": "Localnet Model",
"description": "Used to describe device local network parameters",
"type": "object",
diff --git a/schema/model_localnet_family.json b/schema/model_localnet_family.json
index 01819a1b14..516aa429fb 100644
--- a/schema/model_localnet_family.json
+++ b/schema/model_localnet_family.json
@@ -1,4 +1,5 @@
{
+ "$udmi_version": "1.4.0",
"title": "Family Localnet Model",
"type": "object",
"description": "The type of network",
diff --git a/schema/model_pointset.json b/schema/model_pointset.json
index 427ec1182e..ec77053da9 100644
--- a/schema/model_pointset.json
+++ b/schema/model_pointset.json
@@ -1,4 +1,5 @@
{
+ "$udmi_version": "1.4.0",
"title": "Pointset Model",
"description": "Pointset representing the abstract system expectation for what the device should be doing, and how it should be configured and operated. This block specifies the expected points that a device holds",
"type": "object",
diff --git a/schema/model_pointset_point.json b/schema/model_pointset_point.json
index 745140893d..858863f131 100644
--- a/schema/model_pointset_point.json
+++ b/schema/model_pointset_point.json
@@ -1,4 +1,5 @@
{
+ "$udmi_version": "1.4.0",
"title": "Point Pointset Model",
"description": "Information about a specific point name of the device.",
"type": "object",
diff --git a/schema/model_system.json b/schema/model_system.json
index dc18a4d4a8..b76fa06d67 100644
--- a/schema/model_system.json
+++ b/schema/model_system.json
@@ -1,4 +1,5 @@
{
+ "$udmi_version": "1.4.0",
"title": "System Model",
"description": "High-level system information about the device. [System Model Documentation](../docs/messages/system.md)",
"type": "object",
diff --git a/schema/model_system_hardware.json b/schema/model_system_hardware.json
index c0f40506d7..fca1decb96 100644
--- a/schema/model_system_hardware.json
+++ b/schema/model_system_hardware.json
@@ -1,4 +1,5 @@
{
+ "$udmi_version": "1.4.0",
"title": "SystemHardware",
"description": "A collection of fields which describe the physical hardware of the device.",
"type": "object",
diff --git a/schema/model_testing.json b/schema/model_testing.json
index a865111b1f..4dae8b7776 100644
--- a/schema/model_testing.json
+++ b/schema/model_testing.json
@@ -1,4 +1,5 @@
{
+ "$udmi_version": "1.4.0",
"title": "Testing Model",
"description": "Testing target parameters",
"type": "object",
diff --git a/schema/model_testing_target.json b/schema/model_testing_target.json
index a7eb0ea2c2..8107fd6e9e 100644
--- a/schema/model_testing_target.json
+++ b/schema/model_testing_target.json
@@ -1,4 +1,5 @@
{
+ "$udmi_version": "1.4.0",
"title": "Target Testing Model",
"type": "object",
"$schema": "http://json-schema.org/draft-04/schema#",
diff --git a/schema/options_pubber.json b/schema/options_pubber.json
index 4e12e2e408..b440ab2280 100644
--- a/schema/options_pubber.json
+++ b/schema/options_pubber.json
@@ -1,4 +1,5 @@
{
+ "$udmi_version": "1.4.0",
"title": "Pubber Options",
"description": "Pubber runtime options",
"additionalProperties": true,
diff --git a/schema/persistent_device.json b/schema/persistent_device.json
index 205007d921..e742e868ed 100644
--- a/schema/persistent_device.json
+++ b/schema/persistent_device.json
@@ -1,4 +1,5 @@
{
+ "$udmi_version": "1.4.0",
"title": "Device Persistent",
"description": "Device persistent data",
"additionalProperties": true,
diff --git a/schema/properties.json b/schema/properties.json
index f1082d8166..47330c898c 100644
--- a/schema/properties.json
+++ b/schema/properties.json
@@ -1,4 +1,5 @@
{
+ "$udmi_version": "1.4.0",
"title": "Properties",
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
diff --git a/schema/reflect_config.json b/schema/reflect_config.json
index 9cf1362e45..a5e7cafeb9 100644
--- a/schema/reflect_config.json
+++ b/schema/reflect_config.json
@@ -1,4 +1,5 @@
{
+ "$udmi_version": "1.4.0",
"title": "Reflector Config",
"description": "Config for a reflector client",
"type": "object",
diff --git a/schema/reflect_state.json b/schema/reflect_state.json
index 2cf7bb7425..b42c278416 100644
--- a/schema/reflect_state.json
+++ b/schema/reflect_state.json
@@ -1,4 +1,5 @@
{
+ "$udmi_version": "1.4.0",
"title": "Reflector State",
"description": "State of a reflector client",
"type": "object",
diff --git a/schema/state.json b/schema/state.json
index 7d3cfb8af7..0dd8af0239 100644
--- a/schema/state.json
+++ b/schema/state.json
@@ -1,4 +1,5 @@
{
+ "$udmi_version": "1.4.0",
"title": "State",
"$section": "Messages",
"type": "object",
diff --git a/schema/state_blobset.json b/schema/state_blobset.json
index 3fadfd5349..459ed0b414 100644
--- a/schema/state_blobset.json
+++ b/schema/state_blobset.json
@@ -1,4 +1,5 @@
{
+ "$udmi_version": "1.4.0",
"title": "Blobset State",
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
diff --git a/schema/state_blobset_blob.json b/schema/state_blobset_blob.json
index 7236e83068..7b5b38fd38 100644
--- a/schema/state_blobset_blob.json
+++ b/schema/state_blobset_blob.json
@@ -1,4 +1,5 @@
{
+ "$udmi_version": "1.4.0",
"title": "Blob Blobset State",
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
diff --git a/schema/state_discovery.json b/schema/state_discovery.json
index 866c5d406e..3ade8e2842 100644
--- a/schema/state_discovery.json
+++ b/schema/state_discovery.json
@@ -1,4 +1,5 @@
{
+ "$udmi_version": "1.4.0",
"title": "Discovery State",
"description": "State for [discovery](../docs/specs/discovery.md)",
"type": "object",
diff --git a/schema/state_discovery_family.json b/schema/state_discovery_family.json
index 36a4efd122..3ddfa74595 100644
--- a/schema/state_discovery_family.json
+++ b/schema/state_discovery_family.json
@@ -1,4 +1,5 @@
{
+ "$udmi_version": "1.4.0",
"title": "Family Discovery State",
"description": "State for [discovery](../docs/specs/discovery.md)",
"type": "object",
diff --git a/schema/state_gateway.json b/schema/state_gateway.json
index 779f9d1611..cefb6a4483 100644
--- a/schema/state_gateway.json
+++ b/schema/state_gateway.json
@@ -1,4 +1,5 @@
{
+ "$udmi_version": "1.4.0",
"title": "Gateway State",
"description": "[Gateway Documentation](../docs/specs/gateway.md)",
"type": "object",
diff --git a/schema/state_mapping.json b/schema/state_mapping.json
index f903089941..b6dd0b9e8b 100644
--- a/schema/state_mapping.json
+++ b/schema/state_mapping.json
@@ -1,4 +1,5 @@
{
+ "$udmi_version": "1.4.0",
"title": "Mapping State",
"description": "State for [mapping](../docs/specs/mapping.md)",
"type": "object",
diff --git a/schema/state_mapping_device.json b/schema/state_mapping_device.json
index 7b1b9f6fc6..6a86f34870 100644
--- a/schema/state_mapping_device.json
+++ b/schema/state_mapping_device.json
@@ -1,4 +1,5 @@
{
+ "$udmi_version": "1.4.0",
"title": "Device Mapping State",
"description": "State for [mapping](../docs/specs/mapping.md)",
"type": "object",
diff --git a/schema/state_pointset.json b/schema/state_pointset.json
index 92e599652f..6ee3d13275 100644
--- a/schema/state_pointset.json
+++ b/schema/state_pointset.json
@@ -1,4 +1,5 @@
{
+ "$udmi_version": "1.4.0",
"title": "Pointset State",
"description": "A set of points reporting telemetry data.",
"type": "object",
diff --git a/schema/state_pointset_point.json b/schema/state_pointset_point.json
index b14590e63e..f423668785 100644
--- a/schema/state_pointset_point.json
+++ b/schema/state_pointset_point.json
@@ -1,4 +1,5 @@
{
+ "$udmi_version": "1.4.0",
"title": "Point Pointset State",
"description": "Object representation for for a single point",
"type": "object",
diff --git a/schema/state_system.json b/schema/state_system.json
index e5b2dbc6de..2c6d2ed232 100644
--- a/schema/state_system.json
+++ b/schema/state_system.json
@@ -1,4 +1,5 @@
{
+ "$udmi_version": "1.4.0",
"title": "System State",
"description": "[System State Documentation](../docs/messages/system.md#state)",
"type": "object",
diff --git a/schema/state_system_hardware.json b/schema/state_system_hardware.json
index c0f40506d7..fca1decb96 100644
--- a/schema/state_system_hardware.json
+++ b/schema/state_system_hardware.json
@@ -1,4 +1,5 @@
{
+ "$udmi_version": "1.4.0",
"title": "SystemHardware",
"description": "A collection of fields which describe the physical hardware of the device.",
"type": "object",
diff --git a/schema/state_validation.json b/schema/state_validation.json
index edb9b3a55e..db25a76785 100644
--- a/schema/state_validation.json
+++ b/schema/state_validation.json
@@ -1,4 +1,5 @@
{
+ "$udmi_version": "1.4.0",
"title": "Validation State",
"description": "Validation state summary",
"type": "object",
diff --git a/tests/command_discovery.tests/provision.json b/tests/command_discovery.tests/provision.json
index 70e20902e5..aeee5250d7 100644
--- a/tests/command_discovery.tests/provision.json
+++ b/tests/command_discovery.tests/provision.json
@@ -3,7 +3,7 @@
// Relies on protocol-specific mechanism for handling provisioning
//
{
- "version": 1,
+ "version": "1.4.0",
"timestamp": "2018-08-26T21:39:29.364Z",
"provision": {
"families": {
diff --git a/tests/command_mapping.tests/mapping.json b/tests/command_mapping.tests/mapping.json
index 97a26464e7..126326e1fd 100644
--- a/tests/command_mapping.tests/mapping.json
+++ b/tests/command_mapping.tests/mapping.json
@@ -4,7 +4,7 @@
// Note that the building and device id are included as part of the message envelope.
//
{
- "version": "1.3.14",
+ "version": "1.4.0",
"timestamp": "2018-08-26T21:39:29.364Z",
"guid": "21387BBA787ADD",
"translation": {
diff --git a/tests/config.tests/blobset_final.json b/tests/config.tests/blobset_final.json
index 7b7b0cd7c9..c55467b473 100644
--- a/tests/config.tests/blobset_final.json
+++ b/tests/config.tests/blobset_final.json
@@ -1,5 +1,5 @@
{
- "version": 1,
+ "version": "1.4.0",
"blobset": {
"blobs": {
"arbitrary_manufacturer_id": {
diff --git a/tests/config.tests/blobset_final_incomplete_payload.json b/tests/config.tests/blobset_final_incomplete_payload.json
index 13637d5a22..a73a44600f 100644
--- a/tests/config.tests/blobset_final_incomplete_payload.json
+++ b/tests/config.tests/blobset_final_incomplete_payload.json
@@ -1,5 +1,5 @@
{
- "version": 1,
+ "version": "1.4.0",
"blobset": {
"blobs": {
"arbitrary_manufacturer_id": {
diff --git a/tests/config.tests/blobset_final_incomplete_url.json b/tests/config.tests/blobset_final_incomplete_url.json
index 6b7c875abd..a72549851e 100644
--- a/tests/config.tests/blobset_final_incomplete_url.json
+++ b/tests/config.tests/blobset_final_incomplete_url.json
@@ -1,5 +1,5 @@
{
- "version": 1,
+ "version": "1.4.0",
"blobset": {
"blobs": {
"_firmware_update": {
diff --git a/tests/config.tests/continuous.json b/tests/config.tests/continuous.json
index 1f650657d9..abc1a072e5 100644
--- a/tests/config.tests/continuous.json
+++ b/tests/config.tests/continuous.json
@@ -3,7 +3,7 @@
// where {device_id} is that of the discovery node.
//
{
- "version": 1,
+ "version": "1.4.0",
"timestamp": "2018-08-26T21:39:29.364Z",
"discovery": {
"families": {
diff --git a/tests/config.tests/delta_endpoint.json b/tests/config.tests/delta_endpoint.json
index eee3ec363b..c95adc6d0e 100644
--- a/tests/config.tests/delta_endpoint.json
+++ b/tests/config.tests/delta_endpoint.json
@@ -1,5 +1,5 @@
{
- "version": 1,
+ "version": "1.4.0",
"blobset": {
"blobs": {
"_iot_endpoint_config": {
diff --git a/tests/config.tests/discovery.json b/tests/config.tests/discovery.json
index f8b8471044..802a67349d 100644
--- a/tests/config.tests/discovery.json
+++ b/tests/config.tests/discovery.json
@@ -3,7 +3,7 @@
// where {device_id} is that of the discovery node.
//
{
- "version": 1,
+ "version": "1.4.0",
"timestamp": "2018-08-26T21:39:29.364Z",
"discovery": {
"families": {
diff --git a/tests/config.tests/endpoint_reconfiguration.json b/tests/config.tests/endpoint_reconfiguration.json
index 9cb934fc44..75fc2493c1 100644
--- a/tests/config.tests/endpoint_reconfiguration.json
+++ b/tests/config.tests/endpoint_reconfiguration.json
@@ -1,5 +1,5 @@
{
- "version": 1,
+ "version": "1.4.0",
"blobset": {
"blobs": {
"_iot_endpoint_config": {
diff --git a/tests/config.tests/enumeration.json b/tests/config.tests/enumeration.json
index 06bb3694d9..5b61ea64c8 100644
--- a/tests/config.tests/enumeration.json
+++ b/tests/config.tests/enumeration.json
@@ -3,7 +3,7 @@
// where {device_id} is that of the enumerated node
//
{
- "version": 1,
+ "version": "1.4.0",
"timestamp": "2018-08-26T21:39:29.364Z",
"discovery": {
"enumeration": {
diff --git a/tests/config.tests/example.json b/tests/config.tests/example.json
index 661da1d285..86ec200733 100644
--- a/tests/config.tests/example.json
+++ b/tests/config.tests/example.json
@@ -1,5 +1,5 @@
{
- "version": "1.3.14",
+ "version": "1.4.0",
"timestamp": "2018-08-26T21:39:29.364Z",
"system": {
"metrics_rate_sec": 10,
diff --git a/tests/config.tests/fcu.json b/tests/config.tests/fcu.json
index cdb8e950a7..94039ee968 100644
--- a/tests/config.tests/fcu.json
+++ b/tests/config.tests/fcu.json
@@ -1,5 +1,5 @@
{
- "version": 1,
+ "version": "1.4.0",
"timestamp": "2019-01-17T14:02:29.364Z",
"system": {
"max_update_ms": 50000,
diff --git a/tests/config.tests/gateway.json b/tests/config.tests/gateway.json
index 294aabb2ce..ceca9c3d54 100644
--- a/tests/config.tests/gateway.json
+++ b/tests/config.tests/gateway.json
@@ -1,5 +1,5 @@
{
- "version": 1,
+ "version": "1.4.0",
"timestamp": "2018-08-26T21:39:29.364Z",
"gateway": {
"proxy_ids": [ "AHU-123", "SMS-81", "991" ]
diff --git a/tests/config.tests/implicit.json b/tests/config.tests/implicit.json
index 1ea09f8b9d..44e657066a 100644
--- a/tests/config.tests/implicit.json
+++ b/tests/config.tests/implicit.json
@@ -3,7 +3,7 @@
// where {device_id} is that of the discovery node.
//
{
- "version": 1,
+ "version": "1.4.0",
"timestamp": "2018-08-26T21:39:29.364Z",
"discovery": {
"families": {
diff --git a/tests/config.tests/periodic.json b/tests/config.tests/periodic.json
index fb0b92cf57..87420cc205 100644
--- a/tests/config.tests/periodic.json
+++ b/tests/config.tests/periodic.json
@@ -3,7 +3,7 @@
// where {device_id} is that of the discovery node.
//
{
- "version": 1,
+ "version": "1.4.0",
"timestamp": "2018-08-26T21:39:29.364Z",
"discovery": {
"families": {
diff --git a/tests/config.tests/proxy.json b/tests/config.tests/proxy.json
index de8250c887..1046e7d8a9 100644
--- a/tests/config.tests/proxy.json
+++ b/tests/config.tests/proxy.json
@@ -1,5 +1,5 @@
{
- "version": 1,
+ "version": "1.4.0",
"timestamp": "2018-08-26T21:39:29.364Z",
"system": {
"min_loglevel": 500
diff --git a/tests/config.tests/restart.json b/tests/config.tests/restart.json
index 2fe583beb4..ae11ef6ba8 100644
--- a/tests/config.tests/restart.json
+++ b/tests/config.tests/restart.json
@@ -1,5 +1,5 @@
{
- "version": "1.3.14",
+ "version": "1.4.0",
"timestamp": "2018-08-26T21:39:29.364Z",
"system": {
"metrics_rate_sec": 10,
diff --git a/tests/config.tests/smartprimus.json b/tests/config.tests/smartprimus.json
index 971290d1d5..7518bdc8dd 100644
--- a/tests/config.tests/smartprimus.json
+++ b/tests/config.tests/smartprimus.json
@@ -1,5 +1,5 @@
{
- "version": 1,
+ "version": "1.4.0",
"timestamp": "2019-01-17T14:02:29.364Z",
"system": {
},
diff --git a/tests/config.tests/writeback.json b/tests/config.tests/writeback.json
index 3c1dababc8..981265a3de 100644
--- a/tests/config.tests/writeback.json
+++ b/tests/config.tests/writeback.json
@@ -1,5 +1,5 @@
{
- "version": 1,
+ "version": "1.4.0",
"timestamp": "2018-08-26T21:39:29.364Z",
"pointset": {
"state_etag": "2a8b718",
diff --git a/tests/config_mapping.tests/mapping.json b/tests/config_mapping.tests/mapping.json
index b464b1f057..f4a4b7fccf 100644
--- a/tests/config_mapping.tests/mapping.json
+++ b/tests/config_mapping.tests/mapping.json
@@ -13,7 +13,7 @@
// imported < applied: The system should import (send command) the applied mapping into the mapper
//
{
- "version": "1.3.14",
+ "version": "1.4.0",
"timestamp": "2018-08-28T21:39:29.364Z",
"devices": {
"FCU-123": {
diff --git a/tests/config_pointset.tests/example.json b/tests/config_pointset.tests/example.json
index df57209ed4..4eef630f4a 100644
--- a/tests/config_pointset.tests/example.json
+++ b/tests/config_pointset.tests/example.json
@@ -1,5 +1,5 @@
{
- "version": 1,
+ "version": "1.4.0",
"timestamp": "2018-08-26T21:39:29.364Z",
"state_etag": "2a8b718",
"set_value_expiry": "2018-08-26T21:49:29.364Z",
diff --git a/tests/downgrade.site/devices/DWN-2/expected/generated_config.json b/tests/downgrade.site/devices/DWN-2/expected/generated_config.json
index dec1bb2b49..a5f2dcbd95 100644
--- a/tests/downgrade.site/devices/DWN-2/expected/generated_config.json
+++ b/tests/downgrade.site/devices/DWN-2/expected/generated_config.json
@@ -1,6 +1,6 @@
{
"timestamp" : "2020-05-01T13:39:07Z",
- "version" : "1.3.14",
+ "version" : "1.4.0",
"system" : {
"min_loglevel" : 300,
"metrics_rate_sec" : 600
diff --git a/tests/downgrade.site/devices/DWN-2/out/generated_config.json b/tests/downgrade.site/devices/DWN-2/out/generated_config.json
new file mode 100644
index 0000000000..721f59f879
--- /dev/null
+++ b/tests/downgrade.site/devices/DWN-2/out/generated_config.json
@@ -0,0 +1,26 @@
+{
+ "timestamp" : "2020-05-01T13:39:07Z",
+ "version" : "1.4.0git ",
+ "system" : {
+ "min_loglevel" : 300,
+ "metrics_rate_sec" : 600
+ },
+ "localnet" : {
+ "families" : {
+ "virtual" : {
+ "id" : "0x65"
+ }
+ }
+ },
+ "pointset" : {
+ "points" : {
+ "filter_alarm_pressure_status" : {
+ "ref" : "BV11.present_value"
+ },
+ "filter_differential_pressure" : { },
+ "filter_differential_pressure_sensor" : {
+ "ref" : "AV12.present_value"
+ }
+ }
+ }
+}
\ No newline at end of file
diff --git a/tests/downgrade.site/registration_summary.json b/tests/downgrade.site/registration_summary.json
index 8b1a18c219..734f96c47d 100644
--- a/tests/downgrade.site/registration_summary.json
+++ b/tests/downgrade.site/registration_summary.json
@@ -8,6 +8,6 @@
"DWN-2" : "devices/DWN-2"
},
"Version" : {
- "main" : "unknown"
+ "main" : "1.3.14-90-g266b9b3"
}
}
\ No newline at end of file
diff --git a/tests/event_discovery.tests/continuous.json b/tests/event_discovery.tests/continuous.json
index 496a98ed07..bdf2068a82 100644
--- a/tests/event_discovery.tests/continuous.json
+++ b/tests/event_discovery.tests/continuous.json
@@ -4,7 +4,7 @@
// discovered {device_id} should be taken from the provided families.
//
{
- "version": "1.3.14",
+ "version": "1.4.0",
"timestamp": "2018-08-26T21:39:29.364Z",
"generation": "2018-08-26T22:00:13Z",
"scan_family": "ipv6",
diff --git a/tests/event_discovery.tests/discovery.json b/tests/event_discovery.tests/discovery.json
index ffc3a1741e..ec6cf7588c 100644
--- a/tests/event_discovery.tests/discovery.json
+++ b/tests/event_discovery.tests/discovery.json
@@ -4,7 +4,7 @@
// discovered {device_id} should be taken from the provided families.
//
{
- "version": "1.3.14",
+ "version": "1.4.0",
"timestamp": "2018-08-26T21:39:29.364Z",
"generation": "2018-08-26T21:00:13Z",
"scan_family": "ipv4",
diff --git a/tests/event_discovery.tests/enumeration.json b/tests/event_discovery.tests/enumeration.json
index e3be65f4e6..47d9c8ed95 100644
--- a/tests/event_discovery.tests/enumeration.json
+++ b/tests/event_discovery.tests/enumeration.json
@@ -3,7 +3,7 @@
// where {device_id} is that of the enumerated node.
//
{
- "version": "1.3.14",
+ "version": "1.4.0",
"timestamp": "2018-08-26T21:42:12.237Z",
"generation": "2018-08-26T21:37:12Z",
"uniqs": {
diff --git a/tests/event_discovery.tests/errors.json b/tests/event_discovery.tests/errors.json
index 2763a08935..782eaddc9c 100644
--- a/tests/event_discovery.tests/errors.json
+++ b/tests/event_discovery.tests/errors.json
@@ -1,5 +1,5 @@
{
- "version": "1.3.14",
+ "version": "1.4.0",
"timestamp": "2018-08-26T21:39:29.364Z",
"id": "sneakyCASE",
"families": {
diff --git a/tests/event_discovery.tests/from_bacnet.json b/tests/event_discovery.tests/from_bacnet.json
index b3eef84bb3..8e28223117 100644
--- a/tests/event_discovery.tests/from_bacnet.json
+++ b/tests/event_discovery.tests/from_bacnet.json
@@ -114,7 +114,7 @@
},
"scan_family": "iot",
"scan_id": "5005",
- "version": 1,
+ "version": "1.4.0",
"timestamp": "2022-06-21T17:19:49.191183+00:00",
"system": {
"hardware": {
diff --git a/tests/event_discovery.tests/implicit.json b/tests/event_discovery.tests/implicit.json
index 3ea5c6a1b2..0d094412d0 100644
--- a/tests/event_discovery.tests/implicit.json
+++ b/tests/event_discovery.tests/implicit.json
@@ -7,7 +7,7 @@
// of the enumerated node is provided by families.iot.id in the message payload.
//
{
- "version": "1.3.14",
+ "version": "1.4.0",
"timestamp": "2018-08-26T21:39:29.364Z",
"generation": "2018-08-26T21:37:12Z",
"scan_family": "bacnet",
diff --git a/tests/event_discovery.tests/point_error.json b/tests/event_discovery.tests/point_error.json
index 40b1399152..d4baa49dad 100644
--- a/tests/event_discovery.tests/point_error.json
+++ b/tests/event_discovery.tests/point_error.json
@@ -7,7 +7,7 @@
// of the enumerated node is provided by families.iot.id in the message payload.
//
{
- "version": "1.3.14",
+ "version": "1.4.0",
"timestamp": "2018-08-26T21:39:29.364Z",
"generation": "2018-08-26T21:37:12Z",
"scan_family": "bacnet",
diff --git a/tests/event_discovery.tests/scan_error.json b/tests/event_discovery.tests/scan_error.json
index 056ced52e2..7fdc8f667c 100644
--- a/tests/event_discovery.tests/scan_error.json
+++ b/tests/event_discovery.tests/scan_error.json
@@ -4,7 +4,7 @@
// discovered {device_id} should be taken from the provided families.
//
{
- "version": "1.3.14",
+ "version": "1.4.0",
"timestamp": "2018-08-26T21:42:12.237Z",
"generation": "2018-08-26T21:37:12Z",
"scan_family": "bacnet",
diff --git a/tests/event_mapping.tests/mapping.json b/tests/event_mapping.tests/mapping.json
index 895e1e40f6..9f8ec4de92 100644
--- a/tests/event_mapping.tests/mapping.json
+++ b/tests/event_mapping.tests/mapping.json
@@ -4,7 +4,7 @@
// Note that the building and device id are included as part of the message envelope.
//
{
- "version": "1.3.14",
+ "version": "1.4.0",
"timestamp": "2018-08-26T21:39:29.364Z",
"guid": "21387BBA787ADD",
"translation": {
diff --git a/tests/event_mapping.tests/prediction.json b/tests/event_mapping.tests/prediction.json
index 5ed99f1f28..0a58582858 100644
--- a/tests/event_mapping.tests/prediction.json
+++ b/tests/event_mapping.tests/prediction.json
@@ -5,7 +5,7 @@
// state that requires 'promotion' before being properly exported.
//
{
- "version": "1.3.14",
+ "version": "1.4.0",
"timestamp": "2018-08-26T21:39:29.364Z",
"prediction": {
// TODO: Include details from staged_equip_response.txt
diff --git a/tests/event_pointset.tests/errors.json b/tests/event_pointset.tests/errors.json
index 521e6ce707..2befab9b6d 100644
--- a/tests/event_pointset.tests/errors.json
+++ b/tests/event_pointset.tests/errors.json
@@ -1,5 +1,5 @@
{
- "version": 1,
+ "version": "1.4.0",
"timestamp": "2018-08-26T21:39:29.364Z",
"id": "sneakyCASE",
"comment$string": "world",
diff --git a/tests/event_pointset.tests/example.json b/tests/event_pointset.tests/example.json
index ac887519fb..47da049c71 100644
--- a/tests/event_pointset.tests/example.json
+++ b/tests/event_pointset.tests/example.json
@@ -1,5 +1,5 @@
{
- "version": "1.3.14",
+ "version": "1.4.0",
"timestamp": "2018-08-26T21:39:29.364Z",
"points": {
"reading_value": {
diff --git a/tests/event_pointset.tests/fcu.json b/tests/event_pointset.tests/fcu.json
index 37acda10e3..2d3d7d7e86 100644
--- a/tests/event_pointset.tests/fcu.json
+++ b/tests/event_pointset.tests/fcu.json
@@ -1,5 +1,5 @@
{
- "version": "1.3.14",
+ "version": "1.4.0",
"timestamp": "2019-01-17T14:02:29.364Z",
"points": {
"space_temperature_sensor": {
diff --git a/tests/event_pointset.tests/partial.json b/tests/event_pointset.tests/partial.json
index 19fe9b2a4d..53a051bb0e 100644
--- a/tests/event_pointset.tests/partial.json
+++ b/tests/event_pointset.tests/partial.json
@@ -1,5 +1,5 @@
{
- "version": 1,
+ "version": "1.4.0",
"timestamp": "2018-08-26T21:39:29.364Z",
"partial_update": true,
"points": {
diff --git a/tests/event_pointset.tests/smartprimus.json b/tests/event_pointset.tests/smartprimus.json
index 9b45dfbfe6..2d3d7d7e86 100644
--- a/tests/event_pointset.tests/smartprimus.json
+++ b/tests/event_pointset.tests/smartprimus.json
@@ -1,5 +1,5 @@
{
- "version": 1,
+ "version": "1.4.0",
"timestamp": "2019-01-17T14:02:29.364Z",
"points": {
"space_temperature_sensor": {
diff --git a/tests/event_pointset.tests/writeback.json b/tests/event_pointset.tests/writeback.json
index cf4f6ad23f..c1456676f6 100644
--- a/tests/event_pointset.tests/writeback.json
+++ b/tests/event_pointset.tests/writeback.json
@@ -1,5 +1,5 @@
{
- "version": 1,
+ "version": "1.4.0",
"timestamp": "2018-08-26T21:39:29.364Z",
"points": {
"room_temperature": {
diff --git a/tests/event_system.tests/errors.json b/tests/event_system.tests/errors.json
index fb39ffa49c..328f815234 100644
--- a/tests/event_system.tests/errors.json
+++ b/tests/event_system.tests/errors.json
@@ -1,5 +1,5 @@
{
- "version": 1,
+ "version": "1.4.0",
"timestamp": "2018-08-26T21:39:29.364Z",
"logentries": [
{
diff --git a/tests/event_system.tests/example.json b/tests/event_system.tests/example.json
index c31922b7ae..c00814cd89 100644
--- a/tests/event_system.tests/example.json
+++ b/tests/event_system.tests/example.json
@@ -1,5 +1,5 @@
{
- "version": "1.3.14",
+ "version": "1.4.0",
"timestamp": "2018-08-26T21:39:29.364Z",
"logentries": [
{
diff --git a/tests/event_system.tests/fcu.json b/tests/event_system.tests/fcu.json
index 8df9d76fa3..167f2c50db 100644
--- a/tests/event_system.tests/fcu.json
+++ b/tests/event_system.tests/fcu.json
@@ -1,5 +1,5 @@
{
- "version": "1.3.14",
+ "version": "1.4.0",
"timestamp": "2018-08-26T21:39:29.364Z",
"logentries": [
{
diff --git a/tests/event_system.tests/metrics.json b/tests/event_system.tests/metrics.json
index 9469d4058f..185a51bfd7 100644
--- a/tests/event_system.tests/metrics.json
+++ b/tests/event_system.tests/metrics.json
@@ -1,5 +1,5 @@
{
- "version": "1.3.14",
+ "version": "1.4.0",
"timestamp": "2018-08-26T21:39:29.364Z",
"metrics": { // Fixed keys, all scalar values (for graphing).
"restart_count": 10,
diff --git a/tests/event_validation.tests/simple_error.json b/tests/event_validation.tests/simple_error.json
index b71c581749..bd619c4769 100644
--- a/tests/event_validation.tests/simple_error.json
+++ b/tests/event_validation.tests/simple_error.json
@@ -1,5 +1,5 @@
{
- "version": "1.3.14",
+ "version": "1.4.0",
"timestamp": "2018-08-26T21:39:29.364Z",
"sub_type": "event",
"sub_folder": "discovery",
diff --git a/tests/event_validation.tests/simple_ok.json b/tests/event_validation.tests/simple_ok.json
index 53f67a9b22..daa039bd8b 100644
--- a/tests/event_validation.tests/simple_ok.json
+++ b/tests/event_validation.tests/simple_ok.json
@@ -1,5 +1,5 @@
{
- "version": "1.3.14",
+ "version": "1.4.0",
"timestamp": "2018-08-26T21:39:29.364Z",
"sub_type": "event",
"sub_folder": "discovery",
diff --git a/tests/metadata.tests/errors.json b/tests/metadata.tests/errors.json
index 395b19e45f..7f5f471c22 100644
--- a/tests/metadata.tests/errors.json
+++ b/tests/metadata.tests/errors.json
@@ -1,5 +1,5 @@
{
- "version": 1,
+ "version": "1.4.0",
"timestamp": "2018-08-26T21:39:29.364Z",
"system": {
"guid": "bim://04aEp5ymD_$u5IxhJN2aGi",
diff --git a/tests/metadata.tests/example.json b/tests/metadata.tests/example.json
index d638a05338..ca10ad6281 100644
--- a/tests/metadata.tests/example.json
+++ b/tests/metadata.tests/example.json
@@ -1,5 +1,5 @@
{
- "version": 1,
+ "version": "1.4.0",
"timestamp": "2018-08-26T21:39:29.364Z",
"description": "Generic test example metadata file",
"system": {
diff --git a/tests/metadata.tests/gateway.json b/tests/metadata.tests/gateway.json
index 9a7d5003a8..1089f6edf7 100644
--- a/tests/metadata.tests/gateway.json
+++ b/tests/metadata.tests/gateway.json
@@ -1,5 +1,5 @@
{
- "version": 1,
+ "version": "1.4.0",
"timestamp": "2018-08-26T21:39:29.364Z",
"system": {
"location": {
diff --git a/tests/metadata.tests/proxy.json b/tests/metadata.tests/proxy.json
index c15deeaa36..b24f3bec07 100644
--- a/tests/metadata.tests/proxy.json
+++ b/tests/metadata.tests/proxy.json
@@ -1,5 +1,5 @@
{
- "version": 1,
+ "version": "1.4.0",
"timestamp": "2018-08-26T21:39:29.364Z",
"system": {
"location": {
diff --git a/tests/metadata.tests/toomany.json b/tests/metadata.tests/toomany.json
index 6c5b9671e0..ae0ec6fe27 100644
--- a/tests/metadata.tests/toomany.json
+++ b/tests/metadata.tests/toomany.json
@@ -2030,6 +2030,6 @@
}
}
},
- "version": 1,
+ "version": "1.4.0",
"timestamp": "2020-03-05T14:42:59.743Z"
}
diff --git a/tests/state.tests/blobset_received.json b/tests/state.tests/blobset_received.json
index a3519e9e6a..40cf691d73 100644
--- a/tests/state.tests/blobset_received.json
+++ b/tests/state.tests/blobset_received.json
@@ -1,5 +1,5 @@
{
- "version": 1,
+ "version": "1.4.0",
"timestamp": "2022-07-13T12:00:10.000Z",
"system": {
"hardware": {
diff --git a/tests/state.tests/blobset_updating.json b/tests/state.tests/blobset_updating.json
index 6ba2c6f4af..72e1161e31 100644
--- a/tests/state.tests/blobset_updating.json
+++ b/tests/state.tests/blobset_updating.json
@@ -1,5 +1,5 @@
{
- "version": 1,
+ "version": "1.4.0",
"timestamp": "2022-07-13T12:00:10.000Z",
"system": {
"hardware": {
diff --git a/tests/state.tests/continuous.json b/tests/state.tests/continuous.json
index 31779b0074..7c8831b4ed 100644
--- a/tests/state.tests/continuous.json
+++ b/tests/state.tests/continuous.json
@@ -3,7 +3,7 @@
// where {device_id} is that of the discovery node.
//
{
- "version": "1.3.14",
+ "version": "1.4.0",
"timestamp": "2018-08-26T21:39:29.364Z",
"system": {
"hardware": {
diff --git a/tests/state.tests/discovery.json b/tests/state.tests/discovery.json
index b524f03d0c..21356ca02f 100644
--- a/tests/state.tests/discovery.json
+++ b/tests/state.tests/discovery.json
@@ -3,7 +3,7 @@
// where {device_id} is that of the discovery node.
//
{
- "version": "1.3.14",
+ "version": "1.4.0",
"timestamp": "2018-08-26T21:39:29.364Z",
"system": {
"hardware": {
diff --git a/tests/state.tests/endpoint_reconfiguration.json b/tests/state.tests/endpoint_reconfiguration.json
index 263e60d54e..543869cd9d 100644
--- a/tests/state.tests/endpoint_reconfiguration.json
+++ b/tests/state.tests/endpoint_reconfiguration.json
@@ -1,5 +1,5 @@
{
- "version": 1,
+ "version": "1.4.0",
"timestamp": "2022-07-13T12:00:10.000Z",
"system": {
"hardware": {
diff --git a/tests/state.tests/endpoint_reconfiguration_failed.json b/tests/state.tests/endpoint_reconfiguration_failed.json
index 7a7d37e126..8e62441334 100644
--- a/tests/state.tests/endpoint_reconfiguration_failed.json
+++ b/tests/state.tests/endpoint_reconfiguration_failed.json
@@ -1,5 +1,5 @@
{
- "version": 1,
+ "version": "1.4.0",
"timestamp": "2022-07-13T12:00:11.000Z",
"system": {
"hardware": {
diff --git a/tests/state.tests/enumeration.json b/tests/state.tests/enumeration.json
index b22c732adb..f419ee2531 100644
--- a/tests/state.tests/enumeration.json
+++ b/tests/state.tests/enumeration.json
@@ -3,7 +3,7 @@
// where {device_id} is that of the enumerated node.
//
{
- "version": "1.3.14",
+ "version": "1.4.0",
"timestamp": "2018-08-26T21:39:29.364Z",
"system": {
"hardware": {
diff --git a/tests/state.tests/example.json b/tests/state.tests/example.json
index 290017828b..ee7d78c5a0 100644
--- a/tests/state.tests/example.json
+++ b/tests/state.tests/example.json
@@ -1,5 +1,5 @@
{
- "version": "1.3.14",
+ "version": "1.4.0",
"timestamp": "2018-08-26T21:39:29.364Z",
"system": {
"hardware": {
diff --git a/tests/state.tests/fcu.json b/tests/state.tests/fcu.json
index 0b84a15dab..03172c8e9d 100644
--- a/tests/state.tests/fcu.json
+++ b/tests/state.tests/fcu.json
@@ -1,10 +1,13 @@
{
- "version": 1,
+ "version": "1.4.0",
"timestamp": "2019-01-17T14:02:29.364Z",
"system": {
- "make_model": "EasyIO FW-14",
- "firmware": {
- "version": "3.2a"
+ "hardware": {
+ "make": "EasyIO",
+ "model": "FW-14"
+ },
+ "software": {
+ "firmware": "3.2a"
},
"serial_no": "182732142",
"last_config": "2019-01-14T21:49:29.364Z",
diff --git a/tests/state.tests/gateway.json b/tests/state.tests/gateway.json
index 9c16c745c4..3465794ecc 100644
--- a/tests/state.tests/gateway.json
+++ b/tests/state.tests/gateway.json
@@ -1,5 +1,5 @@
{
- "version": "1.3.14",
+ "version": "1.4.0",
"timestamp": "2018-08-26T21:39:29.364Z",
"system": {
"hardware": { // Fixed set of keys with arbitrary values indicating hardware items.
diff --git a/tests/state.tests/makemodel_error.json b/tests/state.tests/makemodel_error.json
index 8df5107511..8b803a3e90 100644
--- a/tests/state.tests/makemodel_error.json
+++ b/tests/state.tests/makemodel_error.json
@@ -1,5 +1,5 @@
{
- "version": "1.3.14",
+ "version": "1.4.0",
"timestamp": "2018-08-26T21:39:29.364Z",
"system": {
"make_model": "ACME Bird Trap",
diff --git a/tests/state.tests/periodic.json b/tests/state.tests/periodic.json
index b524f03d0c..21356ca02f 100644
--- a/tests/state.tests/periodic.json
+++ b/tests/state.tests/periodic.json
@@ -3,7 +3,7 @@
// where {device_id} is that of the discovery node.
//
{
- "version": "1.3.14",
+ "version": "1.4.0",
"timestamp": "2018-08-26T21:39:29.364Z",
"system": {
"hardware": {
diff --git a/tests/state.tests/restart.json b/tests/state.tests/restart.json
index c198670c89..73d1c57f7c 100644
--- a/tests/state.tests/restart.json
+++ b/tests/state.tests/restart.json
@@ -1,5 +1,5 @@
{
- "version": "1.3.14",
+ "version": "1.4.0",
"timestamp": "2018-08-26T21:39:29.364Z",
"system": {
"hardware": {
diff --git a/tests/state.tests/scan_bad.json b/tests/state.tests/scan_bad.json
index a54190502d..ffc46499e7 100644
--- a/tests/state.tests/scan_bad.json
+++ b/tests/state.tests/scan_bad.json
@@ -3,7 +3,7 @@
// where {device_id} is that of the discovery node.
//
{
- "version": "1.3.14",
+ "version": "1.4.0",
"timestamp": "2018-08-26T21:39:29.364Z",
"system": {
"hardware": {
diff --git a/tests/state.tests/scan_error.json b/tests/state.tests/scan_error.json
index 5596ffd668..10e4ee2fe9 100644
--- a/tests/state.tests/scan_error.json
+++ b/tests/state.tests/scan_error.json
@@ -3,7 +3,7 @@
// where {device_id} is that of the discovery node.
//
{
- "version": "1.3.14",
+ "version": "1.4.0",
"timestamp": "2018-08-26T21:39:29.364Z",
"system": {
"hardware": {
diff --git a/tests/state.tests/scan_stop.json b/tests/state.tests/scan_stop.json
index 86d81fee56..956b165a68 100644
--- a/tests/state.tests/scan_stop.json
+++ b/tests/state.tests/scan_stop.json
@@ -3,7 +3,7 @@
// where {device_id} is that of the discovery node.
//
{
- "version": "1.3.14",
+ "version": "1.4.0",
"timestamp": "2018-08-26T21:39:29.364Z",
"system": {
"hardware": {
diff --git a/tests/state.tests/writeback.json b/tests/state.tests/writeback.json
index dd39e36d8d..a1e2f04825 100644
--- a/tests/state.tests/writeback.json
+++ b/tests/state.tests/writeback.json
@@ -1,5 +1,5 @@
{
- "version": "1.3.14",
+ "version": "1.4.0",
"timestamp": "2018-08-26T21:39:29.364Z",
"system": {
"hardware": {
diff --git a/tests/state_mapping.tests/mapping.json b/tests/state_mapping.tests/mapping.json
index 4919b7608b..f48178b0a3 100644
--- a/tests/state_mapping.tests/mapping.json
+++ b/tests/state_mapping.tests/mapping.json
@@ -16,7 +16,7 @@
// requested > exported: The mapper should export (send event) the indicated mapping
//
{
- "version": "1.3.14",
+ "version": "1.4.0",
"timestamp": "2018-08-26T21:39:29.364Z",
"devices": {
"FCU-123": {
diff --git a/tests/state_pointset.tests/example.json b/tests/state_pointset.tests/example.json
index 79e09cc9ec..8aa5ccc503 100644
--- a/tests/state_pointset.tests/example.json
+++ b/tests/state_pointset.tests/example.json
@@ -1,5 +1,5 @@
{
- "version": 1,
+ "version": "1.4.0",
"timestamp": "2018-08-26T21:39:29.364Z",
"state_etag": "2a8b718",
"points": {
diff --git a/tests/state_validation.tests/report.json b/tests/state_validation.tests/report.json
index 6afea7edf6..870556a026 100644
--- a/tests/state_validation.tests/report.json
+++ b/tests/state_validation.tests/report.json
@@ -1,5 +1,5 @@
{
- "version": "1.3.14",
+ "version": "1.4.0",
"last_updated" : "2022-07-16T18:27:19Z",
"timestamp": "2018-08-26T21:39:29.364Z",
"summary": {
diff --git a/validator/src/main/java/com/google/daq/mqtt/registrar/LocalDevice.java b/validator/src/main/java/com/google/daq/mqtt/registrar/LocalDevice.java
index be0d4c4331..2dc84c089b 100644
--- a/validator/src/main/java/com/google/daq/mqtt/registrar/LocalDevice.java
+++ b/validator/src/main/java/com/google/daq/mqtt/registrar/LocalDevice.java
@@ -185,7 +185,7 @@ class LocalDevice {
ES_CERT_TYPE, ES_CERT_FILE);
private static final String ERROR_FORMAT_INDENT = " ";
private static final int MAX_METADATA_LENGTH = 32767;
- private static final String UDMI_VERSION = "1.3.14";
+ private static final String UDMI_VERSION = "1.4.0";
private final String deviceId;
private final Map schemas;
private final File siteDir;
diff --git a/validator/src/main/java/com/google/daq/mqtt/util/ConfigUtil.java b/validator/src/main/java/com/google/daq/mqtt/util/ConfigUtil.java
index 5188b4ed13..a40b1ff8f2 100644
--- a/validator/src/main/java/com/google/daq/mqtt/util/ConfigUtil.java
+++ b/validator/src/main/java/com/google/daq/mqtt/util/ConfigUtil.java
@@ -19,7 +19,7 @@
public abstract class ConfigUtil {
public static final String EXCEPTIONS_JSON = "exceptions.json";
- public static final String UDMI_VERSION = "1.3.14";
+ public static final String UDMI_VERSION = "1.4.0";
private static final ObjectMapper OBJECT_MAPPER = new ObjectMapper()
.disable(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS)
diff --git a/validator/src/main/java/com/google/daq/mqtt/util/MessageUpgrader.java b/validator/src/main/java/com/google/daq/mqtt/util/MessageUpgrader.java
index f43646aa81..36531d2cd1 100644
--- a/validator/src/main/java/com/google/daq/mqtt/util/MessageUpgrader.java
+++ b/validator/src/main/java/com/google/daq/mqtt/util/MessageUpgrader.java
@@ -56,7 +56,7 @@ public void upgrade() {
if (minor < 3) {
upgrade_1_3();
}
- if (patch < 14) {
+ if (minor == 3 && patch < 14) {
upgrade_1_3_14();
}
if (message.has(VERSION_PROPERTY_KEY)) {
diff --git a/validator/traces/simple.out/devices/AHU-1/event_pointset.out b/validator/traces/simple.out/devices/AHU-1/event_pointset.out
index 4c10740d9d..277d9151b8 100644
--- a/validator/traces/simple.out/devices/AHU-1/event_pointset.out
+++ b/validator/traces/simple.out/devices/AHU-1/event_pointset.out
@@ -1,6 +1,6 @@
{
"timestamp" : "1999-10-20T01:02:03Z",
- "version" : "1.3.14",
+ "version" : "1.4.0",
"sub_folder" : "pointset",
"sub_type" : "event",
"status" : {
diff --git a/validator/traces/simple.out/devices/AHU-22/event_pointset.out b/validator/traces/simple.out/devices/AHU-22/event_pointset.out
index d540dae713..7315ca84f5 100644
--- a/validator/traces/simple.out/devices/AHU-22/event_pointset.out
+++ b/validator/traces/simple.out/devices/AHU-22/event_pointset.out
@@ -1,6 +1,6 @@
{
"timestamp" : "1999-10-20T01:02:03Z",
- "version" : "1.3.14",
+ "version" : "1.4.0",
"sub_folder" : "pointset",
"sub_type" : "event",
"status" : {
diff --git a/validator/traces/simple.out/devices/AHU-22/event_system.out b/validator/traces/simple.out/devices/AHU-22/event_system.out
index e4dbf41115..a60b123d27 100644
--- a/validator/traces/simple.out/devices/AHU-22/event_system.out
+++ b/validator/traces/simple.out/devices/AHU-22/event_system.out
@@ -1,6 +1,6 @@
{
"timestamp" : "1999-10-20T01:02:03Z",
- "version" : "1.3.14",
+ "version" : "1.4.0",
"sub_folder" : "system",
"sub_type" : "event",
"status" : {
diff --git a/validator/traces/simple.out/devices/SNS-4/event_pointset.out b/validator/traces/simple.out/devices/SNS-4/event_pointset.out
index 195a1ddeb4..e82d43ac35 100644
--- a/validator/traces/simple.out/devices/SNS-4/event_pointset.out
+++ b/validator/traces/simple.out/devices/SNS-4/event_pointset.out
@@ -1,6 +1,6 @@
{
"timestamp" : "1999-10-20T01:02:03Z",
- "version" : "1.3.14",
+ "version" : "1.4.0",
"sub_folder" : "pointset",
"sub_type" : "event",
"status" : {
diff --git a/validator/traces/simple.out/validation_report.json b/validator/traces/simple.out/validation_report.json
index 0948ba80bb..b9a602c59b 100644
--- a/validator/traces/simple.out/validation_report.json
+++ b/validator/traces/simple.out/validation_report.json
@@ -1,6 +1,6 @@
{
"timestamp" : "1999-10-20T01:02:03Z",
- "version" : "1.3.14",
+ "version" : "1.4.0",
"summary" : {
"correct_devices" : [ "AHU-1" ],
"extra_devices" : [ ],