Skip to content
One API for Agents
Available

Google Sheets

Read, append and update spreadsheet rows; create new sheets.

Google Sheets holds the working data behind many reports. One API for Agents calls the Sheets API with read and write access to spreadsheets, so agents can read tabs as rows, append results and create new sheets. Agents open a spreadsheet by its ID or URL; there is no access to the rest of Google Drive.

Provider id
gsheets
Auth
Sign in with Google or Microsoft (OAuth), Service account
Scopes
spreadsheets read-only
Endpoints
9 raw · 5 smart tools
Schemas
GET /v1/providers/gsheets
Markdown
/providers/gsheets.md

Smart tools

Curated calls with compact output for agents. Over MCP each one is a tool with the same name; over REST, pass it as tool.

sheets_read

Read a tab or range as rows of objects keyed by the header row. Capped by `limit`; page with `offset`.

Name Type Notes
spreadsheet required string Spreadsheet ID, or its full docs.google.com/spreadsheets/d/<id>/... URL
sheet string Tab name. Defaults to the tab in the URL (gid), else the first tab.
range string A1 range to read, e.g. "A1:F" or "Leads!A1:F200". Its first row is the header.
header boolean Use the first row as keys. Off: keys are column letters. default true
offset integer Data rows to skip, for paging default 0 · ≥ 0
limit integer Maximum rows to return default 100 · 1–1000
formatted boolean Return values as displayed ("$1,200.00"). Off: numbers as numbers, dates as text. default false
REST
curl https://api.oneapiforagents.com/v1/call \
  -H "Authorization: Bearer $ONEAPI_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "provider": "gsheets",
    "tool": "sheets_read",
    "input": {
      "spreadsheet": "https://docs.google.com/spreadsheets/d/1BxiMVs0XRA5nFMdKvBdBZjgmUUqptlbs74OgvE2upms/edit"
    }
  }'
MCP tool call
{
  "tool": "sheets_read",
  "arguments": {
    "spreadsheet": "https://docs.google.com/spreadsheets/d/1BxiMVs0XRA5nFMdKvBdBZjgmUUqptlbs74OgvE2upms/edit"
  }
}

sheets_list_tabs

The spreadsheet's title, URL and tabs, with each tab's grid size (rows × columns, including empty cells).

Name Type Notes
spreadsheet required string Spreadsheet ID, or its full docs.google.com/spreadsheets/d/<id>/... URL
REST
curl https://api.oneapiforagents.com/v1/call \
  -H "Authorization: Bearer $ONEAPI_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "provider": "gsheets",
    "tool": "sheets_list_tabs",
    "input": {
      "spreadsheet": "https://docs.google.com/spreadsheets/d/1BxiMVs0XRA5nFMdKvBdBZjgmUUqptlbs74OgvE2upms/edit"
    }
  }'
MCP tool call
{
  "tool": "sheets_list_tabs",
  "arguments": {
    "spreadsheet": "https://docs.google.com/spreadsheets/d/1BxiMVs0XRA5nFMdKvBdBZjgmUUqptlbs74OgvE2upms/edit"
  }
}

sheets_append_rows

Append rows below a tab's existing data. Pass objects keyed by header name, or arrays in column order.

Name Type Notes
spreadsheet required string Spreadsheet ID, or its full docs.google.com/spreadsheets/d/<id>/... URL
sheet string Tab name. Defaults to the tab in the URL (gid), else the first tab.
rows required array<object (free-form) | array<string | number | boolean | null>> Objects are matched to the header row by name (an empty tab gets a header from their keys). Arrays are written as-is.
valueInput string RAW stores values as given. USER_ENTERED parses them as if typed into Sheets (dates, formulas, 1,000). RAWUSER_ENTERED default "RAW"
REST
curl https://api.oneapiforagents.com/v1/call \
  -H "Authorization: Bearer $ONEAPI_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "provider": "gsheets",
    "tool": "sheets_append_rows",
    "input": {
      "spreadsheet": "https://docs.google.com/spreadsheets/d/1BxiMVs0XRA5nFMdKvBdBZjgmUUqptlbs74OgvE2upms/edit",
      "rows": [
        {}
      ]
    }
  }'
