Skip to content


The relay API gateway is written in PHP and is based on the API Platform framework as well as the Symfony framework.

To achieve modularity and extensibility we depend on the Symfony bundle system which allows installing "extra parts" to an existing application server, like new API endpoints, new adapters to external systems, and so on.

The following graph shows a more technical overview of how a bundle integrates into the API gateway:

flowchart LR style ext_service1 fill:#46A046,color:#fff style ext_service2 fill:#46A046,color:#fff style oidc_server fill:#C1665A,color:#fff style client fill:#FFBB00,color:#000 client("Client") oidc_server("OIDC Server") subgraph "Relay Gateway" subgraph api_platform["API Platform / Symfony"] direction LR api_docs("API Documentation") api("REST API") end subgraph core_bundle["Core Bundle"] direction LR locking("Locking") message_queue("Message Queue") authentfication("Authentification") cron_jobs_management("Cron Jobs") logging("Logging") end end api_platform <--> core_bundle subgraph "Extension Bundle" direction TB connector_interface("Connector Interface") subgraph ext_apis["Extensions"] direction LR entities("API Resources") heath_checks("Health Checks") cron_jobs("Cron Jobs") async_message("Async Messages") routes("Symfony Routes") cli_commands("CLI Commands") end ext_apis --> connector_interface end subgraph "Connector Bundle" impl("Implementation") end ext_apis ----> ext_service2 client --> api_platform client --> oidc_server core_bundle <--> ext_apis core_bundle --> oidc_server ext_service1("External Service X") ext_service2("External Service Y") impl --> ext_service1 connector_interface --> impl

The core bundle provides various common functionality to all bundles and also allows bundles to extend the API gateway in various ways, so they can:

Bundle Architecture

See Extending with Bundles for the different types of bundles and their use cases.