Skip to main content

synapse_sdk/
lib.rs

1//! Synapse SDK for building services
2//!
3//! Provides high-level abstractions for:
4//! - Making RPC calls to other services through the gateway
5//! - Implementing service handlers
6//! - Service registration and lifecycle
7//!
8//! # Axum Integration
9//!
10//! To embed Synapse RPC into an existing axum application:
11//!
12//! ```ignore
13//! use axum::{Router, routing::post};
14//! use synapse_sdk::{axum::synapse_rpc_handler, axum::SynapseState, Service};
15//!
16//! let service = Service::builder("my-service").build();
17//! let state = SynapseState::new(service.rpc_server().clone());
18//!
19//! let app = Router::new()
20//!     .route("/my-endpoints", get(my_handler))
21//!     .route("/rpc", post(synapse_rpc_handler))
22//!     .with_state(state);
23//! ```
24
25pub mod axum;
26pub mod client;
27pub mod http_server;
28pub mod middleware;
29pub mod service;
30
31// Re-export axum integration types at root for convenience
32pub use axum::{SynapseState, synapse_rpc_handler};
33pub use client::SynClient;
34pub use http_server::{HealthProvider, HttpRpcServer};
35pub use middleware::{Middleware, MiddlewareChain, RequestState};
36pub use service::{
37    HealthCheckFn, HealthStatus, HttpRouteConfig, HttpRouteGroup, Service, ServiceBuilder,
38};
39// Re-export commonly used types
40pub use synapse_primitives::{InstanceId, InterfaceId, MethodId};
41pub use synapse_proto::{
42    HttpMethod, HttpRoute, RouteOptions, RpcError, RpcRequest, RpcResponse, RpcStatus,
43};
44pub use synapse_rpc::{HttpRpcClient, InterfaceRegistration, codec::ContentType};