GET /rest/v1/system/configs

Implementation notes

The GET request returns a list of all possible configuration keys for the tenant. Required Permission: TENANT_CONFIGURATION

Get all configuration parameters

CURL

$ curl 'https://management-api.host.com/rest/v1/system/configs/' -i -X GET

Request URL

GET /rest/v1/system/configs/ HTTP/1.1
Host: management-api.host.com

Response (Status 200)

Response fields

Path Type Description Allowed Values

['rollout.approval.enabled']

Boolean

The configuration key 'rollout.approval.enabled' defines if approval mode for Rollout Management is enabled.

['repository.actions.autoclose.enabled']

Boolean

The configuration key 'repository.actions.autoclose.enabled' defines if autoclose running actions with new Distribution Set assignment is enabled.

['user.confirmation.flow.enabled']

Boolean

The configuration key 'user.confirmation.flow.enabled' defines if confirmation is required when distribution set is assigned to target.

['authentication.gatewaytoken.enabled']

Boolean

The configuration key 'authentication.gatewaytoken.enabled' defines if the authentication mode 'gateway security token' is enabled.

['action.cleanup.enabled']

Boolean

The configuration key 'action.cleanup.enabled' defines if automatic cleanup of deployment actions is enabled.

['action.cleanup.actionExpiry']

Long

The configuration key 'action.cleanup.actionExpiry' defines the expiry time in milliseconds that needs to elapse before an action may be cleaned up.

['authentication.header.enabled']

Boolean

The configuration key 'authentication.header.enabled' defines if the authentication mode 'authority header' is enabled.

['maintenanceWindowPollCount']

Integer

The configuration key 'maintenanceWindowPollCount' defines the polling interval so that controller tries to poll at least these many times between the last polling and before start of maintenance window. The polling interval is bounded by configured pollingTime and minPollingTime. The polling interval is modified as per following scheme: pollingTime(@time=t) = (maintenanceWindowStartTime - t)/maintenanceWindowPollCount.

['authentication.targettoken.enabled']

Boolean

The configuration key 'authentication.targettoken.enabled' defines if the authentication mode 'target security token' is enabled.

['pollingTime']

String

The configuration key 'pollingTime' defines the time interval between two poll requests of a target.

['anonymous.download.enabled']

Boolean

The configuration key 'anonymous.download.enabled' defines if the anonymous download mode is enabled.

['dmf.enabled']

Boolean

The configuration key 'dmf.enabled' defines if Device Management Federation (DMF) API is enabled.

['authentication.header.authority']

String

The configuration key 'authentication.header.authority' defines the name of the 'authority header'.

['minPollingTime']

String

The configuration key 'minPollingTime' defines the smallest time interval permitted between two poll requests of a target.

['authentication.gatewaytoken.key']

String

The configuration key 'authentication.gatewaytoken.key' defines the key of the gateway security token.

['action.cleanup.actionStatus']

String

The configuration key 'action.cleanup.actionStatus' defines the list of action status that should be taken into account for the cleanup.

['pollingOverdueTime']

String

The configuration key 'pollingOverdueTime' defines the period of time after the SP server will recognize a target, which is not performing pull requests anymore.

['sie.enabled']

Boolean

The configuration key 'sie.enabled' defines if Service Integration Event (SIE) API is enabled.

['multi.assignments.enabled']

Boolean

The configuration key 'multi.assignments.enabled' defines if multiple distribution sets can be assigned to the same targets.

['cdn.validity.days']

Integer

The configuration key 'cdn.validity.days' defines days of validity for CDN URLs.

['batch.assignments.enabled']

Boolean

The configuration key 'batch.assignments.enabled' defines if distribution set can be assigned to multiple targets in a single batch message.

Response example

HTTP/1.1 200 OK
Content-Type: application/hal+json
Content-Length: 4756

