{
  "id": "googleworkspace-cli",
  "name": "Google Workspace CLI",
  "homepage": "https://github.com/googleworkspace/cli",
  "description": "A command-line interface for Google Drive, Gmail, Calendar, Sheets, Docs, Chat and Admin.",
  "executables": [
    "gws"
  ],
  "dotfiles": {
    "paths": [
      "~/.config/gws/"
    ],
    "secret": [
      "~/.config/gws/client_secret.json",
      "~/.config/gws/credentials.enc",
      "~/.config/gws/.encryption_key",
      "~/.config/gws/token_cache.json"
    ],
    "side_effect": false
  },
  "commands": {
    "format": 1,
    "label": "Call a Workspace API",
    "description": "Run one Discovery-style call such as 'gws drive files list' with JSON params or body, optional dry-run and pagination. Auth setup, helper commands (+send, +agenda) and uploads are not covered.",
    "quality": "ai-draft",
    "parser": {
      "end_of_options": "--",
      "interleave": "permute",
      "long_equals": false,
      "short_attached": false,
      "short_bundles": false
    },
    "source": [
      {
        "id": "readme",
        "kind": "help",
        "url": "https://raw.githubusercontent.com/googleworkspace/cli/HEAD/README.md",
        "revision": "2026-10-27",
        "evidence": "gws drive files list --params '{\"pageSize\": 5}'\ngws sheets spreadsheets create --json '{\"properties\": {\"title\": \"Q1 Budget\"}}'\ngws chat spaces messages create \\\n  --params '{\"parent\": \"spaces/xyz\"}' \\\n  --json '{\"text\": \"Deploy complete.\"}' \\\n  --dry-run\ngws drive files list --params '{\"pageSize\": 100}' --page-all | jq -r '.files[].name'\n| `--page-all`        | Auto-paginate, one JSON line per page (NDJSON) | off     |\n| `--page-limit <N>`  | Max pages to fetch                             | 10      |\n"
      }
    ],
    "field": [
      {
        "id": "service",
        "label": "Service",
        "type": "string",
        "position": 0,
        "min": 1,
        "suggestions": [
          {
            "value": "drive",
            "label": "Drive"
          },
          {
            "value": "gmail",
            "label": "Gmail"
          },
          {
            "value": "calendar",
            "label": "Calendar"
          },
          {
            "value": "sheets",
            "label": "Sheets"
          },
          {
            "value": "chat",
            "label": "Chat"
          }
        ],
        "sources": [
          "readme"
        ]
      },
      {
        "id": "method_path",
        "label": "Resource and method",
        "description": "For example: files list, or spreadsheets create.",
        "type": "string",
        "position": 1,
        "multiple": true,
        "min": 1,
        "sources": [
          "readme"
        ]
      },
      {
        "id": "params",
        "label": "Parameters (JSON)",
        "type": "string",
        "option": [
          "--params"
        ],
        "sources": [
          "readme"
        ]
      },
      {
        "id": "json",
        "label": "Request body (JSON)",
        "type": "string",
        "option": [
          "--json"
        ],
        "sources": [
          "readme"
        ]
      },
      {
        "id": "dry_run",
        "label": "Dry run",
        "description": "Preview the request without sending it.",
        "type": "boolean",
        "option": [
          "--dry-run"
        ],
        "sources": [
          "readme"
        ]
      },
      {
        "id": "page_all",
        "label": "Fetch all pages",
        "type": "boolean",
        "option": [
          "--page-all"
        ],
        "sources": [
          "readme"
        ]
      },
      {
        "id": "page_limit",
        "label": "Max pages",
        "type": "integer",
        "option": [
          "--page-limit"
        ],
        "sources": [
          "readme"
        ]
      }
    ],
    "task": [
      {
        "id": "list",
        "label": "List with all pages",
        "fields": [
          "service",
          "method_path",
          "params",
          "page_all",
          "page_limit"
        ],
        "required": [
          "service",
          "method_path"
        ]
      },
      {
        "id": "preview",
        "label": "Preview a write call",
        "fields": [
          "service",
          "method_path",
          "params",
          "json",
          "dry_run"
        ],
        "required": [
          "service",
          "method_path"
        ],
        "set": {
          "dry_run": [
            true
          ]
        }
      }
    ],
    "group": [
      {
        "id": "basic",
        "label": "Basic",
        "fields": [
          "service",
          "method_path",
          "params",
          "json",
          "dry_run"
        ]
      },
      {
        "id": "advanced",
        "label": "Advanced",
        "fields": [
          "page_all",
          "page_limit"
        ]
      }
    ]
  }
}
