Skip to content

Commit 292e59f

Browse files
authored
fix(docs): stop publishing unsettable params, fix comment blanking (#7169)
* fix(docs): stop publishing unsettable params, fix comment blanking generate-docs never read visibility, so every tool param appeared in the public Input table -- including params marked visibility:'hidden', which are shown to neither the user nor the LLM. Several are credential-shaped (idToken, instanceUrl, apiToken, cloudId), so the docs told integrators they could set values they cannot reach. A hidden param is now dropped only when the block declares no subBlock for it, matched on id or canonicalParamId -- a param can be hidden on the tool because the block injects it while the block still renders it as a required field the user types. blankStringsAndComments kept the first and last character of every match. That is right for a quoted string, where both are delimiters, but for a '//' comment the last character is arbitrary source text, so a commented-out '// options: [' left an unbalanced bracket that derailed the subBlock scan. Parsing now throws rather than silently reporting that a block exposes nothing, since that fallback was the destructive one. Also corrects the LinkedIn w_member_social consent-screen description, which read 'Access LinkedIn profile' for a scope that posts on the user's behalf. * fix(docs): keep hidden params the block mapper supplies The carve-out only recognized an identity match between a subBlock id and a tool param, so a block that renames or assembles the value in tools.config.params was invisible to it -- and the row was dropped even though the user types it. Cal.com's attendee (required) is assembled from attendeeName/attendeeEmail/ attendeeTimeZone; JSM's workspaceId comes from assetWorkspaceId; Textract writes parameters.file from a field whose canonicalParamId is 'document', which left the Mistral PDF Parser documenting zero inputs. Collects params written by any accumulator identifier, not just 'result', since the two real mappers use different names. Object keys are collected without proving they are top-level, so a nested key can produce a false keep -- one hard-to-set row is better than hiding a required input. * fix(tools): reject values that cannot be a path segment toGuardedString coerced with String(value), so an object reached the wire as %5Bobject%20Object%5D and a boolean as 'true' -- a doomed request instead of a clean error, on 44 live call sites. Accepts string, bigint, and finite non-exponential numbers; everything else throws a named error. Rejects a number whose decimal text is a rewrite rather than the caller's value: 1e21 stringifies to '1e+21', and an integer past 2^53 has already lost digits. A snowflake cannot be repaired here at all -- JSON.parse destroys it before this runs -- so the doc now says it must arrive as a string, and cites Box folderId (root = 0) instead. Corrects the claim that the parser removes only an exact '.' or '..'; the spec defines 11 removable spellings. The guards are sufficient because encodeURIComponent escapes '%', not because the others cannot occur. * test(oauth): pin the LinkedIn write-scope description Nothing guarded the consent-screen text: utils.test.ts covered only the Bitbucket and Reddit overrides, and the modal test stubs getScopeDescription to identity, so a regression to a read-only label for a posting scope would pass silently. * fix(docs): stop a comment hijacking the id scan, unhang a Firecrawl reference The depth-1 walk copied from the raw source at indices where the blanked copy was at depth 1, so 'id:' inside a string value or a comment landed in the scanned text and won the first match. With the keep-bias that now means a phantom id can retain a param the block never exposes. Matching runs on the blanked text and reads the literal back through a source-index map. No block in the repo trips this today -- verified across all 305 -- so this is a latent fix. Removing the unsettable scrapeOptions row left five Firecrawl Search output descriptions referencing a name that no longer appears on the page. They now describe the response condition instead. Pointing them at 'formats' was not an option: that subBlock is conditioned on scrape/parse/batch_scrape and the search tool declares no such param, so it would have swapped one dangling reference for another. * refactor(tools): drop the unused guard API from this PR safeUrlPath, safeOpaqueUrlSegment and SafeUrlPathOptions had zero call sites -- 469 lines of unused API in a docs-generator change, including an allowEmptySegments flag whose own TSDoc documents a host-takeover footgun ('//evil.com' under new URL(relative, base)). They belong with the ~693 traversal call sites that use them, where they can be reviewed against real usage. What stays is the part with 44 live consumers: safeUrlPathSegment now accepts number and bigint. Staging already rejected every non-string, so this only widens acceptance -- a differential over 87 real call-site values shows 87 identical, 0 differing. Also: encodeURIComponent throws an unnamed URIError on a lone surrogate, which JSON.parse accepts, so a truncated emoji lost the param name the file claims as its invariant. And the exponential rejection told tiny values like 1e-7 they were 'too large' when they round-trip exactly; the rejection is right -- a path segment should not rewrite 0.0000001 into other text -- but the stated ground was not. * fix(docs): abort before writing on a parse failure, unhang three descriptions The guard's own TSDoc said to fail rather than guess, because the fallback strips every hidden param from a page. The caller did the opposite: it caught, recorded, and continued with an empty id set, and the non-zero exit came after every page was already written. A developer who reran, saw red, and missed the scrollback could commit a stripped page. Parse failures are now detected in a dry pass before anything is emitted. The zero-id guard also only fired when the array held a literal '{', so a subBlocks built by a helper call was silently empty, while a subBlocks whose literals only spread ({ ...sb, required: true }) hard-failed the build. It now fires on the destructive case alone -- reporting an unreadable array while leaving legitimate opaque spreads, which 23 blocks rely on, untouched. Three descriptions referenced things the reader can no longer see: Dataverse mandated base64 after its base64 row was removed, Vanta's mimeType described itself as useful only on that removed path, and five Drive actions told the reader to fetch a next page with no input left to accept the token. * chore(tinyfish): use a white block background Matches the dominant convention (97 blocks use #FFFFFF). Regenerates the docs page, the tool metadata, and the deployment catalog, which each carried the previous value. * fix(docs): correct Drive/Firecrawl/Vanta output and param descriptions Google Drive nextPageToken: the discovery doc says the field is *absent* at the end of the list, not empty. Say absent, and name the resource (files/comments/permissions/revisions) per tool. Firecrawl search outputs: restore the per-format gate the v2 OpenAPI states ("HTML content if requested in formats"), and add that Search exposes no input for those formats. Vanta mimeType: the route resolves a content type from storage on every path, so the param is never read. Say so instead of describing it as a fallback. Dataverse: describe the request as sending the bytes as the raw body. * fix(docs): correct the Vanta mimeType and Firecrawl reachability wording Vanta: the base64 branch (route.ts:100) reads params.mimeType as its only content-type source, so "not currently applied" was wrong. Say it applies there and is a fallback on the File branch. Firecrawl: scrapeOptions is declared in the block's inputs map with no subBlock, so it is reachable by a direct tool call. "Exposes no visible input" rather than "exposes no input". * fix(docs): never abort the generator on an unreadable subBlocks array An unreadable `subBlocks` value used to throw, and with no spread base to fall back on the failure was fatal: the pre-scan recorded it and `generateAllBlockDocs` returned false, so `main` exited 1 and nothing was written at all. Nine shipped blocks already use the non-literal form and are saved only because they happen to spread a base — the first block authored as `subBlocks: myFields` without one would brick `generate-docs` and `docs:check` for the whole repository. The author's reason for aborting was sound: an empty `userSettableParamIds` is indistinguishable from "nothing is settable", which strips every hidden param and publishes a wrong page. So the fix is not to treat the failure as empty — it is to represent UNKNOWN distinctly. `extractBlockSuppliedParamIds` now returns `{ ids, mapperIds, parseError }` with `ids: null` for UNKNOWN, that `null` flows through `BlockConfig.userSettableParamIds`, `getToolInfo` and `extractToolInfo`, and the filter site skips filtering entirely when it sees it — restoring the pre-filter behaviour for that one block instead of killing the run. `getToolInfo`'s default is `null` for the same reason: `[]` as a default silently meant "strip everything". The mapper scan now runs before the subBlocks scan, so a spread-inheriting block keeps its mapper's renames when only the subBlocks scan fails. With nothing left that can record a fatal, the dry pre-scan and its reporting are removed. Also fixes a silent blind spot in the mapper scan: both key regexes require a literal `:`, so a mapper returning a shorthand property (`{ file }`) or writing a computed key (`result['file'] = …`) dropped a real user input from the docs with no warning. Shorthand names are read from the depth-1 comma segments of brace-matched regions, which keeps call argument lists from contributing names. Verified byte-identical output: `scripts/generate-docs.ts` and `tool-metadata:generate` reproduce all 302 generated files unchanged, the credential-shaped hidden params stay stripped, and `check:audits` passes. * fix(docs): name the input that gates Firecrawl search scrape output The previous wording ended each description with "for which the Search operation exposes no visible input", a relative clause that attaches ambiguously and never tells the reader what controls the field. Name scrapeOptions and note that it is hidden. * fix(docs): say the Vanta mimeType is ignored for File-input uploads Every return path of downloadServableFileFromStorage yields a non-empty contentType (a literal, getMimeTypeFromExtension's GENERIC_MIME_TYPE fallback, or resolveServableDocBytes' constants/getContentType), so resolved.contentType always wins at route.ts:79-81 and params.mimeType is unreachable on that branch. It is not a fallback; it is ignored. * fix(docs): note the hidden inputs that gate Pulse html and figures output extractFigure and returnHtml are visibility: 'hidden' with no subBlock, and parser.ts:135-144 only forwards them when defined, so neither output can be produced today. Say so on the output rows rather than deleting them, since removing an output field would break saved block references. chunks is left alone: chunking/chunkSize are user-only with real subBlocks. * fix(docs): report a spread-only subBlocks array as unknown, not empty extractUserSettableParamIds answered [] for a subBlocks array whose every element spreads a fields array it cannot follow (NotionV2Block's `[...NotionBlock.subBlocks, ...getTrigger(x).subBlocks]`). [] asserts the block supplies nothing, so the hidden-param filter stripped every hidden param from every tool the block owns - silently, with no parseError and so no warning. That is the exact false-drop the null UNKNOWN state exists to prevent. Return null in that case and propagate it: extractBlockSuppliedParamIds no longer folds it into [], and the block pass no longer collapses it with `supplied.ids ?? []`. A config-level spread base still narrows the filter to its readable fields plus the mapper's renames; with no base the filter is switched off. An array with at least one inline id, a genuinely empty array, and the existing throw/warn paths are unchanged - all 8 warned blocks warn identically and every generated page is byte-identical. Also pin the hidden-param filter on extractToolInfo's source-parsing path, which had no coverage at all: deleting it outright left the suite green. * fix(daytona): stop the lifecycle tools crashing on a non-string sandboxId start/stop/delete echo sandboxId back as the output id when the API returns no body, via params.sandboxId.trim() inside transformResponse - after the request has already gone out. sandboxId is declared type: 'string' but arrives unvalidated, and now that safeUrlPathSegment accepts a numeric id a number builds a URL, sends the DELETE/START/STOP, and only then throws an unnamed TypeError. Both the old and new behaviour fail, so this is not a regression of a working workflow, but for delete_sandbox the side effect is irreversible and the caller cannot tell what happened. Fixed with a shared resolveSandboxId in utils.ts rather than a coercion at each of the three sites: utils.ts already owns every sandbox-id helper, the three tools already import from it, and the reasoning belongs in one place. The encoded value cannot be reused - it is percent-encoded and would be wrong as an output id. Behaviour for a string is unchanged. * docs(url-path): drop the false claim that widening restores prior behaviour The module TSDoc said the number/bigint widening fixed 'a regression for the call sites whose pre-guard form was a bare ${params.id} template that stringified a number fine'. It did not. Every pre-guard form in a422990 used .trim() (`/v13/deployments/${params.deploymentId.trim()}`, `sandboxId?.trim()`), so a numeric id threw there too - no importer has ever accepted one. The cited examples were also wrong: only Vercel and Daytona import this module, and neither Box nor X does. Replaced with the real motivation - params are declared type: 'string' but nothing enforces it before the guard, and the old coercion-to-'' turned a supplied numeric id into a misleading 'is required'. Two test comments made the same claim ('still stringifies', 'replaced bare ${params.id} templates') and are corrected; no assertion is weakened. * fix(docs): correct output rows that cite inputs Sim does not send mistral_parse: the PR removed the includeImageBase64 input row but left the image_base64 output citing include_image_base64=true, so the page referenced an input it no longer documents. includeImageBase64 is visibility: 'hidden' with no subBlock, mapper or canonicalParamId, so it is annotated the same way Pulse's html and figures were. The sibling rows are a stronger defect: table_format, extract_header and extract_footer appear nowhere in the repo - not as tool params, not in the request body parser.ts builds - so tables/header/footer cited options Sim never sends. Worded accordingly rather than as hidden inputs. pulse structured_output cited 'if schema was provided', but there is no schema or structuredOutput param in the tool, in pulseParseInputSchema, or in the outgoing body, so the field is always null. No output field is deleted - removing one changes the block's output schema and could break saved workflow references. * style: wrap long description literals to satisfy biome Formatting only — regenerating both artifacts produces a byte-identical tree, so no description text changed. * fix(docs): cite the real Mistral options behind tables, header and footer The previous wording was self-contradictory on tables: it described placeholder-referenced table objects and then asserted the list is empty. Mistral's OCR API does expose table_format, extract_header and extract_footer. table_format defaults to inline markdown, so the separate tables list stays empty; extract_header and extract_footer default to false, so neither field is returned. Sim sets none of the three. Name the option and its default in each description instead of asserting an outcome the request body alone does not establish.
1 parent 603f1c2 commit 292e59f

53 files changed

Lines changed: 1687 additions & 364 deletions

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

apps/docs/content/docs/en/integrations/box.mdx

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -52,7 +52,6 @@ Upload a file to a Box folder
5252
| --------- | ---- | -------- | ----------- |
5353
| `parentFolderId` | string | Yes | The ID of the folder to upload the file to \(use "0" for root\) |
5454
| `file` | file | No | The file to upload \(UserFile object\) |
55-
| `fileContent` | string | No | Legacy: base64 encoded file content |
5655
| `fileName` | string | No | Optional filename override |
5756

5857
#### Output

apps/docs/content/docs/en/integrations/daytona.mdx

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -216,7 +216,6 @@ Upload a file to a Daytona sandbox
216216
| `sandboxId` | string | Yes | ID of the sandbox to upload the file to |
217217
| `destinationPath` | string | Yes | Destination path in the sandbox \(a trailing slash uploads into that directory using the file name\) |
218218
| `file` | file | No | The file to upload |
219-
| `fileContent` | string | No | Legacy: base64 encoded file content |
220219
| `fileName` | string | No | Optional file name override |
221220

222221
#### Output

apps/docs/content/docs/en/integrations/dropbox.mdx

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,6 @@ Upload a file to Dropbox
4444
| --------- | ---- | -------- | ----------- |
4545
| `path` | string | Yes | The path in Dropbox where the file should be saved \(e.g., /folder/document.pdf\) |
4646
| `file` | file | No | The file to upload \(UserFile object\) |
47-
| `fileContent` | string | No | Legacy: base64 encoded file content |
4847
| `fileName` | string | No | Optional filename \(used if path is a folder\) |
4948
| `mode` | string | No | Write mode: add \(default\) or overwrite |
5049
| `autorename` | boolean | No | If true, rename the file if there is a conflict |

apps/docs/content/docs/en/integrations/firecrawl.mdx

Lines changed: 5 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -52,7 +52,6 @@ Extract structured content from web pages with comprehensive metadata support. C
5252
| --------- | ---- | -------- | ----------- |
5353
| `url` | string | Yes | The URL to scrape content from \(e.g., "https://example.com/page"\) |
5454
| `formats` | json | No | Output formats supplied by existing Firecrawl block configurations |
55-
| `scrapeOptions` | json | No | Options for content scraping |
5655
| `apiKey` | string | Yes | Firecrawl API key |
5756

5857
#### Output
@@ -90,7 +89,6 @@ Scrape multiple URLs in a single batch job and retrieve structured content from
9089
| `onlyMainContent` | boolean | No | Extract only main content from pages |
9190
| `maxConcurrency` | number | No | Maximum number of concurrent scrapes |
9291
| `ignoreInvalidURLs` | boolean | No | Skip invalid URLs instead of failing the batch \(default: true\) |
93-
| `scrapeOptions` | json | No | Advanced scraping configuration options |
9492
| `zeroDataRetention` | boolean | No | Enable zero data retention |
9593
| `apiKey` | string | Yes | Firecrawl API key |
9694

@@ -159,7 +157,6 @@ Search for information on the web using Firecrawl
159157
| Parameter | Type | Required | Description |
160158
| --------- | ---- | -------- | ----------- |
161159
| `query` | string | Yes | The search query to use |
162-
| `scrapeOptions` | json | No | Advanced scrape options supplied by existing configurations |
163160
| `apiKey` | string | Yes | Firecrawl API key |
164161

165162
#### Output
@@ -170,11 +167,11 @@ Search for information on the web using Firecrawl
170167
|`title` | string | Search result title from search engine |
171168
|`description` | string | Search result description/snippet from search engine |
172169
|`url` | string | URL of the search result |
173-
|`markdown` | string | Page content in markdown \(when scrapeOptions.formats includes "markdown"\) |
174-
|`html` | string | Processed HTML content \(when scrapeOptions.formats includes "html"\) |
175-
|`rawHtml` | string | Unprocessed raw HTML \(when scrapeOptions.formats includes "rawHtml"\) |
176-
|`links` | array | Links found on the page \(when scrapeOptions.formats includes "links"\) |
177-
|`screenshot` | string | Screenshot URL \(expires after 24 hours, when scrapeOptions.formats includes "screenshot"\) |
170+
|`markdown` | string | Page content in markdown; returned only when scraping was requested via the hidden scrapeOptions input |
171+
|`html` | string | Processed HTML content; returned only when "html" is among the scrape formats requested via the hidden scrapeOptions input |
172+
|`rawHtml` | string | Unprocessed raw HTML; returned only when "rawHtml" is among the scrape formats requested via the hidden scrapeOptions input |
173+
|`links` | array | Links found on the page; returned only when "links" is among the scrape formats requested via the hidden scrapeOptions input |
174+
|`screenshot` | string | Screenshot URL \(expires after 24 hours\); returned only when "screenshot" is among the scrape formats requested via the hidden scrapeOptions input |
178175
|`metadata` | object | Metadata about the search result page |
179176
|`title` | string | Page title |
180177
|`description` | string | Page meta description |
@@ -195,7 +192,6 @@ Crawl entire websites and extract structured content from all accessible pages
195192
| `maxDepth` | number | No | Maximum depth to crawl from the starting URL \(e.g., 1, 2, 3\). Controls how many levels deep to follow links |
196193
| `formats` | json | No | Output formats for scraped content \(e.g., \["markdown"\], \["markdown", "html"\], \["markdown", "links"\]\) |
197194
| `prompt` | string | No | Natural-language crawl guidance supplied by existing configurations |
198-
| `scrapeOptions` | json | No | Advanced scrape options supplied by existing configurations |
199195
| `excludePaths` | json | No | URL paths to exclude from crawling \(e.g., \["/blog/*", "/admin/*", "/*.pdf"\]\) |
200196
| `includePaths` | json | No | URL paths to include in crawling \(e.g., \["/docs/*", "/api/*"\]\). Only these paths will be crawled |
201197
| `onlyMainContent` | boolean | No | Extract only main content from pages |
@@ -287,7 +283,6 @@ Get a complete list of URLs from any website quickly and reliably. Useful for di
287283
| `ignoreQueryParameters` | boolean | No | Exclude URLs containing query strings \(default: true\) |
288284
| `limit` | number | No | Maximum number of links to return \(e.g., 100, 1000, 5000\). Max: 100,000, default: 5,000 |
289285
| `timeout` | number | No | Request timeout in milliseconds |
290-
| `location` | json | No | Geographic context for proxying \(country, languages\) |
291286
| `apiKey` | string | Yes | Firecrawl API key |
292287

293288
#### Output
@@ -313,7 +308,6 @@ Extract structured data from entire webpages using natural language prompts and
313308
| `includeSubdomains` | boolean | No | Extend scanning to subdomains \(default: true\) |
314309
| `showSources` | boolean | No | Return data sources in the response \(default: false\) |
315310
| `ignoreInvalidURLs` | boolean | No | Skip invalid URLs in the array \(default: true\) |
316-
| `scrapeOptions` | json | No | Advanced scraping configuration options |
317311
| `apiKey` | string | Yes | Firecrawl API key |
318312

319313
#### Output

apps/docs/content/docs/en/integrations/github.mdx

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -120,11 +120,8 @@ Create comments on GitHub PRs
120120
| `body` | string | Yes | Comment content |
121121
| `pullNumber` | number | Yes | Pull request number |
122122
| `path` | string | No | File path for review comment |
123-
| `position` | number | No | Line number for review comment |
124123
| `commentType` | string | No | Type of comment \(pr_comment or file_comment\) |
125124
| `line` | number | No | Line number for review comment |
126-
| `side` | string | No | Side of the diff \(LEFT or RIGHT\) |
127-
| `commitId` | string | No | The SHA of the commit to comment on |
128125
| `apiKey` | string | Yes | GitHub API token |
129126

130127
#### Output

apps/docs/content/docs/en/integrations/google_calendar.mdx

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -89,7 +89,6 @@ List events from Google Calendar. Returns API-aligned fields only.
8989
| `maxResults` | number | No | Maximum number of events to return \(max 2500\) |
9090
| `pageToken` | string | No | Token for retrieving the next page of results |
9191
| `orderBy` | string | No | Order of events: startTime \(chronological, the default\) or updated \(last-modified\). startTime is always valid here because singleEvents is set. |
92-
| `showDeleted` | boolean | No | Include deleted events |
9392

9493
#### Output
9594

@@ -227,7 +226,6 @@ Get instances of a recurring event from Google Calendar. Returns API-aligned fie
227226
| `timeMax` | string | No | Upper bound for instances \(RFC3339 timestamp, e.g., 2025-06-04T00:00:00Z\) |
228227
| `maxResults` | number | No | Maximum number of instances to return \(default 250, max 2500\) |
229228
| `pageToken` | string | No | Token for retrieving subsequent pages of results |
230-
| `showDeleted` | boolean | No | Include deleted instances |
231229

232230
#### Output
233231

@@ -248,8 +246,6 @@ List all calendars in the user's calendar list. Returns API-aligned fields only.
248246
| `minAccessRole` | string | No | Minimum access role for returned calendars: freeBusyReader, reader, writer, or owner |
249247
| `maxResults` | number | No | Maximum number of calendars to return \(default 100, max 250\) |
250248
| `pageToken` | string | No | Token for retrieving subsequent pages of results |
251-
| `showDeleted` | boolean | No | Include deleted calendars |
252-
| `showHidden` | boolean | No | Include hidden calendars |
253249

254250
#### Output
255251

apps/docs/content/docs/en/integrations/google_drive.mdx

Lines changed: 5 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,6 @@ List files and folders in Google Drive with complete metadata
4646
| `folderId` | string | No | The ID of the folder to list files from \(internal use\) |
4747
| `query` | string | No | Search term to filter files by name \(e.g. "budget" finds files with "budget" in the name\). Do NOT use Google Drive query syntax here - just provide a plain search term. |
4848
| `pageSize` | number | No | The maximum number of files to return \(default: 100\) |
49-
| `pageToken` | string | No | The page token to use for pagination |
5049

5150
#### Output
5251

@@ -105,7 +104,7 @@ List files and folders in Google Drive with complete metadata
105104
|`isAppAuthorized` | boolean | Whether created by requesting app |
106105
|`contentRestrictions` | json | Content restrictions |
107106
|`linkShareMetadata` | json | Link share metadata |
108-
| `nextPageToken` | string | Token for fetching the next page of results |
107+
| `nextPageToken` | string | Page token for the next page of files; absent from the response when the end of the files list has been reached |
109108

110109
### Get Google Drive File
111110

@@ -485,7 +484,6 @@ Search for files in Google Drive using advanced query syntax (e.g., fullText con
485484
| --------- | ---- | -------- | ----------- |
486485
| `query` | string | Yes | Google Drive query string using advanced search syntax \(e.g., "fullText contains 'budget'", "mimeType = 'application/pdf'", "modifiedTime > '2024-01-01'"\) |
487486
| `pageSize` | number | No | Maximum number of files to return \(default: 100\) |
488-
| `pageToken` | string | No | Token for fetching the next page of results |
489487

490488
#### Output
491489

@@ -518,7 +516,7 @@ Search for files in Google Drive using advanced query syntax (e.g., fullText con
518516
|`driveId` | string | Shared drive ID |
519517
|`capabilities` | json | User capabilities on file |
520518
|`version` | string | Version number |
521-
| `nextPageToken` | string | Token for fetching the next page of results |
519+
| `nextPageToken` | string | Page token for the next page of files; absent from the response when the end of the files list has been reached |
522520

523521
### Update Google Drive File
524522

@@ -673,7 +671,6 @@ List all permissions (who has access) for a file in Google Drive
673671
| Parameter | Type | Required | Description |
674672
| --------- | ---- | -------- | ----------- |
675673
| `fileId` | string | Yes | The ID of the file to list permissions for |
676-
| `pageToken` | string | No | The page token to use for pagination |
677674

678675
#### Output
679676

@@ -692,7 +689,7 @@ List all permissions (who has access) for a file in Google Drive
692689
|`allowFileDiscovery` | boolean | Whether file is discoverable by grantee |
693690
|`pendingOwner` | boolean | Whether ownership transfer is pending |
694691
|`permissionDetails` | json | Details about inherited permissions |
695-
| `nextPageToken` | string | Token for fetching the next page of permissions |
692+
| `nextPageToken` | string | Page token for the next page of permissions; absent from the response when the end of the permissions list has been reached |
696693

697694
### Export Google Drive File
698695

@@ -723,7 +720,6 @@ List the revision history of a file in Google Drive
723720
| --------- | ---- | -------- | ----------- |
724721
| `fileId` | string | Yes | The ID of the file to list revisions for |
725722
| `pageSize` | number | No | Maximum number of revisions to return \(1-1000, default 200\) |
726-
| `pageToken` | string | No | The page token to use for pagination |
727723

728724
#### Output
729725

@@ -741,7 +737,7 @@ List the revision history of a file in Google Drive
741737
|`md5Checksum` | string | MD5 checksum for binary revisions |
742738
|`size` | string | Size of the revision in bytes |
743739
|`exportLinks` | json | Export format links for the revision |
744-
| `nextPageToken` | string | Token for fetching the next page of revisions |
740+
| `nextPageToken` | string | Page token for the next page of revisions; absent from the response when the end of the revisions list has been reached |
745741

746742
### Get Google Drive Revision
747743

@@ -783,7 +779,6 @@ List comments on a file in Google Drive
783779
| `includeDeleted` | boolean | No | Whether to include deleted comments \(their content is stripped\) |
784780
| `pageSize` | number | No | Maximum number of comments to return \(1-100, default 20\) |
785781
| `startModifiedTime` | string | No | Only return comments modified after this RFC 3339 timestamp |
786-
| `pageToken` | string | No | The page token to use for pagination |
787782

788783
#### Output
789784

@@ -801,7 +796,7 @@ List comments on a file in Google Drive
801796
|`anchor` | string | Region of the document the comment refers to |
802797
|`quotedFileContent` | json | The file content the comment quotes |
803798
|`replies` | json | Threaded replies to the comment |
804-
| `nextPageToken` | string | Token for fetching the next page of comments |
799+
| `nextPageToken` | string | Page token for the next page of comments; absent from the response when the end of the comments list has been reached |
805800

806801
### Create Google Drive Comment
807802

apps/docs/content/docs/en/integrations/google_sheets.mdx

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -75,7 +75,6 @@ Write data to a specific sheet in a Google Sheets spreadsheet
7575
| `cellRange` | string | No | The cell range to write to \(e.g. "A1:D10", "A1"\). Defaults to "A1" if not specified. |
7676
| `values` | array | Yes | The data to write as a 2D array \(e.g. \[\["Name", "Age"\], \["Alice", 30\], \["Bob", 25\]\]\) or array of objects. |
7777
| `valueInputOption` | string | No | The format of the data to write |
78-
| `includeValuesInResponse` | boolean | No | Whether to include the written values in the response |
7978

8079
#### Output
8180

@@ -102,7 +101,6 @@ Update data in a specific sheet in a Google Sheets spreadsheet
102101
| `cellRange` | string | No | The cell range to update \(e.g. "A1:D10", "A1"\). Defaults to "A1" if not specified. |
103102
| `values` | array | Yes | The data to update as a 2D array \(e.g. \[\["Name", "Age"\], \["Alice", 30\]\]\) or array of objects. |
104103
| `valueInputOption` | string | No | The format of the data to update |
105-
| `includeValuesInResponse` | boolean | No | Whether to include the updated values in the response |
106104

107105
#### Output
108106

@@ -129,7 +127,6 @@ Append data to the end of a specific sheet in a Google Sheets spreadsheet
129127
| `values` | array | Yes | The data to append as a 2D array \(e.g. \[\["Alice", 30\], \["Bob", 25\]\]\) or array of objects. |
130128
| `valueInputOption` | string | No | The format of the data to append |
131129
| `insertDataOption` | string | No | How to insert the data \(OVERWRITE or INSERT_ROWS\) |
132-
| `includeValuesInResponse` | boolean | No | Whether to include the appended values in the response |
133130

134131
#### Output
135132

0 commit comments

Comments
 (0)