Async API Overview
ERP Connectivity exposes asynchronous response notifications via a message broker (RabbitMQ). External clients call the API (e.g. REST or SOAP) and receive an immediate response. Processing happens asynchronously, and once completed ERP Connectivity publishes a notification message to the broker. Clients subscribe to the configured topic and use the URI in the message payload to retrieve the processing result.
A second notification mechanism is available for connector packages that listen to data changes from the connected external system (e.g. product setup changes in SAP). In this case there is no prior request from the client to ERP Connectivity API. ERP Connectivity receives a data push from SAP and publishes a notification to the broker when new data is available.
See Handle execution result events for response examples.
Topic conventions
Topics are configured per package and environment. The examples below use the following patterns for readability:
request: REST API (HTTP) or SAP push
result: bosch.nexeed.business.event.{packageType}.response.{area}.{operation}
The available topics are defined by the installed packages.
Message envelope
All response notifications use the Bosch.Foundation.Messaging.Shared.Model.Message envelope.
| Field | Type | Description |
|---|---|---|
correlationId |
string (uuid) |
Client-defined ID to correlate REST request and async response. |
msgId |
string (uuid) |
Unique ID of this message. |
msgSender |
string (url) |
Sender identifier (the ERP Connectivity URL). |
msgSendTime |
string (date-time) |
Send timestamp in ISO 8601 format. |
msgTopic |
string |
Topic used to route the message on the broker. |
payload |
object |
Domain-specific payload. Contains the result URI. |
All payloads contain the following fields:
| Field | Type | Description |
|---|---|---|
tenantId |
string (uuid) |
The tenant ID for which the package was executed. |
eventId |
string (uuid) |
The unique ID of this event. |
eventTime |
string (date-time) |
Send timestamp in ISO 8601 format. |
url |
string (url) |
The URL to retrieve the execution result via REST API. |
messageState |
string |
The state of the execution result, possible values (Succeeded, Failed, FailedExternally, OverallTimeout, Invalid). |
messageId |
object |
The internal ERPConnectivity unique id of the corresponding message flow. |
$type |
object |
The payload’s type name. |
Response payload example
{
"correlationId": "e7a9b1f6-3c90-4f28-9265-fba158e05903",
"msgId": "ad43a5c4-7c6e-42ce-ac01-af0cf451b06f",
"msgSender": "https://cljvm00517.emea.bosch.com/erpconn",
"msgSendTime": "2026-01-30T05:33:12.870352+00:00",
"msgTopic": "bosch.nexeed.business.event.connector-package.response.warehouse.task-creation",
"payload": {
"tenantId": "7311ea8c-5d48-43fe-acf9-980eedf24b6c",
"eventId": "b62dd2aa-b1a3-4a3f-93f1-40f8c13fb1e8",
"eventTime": "2026-01-30T05:33:12.8703629+00:00",
"url": "https://cljvm00517.emea.bosch.com/erpconn/rest/v2/7311ea8c-5d48-43fe-acf9-980eedf24b6c/warehouse/task-creation/result/4530f83c-3f4e-46dd-8c0c-b36a3ff85d55",
"messageState": "Failed",
"messageId": "4530f83c-3f4e-46dd-8c0c-b36a3ff85d55",
"$type": "urn:bosch:nexeed:erpconn:PackageResponse"
}
}
AsyncAPI specification
See API Specification for the rendered AsyncAPI document.