Home

Discovery API Configuration

Generic selectors
Exact matches only
Search in title
Search in content
Post Type Selectors
page

Discovery API

An open, read-only OData API that lets external tools discover how the ASAPIO Integration Add-on is configured on a customer's SAP system — installed connector types, configured connections, and inbound/outbound interfaces, including status flags, endpoint details, linked events, and header attributes.

Overview

The Discovery API exposes the ASAPIO Integration Add-on configuration in a discoverable, read-only OData model. Use it to inspect which connectors are installed, how connections are configured, and which interfaces run on top of them.

Who uses it

The API is open to partners. It is consumed, for example, by:

  • the Whitepaper.id Integration Cockpit, and
  • the Landscape Explorer in the ASAPIO Event Studio.

Operating model

  • The API runs on the customer's own SAP instance and is operated there together with the ASAPIO Integration Add-on — there is no separate deployment.
  • It is read-only: consumers can discover and visualise the integration configuration, but cannot change it through this API.
  • Availability follows the ASAPIO Integration Add-on on that instance.

Availability

  • The Discovery API is part of the ASAPIO Integration Add-on as of release 9.32607 ("July 2026").
  • For earlier releases, and for the current OEM release for SAP Advanced Event Mesh, the API is shipped as a separate installation file — please request your additional download / installation file from ASAPIO.

Enabling the OData service

The Discovery API is an OData V2 service registered through SAP Gateway. After the ASAPIO Integration Add-on is installed, an administrator activates the service once per system. The procedure is the same for SAP ECC (with embedded SAP Gateway, component SAP_GWFND) and SAP S/4HANA.

Prerequisites

  • The ASAPIO Integration Add-on is installed (see Availability).
  • The SAP Gateway / OData foundation (SAP_GWFND) is available and the Gateway framework is active.
  • You hold administration authorization for the Gateway service-maintenance transactions.

Activate the service

  1. Open transaction /IWFND/MAINT_SERVICE (Activate and Maintain Services).
  2. Choose Add Service.
  3. Enter the System Alias: use LOCAL for an embedded Gateway deployment (the default on S/4HANA and on most ECC systems), or your backend alias for a hub deployment.
  4. Search for the Discovery API technical service name as listed in the ASAPIO installation note, then select it.
  5. Choose Add Selected Services, assign a package and transport (or local $TMP), and confirm. The service and its ICF node are registered and activated.
  6. Confirm the service shows an active (green) status in /IWFND/MAINT_SERVICE, and that its node under /sap/opu/odata/… is active in transaction SICF.

Test the activation

Call the service metadata with the SAP Gateway Client (/IWFND/GW_CLIENT) or a browser:

GET /sap/opu/odata/<namespace>/<SERVICE_NAME>/$metadata

A 200 OK response returning the EDMX metadata document confirms the service is reachable. You can then call the entity sets described in the API Reference.

Authorization

  • All endpoints require display authorization for the ASAPIO configuration (authorization object /ASADEV/CU, activity 03).
  • If the authorization is missing, the request fails with a business error ("No authorization …").
  • Access restriction per user or instance is not handled inside the service — it must be configured at the calling system or user-permission level.

API Reference

Connectors

GET/ConnectorSetList installed connectors

Returns all installed connector types. Non-installed connectors are excluded, so every result has isInstalled = true. Sorted by ConnectorId.

Query parameters
ParameterInTypeDescription
$filterquerystringSupports ConnectionId eq '…' and InterfaceId eq '…'. Other fields may not be honored.
$topqueryintegerMaximum number of records to return.
$skipqueryintegerNumber of records to skip (paging).
Responses

200 OKapplication/json — array of Connector.

{
  "d": {
    "results": [
      {
        "ConnectorId": "AZURE",
        "isInstalled": true,
        "isActive": true,
        "HeaderAttributes": "REGION=westeurope,RETRY=3",
        "LoadType": "Real-time",
        "DataLayer": "ASAPIO Payload",
        "ASAPIOPayload": "ZACI_SALESORDER",
        "ASAPIOPayloadVersion": "0001",
        "TableView": ""
      }
    ]
  }
}
Behaviour
  • Reads connector types from the Connector Catalog (/ASADEV/ACI_ADPT).
  • isInstalled: true if the handler class exists in the ABAP class repository (SEOCLASS).
  • isActive: true if any Connection Definition uses this connector type.
GET/ConnectorSet('{ConnectorId}')Get a single connector

Returns one connector type by key.

Path parameters
ParameterInTypeDescription
ConnectorIdpathstringrequired Connector type identifier.
Responses

200 OK — a single Connector.
404 Not Found — connector type not found in either the Outbound (/ASADEV/AMR_OBJ) or Inbound (/ASADEV/AMR_OB_I) source.

Behaviour
  • Single-entity lookup: Outbound table first, then Inbound. If found in neither → resource-not-found error.

Connections

GET/ConnectionSetList all connections

Returns all configured connections, read from the Connection Definitions (/ASADEV/AMR_CONN).

Query parameters
ParameterInTypeDescription
$topqueryintegerMaximum number of records to return.
$skipqueryintegerNumber of records to skip (paging).
Responses

200 OK — array of Connection.
If no connections exist for the request, the service raises a "No data found" error (not an empty list).

Behaviour
  • Endpoint enrichment: if RFCDest is an HTTP destination (type G/H), Hostname/Port/SSL are resolved via RFC_READ_HTTP_DESTINATION.
GET/ConnectorSet('{ConnectorId}')/ToConnectionsList connections for a connector

Navigation property. Returns the connections that use a given connector type.

