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
openapi::emit_openapi_json— route metadata → OpenAPI 3codegen::emit_service_trait— D3 trait stub generation
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
- Part II: RPC boundaries
- Mission:
platform-api-boundaries