Restrictions

Please consider following restrictions.

Service plan

What Description
Namespaces max. 1 for Free plan
max. 1 for Starter plan
max. 10 for Standard plan
Managed connections / integrations max. 10 for Free plan - this number could be less in future
max. 10 for Starter plan - this number could be less in future
max. 10 for Standard plan
Client count per managed connection / integration max. 1 for Free plan
max. 2 for Starter plan
max. 3 for Standard plan
Data volume See Pricing & Conditions for Bosch IoT Things
Transactions See Pricing & Conditions for Bosch IoT Things

Identifier

What Description
Thing ID
Policy ID
✓ max. 256 characters
✓ must be unique and follow the pattern namespace:name

See additionally the rows below for Namespace, Thing name and Policy name.
Namespace ✓ max. 256 characters (together with Thing name and Policy name)

The namespace must conform to the reverse domain name notation (aka Java package format)
✓ must start with a lower- or uppercase character from a-z
✓ can use dots “.” to separate characters
✓ a dot “.” must be followed by a lower- or uppercase character from a-z
✓ numbers can be used
✓ underscore “_” can be used

See Namespace for examples.
Thing name (part after : in thing ID)

JSON keys of thing attributes

Feature ID

JSON keys of feature properties

Policy name (part after : in policy ID)

Policy label
✓ max. 256 characters (together with Namespace)
✓ may not be the wildcard operator *, due to the special meaning of this character for filtering
✓ may not contain the slash character /
✓ may not contain the control characters hex 00-1F to 7F-FF
✓ may contain special characters, but these have to be encoded/decoded according to the standard/format required for the respective communication channel
✓ additionally for Feature ID: may not look like or contain a placeholder (e.g. {{some:thing}})

See Decoding and encoding of special characters for details.
Message subject

Subject ID within policy (aka authorization subject)

Resource within policy
✓ max. 256 characters
✓ may not contain the control characters hex 00-1F to 7F-FF
✓ may contain special characters, but these have to be encoded/decoded according to the standard/format required for the respective communication channel

See Decoding and encoding of special characters for details.

Decoding and encoding of special characters

All APIs of the Bosch IoT Things service will expect encoding of input data and decoding of output data as required for the respective communication channel/protocol:

  • URL encoding for entities included in HTTP URLs (according to RFC 3986, i.e. %-escaping of most special characters)
  • HTTP conform delivery of HTTP header values (according to RFC 7230, Section 3.2.6)
  • JSON encoding in JSON content and Eclipse Ditto protocol message content (according to ECMA 404, The JSON Data Interchange Syntax, Chapter 9)
  • Respective encodings/decodings defined for AMQP/MQTT/Kafka (if needed according to the respective protocols):

Tip: No encoding/decoding is required when using Java with the Eclipse Ditto Java Client.

Sizes

What Description
Size of a thing max. 100 kB - complete content including all attributes, features, etc. in JSON representation
Size of thing - feature - property path max. 950 Byte
i.e. the complete path of a namespace - thing name - features - feature ID - properties - property key including all sub keys.
Applies also for the namespace - thing name - attributes - path
Size of a message max. 250 kB
Size of a policy max. 100 kB
OAuth scopes in a JWT 20 scopes
i.e. if your custom OAuth2 authorization provider issues a JWT with more than 20 scopes, we will only accept the first 20.
Authorization subjects max. 100
Size of header max. 5 kB - i.e the sum of all headers must not exceed this limit
Top-level entries in a custom header max. 100
A header x-things-parameter-order is used to provide the correct order of JSON payload.
JSON strings The null character \u0000 is forbidden
JSON integers The range of integer values allowed is from -9223372036854775808 to 9223372036854775807.
This is the limit of a 64 bit signed integer, also known as long integer.
Search index max. 950 Byte for the path
max. 950 Byte for the value
What Description
Managed connections / integrations
(e.g. to Bosch IoT Hub)
Max. 100 messages/second
(i.e. 100 emitted or consumed events or messages)
If a single connection receives more than 100 messages per second, back-pressure is applied and the consumption gets throttled.
Please contact us if more is needed.
Managed connections - HTTP forwarding Max. 100 requests can be queued for HTTP forwarding
If a single connection queues more than 100 HTTP requests, further events/messages/commands will be dropped instead of being forwarded.
For a Free plan this is a fixed limit.
Starter and Standard plans can however increase the client count, and/or additionally increase the HTTP parallelism from 1 up to 10.
WebSocket connections Max. 100 messages/second
(i.e. 100 emitted or consumed events or messages)
If a single connection receives more than 100 messages per second, back-pressure is applied and the consumption gets throttled.
Please contact us if more is needed.
WebSocket based integrations:
• Things protocol over WebSocket
• Ditto client (Java)
• Ditto JavaScript client - when using WebSocket API instead of HTTP API
WebSocket based integrations cannot be used to implement integrations with your own horizontally scaled application, because there is no support for load balancing of receiving events via WebSockets.
Each WebSocket connection of each node of your application cluster will receive all messages, and this would not help to do load balancing on your side.
Payload mapping Only supported for the Connections channel
Payload mapping: max. size of JavaScript code 50 KB
Payload mapping: max. execution time per message 500 msec. (single CPU core)
Payload mapping: max. stack depth 10 levels
Payload mapping: max. applied Ditto Protocol messages from one external message 10
A single JavaScript based payload mapping can at most create an array of 10 Ditto Protocol messages from one single external message.
Payload mapping: JavaScript language support JavaScript/ECMAScript language features according to Rhino Version 1.7.14 with a subset of ES5, 6, and 7. See http://mozilla.github.io/rhino/compat/engines.html for details.
Enrichment of events and messages It can take up to 2 minutes to reflect recent updates of the corresponding thing and its policy. Thus, especially for live communication, the “enriched” content might be slightly behind the current thing.
Search via a managed connection Search via a managed connection only works if the convention that Hub and Things use the exact same ID is disabled (disable the Option “Bosch IoT Hub/Things ID convention is enabled.” at the UI in the Sources section). In case you need to employ the search protocol via a managed connection, you will need to configure a fine-grained per-device access control. Otherwise, searching could result in information disclosure (i.e. it would allow one device to search and list other devices and their thing data).
Server-Sent Events (SSE) The Azure infrastructure does not allow SSE. Thus, in case you have booked our service plan on that infrastructure, you can not establish any SSE connection to our service.
Corporate information Data protection notice Legal information Support Free plans