Files
googleworkspace--cli/crates/google-workspace
wehub-resource-sync 76a9e7a0cc
Automation / Format (push) Waiting to run
Automation / File Labeler (push) Waiting to run
Automation / Gemini Reviewed (push) Waiting to run
Coverage / Coverage (push) Waiting to run
Publish OpenClaw Skills / publish (push) Has been cancelled
Audit / Security Audit (push) Has been cancelled
Automation / Gemini Review (push) Has been cancelled
CI / Detect Changes (push) Has been cancelled
CI / Test (macos-latest) (push) Has been cancelled
CI / Test (ubuntu-latest) (push) Has been cancelled
CI / Nix (push) Has been cancelled
CI / Lint (push) Has been cancelled
CI / Cargo Deny (push) Has been cancelled
CI / Verify Skills (push) Has been cancelled
CI / Lint Skills (push) Has been cancelled
CI / Build (Linux x86_64) (push) Has been cancelled
CI / Build (macos-latest, aarch64-apple-darwin) (push) Has been cancelled
CI / Build (macos-latest, x86_64-apple-darwin) (push) Has been cancelled
CI / Build (ubuntu-latest, aarch64-unknown-linux-gnu) (push) Has been cancelled
CI / Build (windows-latest, x86_64-pc-windows-msvc) (push) Has been cancelled
CI / API Smoketest (push) Has been cancelled
Policy / Policy Check (push) Has been cancelled
Release (Changeset) / Release (push) Has been cancelled
chore: import upstream snapshot with attribution
2026-07-13 12:38:06 +08:00
..

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.