Generate Swift client and server code from an OpenAPI document.
OpenAPI is an open specification for documenting HTTP APIs.
Swift OpenAPI Generator is a Swift package plugin that can generate the ceremony code required to make API calls, or implement API servers.
The Swift OpenAPI Generator project is split across multiple repositories to enable extensibility and minimize dependencies in your project.
swift-openapi-generator (source, docs) provides the plugin.
swift-openapi-runtime (source, docs) provides a library with common types and abstractions used by the generated code.
See the generator in action in Meet Swift OpenAPI Generator from WWDC23.
Choose one of the transports listed below, or create your own by adopting the ClientTransport
or ServerTransport
protocol:
Repository | Type | Description |
---|---|---|
apple/swift-openapi-urlsession | Client | Uses URLSession from Foundation. |
swift-server/swift-openapi-async-http-client | Client | Uses HTTPClient from AsyncHTTPClient. |
swift-server/swift-openapi-vapor | Server | Uses Vapor. |
swift-server/swift-openapi-hummingbird | Server | Uses Hummingbird. |
Generator versions | Supported OpenAPI versions | Minimum Swift version |
---|---|---|
0.1.0 ... 0.1.11 |
3.0 | 5.8 |
0.1.12 ... main |
3.0, 3.1 | 5.8 |
The generator is used during development and is supported on macOS and Linux.
The generated code, runtime library, and transports are supported on more platforms, listed below.
Component | macOS | Linux | iOS | tvOS | watchOS |
---|---|---|---|---|---|
Generator plugin and CLI | ✅ 10.15+ | ✅ | ❌ | ❌ | ❌ |
Generated code, runtime, transports | ✅ 10.15+ | ✅ | ✅ 13+ | ✅ 13+ | ✅ 6+ |
To get started, check out the full documentation, which contains step-by-step tutorials!