diff --git a/docs/skills.md b/docs/skills.md index 8025e54..e389c35 100644 --- a/docs/skills.md +++ b/docs/skills.md @@ -13,21 +13,13 @@ Core Google Workspace API skills. | [gws-sheets](../skills/gws-sheets/SKILL.md) | Google Sheets: Read and write spreadsheets. | | [gws-gmail](../skills/gws-gmail/SKILL.md) | Gmail: Send, read, and manage email. | | [gws-calendar](../skills/gws-calendar/SKILL.md) | Google Calendar: Manage calendars and events. | -| [gws-admin](../skills/gws-admin/SKILL.md) | Google Workspace Admin SDK: Manage users, groups, and devices. | | [gws-admin-reports](../skills/gws-admin-reports/SKILL.md) | Google Workspace Admin SDK: Audit logs and usage reports. | | [gws-docs](../skills/gws-docs/SKILL.md) | Read and write Google Docs. | | [gws-slides](../skills/gws-slides/SKILL.md) | Google Slides: Read and write presentations. | | [gws-tasks](../skills/gws-tasks/SKILL.md) | Google Tasks: Manage task lists and tasks. | | [gws-people](../skills/gws-people/SKILL.md) | Google People: Manage contacts and profiles. | | [gws-chat](../skills/gws-chat/SKILL.md) | Google Chat: Manage Chat spaces and messages. | -| [gws-vault](../skills/gws-vault/SKILL.md) | Google Vault: Manage eDiscovery holds and exports. | -| [gws-groupssettings](../skills/gws-groupssettings/SKILL.md) | Manage Google Groups settings. | -| [gws-reseller](../skills/gws-reseller/SKILL.md) | Google Workspace Reseller: Manage Workspace subscriptions. | -| [gws-licensing](../skills/gws-licensing/SKILL.md) | Google Workspace Enterprise License Manager: Manage product licenses. | -| [gws-apps-script](../skills/gws-apps-script/SKILL.md) | Google Apps Script: Manage and execute Apps Script projects. | | [gws-classroom](../skills/gws-classroom/SKILL.md) | Google Classroom: Manage classes, rosters, and coursework. | -| [gws-cloudidentity](../skills/gws-cloudidentity/SKILL.md) | Google Cloud Identity: Manage identity groups and memberships. | -| [gws-alertcenter](../skills/gws-alertcenter/SKILL.md) | Google Workspace Alert Center: Manage Workspace security alerts. | | [gws-forms](../skills/gws-forms/SKILL.md) | Read and write Google Forms. | | [gws-keep](../skills/gws-keep/SKILL.md) | Manage Google Keep notes. | | [gws-meet](../skills/gws-meet/SKILL.md) | Manage Google Meet conferences. | @@ -51,7 +43,6 @@ Shortcut commands for common operations. | [gws-calendar-agenda](../skills/gws-calendar-agenda/SKILL.md) | Google Calendar: Show upcoming events across all calendars. | | [gws-docs-write](../skills/gws-docs-write/SKILL.md) | Google Docs: Append text to a document. | | [gws-chat-send](../skills/gws-chat-send/SKILL.md) | Google Chat: Send a message to a space. | -| [gws-apps-script-push](../skills/gws-apps-script-push/SKILL.md) | Google Apps Script: Upload local files to an Apps Script project. | | [gws-events-subscribe](../skills/gws-events-subscribe/SKILL.md) | Google Workspace Events: Subscribe to Workspace events and stream them as NDJSON. | | [gws-events-renew](../skills/gws-events-renew/SKILL.md) | Google Workspace Events: Renew/reactivate Workspace Events subscriptions. | | [gws-modelarmor-sanitize-prompt](../skills/gws-modelarmor-sanitize-prompt/SKILL.md) | Google Model Armor: Sanitize a user prompt through a Model Armor template. | @@ -73,7 +64,7 @@ Role-based skill bundles. | [persona-project-manager](../skills/persona-project-manager/SKILL.md) | Coordinate projects — track tasks, schedule meetings, and share docs. | | [persona-hr-coordinator](../skills/persona-hr-coordinator/SKILL.md) | Handle HR workflows — onboarding, announcements, and employee comms. | | [persona-sales-ops](../skills/persona-sales-ops/SKILL.md) | Manage sales workflows — track deals, schedule calls, client comms. | -| [persona-it-admin](../skills/persona-it-admin/SKILL.md) | Administer IT — manage users, monitor security, configure Workspace. | +| [persona-it-admin](../skills/persona-it-admin/SKILL.md) | Administer IT — monitor security and configure Workspace. | | [persona-content-creator](../skills/persona-content-creator/SKILL.md) | Create, organize, and distribute content across Workspace. | | [persona-customer-support](../skills/persona-customer-support/SKILL.md) | Manage customer support — track tickets, respond, escalate issues. | | [persona-event-coordinator](../skills/persona-event-coordinator/SKILL.md) | Plan and manage events — scheduling, invitations, and logistics. | @@ -86,9 +77,7 @@ Multi-step task sequences with real commands. | Skill | Description | |-------|-------------| -| [recipe-audit-external-sharing](../skills/recipe-audit-external-sharing/SKILL.md) | Find and review Google Drive files shared outside the organization. | | [recipe-label-and-archive-emails](../skills/recipe-label-and-archive-emails/SKILL.md) | Apply Gmail labels to matching messages and archive them to keep your inbox clean. | -| [recipe-send-personalized-emails](../skills/recipe-send-personalized-emails/SKILL.md) | Read recipient data from Google Sheets and send personalized Gmail messages to each row. | | [recipe-draft-email-from-doc](../skills/recipe-draft-email-from-doc/SKILL.md) | Read content from a Google Doc and use it as the body of a Gmail message. | | [recipe-organize-drive-folder](../skills/recipe-organize-drive-folder/SKILL.md) | Create a Google Drive folder structure and move files into the right locations. | | [recipe-share-folder-with-team](../skills/recipe-share-folder-with-team/SKILL.md) | Share a Google Drive folder and all its contents with a list of collaborators. | @@ -98,27 +87,22 @@ Multi-step task sequences with real commands. | [recipe-copy-sheet-for-new-month](../skills/recipe-copy-sheet-for-new-month/SKILL.md) | Duplicate a Google Sheets template tab for a new month of tracking. | | [recipe-block-focus-time](../skills/recipe-block-focus-time/SKILL.md) | Create recurring focus time blocks on Google Calendar to protect deep work hours. | | [recipe-reschedule-meeting](../skills/recipe-reschedule-meeting/SKILL.md) | Move a Google Calendar event to a new time and automatically notify all attendees. | -| [recipe-search-and-export-emails](../skills/recipe-search-and-export-emails/SKILL.md) | Find Gmail messages matching a query and export them for review. | | [recipe-create-gmail-filter](../skills/recipe-create-gmail-filter/SKILL.md) | Create a Gmail filter to automatically label, star, or categorize incoming messages. | -| [recipe-cancel-and-notify](../skills/recipe-cancel-and-notify/SKILL.md) | Delete a Google Calendar event and send a cancellation email via Gmail. | | [recipe-schedule-recurring-event](../skills/recipe-schedule-recurring-event/SKILL.md) | Create a recurring Google Calendar event with attendees. | | [recipe-find-free-time](../skills/recipe-find-free-time/SKILL.md) | Query Google Calendar free/busy status for multiple users to find a meeting slot. | | [recipe-bulk-download-folder](../skills/recipe-bulk-download-folder/SKILL.md) | List and download all files from a Google Drive folder. | | [recipe-find-large-files](../skills/recipe-find-large-files/SKILL.md) | Identify large Google Drive files consuming storage quota. | | [recipe-create-shared-drive](../skills/recipe-create-shared-drive/SKILL.md) | Create a Google Shared Drive and add members with appropriate roles. | -| [recipe-transfer-file-ownership](../skills/recipe-transfer-file-ownership/SKILL.md) | Transfer ownership of Google Drive files from one user to another. | | [recipe-log-deal-update](../skills/recipe-log-deal-update/SKILL.md) | Append a deal status update to a Google Sheets sales tracking spreadsheet. | | [recipe-collect-form-responses](../skills/recipe-collect-form-responses/SKILL.md) | Retrieve and review responses from a Google Form. | | [recipe-post-mortem-setup](../skills/recipe-post-mortem-setup/SKILL.md) | Create a Google Docs post-mortem, schedule a Google Calendar review, and notify via Chat. | | [recipe-create-task-list](../skills/recipe-create-task-list/SKILL.md) | Set up a new Google Tasks list with initial tasks. | | [recipe-review-overdue-tasks](../skills/recipe-review-overdue-tasks/SKILL.md) | Find Google Tasks that are past due and need attention. | -| [recipe-deploy-apps-script](../skills/recipe-deploy-apps-script/SKILL.md) | Push local files to a Google Apps Script project. | | [recipe-watch-drive-changes](../skills/recipe-watch-drive-changes/SKILL.md) | Subscribe to change notifications on a Google Drive file or folder. | | [recipe-create-classroom-course](../skills/recipe-create-classroom-course/SKILL.md) | Create a Google Classroom course and invite students. | | [recipe-create-meet-space](../skills/recipe-create-meet-space/SKILL.md) | Create a Google Meet meeting space and share the join link. | | [recipe-review-meet-participants](../skills/recipe-review-meet-participants/SKILL.md) | Review who attended a Google Meet conference and for how long. | | [recipe-create-presentation](../skills/recipe-create-presentation/SKILL.md) | Create a new Google Slides presentation and add initial slides. | -| [recipe-triage-security-alerts](../skills/recipe-triage-security-alerts/SKILL.md) | List and review Google Workspace security alerts from Alert Center. | | [recipe-save-email-attachments](../skills/recipe-save-email-attachments/SKILL.md) | Find Gmail messages with attachments and save them to a Google Drive folder. | | [recipe-send-team-announcement](../skills/recipe-send-team-announcement/SKILL.md) | Send a team announcement via both Gmail and a Google Chat space. | | [recipe-create-feedback-form](../skills/recipe-create-feedback-form/SKILL.md) | Create a Google Form for feedback and share it via Gmail. | @@ -130,8 +114,6 @@ Multi-step task sequences with real commands. | [recipe-share-doc-and-notify](../skills/recipe-share-doc-and-notify/SKILL.md) | Share a Google Docs document with edit access and email collaborators the link. | | [recipe-backup-sheet-as-csv](../skills/recipe-backup-sheet-as-csv/SKILL.md) | Export a Google Sheets spreadsheet as a CSV file for local backup or processing. | | [recipe-save-email-to-doc](../skills/recipe-save-email-to-doc/SKILL.md) | Save a Gmail message body into a Google Doc for archival or reference. | -| [recipe-batch-reply-to-emails](../skills/recipe-batch-reply-to-emails/SKILL.md) | Find Gmail messages matching a query and send a standard reply to each one. | -| [recipe-batch-rename-files](../skills/recipe-batch-rename-files/SKILL.md) | Rename multiple Google Drive files matching a pattern to follow a consistent naming convention. | | [recipe-compare-sheet-tabs](../skills/recipe-compare-sheet-tabs/SKILL.md) | Read data from two tabs in a Google Sheet to compare and identify differences. | | [recipe-batch-invite-to-event](../skills/recipe-batch-invite-to-event/SKILL.md) | Add a list of attendees to an existing Google Calendar event and send notifications. | | [recipe-forward-labeled-emails](../skills/recipe-forward-labeled-emails/SKILL.md) | Find Gmail messages with a specific label and forward them to another address. | diff --git a/registry/personas.yaml b/registry/personas.yaml index 4a5ddc6..2aac86a 100644 --- a/registry/personas.yaml +++ b/registry/personas.yaml @@ -45,7 +45,7 @@ personas: - name: hr-coordinator title: HR Coordinator description: "Handle HR workflows — onboarding, announcements, and employee comms." - services: [gmail, calendar, drive, chat, admin] + services: [gmail, calendar, drive, chat] workflows: ["+email-to-task", "+file-announce"] instructions: - "For new hire onboarding, create calendar events for orientation sessions with `gws calendar +insert`." @@ -56,7 +56,6 @@ personas: tips: - "Always use `--sanitize` for PII-sensitive operations." - "Create a dedicated 'HR Onboarding' calendar for tracking orientation schedules." - - "Use `gws admin` for user account management (creating accounts, resetting passwords)." - name: sales-ops title: Sales Operations @@ -76,18 +75,15 @@ personas: - name: it-admin title: IT Administrator - description: "Administer IT — manage users, monitor security, configure Workspace." - services: [admin, gmail, drive, calendar] + description: "Administer IT — monitor security and configure Workspace." + services: [gmail, drive, calendar] workflows: ["+standup-report"] instructions: - "Start the day with `gws workflow +standup-report` to review any pending IT requests." - - "Manage user accounts with `gws admin` — create, suspend, or update users." - "Monitor suspicious login activity and review audit logs." - "Configure Drive sharing policies to enforce organizational security." - - "Set up group email aliases and distribution lists." tips: - - "Use `gws admin` extensively — it covers user management, groups, and org units." - - "Always use `--dry-run` before bulk user operations." + - "Always use `--dry-run` before bulk operations." - "Review `gws auth status` regularly to verify service account permissions." - name: content-creator diff --git a/registry/recipes.yaml b/registry/recipes.yaml index b3ac6e0..1b480f7 100644 --- a/registry/recipes.yaml +++ b/registry/recipes.yaml @@ -10,19 +10,7 @@ # - caution: optional warning for destructive operations recipes: - # ============================================================ - # IT / SECURITY / COMPLIANCE - # ============================================================ - - name: audit-external-sharing - title: Audit External Drive Sharing - description: "Find and review Google Drive files shared outside the organization." - category: security - services: [drive] - steps: - - "List externally shared files: `gws drive files list --params '{\"q\": \"visibility = '\\''anyoneWithLink'\\''\"}'`" - - "Check permissions on a file: `gws drive permissions list --params '{\"fileId\": \"FILE_ID\"}'`" - - "Revoke if needed: `gws drive permissions delete --params '{\"fileId\": \"FILE_ID\", \"permissionId\": \"PERM_ID\"}'`" - caution: "Revoking permissions immediately removes access. Confirm with the file owner first." + # ============================================================ # GMAIL WORKFLOWS @@ -37,14 +25,7 @@ recipes: - "Apply a label: `gws gmail users messages modify --params '{\"userId\": \"me\", \"id\": \"MESSAGE_ID\"}' --json '{\"addLabelIds\": [\"LABEL_ID\"]}'`" - "Archive (remove from inbox): `gws gmail users messages modify --params '{\"userId\": \"me\", \"id\": \"MESSAGE_ID\"}' --json '{\"removeLabelIds\": [\"INBOX\"]}'`" - - name: send-personalized-emails - title: Send Personalized Emails from a Sheet - description: "Read recipient data from Google Sheets and send personalized Gmail messages to each row." - category: productivity - services: [sheets, gmail] - steps: - - "Read recipient list: `gws sheets +read --spreadsheet-id SHEET_ID --range 'Contacts!A2:C'`" - - "For each row, send a personalized email: `gws gmail +send --to recipient@example.com --subject 'Hello, Name' --body 'Hi Name, your report is ready.'`" + - name: draft-email-from-doc title: Draft a Gmail Message from a Google Doc @@ -154,15 +135,7 @@ recipes: # ============================================================ # EMAIL / GMAIL # ============================================================ - - name: search-and-export-emails - title: Search and Export Emails - description: "Find Gmail messages matching a query and export them for review." - category: productivity - services: [gmail] - steps: - - "Search for emails: `gws gmail users messages list --params '{\"userId\": \"me\", \"q\": \"from:client@example.com after:2024/01/01\"}'`" - - "Get full message: `gws gmail users messages get --params '{\"userId\": \"me\", \"id\": \"MSG_ID\"}'`" - - "Export results: `gws gmail users messages list --params '{\"userId\": \"me\", \"q\": \"label:project-x\"}' --format json > project-emails.json`" + - name: create-gmail-filter title: Create a Gmail Filter @@ -178,16 +151,7 @@ recipes: # ============================================================ # CALENDAR / SCHEDULING # ============================================================ - - name: cancel-and-notify - title: Cancel Meeting and Notify Attendees - description: "Delete a Google Calendar event and send a cancellation email via Gmail." - category: scheduling - services: [calendar, gmail] - steps: - - "Find the meeting: `gws calendar +agenda --format json` and locate the event ID" - - "Delete the event: `gws calendar events delete --params '{\"calendarId\": \"primary\", \"eventId\": \"EVENT_ID\", \"sendUpdates\": \"all\"}'`" - - "Send follow-up: `gws gmail +send --to attendees --subject 'Meeting Cancelled: [Title]' --body 'Apologies, this meeting has been cancelled.'`" - caution: "Deleting with sendUpdates sends cancellation emails to all attendees." + - name: schedule-recurring-event title: Schedule a Recurring Meeting @@ -228,9 +192,7 @@ recipes: services: [drive] steps: - "List files sorted by size: `gws drive files list --params '{\"orderBy\": \"quotaBytesUsed desc\", \"pageSize\": 20, \"fields\": \"files(id,name,size,mimeType,owners)\"}' --format table`" - - "Review the output and identify files to delete or move" - - "Delete if needed: `gws drive files delete --params '{\"fileId\": \"FILE_ID\"}'`" - caution: "Deleting files is permanent if the trash is emptied. Confirm before deleting." + - "Review the output and identify files to archive or move" - name: create-shared-drive title: Create and Configure a Shared Drive @@ -242,15 +204,7 @@ recipes: - "Add a member: `gws drive permissions create --params '{\"fileId\": \"DRIVE_ID\", \"supportsAllDrives\": true}' --json '{\"role\": \"writer\", \"type\": \"user\", \"emailAddress\": \"member@company.com\"}'`" - "List members: `gws drive permissions list --params '{\"fileId\": \"DRIVE_ID\", \"supportsAllDrives\": true}'`" - - name: transfer-file-ownership - title: Transfer File Ownership - description: "Transfer ownership of Google Drive files from one user to another." - category: it - services: [drive] - steps: - - "List files owned by the user: `gws drive files list --params '{\"q\": \"'\\''user@company.com'\\'' in owners\"}'`" - - "Transfer ownership: `gws drive permissions create --params '{\"fileId\": \"FILE_ID\", \"transferOwnership\": true}' --json '{\"role\": \"owner\", \"type\": \"user\", \"emailAddress\": \"newowner@company.com\"}'`" - caution: "Transferring ownership is irreversible without the new owner's cooperation." + # ============================================================ # SHEETS / DATA @@ -318,19 +272,7 @@ recipes: # ============================================================ # CONTACTS / PEOPLE # ============================================================ - # ============================================================ - # APPS SCRIPT - # ============================================================ - - name: deploy-apps-script - title: Deploy an Apps Script Project - description: "Push local files to a Google Apps Script project." - category: engineering - services: [apps-script] - steps: - - "List existing projects: `gws apps-script projects list --format table`" - - "Get project content: `gws apps-script projects getContent --params '{\"scriptId\": \"SCRIPT_ID\"}'`" - - "Update content: `gws apps-script projects updateContent --params '{\"scriptId\": \"SCRIPT_ID\"}' --json '{\"files\": [{\"name\": \"Code\", \"type\": \"SERVER_JS\", \"source\": \"function main() { ... }\"}]}'`" - - "Create a new version: `gws apps-script projects versions create --params '{\"scriptId\": \"SCRIPT_ID\"}' --json '{\"description\": \"v2 release\"}'`" + # ============================================================ # EVENT SUBSCRIPTIONS @@ -397,18 +339,7 @@ recipes: - "Get the presentation ID from the response" - "Share with team: `gws drive permissions create --params '{\"fileId\": \"PRESENTATION_ID\"}' --json '{\"role\": \"writer\", \"type\": \"user\", \"emailAddress\": \"team@company.com\"}'`" - # ============================================================ - # ALERT CENTER - # ============================================================ - - name: triage-security-alerts - title: Triage Google Workspace Security Alerts - description: "List and review Google Workspace security alerts from Alert Center." - category: security - services: [alertcenter] - steps: - - "List active alerts: `gws alertcenter alerts list --format table`" - - "Get alert details: `gws alertcenter alerts get --params '{\"alertId\": \"ALERT_ID\"}'`" - - "Acknowledge an alert: `gws alertcenter alerts undelete --params '{\"alertId\": \"ALERT_ID\"}'`" + # ============================================================ # CONSUMER PRODUCTIVITY @@ -567,29 +498,12 @@ recipes: # ============================================================ # GMAIL — AUTOMATED REPLIES # ============================================================ - - name: batch-reply-to-emails - title: Batch Reply to Similar Gmail Messages - description: "Find Gmail messages matching a query and send a standard reply to each one." - category: productivity - services: [gmail] - steps: - - "Find messages needing replies: `gws gmail users messages list --params '{\"userId\": \"me\", \"q\": \"is:unread from:customers label:support\"}' --format table`" - - "Read a message: `gws gmail users messages get --params '{\"userId\": \"me\", \"id\": \"MSG_ID\"}'`" - - "Send a reply: `gws gmail +send --to sender@example.com --subject 'Re: Your Request' --body 'Thank you for reaching out. We have received your request and will respond within 24 hours.'`" - - "Mark as read: `gws gmail users messages modify --params '{\"userId\": \"me\", \"id\": \"MSG_ID\"}' --json '{\"removeLabelIds\": [\"UNREAD\"]}'`" + # ============================================================ # DRIVE — BATCH OPERATIONS # ============================================================ - - name: batch-rename-files - title: Batch Rename Google Drive Files - description: "Rename multiple Google Drive files matching a pattern to follow a consistent naming convention." - category: productivity - services: [drive] - steps: - - "Find files to rename: `gws drive files list --params '{\"q\": \"name contains '\\''Report'\\''\"}' --format table`" - - "Rename a file: `gws drive files update --params '{\"fileId\": \"FILE_ID\"}' --json '{\"name\": \"2025-Q1 Report - Final\"}'`" - - "Verify the rename: `gws drive files get --params '{\"fileId\": \"FILE_ID\", \"fields\": \"name\"}'`" + # ============================================================ # SHEETS — DATA SYNC diff --git a/skills/gws-admin/SKILL.md b/skills/gws-admin/SKILL.md deleted file mode 100644 index 80de24d..0000000 --- a/skills/gws-admin/SKILL.md +++ /dev/null @@ -1,183 +0,0 @@ ---- -name: gws-admin -version: 1.0.0 -description: "Google Workspace Admin SDK: Manage users, groups, and devices." -metadata: - openclaw: - category: "productivity" - requires: - bins: ["gws"] - cliHelp: "gws admin --help" ---- - -# admin (directory_v1) - -> **PREREQUISITE:** Read `../gws-shared/SKILL.md` for auth, global flags, and security rules. If missing, run `gws generate-skills` to create it. - -```bash -gws admin [flags] -``` - -## API Resources - -### asps - - - `delete` — Deletes an ASP issued by a user. - - `get` — Gets information about an ASP issued by a user. - - `list` — Lists the ASPs issued by a user. - -### channels - - - `stop` — Stops watching resources through this channel. - -### chromeosdevices - - - `action` — Use [BatchChangeChromeOsDeviceStatus](https://developers.google.com/workspace/admin/directory/reference/rest/v1/customer.devices.chromeos/batchChangeStatus) instead. Takes an action that affects a Chrome OS Device. This includes deprovisioning, disabling, and re-enabling devices. *Warning:* * Deprovisioning a device will stop device policy syncing and remove device-level printers. After a device is deprovisioned, it must be wiped before it can be re-enrolled. - - `get` — Retrieves a Chrome OS device's properties. - - `list` — Retrieves a paginated list of Chrome OS devices within an account. - - `moveDevicesToOu` — Moves or inserts multiple Chrome OS devices to an organizational unit. You can move up to 50 devices at once. - - `patch` — Updates a device's updatable properties, such as `annotatedUser`, `annotatedLocation`, `notes`, `orgUnitPath`, or `annotatedAssetId`. This method supports [patch semantics](https://developers.google.com/workspace/admin/directory/v1/guides/performance#patch). - - `update` — Updates a device's updatable properties, such as `annotatedUser`, `annotatedLocation`, `notes`, `orgUnitPath`, or `annotatedAssetId`. - -### customer - - - `devices` — Operations on the 'devices' resource - -### customers - - - `get` — Retrieves a customer. - - `patch` — Patches a customer. - - `update` — Updates a customer. - - `chrome` — Operations on the 'chrome' resource - -### domainAliases - - - `delete` — Deletes a domain Alias of the customer. - - `get` — Retrieves a domain alias of the customer. - - `insert` — Inserts a domain alias of the customer. - - `list` — Lists the domain aliases of the customer. - -### domains - - - `delete` — Deletes a domain of the customer. - - `get` — Retrieves a domain of the customer. - - `insert` — Inserts a domain of the customer. - - `list` — Lists the domains of the customer. - -### groups - - - `delete` — Deletes a group. - - `get` — Retrieves a group's properties. - - `insert` — Creates a group. - - `list` — Retrieves all groups of a domain or of a user given a userKey (paginated). - - `patch` — Updates a group's properties. This method supports [patch semantics](https://developers.google.com/workspace/admin/directory/v1/guides/performance#patch). - - `update` — Updates a group's properties. - - `aliases` — Operations on the 'aliases' resource - -### members - - - `delete` — Removes a member from a group. - - `get` — Retrieves a group member's properties. - - `hasMember` — Checks whether the given user is a member of the group. Membership can be direct or nested, but if nested, the `memberKey` and `groupKey` must be entities in the same domain or an `Invalid input` error is returned. To check for nested memberships that include entities outside of the group's domain, use the [`checkTransitiveMembership()`](https://cloud.google.com/identity/docs/reference/rest/v1/groups.memberships/checkTransitiveMembership) method in the Cloud Identity Groups API. - - `insert` — Adds a user to the specified group. - - `list` — Retrieves a paginated list of all members in a group. This method times out after 60 minutes. For more information, see [Troubleshoot error codes](https://developers.google.com/workspace/admin/directory/v1/guides/troubleshoot-error-codes). - - `patch` — Updates the membership properties of a user in the specified group. This method supports [patch semantics](https://developers.google.com/workspace/admin/directory/v1/guides/performance#patch). - - `update` — Updates the membership of a user in the specified group. - -### mobiledevices - - - `action` — Takes an action that affects a mobile device. For example, remotely wiping a device. - - `delete` — Removes a mobile device. - - `get` — Retrieves a mobile device's properties. - - `list` — Retrieves a paginated list of all user-owned mobile devices for an account. To retrieve a list that includes company-owned devices, use the Cloud Identity [Devices API](https://cloud.google.com/identity/docs/concepts/overview-devices) instead. This method times out after 60 minutes. For more information, see [Troubleshoot error codes](https://developers.google.com/workspace/admin/directory/v1/guides/troubleshoot-error-codes). - -### orgunits - - - `delete` — Removes an organizational unit. - - `get` — Retrieves an organizational unit. - - `insert` — Adds an organizational unit. - - `list` — Retrieves a list of all organizational units for an account. - - `patch` — Updates an organizational unit. This method supports [patch semantics](https://developers.google.com/workspace/admin/directory/v1/guides/performance#patch) - - `update` — Updates an organizational unit. - -### privileges - - - `list` — Retrieves a paginated list of all privileges for a customer. - -### resources - - - `buildings` — Operations on the 'buildings' resource - - `calendars` — Operations on the 'calendars' resource - - `features` — Operations on the 'features' resource - -### roleAssignments - - - `delete` — Deletes a role assignment. - - `get` — Retrieves a role assignment. - - `insert` — Creates a role assignment. - - `list` — Retrieves a paginated list of all roleAssignments. - -### roles - - - `delete` — Deletes a role. - - `get` — Retrieves a role. - - `insert` — Creates a role. - - `list` — Retrieves a paginated list of all the roles in a domain. - - `patch` — Patches a role. - - `update` — Updates a role. - -### schemas - - - `delete` — Deletes a schema. - - `get` — Retrieves a schema. - - `insert` — Creates a schema. - - `list` — Retrieves all schemas for a customer. - - `patch` — Patches a schema. - - `update` — Updates a schema. - -### tokens - - - `delete` — Deletes all access tokens issued by a user for an application. - - `get` — Gets information about an access token issued by a user. - - `list` — Returns the set of tokens specified user has issued to 3rd party applications. - -### twoStepVerification - - - `turnOff` — Turns off 2-Step Verification for user. - -### users - - - `createGuest` — Create a guest user with access to a [subset of Workspace capabilities](https://support.google.com/a/answer/16558545). This feature is currently in Alpha. Please reach out to support if you are interested in trying this feature. - - `delete` — Deletes a user. - - `get` — Retrieves a user. - - `insert` — Creates a user. Mutate calls immediately following user creation might sometimes fail as the user isn't fully created due to propagation delay in our backends. Check the error details for the "User creation is not complete" message to see if this is the case. Retrying the calls after some time can help in this case. If `resolveConflictAccount` is set to `true`, a `202` response code means that a conflicting unmanaged account exists and was invited to join the organization. - - `list` — Retrieves a paginated list of either deleted users or all users in a domain. - - `makeAdmin` — Makes a user a super administrator. - - `patch` — Updates a user using patch semantics. The update method should be used instead, because it also supports patch semantics and has better performance. If you're mapping an external identity to a Google identity, use the [`update`](https://developers.google.com/workspace/admin/directory/v1/reference/users/update) method instead of the `patch` method. This method is unable to clear fields that contain repeated objects (`addresses`, `phones`, etc). Use the update method instead. - - `signOut` — Signs a user out of all web and device sessions and reset their sign-in cookies. User will have to sign in by authenticating again. - - `undelete` — Undeletes a deleted user. - - `update` — Updates a user. This method supports patch semantics, meaning that you only need to include the fields you wish to update. Fields that are not present in the request will be preserved, and fields set to `null` will be cleared. For repeating fields that contain arrays, individual items in the array can't be patched piecemeal; they must be supplied in the request body with the desired values for all items. - - `watch` — Watches for changes in users list. - - `aliases` — Operations on the 'aliases' resource - - `photos` — Operations on the 'photos' resource - -### verificationCodes - - - `generate` — Generates new backup verification codes for the user. - - `invalidate` — Invalidates the current backup verification codes for the user. - - `list` — Returns the current set of valid backup verification codes for the specified user. - -## Discovering Commands - -Before calling any API method, inspect it: - -```bash -# Browse resources and methods -gws admin --help - -# Inspect a method's required params, types, and defaults -gws schema admin.. -``` - -Use `gws schema` output to build your `--params` and `--json` flags. - diff --git a/skills/gws-alertcenter/SKILL.md b/skills/gws-alertcenter/SKILL.md deleted file mode 100644 index 07d8135..0000000 --- a/skills/gws-alertcenter/SKILL.md +++ /dev/null @@ -1,52 +0,0 @@ ---- -name: gws-alertcenter -version: 1.0.0 -description: "Google Workspace Alert Center: Manage Workspace security alerts." -metadata: - openclaw: - category: "productivity" - requires: - bins: ["gws"] - cliHelp: "gws alertcenter --help" ---- - -# alertcenter (v1beta1) - -> **PREREQUISITE:** Read `../gws-shared/SKILL.md` for auth, global flags, and security rules. If missing, run `gws generate-skills` to create it. - -```bash -gws alertcenter [flags] -``` - -## API Resources - -### alerts - - - `batchDelete` — Performs batch delete operation on alerts. - - `batchUndelete` — Performs batch undelete operation on alerts. - - `delete` — Marks the specified alert for deletion. An alert that has been marked for deletion is removed from Alert Center after 30 days. Marking an alert for deletion has no effect on an alert which has already been marked for deletion. Attempting to mark a nonexistent alert for deletion results in a `NOT_FOUND` error. - - `get` — Gets the specified alert. Attempting to get a nonexistent alert returns `NOT_FOUND` error. - - `getMetadata` — Returns the metadata of an alert. Attempting to get metadata for a non-existent alert returns `NOT_FOUND` error. - - `list` — Lists the alerts. - - `undelete` — Restores, or "undeletes", an alert that was marked for deletion within the past 30 days. Attempting to undelete an alert which was marked for deletion over 30 days ago (which has been removed from the Alert Center database) or a nonexistent alert returns a `NOT_FOUND` error. Attempting to undelete an alert which has not been marked for deletion has no effect. - - `feedback` — Operations on the 'feedback' resource - -### v1beta1 - - - `getSettings` — Returns customer-level settings. - - `updateSettings` — Updates the customer-level settings. - -## Discovering Commands - -Before calling any API method, inspect it: - -```bash -# Browse resources and methods -gws alertcenter --help - -# Inspect a method's required params, types, and defaults -gws schema alertcenter.. -``` - -Use `gws schema` output to build your `--params` and `--json` flags. - diff --git a/skills/gws-apps-script-push/SKILL.md b/skills/gws-apps-script-push/SKILL.md deleted file mode 100644 index 1866e0e..0000000 --- a/skills/gws-apps-script-push/SKILL.md +++ /dev/null @@ -1,51 +0,0 @@ ---- -name: gws-apps-script-push -version: 1.0.0 -description: "Google Apps Script: Upload local files to an Apps Script project." -metadata: - openclaw: - category: "productivity" - requires: - bins: ["gws"] - cliHelp: "gws apps-script +push --help" ---- - -# apps-script +push - -> **PREREQUISITE:** Read `../gws-shared/SKILL.md` for auth, global flags, and security rules. If missing, run `gws generate-skills` to create it. - -Upload local files to an Apps Script project - -## Usage - -```bash -gws apps-script +push --script -``` - -## Flags - -| Flag | Required | Default | Description | -|------|----------|---------|-------------| -| `--script` | ✓ | — | Script Project ID | -| `--dir` | — | — | Directory containing script files (defaults to current dir) | - -## Examples - -```bash -gws script +push --script SCRIPT_ID -gws script +push --script SCRIPT_ID --dir ./src -``` - -## Tips - -- Supports .gs, .js, .html, and appsscript.json files. -- Skips hidden files and node_modules automatically. -- This replaces ALL files in the project. - -> [!CAUTION] -> This is a **write** command — confirm with the user before executing. - -## See Also - -- [gws-shared](../gws-shared/SKILL.md) — Global flags and auth -- [gws-apps-script](../gws-apps-script/SKILL.md) — All manage and execute apps script projects commands diff --git a/skills/gws-apps-script/SKILL.md b/skills/gws-apps-script/SKILL.md deleted file mode 100644 index 3f2eae8..0000000 --- a/skills/gws-apps-script/SKILL.md +++ /dev/null @@ -1,61 +0,0 @@ ---- -name: gws-apps-script -version: 1.0.0 -description: "Google Apps Script: Manage and execute Apps Script projects." -metadata: - openclaw: - category: "productivity" - requires: - bins: ["gws"] - cliHelp: "gws apps-script --help" ---- - -# apps-script (v1) - -> **PREREQUISITE:** Read `../gws-shared/SKILL.md` for auth, global flags, and security rules. If missing, run `gws generate-skills` to create it. - -```bash -gws apps-script [flags] -``` - -## Helper Commands - -| Command | Description | -|---------|-------------| -| [`+push`](../gws-apps-script-push/SKILL.md) | Upload local files to an Apps Script project | - -## API Resources - -### processes - - - `list` — List information about processes made by or on behalf of a user, such as process type and current status. - - `listScriptProcesses` — List information about a script's executed processes, such as process type and current status. - -### projects - - - `create` — Creates a new, empty script project with no script files and a base manifest file. - - `get` — Gets a script project's metadata. - - `getContent` — Gets the content of the script project, including the code source and metadata for each script file. - - `getMetrics` — Get metrics data for scripts, such as number of executions and active users. - - `updateContent` — Updates the content of the specified script project. This content is stored as the HEAD version, and is used when the script is executed as a trigger, in the script editor, in add-on preview mode, or as a web app or Apps Script API in development mode. This clears all the existing files in the project. - - `deployments` — Operations on the 'deployments' resource - - `versions` — Operations on the 'versions' resource - -### scripts - - - `run` — - -## Discovering Commands - -Before calling any API method, inspect it: - -```bash -# Browse resources and methods -gws apps-script --help - -# Inspect a method's required params, types, and defaults -gws schema apps-script.. -``` - -Use `gws schema` output to build your `--params` and `--json` flags. - diff --git a/skills/gws-cloudidentity/SKILL.md b/skills/gws-cloudidentity/SKILL.md deleted file mode 100644 index c25ecd5..0000000 --- a/skills/gws-cloudidentity/SKILL.md +++ /dev/null @@ -1,93 +0,0 @@ ---- -name: gws-cloudidentity -version: 1.0.0 -description: "Google Cloud Identity: Manage identity groups and memberships." -metadata: - openclaw: - category: "productivity" - requires: - bins: ["gws"] - cliHelp: "gws cloudidentity --help" ---- - -# cloudidentity (v1) - -> **PREREQUISITE:** Read `../gws-shared/SKILL.md` for auth, global flags, and security rules. If missing, run `gws generate-skills` to create it. - -```bash -gws cloudidentity [flags] -``` - -## API Resources - -### customers - - - `userinvitations` — Operations on the 'userinvitations' resource - -### devices - - - `cancelWipe` — Cancels an unfinished device wipe. This operation can be used to cancel device wipe in the gap between the wipe operation returning success and the device being wiped. This operation is possible when the device is in a "pending wipe" state. The device enters the "pending wipe" state when a wipe device command is issued, but has not yet been sent to the device. The cancel wipe will fail if the wipe command has already been issued to the device. - - `create` — Creates a device. Only company-owned device may be created. **Note**: This method is available only to customers who have one of the following SKUs: Enterprise Standard, Enterprise Plus, Enterprise for Education, and Cloud Identity Premium - - `delete` — Deletes the specified device. - - `get` — Retrieves the specified device. - - `list` — Lists/Searches devices. - - `wipe` — Wipes all data on the specified device. - - `deviceUsers` — Operations on the 'deviceUsers' resource - -### groups - - - `create` — Creates a Group. - - `delete` — Deletes a `Group`. - - `get` — Retrieves a `Group`. - - `getSecuritySettings` — Get Security Settings - - `list` — Lists the `Group` resources under a customer or namespace. - - `lookup` — Looks up the [resource name](https://cloud.google.com/apis/design/resource_names) of a `Group` by its `EntityKey`. - - `patch` — Updates a `Group`. - - `search` — Searches for `Group` resources matching a specified query. - - `updateSecuritySettings` — Update Security Settings - - `memberships` — Operations on the 'memberships' resource - -### inboundOidcSsoProfiles - - - `create` — Creates an InboundOidcSsoProfile for a customer. When the target customer has enabled [Multi-party approval for sensitive actions](https://support.google.com/a/answer/13790448), the `Operation` in the response will have `"done": false`, it will not have a response, and the metadata will have `"state": "awaiting-multi-party-approval"`. - - `delete` — Deletes an InboundOidcSsoProfile. - - `get` — Gets an InboundOidcSsoProfile. - - `list` — Lists InboundOidcSsoProfile objects for a Google enterprise customer. - - `patch` — Updates an InboundOidcSsoProfile. When the target customer has enabled [Multi-party approval for sensitive actions](https://support.google.com/a/answer/13790448), the `Operation` in the response will have `"done": false`, it will not have a response, and the metadata will have `"state": "awaiting-multi-party-approval"`. - -### inboundSamlSsoProfiles - - - `create` — Creates an InboundSamlSsoProfile for a customer. When the target customer has enabled [Multi-party approval for sensitive actions](https://support.google.com/a/answer/13790448), the `Operation` in the response will have `"done": false`, it will not have a response, and the metadata will have `"state": "awaiting-multi-party-approval"`. - - `delete` — Deletes an InboundSamlSsoProfile. - - `get` — Gets an InboundSamlSsoProfile. - - `list` — Lists InboundSamlSsoProfiles for a customer. - - `patch` — Updates an InboundSamlSsoProfile. When the target customer has enabled [Multi-party approval for sensitive actions](https://support.google.com/a/answer/13790448), the `Operation` in the response will have `"done": false`, it will not have a response, and the metadata will have `"state": "awaiting-multi-party-approval"`. - - `idpCredentials` — Operations on the 'idpCredentials' resource - -### inboundSsoAssignments - - - `create` — Creates an InboundSsoAssignment for users and devices in a `Customer` under a given `Group` or `OrgUnit`. - - `delete` — Deletes an InboundSsoAssignment. To disable SSO, Create (or Update) an assignment that has `sso_mode` == `SSO_OFF`. - - `get` — Gets an InboundSsoAssignment. - - `list` — Lists the InboundSsoAssignments for a `Customer`. - - `patch` — Updates an InboundSsoAssignment. The body of this request is the `inbound_sso_assignment` field and the `update_mask` is relative to that. For example: a PATCH to `/v1/inboundSsoAssignments/0abcdefg1234567&update_mask=rank` with a body of `{ "rank": 1 }` moves that (presumably group-targeted) SSO assignment to the highest priority and shifts any other group-targeted assignments down in priority. - -### policies - - - `get` — Get a policy. - - `list` — List policies. - -## Discovering Commands - -Before calling any API method, inspect it: - -```bash -# Browse resources and methods -gws cloudidentity --help - -# Inspect a method's required params, types, and defaults -gws schema cloudidentity.. -``` - -Use `gws schema` output to build your `--params` and `--json` flags. - diff --git a/skills/gws-drive/SKILL.md b/skills/gws-drive/SKILL.md index a6a1370..d22766b 100644 --- a/skills/gws-drive/SKILL.md +++ b/skills/gws-drive/SKILL.md @@ -67,7 +67,6 @@ gws drive [flags] ### drives - `create` — Creates a shared drive. For more information, see [Manage shared drives](https://developers.google.com/workspace/drive/api/guides/manage-shareddrives). - - `delete` — Permanently deletes a shared drive for which the user is an `organizer`. The shared drive cannot contain any untrashed items. For more information, see [Manage shared drives](https://developers.google.com/workspace/drive/api/guides/manage-shareddrives). - `get` — Gets a shared drive's metadata by ID. For more information, see [Manage shared drives](https://developers.google.com/workspace/drive/api/guides/manage-shareddrives). - `hide` — Hides a shared drive from the default view. For more information, see [Manage shared drives](https://developers.google.com/workspace/drive/api/guides/manage-shareddrives). - `list` — Lists the user's shared drives. This method accepts the `q` parameter, which is a search query combining one or more search terms. For more information, see the [Search for shared drives](/workspace/drive/api/guides/search-shareddrives) guide. @@ -78,9 +77,7 @@ gws drive [flags] - `copy` — Creates a copy of a file and applies any requested updates with patch semantics. For more information, see [Create and manage files](https://developers.google.com/workspace/drive/api/guides/create-file). - `create` — Creates a file. For more information, see [Create and manage files](/workspace/drive/api/guides/create-file). This method supports an */upload* URI and accepts uploaded media with the following characteristics: - *Maximum file size:* 5,120 GB - *Accepted Media MIME types:* `*/*` (Specify a valid MIME type, rather than the literal `*/*` value. The literal `*/*` is only used to indicate that any valid MIME type can be uploaded. - - `delete` — Permanently deletes a file owned by the user without moving it to the trash. For more information, see [Trash or delete files and folders](https://developers.google.com/workspace/drive/api/guides/delete). If the file belongs to a shared drive, the user must be an `organizer` on the parent folder. If the target is a folder, all descendants owned by the user are also deleted. - `download` — Downloads the content of a file. For more information, see [Download and export files](https://developers.google.com/workspace/drive/api/guides/manage-downloads). Operations are valid for 24 hours from the time of creation. - - `emptyTrash` — Permanently deletes all of the user's trashed files. For more information, see [Trash or delete files and folders](https://developers.google.com/workspace/drive/api/guides/delete). - `export` — Exports a Google Workspace document to the requested MIME type and returns exported byte content. For more information, see [Download and export files](https://developers.google.com/workspace/drive/api/guides/manage-downloads). Note that the exported content is limited to 10 MB. - `generateIds` — Generates a set of file IDs which can be provided in create or copy requests. For more information, see [Create and manage files](https://developers.google.com/workspace/drive/api/guides/create-file). - `get` — Gets a file's metadata or content by ID. For more information, see [Search for files and folders](/workspace/drive/api/guides/search-files). If you provide the URL parameter `alt=media`, then the response includes the file contents in the response body. Downloading content with `alt=media` only works if the file is stored in Drive. To download Google Docs, Sheets, and Slides use [`files.export`](/workspace/drive/api/reference/rest/v3/files/export) instead. @@ -120,7 +117,6 @@ gws drive [flags] ### teamdrives - `create` — Deprecated: Use `drives.create` instead. - - `delete` — Deprecated: Use `drives.delete` instead. - `get` — Deprecated: Use `drives.get` instead. - `list` — Deprecated: Use `drives.list` instead. - `update` — Deprecated: Use `drives.update` instead. diff --git a/skills/gws-groupssettings/SKILL.md b/skills/gws-groupssettings/SKILL.md deleted file mode 100644 index a265e74..0000000 --- a/skills/gws-groupssettings/SKILL.md +++ /dev/null @@ -1,42 +0,0 @@ ---- -name: gws-groupssettings -version: 1.0.0 -description: "Manage Google Groups settings." -metadata: - openclaw: - category: "productivity" - requires: - bins: ["gws"] - cliHelp: "gws groupssettings --help" ---- - -# groupssettings (v1) - -> **PREREQUISITE:** Read `../gws-shared/SKILL.md` for auth, global flags, and security rules. If missing, run `gws generate-skills` to create it. - -```bash -gws groupssettings [flags] -``` - -## API Resources - -### groups - - - `get` — Gets one resource by id. - - `patch` — Updates an existing resource. This method supports patch semantics. - - `update` — Updates an existing resource. - -## Discovering Commands - -Before calling any API method, inspect it: - -```bash -# Browse resources and methods -gws groupssettings --help - -# Inspect a method's required params, types, and defaults -gws schema groupssettings.. -``` - -Use `gws schema` output to build your `--params` and `--json` flags. - diff --git a/skills/gws-licensing/SKILL.md b/skills/gws-licensing/SKILL.md deleted file mode 100644 index 1c5ab6b..0000000 --- a/skills/gws-licensing/SKILL.md +++ /dev/null @@ -1,46 +0,0 @@ ---- -name: gws-licensing -version: 1.0.0 -description: "Google Workspace Enterprise License Manager: Manage product licenses." -metadata: - openclaw: - category: "productivity" - requires: - bins: ["gws"] - cliHelp: "gws licensing --help" ---- - -# licensing (v1) - -> **PREREQUISITE:** Read `../gws-shared/SKILL.md` for auth, global flags, and security rules. If missing, run `gws generate-skills` to create it. - -```bash -gws licensing [flags] -``` - -## API Resources - -### licenseAssignments - - - `delete` — Revoke a license. - - `get` — Get a specific user's license by product SKU. - - `insert` — Assign a license. - - `listForProduct` — List all users assigned licenses for a specific product SKU. - - `listForProductAndSku` — List all users assigned licenses for a specific product SKU. - - `patch` — Reassign a user's product SKU with a different SKU in the same product. This method supports patch semantics. - - `update` — Reassign a user's product SKU with a different SKU in the same product. - -## Discovering Commands - -Before calling any API method, inspect it: - -```bash -# Browse resources and methods -gws licensing --help - -# Inspect a method's required params, types, and defaults -gws schema licensing.. -``` - -Use `gws schema` output to build your `--params` and `--json` flags. - diff --git a/skills/gws-people/SKILL.md b/skills/gws-people/SKILL.md index a6b9427..812dad1 100644 --- a/skills/gws-people/SKILL.md +++ b/skills/gws-people/SKILL.md @@ -39,10 +39,8 @@ gws people [flags] ### people - `batchCreateContacts` — Create a batch of new contacts and return the PersonResponses for the newly Mutate requests for the same user should be sent sequentially to avoid increased latency and failures. - - `batchDeleteContacts` — Delete a batch of contacts. Any non-contact data will not be deleted. Mutate requests for the same user should be sent sequentially to avoid increased latency and failures. - `batchUpdateContacts` — Update a batch of contacts and return a map of resource names to PersonResponses for the updated contacts. Mutate requests for the same user should be sent sequentially to avoid increased latency and failures. - `createContact` — Create a new contact and return the person resource for that contact. The request returns a 400 error if more than one field is specified on a field that is a singleton for contact sources: * biographies * birthdays * genders * names Mutate requests for the same user should be sent sequentially to avoid increased latency and failures. - - `deleteContact` — Delete a contact person. Any non-contact data will not be deleted. Mutate requests for the same user should be sent sequentially to avoid increased latency and failures. - `deleteContactPhoto` — Delete a contact's photo. Mutate requests for the same user should be done sequentially to avoid // lock contention. - `get` — Provides information about a person by specifying a resource name. Use `people/me` to indicate the authenticated user. The request returns a 400 error if 'personFields' is not specified. - `getBatchGet` — Provides information about a list of specific people by specifying a list of requested resource names. Use `people/me` to indicate the authenticated user. The request returns a 400 error if 'personFields' is not specified. diff --git a/skills/gws-reseller/SKILL.md b/skills/gws-reseller/SKILL.md deleted file mode 100644 index 739fc68..0000000 --- a/skills/gws-reseller/SKILL.md +++ /dev/null @@ -1,62 +0,0 @@ ---- -name: gws-reseller -version: 1.0.0 -description: "Google Workspace Reseller: Manage Workspace subscriptions." -metadata: - openclaw: - category: "productivity" - requires: - bins: ["gws"] - cliHelp: "gws reseller --help" ---- - -# reseller (v1) - -> **PREREQUISITE:** Read `../gws-shared/SKILL.md` for auth, global flags, and security rules. If missing, run `gws generate-skills` to create it. - -```bash -gws reseller [flags] -``` - -## API Resources - -### customers - - - `get` — Gets a customer account. Use this operation to see a customer account already in your reseller management, or to see the minimal account information for an existing customer that you do not manage. For more information about the API response for existing customers, see [retrieving a customer account](https://developers.google.com/workspace/admin/reseller/v1/how-tos/manage_customers#get_customer). - - `insert` — Orders a new customer's account. - - `patch` — Updates a customer account's settings. This method supports patch semantics. You cannot update `customerType` via the Reseller API, but a `"team"` customer can verify their domain and become `customerType = "domain"`. For more information, see [Verify your domain to unlock Essentials features](https://support.google.com/a/answer/9122284). - - `update` — Updates a customer account's settings. You cannot update `customerType` via the Reseller API, but a `"team"` customer can verify their domain and become `customerType = "domain"`. For more information, see [update a customer's settings](https://developers.google.com/workspace/admin/reseller/v1/how-tos/manage_customers#update_customer). - -### resellernotify - - - `getwatchdetails` — Returns all the details of the watch corresponding to the reseller. - - `register` — Registers a Reseller for receiving notifications. - - `unregister` — Unregisters a Reseller for receiving notifications. - -### subscriptions - - - `activate` — Activates a subscription previously suspended by the reseller. If you did not suspend the customer subscription and it is suspended for any other reason, such as for abuse or a pending ToS acceptance, this call will not reactivate the customer subscription. - - `changePlan` — Updates a subscription plan. Use this method to update a plan for a 30-day trial or a flexible plan subscription to an annual commitment plan with monthly or yearly payments. How a plan is updated differs depending on the plan and the products. For more information, see the description in [manage subscriptions](https://developers.google.com/workspace/admin/reseller/v1/how-tos/manage_subscriptions#update_subscription_plan). - - `changeRenewalSettings` — Updates a user license's renewal settings. This is applicable for accounts with annual commitment plans only. For more information, see the description in [manage subscriptions](https://developers.google.com/workspace/admin/reseller/v1/how-tos/manage_subscriptions#update_renewal). - - `changeSeats` — Updates a subscription's user license settings. For more information about updating an annual commitment plan or a flexible plan subscription’s licenses, see [Manage Subscriptions](https://developers.google.com/workspace/admin/reseller/v1/how-tos/manage_subscriptions#update_subscription_seat). - - `delete` — Cancels, suspends, or transfers a subscription to direct. - - `get` — Gets a specific subscription. The `subscriptionId` can be found using the [Retrieve all reseller subscriptions](https://developers.google.com/workspace/admin/reseller/v1/how-tos/manage_subscriptions#get_all_subscriptions) method. For more information about retrieving a specific subscription, see the information descrived in [manage subscriptions](https://developers.google.com/workspace/admin/reseller/v1/how-tos/manage_subscriptions#get_subscription). - - `insert` — Creates or transfer a subscription. Create a subscription for a customer's account that you ordered using the [Order a new customer account](https://developers.google.com/workspace/admin/reseller/v1/reference/customers/insert.html) method. - - `list` — Lists of subscriptions managed by the reseller. The list can be all subscriptions, all of a customer's subscriptions, or all of a customer's transferable subscriptions. Optionally, this method can filter the response by a `customerNamePrefix`. For more information, see [manage subscriptions](https://developers.google.com/workspace/admin/reseller/v1/how-tos/manage_subscriptions). - - `startPaidService` — Immediately move a 30-day free trial subscription to a paid service subscription. This method is only applicable if a payment plan has already been set up for the 30-day trial subscription. For more information, see [manage subscriptions](https://developers.google.com/workspace/admin/reseller/v1/how-tos/manage_subscriptions#paid_service). - - `suspend` — Suspends an active subscription. You can use this method to suspend a paid subscription that is currently in the `ACTIVE` state. * For `FLEXIBLE` subscriptions, billing is paused. * For `ANNUAL_MONTHLY_PAY` or `ANNUAL_YEARLY_PAY` subscriptions: * Suspending the subscription does not change the renewal date that was originally committed to. * A suspended subscription does not renew. - -## Discovering Commands - -Before calling any API method, inspect it: - -```bash -# Browse resources and methods -gws reseller --help - -# Inspect a method's required params, types, and defaults -gws schema reseller.. -``` - -Use `gws schema` output to build your `--params` and `--json` flags. - diff --git a/skills/gws-vault/SKILL.md b/skills/gws-vault/SKILL.md deleted file mode 100644 index fa449d4..0000000 --- a/skills/gws-vault/SKILL.md +++ /dev/null @@ -1,60 +0,0 @@ ---- -name: gws-vault -version: 1.0.0 -description: "Google Vault: Manage eDiscovery holds and exports." -metadata: - openclaw: - category: "productivity" - requires: - bins: ["gws"] - cliHelp: "gws vault --help" ---- - -# vault (v1) - -> **PREREQUISITE:** Read `../gws-shared/SKILL.md` for auth, global flags, and security rules. If missing, run `gws generate-skills` to create it. - -```bash -gws vault [flags] -``` - -## API Resources - -### matters - - - `addPermissions` — Adds an account as a matter collaborator. - - `close` — Closes the specified matter. Returns the matter with updated state. - - `count` — Counts the accounts processed by the specified query. - - `create` — Creates a matter with the given name and description. The initial state is open, and the owner is the method caller. Returns the created matter with default view. - - `delete` — Deletes the specified matter. Returns the matter with updated state. - - `get` — Gets the specified matter. - - `list` — Lists matters the requestor has access to. - - `removePermissions` — Removes an account as a matter collaborator. - - `reopen` — Reopens the specified matter. Returns the matter with updated state. - - `undelete` — Undeletes the specified matter. Returns the matter with updated state. - - `update` — Updates the specified matter. This updates only the name and description of the matter, identified by matter ID. Changes to any other fields are ignored. Returns the default view of the matter. - - `exports` — Operations on the 'exports' resource - - `holds` — Operations on the 'holds' resource - - `savedQueries` — Operations on the 'savedQueries' resource - -### operations - - - `cancel` — Starts asynchronous cancellation on a long-running operation. The server makes a best effort to cancel the operation, but success is not guaranteed. If the server doesn't support this method, it returns `google.rpc.Code.UNIMPLEMENTED`. Clients can use Operations.GetOperation or other methods to check whether the cancellation succeeded or whether the operation completed despite cancellation. - - `delete` — Deletes a long-running operation. This method indicates that the client is no longer interested in the operation result. It does not cancel the operation. If the server doesn't support this method, it returns `google.rpc.Code.UNIMPLEMENTED`. - - `get` — Gets the latest state of a long-running operation. Clients can use this method to poll the operation result at intervals as recommended by the API service. - - `list` — Lists operations that match the specified filter in the request. If the server doesn't support this method, it returns `UNIMPLEMENTED`. - -## Discovering Commands - -Before calling any API method, inspect it: - -```bash -# Browse resources and methods -gws vault --help - -# Inspect a method's required params, types, and defaults -gws schema vault.. -``` - -Use `gws schema` output to build your `--params` and `--json` flags. - diff --git a/skills/persona-hr-coordinator/SKILL.md b/skills/persona-hr-coordinator/SKILL.md index 92177ff..b4b719b 100644 --- a/skills/persona-hr-coordinator/SKILL.md +++ b/skills/persona-hr-coordinator/SKILL.md @@ -7,12 +7,12 @@ metadata: category: "persona" requires: bins: ["gws"] - skills: ["gws-gmail", "gws-calendar", "gws-drive", "gws-chat", "gws-admin"] + skills: ["gws-gmail", "gws-calendar", "gws-drive", "gws-chat"] --- # HR Coordinator -> **PREREQUISITE:** Load the following utility skills to operate as this persona: `gws-gmail`, `gws-calendar`, `gws-drive`, `gws-chat`, `gws-admin` +> **PREREQUISITE:** Load the following utility skills to operate as this persona: `gws-gmail`, `gws-calendar`, `gws-drive`, `gws-chat` Handle HR workflows — onboarding, announcements, and employee comms. @@ -30,5 +30,4 @@ Handle HR workflows — onboarding, announcements, and employee comms. ## Tips - Always use `--sanitize` for PII-sensitive operations. - Create a dedicated 'HR Onboarding' calendar for tracking orientation schedules. -- Use `gws admin` for user account management (creating accounts, resetting passwords). diff --git a/skills/persona-it-admin/SKILL.md b/skills/persona-it-admin/SKILL.md index 1c63616..8ff3691 100644 --- a/skills/persona-it-admin/SKILL.md +++ b/skills/persona-it-admin/SKILL.md @@ -1,33 +1,30 @@ --- name: persona-it-admin version: 1.0.0 -description: "Administer IT — manage users, monitor security, configure Workspace." +description: "Administer IT — monitor security and configure Workspace." metadata: openclaw: category: "persona" requires: bins: ["gws"] - skills: ["gws-admin", "gws-gmail", "gws-drive", "gws-calendar"] + skills: ["gws-gmail", "gws-drive", "gws-calendar"] --- # IT Administrator -> **PREREQUISITE:** Load the following utility skills to operate as this persona: `gws-admin`, `gws-gmail`, `gws-drive`, `gws-calendar` +> **PREREQUISITE:** Load the following utility skills to operate as this persona: `gws-gmail`, `gws-drive`, `gws-calendar` -Administer IT — manage users, monitor security, configure Workspace. +Administer IT — monitor security and configure Workspace. ## Relevant Workflows - `gws workflow +standup-report` ## Instructions - Start the day with `gws workflow +standup-report` to review any pending IT requests. -- Manage user accounts with `gws admin` — create, suspend, or update users. - Monitor suspicious login activity and review audit logs. - Configure Drive sharing policies to enforce organizational security. -- Set up group email aliases and distribution lists. ## Tips -- Use `gws admin` extensively — it covers user management, groups, and org units. -- Always use `--dry-run` before bulk user operations. +- Always use `--dry-run` before bulk operations. - Review `gws auth status` regularly to verify service account permissions. diff --git a/skills/recipe-audit-external-sharing/SKILL.md b/skills/recipe-audit-external-sharing/SKILL.md deleted file mode 100644 index 2dcb8d0..0000000 --- a/skills/recipe-audit-external-sharing/SKILL.md +++ /dev/null @@ -1,28 +0,0 @@ ---- -name: recipe-audit-external-sharing -version: 1.0.0 -description: "Find and review Google Drive files shared outside the organization." -metadata: - openclaw: - category: "recipe" - domain: "security" - requires: - bins: ["gws"] - skills: ["gws-drive"] ---- - -# Audit External Drive Sharing - -> **PREREQUISITE:** Load the following skills to execute this recipe: `gws-drive` - -Find and review Google Drive files shared outside the organization. - -> [!CAUTION] -> Revoking permissions immediately removes access. Confirm with the file owner first. - -## Steps - -1. List externally shared files: `gws drive files list --params '{"q": "visibility = '\''anyoneWithLink'\''"}'` -2. Check permissions on a file: `gws drive permissions list --params '{"fileId": "FILE_ID"}'` -3. Revoke if needed: `gws drive permissions delete --params '{"fileId": "FILE_ID", "permissionId": "PERM_ID"}'` - diff --git a/skills/recipe-batch-rename-files/SKILL.md b/skills/recipe-batch-rename-files/SKILL.md deleted file mode 100644 index f3eb7d1..0000000 --- a/skills/recipe-batch-rename-files/SKILL.md +++ /dev/null @@ -1,25 +0,0 @@ ---- -name: recipe-batch-rename-files -version: 1.0.0 -description: "Rename multiple Google Drive files matching a pattern to follow a consistent naming convention." -metadata: - openclaw: - category: "recipe" - domain: "productivity" - requires: - bins: ["gws"] - skills: ["gws-drive"] ---- - -# Batch Rename Google Drive Files - -> **PREREQUISITE:** Load the following skills to execute this recipe: `gws-drive` - -Rename multiple Google Drive files matching a pattern to follow a consistent naming convention. - -## Steps - -1. Find files to rename: `gws drive files list --params '{"q": "name contains '\''Report'\''"}' --format table` -2. Rename a file: `gws drive files update --params '{"fileId": "FILE_ID"}' --json '{"name": "2025-Q1 Report - Final"}'` -3. Verify the rename: `gws drive files get --params '{"fileId": "FILE_ID", "fields": "name"}'` - diff --git a/skills/recipe-batch-reply-to-emails/SKILL.md b/skills/recipe-batch-reply-to-emails/SKILL.md deleted file mode 100644 index bb8878f..0000000 --- a/skills/recipe-batch-reply-to-emails/SKILL.md +++ /dev/null @@ -1,26 +0,0 @@ ---- -name: recipe-batch-reply-to-emails -version: 1.0.0 -description: "Find Gmail messages matching a query and send a standard reply to each one." -metadata: - openclaw: - category: "recipe" - domain: "productivity" - requires: - bins: ["gws"] - skills: ["gws-gmail"] ---- - -# Batch Reply to Similar Gmail Messages - -> **PREREQUISITE:** Load the following skills to execute this recipe: `gws-gmail` - -Find Gmail messages matching a query and send a standard reply to each one. - -## Steps - -1. Find messages needing replies: `gws gmail users messages list --params '{"userId": "me", "q": "is:unread from:customers label:support"}' --format table` -2. Read a message: `gws gmail users messages get --params '{"userId": "me", "id": "MSG_ID"}'` -3. Send a reply: `gws gmail +send --to sender@example.com --subject 'Re: Your Request' --body 'Thank you for reaching out. We have received your request and will respond within 24 hours.'` -4. Mark as read: `gws gmail users messages modify --params '{"userId": "me", "id": "MSG_ID"}' --json '{"removeLabelIds": ["UNREAD"]}'` - diff --git a/skills/recipe-cancel-and-notify/SKILL.md b/skills/recipe-cancel-and-notify/SKILL.md deleted file mode 100644 index f53cdeb..0000000 --- a/skills/recipe-cancel-and-notify/SKILL.md +++ /dev/null @@ -1,28 +0,0 @@ ---- -name: recipe-cancel-and-notify -version: 1.0.0 -description: "Delete a Google Calendar event and send a cancellation email via Gmail." -metadata: - openclaw: - category: "recipe" - domain: "scheduling" - requires: - bins: ["gws"] - skills: ["gws-calendar", "gws-gmail"] ---- - -# Cancel Meeting and Notify Attendees - -> **PREREQUISITE:** Load the following skills to execute this recipe: `gws-calendar`, `gws-gmail` - -Delete a Google Calendar event and send a cancellation email via Gmail. - -> [!CAUTION] -> Deleting with sendUpdates sends cancellation emails to all attendees. - -## Steps - -1. Find the meeting: `gws calendar +agenda --format json` and locate the event ID -2. Delete the event: `gws calendar events delete --params '{"calendarId": "primary", "eventId": "EVENT_ID", "sendUpdates": "all"}'` -3. Send follow-up: `gws gmail +send --to attendees --subject 'Meeting Cancelled: [Title]' --body 'Apologies, this meeting has been cancelled.'` - diff --git a/skills/recipe-deploy-apps-script/SKILL.md b/skills/recipe-deploy-apps-script/SKILL.md deleted file mode 100644 index 9406e54..0000000 --- a/skills/recipe-deploy-apps-script/SKILL.md +++ /dev/null @@ -1,26 +0,0 @@ ---- -name: recipe-deploy-apps-script -version: 1.0.0 -description: "Push local files to a Google Apps Script project." -metadata: - openclaw: - category: "recipe" - domain: "engineering" - requires: - bins: ["gws"] - skills: ["gws-apps-script"] ---- - -# Deploy an Apps Script Project - -> **PREREQUISITE:** Load the following skills to execute this recipe: `gws-apps-script` - -Push local files to a Google Apps Script project. - -## Steps - -1. List existing projects: `gws apps-script projects list --format table` -2. Get project content: `gws apps-script projects getContent --params '{"scriptId": "SCRIPT_ID"}'` -3. Update content: `gws apps-script projects updateContent --params '{"scriptId": "SCRIPT_ID"}' --json '{"files": [{"name": "Code", "type": "SERVER_JS", "source": "function main() { ... }"}]}'` -4. Create a new version: `gws apps-script projects versions create --params '{"scriptId": "SCRIPT_ID"}' --json '{"description": "v2 release"}'` - diff --git a/skills/recipe-find-large-files/SKILL.md b/skills/recipe-find-large-files/SKILL.md index a4cee75..433d9e7 100644 --- a/skills/recipe-find-large-files/SKILL.md +++ b/skills/recipe-find-large-files/SKILL.md @@ -17,12 +17,8 @@ metadata: Identify large Google Drive files consuming storage quota. -> [!CAUTION] -> Deleting files is permanent if the trash is emptied. Confirm before deleting. - ## Steps 1. List files sorted by size: `gws drive files list --params '{"orderBy": "quotaBytesUsed desc", "pageSize": 20, "fields": "files(id,name,size,mimeType,owners)"}' --format table` -2. Review the output and identify files to delete or move -3. Delete if needed: `gws drive files delete --params '{"fileId": "FILE_ID"}'` +2. Review the output and identify files to archive or move diff --git a/skills/recipe-search-and-export-emails/SKILL.md b/skills/recipe-search-and-export-emails/SKILL.md deleted file mode 100644 index 236b3f4..0000000 --- a/skills/recipe-search-and-export-emails/SKILL.md +++ /dev/null @@ -1,25 +0,0 @@ ---- -name: recipe-search-and-export-emails -version: 1.0.0 -description: "Find Gmail messages matching a query and export them for review." -metadata: - openclaw: - category: "recipe" - domain: "productivity" - requires: - bins: ["gws"] - skills: ["gws-gmail"] ---- - -# Search and Export Emails - -> **PREREQUISITE:** Load the following skills to execute this recipe: `gws-gmail` - -Find Gmail messages matching a query and export them for review. - -## Steps - -1. Search for emails: `gws gmail users messages list --params '{"userId": "me", "q": "from:client@example.com after:2024/01/01"}'` -2. Get full message: `gws gmail users messages get --params '{"userId": "me", "id": "MSG_ID"}'` -3. Export results: `gws gmail users messages list --params '{"userId": "me", "q": "label:project-x"}' --format json > project-emails.json` - diff --git a/skills/recipe-send-personalized-emails/SKILL.md b/skills/recipe-send-personalized-emails/SKILL.md deleted file mode 100644 index a4b398c..0000000 --- a/skills/recipe-send-personalized-emails/SKILL.md +++ /dev/null @@ -1,24 +0,0 @@ ---- -name: recipe-send-personalized-emails -version: 1.0.0 -description: "Read recipient data from Google Sheets and send personalized Gmail messages to each row." -metadata: - openclaw: - category: "recipe" - domain: "productivity" - requires: - bins: ["gws"] - skills: ["gws-sheets", "gws-gmail"] ---- - -# Send Personalized Emails from a Sheet - -> **PREREQUISITE:** Load the following skills to execute this recipe: `gws-sheets`, `gws-gmail` - -Read recipient data from Google Sheets and send personalized Gmail messages to each row. - -## Steps - -1. Read recipient list: `gws sheets +read --spreadsheet-id SHEET_ID --range 'Contacts!A2:C'` -2. For each row, send a personalized email: `gws gmail +send --to recipient@example.com --subject 'Hello, Name' --body 'Hi Name, your report is ready.'` - diff --git a/skills/recipe-transfer-file-ownership/SKILL.md b/skills/recipe-transfer-file-ownership/SKILL.md deleted file mode 100644 index 03d34dc..0000000 --- a/skills/recipe-transfer-file-ownership/SKILL.md +++ /dev/null @@ -1,27 +0,0 @@ ---- -name: recipe-transfer-file-ownership -version: 1.0.0 -description: "Transfer ownership of Google Drive files from one user to another." -metadata: - openclaw: - category: "recipe" - domain: "it" - requires: - bins: ["gws"] - skills: ["gws-drive"] ---- - -# Transfer File Ownership - -> **PREREQUISITE:** Load the following skills to execute this recipe: `gws-drive` - -Transfer ownership of Google Drive files from one user to another. - -> [!CAUTION] -> Transferring ownership is irreversible without the new owner's cooperation. - -## Steps - -1. List files owned by the user: `gws drive files list --params '{"q": "'\''user@company.com'\'' in owners"}'` -2. Transfer ownership: `gws drive permissions create --params '{"fileId": "FILE_ID", "transferOwnership": true}' --json '{"role": "owner", "type": "user", "emailAddress": "newowner@company.com"}'` - diff --git a/skills/recipe-triage-security-alerts/SKILL.md b/skills/recipe-triage-security-alerts/SKILL.md deleted file mode 100644 index f5d9a2b..0000000 --- a/skills/recipe-triage-security-alerts/SKILL.md +++ /dev/null @@ -1,25 +0,0 @@ ---- -name: recipe-triage-security-alerts -version: 1.0.0 -description: "List and review Google Workspace security alerts from Alert Center." -metadata: - openclaw: - category: "recipe" - domain: "security" - requires: - bins: ["gws"] - skills: ["gws-alertcenter"] ---- - -# Triage Google Workspace Security Alerts - -> **PREREQUISITE:** Load the following skills to execute this recipe: `gws-alertcenter` - -List and review Google Workspace security alerts from Alert Center. - -## Steps - -1. List active alerts: `gws alertcenter alerts list --format table` -2. Get alert details: `gws alertcenter alerts get --params '{"alertId": "ALERT_ID"}'` -3. Acknowledge an alert: `gws alertcenter alerts undelete --params '{"alertId": "ALERT_ID"}'` - diff --git a/src/generate_skills.rs b/src/generate_skills.rs index bf11235..b716481 100644 --- a/src/generate_skills.rs +++ b/src/generate_skills.rs @@ -26,6 +26,17 @@ use std::path::Path; const PERSONAS_YAML: &str = include_str!("../registry/personas.yaml"); const RECIPES_YAML: &str = include_str!("../registry/recipes.yaml"); +/// Methods blocked from skill generation. +/// Format: (service_alias, resource, method). +const BLOCKED_METHODS: &[(&str, &str, &str)] = &[ + ("drive", "files", "delete"), + ("drive", "files", "emptyTrash"), + ("drive", "drives", "delete"), + ("drive", "teamdrives", "delete"), + ("people", "people", "deleteContact"), + ("people", "people", "batchDeleteContacts"), +]; + #[derive(serde::Deserialize)] struct PersonaRegistry { personas: Vec, @@ -347,6 +358,13 @@ fn write_skills_index(entries: &[SkillIndexEntry]) -> Result<(), GwsError> { // Renderers // --------------------------------------------------------------------------- +/// Returns true if a (service, resource, method) triple is blocked. +fn is_blocked_method(alias: &str, resource: &str, method: &str) -> bool { + BLOCKED_METHODS + .iter() + .any(|(s, r, m)| *s == alias && *r == resource && *m == method) +} + fn render_service_skill( alias: &str, entry: &services::ServiceEntry, @@ -413,6 +431,7 @@ metadata: let res_name = res.get_name(); let methods: Vec = res .get_subcommands() + .filter(|m| !is_blocked_method(alias, res_name, m.get_name())) .map(|m| { let mname = m.get_name().to_string(); // Use full description from discovery doc (with higher limit) diff --git a/src/services.rs b/src/services.rs index 067831c..40a4b81 100644 --- a/src/services.rs +++ b/src/services.rs @@ -48,12 +48,6 @@ pub const SERVICES: &[ServiceEntry] = &[ version: "v3", description: "Manage calendars and events", }, - ServiceEntry { - aliases: &["admin", "directory"], - api_name: "admin", - version: "directory_v1", - description: "Manage users, groups, and devices", - }, ServiceEntry { aliases: &["admin-reports", "reports"], api_name: "admin", @@ -90,54 +84,12 @@ pub const SERVICES: &[ServiceEntry] = &[ version: "v1", description: "Manage Chat spaces and messages", }, - ServiceEntry { - aliases: &["vault"], - api_name: "vault", - version: "v1", - description: "Manage eDiscovery holds and exports", - }, - ServiceEntry { - aliases: &["groupssettings"], - api_name: "groupssettings", - version: "v1", - description: "Manage Google Groups settings", - }, - ServiceEntry { - aliases: &["reseller"], - api_name: "reseller", - version: "v1", - description: "Manage Workspace subscriptions", - }, - ServiceEntry { - aliases: &["licensing"], - api_name: "licensing", - version: "v1", - description: "Manage product licenses", - }, - ServiceEntry { - aliases: &["apps-script", "script"], - api_name: "script", - version: "v1", - description: "Manage and execute Apps Script projects", - }, ServiceEntry { aliases: &["classroom"], api_name: "classroom", version: "v1", description: "Manage classes, rosters, and coursework", }, - ServiceEntry { - aliases: &["cloudidentity"], - api_name: "cloudidentity", - version: "v1", - description: "Manage identity groups and memberships", - }, - ServiceEntry { - aliases: &["alertcenter"], - api_name: "alertcenter", - version: "v1beta1", - description: "Manage Workspace security alerts", - }, ServiceEntry { aliases: &["forms"], api_name: "forms", @@ -205,12 +157,12 @@ mod tests { ("drive".to_string(), "v3".to_string()) ); assert_eq!( - resolve_service("admin").unwrap(), - ("admin".to_string(), "directory_v1".to_string()) + resolve_service("admin-reports").unwrap(), + ("admin".to_string(), "reports_v1".to_string()) ); assert_eq!( - resolve_service("directory").unwrap(), - ("admin".to_string(), "directory_v1".to_string()) + resolve_service("reports").unwrap(), + ("admin".to_string(), "reports_v1".to_string()) ); }