Skip to content

Application Provider Capabilities

This document provides instructions on how to complete the capability statement for Application Builders. The Capability Statement, formatted in JSON, outlines the capabilities a device must have to be compatible with the application and its specified version.

For each new version of an application, the Application Builder must complete and submit this file to Industrial Edge. This process ensures that the application and its version are added to the Compatibility Checker's list of available applications. Only then can the application and its version be processed within the scope of the Industrial Edge Compatibility Checker.

Providing data

  1. Copy the following Capability Statement for Applications JSON document:

    Capability Statement for Applications
    {
      "applicationId": "",
      "applicationName": "",
      "version": "",
      "capability": {
        "ie.device.service.securestorage": {
          "minVersion": ""
        },
        "ie.device.system.docker": {
          "minVersion": ""
        },
        "ie.device.system.hostnet": {},
        "ie.device.kernel": {
          "minVersion": "",
          "arch": ""
        },
        "ie.device.system.shutdown": {
          "minVersion": ""
        },
        "ie.device.system.iedk": {
          "minVersion": ""
        },
        "ie.device.hardware.cpu_allocation": {
          "core": "",
          "optional": true
        },
        "ie.device.hardware.gpu_allocation": {
          "optional": true
        },
        "ie.device.hardware.gpio": {
          "optional": true
        },
        "ie.device.hardware.nic_allocation": {
          "nicCount": "",
          "optional": true
        },
        "ie.device.hardware.memory": {
          "requiredInMB": ""
        },
        "ie.device.system.shared_memory": {
          "optional": true
        }
      }
    }
    
  2. Fill the document with the actual data for your app and respective version, according to the instructions given in this page.

  3. Provide the document to Industrial Edge Ecosystem team:

NOTICE

You can also provide this document while onboarding your application. Refer to the instructions: Application Onboarding

How to fill the document

This section provides detailed instructions on how to complete each section of the document.

Meta Data

Parameter Description
applicationId Unique identifier for the application. Generally, this can be obtained after unpacking the application bundle file (.app) and retrieving it from the detailed.json file.
applicationName Name of the application.
version Version of the application as per Semantic Versioning 2.0.0 (https://semver.org/)

Capabilities

ie.device.service.securestorage

The Secure Storage Service allows an app to store and retrieve confidential and integrity-protected data via a REST-based API. Access to the API is authenticated by determining the container from which the request comes by Linux means. The storage is encrypted and can be bound to the TPM of the host system (if existent). Each application has a separate "area" to store key-value pairs in. The content of the Secure Storage Area will be backed up with the app backup in the future.

If this capability is not required by your application, this item should be excluded from the application capability statement JSON file.

Refer following documentation for more details:

Property Description
minVersion The minimum version of the secure storage API that the device must support. Value should be as per Semantic Versioning 2.0.0 (https://semver.org/). Example 2.0.0

Notice

If your IEDK version is older version than 1.9.0, it does not provide support for secure storage.

Secure Storage Version IEDK Version
Secure storage is not available < 1.9.0
1.0.0 1.9.0 <= X < 1.19.0
2.0.0 >= 1.19.0

ie.device.system.docker

What is the minimum required Docker engine version for your application, on a target device?

If your application does not require a specific version of Docker supported by the device, this item should be excluded from the application capability statement JSON file.

Property Description
minVersion The minimum version of Docker engine supported by your application. Example 20.0.0, 23.0.3

NOTICE

We take exactly 3 digits(MAJOR.MINOR.PATCH) of version number for comparison.

ie.device.system.hostnet

In the context of containerization and Linux networking, the term "host network namespace" refers to the network namespace of the host operating system. In Docker context, this property specifies whether a container should use the host's network namespace.

If this capability is not needed by your application, this item should be excluded from the application capability statement JSON file. Include this item only if your application requires the use of the host's network namespace.

ie.device.kernel

What is the minimum Linux kernel version needed by your application?

If your application does not require a specific kernel version supported by the device, this item should be excluded from the application capability statement JSON file.

Property Description
minVersion Minimum Linux Kernel version required by the application. Example 6.5.0-15-generic.
arch The specific architecture required by the application. Supported values are only x86_64 or arm64.

Notice

We take exactly 3 digits(MAJOR.MINOR.PATCH) of version number for comparison.

ie.device.system.shutdown

If this capability is not needed by your application, this item should be excluded from the application capability statement JSON file. Include this item only if your application requires the system shutdown operation.

Refer Graceful Shutdown API for more information.

Property Description
minVersion The minimum version of shutdown API required by your application. Value should be as per Semantic Versioning 2.0.0 (https://semver.org/). Example 2.0.0

ie.device.system.iedk

What is the minimum version of IEDK required by your application?

If your application does not require a specific version of IEDK supported by the device, this item should be excluded from the application capability statement JSON file.

Property Description
minVersion The minimum IEDK version required by your application, should be decided based on the availability of used APIs and services from IEDK. Value should be as per Semantic Versioning 2.0.0 (https://semver.org/). Example, 1.21.0. Refer to the List of Release Notes section of the Industrial Edge documentation to find out which features have been released in which IEDK version.

ie.device.hardware.cpu_allocation

Does your application require CPU allocation?

If this capability is not needed by your application, this item should be excluded from the application capability statement JSON file. Include this item only if your application requires CPU cores which are configured as "isolatable" by a device.

Check the Resource Manager documentation for details.

Property Description
core The number of isolatable CPU cores required by the application. Value should be integer, such as 2.
optional Boolean flag with either true or false values. If the flag is set to true, it means the application optionally requires the capability.

ie.device.hardware.gpu_allocation

Does your application require GPU allocation?

If this capability is not needed by your application, this item should be excluded from the application capability statement JSON file. Include this item only if your application requires accessing to the GPU Card available on a target device.

Check the Resource Manager documentation for details.

Property Description
optional Boolean flag with either true or false values. If the flag is set to true, it means the application optionally requires the capability.

ie.device.hardware.gpio

Does your device require GPIO allocation?

If this capability is not needed by your application, this item should be excluded from the application capability statement JSON file. Include this item only if your application requires accessing to the General Purpose I/O (GPIO) chip available on a target device.

Check the Resource Manager documentation for details.

Property Description
optional Boolean flag with either true or false values. If the flag is set to true, it means the application optionally requires the capability.

ie.device.hardware.nic_allocation

Does your application require NIC allocation?

A network interface is a hardware component that connects a device to a network. This capability manages the NIC and its other properties.

If this capability is not needed by your application, this item should be excluded from the application capability statement JSON file. Include this item only if your application requires network interfaces, which are configured as "isolatable" by a device.

Refer to Resource Manager documentation for details.

Property Description
nicCount The number of isolatable network interfaces required by the application. Value should be integer, such as 2.
optional Boolean flag with either true or false values. If the flag is set to true, it means the application optionally requires the capability.

ie.device.hardware.memory

Specify the required memory (in MB) for your application.

This capability item is mandatory to be filled in the application capability statement JSON file.

Property Description
requiredInMB Memory in megabytes required by the application. Value should be integer. Example 200 .

ie.device.system.shared_memory

Shared memory is memory that may be simultaneously accessed by multiple programs with an intent to provide communication among them or avoid redundant copies.

An application on the host system can allocate memory through the resource manager, and other applications can read from and write to this memory.

If this capability is not needed by your application, this item should be excluded from the application capability statement JSON file. Include this item only if your application requires shared memory.

Refer to Resource Manager documentation for details.

Property Description
optional Boolean flag with either true or false values. If the flag is set to true, it means the application optionally requires the capability.

NOTICE

  • The values for applicationId, applicationName, version, minVersion, arch, core, optional, requiredInMB, and nicCount are currently empty (or default value) in the JSON file. Make sure to update them with the appropriate values as per your application's requirements.
  • Ensure not to add any extra capabilities or properties to the provided JSON.