← all adapters

gsheets-style

simulates Google Sheets API v4

restadapter v0.1.010 routes

verification

SDKverified with google-api-go-client v0.293.0· surface 10 · not implemented 4 · differs 3

use it

# add to stunt.yaml
services:
  gsheets:
    adapter: embedded:gsheets-style

# then
$ stunt up

The embedded: source extracts this adapter from the binary — no git clone, fully offline.

how to mock the Google Sheets API locally

Install stunt, paste the service block above into stunt.yaml, run stunt up — then point your client at localhost instead of Google Sheets API. It works offline, keeps state across requests and restarts, and every response is synthetic: the route shapes, status codes, pagination, and webhook delivery follow the real Google Sheets API v4 surface — the data is fake, the behavior is real.

backing stores

spreadsheetscells

api surface (10)

generated from the adapter manifest — exactly what boots, nothing more · covers 58% of the real API's 17 routes (derived from sdk google-api-go-client @ v0.293.0)

10 routes
POST/v4/spreadsheets
GET/v4/spreadsheets/{spreadsheetId}/values:batchGet
POST/v4/spreadsheets/{spreadsheetId}/values:batchGet
POST/v4/spreadsheets/{spreadsheetId}/values:batchUpdate
POST/v4/spreadsheets/{spreadsheetId}/sheets
POST/v4/spreadsheets/{ss_id_or_verb}
GET/v4/spreadsheets/{spreadsheetId}
GET/v4/spreadsheets/{spreadsheetId}/values/{range}
PUT/v4/spreadsheets/{spreadsheetId}/values/{range}
POST/v4/spreadsheets/{spreadsheetId}/values/{range_verb}

SDK-verified behaviors (8)

  • Spreadsheets.Create + Get round-trip
  • Values.Update + Values.Get round-trip an A1 range
  • Values.Get MajorDimension=COLUMNS transposes the grid
  • Values.Append writes after the last populated row
  • Values.BatchUpdate writes multiple ranges in one call
  • Values.BatchGet reads a range over GET query params
  • Spreadsheets.BatchUpdate addSheet adds a tab Values can write to
  • Get on an unknown spreadsheet -> googleapi 404

Not implemented (4)

  • No row-only A1 ranges (1:5) or quoted sheet titles
  • No copyTo, named ranges, developer metadata, or byDataFilter endpoints
  • batchUpdate limited to 4 request types; no insertDimension, mergeCells, sortRange
  • No valueRenderOption or dateTimeRenderOption on values reads

Differs from the real API (3)

  • Repeated ranges query params collapse to the first value (engine query params are single-valued)
  • Cell values always come back as strings; numeric cells stringify as floats (42 -> "42.0"), no USER_ENTERED/RAW typing
  • Spreadsheet get ignores fields= and returns the full object
want more of the Google Sheets API surface? adapters are YAML + Starlark — the authoring guide covers adding routes, fixtures, and state machines. Open an issue for anything big first, or just file a PR — merged routes ship in the next release.