# GWS API Command Alignment This document maps LARC's lark-cli commands to GARC's equivalent Google API calls. ## Drive / File Storage | Operation | LARC (lark-cli) | GARC (garc-drive-helper.py) | |-----------|----------------|------------------------------| | List folder | `drive files list --params '{"folder_token":"..."}'` | `files().list(q="'{id}' in parents")` | | Download file | `drive +download --file-token` | `files().get_media(fileId=...)` | | Create folder | `drive files create_folder --data '...'` | `files().create(body={mimeType:'application/vnd.google-apps.folder'})` | | Upload file | `drive files upload` | `files().create(media_body=MediaFileUpload(...))` | | Export Doc | (n/a, native format) | `files().export_media(fileId=..., mimeType='text/plain')` | ## Structured Data | Operation | LARC (Lark Base) | GARC (Google Sheets) | |-----------|-----------------|----------------------| | List records | `base +record-list --base-token` | `values().get(spreadsheetId=..., range='Sheet!A:Z')` | | Create record | `base +record-upsert --base-token` | `values().append(spreadsheetId=..., range=..., body=...)` | | Update record | `base +record-upsert --base-token` | `values().update(spreadsheetId=..., range=..., body=...)` | | Search records | (filter in Base) | Python-side filter after `values().get()` | ## Messaging | Operation | LARC (Lark IM) | GARC (Gmail) | |-----------|---------------|--------------| | Send message | `lark-cli im send --chat-id` | `messages().send(userId='me', body={raw:...})` | | Read messages | `lark-cli im list` | `messages().list(userId='me', q='...')` | | Send to space | (IM chat) | Google Chat API: `spaces.messages().create(parent=..., body=...)` | ## Calendar | Operation | LARC (Lark Calendar) | GARC (Google Calendar) | |-----------|---------------------|------------------------| | List events | `lark-cli calendar +list` | `events().list(calendarId='primary', timeMin=..., timeMax=...)` | | Create event | `lark-cli calendar +create` | `events().insert(calendarId='primary', body=...)` | | Update event | `lark-cli calendar +update` | `events().update(calendarId='primary', eventId=..., body=...)` | ## Tasks | Operation | LARC (Lark Project) | GARC (Google Tasks) | |-----------|---------------------|---------------------| | List tasks | `task +get-my-tasks` | `tasks().list(tasklist='@default')` | | Create task | `task +create` | `tasks().insert(tasklist='@default', body=...)` | | Complete task | `task +complete` | `tasks().patch(tasklist=..., task=..., body={status:'completed'})` | ## OAuth Scope Reference ### Minimal Scopes by Operation Type | Operations | Scope | |-----------|-------| | Read any Drive file | `drive.readonly` | | Read/write owned Drive files | `drive.file` | | Full Drive access | `drive` | | Read Google Docs | `drive.readonly` + `documents.readonly` | | Edit Google Docs | `drive.file` + `documents` | | Read Sheets | `spreadsheets.readonly` | | Write Sheets | `spreadsheets` | | Send Gmail | `gmail.send` | | Read Gmail | `gmail.readonly` | | Full Gmail | `gmail.modify` | | Read Calendar | `calendar.readonly` | | Write Calendar | `calendar` | | Read Tasks | `tasks.readonly` | | Write Tasks | `tasks` | | Read Contacts | `contacts.readonly` | | Write Contacts | `contacts` | | Google Chat (bot) | `chat.messages` | All Google OAuth scopes are prefixed with `https://www.googleapis.com/auth/`. ## API Quotas and Rate Limits | API | Default Quota | Notes | |-----|---------------|-------| | Google Drive | 1,000 req/100s/user | File operations | | Google Sheets | 300 req/min/project | Read: use batch | | Gmail | 250 quota units/user/second | Send = 100 units | | Google Calendar | 1,000,000 req/day | | | Google Tasks | 50,000 req/day | | GARC implements basic retry with exponential backoff via `google-api-python-client`'s built-in retry mechanism.