MCP tool call
{
  "tool": "sheets_append_rows",
  "arguments": {
    "spreadsheet": "https://docs.google.com/spreadsheets/d/1BxiMVs0XRA5nFMdKvBdBZjgmUUqptlbs74OgvE2upms/edit",
    "rows": [
      {}
    ]
  }
}

sheets_update_range

Overwrite cells starting at a range with rows of values.

Name Type Notes
spreadsheet required string Spreadsheet ID, or its full docs.google.com/spreadsheets/d/<id>/... URL
range required string Top-left cell or full A1 range to overwrite, e.g. "B2" or "Leads!B2:D10"
sheet string Tab name. Defaults to the tab in the URL (gid), else the first tab.
values required array<array<string | number | boolean | null>> Rows of cells; null leaves a cell unchanged
valueInput string RAW stores values as given. USER_ENTERED parses them as if typed into Sheets (dates, formulas, 1,000). RAWUSER_ENTERED default "RAW"
REST
curl https://api.oneapiforagents.com/v1/call \
  -H "Authorization: Bearer $ONEAPI_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "provider": "gsheets",
    "tool": "sheets_update_range",
    "input": {
      "spreadsheet": "https://docs.google.com/spreadsheets/d/1BxiMVs0XRA5nFMdKvBdBZjgmUUqptlbs74OgvE2upms/edit",
      "range": "example",
      "values": [
        [
          null
        ]
      ]
    }
  }'
MCP tool call
{
  "tool": "sheets_update_range",
  "arguments": {
    "spreadsheet": "https://docs.google.com/spreadsheets/d/1BxiMVs0XRA5nFMdKvBdBZjgmUUqptlbs74OgvE2upms/edit",
    "range": "example",
    "values": [
      [
        null
      ]
    ]
  }
}

sheets_create

Create a spreadsheet in the connected Google account's Drive, optionally with a frozen header row. Returns its ID and URL. Needs a Google sign-in connection (service accounts can't own files).

Name Type Notes
title required string
sheet string Name of the first tab default "Sheet1"
headers array<string> Header row to write (and freeze) on the first tab
REST
curl https://api.oneapiforagents.com/v1/call \
  -H "Authorization: Bearer $ONEAPI_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "provider": "gsheets",
    "tool": "sheets_create",
    "input": {
      "title": "example"
    }
  }'
MCP tool call
{
  "tool": "sheets_create",
  "arguments": {
    "title": "example"
  }
}

Raw endpoints

Passthrough to the Google Sheets API. path fills URL placeholders, query the query string and body the JSON body. Input is validated before anything is sent; the response is the provider's own body.

spreadsheets.get

Read

Spreadsheet metadata: title, tabs and their grid sizes. Use `fields` (a field mask) to keep responses small; includeGridData returns cell data and is ignored when `fields` is set.

GET https://sheets.googleapis.com/v4/spreadsheets/{spreadsheetId}

Name Type Notes
path.spreadsheetId required string
query.ranges array<string>
query.includeGridData boolean
query.excludeTablesInBandedRanges boolean
query.fields string
REST
curl https://api.oneapiforagents.com/v1/call \
  -H "Authorization: Bearer $ONEAPI_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "provider": "gsheets",
    "endpoint": "spreadsheets.get",
    "input": {
      "path": {
        "spreadsheetId": "1BxiMVs0XRA5nFMdKvBdBZjgmUUqptlbs74OgvE2upms"
      }
    }
  }'
Input JSON Schema
JSON
{
  "type": "object",
  "properties": {
    "path": {
      "type": "object",
      "properties": {
        "spreadsheetId": {
          "type": "string",
          "minLength": 1
        }
      },
      "required": [
        "spreadsheetId"
      ]
    },
    "query": {
      "type": "object",
      "properties": {
        "ranges": {
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "includeGridData": {
          "type": "boolean"
        },
        "excludeTablesInBandedRanges": {
          "type": "boolean"
        },
        "fields": {
          "type": "string"
        }
      }
    }
  },
  "required": [
    "path"
  ]
}

values.get

Read

Read one range. Trailing empty rows and columns are omitted.

GET https://sheets.googleapis.com/v4/spreadsheets/{spreadsheetId}/values/{range}

Name Type Notes
path.spreadsheetId required string
path.range required string A1 notation, e.g. "Sheet1!A1:D50" or "'Q3 data'!A:F"
query.majorDimension string ROWSCOLUMNS
query.valueRenderOption string FORMATTED_VALUEUNFORMATTED_VALUEFORMULA
query.dateTimeRenderOption string SERIAL_NUMBERFORMATTED_STRING
REST
curl https://api.oneapiforagents.com/v1/call \
  -H "Authorization: Bearer $ONEAPI_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "provider": "gsheets",
    "endpoint": "values.get",
    "input": {
      "path": {
        "spreadsheetId": "1BxiMVs0XRA5nFMdKvBdBZjgmUUqptlbs74OgvE2upms",
        "range": "example"
      }
    }
  }'
