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::StandardResourceProvider};
16//! use scim_server::storage::InMemoryStorage;
17//!
18//! # async fn example() -> Result<(), Box<dyn std::error::Error>> {
19//! let storage = InMemoryStorage::new();
20//! let provider = StandardResourceProvider::new(storage);
21//! let server = ScimServer::new(provider)?;
22//! # Ok(())
23//! # }
24//! ```
25//!
26//! For detailed usage, see the [SCIM Server Guide](https://docs.rs/scim-server/guide/).
27
28pub mod auth;
29pub mod error;
30/// Model Context Protocol integration for AI agents.
31///
32/// This module is only available when the `mcp` feature is enabled.
33/// Add `features = ["mcp"]` to your Cargo.toml dependency to use this module.
34#[cfg(feature = "mcp")]
35pub mod mcp_integration;
36pub mod multi_tenant;
37pub mod operation_handler;
38pub mod provider_capabilities;
39pub mod providers;
40pub mod resource;
41pub mod resource_handlers;
42pub mod schema;
43pub mod schema_discovery;
44pub mod scim_server;
45pub mod storage;
46
47// Re-export commonly used types for convenience
48pub use error::{ScimError, ScimResult};
49pub use resource::{IsolationLevel, ResourceProvider, TenantPermissions};
50pub use resource::{ListQuery, RequestContext, Resource, ScimOperation, TenantContext};
51pub use schema::{Schema, SchemaRegistry};
52pub use schema_discovery::SchemaDiscovery;
53pub use scim_server::ScimServer;
54
55// Re-export additional types needed by examples and advanced usage
56pub use operation_handler::{
57    OperationMetadata, ScimOperationHandler, ScimOperationRequest, ScimOperationResponse,
58};
59pub use provider_capabilities::{
60    AuthenticationCapabilities, BulkCapabilities, CapabilityIntrospectable, ExtendedCapabilities,
61    FilterOperator, PaginationCapabilities, ProviderCapabilities,
62};
63pub use resource_handlers::{create_group_resource_handler, create_user_resource_handler};
64pub use schema_discovery::AuthenticationScheme;
65
66// Multi-tenant types
67pub use multi_tenant::{ScimTenantConfiguration, StaticTenantResolver, TenantResolver};
68
69// MCP integration re-exports (feature-gated)
70/// Model Context Protocol integration types.
71///
72/// These types are only available when the `mcp` feature is enabled.
73/// Add `features = ["mcp"]` to your Cargo.toml dependency to use these types.
74#[cfg(feature = "mcp")]
75pub use mcp_integration::{McpServerInfo, ScimMcpServer, ScimToolResult};