Bosch IoT Rollouts Documentation

SOUP Recipe file

Table of contents:

Introduction

The install representation of a recipe, also known as recipe file, is specifically designed to optimize the execution of system updates through a system update handler, typically operating within a gateway. This representation is derived from the management representation and subsequently enhanced with essential information required by the system update handler. While, for example, the management representation of a recipe solely references distribution sets, the recipe file provides comprehensive details about the individual artifacts contained within these distribution sets. This includes information such as byte size, hashes, and download information. The recipe file is generated, when promoting the recipe from DRAFT stage to WAITING_FOR_SIGNATURE.

Default recipe file format

By default, the recipe adheres to a SWupdate-compatible format (sw-description.json), augmented with custom attributes. However, it is important to note that the install representation can be customized to meet specific customer requirements, ensuring flexibility and adaptability. Properties starting with an _ (e.g. _noImage) are ignored by SWupdate.

The recipe file format is configurable per subscription (see soup.recipe.template in SOUP Tenant configuration).

Key

Source

Comment

_recipe.id

Recipe Id


_recipe.schema-version

Template

Hard-coded version of the current template. If the template is changed later on, the version should be adapted as well.

_recipe.name

Recipe name


_recipe.description

Recipe description


_recipe.published

Recipe published dated

Date is set, when the recipe is promoted from draft to release candidate

software.version

Recipe version


software.scripts

refer to scripts

The scripts section contains all artifacts within software modules within a distribution set of type "scripts" referenced as System distribution set

Functional

System-level scripts that are executed by the SWUpdate application on the gateway (e.g. example.lua).

software.images

refer to images

The images section contains all modules of the Module update definitions with a distribution set reference.

Functional

Modules that are updated in the scope of the system update including their cardinality, and the software that is to be installed on them.

software._noImage

refer to _noImage

The _noImage section contains all modules of the Module update definitions without a distribution set reference.

Functional

Modules are not updated in the scope of the system update including their cardinality.

software._systemArtifacts

refer to _systemArtifacts

The _systemArtifacts section contains all artifacts within software modules within distribution sets referenced as System distribution set (incl. scripts).

Functional

System-level artifacts which are downloaded by the System update-app (e.g. system release notes, scripts or license agreements)

scripts

The scripts section contains all artifacts within software modules within a distribution set of type "scripts" referenced as System distribution set

Key

Source

Comment

software.scripts[].id

Id of file

Used for retrieval of file via Install API

software.scripts[].type

Software module type key

The software module type key has to correspond to the required SWUpdate handler that handles the script

software.scripts[].byteSize

Size of file


software.scripts[].filename

Name of file


software.scripts[].sha256

SHA256 of file


images

The images section contains all modules of the Module update definitions with a distribution set reference.

Key

Source

Comment

software.images[]._module.name

Module update definition name


software.images[]._module.description

Module update definition description


software.images[]._module.match

Module update definition match query

"attribute." prefix is removed. Query is then transformed from a RSQL to MongoDB query.

software.images[]._module.matchCount

Module update definition count query


software.images[]._software.softwareId

Distribution set Id


software.images[]._software.name

Distribution set name


software.images[]._software.artifacts

List of all artifacts with all software modules within this distribution set.


software.images[]._software.artifacts[].id

Id of file

Used for retrieval of file via Install API

software.images[]._software.artifacts[].type

Software module type key


software.images[]._software.artifacts[].byteSize

Size of file


software.images[]._software.artifacts[].filename

Name of file


software.images[]._software.artifacts[].sha256

SHA256 of file


software.images[].type

Template

Module update definition meta data imageType

software.images[].filename

Filename of artifact within software module of software module type "firmware"

Module update definition meta data imageFileName

software.images[].version

Distribution set version


software.images[].sha256

SHA256 of file "software.images[].filename"


_noImage

The _noImage section contains all modules of the Module update definitions without a distribution set reference.

Key

Source

Comment

software._noImage[]._module.name

Module update definition name


software._noImage[]._module.description

Module update definition description


software._noImage[]._module.match

Module update definition match query

"attribute." prefix is removed. Query is then transformed from a RSQL to MongoDB query.

software._noImage[]._module.matchCount

Module update definition count query


_systemArtifacts

The _systemArtifacts section contains all artifacts within software modules within distribution sets referenced as System distribution set (incl. scripts).

Key

Source

Comment

software._systemArtifacts[].softwareId

Distribution set Id


software._systemArtifacts[].name

Distribution set name


software._systemArtifacts

List of all artifacts with all software modules within this distribution set


software._systemArtifacts[].artifacts[].id

Id of file

Used for retrieval of file via Install API

software._systemArtifacts[].artifacts[].type

Software module type key


software._systemArtifacts[].artifacts[].byteSize

Size of file


software._systemArtifacts[].artifacts[].filename

Name of file


software._systemArtifacts[].artifacts[].sha256

SHA256 of file


Recipe file signature

Once a recipe is promoted from the DRAFT stage to WAITING_FOR_SIGNATURE, the recipe file becomes available for downloading and signing. To ensure the authenticity and integrity of the recipe file, signatures can be uploaded either through the Recipe UI or Management API. This allows systems or the system update app to verify the validity of the downloaded recipe file. When accessing the recipe file via the Install API, the corresponding signatures can also be downloaded. In scenarios where multiple signatures are available, it is the responsibility of the gateway to select the appropriate signature that it can confirm. This mechanism enhances the security and trustworthiness of the recipe file, ensuring that only authorized and verified updates are executed by the system.

The signature can be created using the Bosch IoT Rollouts Extension - Sign & Encrypt.