Input JSON Schema
JSON
{
  "type": "object",
  "properties": {
    "path": {
      "type": "object",
      "properties": {
        "spreadsheetId": {
          "type": "string",
          "minLength": 1
        },
        "range": {
          "type": "string",
          "minLength": 1,
          "maxLength": 500,
          "description": "A1 notation, e.g. \"Sheet1!A1:D50\" or \"'Q3 data'!A:F\""
        }
      },
      "required": [
        "spreadsheetId",
        "range"
      ]
    },
    "query": {
      "type": "object",
      "properties": {
        "majorDimension": {
          "type": "string",
          "enum": [
            "ROWS",
            "COLUMNS"
          ]
        },
        "valueRenderOption": {
          "type": "string",
          "enum": [
            "FORMATTED_VALUE",
            "UNFORMATTED_VALUE",
            "FORMULA"
          ]
        },
        "dateTimeRenderOption": {
          "type": "string",
          "enum": [
            "SERIAL_NUMBER",
            "FORMATTED_STRING"
          ]
        }
      }
    }
  },
  "required": [
    "path"
  ]
}

values.batchGet

Read

Read several ranges in one request.

GET https://sheets.googleapis.com/v4/spreadsheets/{spreadsheetId}/values:batchGet

Name Type Notes
path.spreadsheetId required string
query.majorDimension string ROWSCOLUMNS
query.valueRenderOption string FORMATTED_VALUEUNFORMATTED_VALUEFORMULA
query.dateTimeRenderOption string SERIAL_NUMBERFORMATTED_STRING
query.ranges required array<string>
REST
curl https://api.oneapiforagents.com/v1/call \
  -H "Authorization: Bearer $ONEAPI_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "provider": "gsheets",
    "endpoint": "values.batchGet",
    "input": {
      "path": {
        "spreadsheetId": "1BxiMVs0XRA5nFMdKvBdBZjgmUUqptlbs74OgvE2upms"
      },
      "query": {
        "ranges": [
          "example"
        ]
      }
    }
  }'
Input JSON Schema
JSON
{
  "type": "object",
  "properties": {
    "path": {
      "type": "object",
      "properties": {
        "spreadsheetId": {
          "type": "string",
          "minLength": 1
        }
      },
      "required": [
        "spreadsheetId"
      ]
    },
    "query": {
      "type": "object",
      "properties": {
        "majorDimension": {
          "type": "string",
          "enum": [
            "ROWS",
            "COLUMNS"
          ]
        },
        "valueRenderOption": {
          "type": "string",
          "enum": [
            "FORMATTED_VALUE",
            "UNFORMATTED_VALUE",
            "FORMULA"
          ]
        },
        "dateTimeRenderOption": {
          "type": "string",
          "enum": [
            "SERIAL_NUMBER",
            "FORMATTED_STRING"
          ]
        },
        "ranges": {
          "minItems": 1,
          "maxItems": 100,
          "type": "array",
          "items": {
            "type": "string",
            "minLength": 1,
            "maxLength": 500,
            "description": "A1 notation, e.g. \"Sheet1!A1:D50\" or \"'Q3 data'!A:F\""
          }
        }
      },
      "required": [
        "ranges"
      ]
    }
  },
  "required": [
    "path",
    "query"
  ]
}

values.update

Writes

Overwrite one range with a ValueRange. valueInputOption is required.

PUT https://sheets.googleapis.com/v4/spreadsheets/{spreadsheetId}/values/{range}

