scim_server/
lib.rs

1//! SCIM 2.0 server library for Rust.
2//!
3//! Provides type-safe, async-first SCIM protocol implementation with
4//! multi-tenant support and pluggable storage backends.
5//!
6//! # Core Components
7//!
8//! - [`ScimServer`] - Main server for handling SCIM operations
9//! - [`ResourceProvider`] - Trait for implementing storage backends
10//! - [`SchemaDiscovery`] - Schema introspection and service configuration
11//!
12//! # Quick Start
13//!
14//! ```rust,no_run
15//! use scim_server::{ScimServer, providers::InMemoryProvider};
16//!
17//! # async fn example() -> Result<(), Box<dyn std::error::Error>> {
18//! let provider = InMemoryProvider::new();
19//! let server = ScimServer::new(provider)?;
20//! # Ok(())
21//! # }
22//! ```
23//!
24//! For detailed usage, see the [SCIM Server Guide](https://docs.rs/scim-server/guide/).
25
26pub mod auth;
27pub mod error;
28#[cfg(feature = "mcp")]
29pub mod mcp_integration;
30pub mod multi_tenant;
31pub mod operation_handler;
32pub mod provider_capabilities;
33pub mod providers;
34pub mod resource;
35pub mod resource_handlers;
36pub mod schema;
37pub mod schema_discovery;
38pub mod scim_server;
39pub mod storage;
40
41// Re-export commonly used types for convenience
42pub use error::{ScimError, ScimResult};
43pub use resource::{RequestContext, TenantContext, Resource, ListQuery, ScimOperation};
44pub use resource::ResourceProvider;
45pub use schema::{Schema, SchemaRegistry};
46pub use schema_discovery::SchemaDiscovery;
47pub use scim_server::ScimServer;
48
49// Re-export additional types needed by examples and advanced usage
50pub use resource_handlers::{create_group_resource_handler, create_user_resource_handler};
51pub use provider_capabilities::{
52    BulkCapabilities, CapabilityIntrospectable, ExtendedCapabilities, PaginationCapabilities,
53    ProviderCapabilities,
54};
55pub use operation_handler::{
56    OperationMetadata, ScimOperationHandler, ScimOperationRequest, ScimOperationResponse,
57};
58
59// MCP integration re-exports (feature-gated)
60#[cfg(feature = "mcp")]
61pub use mcp_integration::{McpServerInfo, ScimMcpServer, ScimToolResult};