# API gateway

> Serves the operations declared in an OpenAPI 3.1 contract and relays them to their upstreams. An undeclared route does not exist; an operation without an…

Concept - Since version 0.1.0 - Flexway v1.6.3 - https://flexway.io/en/docs/product-api-gateway/

> Product guide: what the capability brings, for whom, its limits and the version that delivered it - no configuration syntax.

| | |
| --- | --- |
| **What it does** | Serves the operations declared in an OpenAPI 3.1 contract and relays them to their upstreams. An undeclared route does not exist; an operation without an upstream stops the start. SSE and WebSocket streams are relayed **without holding**. The configuration changes without a restart, and an invalid one never replaces the running one |
| **Why it matters** | The API's documentation and what the gateway serves can no longer drift. Errors follow one format (RFC 9457) a client can switch on without reading a sentence. Real-time streams arrive as they are produced, where gateways on the market deliver them in one block |
| **Use cases** | Expose a public or partner API; replace an existing gateway without regression (`1.0.0` proved it on a real product moving off another gateway); serve several APIs on one gateway, each on its host; relay a live dashboard |
| **Resilience** | A timeout per operation, retries limited to replayable requests, a circuit breaker per upstream, bulkheads, load shedding when the gateway saturates - and every degradation is **announced** to the client, never silent |
| **Taking over** | The configuration of an existing gateway converts offline, with a report of what is taken over and what is not (`1.2.0`) |
| **Limits** | No aggregation of several upstreams into one response, no HTTP/3 on the caller side, no XML or form decoders ([What is not built yet](https://flexway.io/en/docs/product-not-built-yet/)); serves no static files |
| **Since** | `0.1.0` (contract), `0.2.0` (request path, streams), `0.1.0` (live configuration), `1.0.0` (load shedding, first version that promises compatibility) |
| **Configure** | [Serving your first API](https://flexway.io/en/docs/operations-first-api/), [Take over an existing gateway](https://flexway.io/en/docs/operations-import/), [7](https://flexway.io/en/docs/operations-live-config/) |