Name Type Notes
path.spreadsheetId required string
path.range required string A1 notation, e.g. "Sheet1!A1:D50" or "'Q3 data'!A:F"
query.valueInputOption required string RAWUSER_ENTERED
query.includeValuesInResponse boolean
query.responseValueRenderOption string FORMATTED_VALUEUNFORMATTED_VALUEFORMULA
query.responseDateTimeRenderOption string SERIAL_NUMBERFORMATTED_STRING
body.range string
body.majorDimension string ROWSCOLUMNS
body.values required array<array<string | number | boolean | null>>
REST
curl https://api.oneapiforagents.com/v1/call \
  -H "Authorization: Bearer $ONEAPI_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "provider": "gsheets",
    "endpoint": "values.update",
    "input": {
      "path": {
        "spreadsheetId": "1BxiMVs0XRA5nFMdKvBdBZjgmUUqptlbs74OgvE2upms",
        "range": "example"
      },
      "query": {
        "valueInputOption": "RAW"
      },
      "body": {
        "values": [
          [
            null
          ]
        ]
      }
    }
  }'
Input JSON Schema
JSON
{
  "type": "object",
  "properties": {
    "path": {
      "type": "object",
      "properties": {
        "spreadsheetId": {
          "type": "string",
          "minLength": 1
        },
        "range": {
          "type": "string",
          "minLength": 1,
          "maxLength": 500,
          "description": "A1 notation, e.g. \"Sheet1!A1:D50\" or \"'Q3 data'!A:F\""
        }
      },
      "required": [
        "spreadsheetId",
        "range"
      ]
    },
    "query": {
      "type": "object",
      "properties": {
        "valueInputOption": {
          "type": "string",
          "enum": [
            "RAW",
            "USER_ENTERED"
          ]
        },
        "includeValuesInResponse": {
          "type": "boolean"
        },
        "responseValueRenderOption": {
          "type": "string",
          "enum": [
            "FORMATTED_VALUE",
            "UNFORMATTED_VALUE",
            "FORMULA"
          ]
        },
        "responseDateTimeRenderOption": {
          "type": "string",
          "enum": [
            "SERIAL_NUMBER",
            "FORMATTED_STRING"
          ]
        }
      },
      "required": [
        "valueInputOption"
      ]
    },
    "body": {
      "type": "object",
      "properties": {
        "range": {
          "type": "string"
        },
        "majorDimension": {
          "type": "string",
          "enum": [
            "ROWS",
            "COLUMNS"
          ]
        },
        "values": {
          "type": "array",
          "items": {
            "type": "array",
            "items": {
              "type": [
                "string",
                "number",
                "boolean",
                "null"
              ]
            }
          }
        }
      },
      "required": [
        "values"
      ]
    }
  },
  "required": [
    "path",
    "query",
    "body"
  ]
}

values.append

Writes

Append rows after the table found in `range`. valueInputOption is required.

POST https://sheets.googleapis.com/v4/spreadsheets/{spreadsheetId}/values/{range}:append

Name Type Notes
path.spreadsheetId required string
path.range required string A1 notation, e.g. "Sheet1!A1:D50" or "'Q3 data'!A:F"
query.valueInputOption required string RAWUSER_ENTERED
query.includeValuesInResponse boolean
query.responseValueRenderOption string FORMATTED_VALUEUNFORMATTED_VALUEFORMULA
query.responseDateTimeRenderOption string SERIAL_NUMBERFORMATTED_STRING
query.insertDataOption string OVERWRITEINSERT_ROWS
body.range string
body.majorDimension string ROWSCOLUMNS
body.values required array<array<string | number | boolean | null>>
REST
curl https://api.oneapiforagents.com/v1/call \
  -H "Authorization: Bearer $ONEAPI_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "provider": "gsheets",
    "endpoint": "values.append",
    "input": {
      "path": {
        "spreadsheetId": "1BxiMVs0XRA5nFMdKvBdBZjgmUUqptlbs74OgvE2upms",
        "range": "example"
      },
      "query": {
        "valueInputOption": "RAW"
      },
      "body": {
        "values": [
          [
            null
          ]
        ]
      }
    }
  }'
