Google · Schema
BatchUpdateDocumentRequest
Request message for BatchUpdateDocument.
AdvertisingCloudDevelopersGooglePlatformSearchT1Agentic CommerceUniversal Commerce ProtocolAP2A2A
Properties
| Name | Type | Description |
|---|---|---|
| requests | array | A list of updates to apply to the document. |
| writeControl | object | Provides control over how write requests are executed. |
JSON Schema
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"$id": "https://raw.githubusercontent.com/api-evangelist/google/main/json-schema/google-batch-update-document-request-schema.json",
"title": "BatchUpdateDocumentRequest",
"description": "Request message for BatchUpdateDocument.",
"x-generated": "2026-10-03",
"x-method": "derived",
"x-generator": "derive-json-schema.py",
"x-source": "openapi/google-documents-api-openapi.yml#/components/schemas/BatchUpdateDocumentRequest",
"properties": {
"requests": {
"description": "A list of updates to apply to the document.",
"items": {
"$ref": "#/$defs/Request"
},
"type": "array"
},
"writeControl": {
"$ref": "#/$defs/WriteControl",
"description": "Provides control over how write requests are executed."
}
},
"type": "object",
"$defs": {
"Background": {
"description": "Represents the background of a document.",
"properties": {
"color": {
"$ref": "#/$defs/OptionalColor",
"description": "The background color."
}
},
"type": "object"
},
"Color": {
"description": "A solid color.",
"properties": {
"rgbColor": {
"$ref": "#/$defs/RgbColor",
"description": "The RGB color value."
}
},
"type": "object"
},
"CreateFooterRequest": {
"description": "Creates a Footer. The new footer is applied to the SectionStyle at the location of the SectionBreak if specified, otherwise it is applied to the DocumentStyle. If a footer of the specified type already exists, a 400 bad request error is returned.",
"properties": {
"sectionBreakLocation": {
"$ref": "#/$defs/Location",
"description": "The location of the SectionBreak immediately preceding the section whose SectionStyle this footer should belong to. If this is unset or refers to the first section break in the document, the footer applies to the document style."
},
"type": {
"description": "The type of footer to create.",
"enum": [
"HEADER_FOOTER_TYPE_UNSPECIFIED",
"DEFAULT"
],
"type": "string"
}
},
"type": "object"
},
"CreateFootnoteRequest": {
"description": "Creates a Footnote segment and inserts a new FootnoteReference to it at the given location. The new Footnote segment will contain a space followed by a newline character.",
"properties": {
"endOfSegmentLocation": {
"$ref": "#/$defs/EndOfSegmentLocation",
"description": "Inserts the footnote reference at the end of the document body. Footnote references cannot be inserted inside a header, footer or footnote. Since footnote references can only be inserted in the body, the segment ID field must be empty."
},
"location": {
"$ref": "#/$defs/Location",
"description": "Inserts the footnote reference at a specific index in the document. The footnote reference must be inserted inside the bounds of an existing Paragraph. For instance, it cannot be inserted at a table's start index (i.e. between the table and its preceding paragraph). Footnote references cannot be inserted inside an equation, header, footer or footnote. Since footnote references can only be inserted in the body, the segment ID field must be empty."
}
},
"type": "object"
},
"CreateHeaderRequest": {
"description": "Creates a Header. The new header is applied to the SectionStyle at the location of the SectionBreak if specified, otherwise it is applied to the DocumentStyle. If a header of the specified type already exists, a 400 bad request error is returned.",
"properties": {
"sectionBreakLocation": {
"$ref": "#/$defs/Location",
"description": "The location of the SectionBreak which begins the section this header should belong to. If `section_break_location' is unset or if it refers to the first section break in the document body, the header applies to the DocumentStyle"
},
"type": {
"description": "The type of header to create.",
"enum": [
"HEADER_FOOTER_TYPE_UNSPECIFIED",
"DEFAULT"
],
"type": "string"
}
},
"type": "object"
},
"CreateNamedRangeRequest": {
"description": "Creates a NamedRange referencing the given range.",
"properties": {
"name": {
"description": "The name of the NamedRange. Names do not need to be unique. Names must be at least 1 character and no more than 256 characters, measured in UTF-16 code units.",
"type": "string"
},
"range": {
"$ref": "#/$defs/Range",
"description": "The range to apply the name to."
}
},
"type": "object"
},
"CreateParagraphBulletsRequest": {
"description": "Creates bullets for all of the paragraphs that overlap with the given range. The nesting level of each paragraph will be determined by counting leading tabs in front of each paragraph. To avoid excess space between the bullet and the corresponding paragraph, these leading tabs are removed by this request. This may change the indices of parts of the text. If the paragraph immediately before paragraphs being updated is in a list with a matching preset, the paragraphs being updated are added to that preceding list.",
"properties": {
"bulletPreset": {
"description": "The kinds of bullet glyphs to be used.",
"enum": [
"BULLET_GLYPH_PRESET_UNSPECIFIED",
"BULLET_DISC_CIRCLE_SQUARE",
"BULLET_DIAMONDX_ARROW3D_SQUARE",
"BULLET_CHECKBOX",
"BULLET_ARROW_DIAMOND_DISC",
"BULLET_STAR_CIRCLE_SQUARE",
"BULLET_ARROW3D_CIRCLE_SQUARE",
"BULLET_LEFTTRIANGLE_DIAMOND_DISC",
"BULLET_DIAMONDX_HOLLOWDIAMOND_SQUARE",
"BULLET_DIAMOND_CIRCLE_SQUARE",
"NUMBERED_DECIMAL_ALPHA_ROMAN",
"NUMBERED_DECIMAL_ALPHA_ROMAN_PARENS",
"NUMBERED_DECIMAL_NESTED",
"NUMBERED_UPPERALPHA_ALPHA_ROMAN",
"NUMBERED_UPPERROMAN_UPPERALPHA_DECIMAL",
"NUMBERED_ZERODECIMAL_ALPHA_ROMAN"
],
"type": "string"
},
"range": {
"$ref": "#/$defs/Range",
"description": "The range to apply the bullet preset to."
}
},
"type": "object"
},
"DeleteContentRangeRequest": {
"description": "Deletes content from the document.",
"properties": {
"range": {
"$ref": "#/$defs/Range",
"description": "The range of content to delete. Deleting text that crosses a paragraph boundary may result in changes to paragraph styles, lists, positioned objects and bookmarks as the two paragraphs are merged. Attempting to delete certain ranges can result in an invalid document structure in which case a 400 bad request error is returned. Some examples of invalid delete requests include: * Deleting one code unit of a surrogate pair. * Deleting the last newline character of a Body, Header, Footer, Footnote, TableCell or TableOfContents. * Deleting the start or end of a Table, TableOfContents or Equation without deleting the entire element. * Deleting the newline character before a Table, TableOfContents or SectionBreak without deleting the element. * Deleting individual rows or cells of a table. Deleting the content within a table cell is allowed."
}
},
"type": "object"
},
"DeleteFooterRequest": {
"description": "Deletes a Footer from the document.",
"properties": {
"footerId": {
"description": "The id of the footer to delete. If this footer is defined on DocumentStyle, the reference to this footer is removed, resulting in no footer of that type for the first section of the document. If this footer is defined on a SectionStyle, the reference to this footer is removed and the footer of that type is now continued from the previous section.",
"type": "string"
}
},
"type": "object"
},
"DeleteHeaderRequest": {
"description": "Deletes a Header from the document.",
"properties": {
"headerId": {
"description": "The id of the header to delete. If this header is defined on DocumentStyle, the reference to this header is removed, resulting in no header of that type for the first section of the document. If this header is defined on a SectionStyle, the reference to this header is removed and the header of that type is now continued from the previous section.",
"type": "string"
}
},
"type": "object"
},
"DeleteNamedRangeRequest": {
"description": "Deletes a NamedRange.",
"properties": {
"name": {
"description": "The name of the range(s) to delete. All named ranges with the given name will be deleted.",
"type": "string"
},
"namedRangeId": {
"description": "The ID of the named range to delete.",
"type": "string"
}
},
"type": "object"
},
"DeleteParagraphBulletsRequest": {
"description": "Deletes bullets from all of the paragraphs that overlap with the given range. The nesting level of each paragraph will be visually preserved by adding indent to the start of the corresponding paragraph.",
"properties": {
"range": {
"$ref": "#/$defs/Range",
"description": "The range to delete bullets from."
}
},
"type": "object"
},
"DeletePositionedObjectRequest": {
"description": "Deletes a PositionedObject from the document.",
"properties": {
"objectId": {
"description": "The ID of the positioned object to delete.",
"type": "string"
}
},
"type": "object"
},
"DeleteTableColumnRequest": {
"description": "Deletes a column from a table.",
"properties": {
"tableCellLocation": {
"$ref": "#/$defs/TableCellLocation",
"description": "The reference table cell location from which the column will be deleted. The column this cell spans will be deleted. If this is a merged cell that spans multiple columns, all columns that the cell spans will be deleted. If no columns remain in the table after this deletion, the whole table is deleted."
}
},
"type": "object"
},
"DeleteTableRowRequest": {
"description": "Deletes a row from a table.",
"properties": {
"tableCellLocation": {
"$ref": "#/$defs/TableCellLocation",
"description": "The reference table cell location from which the row will be deleted. The row this cell spans will be deleted. If this is a merged cell that spans multiple rows, all rows that the cell spans will be deleted. If no rows remain in the table after this deletion, the whole table is deleted."
}
},
"type": "object"
},
"Dimension": {
"description": "A magnitude in a single direction in the specified units.",
"properties": {
"magnitude": {
"description": "The magnitude.",
"format": "double",
"type": "number"
},
"unit": {
"description": "The units for magnitude.",
"enum": [
"UNIT_UNSPECIFIED",
"PT"
],
"type": "string"
}
},
"type": "object"
},
"DocumentStyle": {
"description": "The style of the document.",
"properties": {
"background": {
"$ref": "#/$defs/Background",
"description": "The background of the document. Documents cannot have a transparent background color."
},
"defaultFooterId": {
"description": "The ID of the default footer. If not set, there's no default footer. This property is read-only.",
"type": "string"
},
"defaultHeaderId": {
"description": "The ID of the default header. If not set, there's no default header. This property is read-only.",
"type": "string"
},
"evenPageFooterId": {
"description": "The ID of the footer used only for even pages. The value of use_even_page_header_footer determines whether to use the default_footer_id or this value for the footer on even pages. If not set, there's no even page footer. This property is read-only.",
"type": "string"
},
"evenPageHeaderId": {
"description": "The ID of the header used only for even pages. The value of use_even_page_header_footer determines whether to use the default_header_id or this value for the header on even pages. If not set, there's no even page header. This property is read-only.",
"type": "string"
},
"firstPageFooterId": {
"description": "The ID of the footer used only for the first page. If not set then a unique footer for the first page does not exist. The value of use_first_page_header_footer determines whether to use the default_footer_id or this value for the footer on the first page. If not set, there's no first page footer. This property is read-only.",
"type": "string"
},
"firstPageHeaderId": {
"description": "The ID of the header used only for the first page. If not set then a unique header for the first page does not exist. The value of use_first_page_header_footer determines whether to use the default_header_id or this value for the header on the first page. If not set, there's no first page header. This property is read-only.",
"type": "string"
},
"marginBottom": {
"$ref": "#/$defs/Dimension",
"description": "The bottom page margin. Updating the bottom page margin on the document style clears the bottom page margin on all section styles."
},
"marginFooter": {
"$ref": "#/$defs/Dimension",
"description": "The amount of space between the bottom of the page and the contents of the footer."
},
"marginHeader": {
"$ref": "#/$defs/Dimension",
"description": "The amount of space between the top of the page and the contents of the header."
},
"marginLeft": {
"$ref": "#/$defs/Dimension",
"description": "The left page margin. Updating the left page margin on the document style clears the left page margin on all section styles. It may also cause columns to resize in all sections."
},
"marginRight": {
"$ref": "#/$defs/Dimension",
"description": "The right page margin. Updating the right page margin on the document style clears the right page margin on all section styles. It may also cause columns to resize in all sections."
},
"marginTop": {
"$ref": "#/$defs/Dimension",
"description": "The top page margin. Updating the top page margin on the document style clears the top page margin on all section styles."
},
"pageNumberStart": {
"description": "The page number from which to start counting the number of pages.",
"format": "int32",
"type": "integer"
},
"pageSize": {
"$ref": "#/$defs/Size",
"description": "The size of a page in the document."
},
"useCustomHeaderFooterMargins": {
"description": "Indicates whether DocumentStyle margin_header, SectionStyle margin_header and DocumentStyle margin_footer, SectionStyle margin_footer are respected. When false, the default values in the Docs editor for header and footer margin are used. This property is read-only.",
"type": "boolean"
},
"useEvenPageHeaderFooter": {
"description": "Indicates whether to use the even page header / footer IDs for the even pages.",
"type": "boolean"
},
"useFirstPageHeaderFooter": {
"description": "Indicates whether to use the first page header / footer IDs for the first page.",
"type": "boolean"
}
},
"type": "object"
},
"EndOfSegmentLocation": {
"description": "Location at the end of a body, header, footer or footnote. The location is immediately before the last newline in the document segment.",
"properties": {
"segmentId": {
"description": "The ID of the header, footer or footnote the location is in. An empty segment ID signifies the document's body.",
"type": "string"
}
},
"type": "object"
},
"InsertInlineImageRequest": {
"description": "Inserts an InlineObject containing an image at the given location.",
"properties": {
"endOfSegmentLocation": {
"$ref": "#/$defs/EndOfSegmentLocation",
"description": "Inserts the text at the end of a header, footer or the document body. Inline images cannot be inserted inside a footnote."
},
"location": {
"$ref": "#/$defs/Location",
"description": "Inserts the image at a specific index in the document. The image must be inserted inside the bounds of an existing Paragraph. For instance, it cannot be inserted at a table's start index (i.e. between the table and its preceding paragraph). Inline images cannot be inserted inside a footnote or equation."
},
"objectSize": {
"$ref": "#/$defs/Size",
"description": "The size that the image should appear as in the document. This property is optional and the final size of the image in the document is determined by the following rules: * If neither width nor height is specified, then a default size of the image is calculated based on its resolution. * If one dimension is specified then the other dimension is calculated to preserve the aspect ratio of the image. * If both width and height are specified, the image is scaled to fit within the provided dimensions while maintaining its aspect ratio."
},
"uri": {
"description": "The image URI. The image is fetched once at insertion time and a copy is stored for display inside the document. Images must be less than 50MB in size, cannot exceed 25 megapixels, and must be in one of PNG, JPEG, or GIF format. The provided URI must be publicly accessible and at most 2 kB in length. The URI itself is saved with the image, and exposed via the ImageProperties.content_uri field.",
"type": "string"
}
},
"type": "object"
},
"InsertPageBreakRequest": {
"description": "Inserts a page break followed by a newline at the specified location.",
"properties": {
"endOfSegmentLocation": {
"$ref": "#/$defs/EndOfSegmentLocation",
"description": "Inserts the page break at the end of the document body. Page breaks cannot be inserted inside a footnote, header or footer. Since page breaks can only be inserted inside the body, the segment ID field must be empty."
},
"location": {
"$ref": "#/$defs/Location",
"description": "Inserts the page break at a specific index in the document. The page break must be inserted inside the bounds of an existing Paragraph. For instance, it cannot be inserted at a table's start index (i.e. between the table and its preceding paragraph). Page breaks cannot be inserted inside a table, equation, footnote, header or footer. Since page breaks can only be inserted inside the body, the segment ID field must be empty."
}
},
"type": "object"
},
"InsertSectionBreakRequest": {
"description": "Inserts a section break at the given location. A newline character will be inserted before the section break.",
"properties": {
"endOfSegmentLocation": {
"$ref": "#/$defs/EndOfSegmentLocation",
"description": "Inserts a newline and a section break at the end of the document body. Section breaks cannot be inserted inside a footnote, header or footer. Because section breaks can only be inserted inside the body, the segment ID field must be empty."
},
"location": {
"$ref": "#/$defs/Location",
"description": "Inserts a newline and a section break at a specific index in the document. The section break must be inserted inside the bounds of an existing Paragraph. For instance, it cannot be inserted at a table's start index (i.e. between the table and its preceding paragraph). Section breaks cannot be inserted inside a table, equation, footnote, header, or footer. Since section breaks can only be inserted inside the body, the segment ID field must be empty."
},
"sectionType": {
"description": "The type of section to insert.",
"enum": [
"SECTION_TYPE_UNSPECIFIED",
"CONTINUOUS",
"NEXT_PAGE"
],
"type": "string"
}
},
"type": "object"
},
"InsertTableColumnRequest": {
"description": "Inserts an empty column into a table.",
"properties": {
"insertRight": {
"description": "Whether to insert new column to the right of the reference cell location. - `True`: insert to the right. - `False`: insert to the left.",
"type": "boolean"
},
"tableCellLocation": {
"$ref": "#/$defs/TableCellLocation",
"description": "The reference table cell location from which columns will be inserted. A new column will be inserted to the left (or right) of the column where the reference cell is. If the reference cell is a merged cell, a new column will be inserted to the left (or right) of the merged cell."
}
},
"type": "object"
},
"InsertTableRequest": {
"description": "Inserts a table at the specified location. A newline character will be inserted before the inserted table.",
"properties": {
"columns": {
"description": "The number of columns in the table.",
"format": "int32",
"type": "integer"
},
"endOfSegmentLocation": {
"$ref": "#/$defs/EndOfSegmentLocation",
"description": "Inserts the table at the end of the given header, footer or document body. A newline character will be inserted before the inserted table. Tables cannot be inserted inside a footnote."
},
"location": {
"$ref": "#/$defs/Location",
"description": "Inserts the table at a specific model index. A newline character will be inserted before the inserted table, therefore the table start index will be at the specified location index + 1. The table must be inserted inside the bounds of an existing Paragraph. For instance, it cannot be inserted at a table's start index (i.e. between an existing table and its preceding paragraph). Tables cannot be inserted inside a footnote or equation."
},
"rows": {
"description": "The number of rows in the table.",
"format": "int32",
"type": "integer"
}
},
"type": "object"
},
"InsertTableRowRequest": {
"description": "Inserts an empty row into a table.",
"properties": {
"insertBelow": {
"description": "Whether to insert new row below the reference cell location. - `True`: insert below the cell. - `False`: insert above the cell.",
"type": "boolean"
},
"tableCellLocation": {
"$ref": "#/$defs/TableCellLocation",
"description": "The reference table cell location from which rows will be inserted. A new row will be inserted above (or below) the row where the reference cell is. If the reference cell is a merged cell, a new row will be inserted above (or below) the merged cell."
}
},
"type": "object"
},
"InsertTextRequest": {
"description": "Inserts text at the specified location.",
"properties": {
"endOfSegmentLocation": {
"$ref": "#/$defs/EndOfSegmentLocation",
"description": "Inserts the text at the end of a header, footer, footnote or the document body."
},
"location": {
"$ref": "#/$defs/Location",
"description": "Inserts the text at a specific index in the document. Text must be inserted inside the bounds of an existing Paragraph. For instance, text cannot be inserted at a table's start index (i.e. between the table and its preceding paragraph). The text must be inserted in the preceding paragraph."
},
"text": {
"description": "The text to be inserted. Inserting a newline character will implicitly create a new Paragraph at that index. The paragraph style of the new paragraph will be copied from the paragraph at the current insertion index, including lists and bullets. Text styles for inserted text will be determined automatically, generally preserving the styling of neighboring text. In most cases, the text style for the inserted text will match the text immediately before the insertion index. Some control characters (U+0000-U+0008, U+000C-U+001F) and characters from the Unicode Basic Multilingual Plane Private Use Area (U+E000-U+F8FF) will be stripped out of the inserted text.",
"type": "string"
}
},
"type": "object"
},
"Link": {
"description": "A reference to another portion of a document or an external URL resource.",
"properties": {
"bookmarkId": {
"description": "The ID of a bookmark in this document.",
"type": "string"
},
"headingId": {
"description": "The ID of a heading in this document.",
"type": "string"
},
"url": {
"description": "An external URL.",
"type": "string"
}
},
"type": "object"
},
"Location": {
"description": "A particular location in the document.",
"properties": {
"index": {
"description": "The zero-based index, in UTF-16 code units. The index is relative to the beginning of the segment specified by segment_id.",
"format": "int32",
"type": "integer"
},
"segmentId": {
"description": "The ID of the header, footer or footnote the location is in. An empty segment ID signifies the document's body.",
"type": "string"
}
},
"type": "object"
},
"MergeTableCellsRequest": {
"description": "Merges cells in a Table.",
"properties": {
"tableRange": {
"$ref": "#/$defs/TableRange",
"description": "The table range specifying which cells of the table to merge. Any text in the cells being merged will be concatenated and stored in the \"head\" cell of the range. This is the upper-left cell of the range when the content direction is left to right, and the upper-right cell of the range otherwise. If the range is non-rectangular (which can occur in some cases where the range covers cells that are already merged or where the table is non-rectangular), a 400 bad request error is returned."
}
},
"type": "object"
},
"OptionalColor": {
"description": "A color that can either be fully opaque or fully transparent.",
"properties": {
"color": {
"$ref": "#/$defs/Color",
"description": "If set, this will be used as an opaque color. If unset, this represents a transparent color."
}
},
"type": "object"
},
"ParagraphBorder": {
"description": "A border around a paragraph.",
"properties": {
"color": {
"$ref": "#/$defs/OptionalColor",
"description": "The color of the border."
},
"dashStyle": {
"description": "The dash style of the border.",
"enum": [
"DASH_STYLE_UNSPECIFIED",
"SOLID",
"DOT",
"DASH"
],
"type": "string"
},
"padding": {
"$ref": "#/$defs/Dimension",
"description": "The padding of the border."
},
"width": {
"$ref": "#/$defs/Dimension",
"description": "The width of the border."
}
},
"type": "object"
},
"ParagraphStyle": {
"description": "Styles that apply to a whole paragraph. Inherited paragraph styles are represented as unset fields in this message. A paragraph style's parent depends on where the paragraph style is defined: * The ParagraphStyle on a Paragraph inherits from the paragraph's corresponding named style type. * The ParagraphStyle on a named style inherits from the normal text named style. * The ParagraphStyle of the normal text named style inherits from the default paragraph style in the Docs editor. * The ParagraphStyle on a Paragraph element that's contained in a table may inherit its paragraph style from the table style. If the paragraph style does not inherit from a parent, unsetting fields will revert the style to a value matching the defaults in the Docs editor.",
"properties": {
"alignment": {
"description": "The text alignment for this paragraph.",
"enum": [
"ALIGNMENT_UNSPECIFIED",
"START",
"CENTER",
"END",
"JUSTIFIED"
],
"type": "string"
},
"avoidWidowAndOrphan": {
"description": "Whether to avoid widows and orphans for the paragraph. If unset, the value is inherited from the parent.",
"type": "boolean"
},
"borderBetween": {
"$ref": "#/$defs/ParagraphBorder",
"description": "The border between this paragraph and the next and previous paragraphs. If unset, the value is inherited from the parent. The between border is rendered when the adjacent paragraph has the same border and indent properties. Paragraph borders cannot be partially updated. When changing a paragraph border, the new border must be specified in its entirety."
},
"borderBottom": {
"$ref": "#/$defs/ParagraphBorder",
"description": "The border at the bottom of this paragraph. If unset, the value is inherited from the parent. The bottom border is rendered when the paragraph below has different border and indent properties. Paragraph borders cannot be partially updated. When changing a paragraph border, the new border must be specified in its entirety."
},
"borderLeft": {
"$ref": "#/$defs/ParagraphBorder",
"description": "The border to the left of this paragraph. If unset, the value is inherited from the parent. Paragraph borders cannot be partially updated. When changing a paragraph border, the new border must be specified in its entirety."
},
"borderRight": {
"$ref": "#/$defs/ParagraphBorder",
"description": "The border to the right of this paragraph. If unset, the value is inherited from the parent. Paragraph borders cannot be partially updated. When changing a paragraph border, the new border must be specified in its entirety."
},
"borderTop": {
"$ref": "#/$defs/ParagraphBorder",
"description": "The border at the top of this paragraph. If unset, the value is inherited from the parent. The top border is rendered when the paragraph above has different border and indent properties. Paragraph borders cannot be partially updated. When changing a paragraph border, the new border must be specified in its entirety."
},
"direction": {
"description": "The text direction of this paragraph. If unset, the value defaults to LEFT_TO_RIGHT since paragraph direction is not inherited.",
"enum": [
"CONTENT_DIRECTION_UNSPECIFIED",
"LEFT_TO_RIGHT",
"RIGHT_TO_LEFT"
],
"type": "string"
},
"headingId": {
"description": "The heading ID of the paragraph. If empty, then this paragraph is not a heading. This property is read-only.",
"type": "string"
},
"indentEnd": {
"$ref": "#/$defs/Dimension",
"description": "The amount of indentation for the paragraph on the side that corresponds to the end of the text, based on the current paragraph direction. If unset, the value is inherited from the parent."
},
"indentFirstLine": {
"$ref": "#/$defs/Dimension",
"description": "The amount of indentation for the first line
# --- truncated at 32 KB (78 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/google/refs/heads/main/json-schema/google-batch-update-document-request-schema.json
Work with this as data
Every JSON Schema here is available over the APIs.io API and to AI agents over MCP.
MCP server
One button, every client — Claude, Cursor, VS Code and the rest.
https://apis.io/mcp
Tools for schemas
4 MCP tools reach this
find_json_schemasBrowse and filter every JSON Schema in the catalog.apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.resolveTurn a domain, URL or GitHub org into the provider it belongs to.find_cohortsEvery scored population of providers in the catalog.
Call it yourself
curl for this page
This JSON Schema
curl "https://apis.io/api/v1/json-schemas/google-batch-update-document-request"
All schemas
curl "https://apis.io/api/v1/json-schemas?limit=25"
Discovery needs no key. Ratings and market analysis are Pro.
Get an API key
Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.
A second provider on the same verified email joins the account you already have.