Google Drive
A Google Drive with Docs and Sheets that answers Drive v2 and v3, Docs v1, Sheets v4 and uploads for Google's client libraries, plus Drive's MCP paths.
Vendor reference: https://developers.google.com/drive/api/reference/rest/v3 ↗. Machine-readable: compat/google-drive.json.
Surfaces
| Kind | Path | Notes |
|---|---|---|
| REST | /drive/v3 | files, permissions, comments, revisions, changes and watch channels; Drive v2 reads under /drive/v2 |
| REST | /upload/drive/v3 | simple, multipart and resumable uploads |
| REST | /v1/documents | Google Docs v1 |
| REST | /v4/spreadsheets | Google Sheets v4 |
| OAuth | /token | OAuth client credentials with Google-style scopes |
| MCP | /mcp | also at /mcp/v1, the path Google's Drive MCP server publishes |
API versions: Drive v2 (reads), Drive v3, Docs v1, Sheets v4
Supported
- Bearer tokens and the
access_tokenquery parameter Google also accepts - Google scopes
drive,drive.readonly,drive.metadata.readonly,drive.file,documents,spreadsheets; a read-only signed token gets403 insufficientPermissionson a write 401 authErrorwithWWW-Authenticate: Bearerfor a missing or unverifiable token, so an SDK refreshes its credential- The
qsearch grammar files.exportup to 10 MiB, andexportLinksfor larger exports- Watch channels with the
synchandshake, per-file resource states,X-Goog-Changedandexpiration
Not supported
apps.*,teamdrives.*, labels, access proposals, approvals, client-side encryption andoperations.get- Sheets
developerMetadata.*and the Docs and Sheets styling requests - Formula evaluation in Sheets
- Converting an imported binary document (
.doc,.odt,.xlsx) into Docs text
Known differences and test guidance
| Scenario | Difference from Google Drive | In your tests |
|---|---|---|
| Sheets values | Values are stored verbatim; formulas are not evaluated and FORMATTED_VALUE returns the stored value. | Do not assert on computed cells or number formatting. |
| Revisions | Each content version is listed, but only the head revision's bytes are kept. | Do not download an older revision's content and compare it. |
| Sharing and permissions | Permissions are recorded and returned but not enforced per grantee; every token sees every file. | Do not use the replica to prove that a user cannot read a file. |
| Scopes with an opaque token | Scope checks only apply to IdP-signed tokens that carry a scope claim; an opaque bearer in open mode passes every request. | Request a signed token with a read-only scope from /token to test refusals. |
| Imported binary documents | Uploading a .doc, .odt or .xlsx as a Google Doc creates the Doc with empty text, so exporting it returns an empty body. | Do not assert on text extracted from an imported Office file. |
| Watch notifications | Delivery is in-process with three retries on 5xx; a notification is lost if your consumer is down for the whole backoff window, and channels do not survive a restart. | Re-read the changes feed after downtime rather than relying on every notification. |
| Quotas | No quota is enforced unless injected, and the injected status cannot be chosen per quota family. | Inject throttle or quota_limit to test backoff; do not test per-family quota handling. |
Fault injection
| Key | What the client sees |
|---|---|
throttle | 429 userRateLimitExceeded in Google's error envelope, with Retry-After |
fail_next | The next N calls fail as throttle does, then clear |
quota_limit | 429 quotaExceeded in Google's error envelope |
error_rate | 500 internalError for the given fraction of calls |
latency_ms | Fixed added latency on every data-plane request |
Applies to every system
- The hosted data plane is read-only: a write is refused with
403 writes_disabled. A SOQL, GraphQL or searchPOSTis a read and is answered. - Faults are injected through
POST /_admin/faultson a simulator you run yourself;POST /_admin/faults/resetclears them. - Rate limits do not happen on their own unless a page says so. Use fault injection to exercise a client's backoff.
- Distributions come from aggregated metadata sketches of data Eon backs up; no customer records; all Era data is simulated.