76a9e7a0cc
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
Automation / Gemini Reviewed (push) Has been cancelled
Coverage / Coverage (push) Has been cancelled
Automation / Format (push) Has been cancelled
Automation / File Labeler (push) Has been cancelled
41 lines
1.6 KiB
Markdown
41 lines
1.6 KiB
Markdown
# google-workspace
|
|
|
|
Core Rust library for interacting with Google Workspace APIs via the [Discovery Service](https://developers.google.com/discovery).
|
|
|
|
This crate provides the foundational types and utilities used by the [`google-workspace-cli`](https://crates.io/crates/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
|
|
|
|
```rust
|
|
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](https://github.com/googleworkspace/cli/blob/main/LICENSE).
|