Event Library

The Event Library, accessed on the Execution ribbon, is a catalog of external and internal system operations available for integration with your model through interfaces and operations.

It describes message-driven APIs interactions for multiple protocols.

Each operation performs a specific action (categorized as send or receive) via a protocol, with a defined address and optional parameters. Related operations are grouped into interfaces, typically sharing the same server URL or broker.

Interfaces represent a reference to an external system. Each interface has operations that represents an interaction that can be done with the system.

event library

For example, in the image above, RabbitMQ is an interface with two operations, Receive from queue and Send to queue, and Kafka is an interface with one operation Receive from topic.

AsyncAPI and the Event Library

The Event Library is designed following the AsyncAPI 3.0.0 specification. An interface is closely related to an AsyncAPI server and operations are closely related to operations.

Interfaces

Interfaces have the following attributes.

Name

A user label to identify this interface. This is for documentation purpose only.

Description

A user entered description of the interface. This is for documentation purpose only.

Host

The base URL of the server/broker. It is always mandatory. The host can’t contain parameters.

Security Type

The required identity type. The next table gives more information on the different security types.

Authorization for a server can be configured with these types.

None

The server/broker service does not require authorization.

Http

The server/broker service requires HTTP authentication that is defined as a Header with the format: Authorization: <scheme> <credentials>. The scheme can be entered and is pre-filled by default with basic. IANA define a list of schemes for HTTP authentication.

Api Key

The server/broker service requires an API key as a form of authorization. The In field represents the location where the API key will be sent (query, header, cookie). The name is the name of the query, header or cookie that will contain the API key.

OAuth2

The server/broker service follows one of the OAUTH 2 flows. Flows currently supported are authorization code, client credentials, implicit and password. Based on the selected flow, the different URLs need to be entered. These URLs are typically provided by your service. The automation supports services with and without refresh tokens (therefore that field can be left blank if not supported by your service).

OAuth

The server/broker service follows the OAuth (v1) flow. This type should not be used since there are flaws in the OAuth v1 specification that prevents it from being consistently implemented across vendors. Note that our implementation is aligned with the Twitter implementation but there is no guarantee that it will properly work with other vendors.

Only the definition of the security is done in the Event Library. The actual identity secrets used are later connected at deployment time. Your model does not contain secret information and identities are kept separate from your models.

Operations

Each operation represents a send or receive action. Operations have the following properties.

Name

A user label to identify this operation. This is for documentation purpose only.

Description

A user entered description of the operation. This is for documentation purpose only.

Type

The datatype of the message.

Attributes

Defines the operation configuration. It relies on protocol implementation and operation action.

Attributes

Attributes allow to set configuration per operation.

Depending on protocol, address represents a path to a resource.

Address

Address is mandatory and can be parametrized with additional attributes mapped by name. A tooltip is made available to explain what address represents depending on the protocol.

Other attributes

If an attribute is not mapped by name to address parameter, it is made available depending on supported configuration based on implemented protocol and action.

There is a dedicated support to some of the attributes. A special value can be specified and is resolved at deploy time based on the service deployment information. It applies to below listed attributes:

  • $service-env$: This value set to environment attribute will be replaced by the environment the service is deployed to

  • $service-group$: This value set to group attribute will be replaced by the group the service is deployed to

  • $service-artifact$: This value set to artifact attribute will be replaced by the name of the deployed service

  • $service-version$: This value set to version attribute will be replaced by the version of the deployed service