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::InMemoryProvider};
17//! use serde_json::json;
18//!
19//! # async fn example() -> Result<(), Box<dyn std::error::Error>> {
20//! let provider = InMemoryProvider::new();
21//! let server = ScimServer::new(provider)?;
22//! let handler = ScimOperationHandler::new(server);
23//!
24//! let request = ScimOperationRequest::update("User", "123", json!({"active": true}));
25//! let response = handler.handle_operation(request).await;
26//! # Ok(())
27//! # }
28//! ```
29
30mod builders;
31mod core;
32mod errors;
33mod handlers;
34
35// Re-export all public types and functions
36pub use core::{
37    OperationMetadata, ScimOperationHandler, ScimOperationRequest, ScimOperationResponse,
38    ScimOperationType, ScimQuery,
39};
40
41// Re-export builder utilities
42pub use builders::*;
43
44// Re-export error utilities for advanced usage
45pub use errors::{create_error_response, create_version_conflict_response};