{
  "user.confirmation.flow.enabled" : {
    "value" : false,
    "global" : true,
    "links" : [ {
      "rel" : "self",
      "href" : "https://management-api.host.com/rest/v1/system/configs/user.confirmation.flow.enabled"
    } ]
  },
  "sie.enabled" : {
    "value" : false,
    "global" : true,
    "links" : [ {
      "rel" : "self",
      "href" : "https://management-api.host.com/rest/v1/system/configs/sie.enabled"
    } ]
  },
  "anonymous.download.enabled" : {
    "value" : false,
    "global" : true,
    "links" : [ {
      "rel" : "self",
      "href" : "https://management-api.host.com/rest/v1/system/configs/anonymous.download.enabled"
    } ]
  },
  "authentication.gatewaytoken.enabled" : {
    "value" : false,
    "global" : true,
    "links" : [ {
      "rel" : "self",
      "href" : "https://management-api.host.com/rest/v1/system/configs/authentication.gatewaytoken.enabled"
    } ]
  },
  "authentication.header.authority" : {
    "value" : "",
    "global" : true,
    "links" : [ {
      "rel" : "self",
      "href" : "https://management-api.host.com/rest/v1/system/configs/authentication.header.authority"
    } ]
  },
  "authentication.gatewaytoken.key" : {
    "value" : "",
    "global" : true,
    "links" : [ {
      "rel" : "self",
      "href" : "https://management-api.host.com/rest/v1/system/configs/authentication.gatewaytoken.key"
    } ]
  },
  "action.cleanup.enabled" : {
    "value" : false,
    "global" : true,
    "links" : [ {
      "rel" : "self",
      "href" : "https://management-api.host.com/rest/v1/system/configs/action.cleanup.enabled"
    } ]
  },
  "action.cleanup.actionStatus" : {
    "value" : "CANCELED,ERROR",
    "global" : true,
    "links" : [ {
      "rel" : "self",
      "href" : "https://management-api.host.com/rest/v1/system/configs/action.cleanup.actionStatus"
    } ]
  },
  "pollingTime" : {
    "value" : "12:00:00",
    "global" : true,
    "links" : [ {
      "rel" : "self",
      "href" : "https://management-api.host.com/rest/v1/system/configs/pollingTime"
    } ]
  },
  "cdn.validity.days" : {
    "value" : 30,
    "global" : true,
    "links" : [ {
      "rel" : "self",
      "href" : "https://management-api.host.com/rest/v1/system/configs/cdn.validity.days"
    } ]
  },
  "authentication.targettoken.enabled" : {
    "value" : false,
    "global" : true,
    "links" : [ {
      "rel" : "self",
      "href" : "https://management-api.host.com/rest/v1/system/configs/authentication.targettoken.enabled"
    } ]
  },
  "rollout.approval.enabled" : {
    "value" : false,
    "global" : true,
    "links" : [ {
      "rel" : "self",
      "href" : "https://management-api.host.com/rest/v1/system/configs/rollout.approval.enabled"
    } ]
  },
  "maintenanceWindowPollCount" : {
    "value" : 3,
    "global" : true,
    "links" : [ {
      "rel" : "self",
      "href" : "https://management-api.host.com/rest/v1/system/configs/maintenanceWindowPollCount"
    } ]
  },
  "repository.actions.autoclose.enabled" : {
    "value" : false,
    "global" : true,
    "links" : [ {
      "rel" : "self",
      "href" : "https://management-api.host.com/rest/v1/system/configs/repository.actions.autoclose.enabled"
    } ]
  },
  "dmf.enabled" : {
    "value" : false,
    "global" : true,
    "links" : [ {
      "rel" : "self",
      "href" : "https://management-api.host.com/rest/v1/system/configs/dmf.enabled"
    } ]
  },
  "action.cleanup.actionExpiry" : {
    "value" : 2592000000,
    "global" : true,
    "links" : [ {
      "rel" : "self",
      "href" : "https://management-api.host.com/rest/v1/system/configs/action.cleanup.actionExpiry"
    } ]
  },
  "authentication.header.enabled" : {
    "value" : true,
    "global" : true,
    "links" : [ {
      "rel" : "self",
      "href" : "https://management-api.host.com/rest/v1/system/configs/authentication.header.enabled"
    } ]
  },
  "pollingOverdueTime" : {
    "value" : "23:59:59",
    "global" : true,
    "links" : [ {
      "rel" : "self",
      "href" : "https://management-api.host.com/rest/v1/system/configs/pollingOverdueTime"
    } ]
  },
  "minPollingTime" : {
    "value" : "00:00:30",
    "global" : true,
    "links" : [ {
      "rel" : "self",
      "href" : "https://management-api.host.com/rest/v1/system/configs/minPollingTime"
    } ]
  },
  "batch.assignments.enabled" : {
    "value" : false,
    "global" : true,
    "links" : [ {
      "rel" : "self",
      "href" : "https://management-api.host.com/rest/v1/system/configs/batch.assignments.enabled"
    } ]
  },
  "multi.assignments.enabled" : {
    "value" : false,
    "global" : true,
    "links" : [ {
      "rel" : "self",
      "href" : "https://management-api.host.com/rest/v1/system/configs/multi.assignments.enabled"
    } ]
  }
}

