API boundaries

id_effect_rpc implements Phase D RPC-shaped HTTP boundaries: correlation ids, JSON error envelopes, OpenAPI emission, codegen stubs, API versioning, and tracing helpers.

Correlation and errors

Use ensure_correlation_id and RpcError for consistent wire errors. Validate bodies with id_effect_axum::json::decode_json_schema.

OpenAPI and codegen

API versioning

versioning::negotiate_api_version resolves version from Accept-Version or /vN/ path prefix:

#![allow(unused)]
fn main() {
use id_effect_rpc::versioning::{ApiVersion, VersionConfig, negotiate_api_version};

let cfg = VersionConfig::new(ApiVersion::new("v1"), vec![ApiVersion::new("v1")]);
let app = router.layer(axum::middleware::from_fn_with_state(cfg, negotiate_api_version));
}

RPC tracing example

cargo run -p id_effect_rpc --example 020_rpc_tracing

Spans use stable field names consumable by id_effect_opentelemetry layers.

See also