//! High-level API operations for GitLab resources.
//!
//! This module provides builder-pattern APIs for interacting with
//! GitLab resources in a fluent, ergonomic way.
//!
//! # API Patterns
//!
//! This library uses different patterns for different types of operations:
//!
//! ## 1. Resource-specific operations (via client methods)
//!
//! For operations on specific resources, use the client methods:
//!
//! ```no_run
//! # use lmrc_gitlab::GitLabClient;
//! # async fn example() -> Result<(), lmrc_gitlab::GitLabError> {
//! # let client = GitLabClient::new("https://gitlab.com", "token")?;
//! // Single resource operations
//! let pipeline = client.pipeline("project", 123).get().await?;
//! let job = client.job("project", 456).get().await?;
//!
//! // List operations with filters
//! let pipelines = client.pipelines("project")
//!     .status(lmrc_gitlab::models::PipelineStatus::Failed)
//!     .list()
//!     .await?;
//! # Ok(())
//! # }
//! ```
//!
//! ## 2. Project-level operations
//!
//! For operations at the project scope (creating resources, etc.):
//!
//! ```no_run
//! # use lmrc_gitlab::GitLabClient;
//! # async fn example() -> Result<(), lmrc_gitlab::GitLabError> {
//! # let client = GitLabClient::new("https://gitlab.com", "token")?;
//! // Create/trigger new pipeline
//! let pipeline = client.project("myproject")
//!     .create_pipeline()
//!     .ref_name("main")
//!     .variable("ENV", "prod")
//!     .trigger()
//!     .await?;
//! # Ok(())
//! # }
//! ```
//!
//! ## 3. Direct API access
//!
//! For operations not yet wrapped, use the underlying client:
//!
//! ```no_run
//! # use lmrc_gitlab::GitLabClient;
//! # use gitlab::api::Query;
//! # async fn example() -> Result<(), Box<dyn std::error::Error>> {
//! # let client = GitLabClient::new("https://gitlab.com", "token")?;
//! // Access the raw gitlab crate client
//! let raw_client = client.client();
//!
//! // Use any gitlab API endpoint
//! // let endpoint = ...;
//! // let result = endpoint.query(raw_client)?;
//! # Ok(())
//! # }
//! ```

pub mod jobs;
pub mod pipelines;
pub mod projects;
pub mod variables;

pub use jobs::{JobBuilder, JobListBuilder};
pub use pipelines::{PipelineBuilder, PipelineListBuilder};
pub use projects::{CreatePipelineBuilder, ProjectBuilder};
pub use variables::VariableBuilder;
