scim_server/operation_handler/
mod.rs

1//! Framework-agnostic SCIM operation handler.
2//!
3//! This module provides structured request/response handling for SCIM operations
4//! with built-in ETag concurrency control and comprehensive error handling.
5//!
6//! # Key Types
7//!
8//! - [`ScimOperationHandler`] - Main handler for processing SCIM operations
9//! - [`ScimOperationRequest`] - Structured request wrapper with validation
10//! - [`ScimOperationResponse`] - Response with metadata and ETag information
11//!
12//! # Examples
13//!
14//! ```rust,no_run
15//! use scim_server::operation_handler::{ScimOperationHandler, ScimOperationRequest};
16//! use scim_server::{ScimServer, providers::StandardResourceProvider};
17//! use scim_server::storage::InMemoryStorage;
18//! use serde_json::json;
19//!
20//! # async fn example() -> Result<(), Box<dyn std::error::Error>> {
21//! let storage = InMemoryStorage::new();
22//! let provider = StandardResourceProvider::new(storage);
23//! let server = ScimServer::new(provider)?;
24//! let handler = ScimOperationHandler::new(server);
25//!
26//! let request = ScimOperationRequest::update("User", "123", json!({"active": true}));
27//! let response = handler.handle_operation(request).await;
28//! # Ok(())
29//! # }
30//! ```
31
32mod builders;
33mod core;
34mod errors;
35mod handlers;
36
37// Re-export all public types and functions
38pub use core::{
39    OperationMetadata, ScimOperationHandler, ScimOperationRequest, ScimOperationResponse,
40    ScimOperationType, ScimQuery,
41};
42
43// Re-export builder utilities
44pub use builders::*;
45
46// Re-export error utilities for advanced usage
47pub use errors::{create_error_response, create_version_conflict_response};