Accéder au contenu principal

APIs

Introduction​

APIs are a central mechanism for exposing and consuming functionality and data between applications.

To understand dependencies and data flows across the application landscape, APIs should be modelled explicitly and consistently.

This pattern describes a lightweight approach to API modelling in ADOIT using ArchiMate. It focuses on API ownership, consumption, and exchanged business information while deliberately avoiding technical implementation details and additional modelling constructs.

The approach represents a conscious trade-off between modelling detail and modelling effort. Rather than documenting every technical interaction and data flow explicitly, the pattern captures the information required for architecture-level transparency and analysis.

Design Principle​

Make APIs Explicit and Ownership Clear

From an Enterprise Architecture perspective, API modelling should make it clear which Application Components are connected and what business-relevant data is exchanged between them.

Modelling APIs explicitly makes these dependencies visible and supports integration transparency, dependency analysis, and impact assessment.

To balance architectural insight with modelling effort, this pattern uses a small set of ArchiMate elements and relationships. The predominant direction of data flow is derived from the provider-consumer structure rather than modelled through additional relationships.

Modelling Structure​

Architecture Diagram

  • APIs as Application Interfaces

    Each API is modelled as an Application Interface.

    The Application Interface:

    • represents the API through which an Application Component exposes functionality and data to other applications,
    • provides a stable architectural representation of the API,
    • remains independent of technical implementation details.

    APIs are not modelled implicitly through direct component-to-component connections.

  • API Ownership via Application Components

    Each API should have one clearly identified providing Application Component.

    The providing Application Component composes the Application Interface.

    The provider is responsible for the lifecycle and evolution of the API from an organizational and management perspective.

    Icon Application Component → composition → Application Interface

  • API Consumption Made Explicit

    Applications consuming an API are explicitly connected to the Application Interface.

    The Application Interface serves the consuming Application Component.

    Consumers therefore connect to the API rather than directly to the providing Application Component.

    Icon Application Interface → serving → Application Component

    This clearly distinguishes the provider from its consumers.

  • Main Data Flow Convention

    To keep modelling lightweight, the predominant direction of data flow is derived from the provider-consumer structure:

    Icon Providing Application Component → composition → Application Interface → serving → Consuming Application Component

    The Application Component that composes the API is considered the provider and the primary source of the relevant data. In this pattern, it is also considered responsible for the API from an organizational and management perspective, including its lifecycle and evolution.

    Application Components served by the API are considered consumers of the data.

    This convention deliberately simplifies the actual technical communication. APIs may involve requests, responses, and information flowing in both directions. These individual flows are not modelled separately.

    The pattern therefore represents the predominant business-relevant data flow rather than every technical interaction. This provides sufficient information for architecture-level dependency and impact analysis while keeping modelling and maintenance effort low.

  • Exchanged Data via Business Objects

    The business-relevant information exchanged through an API is represented using Business Objects.

    Business Objects describe meaningful business information rather than technical payload schemas and can be reused across multiple APIs.

    Icon Application Interface → access → Business Object

    Together with the provider-consumer convention, this identifies which business information is primarily provided through the API and which applications consume it.

  • Runtime Support via System Software

    Where relevant, API runtime platforms such as API gateways or container platforms can be modelled as System Software.

    System Software serves the Application Interface.

    Runtime support does not imply API ownership.

    Icon System Software → serving → Application Interface

    Runtime modelling is optional and should only be added where this information provides architectural value.

  • Technical Details as Attributes

    Technical details such as:

    • protocol,
    • synchronous vs. asynchronous behaviour,
    • security mechanisms,
    • documentation links,

    are captured as attributes rather than additional model elements.

    Endpoints, methods, payload formats, and individual request/response messages are outside the scope of this pattern.

Resulting Modelling Pattern (Compact)​

  • Core Pattern

    Icon Providing Application Component → composition → Application Interface (API) → serving → Consuming Application Component

    Icon Application Interface → access → Business Object

    The core structure implies the predominant information flow: Icon Provider → API → Consumer

  • Optional Runtime Information

    Icon System Software → serving → Application Interface

Do / Don't - AI System Modelling​

  • Icon Do

    • Model every architecturally relevant API explicitly as an Application Interface
    • Assign a clear providing Application Component
    • Make API consumers explicit
    • Model business-relevant exchanged information using Business Objects
    • Use the provider → API → consumer structure to indicate the predominant data flow
    • Keep technical details as attributes
    • Add runtime information only where it provides architectural value
  • Icon Don't

    • Don’t connect Application Components directly when the API itself is architecturally relevant
    • Don’t model APIs implicitly
    • Don’t model every technical request and response
    • Don’t introduce additional elements solely to represent detailed data flows
    • Don’t mix runtime support with API ownership
    • Don’t model endpoints, methods, or payload schemas

Scope and Intent​

  • This pattern supports:

    • Integration transparency,
    • understanding API providers and consumers,
    • understanding predominant data flows,
    • dependency and impact analysis,
    • application portfolio planning.
  • It is not intended to:

    • replace technical API documentation,
    • document every bidirectional data exchange,
    • describe detailed runtime or deployment architecture,
    • model endpoints, messages, or payload schemas.

Where more detailed analysis is required, additional ArchiMate concepts and relationships can be introduced. They should not be required for the standard lightweight API modelling approach.