openapi: 3.0.3 info: contact: email: hello@eliona.io name: Eliona by IoTEC AG url: https://eliona.io description: The Eliona REST API enables unified access to the resources and data of an Eliona environment. license: name: MIT License title: Eliona REST API version: 2.7.0 externalDocs: description: Find out more about Eliona App SDK url: https://github.com/eliona-smart-building-assistant servers: - url: "https://{environment}.eliona.io/v2" variables: environment: default: name description: Environment name to define the server URL - url: "https://{environment}.eliona.io/api/v2" variables: environment: default: name description: Environment name to define the server URL - url: "https://{server}/v2" variables: server: default: somewhere:3000 description: Server of the API - url: "http://{server}/v2" variables: server: default: localhost:3000 description: Server of the API security: - ApiKeyAuth: [] - BearerAuth: [] tags: - description: Handle nodes externalDocs: url: https://www.eliona.io name: Nodes - description: Handle agents externalDocs: url: https://www.eliona.io name: Agents - description: Handle alarms externalDocs: url: https://www.eliona.io name: Alarms - description: Handle alarm rules externalDocs: url: https://www.eliona.io name: Alarm rules - description: Handle apps externalDocs: url: https://www.eliona.io name: Apps - description: Handle asset types externalDocs: url: https://www.eliona.io name: Asset types - description: Handle assets externalDocs: url: https://www.eliona.io name: Assets - description: Handle data aggregations externalDocs: url: https://www.eliona.io name: Aggregations - description: Handle asset data externalDocs: url: https://www.eliona.io name: Data - description: Handle calculation rules externalDocs: url: https://www.eliona.io name: Calculation rules - description: Handle dashboards externalDocs: url: https://www.eliona.io name: Dashboards - description: Handle widgets types for dashboards externalDocs: url: https://www.eliona.io name: Widgets types - description: Handle widgets for dashboards externalDocs: url: https://www.eliona.io name: Widgets - description: Communicate to peoples externalDocs: url: https://www.eliona.io name: Communication - description: User information externalDocs: url: https://www.eliona.io name: Users - description: Project information externalDocs: url: https://www.eliona.io name: Projects - description: Tag information externalDocs: url: https://www.eliona.io name: Tags - description: QR codes for frontend links externalDocs: url: https://www.eliona.io name: QR codes - description: API version externalDocs: url: https://www.eliona.io name: Version paths: /version: get: description: Gets information about the APIs version. operationId: getVersion responses: "200": content: application/json: schema: type: object description: Successfully returned the APIs version. security: [] summary: Version of the API tags: - Version /version/openapi.json: get: description: Gets specification for this API version as an openapi.json file. operationId: getOpenAPI responses: "200": content: application/json: {} description: Successfully returned the openapi.json file. security: [] summary: OpenAPI specification for this API version tags: - Version /apps/{app-name}: get: description: Gets information about an app. operationId: getAppByName parameters: - description: The name of the app example: weather in: path name: app-name required: true schema: type: string responses: "200": content: application/json: schema: $ref: '#/components/schemas/App' description: Successfully returned information about an app. summary: Information about an app tags: - Apps patch: description: Update properties of an app. operationId: patchAppByName parameters: - description: The name of the app example: weather in: path name: app-name required: true schema: type: string - description: "Marks that the app is now initialized and installed. Further\ \ request to get app information returns { \"registered\": true }" in: query name: registered required: false schema: type: boolean responses: "200": description: Successfully updated the app summary: Update an app tags: - Apps /apps/{app-name}/patches/{patch-name}: get: description: Gets information about a patch for an app. operationId: getPatchByName parameters: - description: The name of the app example: weather in: path name: app-name required: true schema: type: string - description: The name of the patch example: 2.0.0 in: path name: patch-name required: true schema: type: string responses: "200": content: application/json: schema: $ref: '#/components/schemas/Patch' description: Successfully returned information about a patch for an app summary: Information about a patch for an app tags: - Apps patch: description: Updates properties of a patch for an app. operationId: patchPatchByName parameters: - description: The name of the app example: weather in: path name: app-name required: true schema: type: string - description: The name of the patch example: 2.0.0 in: path name: patch-name required: true schema: type: string - description: "Marks that the patch is now applied. Further request to get\ \ patch information returns { \"applied\": true }" in: query name: apply required: false schema: type: boolean responses: "200": description: Successfully updated the patch for the app summary: Updates a patch tags: - Apps /asset-types: get: description: Returns a list of asset types operationId: getAssetTypes parameters: - description: "List of referenced data to load, insert or update. Each entry\ \ defines the full qualified name of the field to be expanded as follows\ \ 'ObjectName.fieldName'." explode: false in: query name: expansions schema: items: type: string nullable: true type: array style: form responses: "200": content: application/json: schema: items: $ref: '#/components/schemas/AssetType' type: array description: Successfully returned a list of asset types summary: List of asset types tags: - Asset types post: description: Create a new asset type. operationId: postAssetType parameters: - description: "List of referenced data to load, insert or update. Each entry\ \ defines the full qualified name of the field to be expanded as follows\ \ 'ObjectName.fieldName'." explode: false in: query name: expansions schema: items: type: string nullable: true type: array style: form requestBody: content: application/json: schema: $ref: '#/components/schemas/AssetType' required: true responses: "201": content: application/json: schema: $ref: '#/components/schemas/AssetType' description: Successfully created a new asset type "409": description: Asset type name already exists summary: Create an asset type tags: - Asset types put: description: Create a new asset type or update an asset type if already exists. Uses the unique asset type name for updating. operationId: putAssetType parameters: - description: "List of referenced data to load, insert or update. Each entry\ \ defines the full qualified name of the field to be expanded as follows\ \ 'ObjectName.fieldName'." explode: false in: query name: expansions schema: items: type: string nullable: true type: array style: form requestBody: content: application/json: schema: $ref: '#/components/schemas/AssetType' required: true responses: "200": content: application/json: schema: $ref: '#/components/schemas/AssetType' description: Successfully created a new or updated an existing asset type summary: Create or update an asset type tags: - Asset types /asset-types/{asset-type-name}: delete: description: Deletes an asset type and the attributes for this asset type. operationId: deleteAssetTypeByName parameters: - description: The name of the asset type example: weather_location in: path name: asset-type-name required: true schema: type: string responses: "204": description: Successfully deleted the asset type "404": description: Asset type with name not found summary: Delete an asset type tags: - Asset types get: description: Gets information about an asset type. operationId: getAssetTypeByName parameters: - description: The name of the asset type example: weather_location in: path name: asset-type-name required: true schema: type: string - description: "List of referenced data to load, insert or update. Each entry\ \ defines the full qualified name of the field to be expanded as follows\ \ 'ObjectName.fieldName'." explode: false in: query name: expansions schema: items: type: string nullable: true type: array style: form responses: "200": content: application/json: schema: $ref: '#/components/schemas/AssetType' description: Successfully returned an asset type by name. "404": description: Asset type with name not found summary: Information about an asset type tags: - Asset types put: description: Update an asset type. operationId: putAssetTypeByName parameters: - description: The name of the asset type example: weather_location in: path name: asset-type-name required: true schema: type: string - description: "List of referenced data to load, insert or update. Each entry\ \ defines the full qualified name of the field to be expanded as follows\ \ 'ObjectName.fieldName'." explode: false in: query name: expansions schema: items: type: string nullable: true type: array style: form requestBody: content: application/json: schema: $ref: '#/components/schemas/AssetType' required: true responses: "200": content: application/json: schema: $ref: '#/components/schemas/AssetType' description: Successfully updated an existing asset type "404": description: Asset type with name not found summary: Update an asset type tags: - Asset types /asset-types/{asset-type-name}/attributes: post: description: Create a new asset type attribute. operationId: postAssetTypeAttribute parameters: - description: The name of the asset type example: weather_location in: path name: asset-type-name required: true schema: type: string requestBody: content: application/json: schema: $ref: '#/components/schemas/AssetTypeAttribute' required: true responses: "201": content: application/json: schema: $ref: '#/components/schemas/AssetTypeAttribute' description: Successfully created a new asset type attribute "409": description: "Combination of asset type name, subtype and attribute name\ \ already exists" summary: Create asset type attribute tags: - Asset types put: description: "Create a new asset type attribute or update an asset type attribute\ \ if already exists. Uses the unique combination of asset type name, subtype\ \ and attribute name for updating." operationId: putAssetTypeAttribute parameters: - description: The name of the asset type example: weather_location in: path name: asset-type-name required: true schema: type: string requestBody: content: application/json: schema: $ref: '#/components/schemas/AssetTypeAttribute' required: true responses: "200": content: application/json: schema: $ref: '#/components/schemas/AssetTypeAttribute' description: Successfully created a new or updated an existing asset type attribute summary: Create or update an asset type attribute tags: - Asset types /assets: get: description: Gets a list of assets operationId: getAssets parameters: - description: Filter the name of the asset type example: weather_location in: query name: assetTypeName required: false schema: type: string - description: Filter for a specific project in: query name: projectId required: false schema: nullable: true type: string - description: "List of referenced data to load, insert or update. Each entry\ \ defines the full qualified name of the field to be expanded as follows\ \ 'ObjectName.fieldName'." explode: false in: query name: expansions schema: items: type: string nullable: true type: array style: form responses: "200": content: application/json: schema: items: $ref: '#/components/schemas/Asset' type: array description: Successfully returned the list of assets summary: Information about assets tags: - Assets post: description: | This process involves creating an asset. The determination if the asset already exists and cannot be created is done by the 'identifyBy' parameter, which specifies the field used for identification. operationId: postAsset parameters: - description: | Serves the field name send in the request body as a unique identifier for the asset, essential for operations like updates or deletions. Please refer to the Asset schema definition for further information about this fields. In cases where this parameter isn't defined, all field names are used in the order defined. So if there is no 'resourceId' present in the request body, the 'deviceId' is used and when there is also no deviceId present the 'id' field (assetId) is used. example: resourceId in: query name: identifyBy required: false schema: enum: - resourceId - deviceId - id - gai-projId type: string - description: "List of referenced data to load, insert or update. Each entry\ \ defines the full qualified name of the field to be expanded as follows\ \ 'ObjectName.fieldName'." explode: false in: query name: expansions schema: items: type: string nullable: true type: array style: form requestBody: content: application/json: schema: $ref: '#/components/schemas/Asset' required: true responses: "201": content: application/json: schema: $ref: '#/components/schemas/Asset' description: | Successfully created a new asset "422": content: application/json: schema: $ref: '#/components/schemas/ErrorMessage422' description: | Issues arisen during the creation or updating process. summary: Create an asset tags: - Assets put: description: | This process involves creating or updating an asset. The choice between updating or creating is determined by the 'identifyBy' parameter, which specifies the field used for identification. operationId: putAsset parameters: - description: | Serves the field name send in the request body as a unique identifier for the asset, essential for operations like updates or deletions. Please refer to the Asset schema definition for further information about this fields. In cases where this parameter isn't defined, all field names are used in the order defined. So if there is no 'resourceId' present in the request body, the 'deviceId' is used and when there is also no deviceId present the 'id' field (assetId) is used. example: resourceId in: query name: identifyBy required: false schema: enum: - resourceId - deviceId - id - gai-projId type: string - description: "List of referenced data to load, insert or update. Each entry\ \ defines the full qualified name of the field to be expanded as follows\ \ 'ObjectName.fieldName'." explode: false in: query name: expansions schema: items: type: string nullable: true type: array style: form requestBody: content: application/json: schema: $ref: '#/components/schemas/Asset' required: true responses: "200": content: application/json: schema: $ref: '#/components/schemas/Asset' description: Successfully created a new or updated an existing asset "422": content: application/json: schema: $ref: '#/components/schemas/ErrorMessage422' description: Issues arisen during the creation or updating process. summary: Create or update an asset tags: - Assets /assets/{asset-id}: delete: description: Deletes an asset operationId: deleteAssetById parameters: - description: The id of the asset example: 4711 in: path name: asset-id required: true schema: type: integer responses: "204": description: Successfully deleted the asset "404": description: Asset type with id not found summary: Delete an asset tags: - Assets get: description: Gets information about an asset. operationId: getAssetById parameters: - description: The id of the asset example: 4711 in: path name: asset-id required: true schema: type: integer - description: "List of referenced data to load, insert or update. Each entry\ \ defines the full qualified name of the field to be expanded as follows\ \ 'ObjectName.fieldName'." explode: false in: query name: expansions schema: items: type: string nullable: true type: array style: form responses: "200": content: application/json: schema: $ref: '#/components/schemas/Asset' description: Successfully returned the asset by id. "404": description: Asset with id not found summary: Information about an asset tags: - Assets put: deprecated: true description: | Deprecated: use the 'PUT /asset' method and optionally the 'identifyBy' parameter to update a specific asset. operationId: putAssetById parameters: - description: The id of the asset example: 4711 in: path name: asset-id required: true schema: type: integer - description: "List of referenced data to load, insert or update. Each entry\ \ defines the full qualified name of the field to be expanded as follows\ \ 'ObjectName.fieldName'." explode: false in: query name: expansions schema: items: type: string nullable: true type: array style: form requestBody: content: application/json: schema: $ref: '#/components/schemas/Asset' required: true responses: "200": content: application/json: schema: $ref: '#/components/schemas/Asset' description: Successfully updated an existing asset "404": description: Asset with id not found summary: Update an asset tags: - Assets /assets-bulk: delete: description: Delete multiple assets based on the identifiers defined by the 'identifyBy' parameter. operationId: deleteBulkAssets parameters: - description: | Serves the field name send in the request body as a unique identifier for the asset, essential for operations like updates or deletions. Please refer to the Asset schema definition for further information about this fields. In cases where this parameter isn't defined, all field names are used in the order defined. So if there is no 'resourceId' present in the request body, the 'deviceId' is used and when there is also no deviceId present the 'id' field (assetId) is used. example: resourceId in: query name: identifyBy required: false schema: enum: - resourceId - deviceId - id - gai-projId type: string - description: "List of referenced data to load, insert or update. Each entry\ \ defines the full qualified name of the field to be expanded as follows\ \ 'ObjectName.fieldName'." explode: false in: query name: expansions schema: items: type: string nullable: true type: array style: form requestBody: content: application/json: schema: items: $ref: '#/components/schemas/Identifier' type: array required: true responses: "204": description: The complete list of assets have been successfully deleted. "422": content: application/json: schema: $ref: '#/components/schemas/ErrorMessage422' description: "Issues may arise during the deletion process. If at least\ \ one asset encounters an error and cannot be deleted or is not found,\ \ no changes will be applied to any of the assets in the list." summary: Delete a list of assets tags: - Assets post: description: "This process involves creating the assets in the list. The determination\ \ if the asset already exists and cannot be created is done by the 'identifyBy'\ \ parameter, which specifies the field used for identification." operationId: postBulkAssets parameters: - description: | Serves the field name send in the request body as a unique identifier for the asset, essential for operations like updates or deletions. Please refer to the Asset schema definition for further information about this fields. In cases where this parameter isn't defined, all field names are used in the order defined. So if there is no 'resourceId' present in the request body, the 'deviceId' is used and when there is also no deviceId present the 'id' field (assetId) is used. example: resourceId in: query name: identifyBy required: false schema: enum: - resourceId - deviceId - id - gai-projId type: string - description: "List of referenced data to load, insert or update. Each entry\ \ defines the full qualified name of the field to be expanded as follows\ \ 'ObjectName.fieldName'." explode: false in: query name: expansions schema: items: type: string nullable: true type: array style: form requestBody: content: application/json: schema: items: $ref: '#/components/schemas/Asset' type: array required: true responses: "201": content: application/json: schema: items: $ref: '#/components/schemas/Asset' type: array description: "The complete list of assets has been successfully created.\ \ The content displays the list of assets in the same order as the initial\ \ request, along with some generated or default values (e.g. timestamps,\ \ IDs)." "422": content: application/json: schema: $ref: '#/components/schemas/ErrorMessage422' description: "Issues may arise during the creation process when handling\ \ the assets in the list. In such cases, if at least one asset encounters\ \ an error and cannot be created, no changes will be applied to any of\ \ the assets in the list." summary: Create a list of assets tags: - Assets put: description: "This process involves creating or updating assets. The choice\ \ between updating or creating an asset is determined by the 'identifyBy'\ \ parameter, which specifies the field used for identification." operationId: putBulkAssets parameters: - description: | Serves the field name send in the request body as a unique identifier for the asset, essential for operations like updates or deletions. Please refer to the Asset schema definition for further information about this fields. In cases where this parameter isn't defined, all field names are used in the order defined. So if there is no 'resourceId' present in the request body, the 'deviceId' is used and when there is also no deviceId present the 'id' field (assetId) is used. example: resourceId in: query name: identifyBy required: false schema: enum: - resourceId - deviceId - id - gai-projId type: string - description: "List of referenced data to load, insert or update. Each entry\ \ defines the full qualified name of the field to be expanded as follows\ \ 'ObjectName.fieldName'." explode: false in: query name: expansions schema: items: type: string nullable: true type: array style: form requestBody: content: application/json: schema: items: $ref: '#/components/schemas/Asset' type: array required: true responses: "200": content: application/json: schema: items: $ref: '#/components/schemas/Asset' type: array description: "The complete list of assets has been successfully created\ \ or updated. The content displays the list of assets in the same order\ \ as the initial request, along with some generated or default values\ \ (e.g. timestamps, IDs)." "422": content: application/json: schema: $ref: '#/components/schemas/ErrorMessage422' description: "Issues may arise during the creation or updating process when\ \ handling the assets in the list. In such cases, if at least one asset\ \ encounters an error and cannot be created or updated, no changes will\ \ be applied to any of the assets in the list." summary: Create or update a list of assets tags: - Assets /assets-bulk/dry-run: delete: description: Simulates the process of deleting multiple assets via the 'DELETE /assets-bulk' without actually persisting any changes. operationId: dryRunDeleteBulkAssets parameters: - description: | Serves the field name send in the request body as a unique identifier for the asset, essential for operations like updates or deletions. Please refer to the Asset schema definition for further information about this fields. In cases where this parameter isn't defined, all field names are used in the order defined. So if there is no 'resourceId' present in the request body, the 'deviceId' is used and when there is also no deviceId present the 'id' field (assetId) is used. example: resourceId in: query name: identifyBy required: false schema: enum: - resourceId - deviceId - id - gai-projId type: string - description: "List of referenced data to load, insert or update. Each entry\ \ defines the full qualified name of the field to be expanded as follows\ \ 'ObjectName.fieldName'." explode: false in: query name: expansions schema: items: type: string nullable: true type: array style: form requestBody: content: application/json: schema: items: $ref: '#/components/schemas/Identifier' type: array required: true responses: "200": content: application/json: schema: items: $ref: '#/components/schemas/AssetDryRun' type: array description: The list of expected results if the request is actually performed. The content displays the list of expected results in the same order as the initial request. summary: Dry-run for deleting a list of assets tags: - Assets post: description: Simulates the process of creating assets via the 'POST /assets-bulk' endpoint without actually persisting any changes. operationId: dryRunPostBulkAssets parameters: - description: | Serves the field name send in the request body as a unique identifier for the asset, essential for operations like updates or deletions. Please refer to the Asset schema definition for further information about this fields. In cases where this parameter isn't defined, all field names are used in the order defined. So if there is no 'resourceId' present in the request body, the 'deviceId' is used and when there is also no deviceId present the 'id' field (assetId) is used. example: resourceId in: query name: identifyBy required: false schema: enum: - resourceId - deviceId - id - gai-projId type: string - description: "List of referenced data to load, insert or update. Each entry\ \ defines the full qualified name of the field to be expanded as follows\ \ 'ObjectName.fieldName'." explode: false in: query name: expansions schema: items: type: string nullable: true type: array style: form requestBody: content: application/json: schema: items: $ref: '#/components/schemas/Asset' type: array required: true responses: "200": content: application/json: schema: items: $ref: '#/components/schemas/AssetDryRun' type: array description: The list of expected results if the request is actually performed. The content displays the list of expected results in the same order as the initial request. summary: Dry-run for creating a list of assets tags: - Assets put: description: Simulates the process of creating or updating assets via the 'PUT /assets-bulk' endpoint without actually persisting any changes. operationId: dryRunPutBulkAssets parameters: - description: | Serves the field name send in the request body as a unique identifier for the asset, essential for operations like updates or deletions. Please refer to the Asset schema definition for further information about this fields. In cases where this parameter isn't defined, all field names are used in the order defined. So if there is no 'resourceId' present in the request body, the 'deviceId' is used and when there is also no deviceId present the 'id' field (assetId) is used. example: resourceId in: query name: identifyBy required: false schema: enum: - resourceId - deviceId - id - gai-projId type: string - description: "List of referenced data to load, insert or update. Each entry\ \ defines the full qualified name of the field to be expanded as follows\ \ 'ObjectName.fieldName'." explode: false in: query name: expansions schema: items: type: string nullable: true type: array style: form requestBody: content: application/json: schema: items: $ref: '#/components/schemas/Asset' type: array required: true responses: "200": content: application/json: schema: items: $ref: '#/components/schemas/AssetDryRun' type: array description: The list of expected results if the request is actually performed. The content displays the list of expected results in the same order as the initial request. summary: Dry-run for creating or updating a list of assets tags: - Assets /asset-listener: get: description: "Open a WebSocket connection to get informed when asset is created,\ \ updated or deleted." operationId: listenAsset parameters: - description: "List of referenced data to load, insert or update. Each entry\ \ defines the full qualified name of the field to be expanded as follows\ \ 'ObjectName.fieldName'." explode: false in: query name: expansions schema: items: type: string nullable: true type: array style: form responses: "200": content: application/json: schema: $ref: '#/components/schemas/AssetListen' description: Successfully opened a connection to asset WebSocket summary: WebSocket connection for asset changes tags: - Assets /attribute-display: get: description: Gets information about how attributes for specific assets are displayed in frontend. operationId: getAttributeDisplay responses: "200": content: application/json: schema: $ref: '#/components/schemas/AttributeDisplay' description: Successfully returned display information for attributes summary: How attributes are displayed tags: - Assets put: description: "Create or update how attributes are displayed in frontend. Uses\ \ the unique combination of asset id, subtype and attribute name for updating." operationId: putAttributeDisplay requestBody: content: application/json: schema: $ref: '#/components/schemas/AttributeDisplay' required: true responses: "200": content: application/json: schema: $ref: '#/components/schemas/AttributeDisplay' description: Successfully updated or created display information for attributes summary: Create or update how attributes are displayed tags: - Assets /data: get: description: Gets information about data for assets. operationId: getData parameters: - description: Filter for a specific asset id example: 4711 in: query name: assetId required: false schema: type: integer - description: Filter for a specific parent asset id example: 4711 in: query name: parentAssetId required: false schema: type: integer - description: Filter for a specific type of asset data example: input in: query name: dataSubtype required: false schema: enum: - input - info - status - output - property type: string - description: Filter the name of the asset type example: weather_location in: query name: assetTypeName required: false schema: type: string responses: "200": content: application/json: schema: items: $ref: '#/components/schemas/Data' type: array description: Successfully returned data for assets summary: Gets all data tags: - Data put: description: Create new asset data or update data if already exists. Uses the unique combination of asset id and subtype for updating. operationId: putData parameters: - description: Executes the operation directly without using other services. example: true in: query name: directMode required: false schema: enum: - "true" - "false" type: string requestBody: content: application/json: schema: $ref: '#/components/schemas/Data' required: true responses: "201": description: Successfully created a new or updated existing asset data summary: Create or update asset data tags: - Data /data-bulk: put: description: Create multiple asset data or update data if already exists. Uses the unique combination of asset id and subtype for updating. operationId: putBulkData parameters: - description: Executes the operation directly without using other services. example: true in: query name: directMode required: false schema: enum: - "true" - "false" type: string requestBody: content: application/json: schema: items: $ref: '#/components/schemas/Data' type: array required: true responses: "201": description: Successfully created multiple asset data summary: Create or update multiple asset data tags: - Data /data-trends: get: description: Gets trend information about historical data for assets. operationId: getDataTrends parameters: - description: Filter by lower date time (RFC3339) limit inclusive example: 2020-01-01T09:00:00.000Z in: query name: fromDate required: false schema: type: string - description: Filter by upper date time (RFC3339) limit exclusive example: 2021-12-31T23:00:00.000Z in: query name: toDate required: false schema: type: string - description: Filter for a specific asset id example: 4711 in: query name: assetId required: false schema: type: integer - description: Filter for a specific type of asset data example: input in: query name: dataSubtype required: false schema: enum: - input - info - status - output - property type: string - description: Filter the name of the asset type example: weather_location in: query name: assetTypeName required: false schema: type: string responses: "200": content: application/json: schema: items: $ref: '#/components/schemas/Data' type: array description: Successfully returned historical data for assets summary: Get trend of historical data tags: - Data /data-listener: get: description: Open a WebSocket connection to get informed when new asset data is written or anything changes. operationId: listenData parameters: - description: Filter for a specific asset id example: 4711 in: query name: assetId required: false schema: type: integer - description: Filter for a specific type of asset data example: input in: query name: dataSubtype required: false schema: enum: - input - info - status - output - property type: string responses: "200": content: application/json: schema: $ref: '#/components/schemas/DataListen' description: Successfully opened a connection to asset data WebSocket summary: WebSocket connection for asset data changes tags: - Data /data-aggregated: get: description: Gets aggregated data sets which combines a set of data points for a defined periodical raster operationId: getDataAggregated parameters: - description: Filter by lower date time (RFC3339) limit inclusive example: 2020-01-01T09:00:00.000Z in: query name: fromDate required: false schema: type: string - description: Filter by upper date time (RFC3339) limit exclusive example: 2021-12-31T23:00:00.000Z in: query name: toDate required: false schema: type: string - description: Filter for a specific asset id example: 4711 in: query name: assetId required: false schema: type: integer - description: Filter for a specific type of asset data example: input in: query name: dataSubtype required: false schema: enum: - input - info - status - output - property type: string - description: Filter the name of the asset type example: weather_location in: query name: assetTypeName required: false schema: type: string - description: Filter for a specific aggregation id example: "0815" in: query name: aggregationId required: false schema: type: integer - description: Aggregation calculation interval example: DAY in: query name: aggregationRaster required: false schema: enum: - S1 - S2 - S3 - S4 - S5 - S6 - S10 - S12 - S15 - S20 - S30 - M1 - M2 - M3 - M4 - M5 - M6 - M10 - M12 - M15 - M20 - M30 - H1 - H2 - H3 - H4 - H6 - H8 - H12 - DAY - WEEK - MONTH - QUARTER - YEAR - DECADE - CENTURY type: string responses: "200": content: application/json: schema: items: $ref: '#/components/schemas/DataAggregated' type: array description: Successfully returned aggregated data sets summary: Get aggregated data tags: - Data /aggregations: get: description: Gets a list of aggregations operationId: getAggregations responses: "200": content: application/json: schema: items: $ref: '#/components/schemas/Aggregation' type: array description: Successfully returned the list of aggregations summary: Information about aggregations tags: - Aggregations post: description: Creates a new aggregation. operationId: postAggregation requestBody: content: application/json: schema: $ref: '#/components/schemas/Aggregation' required: true responses: "201": content: application/json: schema: $ref: '#/components/schemas/Aggregation' description: Successfully created an aggregation "409": description: "Combination of asset id, subtype, attribute and raster already\ \ exists" summary: Creates an aggregation tags: - Aggregations put: description: "Creates an aggregation or updates if already exists. Uses the\ \ unique combination of asset id, subtype, attribute and raster for updating." operationId: putAggregation requestBody: content: application/json: schema: $ref: '#/components/schemas/Aggregation' required: true responses: "200": content: application/json: schema: $ref: '#/components/schemas/Aggregation' description: Successfully created or updated an aggregation summary: Creates or updates an aggregation tags: - Aggregations /aggregations/{aggregation-id}: delete: description: Deletes an aggregation by the given id. operationId: deleteAggregationById parameters: - description: The id of the aggregation example: 4711 in: path name: aggregation-id required: true schema: type: integer responses: "204": description: Successfully deleted the aggregation by id. "404": description: Aggregation with id not found summary: Delete an aggregation tags: - Aggregations get: description: Gets information about an aggregation by the given id. operationId: getAggregationById parameters: - description: The id of the aggregation example: 4711 in: path name: aggregation-id required: true schema: type: integer responses: "200": content: application/json: schema: $ref: '#/components/schemas/Aggregation' description: Successfully returned an aggregation by id. "404": description: Aggregation with id not found summary: Information about an aggregation tags: - Aggregations put: description: Updates an aggregation. operationId: putAggregationById parameters: - description: The id of the aggregation example: 4711 in: path name: aggregation-id required: true schema: type: integer requestBody: content: application/json: schema: $ref: '#/components/schemas/Aggregation' required: true responses: "200": content: application/json: schema: $ref: '#/components/schemas/Aggregation' description: Successfully updated an aggregation "404": description: Aggregation with id not found summary: Updates an aggregation tags: - Aggregations /widget-types: get: description: Returns a list of widget types operationId: getWidgetTypes parameters: - description: "List of referenced data to load, insert or update. Each entry\ \ defines the full qualified name of the field to be expanded as follows\ \ 'ObjectName.fieldName'." explode: false in: query name: expansions schema: items: type: string nullable: true type: array style: form responses: "200": content: application/json: schema: items: $ref: '#/components/schemas/WidgetType' type: array description: Successfully returned a list of widget types summary: List of widget types tags: - Widgets types post: description: Create a new widget type. operationId: postWidgetType parameters: - description: "List of referenced data to load, insert or update. Each entry\ \ defines the full qualified name of the field to be expanded as follows\ \ 'ObjectName.fieldName'." explode: false in: query name: expansions schema: items: type: string nullable: true type: array style: form requestBody: content: application/json: schema: $ref: '#/components/schemas/WidgetType' required: true responses: "201": content: application/json: schema: $ref: '#/components/schemas/WidgetType' description: Successfully created widget type "409": description: Widget type name already exists summary: Create a widget type tags: - Widgets types put: description: Create a new widget type or update it if already exists. Uses the unique widget type name for updating. operationId: putWidgetType parameters: - description: "List of referenced data to load, insert or update. Each entry\ \ defines the full qualified name of the field to be expanded as follows\ \ 'ObjectName.fieldName'." explode: false in: query name: expansions schema: items: type: string nullable: true type: array style: form requestBody: content: application/json: schema: $ref: '#/components/schemas/WidgetType' required: true responses: "200": content: application/json: schema: $ref: '#/components/schemas/WidgetType' description: Successfully added or updated widget type summary: Create or update a widget type tags: - Widgets types /widget-types/{widget-type-name}: delete: description: Deletes a widget type and the elements for this widget type. operationId: deleteWidgetTypeByName parameters: - description: The name of the widget type example: weather in: path name: widget-type-name required: true schema: type: string responses: "204": description: Successfully deleted the widget type "404": description: Widget type with name not found summary: Delete a widget type tags: - Widgets types get: description: Gets information about a widget type. operationId: getWidgetTypeByName parameters: - description: The name of the widget type example: weather in: path name: widget-type-name required: true schema: type: string - description: "List of referenced data to load, insert or update. Each entry\ \ defines the full qualified name of the field to be expanded as follows\ \ 'ObjectName.fieldName'." explode: false in: query name: expansions schema: items: type: string nullable: true type: array style: form responses: "200": content: application/json: schema: $ref: '#/components/schemas/WidgetType' description: Successfully returned a widget type by name. "404": description: Widget type with name not found summary: Information about a widget type tags: - Widgets types put: description: Update a widget type. operationId: putWidgetTypeByName parameters: - description: The name of the widget type example: weather in: path name: widget-type-name required: true schema: type: string - description: "List of referenced data to load, insert or update. Each entry\ \ defines the full qualified name of the field to be expanded as follows\ \ 'ObjectName.fieldName'." explode: false in: query name: expansions schema: items: type: string nullable: true type: array style: form requestBody: content: application/json: schema: $ref: '#/components/schemas/WidgetType' required: true responses: "200": content: application/json: schema: $ref: '#/components/schemas/WidgetType' description: Successfully updated widget type "404": description: Widget type with name not found summary: Update a widget type tags: - Widgets types /dashboards: get: description: Gets a list of dashboards operationId: getDashboards parameters: - description: "List of referenced data to load, insert or update. Each entry\ \ defines the full qualified name of the field to be expanded as follows\ \ 'ObjectName.fieldName'." explode: false in: query name: expansions schema: items: type: string nullable: true type: array style: form responses: "200": content: application/json: schema: items: $ref: '#/components/schemas/Dashboard' type: array description: Successfully returned the list of dashboards summary: Information about dashboards tags: - Dashboards post: description: Create a new dashboard for frontend operationId: postDashboard parameters: - description: "List of referenced data to load, insert or update. Each entry\ \ defines the full qualified name of the field to be expanded as follows\ \ 'ObjectName.fieldName'." explode: false in: query name: expansions schema: items: type: string nullable: true type: array style: form requestBody: content: application/json: schema: $ref: '#/components/schemas/Dashboard' required: true responses: "201": content: application/json: schema: $ref: '#/components/schemas/Dashboard' description: Successfully added a new Dashboard summary: Creates a new dashboard tags: - Dashboards /dashboards/{dashboard-id}: get: description: Gets information about a dashboard. operationId: getDashboardById parameters: - description: The id of the dashboard example: 4711 in: path name: dashboard-id required: true schema: type: integer - description: "List of referenced data to load, insert or update. Each entry\ \ defines the full qualified name of the field to be expanded as follows\ \ 'ObjectName.fieldName'." explode: false in: query name: expansions schema: items: type: string nullable: true type: array style: form responses: "200": content: application/json: schema: $ref: '#/components/schemas/Dashboard' description: Successfully returned the the dashboard "404": description: Dashboard with id not found summary: Information about a dashboard tags: - Dashboards /dashboards/{dashboard-id}/widgets: get: description: Gets information about widgets on a dashboard. operationId: getDashboardWidgets parameters: - description: The id of the dashboard example: 4711 in: path name: dashboard-id required: true schema: type: integer - description: "List of referenced data to load, insert or update. Each entry\ \ defines the full qualified name of the field to be expanded as follows\ \ 'ObjectName.fieldName'." explode: false in: query name: expansions schema: items: type: string nullable: true type: array style: form responses: "200": content: application/json: schema: $ref: '#/components/schemas/Widget' description: Successfully returned the widgets for the dashboard "404": description: Dashboard with id not found summary: Information about widgets on dashboard tags: - Widgets post: description: Create a new widget and add this to a dashboard operationId: postDashboardWidget parameters: - description: The id of the dashboard example: 4711 in: path name: dashboard-id required: true schema: type: integer - description: "List of referenced data to load, insert or update. Each entry\ \ defines the full qualified name of the field to be expanded as follows\ \ 'ObjectName.fieldName'." explode: false in: query name: expansions schema: items: type: string nullable: true type: array style: form requestBody: content: application/json: schema: $ref: '#/components/schemas/Widget' required: true responses: "201": description: Successfully added widget "404": description: Dashboard with id not found summary: Adds widget to dashboard tags: - Widgets /alarm-rules: get: description: Gets information about alarm rules. operationId: getAlarmRules parameters: - description: List of alarm rule ids for filtering explode: false in: query name: alarmRuleIds required: false schema: items: type: integer nullable: true type: array style: form - description: Filter for a specific asset id example: 4711 in: query name: assetId required: false schema: type: integer - description: "List of referenced data to load, insert or update. Each entry\ \ defines the full qualified name of the field to be expanded as follows\ \ 'ObjectName.fieldName'." explode: false in: query name: expansions schema: items: type: string nullable: true type: array style: form responses: "200": content: application/json: schema: items: $ref: '#/components/schemas/AlarmRule' type: array description: Successfully returned a list of alarm rules summary: Information about alarm rules tags: - Alarm rules post: description: Create a new alarm rule. operationId: postAlarmRule requestBody: content: application/json: schema: $ref: '#/components/schemas/AlarmRule' required: true responses: "201": content: application/json: schema: $ref: '#/components/schemas/AlarmRule' description: Successfully created a new alarm rule summary: Create an alarm rule tags: - Alarm rules put: deprecated: true description: "Deprecated - Use POST /alarm-rules to create and PUT /alarm-rules/{alarm-rule-id}\ \ to update" operationId: putAlarmRule requestBody: content: application/json: schema: $ref: '#/components/schemas/AlarmRule' required: true responses: "200": content: application/json: schema: $ref: '#/components/schemas/AlarmRule' description: Successfully created a new or updated an existing alarm rule summary: Create or update an alarm rule tags: - Alarm rules /alarm-rules/{alarm-rule-id}: delete: description: Deletes an alarm rule. operationId: deleteAlarmRuleById parameters: - description: The id of the alarm rule example: 4711 in: path name: alarm-rule-id required: true schema: type: integer responses: "204": description: Successfully deleted the alarm rule "404": description: Alarm rule with id not found summary: Delete an alarm rule tags: - Alarm rules get: description: Gets information about an alarm rule. operationId: getAlarmRuleById parameters: - description: The id of the alarm rule example: 4711 in: path name: alarm-rule-id required: true schema: type: integer - description: "List of referenced data to load, insert or update. Each entry\ \ defines the full qualified name of the field to be expanded as follows\ \ 'ObjectName.fieldName'." explode: false in: query name: expansions schema: items: type: string nullable: true type: array style: form responses: "200": content: application/json: schema: $ref: '#/components/schemas/AlarmRule' description: Successfully returned an alarm rule "404": description: Alarm rule with id not found summary: Information about an alarm rule tags: - Alarm rules put: description: Update an alarm rule. operationId: putAlarmRuleById parameters: - description: The id of the alarm rule example: 4711 in: path name: alarm-rule-id required: true schema: type: integer requestBody: content: application/json: schema: $ref: '#/components/schemas/AlarmRule' required: true responses: "200": content: application/json: schema: $ref: '#/components/schemas/AlarmRule' description: Successfully updated an existing alarm rule "404": description: Alarm rule with id not found summary: Update an alarm rule tags: - Alarm rules /calculation-rules: get: description: Gets information about calculation rules. operationId: getCalculationRules parameters: - description: List of calculation rule ids for filtering explode: false in: query name: calculationRuleIds required: false schema: items: type: integer nullable: true type: array style: form responses: "200": content: application/json: schema: items: $ref: '#/components/schemas/CalculationRule' type: array description: Successfully returned a list of calculation rules summary: Information about calculation rules tags: - Calculation rules put: description: Creates a new or updates an existing calculation rule. operationId: putCalculationRule requestBody: content: application/json: schema: $ref: '#/components/schemas/CalculationRule' required: true responses: "200": content: application/json: schema: $ref: '#/components/schemas/CalculationRule' description: Successfully created or updated a calculation rule summary: Creates or updates a calculation rule tags: - Calculation rules /calculation-rules/{calculation-rule-id}: delete: description: Deletes a calculation rule. operationId: deleteCalculationRuleById parameters: - description: The id of the calculation rule example: 4711 in: path name: calculation-rule-id required: true schema: type: integer responses: "204": description: Successfully deleted the calculation rule "404": description: Calculation rule with id not found summary: Delete a calculation rule tags: - Calculation rules get: description: Gets information about a calculation rule. operationId: getCalculationRuleById parameters: - description: The id of the calculation rule example: 4711 in: path name: calculation-rule-id required: true schema: type: integer responses: "200": content: application/json: schema: $ref: '#/components/schemas/CalculationRule' description: Successfully returned ancalculation rule "404": description: Calculation rule with id not found summary: Information about a calculation rules rule tags: - Calculation rules put: description: Update a calculation rule. operationId: putCalculationRuleById parameters: - description: The id of the calculation rule example: 4711 in: path name: calculation-rule-id required: true schema: type: integer requestBody: content: application/json: schema: $ref: '#/components/schemas/CalculationRule' required: true responses: "200": content: application/json: schema: $ref: '#/components/schemas/CalculationRule' description: Successfully updated an existing calculation rule "404": description: Calculation rule with id not found summary: Update a calculation rule tags: - Calculation rules /alarms: get: description: Gets information about alarms operationId: getAlarms parameters: - description: Filter for a specific project in: query name: projectId required: false schema: nullable: true type: string - description: "List of referenced data to load, insert or update. Each entry\ \ defines the full qualified name of the field to be expanded as follows\ \ 'ObjectName.fieldName'." explode: false in: query name: expansions schema: items: type: string nullable: true type: array style: form responses: "200": content: application/json: schema: items: $ref: '#/components/schemas/Alarm' type: array description: Successfully returned a list of alarms summary: Information about alarms tags: - Alarms /alarms/{alarm-rule-id}: get: description: Gets information about alarm. operationId: getAlarmById parameters: - description: The id of the alarm rule example: 4711 in: path name: alarm-rule-id required: true schema: type: integer - description: "List of referenced data to load, insert or update. Each entry\ \ defines the full qualified name of the field to be expanded as follows\ \ 'ObjectName.fieldName'." explode: false in: query name: expansions schema: items: type: string nullable: true type: array style: form responses: "200": content: application/json: schema: $ref: '#/components/schemas/Alarm' description: Successfully returned an alarm "404": description: Alarm with id not found summary: Information about alarm tags: - Alarms patch: description: Update properties of alarm for given id. operationId: patchAlarmById parameters: - description: The id of the alarm rule example: 4711 in: path name: alarm-rule-id required: true schema: type: integer - description: Marks the alarm as acknowledged or not acknowledged by setting the acknowledge timestamp to now or to null. in: query name: acknowledged required: true schema: type: boolean - description: Sets the text for acknowledgement if acknowledged is set to true in: query name: acknowledgeText required: false schema: type: string responses: "200": description: Successfully updated the alarm summary: Update alarm tags: - Alarms /alarms-history: get: description: "Gets information about alarms over the entire time. This includes\ \ current alarms and alarms, which are already processed." operationId: getAlarmsHistory parameters: - description: Filter for a specific project in: query name: projectId required: false schema: nullable: true type: string - description: "List of referenced data to load, insert or update. Each entry\ \ defines the full qualified name of the field to be expanded as follows\ \ 'ObjectName.fieldName'." explode: false in: query name: expansions schema: items: type: string nullable: true type: array style: form responses: "200": content: application/json: schema: items: $ref: '#/components/schemas/Alarm' type: array description: Successfully returned a list of alarms summary: Information about alarms history tags: - Alarms /alarms-history/{alarm-rule-id}: get: description: Gets information about alarm over the entire time. This includes current alarm and history. operationId: getAlarmHistoryById parameters: - description: The id of the alarm rule example: 4711 in: path name: alarm-rule-id required: true schema: type: integer - description: "List of referenced data to load, insert or update. Each entry\ \ defines the full qualified name of the field to be expanded as follows\ \ 'ObjectName.fieldName'." explode: false in: query name: expansions schema: items: type: string nullable: true type: array style: form responses: "200": content: application/json: schema: items: $ref: '#/components/schemas/Alarm' type: array description: Successfully returned a list of alarms summary: Information about alarm history tags: - Alarms /alarms-highest: get: description: Gets information about an alarms with the highest priority for each asset. operationId: getHighestAlarms parameters: - description: Filter for a specific project in: query name: projectId required: false schema: nullable: true type: string - description: "List of referenced data to load, insert or update. Each entry\ \ defines the full qualified name of the field to be expanded as follows\ \ 'ObjectName.fieldName'." explode: false in: query name: expansions schema: items: type: string nullable: true type: array style: form responses: "200": content: application/json: schema: items: $ref: '#/components/schemas/Alarm' type: array description: Successfully returned a list of most prioritized alarms summary: Information about most prioritized alarms tags: - Alarms /alarm-listener: get: description: Open a WebSocket connection to get informed when new alarm data is written or anything changes. operationId: listenAlarm responses: "200": content: application/json: schema: $ref: '#/components/schemas/AlarmListen' description: Successfully opened a connection to alarm WebSocket summary: WebSocket connection for alarm changes tags: - Alarms /nodes: get: description: Gets information about nodes. operationId: getNodes responses: "200": content: application/json: schema: items: $ref: '#/components/schemas/Node' type: array description: Successfully returned a list of nodes summary: Information about nodes tags: - Nodes post: description: Create a new node. operationId: postNode requestBody: content: application/json: schema: $ref: '#/components/schemas/Node' required: true responses: "201": content: application/json: schema: $ref: '#/components/schemas/Node' description: Successfully created a new node summary: Create a node tags: - Nodes put: deprecated: true description: "Deprecated - Use POST /nodes to create PUT /nodes/{node-ident}\ \ to update." operationId: putNode requestBody: content: application/json: schema: $ref: '#/components/schemas/Node' required: true responses: "200": content: application/json: schema: $ref: '#/components/schemas/Node' description: Successfully created a new or updated an existing node summary: Create or update a node tags: - Nodes /nodes/{node-ident}: get: description: Gets information about a node. operationId: getNodeByIdent parameters: - description: The UUID identifier of the node example: 4711 in: path name: node-ident required: true schema: example: fef0a0d3-acad-4611-ac03-1fd842d72505 type: string responses: "200": content: application/json: schema: $ref: '#/components/schemas/Node' description: Successfully returned a node "404": description: Node ident not found summary: Information about a node tags: - Nodes put: description: Update a node. operationId: putNodeByIdent parameters: - description: The UUID identifier of the node example: 4711 in: path name: node-ident required: true schema: example: fef0a0d3-acad-4611-ac03-1fd842d72505 type: string requestBody: content: application/json: schema: $ref: '#/components/schemas/Node' required: true responses: "200": content: application/json: schema: $ref: '#/components/schemas/Node' description: Successfully updated an existing node "404": description: Node ident not found summary: Update a node tags: - Nodes /agents: get: description: Gets information about agents. operationId: getAgents responses: "200": content: application/json: schema: items: $ref: '#/components/schemas/Agent' type: array description: Successfully returned a list of agents summary: Information about agents tags: - Agents /agents/{agent-class}: get: description: Gets information about agents. operationId: getAgentsByClass parameters: - description: The class of an agent example: iosys in: path name: agent-class required: true schema: enum: - iosys - mbus type: string responses: "200": content: application/json: schema: items: $ref: '#/components/schemas/Agent' type: array description: Successfully returned a list of agents summary: Information about agents for a specific class tags: - Agents post: description: Create a new agent for a specific class operationId: postAgentByClass parameters: - description: The class of an agent example: iosys in: path name: agent-class required: true schema: enum: - iosys - mbus type: string requestBody: content: application/json: schema: $ref: '#/components/schemas/Agent' required: true responses: "201": content: application/json: schema: $ref: '#/components/schemas/Agent' description: Successfully created a new agent summary: Create an agent tags: - Agents put: deprecated: true description: "Deprecated - use POST /agents/{agent-class} for creating and PUT\ \ /agents/{agent-class}/{agent-id} for updating" operationId: putAgentByClass parameters: - description: The class of an agent example: iosys in: path name: agent-class required: true schema: enum: - iosys - mbus type: string requestBody: content: application/json: schema: $ref: '#/components/schemas/Agent' required: true responses: "200": content: application/json: schema: $ref: '#/components/schemas/Agent' description: Successfully created a new or updated an existing agent summary: Create or update an agent tags: - Agents /agents/{agent-class}/{agent-id}: get: description: Gets information about an agent. operationId: getAgentByClassAndId parameters: - description: The id of the agent example: 4711 in: path name: agent-id required: true schema: type: integer - description: The class of an agent example: iosys in: path name: agent-class required: true schema: enum: - iosys - mbus type: string responses: "200": content: application/json: schema: $ref: '#/components/schemas/Agent' description: Successfully returned an agent "404": description: Agent with id not found summary: Information about an agent tags: - Agents put: description: Update an agent. operationId: putAgentByClassAndId parameters: - description: The id of the agent example: 4711 in: path name: agent-id required: true schema: type: integer - description: The class of an agent example: iosys in: path name: agent-class required: true schema: enum: - iosys - mbus type: string requestBody: content: application/json: schema: $ref: '#/components/schemas/Agent' required: true responses: "200": content: application/json: schema: $ref: '#/components/schemas/Agent' description: Successfully updated an existing agent "404": description: Agent with id not found summary: Update an agent tags: - Agents /agents/{agent-class}/{agent-id}/devices: get: description: Gets information about agent devices. operationId: getAgentDevicesByAgentId parameters: - description: The class of an agent example: iosys in: path name: agent-class required: true schema: enum: - iosys - mbus type: string - description: The id of the agent example: 4711 in: path name: agent-id required: true schema: type: integer responses: "200": content: application/json: schema: items: $ref: '#/components/schemas/AgentDevice' type: array description: Successfully returned a list of devices summary: Information about agent devices tags: - Agents post: description: Create a new agent device. operationId: postAgentDeviceByAgentId parameters: - description: The class of an agent example: iosys in: path name: agent-class required: true schema: enum: - iosys - mbus type: string - description: The id of the agent example: 4711 in: path name: agent-id required: true schema: type: integer requestBody: content: application/json: schema: $ref: '#/components/schemas/AgentDevice' required: true responses: "201": content: application/json: schema: $ref: '#/components/schemas/AgentDevice' description: Successfully created a new agent device summary: Create an agent device tags: - Agents put: deprecated: true description: "Deprecated - use POST /agents/{agent-class}/{agent-id}/devices\ \ for creating and PUT /agent-devices/{agent-class}/{agent-device-id} for\ \ updating" operationId: putAgentDeviceByAgentId parameters: - description: The class of an agent example: iosys in: path name: agent-class required: true schema: enum: - iosys - mbus type: string - description: The id of the agent example: 4711 in: path name: agent-id required: true schema: type: integer requestBody: content: application/json: schema: $ref: '#/components/schemas/AgentDevice' required: true responses: "200": content: application/json: schema: $ref: '#/components/schemas/AgentDevice' description: Successfully created a new or updated an existing agent device summary: Create or update an agent device tags: - Agents /agent-devices/{agent-class}/{agent-device-id}: get: description: Gets information about agent device. operationId: getAgentDeviceById parameters: - description: The class of an agent example: iosys in: path name: agent-class required: true schema: enum: - iosys - mbus type: string - description: The id of the device example: 4711 in: path name: agent-device-id required: true schema: type: integer responses: "200": content: application/json: schema: items: $ref: '#/components/schemas/AgentDevice' type: array description: Successfully returned a agent device summary: Information about agent device tags: - Agents put: description: Update a new agent device. operationId: putAgentDeviceById parameters: - description: The class of an agent example: iosys in: path name: agent-class required: true schema: enum: - iosys - mbus type: string - description: The id of the device example: 4711 in: path name: agent-device-id required: true schema: type: integer requestBody: content: application/json: schema: $ref: '#/components/schemas/AgentDevice' required: true responses: "200": content: application/json: schema: $ref: '#/components/schemas/AgentDevice' description: Successfully update a new agent device summary: Update an agent device tags: - Agents /agent-devices/{agent-class}/{agent-device-id}/mappings: get: description: Gets information about mappings between agent and eliona. operationId: getAgentDeviceMappingsByDeviceId parameters: - description: The class of an agent example: iosys in: path name: agent-class required: true schema: enum: - iosys - mbus type: string - description: The id of the device example: 4711 in: path name: agent-device-id required: true schema: type: integer responses: "200": content: application/json: schema: items: $ref: '#/components/schemas/AgentDeviceMapping' type: array description: Successfully returned a mapping summary: Information about agent device mappings tags: - Agents post: description: Create a new agent device mapping. operationId: postAgentDeviceMappingByDeviceId parameters: - description: The class of an agent example: iosys in: path name: agent-class required: true schema: enum: - iosys - mbus type: string - description: The id of the device example: 4711 in: path name: agent-device-id required: true schema: type: integer requestBody: content: application/json: schema: $ref: '#/components/schemas/AgentDeviceMapping' required: true responses: "201": content: application/json: schema: $ref: '#/components/schemas/AgentDeviceMapping' description: Successfully created a new agent device mapping summary: Create an agent device mapping tags: - Agents put: deprecated: true description: "Deprecated - Use POST /agent-devices/{agent-class}/{agent-device-id}/mappings\ \ for creating and /agent-device-mappings/{agent-class}/{agent-device-mapping-id}\ \ for updating" operationId: putAgentDeviceMappingByDeviceId parameters: - description: The class of an agent example: iosys in: path name: agent-class required: true schema: enum: - iosys - mbus type: string - description: The id of the device example: 4711 in: path name: agent-device-id required: true schema: type: integer requestBody: content: application/json: schema: $ref: '#/components/schemas/AgentDeviceMapping' required: true responses: "200": content: application/json: schema: $ref: '#/components/schemas/AgentDeviceMapping' description: Successfully created a new or updated an existing agent device mapping summary: Create or update an agent device mapping tags: - Agents /agent-device-mappings/{agent-class}/{agent-device-mapping-id}: get: description: Gets information about agent device mapping. operationId: getAgentDeviceMappingById parameters: - description: The class of an agent example: iosys in: path name: agent-class required: true schema: enum: - iosys - mbus type: string - description: The id of the device mapping example: 4711 in: path name: agent-device-mapping-id required: true schema: type: integer responses: "200": content: application/json: schema: items: $ref: '#/components/schemas/AgentDeviceMapping' type: array description: Successfully returned a agent device summary: Information about agent device mapping tags: - Agents put: description: Update a new agent device mapping. operationId: putAgentDeviceMappingById parameters: - description: The class of an agent example: iosys in: path name: agent-class required: true schema: enum: - iosys - mbus type: string - description: The id of the device mapping example: 4711 in: path name: agent-device-mapping-id required: true schema: type: integer requestBody: content: application/json: schema: $ref: '#/components/schemas/AgentDeviceMapping' required: true responses: "200": content: application/json: schema: $ref: '#/components/schemas/AgentDeviceMapping' description: Successfully update a new agent device mapping summary: Update an agent device mapping tags: - Agents /send-mail: post: description: Sends an e-mail to recipients operationId: postMail requestBody: content: application/json: schema: $ref: '#/components/schemas/Message' required: true responses: "201": content: application/json: schema: $ref: '#/components/schemas/MessageReceipt' description: Successfully accepted the e-mail summary: Send e-mail tags: - Communication /send-notification: post: description: Sends a notification to Eliona users operationId: postNotification requestBody: content: application/json: schema: $ref: '#/components/schemas/Notification' required: true responses: "201": content: application/json: schema: $ref: '#/components/schemas/MessageReceipt' description: Successfully accepted the notification summary: Send notification tags: - Communication /message-receipts/{message-id}: get: description: Gets receipt information for a message. operationId: getMessageReceiptById parameters: - description: The id of the message example: AB0815 in: path name: message-id required: true schema: type: string responses: "200": content: application/json: schema: $ref: '#/components/schemas/MessageReceipt' description: Successfully returned the receipt "404": description: Message with ID not found summary: Information about a message tags: - Communication /qr-codes/assets/{asset-id}: get: description: Generates QR code linking to an asset in the Eliona frontend. operationId: getQrCodeByAssetId parameters: - description: The id of the asset example: 4711 in: path name: asset-id required: true schema: type: integer responses: "200": content: image/png: schema: format: binary type: string description: Successfully returned QR code "404": description: Asset with id not found summary: QR code for assets tags: - QR codes /users: get: description: Gets a list of users operationId: getUsers responses: "200": content: application/json: schema: items: $ref: '#/components/schemas/User' type: array description: Successfully returned the list of users summary: Information about users tags: - Users put: description: Creates an user if no user exists or update it if already exists. Uses the email address for updating. operationId: putUser requestBody: content: application/json: schema: $ref: '#/components/schemas/User' required: true responses: "200": content: application/json: schema: $ref: '#/components/schemas/User' description: Successfully created a new or updated an existing user summary: Create or update an user tags: - Users /users/{user-id}: get: description: Gets information about an user. operationId: getUserById parameters: - description: The id of the user example: 123 in: path name: user-id required: true schema: type: string responses: "200": content: application/json: schema: $ref: '#/components/schemas/User' description: Successfully returned the user by id. "404": description: User with id not found summary: Information about an user tags: - Users /projects: get: description: Gets a list of projects operationId: getProjects responses: "200": content: application/json: schema: items: $ref: '#/components/schemas/Project' type: array description: Successfully returned the list of projects summary: Information about projects tags: - Projects put: description: Creates a project if no project exists or update it if already exists. Uses the id for updating. operationId: putProject requestBody: content: application/json: schema: $ref: '#/components/schemas/Project' required: true responses: "200": content: application/json: schema: $ref: '#/components/schemas/Project' description: Successfully created a new or updated an existing project summary: Create or update a project tags: - Projects /projects/{project-id}: get: description: Gets information about a project. operationId: getProjectById parameters: - description: The id of the project example: 99 in: path name: project-id required: true schema: type: string responses: "200": content: application/json: schema: $ref: '#/components/schemas/Project' description: Successfully returned the project by id. "404": description: Project with id not found summary: Information about a project tags: - Projects /tags: get: description: Gets a list of tags operationId: getTags responses: "200": content: application/json: schema: items: $ref: '#/components/schemas/Tag' type: array description: Successfully returned the list of tags summary: Information about tags tags: - Tags put: description: Creates a tag if no tag exists or update it if already exists. Uses name for updating. operationId: putTag requestBody: content: application/json: schema: $ref: '#/components/schemas/Tag' required: true responses: "200": content: application/json: schema: $ref: '#/components/schemas/Tag' description: Successfully created a new or updated an existing tag summary: Create or update a tag tags: - Tags /tags/{tag-name}: get: description: Gets information about a tag. operationId: getTagByName parameters: - description: The name of the tag example: Support in: path name: tag-name required: true schema: type: string responses: "200": content: application/json: schema: $ref: '#/components/schemas/Tag' description: Successfully returned the tag by name. "404": description: Tag with name not found summary: Information about a tag tags: - Tags components: parameters: app-name: description: The name of the app example: weather in: path name: app-name required: true schema: type: string patch-name: description: The name of the patch example: 2.0.0 in: path name: patch-name required: true schema: type: string expansions: description: "List of referenced data to load, insert or update. Each entry\ \ defines the full qualified name of the field to be expanded as follows 'ObjectName.fieldName'." explode: false in: query name: expansions schema: items: type: string nullable: true type: array style: form asset-type-name: description: The name of the asset type example: weather_location in: path name: asset-type-name required: true schema: type: string assetTypeName: description: Filter the name of the asset type example: weather_location in: query name: assetTypeName required: false schema: type: string projectId: description: Filter for a specific project in: query name: projectId required: false schema: nullable: true type: string assetIdentifyBy: description: | Serves the field name send in the request body as a unique identifier for the asset, essential for operations like updates or deletions. Please refer to the Asset schema definition for further information about this fields. In cases where this parameter isn't defined, all field names are used in the order defined. So if there is no 'resourceId' present in the request body, the 'deviceId' is used and when there is also no deviceId present the 'id' field (assetId) is used. example: resourceId in: query name: identifyBy required: false schema: enum: - resourceId - deviceId - id - gai-projId type: string asset-id: description: The id of the asset example: 4711 in: path name: asset-id required: true schema: type: integer assetId: description: Filter for a specific asset id example: 4711 in: query name: assetId required: false schema: type: integer parentAssetId: description: Filter for a specific parent asset id example: 4711 in: query name: parentAssetId required: false schema: type: integer dataSubtype: description: Filter for a specific type of asset data example: input in: query name: dataSubtype required: false schema: enum: - input - info - status - output - property type: string directMode: description: Executes the operation directly without using other services. example: true in: query name: directMode required: false schema: enum: - "true" - "false" type: string fromDate: description: Filter by lower date time (RFC3339) limit inclusive example: 2020-01-01T09:00:00.000Z in: query name: fromDate required: false schema: type: string toDate: description: Filter by upper date time (RFC3339) limit exclusive example: 2021-12-31T23:00:00.000Z in: query name: toDate required: false schema: type: string aggregationId: description: Filter for a specific aggregation id example: "0815" in: query name: aggregationId required: false schema: type: integer aggregationRaster: description: Aggregation calculation interval example: DAY in: query name: aggregationRaster required: false schema: enum: - S1 - S2 - S3 - S4 - S5 - S6 - S10 - S12 - S15 - S20 - S30 - M1 - M2 - M3 - M4 - M5 - M6 - M10 - M12 - M15 - M20 - M30 - H1 - H2 - H3 - H4 - H6 - H8 - H12 - DAY - WEEK - MONTH - QUARTER - YEAR - DECADE - CENTURY type: string aggregation-id: description: The id of the aggregation example: 4711 in: path name: aggregation-id required: true schema: type: integer widget-type-name: description: The name of the widget type example: weather in: path name: widget-type-name required: true schema: type: string dashboard-id: description: The id of the dashboard example: 4711 in: path name: dashboard-id required: true schema: type: integer alarmRuleIds: description: List of alarm rule ids for filtering explode: false in: query name: alarmRuleIds required: false schema: items: type: integer nullable: true type: array style: form alarm-rule-id: description: The id of the alarm rule example: 4711 in: path name: alarm-rule-id required: true schema: type: integer calculationRuleIds: description: List of calculation rule ids for filtering explode: false in: query name: calculationRuleIds required: false schema: items: type: integer nullable: true type: array style: form calculation-rule-id: description: The id of the calculation rule example: 4711 in: path name: calculation-rule-id required: true schema: type: integer node-ident: description: The UUID identifier of the node example: 4711 in: path name: node-ident required: true schema: example: fef0a0d3-acad-4611-ac03-1fd842d72505 type: string agent-class: description: The class of an agent example: iosys in: path name: agent-class required: true schema: enum: - iosys - mbus type: string agent-id: description: The id of the agent example: 4711 in: path name: agent-id required: true schema: type: integer agent-device-id: description: The id of the device example: 4711 in: path name: agent-device-id required: true schema: type: integer agent-device-mapping-id: description: The id of the device mapping example: 4711 in: path name: agent-device-mapping-id required: true schema: type: integer message-id: description: The id of the message example: AB0815 in: path name: message-id required: true schema: type: string user-id: description: The id of the user example: 123 in: path name: user-id required: true schema: type: string project-id: description: The id of the project example: 99 in: path name: project-id required: true schema: type: string tag-name: description: The name of the tag example: Support in: path name: tag-name required: true schema: type: string schemas: App: description: An app example: metadata: "{}" name: weather active: true registered: true version: v3.2.1 properties: name: description: Name of the app example: weather type: string active: description: Is the app active or inactive nullable: true type: boolean registered: description: Is the app already registered or not nullable: true type: boolean metadata: description: Delivers the apps metadata to handle it in the app store nullable: true type: object version: description: the apps version example: v3.2.1 nullable: true type: string required: - name type: object Patch: description: A patch for an app example: applied: true appName: weather name: 2.0.0 active: true properties: appName: description: Name of the app example: weather type: string name: description: Name of the patch example: 2.0.0 type: string active: description: Is the app active or inactive nullable: true type: boolean applied: description: Is the app already applied or not nullable: true type: boolean required: - appName - name type: object AssetType: description: A type of assets example: vendor: vendor allowedInactivity: 0 hours 5 mins custom: true name: weather_location translation: de: Das ist ein deutscher Text en: This is an english text it: Questo è nel testo inglese fr: Ceci est en texte anglais icon: weather urldoc: urldoc model: model attributes: - viewer: false virtual: true isDigital: true max: 6.027456183070403 assetTypeName: weather_location precision: 1 scale: 5.962133916683182 type: temperature zero: 5.637376656633329 ar: false sequence: 1 unit: °C min: 0.8008281904610115 subtype: input enable: true name: temperature translation: de: Das ist ein deutscher Text en: This is an english text it: Questo è nel testo inglese fr: Ceci est en texte anglais formula: "{seconds} * 60" map: - "{}" - "{}" aggregationMode: avg aggregationRasters: - DAY - DAY sourcePath: - sourcePath - sourcePath - viewer: false virtual: true isDigital: true max: 6.027456183070403 assetTypeName: weather_location precision: 1 scale: 5.962133916683182 type: temperature zero: 5.637376656633329 ar: false sequence: 1 unit: °C min: 0.8008281904610115 subtype: input enable: true name: temperature translation: de: Das ist ein deutscher Text en: This is an english text it: Questo è nel testo inglese fr: Ceci est en texte anglais formula: "{seconds} * 60" map: - "{}" - "{}" aggregationMode: avg aggregationRasters: - DAY - DAY sourcePath: - sourcePath - sourcePath payloadFunction: PLS isTracker: false properties: name: description: The unique name for this asset type example: weather_location type: string custom: default: true description: Is this a customer created type or not type: boolean vendor: description: The vendor providing assets of this type nullable: true type: string model: description: The specific model of assets of this type nullable: true type: string translation: $ref: '#/components/schemas/Translation' urldoc: description: The url describing assets of this type nullable: true type: string icon: description: "Icon name corresponding to assets of this type: blind, building,\ \ button, closable, elevator, environment, fallback, filling, gateway,\ \ light, mailbox, parking, people, power, rack, storey, trash, ventilation,\ \ vibration, water, weather" example: weather nullable: true type: string payloadFunction: description: Asset types payload function example: PLS nullable: true type: string allowedInactivity: example: 0 hours 5 mins format: duration nullable: true type: string isTracker: default: false description: Function as a tracker nullable: true type: boolean attributes: description: List of named attributes items: $ref: '#/components/schemas/AssetTypeAttribute' nullable: true type: array required: - name type: object AssetTypeAttribute: description: Named attribute to store data of assets example: viewer: false virtual: true isDigital: true max: 6.027456183070403 assetTypeName: weather_location precision: 1 scale: 5.962133916683182 type: temperature zero: 5.637376656633329 ar: false sequence: 1 unit: °C min: 0.8008281904610115 subtype: input enable: true name: temperature translation: de: Das ist ein deutscher Text en: This is an english text it: Questo è nel testo inglese fr: Ceci est en texte anglais formula: "{seconds} * 60" map: - "{}" - "{}" aggregationMode: avg aggregationRasters: - DAY - DAY sourcePath: - sourcePath - sourcePath properties: assetTypeName: description: The unique name for the asset type example: weather_location nullable: true type: string name: description: Unique key of asset data example: temperature type: string subtype: $ref: '#/components/schemas/DataSubtype' type: description: "Name of the type for this attribute: air_quality, battery-voltage,\ \ brightness, co2, current, device-info, device-status, energy, flow,\ \ frequency, humidity, inputs-and-switches, level, motion, operating-status,\ \ people-count, power, presence, pressure, temperature, vehicle-detector,\ \ voltage, weather, voc" example: temperature nullable: true type: string enable: default: true description: Is data active or not type: boolean translation: $ref: '#/components/schemas/Translation' unit: description: Physical unit of numeric data example: °C nullable: true type: string precision: description: Number of decimal places example: 1 format: int64 maximum: 20 minimum: -20 nullable: true type: integer min: description: Lower limit format: double nullable: true type: number example: null max: description: Upper limit format: double nullable: true type: number example: null aggregationMode: description: Aggregation calculation mode enum: - avg - sum - cusum - avg-on-change nullable: true type: string aggregationRasters: items: description: Aggregation calculation intervals enum: - S1 - S2 - S3 - S4 - S5 - S6 - S10 - S12 - S15 - S20 - S30 - M1 - M2 - M3 - M4 - M5 - M6 - M10 - M12 - M15 - M20 - M30 - H1 - H2 - H3 - H4 - H6 - H8 - H12 - DAY - WEEK - MONTH - QUARTER - YEAR - DECADE - CENTURY example: DAY type: string type: array viewer: default: false description: Should the attribute be displayed in viewer nullable: true type: boolean ar: default: false description: Should the attribute be displayed in AR nullable: true type: boolean sequence: description: Sequence in AR display format: int64 nullable: true type: integer virtual: description: Is the attribute virtual or not nullable: true type: boolean formula: description: calculation rule to calculate the value for this attribute example: "{seconds} * 60" nullable: true type: string scale: description: value scale nullable: true type: number zero: description: value scale nullable: true type: number map: description: list of mapping between value and custom text items: type: object nullable: true type: array sourcePath: description: source path for attribute value items: type: string nullable: true type: array isDigital: description: is attribute digital nullable: true type: boolean required: - name - subtype type: object Asset: description: An asset example: globalAssetIdentifier: zurich_swiss functionalAssetIdPath: - 0 - 0 resourceId: 123e4567-e89b-12d3-a456-426655440000 deviceIds: - XYZ0123 - 13:23:12:34:32 attachments: - name: example.gif encoding: base64 contentType: image/png content: iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAQAAAC1HAwCAAAAC0lEQVR42mNk+A8AAQUBAScY42YAAAAASUVORK5CYII= - name: example.gif encoding: base64 contentType: image/png content: iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAQAAAC1HAwCAAAAC0lEQVR42mNk+A8AAQUBAScY42YAAAAASUVORK5CYII= latitude: 47.3667 description: "Weather station Zurich, Swiss" childrenInfo: - null - null assetType: assetType parentLocationalAssetId: 4712 tags: - weather - location locationalAssetIdPath: - 6 - 6 trackerId: 4711 name: Station Zurich parentFunctionalAssetId: 4712 id: 4711 isTracker: false projectId: "99" longitude: 8.55 nullable: true properties: resourceId: description: "A custom identifier for the resource, which can be utilized\ \ to identify it for various operations such as updates, deletions, and\ \ other related tasks. If this identifier is not provided, the application\ \ will generate a new value for it automatically" example: 123e4567-e89b-12d3-a456-426655440000 format: uuid nullable: true type: string id: description: The internal Id of asset example: 4711 nullable: true readOnly: true type: integer deviceIds: description: A list of unique device ids example: - XYZ0123 - 13:23:12:34:32 items: type: string nullable: true type: array projectId: description: ID of the project to which the asset belongs example: "99" type: string globalAssetIdentifier: description: Unique identifier for the asset example: zurich_swiss type: string name: description: Alternate text for the asset to display in frontend example: Station Zurich nullable: true type: string assetType: description: Reference to asset type by name type: string latitude: description: Latitude coordinate (GPS) of the asset example: 47.3667 format: double nullable: true type: number longitude: description: Longitude coordinate (GPS) of the asset example: 8.55 format: double nullable: true type: number isTracker: default: false deprecated: true description: Does the asset function as a tracker and capture its position by itself nullable: true type: boolean trackerId: description: Tracker Asset Id example: 4711 nullable: true type: integer description: description: Textual description for this asset example: "Weather station Zurich, Swiss" nullable: true type: string parentFunctionalAssetId: description: The id of an asset which groups this asset as a functional child example: 4712 nullable: true type: integer functionalAssetIdPath: description: The hierarchical path of functional ids of the asset items: type: integer nullable: true readOnly: true type: array parentLocationalAssetId: description: The id of an asset which groups this asset as a locational child example: 4712 nullable: true type: integer locationalAssetIdPath: description: The hierarchical path of locational ids of the asset items: type: integer nullable: true readOnly: true type: array tags: description: List of associated tags example: - weather - location items: type: string nullable: true type: array childrenInfo: description: List of children for this asset. items: $ref: '#/components/schemas/Asset' nullable: true readOnly: true type: array attachments: description: A list of files attached to the asset items: $ref: '#/components/schemas/Attachment' nullable: true type: array required: - assetType - globalAssetIdentifier - projectId type: object ErrorMessage422: description: An error message showing the issue occur during the operation. example: "error: dependent resource not found" nullable: true type: string Identifier: description: Unique identifier (textual or numeric) of resources example: "1234" type: string AssetDryRun: allOf: - $ref: '#/components/schemas/DryRunGeneral' - description: Specific information for asset dry run nullable: true properties: identifiedBy: $ref: '#/components/schemas/AssetIdentifyBy' before: $ref: '#/components/schemas/Asset' after: $ref: '#/components/schemas/Asset' title: AssetDryRun type: object example: identifier: "1234" before: globalAssetIdentifier: zurich_swiss functionalAssetIdPath: - 0 - 0 resourceId: 123e4567-e89b-12d3-a456-426655440000 deviceIds: - XYZ0123 - 13:23:12:34:32 attachments: - name: example.gif encoding: base64 contentType: image/png content: iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAQAAAC1HAwCAAAAC0lEQVR42mNk+A8AAQUBAScY42YAAAAASUVORK5CYII= - name: example.gif encoding: base64 contentType: image/png content: iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAQAAAC1HAwCAAAAC0lEQVR42mNk+A8AAQUBAScY42YAAAAASUVORK5CYII= latitude: 47.3667 description: "Weather station Zurich, Swiss" childrenInfo: - null - null assetType: assetType parentLocationalAssetId: 4712 tags: - weather - location locationalAssetIdPath: - 6 - 6 trackerId: 4711 name: Station Zurich parentFunctionalAssetId: 4712 id: 4711 isTracker: false projectId: "99" longitude: 8.55 errorMessage: "error: dependent resource not found" after: globalAssetIdentifier: zurich_swiss functionalAssetIdPath: - 0 - 0 resourceId: 123e4567-e89b-12d3-a456-426655440000 deviceIds: - XYZ0123 - 13:23:12:34:32 attachments: - name: example.gif encoding: base64 contentType: image/png content: iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAQAAAC1HAwCAAAAC0lEQVR42mNk+A8AAQUBAScY42YAAAAASUVORK5CYII= - name: example.gif encoding: base64 contentType: image/png content: iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAQAAAC1HAwCAAAAC0lEQVR42mNk+A8AAQUBAScY42YAAAAASUVORK5CYII= latitude: 47.3667 description: "Weather station Zurich, Swiss" childrenInfo: - null - null assetType: assetType parentLocationalAssetId: 4712 tags: - weather - location locationalAssetIdPath: - 6 - 6 trackerId: 4711 name: Station Zurich parentFunctionalAssetId: 4712 id: 4711 isTracker: false projectId: "99" longitude: 8.55 identifiedBy: resourceId statusCode: 200 AssetListen: allOf: - description: Information about asset listener nullable: true properties: statusCode: $ref: '#/components/schemas/StatusCode' type: object - $ref: '#/components/schemas/Asset' example: globalAssetIdentifier: zurich_swiss functionalAssetIdPath: - 0 - 0 resourceId: 123e4567-e89b-12d3-a456-426655440000 deviceIds: - XYZ0123 - 13:23:12:34:32 attachments: - name: example.gif encoding: base64 contentType: image/png content: iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAQAAAC1HAwCAAAAC0lEQVR42mNk+A8AAQUBAScY42YAAAAASUVORK5CYII= - name: example.gif encoding: base64 contentType: image/png content: iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAQAAAC1HAwCAAAAC0lEQVR42mNk+A8AAQUBAScY42YAAAAASUVORK5CYII= latitude: 47.3667 description: "Weather station Zurich, Swiss" childrenInfo: - globalAssetIdentifier: zurich_swiss functionalAssetIdPath: - 0 - 0 resourceId: 123e4567-e89b-12d3-a456-426655440000 deviceIds: - XYZ0123 - 13:23:12:34:32 attachments: - name: example.gif encoding: base64 contentType: image/png content: iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAQAAAC1HAwCAAAAC0lEQVR42mNk+A8AAQUBAScY42YAAAAASUVORK5CYII= - name: example.gif encoding: base64 contentType: image/png content: iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAQAAAC1HAwCAAAAC0lEQVR42mNk+A8AAQUBAScY42YAAAAASUVORK5CYII= latitude: 47.3667 description: "Weather station Zurich, Swiss" childrenInfo: - null - null assetType: assetType parentLocationalAssetId: 4712 tags: - weather - location locationalAssetIdPath: - 6 - 6 trackerId: 4711 name: Station Zurich parentFunctionalAssetId: 4712 id: 4711 isTracker: false projectId: "99" longitude: 8.55 - globalAssetIdentifier: zurich_swiss functionalAssetIdPath: - 0 - 0 resourceId: 123e4567-e89b-12d3-a456-426655440000 deviceIds: - XYZ0123 - 13:23:12:34:32 attachments: - name: example.gif encoding: base64 contentType: image/png content: iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAQAAAC1HAwCAAAAC0lEQVR42mNk+A8AAQUBAScY42YAAAAASUVORK5CYII= - name: example.gif encoding: base64 contentType: image/png content: iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAQAAAC1HAwCAAAAC0lEQVR42mNk+A8AAQUBAScY42YAAAAASUVORK5CYII= latitude: 47.3667 description: "Weather station Zurich, Swiss" childrenInfo: - null - null assetType: assetType parentLocationalAssetId: 4712 tags: - weather - location locationalAssetIdPath: - 6 - 6 trackerId: 4711 name: Station Zurich parentFunctionalAssetId: 4712 id: 4711 isTracker: false projectId: "99" longitude: 8.55 assetType: assetType parentLocationalAssetId: 4712 tags: - weather - location locationalAssetIdPath: - 6 - 6 trackerId: 4711 name: Station Zurich parentFunctionalAssetId: 4712 id: 4711 isTracker: false projectId: "99" statusCode: 200 longitude: 8.55 AttributeDisplay: description: How attributes are displayed for specific assets example: viewer: false ar: false sequence: 1 unit: °C min: 0.8008281904610115 subtype: input max: 6.027456183070403 assetId: 4711 precision: 1 attribute: temperature map: - "{}" - "{}" properties: assetId: description: ID of the corresponding asset example: 4711 type: integer subtype: $ref: '#/components/schemas/DataSubtype' attribute: description: Name of the attribute of the asset type example: temperature type: string unit: description: Physical unit of numeric data example: °C nullable: true type: string precision: description: Number of decimal places example: 1 format: int64 maximum: 20 minimum: -20 nullable: true type: integer min: description: Lower limit format: double nullable: true type: number example: null max: description: Upper limit format: double nullable: true type: number example: null viewer: default: false description: Should the attribute be displayed in viewer nullable: true type: boolean ar: default: false description: Should the attribute be displayed in AR nullable: true type: boolean sequence: description: Sequence in AR display format: int64 nullable: true type: integer map: description: list of mapping between value and custom text items: type: object nullable: true type: array required: - assetId - attribute - subtype type: object Data: description: Data for assets example: data: {} subtype: input assetId: 4711 assetTypeName: weather_location clientReference: ABC123 timestamp: 2000-01-23T04:56:07.000+00:00 properties: assetId: description: ID of the corresponding asset example: 4711 type: integer subtype: $ref: '#/components/schemas/DataSubtype' timestamp: description: Timestamp of the latest data change format: date-time nullable: true type: string data: description: Asset payload example: {} type: object assetTypeName: description: The name of the corresponding asset type example: weather_location nullable: true readOnly: true type: string clientReference: description: freely assignable by the client to identify self-created data example: ABC123 nullable: true type: string required: - assetId - data - subtype type: object DataListen: allOf: - description: Information about asset data listener nullable: true properties: statusCode: $ref: '#/components/schemas/StatusCode' type: object - $ref: '#/components/schemas/Data' example: data: {} subtype: input assetId: 4711 assetTypeName: weather_location clientReference: ABC123 statusCode: 200 timestamp: 2000-01-23T04:56:07.000+00:00 DataAggregated: description: Aggregated data combines multiple data points for a periodical raster example: average: 4.3 last: 3.0 max: 11.4 aggregationId: 815 assetTypeName: weather_location raster: DAY count: 100 sum: 430 min: 1.2 subtype: input lastTimestamp: 2000-01-23T04:56:07.000+00:00 assetId: 4711 attribute: temperature first: 9.3 timestamp: 2000-01-23T04:56:07.000+00:00 properties: aggregationId: description: ID of the aggregation example: 815 type: integer assetId: description: ID of the corresponding asset example: 4711 type: integer subtype: $ref: '#/components/schemas/DataSubtype' attribute: description: Name of the attribute which holds the data points example: temperature type: string raster: description: Calculation intervals. enum: - S1 - S2 - S3 - S4 - S5 - S6 - S10 - S12 - S15 - S20 - S30 - M1 - M2 - M3 - M4 - M5 - M6 - M10 - M12 - M15 - M20 - M30 - H1 - H2 - H3 - H4 - H6 - H8 - H12 - DAY - WEEK - MONTH - QUARTER - YEAR - DECADE - CENTURY example: DAY type: string timestamp: description: Timestamp of this aggregated data set. The timestamp when the timeslot based on raster starts. format: date-time nullable: true type: string count: description: Count of data points in this aggregated data set example: 100 format: double nullable: true type: number average: description: Average of all data points for this aggregated data set example: 4.3 format: double nullable: true type: number sum: description: Sum of all data points for this aggregated data set example: 430 format: double nullable: true type: number first: description: First data point in this aggregated data set example: 9.3 format: double nullable: true type: number min: description: Data point with the most minimal value in this aggregated data set example: 1.2 format: double nullable: true type: number max: description: Data point with the most maximal value in this aggregated data set example: 11.4 format: double nullable: true type: number last: description: Latest data point in this aggregated data set example: 3.0 format: double nullable: true type: number lastTimestamp: description: Timestamp of the latest data point format: date-time nullable: true type: string assetTypeName: description: The name of the corresponding asset type example: weather_location nullable: true readOnly: true type: string required: - assetId - id - raster - subtype type: object Aggregation: description: Defines the aggregation of data points example: mode: avg subtype: input assetId: 4711 raster: DAY id: 815 attribute: temperature properties: id: description: ID of the aggregation example: 815 nullable: true readOnly: true type: integer assetId: description: ID of the corresponding asset example: 4711 type: integer subtype: $ref: '#/components/schemas/DataSubtype' attribute: description: Name of the attribute which holds the data points example: temperature type: string mode: description: Calculation mode enum: - avg - sum - cusum - avg-on-change example: avg type: string raster: description: calculation interval enum: - S1 - S2 - S3 - S4 - S5 - S6 - S10 - S12 - S15 - S20 - S30 - M1 - M2 - M3 - M4 - M5 - M6 - M10 - M12 - M15 - M20 - M30 - H1 - H2 - H3 - H4 - H6 - H8 - H12 - DAY - WEEK - MONTH - QUARTER - YEAR - DECADE - CENTURY example: DAY nullable: true type: string required: - assetId - mode - subtype type: object WidgetType: description: A frontend widget example: withTimespan: false custom: true withAlarm: false elements: - sequence: 1 id: 4711 category: weather config: variant: todayAndForecast - sequence: 1 id: 4711 category: weather config: variant: todayAndForecast name: weather translation: de: Das ist ein deutscher Text en: This is an english text it: Questo è nel testo inglese fr: Ceci est en texte anglais icon: weather id: 4711 properties: id: description: The internal Id of widget type example: 4711 nullable: true readOnly: true type: integer name: description: The unique name for this widget type example: weather type: string custom: default: true description: Is this a customer created type or not type: boolean translation: $ref: '#/components/schemas/Translation' icon: description: Icon name corresponding to assets used in this widget example: weather nullable: true type: string withAlarm: default: false description: Show alarms in widget nullable: true type: boolean withTimespan: default: false description: Show selection for timespan in widget nullable: true type: boolean elements: description: A list of elements for this widget (order matches the order of elements for this type) items: $ref: '#/components/schemas/WidgetTypeElement' type: array required: - elements - name - translation type: object Dashboard: description: A frontend dashboard example: sequence: 1 public: false name: Weather info id: 4711 widgets: - sequence: 1 data: - elementSequence: 1 data: subtype: input attribute: temperature key: humidity assetId: 4711 id: 4711 - elementSequence: 1 data: subtype: input attribute: temperature key: humidity assetId: 4711 id: 4711 assetId: 4711 details: {} id: 4711 widgetTypeName: Weather - sequence: 1 data: - elementSequence: 1 data: subtype: input attribute: temperature key: humidity assetId: 4711 id: 4711 - elementSequence: 1 data: subtype: input attribute: temperature key: humidity assetId: 4711 id: 4711 assetId: 4711 details: {} id: 4711 widgetTypeName: Weather projectId: "99" userId: "42" properties: id: description: The internal Id of dashboard example: 4711 nullable: true readOnly: true type: integer name: description: The name for this dashboard example: Weather info type: string projectId: description: ID of the project to which the dashboard belongs example: "99" type: string userId: description: ID of the user who owns the dashboard example: "42" type: string sequence: default: 0 deprecated: true description: The sequence of the dashboard example: 1 nullable: true type: integer widgets: description: List of widgets on this dashboard (order matches the order of widgets on the dashboard) items: $ref: '#/components/schemas/Widget' nullable: true type: array public: default: false description: Is the dashboard public and not bound to a dedicated user nullable: true type: boolean required: - name - projectId - userId type: object Widget: description: A widget on a frontend dashboard example: sequence: 1 data: - elementSequence: 1 data: subtype: input attribute: temperature key: humidity assetId: 4711 id: 4711 - elementSequence: 1 data: subtype: input attribute: temperature key: humidity assetId: 4711 id: 4711 assetId: 4711 details: {} id: 4711 widgetTypeName: Weather properties: id: description: The internal Id of widget example: 4711 nullable: true readOnly: true type: integer widgetTypeName: description: The name for the type of this widget example: Weather type: string details: description: Detailed configuration depending on the widget type example: {} nullable: true type: object assetId: description: The master asset id of this widget example: 4711 nullable: true type: integer sequence: description: Placement order on dashboard; if not set the index in array is taken example: 1 nullable: true type: integer data: description: List of data for the elements of widget items: $ref: '#/components/schemas/WidgetData' nullable: true type: array required: - widgetTypeName - width type: object AlarmRule: description: Rule for an alarm example: checkType: limits requiresAcknowledge: false subject: subject urldoc: urldoc priority: 2 message: come: en: AC fan defect tags: - tags - tags equal: 38.7 high: 38.7 subtype: input low: 38.7 assetId: 4711 enable: true notifyOn: R dontMask: false id: 123 attribute: temperature assetInfo: globalAssetIdentifier: zurich_swiss functionalAssetIdPath: - 0 - 0 resourceId: 123e4567-e89b-12d3-a456-426655440000 deviceIds: - XYZ0123 - 13:23:12:34:32 attachments: - name: example.gif encoding: base64 contentType: image/png content: iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAQAAAC1HAwCAAAAC0lEQVR42mNk+A8AAQUBAScY42YAAAAASUVORK5CYII= - name: example.gif encoding: base64 contentType: image/png content: iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAQAAAC1HAwCAAAAC0lEQVR42mNk+A8AAQUBAScY42YAAAAASUVORK5CYII= latitude: 47.3667 description: "Weather station Zurich, Swiss" childrenInfo: - null - null assetType: assetType parentLocationalAssetId: 4712 tags: - weather - location locationalAssetIdPath: - 6 - 6 trackerId: 4711 name: Station Zurich parentFunctionalAssetId: 4712 id: 4711 isTracker: false projectId: "99" longitude: 8.55 nullable: true properties: id: description: The id of the rule example: 123 nullable: true readOnly: true type: integer assetId: description: ID of the corresponding asset example: 4711 type: integer subtype: $ref: '#/components/schemas/DataSubtype' attribute: description: Name of the attribute of the asset type example: temperature type: string enable: default: true description: Rule enabled or not type: boolean priority: $ref: '#/components/schemas/AlarmPriority' requiresAcknowledge: default: false description: Requires the alarm an acknowledgment type: boolean equal: description: Triggers alarm if attribute value equals this value example: 38.7 format: double nullable: true type: number low: description: Triggers alarm if attribute value is less than value example: 38.7 format: double nullable: true type: number high: description: Triggers alarm if attribute value is greater than value example: 38.7 format: double nullable: true type: number message: description: Texts for alarm example: come: en: AC fan defect nullable: true type: object tags: description: List of associated tags items: type: string nullable: true type: array subject: description: The subject for the alarm nullable: true type: string urldoc: description: The url describing the alarm nullable: true type: string notifyOn: description: Notification example: R nullable: true type: string dontMask: default: false description: Do not mask nullable: true type: boolean checkType: description: Check type enum: - limits - validity - custom nullable: true type: string assetInfo: $ref: '#/components/schemas/Asset' required: - assetId - attribute - priority - subtype type: object CalculationRule: description: Calculation rule to calculate asset attribute data example: filter: type: deadband params: tolerance: 123 value_min: 1 value_max: 2 virtual: true unit: °C subtype: input assetId: 4711 formula: "{seconds} * 60" id: 123 attribute: temperature nullable: true properties: id: description: The id of the rule example: 123 nullable: true readOnly: true type: integer assetId: description: ID of the corresponding asset example: 4711 type: integer subtype: $ref: '#/components/schemas/DataSubtype' attribute: description: Name of the attribute of the asset type to be calculated example: temperature type: string virtual: description: Is the calculation attribute virtual or not nullable: true type: boolean formula: description: calculation rule to calculate the value for the attribute example: "{seconds} * 60" nullable: true type: string unit: description: Physical unit of calculated data example: °C nullable: true type: string filter: description: Filter definition for calculation rule example: type: deadband params: tolerance: 123 value_min: 1 value_max: 2 nullable: true type: object required: - assetId - attribute - subtype type: object Alarm: description: An alarm example: occurrences: 1 requiresAcknowledge: false acknowledgeText: acknowledgeText priority: 2 message: {} goneTimestamp: 2000-01-23T04:56:07.000+00:00 acknowledgeTimestamp: 2000-01-23T04:56:07.000+00:00 subtype: input assetId: 4711 ruleInfo: checkType: limits requiresAcknowledge: false subject: subject urldoc: urldoc priority: 2 message: come: en: AC fan defect tags: - tags - tags equal: 38.7 high: 38.7 subtype: input low: 38.7 assetId: 4711 enable: true notifyOn: R dontMask: false id: 123 attribute: temperature assetInfo: globalAssetIdentifier: zurich_swiss functionalAssetIdPath: - 0 - 0 resourceId: 123e4567-e89b-12d3-a456-426655440000 deviceIds: - XYZ0123 - 13:23:12:34:32 attachments: - name: example.gif encoding: base64 contentType: image/png content: iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAQAAAC1HAwCAAAAC0lEQVR42mNk+A8AAQUBAScY42YAAAAASUVORK5CYII= - name: example.gif encoding: base64 contentType: image/png content: iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAQAAAC1HAwCAAAAC0lEQVR42mNk+A8AAQUBAScY42YAAAAASUVORK5CYII= latitude: 47.3667 description: "Weather station Zurich, Swiss" childrenInfo: - null - null assetType: assetType parentLocationalAssetId: 4712 tags: - weather - location locationalAssetIdPath: - 6 - 6 trackerId: 4711 name: Station Zurich parentFunctionalAssetId: 4712 id: 4711 isTracker: false projectId: "99" longitude: 8.55 acknowledgeUserId: acknowledgeUserId attribute: temperature ruleId: 123 value: 38.7 assetInfo: globalAssetIdentifier: zurich_swiss functionalAssetIdPath: - 0 - 0 resourceId: 123e4567-e89b-12d3-a456-426655440000 deviceIds: - XYZ0123 - 13:23:12:34:32 attachments: - name: example.gif encoding: base64 contentType: image/png content: iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAQAAAC1HAwCAAAAC0lEQVR42mNk+A8AAQUBAScY42YAAAAASUVORK5CYII= - name: example.gif encoding: base64 contentType: image/png content: iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAQAAAC1HAwCAAAAC0lEQVR42mNk+A8AAQUBAScY42YAAAAASUVORK5CYII= latitude: 47.3667 description: "Weather station Zurich, Swiss" childrenInfo: - null - null assetType: assetType parentLocationalAssetId: 4712 tags: - weather - location locationalAssetIdPath: - 6 - 6 trackerId: 4711 name: Station Zurich parentFunctionalAssetId: 4712 id: 4711 isTracker: false projectId: "99" longitude: 8.55 timestamp: 2000-01-23T04:56:07.000+00:00 nullable: true properties: ruleId: description: The id of the corresponding rule example: 123 nullable: true type: integer assetId: description: ID of the corresponding asset example: 4711 type: integer subtype: $ref: '#/components/schemas/DataSubtype' attribute: description: Name of the attribute of the asset type example: temperature nullable: true type: string priority: $ref: '#/components/schemas/AlarmPriority' requiresAcknowledge: default: false description: Requires the alarm an acknowledgment type: boolean value: description: The value which triggers the alarm example: 38.7 format: double nullable: true type: number timestamp: description: Timestamp of the latest data change format: date-time type: string goneTimestamp: description: Timestamp of the latest data change format: date-time nullable: true type: string acknowledgeTimestamp: description: Timestamp of the latest data change format: date-time nullable: true type: string occurrences: description: How often this alarm is triggered example: 1 type: integer acknowledgeText: description: Text of acknowledgement nullable: true type: string acknowledgeUserId: description: User who acknowledged the alarm format: text nullable: true type: string message: description: Message.yaml texts for alarm example: {} nullable: true type: object assetInfo: $ref: '#/components/schemas/Asset' ruleInfo: $ref: '#/components/schemas/AlarmRule' required: - assetId - occurrences - priority - subtype - timestamp type: object AlarmListen: allOf: - description: Information about alarm listener nullable: true properties: statusCode: $ref: '#/components/schemas/StatusCode' type: object - $ref: '#/components/schemas/Alarm' example: occurrences: 1 requiresAcknowledge: false acknowledgeText: acknowledgeText priority: 2 message: {} goneTimestamp: 2000-01-23T04:56:07.000+00:00 acknowledgeTimestamp: 2000-01-23T04:56:07.000+00:00 subtype: input assetId: 4711 ruleInfo: checkType: limits requiresAcknowledge: false subject: subject urldoc: urldoc priority: 2 message: come: en: AC fan defect tags: - tags - tags equal: 38.7 high: 38.7 subtype: input low: 38.7 assetId: 4711 enable: true notifyOn: R dontMask: false id: 123 attribute: temperature assetInfo: globalAssetIdentifier: zurich_swiss functionalAssetIdPath: - 0 - 0 resourceId: 123e4567-e89b-12d3-a456-426655440000 deviceIds: - XYZ0123 - 13:23:12:34:32 attachments: - name: example.gif encoding: base64 contentType: image/png content: iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAQAAAC1HAwCAAAAC0lEQVR42mNk+A8AAQUBAScY42YAAAAASUVORK5CYII= - name: example.gif encoding: base64 contentType: image/png content: iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAQAAAC1HAwCAAAAC0lEQVR42mNk+A8AAQUBAScY42YAAAAASUVORK5CYII= latitude: 47.3667 description: "Weather station Zurich, Swiss" childrenInfo: - null - null assetType: assetType parentLocationalAssetId: 4712 tags: - weather - location locationalAssetIdPath: - 6 - 6 trackerId: 4711 name: Station Zurich parentFunctionalAssetId: 4712 id: 4711 isTracker: false projectId: "99" longitude: 8.55 acknowledgeUserId: acknowledgeUserId attribute: temperature ruleId: 123 value: 38.7 assetInfo: globalAssetIdentifier: zurich_swiss functionalAssetIdPath: - 0 - 0 resourceId: 123e4567-e89b-12d3-a456-426655440000 deviceIds: - XYZ0123 - 13:23:12:34:32 attachments: - name: example.gif encoding: base64 contentType: image/png content: iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAQAAAC1HAwCAAAAC0lEQVR42mNk+A8AAQUBAScY42YAAAAASUVORK5CYII= - name: example.gif encoding: base64 contentType: image/png content: iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAQAAAC1HAwCAAAAC0lEQVR42mNk+A8AAQUBAScY42YAAAAASUVORK5CYII= latitude: 47.3667 description: "Weather station Zurich, Swiss" childrenInfo: - null - null assetType: assetType parentLocationalAssetId: 4712 tags: - weather - location locationalAssetIdPath: - 6 - 6 trackerId: 4711 name: Station Zurich parentFunctionalAssetId: 4712 id: 4711 isTracker: false projectId: "99" longitude: 8.55 statusCode: 200 timestamp: 2000-01-23T04:56:07.000+00:00 Node: description: An edge node example: password: password ident: fef0a0d3-acad-4611-ac03-1fd842d72505 assetId: 4711 vendor: vendor enable: false description: Node east plant model: model id: "1234" nullable: true properties: id: description: Unique id for the edge node example: "1234" nullable: true readOnly: true type: string ident: description: UUID to identify the edge node example: fef0a0d3-acad-4611-ac03-1fd842d72505 nullable: true readOnly: true type: string password: deprecated: true description: Password with which the node identifies itself nullable: true type: string assetId: description: ID of the corresponding asset example: 4711 nullable: true type: integer vendor: description: Vendor name nullable: true type: string model: description: Model name nullable: true type: string description: description: Descriptive text for the edge node example: Node east plant nullable: true type: string enable: default: false description: Is the node enabled or not type: boolean type: object Agent: description: An agent installed on an edge node example: assetId: 4711 enable: false description: IOSYS Agent east plant id: 4711 nodeId: "1234" class: iosys config: {} nullable: true properties: id: description: Unique id for the agent example: 4711 nullable: true readOnly: true type: integer nodeId: description: Id of the node where the agent is installed example: "1234" nullable: true type: string assetId: description: ID of the corresponding asset example: 4711 nullable: true type: integer class: $ref: '#/components/schemas/AgentClass' description: description: Descriptive text for the agent example: IOSYS Agent east plant nullable: true type: string enable: default: false description: Is the agent enabled or not type: boolean config: description: Individual configuration depending on agent class example: {} nullable: true type: object type: object AgentDevice: anyOf: - $ref: '#/components/schemas/IosysAgentDevice' - $ref: '#/components/schemas/MbusAgentDevice' AgentDeviceMapping: anyOf: - $ref: '#/components/schemas/IosysAgentDeviceMapping' - $ref: '#/components/schemas/MbusAgentDeviceMapping' Message: description: A message example: attachments: - name: example.gif encoding: base64 contentType: image/png content: iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAQAAAC1HAwCAAAAC0lEQVR42mNk+A8AAQUBAScY42YAAAAASUVORK5CYII= - name: example.gif encoding: base64 contentType: image/png content: iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAQAAAC1HAwCAAAAC0lEQVR42mNk+A8AAQUBAScY42YAAAAASUVORK5CYII= sender: sender@example.com recipients: - recipient@example.com - recipient@example.com subject: This is a example message blindCopyRecipients: - blind-copy-recipient@example.com - blind-copy-recipient@example.com copyRecipients: - copy-recipient@example.com - copy-recipient@example.com content: