Management API

Overview

The Management API is a RESTful API that enables to perform Create/Read/Update/Delete operations for provisioning targets (i.e. devices) and repository content (i.e. software). Based on the Management API you can manage and monitor software update operations via HTTP/HTTPS. The Management API supports Json payload with Hypermedia as well as filtering, sorting and paging. Furthermore the Management API provides permission based access control and standard roles as well as custom role creation.

The API is protected and needs authentication and authorization based on the security concept. For more details please refer to the Security Chapter.

API Version

Rollouts provides an consistent Management API interface that guarantees backwards compatibility for future releases by version control.

The current version of the Management API is version 1 (v1) with the URL https://api.eu1.bosch-iot-rollouts.com/rest/v1/

Eclipse hawkBit™ compatibility

Bosch IoT Rollouts Management API is fully compatible to Eclipse hawkBit’s Management API in version 1 (v1).

The hawkBit project provides Java representations that allow to decode the message body at runtime into a Java object. The Java models can also be used to encode Java objects into JSON bodies to send a requests to Rollouts. The project provides as well examples leveraging the Feign client.

The model is available on maven central, e.g. in maven:

<dependency>
  <groupId>org.eclipse.hawkbit</groupId>
  <artifactId>hawkbit-mgmt-api</artifactId>
  <version>0.2.0</version>
</dependency>

API Resources

Supported HTTP-methods are:

  • GET
  • POST
  • PUT
  • DELETE

Available Management APIs resources are:

Please be aware of the existence of a Quota.

Query parameter

For filtering, sorting and paging as well as using the Feed Item Query Language (FIQL) see chapter: Query Parameters

Headers

For all request an Authorization header has to be set.

  • Username: Tenant\username
  • Password: password

Also have a look to the Security chapter.

In addition, for POST and PUT requests the Content-Type header has to be set. Accepted content-types are.

  • application/json
  • application/hal+json

Request Body

Besides the relevant data (name, description, createdBy etc.) of a resource entity, a resource entity also has URIs (_links) to linked resources entities.

A distribution set entity may have for example URIs to artifacts, software modules, software module types and metadata.

"_links": {
    "artifacts": {
        "href": "https://api.eu1.bosch-iot-rollouts.com/rest/v1/softwaremodules/83/artifacts"
    },
    "self": {
        "href": "https://api.eu1.bosch-iot-rollouts.com/rest/v1/softwaremodules/83"
    },
    "type": {
        "href": "https://api.eu1.bosch-iot-rollouts.com/rest/v1/softwaremoduletypes/43"
    },
    "metadata": {
        "href": "https://api.eu1.bosch-iot-rollouts.com/rest/v1/softwaremodules/83/metadata?offset=0&limit=50"
    }