rust-codegen-group
openapi-nexus
Rust

OpenAPI 3.x code generator for deterministic, type-safe SDKs and API tooling across languages and runtimes.

Last updated Jul 3, 2026
97
Stars
0
Forks
0
Issues
0
Stars/day
Attention Score
41
Language breakdown
Rust 97.2%
Python 1.7%
Shell 0.6%
Just 0.5%
โ–ธ Files click to expand
README

OpenAPI Nexus

OpenAPI 3.0 / 3.1 / 3.2 to multi-language code generator

CI codecov License Rust

OpenAPI Nexus transforms OpenAPI specifications into type-safe client libraries. Generated output is deterministic, compile-checked in CI, and tested byte-for-byte via golden tests.

Language Support

| Language | Generator | HTTP Client | Status | |----------|-----------|-------------|--------| | TypeScript | typescript-fetch | fetch | Beta | | Go | go-http | net/http | Beta | | Rust | rust-reqwest | reqwest | Beta | | Rust | rust-ureq | ureq | Beta | | Rust | rust-aioduct | aioduct | Beta | | Python | python-httpx | httpx | Beta | | Python | python-requests | requests | Beta | | Java | java-okhttp | OkHttp | Beta | | Kotlin | kotlin-okhttp | OkHttp | Beta |

Quick Start

Install

Shell installer (no Rust toolchain needed):

curl --proto '=https' --tlsv1.2 -LsSf https://github.com/rust-codegen-group/openapi-nexus/releases/download/0.1.17/openapi-nexus-installer.sh | sh

Nightly build (latest main):

curl --proto '=https' --tlsv1.2 -LsSf https://github.com/rust-codegen-group/openapi-nexus/releases/download/nightly/openapi-nexus-installer.sh | sh

Build from source:

cargo install openapi-nexus

Requires Rust 1.90+.

Generate

# TypeScript client
openapi-nexus generate -i spec.yaml -o output --generators typescript-fetch

Go client

openapi-nexus generate -i spec.yaml -o output --generators go-http

Rust client (reqwest)

openapi-nexus generate -i spec.yaml -o output --generators rust-reqwest

Python client (httpx)

openapi-nexus generate -i spec.yaml -o output --generators python-httpx

Java client

openapi-nexus generate -i spec.yaml -o output --generators java-okhttp

Generate another target into its own directory

openapi-nexus generate -i spec.yaml -o output/go --generators go-http openapi-nexus generate -i spec.yaml -o output/rust --generators rust-reqwest

Configuration

Configuration resolves in order: CLI args > environment variables (OPENAPINEXUS*) > config file (openapi-nexus-config.toml) > defaults.

# Environment variables
export OPENAPINEXUSINPUT="spec.yaml"
export OPENAPINEXUSOUTPUT="generated"
export OPENAPINEXUSGENERATORS="typescript-fetch"

Generator-specific options go in the config file:

[generators.go-http]
module_path = "github.com/myorg/myproject/sdk"

[generators.rust-reqwest] workspace_mode = true workspacedeps = "workspaceversion"

[generators.rust-reqwest.extra_derives.structs] derives = ["PartialEq"]

[generators.rust-reqwest.extra_derives.enums] derives = ["Hash"]

[generators.rust-reqwest.utoipa] enabled = true dependency = '{ version = "5" }'

[generators.rust-aioduct.aioduct] compression = ["gzip", "zstd"] features = ["tracing"]

[generators.typescript-fetch] emitenumconstants = true emittypeguards = true property_naming = "camelCase"

How It Works

OpenAPI YAML/JSON โ†’ parse โ†’ lower to IR โ†’ CodeGenerator::generate(&IrSpec) โ†’ write

Parsing auto-detects OAS version (3.0, 3.1, 3.2). Lowering produces a version-agnostic IrSpec. Each generator receives the pre-lowered IR and uses sigil-stitch for type-safe code emission.

Documentation

Full documentation is available at the project docs site.

Examples live under examples/, including multipart file upload and raw binary body usage in examples/multipart-binary.

Development

# Run all tests
cargo test

Clippy (required before commit)

cargo clippy --all-targets --all-features -- -D warnings

Update golden files after intentional output changes

UPDATE_GOLDEN=1 cargo test

Compile-check generated output for all languages

just golden-build-all

License

Dual-licensed under MIT or Apache-2.0 at your option.

๐Ÿ”— More in this category

ยฉ 2026 GitRepoTrend ยท rust-codegen-group/openapi-nexus ยท Updated daily from GitHub