Files

google-workspace

Core Rust library for interacting with Google Workspace APIs via the Discovery Service.

This crate provides the foundational types and utilities used by the google-workspace-cli (gws) command-line tool, and can be used independently for programmatic access.

Dynamic Discovery — this library fetches Google's Discovery Documents at runtime rather than relying on generated client crates. When Google adds or updates an API endpoint, your code picks it up automatically.

Modules

Module Description
discovery Discovery Document types (RestDescription, RestMethod, etc.) and async fetch with optional disk caching
services Service registry mapping aliases (e.g., drive) to API name/version pairs
error Structured GwsError enum with exit codes and JSON serialization
validate Input validation: path safety, resource name checks, URL encoding
client HTTP client builder with automatic retry logic

Usage

use google_workspace::discovery::fetch_discovery_document;
use google_workspace::services::resolve_service;

#[tokio::main]
async fn main() -> anyhow::Result<()> {
    let (api, version) = resolve_service("drive").unwrap();
    let doc = fetch_discovery_document(api, version, None).await?;

    println!("{} {}{} resources",
        doc.name, doc.version,
        doc.resources.len(),
    );
    Ok(())
}

License

Apache-2.0 — see LICENSE.