Error responses

HTTP Status Code Reason Response Model

400 Bad Request

Bad Request - e.g. invalid parameters

401 Unauthorized

The request requires user authentication.

403 Forbidden

Insufficient permissions, entity is not allowed to be changed (i.e. read-only) or data volume restriction applies.

See Error body

404 Not Found

Not Found Target.

See Error body

405 Method Not Allowed

The http request method is not allowed on the resource.

406 Not Acceptable

In case accept header is specified and not application/json.

429 Too Many Request

Too many requests. The server will refuse further attempts and the client has to wait another second.

GET /rest/v1/system/configs/{keyName}

Implementation notes

The GET request returns the configuration value of a specific configuration key for the tenant. Required Permission: TENANT_CONFIGURATION

Read a configuration parameter

CURL

$ curl 'https://management-api.host.com/rest/v1/system/configs/authentication.gatewaytoken.key/' -i -X GET

Request URL

GET /rest/v1/system/configs/authentication.gatewaytoken.key/ HTTP/1.1
Host: management-api.host.com

Request path parameter

Parameter Description

keyName

The name of the configuration parameter.

Response (Status 200)

Response fields

Path Type Description Allowed Values

value

String

Current value of of configuration parameter.

global

Boolean

true - if the current value is the global configuration value, false - if there is a tenant specific value configured.

createdBy

Number

Entity was originally created by (User, AMQP-Controller, anonymous etc.)

createdAt

String

Entity was originally created at (timestamp UTC in milliseconds)

lastModifiedAt

Number

Entity was last modified at (timestamp UTC in milliseconds)

lastModifiedBy

String

Entity was last modified by (User, AMQP-Controller, anonymous etc.)

Response example

HTTP/1.1 200 OK
Content-Type: application/hal+json
Content-Length: 182

{
  "value" : "",
  "global" : true,
  "_links" : {
    "self" : {
      "href" : "https://management-api.host.com/rest/v1/system/configs/authentication.gatewaytoken.key"
    }
  }
}

Error responses

HTTP Status Code Reason Response Model

400 Bad Request

Bad Request - e.g. invalid parameters

401 Unauthorized

The request requires user authentication.

403 Forbidden

Insufficient permissions, entity is not allowed to be changed (i.e. read-only) or data volume restriction applies.

See Error body

404 Not Found

Not Found Target.

See Error body

405 Method Not Allowed

The http request method is not allowed on the resource.

406 Not Acceptable

In case accept header is specified and not application/json.

429 Too Many Request

Too many requests. The server will refuse further attempts and the client has to wait another second.

PUT /rest/v1/system/configs/{keyName}

Implementation notes

The PUT request changes a configuration value of a specific configuration key for the tenant. Required Permission: TENANT_CONFIGURATION

Change a configuration parameter

CURL

