Rate Limiting
The Partner API uses rate limiting in order to prevent any intentional or accidental misusage of all involved resources that Bosch
offers to external partners.
When a partner exhausts its rate limit, the API will reject all further requests with a 429 Too Many Requests HTTP status code until
the specified time window passes in order to reset the rate limit.
Rate limits at the API level
| Endpoint Type | Rate Limit | Burst Limit |
|---|---|---|
With gatewayId in path | 1 request every 2 seconds | Up to 3 requests every second |
Without gatewayId in path | 2 requests every second | Up to 5 requests every second |
- For endpoints containing a
gatewayIdin the path, the limit applies per each combination of company, gateway, and endpoint, and path. - For other endpoints, the limit applies per each combination of company, endpoint, and path.
- Other path variables (such as
circuitIdortimeProgramId) are also considered for the rate limit (so, as independent endpoints, with their own rate limit state). This means that below 2 endpoints are completely independent for the rate limit perspective:GET /hvacs/123456789/heatingCircuits/1GET /hvacs/123456789/heatingCircuits/2
- The rate limiting strategy is based on the Token Bucket algorithm.
Specific rate limit for updating time program
Due to limitations at the appliance/gateway level, below endpoints have a more specific and restricted rule regarding their usage:
PUT /hvacs/{gatewayId}/dhwCircuits/{circuitId}/timePrograms/{timeProgramId}PUT /hvacs/{gatewayId}/heatingCircuits/{circuitId}/timePrograms/{timeProgramId}
For these endpoints there is a specific rate limit of 1 request every 10 seconds. For example, in the same gateway, we can update the time program of hc1 at the same time as hc2. Or, in the same circuit, update time program 1 at the same time as time program 2. But we cannot update the exact same time program, more than once, in the same 10 seconds time window.
Rate limit at the appliance level
The appliance can automatically block a functionality for a certain amount of time in order to protect against damage.