Input JSON Schema
JSON
{
  "type": "object",
  "properties": {
    "path": {
      "type": "object",
      "properties": {
        "spreadsheetId": {
          "type": "string",
          "minLength": 1
        },
        "range": {
          "type": "string",
          "minLength": 1,
          "maxLength": 500,
          "description": "A1 notation, e.g. \"Sheet1!A1:D50\" or \"'Q3 data'!A:F\""
        }
      },
      "required": [
        "spreadsheetId",
        "range"
      ]
    },
    "query": {
      "type": "object",
      "properties": {
        "valueInputOption": {
          "type": "string",
          "enum": [
            "RAW",
            "USER_ENTERED"
          ]
        },
        "includeValuesInResponse": {
          "type": "boolean"
        },
        "responseValueRenderOption": {
          "type": "string",
          "enum": [
            "FORMATTED_VALUE",
            "UNFORMATTED_VALUE",
            "FORMULA"
          ]
        },
        "responseDateTimeRenderOption": {
          "type": "string",
          "enum": [
            "SERIAL_NUMBER",
            "FORMATTED_STRING"
          ]
        },
        "insertDataOption": {
          "type": "string",
          "enum": [
            "OVERWRITE",
            "INSERT_ROWS"
          ]
        }
      },
      "required": [
        "valueInputOption"
      ]
    },
    "body": {
      "type": "object",
      "properties": {
        "range": {
          "type": "string"
        },
        "majorDimension": {
          "type": "string",
          "enum": [
            "ROWS",
            "COLUMNS"
          ]
        },
        "values": {
          "type": "array",
          "items": {
            "type": "array",
            "items": {
              "type": [
                "string",
                "number",
                "boolean",
                "null"
              ]
            }
          }
        }
      },
      "required": [
        "values"
      ]
    }
  },
  "required": [
    "path",
    "query",
    "body"
  ]
}

values.batchUpdate

Writes

Overwrite several ranges in one request.

POST https://sheets.googleapis.com/v4/spreadsheets/{spreadsheetId}/values:batchUpdate

Name Type Notes
path.spreadsheetId required string
body.valueInputOption required string RAWUSER_ENTERED
body.data required array<object>
body.includeValuesInResponse boolean
body.responseValueRenderOption string FORMATTED_VALUEUNFORMATTED_VALUEFORMULA
body.responseDateTimeRenderOption string SERIAL_NUMBERFORMATTED_STRING
REST
curl https://api.oneapiforagents.com/v1/call \
  -H "Authorization: Bearer $ONEAPI_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "provider": "gsheets",
    "endpoint": "values.batchUpdate",
    "input": {
      "path": {
        "spreadsheetId": "1BxiMVs0XRA5nFMdKvBdBZjgmUUqptlbs74OgvE2upms"
      },
      "body": {
        "valueInputOption": "RAW",
        "data": [
          {
            "range": "example",
            "values": [
              [
                null
              ]
            ]
          }
        ]
      }
    }
  }'
Input JSON Schema
JSON
{
  "type": "object",
  "properties": {
    "path": {
      "type": "object",
      "properties": {
        "spreadsheetId": {
          "type": "string",
          "minLength": 1
        }
      },
      "required": [
        "spreadsheetId"
      ]
    },
    "body": {
      "type": "object",
      "properties": {
        "valueInputOption": {
          "type": "string",
          "enum": [
            "RAW",
            "USER_ENTERED"
          ]
        },
        "data": {
          "minItems": 1,
          "type": "array",
          "items": {
            "type": "object",
            "properties": {
              "range": {
                "type": "string",
                "minLength": 1
              },
              "majorDimension": {
                "type": "string",
                "enum": [
                  "ROWS",
                  "COLUMNS"
                ]
              },
              "values": {
                "type": "array",
                "items": {
                  "type": "array",
                  "items": {
                    "type": [
                      "string",
                      "number",
                      "boolean",
                      "null"
                    ]
                  }
                }
              }
            },
            "required": [
              "range",
              "values"
            ]
          }
        },
        "includeValuesInResponse": {
          "type": "boolean"
        },
        "responseValueRenderOption": {
          "type": "string",
          "enum": [
            "FORMATTED_VALUE",
            "UNFORMATTED_VALUE",
            "FORMULA"
          ]
        },
        "responseDateTimeRenderOption": {
          "type": "string",
          "enum": [
            "SERIAL_NUMBER",
            "FORMATTED_STRING"
          ]
        }
      },
      "required": [
        "valueInputOption",
        "data"
      ]
    }
  },
  "required": [
    "path",
    "body"
  ]
}