$ curl 'https://management-api.host.com/rest/v1/system/configs/authentication.gatewaytoken.key/' -i -X PUT \
    -H 'Content-Type: application/json' \
    -d '{
  "value" : "exampleToken"
}'

Request URL

PUT /rest/v1/system/configs/authentication.gatewaytoken.key/ HTTP/1.1
Content-Type: application/json
Content-Length: 30
Host: management-api.host.com

{
  "value" : "exampleToken"
}

Request path parameter

Parameter Description

keyName

The name of the configuration parameter.

Request fields

Path Type Description Allowed Values Mandatory

value

String

Current value of of configuration parameter.

X

Response (Status 200)

Response fields

Path Type Description Allowed Values

value

String

Current value of of configuration parameter.

global

Boolean

true - if the current value is the global configuration value, false - if there is a tenant specific value configured.

createdBy

Number

Entity was originally created by (User, AMQP-Controller, anonymous etc.)

createdAt

String

Entity was originally created at (timestamp UTC in milliseconds)

lastModifiedAt

Number

Entity was last modified at (timestamp UTC in milliseconds)

lastModifiedBy

String

Entity was last modified by (User, AMQP-Controller, anonymous etc.)

Response example

HTTP/1.1 200 OK
Content-Type: application/hal+json
Content-Length: 319

{
  "value" : "exampleToken",
  "lastModifiedAt" : 1691065726996,
  "lastModifiedBy" : "bumlux",
  "createdAt" : 1691065726996,
  "createdBy" : "bumlux",
  "global" : false,
  "_links" : {
    "self" : {
      "href" : "https://management-api.host.com/rest/v1/system/configs/authentication.gatewaytoken.key"
    }
  }
}

Error responses

HTTP Status Code Reason Response Model

400 Bad Request

Bad Request - e.g. invalid parameters

401 Unauthorized

The request requires user authentication.

403 Forbidden

Insufficient permissions, entity is not allowed to be changed (i.e. read-only) or data volume restriction applies.

See Error body

404 Not Found

Not Found Target.

See Error body

405 Method Not Allowed

The http request method is not allowed on the resource.

406 Not Acceptable

In case accept header is specified and not application/json.

409 Conflict

E.g. in case an entity is created or modified by another user in another request at the same time. You may retry your modification request.

See Error body

415 Unsupported Media Type

The request was attempt with a media-type which is not supported by the server for this resource.

429 Too Many Request

Too many requests. The server will refuse further attempts and the client has to wait another second.

DELETE /rest/v1/system/configs/{keyName}

Implementation notes

The DELETE request removes a tenant specific configuration value for the tenant. Afterwards the global default value is used. Required Permission: TENANT_CONFIGURATION

Removes a configuration parameter

CURL

$ curl 'https://management-api.host.com/rest/v1/system/configs/authentication.gatewaytoken.key/' -i -X DELETE

Request URL

DELETE /rest/v1/system/configs/authentication.gatewaytoken.key/ HTTP/1.1
Host: management-api.host.com

Request path parameter

Parameter Description

keyName

The name of the configuration parameter.

Error responses

HTTP Status Code Reason Response Model

400 Bad Request

Bad Request - e.g. invalid parameters

401 Unauthorized

The request requires user authentication.

403 Forbidden

Insufficient permissions, entity is not allowed to be changed (i.e. read-only) or data volume restriction applies.

See Error body

404 Not Found

Not Found Target.

See Error body

405 Method Not Allowed

The http request method is not allowed on the resource.

406 Not Acceptable

In case accept header is specified and not application/json.

429 Too Many Request

Too many requests. The server will refuse further attempts and the client has to wait another second.

GET /rest/v1/system/quota

Implementation notes

Handles the GET request of retrieving all service plan related quotas from Bosch IoT Rollouts in alphabetical order. Required permission: TENANT_CONFIGURATION

CURL

$ curl 'https://management-api.host.com/rest/v1/system/quota' -i -X GET

Request URL

A GET request is used to access the quotas

GET /rest/v1/system/quota HTTP/1.1
Host: management-api.host.com

