Overview

The fetch_workspaces function retrieves a list of workspaces with optional filtering and pagination support, including the ability to filter by organization.

Function Signature

pub async fn fetch_workspaces(
    options: Option<ListWorkspacesOptions>
) -> Result<WorkspaceListResponse>

Parameters

options
Option<ListWorkspacesOptions>
Optional configuration for filtering and pagination:
  • page: Page number for pagination (optional)
  • per_page: Number of results per page (optional)
  • search: Search query to filter workspaces (optional)
  • organization_id: Filter workspaces by organization ID (optional)

Return Value

Returns Result<WorkspaceListResponse> containing:
  • data: Vector of Workspace objects
  • has_more: Boolean indicating if more results are available

Basic Usage

use wacht::api::workspaces::*;

// Fetch all workspaces
let workspaces = fetch_workspaces(None).await?;
for workspace in workspaces.data {
    println!("Workspace: {} - {}", workspace.name, workspace.id);
}

Advanced Usage

use wacht::api::workspaces::*;

// Fetch workspaces for a specific organization
let options = ListWorkspacesOptions {
    page: Some(1),
    per_page: Some(20),
    search: Some("dev".to_string()),
    organization_id: Some("org_123".to_string()),
};

let filtered_workspaces = fetch_workspaces(Some(options)).await?;
println!("Found {} workspaces", filtered_workspaces.data.len());

for workspace in filtered_workspaces.data {
    println!("- {} (Org: {})", workspace.name, workspace.organization_id);
}

Error Handling

match fetch_workspaces(None).await {
    Ok(response) => {
        println!("Successfully retrieved {} workspaces", response.data.len());
        for workspace in response.data {
            println!("- {} ({})", workspace.name, workspace.description);
        }
    }
    Err(Error::Api { status, message, .. }) => {
        match status.as_u16() {
            403 => println!("Access denied: {}", message),
            429 => println!("Rate limited: {}", message),
            _ => println!("API error {}: {}", status, message),
        }
    }
    Err(e) => println!("Request failed: {}", e),
}

Rate Limits

  • List operations: 100 requests per minute
  • Burst limit: 10 requests per second