Skip to content

Commit dbb2f63

Browse files
committed
feat(openapi): add OpenAPI 3.x introspection adapter; bump workspace to 0.2.0
- Add OpenApiAdapter with spec caching, operationId + METHOD/path resolution, args binding, dual rate limiting, and params.server.url override - Add openapiv3 and serde_yaml workspace dependencies - Update CHANGELOG with 0.2.0 entry - Update mdBook docs: introduction.md and graph/adapters.md OpenAPI section - Bump all README version references from 0.1 to 0.2
1 parent a2b1203 commit dbb2f63

File tree

16 files changed

+1288
-42
lines changed

16 files changed

+1288
-42
lines changed

CHANGELOG.md

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,20 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
77

88
## [Unreleased]
99

10+
## [0.2.0] - 2026-03-16
11+
12+
### Added
13+
14+
- `stygian-graph`: `OpenApiAdapter` — OpenAPI 3.x introspection adapter (`kind = "openapi"`)
15+
- Fetches and caches parsed OpenAPI specs (JSON or YAML) per spec URL for the lifetime of the adapter
16+
- Resolves operations by `operationId` (e.g. `"listPets"`) or `"METHOD /path"` syntax (e.g. `"GET /pet/findByStatus"`)
17+
- Binds `params.args` to path parameters (substituted into the URL template), query parameters, and request body
18+
- Delegates all HTTP calls to the inner `RestApiAdapter`, inheriting full auth support, retries, and 429 handling
19+
- Optional proactive rate limiting via `params.rate_limit` (sliding-window or token-bucket, same shape as GraphQL rate limiter)
20+
- `params.server.url` overrides `servers[0].url` from the spec at runtime
21+
- Two new workspace dependencies: `openapiv3 = "1"`, `serde_yaml = "0.9"` (always compiled; pure Rust)
22+
- `book`: OpenAPI adapter section added to [Built-in Adapters](./graph/adapters.md)
23+
1024
## [0.1.20] - 2026-03-16
1125

1226
### Added

Cargo.lock

Lines changed: 65 additions & 16 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Cargo.toml

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ members = [
77
]
88

99
[workspace.package]
10-
version = "0.1.20"
10+
version = "0.2.0"
1111
edition = "2024"
1212
rust-version = "1.94.0"
1313
authors = ["Nick Campbell <s0ma@protonmail.com>"]
@@ -73,6 +73,10 @@ uuid = { version = "1", features = ["v4", "serde"] }
7373
# Data pipeline
7474
csv = "1.3"
7575

76+
# OpenAPI spec parsing
77+
openapiv3 = "1"
78+
serde_yaml = "0.9"
79+
7680
# WASM plugins (optional heavy dep)
7781
wasmtime = { version = "42", default-features = false, features = ["runtime", "cranelift", "component-model"] }
7882

README.md

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -99,8 +99,8 @@ Add to your `Cargo.toml`:
9999

100100
```toml
101101
[dependencies]
102-
stygian-graph = "0.1"
103-
stygian-browser = "0.1" # optional, for JavaScript rendering
102+
stygian-graph = "0.2"
103+
stygian-browser = "0.2" # optional, for JavaScript rendering
104104
tokio = { version = "1", features = ["full"] }
105105
```
106106

@@ -230,6 +230,6 @@ Built with:
230230

231231
---
232232

233-
**Status**: Active development | Version 0.1.15 | Rust 2024 edition | 694 tests | Linux + macOS
233+
**Status**: Active development | Version 0.2.0 | Rust 2024 edition | Linux + macOS
234234

235235
For detailed documentation, see the [project docs site](https://greysquirr3l.github.io/stygian).

0 commit comments

Comments
 (0)