Response (Status 200)

Response fields

Path Type Description Allowed Values

['TARGET']

Object

Representing the limit and current used amount of the 'TARGET' quota.

['TARGET_TAG']

Object

Representing the limit and current used amount of the 'TARGET_TAG' quota.

['TARGET_TYPE']

Object

Representing the limit and current used amount of the 'TARGET_TYPE' quota.

['TARGET_FILTER_QUERY']

Object

Representing the limit and current used amount of the 'TARGET_FILTER_QUERY' quota.

['DISTRIBUTION_SET']

Object

Representing the limit and current used amount of the 'DISTRIBUTION_SET' quota.

['DISTRIBUTION_SET_TYPE']

Object

Representing the limit and current used amount of the 'DISTRIBUTION_SET_TYPE' quota.

['DISTRIBUTION_SET_TAG']

Object

Representing the limit and current used amount of the 'DISTRIBUTION_SET_TAG' quota.

['ROLLOUT']

Object

Representing the limit and current used amount of the 'ROLLOUT' quota.

['SOFTWARE_MODULE']

Object

Representing the limit and current used amount of the 'SOFTWARE_MODULE' quota.

['SOFTWARE_MODULE_TYPE']

Object

Representing the limit and current used amount of the 'SOFTWARE_MODULE_TYPE' quota.

['LOCAL_USER']

Object

Representing the limit and current used amount of the 'LOCAL_USER' quota.

['USER_ROLE']

Object

Representing the limit and current used amount of the 'USER_ROLE' quota.

['ARTIFACT_STORAGE']

Object

Representing the limit and current used amount of the 'ARTIFACT_STORAGE' quota.(Measured in MegaBytes)

Response example

HTTP/1.1 200 OK
Content-Type: application/hal+json
Content-Length: 2576

{
  "ARTIFACT_STORAGE" : {
    "limit" : 1073741824,
    "used" : 0,
    "links" : [ {
      "rel" : "self",
      "href" : "https://management-api.host.com/rest/v1/system/quota/ARTIFACT_STORAGE"
    } ]
  },
  "DISTRIBUTION_SET" : {
    "limit" : 200000,
    "used" : 13,
    "links" : [ {
      "rel" : "self",
      "href" : "https://management-api.host.com/rest/v1/system/quota/DISTRIBUTION_SET"
    } ]
  },
  "DISTRIBUTION_SET_TAG" : {
    "limit" : 1000,
    "used" : 0,
    "links" : [ {
      "rel" : "self",
      "href" : "https://management-api.host.com/rest/v1/system/quota/DISTRIBUTION_SET_TAG"
    } ]
  },
  "DISTRIBUTION_SET_TYPE" : {
    "limit" : 500,
    "used" : 23,
    "links" : [ {
      "rel" : "self",
      "href" : "https://management-api.host.com/rest/v1/system/quota/DISTRIBUTION_SET_TYPE"
    } ]
  },
  "LOCAL_USER" : {
    "limit" : 300,
    "used" : 0,
    "links" : [ {
      "rel" : "self",
      "href" : "https://management-api.host.com/rest/v1/system/quota/LOCAL_USER"
    } ]
  },
  "ROLLOUT" : {
    "limit" : 100000,
    "used" : 0,
    "links" : [ {
      "rel" : "self",
      "href" : "https://management-api.host.com/rest/v1/system/quota/ROLLOUT"
    } ]
  },
  "SOFTWARE_MODULE" : {
    "limit" : 300000,
    "used" : 40,
    "links" : [ {
      "rel" : "self",
      "href" : "https://management-api.host.com/rest/v1/system/quota/SOFTWARE_MODULE"
    } ]
  },
  "SOFTWARE_MODULE_TYPE" : {
    "limit" : 500,
    "used" : 15,
    "links" : [ {
      "rel" : "self",
      "href" : "https://management-api.host.com/rest/v1/system/quota/SOFTWARE_MODULE_TYPE"
    } ]
  },
  "TARGET" : {
    "limit" : 200000,
    "used" : 342,
    "links" : [ {
      "rel" : "self",
      "href" : "https://management-api.host.com/rest/v1/system/quota/TARGET"
    } ]
  },
  "TARGET_FILTER_QUERY" : {
    "limit" : 1000,
    "used" : 0,
    "links" : [ {
      "rel" : "self",
      "href" : "https://management-api.host.com/rest/v1/system/quota/TARGET_FILTER_QUERY"
    } ]
  },
  "TARGET_TAG" : {
    "limit" : 1000,
    "used" : 100,
    "links" : [ {
      "rel" : "self",
      "href" : "https://management-api.host.com/rest/v1/system/quota/TARGET_TAG"
    } ]
  },
  "TARGET_TYPE" : {
    "limit" : 500,
    "used" : 0,
    "links" : [ {
      "rel" : "self",
      "href" : "https://management-api.host.com/rest/v1/system/quota/TARGET_TYPE"
    } ]
  },
  "USER_ROLE" : {
    "limit" : 300,
    "used" : 0,
    "links" : [ {
      "rel" : "self",
      "href" : "https://management-api.host.com/rest/v1/system/quota/USER_ROLE"
    } ]
  }
}

