# List Google Sheets connections

List safe Google account, spreadsheet grant, status, and impact metadata.

## Endpoint

`GET /api/v1/workspaces/{workspace_id}/google-sheets/connections`

## Authentication

| Class | Authentication | Minimum role | API key |
| --- | --- | --- | --- |
| dashboard-session-api | Dashboard session cookie; POST mutations also require X-CX-Request: 1. | admin | Not allowed |

## Parameters

| Name | In | Type | Required | Description |
| --- | --- | --- | --- | --- |
| `workspace_id` | path | `string` | Yes | — |

## Request body

This operation has no request body.

## Example

```bash
curl --request GET 'https://operade.ai/api/v1/workspaces/ws_demo/google-sheets/connections' --cookie 'cx_session=YOUR_SESSION_COOKIE'
```

## Responses

| Status | Description | Content |
| --- | --- | --- |
| 4XX | Handled client error | application/json: `ErrorResponse` |
| 200 | Successful Response | application/json: `GoogleConnectionListResponse` |

### 4XX application/json response schema

| Field path | Type | Reference | Format | Nullable | Required | Enum | Description |
| --- | --- | --- | --- | --- | --- | --- | --- |
| `$` | `object` | ErrorResponse | — | No | Yes | — | — |
| `error` | `object` | ErrorItem | — | No | Yes | — | — |
| `error.code` | `string` | — | — | No | Yes | — | — |
| `error.details` | `object` | — | — | No | No | — | — |
| `error.message` | `string` | — | — | No | Yes | — | — |

### 200 application/json response schema

| Field path | Type | Reference | Format | Nullable | Required | Enum | Description |
| --- | --- | --- | --- | --- | --- | --- | --- |
| `$` | `object` | GoogleConnectionListResponse | — | No | Yes | — | — |
| `connections` | `array<GoogleConnection>` | — | — | No | Yes | — | — |
| `connections[]` | `object` | GoogleConnection | — | No | Yes | — | — |
| `connections[].account_display_name` | `string` | — | — | No | Yes | — | — |
| `connections[].account_email` | `string or null` | — | — | Yes | Yes | — | — |
| `connections[].created_at` | `string` | — | date-time | No | Yes | — | — |
| `connections[].grants` | `array<GoogleSheetGrant>` | — | — | No | Yes | — | — |
| `connections[].grants[]` | `object` | GoogleSheetGrant | — | No | Yes | — | — |
| `connections[].grants[].id` | `string` | — | — | No | Yes | — | — |
| `connections[].grants[].mime_type` | `string` | — | — | No | Yes | "application/vnd.google-apps.spreadsheet" | — |
| `connections[].grants[].selected_at` | `string` | — | date-time | No | Yes | — | — |
| `connections[].grants[].spreadsheet_name` | `string` | — | — | No | Yes | — | — |
| `connections[].id` | `string` | — | — | No | Yes | — | — |
| `connections[].impact_count` | `integer` | — | — | No | Yes | — | — |
| `connections[].name` | `string` | — | — | No | Yes | — | — |
| `connections[].published_agent_count` | `integer` | — | — | No | Yes | — | — |
| `connections[].revoked_at` | `string or null` | — | date-time | Yes | Yes | — | — |
| `connections[].status` | `string` | — | — | No | Yes | "active", "reconnect_required", "revoked" | — |
| `connections[].status_code` | `string or null` | — | — | Yes | Yes | — | — |
| `connections[].updated_at` | `string` | — | date-time | No | Yes | — | — |

### Response example

```json
{
  "connections": [
    {
      "id": "gconn_example",
      "name": "ops@example.com",
      "account_email": "ops@example.com",
      "account_display_name": "Operations",
      "status": "revoked",
      "status_code": "revoked",
      "impact_count": 2,
      "published_agent_count": 1,
      "grants": [
        {
          "id": "gsgrant_example",
          "spreadsheet_name": "Customers",
          "mime_type": "application/vnd.google-apps.spreadsheet",
          "selected_at": "2026-08-22T00:00:00Z"
        }
      ],
      "created_at": "2026-08-22T00:00:00Z",
      "updated_at": "2026-08-22T00:05:00Z",
      "revoked_at": "2026-08-22T00:05:00Z"
    }
  ]
}
```

## Errors

Reviewed common and route-declared errors are summarized here; the list is not exhaustive. Start with the [distributed error index](/docs/reference/api/errors) to find each code's canonical domain page.

| Status | Code | Description |
| --- | --- | --- |
| 401 | `unauthenticated` | Authentication is missing, invalid, or revoked. |
| 403 | `forbidden` | Only a workspace admin or owner can manage Google connections. |
| 503 | `google_integration_not_configured` | The Google Sheets integration is disabled or incomplete. |

## Related operations

- [Complete Google Sheets OAuth](/docs/api-reference/google-sheets/complete-google-sheets-oauth) — `GET /api/v1/oauth/google-sheets/callback`
- [Get Google Sheet grant metadata](/docs/api-reference/google-sheets/get-google-sheet-grant-metadata) — `GET /api/v1/workspaces/{workspace_id}/google-sheets/grants/{grant_id}/metadata`
- [Revoke a Google Sheets connection](/docs/api-reference/google-sheets/revoke-google-sheets-connection) — `POST /api/v1/workspaces/{workspace_id}/google-sheets/connections/{connection_id}/revoke`