Path parameters
ParameterInTypeDescription
ConnectorIdpathstringrequired Connector type identifier.
Responses

200 OK — array of Connection where ConnectionType = ConnectorId.

Interfaces

GET/InterfaceSetList all interfaces

Returns all inbound and outbound interfaces. For large landscapes, prefer navigation or a $filter by ConnectionId (see below) to keep responses small.

Query parameters
ParameterInTypeDescription
$filterquerystringSupports ConnectionId eq '…' and InterfaceId eq '…'. Other fields may not be honored.
$topqueryintegerMaximum number of records to return.
$skipqueryintegerNumber of records to skip (paging).
Responses

200 OK — array of Interface.

Behaviour
  • Consistent sorting: instance ASC, object ASC, direction DESC.
GET/ConnectionSet('{ConnectionId}')/ToInterfacesList interfaces for a connection (preferred)

Navigation property and the recommended way to read interfaces — it scopes the result to a single connection.

Path parameters
ParameterInTypeDescription
ConnectionIdpathstringrequired ASAPIO instance identifier (primary anchor).
Responses

200 OK — array of Interface for the connection.

GET/InterfaceSet(InterfaceId='{InterfaceId}',ConnectionId='{ConnectionId}')Get a single interface

Returns one interface by its composite key.

Path parameters
ParameterInTypeDescription
InterfaceIdpathstringrequired Interface identifier.
ConnectionIdpathstringrequired Parent connection identifier.
Responses

200 OK — a single Interface.
404 Not Found — not found in either the Outbound (/ASADEV/AMR_OBJ) or Inbound (/ASADEV/AMR_OB_I) source.

{
  "d": {
    "InterfaceId": "SALESORDER_OUT",
    "ConnectionId": "PRD_AZURE",
    "Direction": "Outbound",
    "MessageType": "BUS2032",
    "lastRun": "2026-04-24T09:15:00Z",
    "isActive": true,
    "Events": "CREATED,CHANGED",
    "HeaderAttributes": "TOPIC=sales-orders",
    "LoadType": "Real-time",
    "DataLayer": "ASAPIO Payload",
    "ASAPIOPayload": "ZACI_SALESORDER",
    "ASAPIOPayloadVersion": "0001",
    "TableView": ""
  }
}
isActive determination
  • Step 1 — Classic BOR event linkage: if MessageType is set, look up SWFDEVTYP, then check SWFDEVENA. If enabled → isActive = true.
  • Step 2 — Event Studio runtime log: if Step 1 did not match and /ASADEV/DATA_LOG exists, check for an active record matching ConnectionId + InterfaceId with isactive = 'X'. If found → isActive = true.
  • Note: activation check is not supported for RAP linkages created outside Event Studio.

Schemas

SCHEMAConnectorConnectorSet · key: ConnectorId
FieldTypeNotes
ConnectorIdStringUnique connector type identifier.
isInstalledBooleanAlways true — non-installed connectors are excluded from results.
isActiveBooleantrue if at least one connection uses this connector type.
HeaderAttributesStringComma-separated NAME=VALUE pairs from /ASADEV/ACI_HATT.
LoadTypeStringOutbound only. I → Incremental, P → Packed, F → Full load.
DataLayerStringOutbound only. Payload present → ASAPIO Payload; else table/view → Table/View; else → Custom.
ASAPIOPayloadString (32)Outbound only: payload view name.
ASAPIOPayloadVersionString (16)Outbound only: payload version.
TableViewString (32)Outbound only: table or view name.
SCHEMAConnectionConnectionSet · key: ConnectionId
FieldTypeNotes
ConnectionIdString (15)ASAPIO instance identifier, primary navigation anchor.
ConnectionTypeStringConnector type used by this connection.
RFCDestStringRFC destination name.
HostnameStringResolved host, only for HTTP destinations.
PortStringResolved port, only for HTTP destinations.
SSLBooleanSSL flag, only for HTTP destinations.
SCHEMAInterfaceInterfaceSet · key: InterfaceId + ConnectionId
FieldTypeNotes
InterfaceIdString (30)Interface identifier.
ConnectionIdString (15)Parent connection, use as primary filter.
DirectionStringInbound or Outbound.
MessageTypeStringSAP message/event type.
lastRunStringTimestamp of last execution.
isActiveBooleanActivation status (see the single-interface operation for the logic).
EventsStringComma-separated linked events from SWFDEVTYP (e.g. CREATED,CHANGED). Populated regardless of isActive.
HeaderAttributesStringComma-separated NAME=VALUE pairs from /ASADEV/ACI_HATT, joined by INSTANCE + OBJECT.
LoadTypeStringOutbound only. I → Incremental, P → Packed, F → Full load.
DataLayerStringOutbound only. Payload present → ASAPIO Payload; else table/view → Table/View; else → Custom.
ASAPIOPayloadString (32)Outbound only: payload view name.
ASAPIOPayloadVersionString (16)Outbound only: payload version.
TableViewString (32)Outbound only: table or view name.

Practical Consumer Notes

  • ConnectionId is the ASAPIO instance key and primary navigation anchor.
  • Hostname / Port / SSL are populated only for HTTP-type RFC destinations.
  • ConnectorSet intentionally excludes non-installed connector types.
  • For interfaces, prefer navigation or $filter by ConnectionId — this keeps responses small and predictable:
    • GET /ConnectionSet('{id}')/ToInterfaces
    • GET /InterfaceSet?$filter=ConnectionId eq '{id}'
  • Events and HeaderAttributes are always populated regardless of isActive status.
  • HeaderAttributes are returned as a flat NAME=VALUE string — split on comma if individual values are needed.
Scroll to Top