Error responses

HTTP Status Code Reason Response Model

400 Bad Request

Bad Request - e.g. invalid parameters

401 Unauthorized

The request requires user authentication.

403 Forbidden

Insufficient permissions, entity is not allowed to be changed (i.e. read-only) or data volume restriction applies.

See Error body

405 Method Not Allowed

The http request method is not allowed on the resource.

406 Not Acceptable

In case accept header is specified and not application/json.

429 Too Many Request

Too many requests. The server will refuse further attempts and the client has to wait another second.

GET /rest/v1/system/quota/{key}

Implementation notes

Handles the GET request of retrieving a specific quotas from Bosch IoT Rollouts. Required permission: TENANT_CONFIGURATION

Get the current state of a specific quota

CURL

$ curl 'https://management-api.host.com/rest/v1/system/quota/TARGET' -i -X GET

Request URL

A GET request is used to access the targets

GET /rest/v1/system/quota/TARGET HTTP/1.1
Host: management-api.host.com

Request path parameter

Parameter Description

key

The quota identifier. Can be: [TARGET, TARGET_TAG, TARGET_TYPE, TARGET_FILTER_QUERY, DISTRIBUTION_SET, DISTRIBUTION_SET_TYPE, DISTRIBUTION_SET_TAG, ROLLOUT, SOFTWARE_MODULE, SOFTWARE_MODULE_TYPE, LOCAL_USER, USER_ROLE, ARTIFACT_STORAGE]

Response (Status 200)

Response fields

Path Type Description Allowed Values

limit

Number

The current limit based on the current booked plan.

used

Number

The current amount of used resources for the requested quota entity.

Response example

HTTP/1.1 200 OK
Content-Type: application/hal+json
Content-Length: 156

{
  "limit" : 200000,
  "used" : 382,
  "_links" : {
    "self" : {
      "href" : "https://management-api.host.com/rest/v1/system/quota/TARGET"
    }
  }
}

Error responses

HTTP Status Code Reason Response Model

400 Bad Request

Bad Request - e.g. invalid parameters

401 Unauthorized

The request requires user authentication.

403 Forbidden

Insufficient permissions, entity is not allowed to be changed (i.e. read-only) or data volume restriction applies.

See Error body

405 Method Not Allowed

The http request method is not allowed on the resource.

406 Not Acceptable

In case accept header is specified and not application/json.

429 Too Many Request

Too many requests. The server will refuse further attempts and the client has to wait another second.

Additional content

Error body

{
  "errorCode": "string",
  "exceptionClass": "string",
  "message": "string",
  "parameters": [
    "string"
  ]
}

Field description

Field

Description

errorCode

A error code/key set by server

exceptionClass

The involved exceptionClass

message

An error message set by the server

parameters

A list of parameters