values.clear

Writes

Clear the values in a range. Formatting and validation are kept.

POST https://sheets.googleapis.com/v4/spreadsheets/{spreadsheetId}/values/{range}:clear

Name Type Notes
path.spreadsheetId required string
path.range required string A1 notation, e.g. "Sheet1!A1:D50" or "'Q3 data'!A:F"
REST
curl https://api.oneapiforagents.com/v1/call \
  -H "Authorization: Bearer $ONEAPI_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "provider": "gsheets",
    "endpoint": "values.clear",
    "input": {
      "path": {
        "spreadsheetId": "1BxiMVs0XRA5nFMdKvBdBZjgmUUqptlbs74OgvE2upms",
        "range": "example"
      }
    }
  }'
Input JSON Schema
JSON
{
  "type": "object",
  "properties": {
    "path": {
      "type": "object",
      "properties": {
        "spreadsheetId": {
          "type": "string",
          "minLength": 1
        },
        "range": {
          "type": "string",
          "minLength": 1,
          "maxLength": 500,
          "description": "A1 notation, e.g. \"Sheet1!A1:D50\" or \"'Q3 data'!A:F\""
        }
      },
      "required": [
        "spreadsheetId",
        "range"
      ]
    }
  },
  "required": [
    "path"
  ]
}

spreadsheets.create

Writes

Create a spreadsheet from a Spreadsheet resource. Needs a Google sign-in connection: service accounts have no Drive storage to own files.

POST https://sheets.googleapis.com/v4/spreadsheets

Name Type Notes
body required object (free-form) Request body, passed through to the provider API as-is
REST
curl https://api.oneapiforagents.com/v1/call \
  -H "Authorization: Bearer $ONEAPI_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "provider": "gsheets",
    "endpoint": "spreadsheets.create",
    "input": {
      "body": {}
    }
  }'
Input JSON Schema
JSON
{
  "type": "object",
  "properties": {
    "body": {
      "type": "object",
      "propertyNames": {
        "type": "string"
      },
      "additionalProperties": {}
    }
  },
  "required": [
    "body"
  ]
}

spreadsheets.batchUpdate

Writes

Structural changes (add, rename or delete tabs, formatting, sorting, …) as a list of requests, applied atomically.

POST https://sheets.googleapis.com/v4/spreadsheets/{spreadsheetId}:batchUpdate

Name Type Notes
path.spreadsheetId required string
body.requests required array<object (free-form)>
body.includeSpreadsheetInResponse boolean
body.responseRanges array<string>
body.responseIncludeGridData boolean
REST
curl https://api.oneapiforagents.com/v1/call \
  -H "Authorization: Bearer $ONEAPI_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "provider": "gsheets",
    "endpoint": "spreadsheets.batchUpdate",
    "input": {
      "path": {
        "spreadsheetId": "1BxiMVs0XRA5nFMdKvBdBZjgmUUqptlbs74OgvE2upms"
      },
      "body": {
        "requests": [
          {}
        ]
      }
    }
  }'
Input JSON Schema
JSON
{
  "type": "object",
  "properties": {
    "path": {
      "type": "object",
      "properties": {
        "spreadsheetId": {
          "type": "string",
          "minLength": 1
        }
      },
      "required": [
        "spreadsheetId"
      ]
    },
    "body": {
      "type": "object",
      "properties": {
        "requests": {
          "minItems": 1,
          "type": "array",
          "items": {
            "type": "object",
            "propertyNames": {
              "type": "string"
            },
            "additionalProperties": {}
          }
        },
        "includeSpreadsheetInResponse": {
          "type": "boolean"
        },
        "responseRanges": {
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "responseIncludeGridData": {
          "type": "boolean"
        }
      },
      "required": [
        "requests"
      ]
    }
  },
  "required": [
    "path",
    "body"
  ]
}