<html><body>
<style>

body, h1, h2, h3, div, span, p, pre, a {
  margin: 0;
  padding: 0;
  border: 0;
  font-weight: inherit;
  font-style: inherit;
  font-size: 100%;
  font-family: inherit;
  vertical-align: baseline;
}

body {
  font-size: 13px;
  padding: 1em;
}

h1 {
  font-size: 26px;
  margin-bottom: 1em;
}

h2 {
  font-size: 24px;
  margin-bottom: 1em;
}

h3 {
  font-size: 20px;
  margin-bottom: 1em;
  margin-top: 1em;
}

pre, code {
  line-height: 1.5;
  font-family: Monaco, 'DejaVu Sans Mono', 'Bitstream Vera Sans Mono', 'Lucida Console', monospace;
}

pre {
  margin-top: 0.5em;
}

h1, h2, h3, p {
  font-family: Arial, sans serif;
}

h1, h2, h3 {
  border-bottom: solid #CCC 1px;
}

.toc_element {
  margin-top: 0.5em;
}

.firstline {
  margin-left: 2 em;
}

.method  {
  margin-top: 1em;
  border: solid 1px #CCC;
  padding: 1em;
  background: #EEE;
}

.details {
  font-weight: bold;
  font-size: 14px;
}

</style>

<h1><a href="docs_v1.html">Google Docs API</a> . <a href="docs_v1.documents.html">documents</a></h1>
<h2>Instance Methods</h2>
<p class="toc_element">
  <code><a href="#batchUpdate">batchUpdate(documentId, body=None, x__xgafv=None)</a></code></p>
<p class="firstline">Applies one or more updates to the document. Each request is validated before being applied. If any request is not valid, then the entire request will fail and nothing will be applied. Some requests have replies to give you some information about how they are applied. Other requests do not need to return information; these each return an empty reply. The order of replies matches that of the requests. For example, suppose you call batchUpdate with four updates, and only the third one returns information. The response would have two empty replies, the reply to the third request, and another empty reply, in that order. Because other users may be editing the document, the document might not exactly reflect your changes: your changes may be altered with respect to collaborator changes. If there are no collaborators, the document should reflect your changes. In any case, the updates in your request are guaranteed to be applied together atomically.</p>
<p class="toc_element">
  <code><a href="#close">close()</a></code></p>
<p class="firstline">Close httplib2 connections.</p>
<p class="toc_element">
  <code><a href="#create">create(body=None, x__xgafv=None)</a></code></p>
<p class="firstline">Creates a blank document using the title given in the request. Other fields in the request, including any provided content, are ignored. Returns the created document.</p>
<p class="toc_element">
  <code><a href="#get">get(documentId, suggestionsViewMode=None, x__xgafv=None)</a></code></p>
<p class="firstline">Gets the latest version of the specified document.</p>
<h3>Method Details</h3>
<div class="method">
    <code class="details" id="batchUpdate">batchUpdate(documentId, body=None, x__xgafv=None)</code>
  <pre>Applies one or more updates to the document. Each request is validated before being applied. If any request is not valid, then the entire request will fail and nothing will be applied. Some requests have replies to give you some information about how they are applied. Other requests do not need to return information; these each return an empty reply. The order of replies matches that of the requests. For example, suppose you call batchUpdate with four updates, and only the third one returns information. The response would have two empty replies, the reply to the third request, and another empty reply, in that order. Because other users may be editing the document, the document might not exactly reflect your changes: your changes may be altered with respect to collaborator changes. If there are no collaborators, the document should reflect your changes. In any case, the updates in your request are guaranteed to be applied together atomically.

Args:
  documentId: string, The ID of the document to update. (required)
  body: object, The request body.
    The object takes the form of:

{ # Request message for BatchUpdateDocument.
    &quot;writeControl&quot;: { # Provides control over how write requests are executed. # Provides control over how write requests are executed.
      &quot;targetRevisionId&quot;: &quot;A String&quot;, # The target revision ID of the document that the write request will be applied to. If collaborator changes have occurred after the document was read using the API, the changes produced by this write request will be transformed against the collaborator changes. This results in a new revision of the document which incorporates both the changes in the request and the collaborator changes, and the Docs server will resolve conflicting changes. When using `target_revision_id`, the API client can be thought of as another collaborator of the document. The target revision ID may only be used to write to recent versions of a document. If the target revision is too far behind the latest revision, the request will not be processed and will return a 400 bad request error and the request should be retried after reading the latest version of the document. In most cases a `revision_id` will remain valid for use as a target revision for several minutes after it is read, but for frequently-edited documents this window may be shorter.
      &quot;requiredRevisionId&quot;: &quot;A String&quot;, # The revision ID of the document that the write request will be applied to. If this is not the latest revision of the document, the request will not be processed and will return a 400 bad request error. When a required revision ID is returned in a response, it indicates the revision ID of the document after the request was applied.
    },
    &quot;requests&quot;: [ # A list of updates to apply to the document.
      { # A single update to apply to a document.
        &quot;deleteContentRange&quot;: { # Deletes content from the document. # Deletes content from the document.
          &quot;range&quot;: { # Specifies a contiguous range of text. # 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.
            &quot;segmentId&quot;: &quot;A String&quot;, # The ID of the header, footer or footnote that this range is contained in. An empty segment ID signifies the document&#x27;s body.
            &quot;startIndex&quot;: 42, # The zero-based start index of this range, in UTF-16 code units. In all current uses, a start index must be provided. This field is an Int32Value in order to accommodate future use cases with open-ended ranges.
            &quot;endIndex&quot;: 42, # The zero-based end index of this range, exclusive, in UTF-16 code units. In all current uses, an end index must be provided. This field is an Int32Value in order to accommodate future use cases with open-ended ranges.
          },
        },
        &quot;insertText&quot;: { # Inserts text at the specified location. # Inserts text at the specified location.
          &quot;text&quot;: &quot;A String&quot;, # 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.
          &quot;location&quot;: { # A particular location in the document. # 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&#x27;s start index (i.e. between the table and its preceding paragraph). The text must be inserted in the preceding paragraph.
            &quot;index&quot;: 42, # The zero-based index, in UTF-16 code units. The index is relative to the beginning of the segment specified by segment_id.
            &quot;segmentId&quot;: &quot;A String&quot;, # The ID of the header, footer or footnote the location is in. An empty segment ID signifies the document&#x27;s body.
          },
          &quot;endOfSegmentLocation&quot;: { # Location at the end of a body, header, footer or footnote. The location is immediately before the last newline in the document segment. # Inserts the text at the end of a header, footer, footnote or the document body.
            &quot;segmentId&quot;: &quot;A String&quot;, # The ID of the header, footer or footnote the location is in. An empty segment ID signifies the document&#x27;s body.
          },
        },
        &quot;createNamedRange&quot;: { # Creates a NamedRange referencing the given range. # Creates a named range.
          &quot;range&quot;: { # Specifies a contiguous range of text. # The range to apply the name to.
            &quot;segmentId&quot;: &quot;A String&quot;, # The ID of the header, footer or footnote that this range is contained in. An empty segment ID signifies the document&#x27;s body.
            &quot;startIndex&quot;: 42, # The zero-based start index of this range, in UTF-16 code units. In all current uses, a start index must be provided. This field is an Int32Value in order to accommodate future use cases with open-ended ranges.
            &quot;endIndex&quot;: 42, # The zero-based end index of this range, exclusive, in UTF-16 code units. In all current uses, an end index must be provided. This field is an Int32Value in order to accommodate future use cases with open-ended ranges.
          },
          &quot;name&quot;: &quot;A String&quot;, # 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.
        },
        &quot;updateTextStyle&quot;: { # Update the styling of text. # Updates the text style at the specified range.
          &quot;textStyle&quot;: { # Represents the styling that can be applied to text. Inherited text styles are represented as unset fields in this message. A text style&#x27;s parent depends on where the text style is defined: * The TextStyle of text in a Paragraph inherits from the paragraph&#x27;s corresponding named style type. * The TextStyle on a named style inherits from the normal text named style. * The TextStyle of the normal text named style inherits from the default text style in the Docs editor. * The TextStyle on a Paragraph element that is contained in a table may inherit its text style from the table style. If the text style does not inherit from a parent, unsetting fields will revert the style to a value matching the defaults in the Docs editor. # The styles to set on the text. If the value for a particular style matches that of the parent, that style will be set to inherit. Certain text style changes may cause other changes in order to to mirror the behavior of the Docs editor. See the documentation of TextStyle for more information.
            &quot;italic&quot;: True or False, # Whether or not the text is italicized.
            &quot;baselineOffset&quot;: &quot;A String&quot;, # The text&#x27;s vertical offset from its normal position. Text with `SUPERSCRIPT` or `SUBSCRIPT` baseline offsets is automatically rendered in a smaller font size, computed based on the `font_size` field. The `font_size` itself is not affected by changes in this field.
            &quot;bold&quot;: True or False, # Whether or not the text is rendered as bold.
            &quot;fontSize&quot;: { # A magnitude in a single direction in the specified units. # The size of the text&#x27;s font.
              &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
              &quot;magnitude&quot;: 3.14, # The magnitude.
            },
            &quot;foregroundColor&quot;: { # A color that can either be fully opaque or fully transparent. # The foreground color of the text. If set, the color is either an RGB color or transparent, depending on the `color` field.
              &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                  &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                  &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                  &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                },
              },
            },
            &quot;backgroundColor&quot;: { # A color that can either be fully opaque or fully transparent. # The background color of the text. If set, the color is either an RGB color or transparent, depending on the `color` field.
              &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                  &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                  &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                  &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                },
              },
            },
            &quot;link&quot;: { # A reference to another portion of a document or an external URL resource. # The hyperlink destination of the text. If unset, there is no link. Links are not inherited from parent text. Changing the link in an update request causes some other changes to the text style of the range: * When setting a link, the text foreground color will be updated to the default link color and the text will be underlined. If these fields are modified in the same request, those values will be used instead of the link defaults. * Setting a link on a text range that overlaps with an existing link will also update the existing link to point to the new URL. * Links are not settable on newline characters. As a result, setting a link on a text range that crosses a paragraph boundary, such as `&quot;ABC\n123&quot;`, will separate the newline character(s) into their own text runs. The link will be applied separately to the runs before and after the newline. * Removing a link will update the text style of the range to match the style of the preceding text (or the default text styles if the preceding text is another link) unless different styles are being set in the same request.
              &quot;bookmarkId&quot;: &quot;A String&quot;, # The ID of a bookmark in this document.
              &quot;url&quot;: &quot;A String&quot;, # An external URL.
              &quot;headingId&quot;: &quot;A String&quot;, # The ID of a heading in this document.
            },
            &quot;strikethrough&quot;: True or False, # Whether or not the text is struck through.
            &quot;weightedFontFamily&quot;: { # Represents a font family and weight of text. # The font family and rendered weight of the text. If an update request specifies values for both `weighted_font_family` and `bold`, the `weighted_font_family` is applied first, then `bold`. If `weighted_font_family#weight` is not set, it defaults to `400`. If `weighted_font_family` is set, then `weighted_font_family#font_family` must also be set with a non-empty value. Otherwise, a 400 bad request error is returned.
              &quot;fontFamily&quot;: &quot;A String&quot;, # The font family of the text. The font family can be any font from the Font menu in Docs or from [Google Fonts] (https://fonts.google.com/). If the font name is unrecognized, the text is rendered in `Arial`.
              &quot;weight&quot;: 42, # The weight of the font. This field can have any value that is a multiple of `100` between `100` and `900`, inclusive. This range corresponds to the numerical values described in the CSS 2.1 Specification, [section 15.6](https://www.w3.org/TR/CSS21/fonts.html#font-boldness), with non-numerical values disallowed. The default value is `400` (&quot;normal&quot;). The font weight makes up just one component of the rendered font weight. The rendered weight is determined by a combination of the `weight` and the text style&#x27;s resolved `bold` value, after accounting for inheritance: * If the text is bold and the weight is less than `400`, the rendered weight is 400. * If the text is bold and the weight is greater than or equal to `400` but is less than `700`, the rendered weight is `700`. * If the weight is greater than or equal to `700`, the rendered weight is equal to the weight. * If the text is not bold, the rendered weight is equal to the weight.
            },
            &quot;underline&quot;: True or False, # Whether or not the text is underlined.
            &quot;smallCaps&quot;: True or False, # Whether or not the text is in small capital letters.
          },
          &quot;range&quot;: { # Specifies a contiguous range of text. # The range of text to style. The range may be extended to include adjacent newlines. If the range fully contains a paragraph belonging to a list, the paragraph&#x27;s bullet is also updated with the matching text style. Ranges cannot be inserted inside a relative UpdateTextStyleRequest.
            &quot;segmentId&quot;: &quot;A String&quot;, # The ID of the header, footer or footnote that this range is contained in. An empty segment ID signifies the document&#x27;s body.
            &quot;startIndex&quot;: 42, # The zero-based start index of this range, in UTF-16 code units. In all current uses, a start index must be provided. This field is an Int32Value in order to accommodate future use cases with open-ended ranges.
            &quot;endIndex&quot;: 42, # The zero-based end index of this range, exclusive, in UTF-16 code units. In all current uses, an end index must be provided. This field is an Int32Value in order to accommodate future use cases with open-ended ranges.
          },
          &quot;fields&quot;: &quot;A String&quot;, # The fields that should be updated. At least one field must be specified. The root `text_style` is implied and should not be specified. A single `&quot;*&quot;` can be used as short-hand for listing every field. For example, to update the text style to bold, set `fields` to `&quot;bold&quot;`. To reset a property to its default value, include its field name in the field mask but leave the field itself unset.
        },
        &quot;deleteTableColumn&quot;: { # Deletes a column from a table. # Deletes a column from a table.
          &quot;tableCellLocation&quot;: { # Location of a single cell within a table. # 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.
            &quot;columnIndex&quot;: 42, # The zero-based column index. For example, the second column in the table has a column index of 1.
            &quot;tableStartLocation&quot;: { # A particular location in the document. # The location where the table starts in the document.
              &quot;index&quot;: 42, # The zero-based index, in UTF-16 code units. The index is relative to the beginning of the segment specified by segment_id.
              &quot;segmentId&quot;: &quot;A String&quot;, # The ID of the header, footer or footnote the location is in. An empty segment ID signifies the document&#x27;s body.
            },
            &quot;rowIndex&quot;: 42, # The zero-based row index. For example, the second row in the table has a row index of 1.
          },
        },
        &quot;mergeTableCells&quot;: { # Merges cells in a Table. # Merges cells in a table.
          &quot;tableRange&quot;: { # A table range represents a reference to a subset of a table. It&#x27;s important to note that the cells specified by a table range do not necessarily form a rectangle. For example, let&#x27;s say we have a 3 x 3 table where all the cells of the last row are merged together. The table looks like this: [ ] A table range with table cell location = (table_start_location, row = 0, column = 0), row span = 3 and column span = 2 specifies the following cells: x x [ x x x ] # 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 &quot;head&quot; 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.
            &quot;rowSpan&quot;: 42, # The row span of the table range.
            &quot;tableCellLocation&quot;: { # Location of a single cell within a table. # The cell location where the table range starts.
              &quot;columnIndex&quot;: 42, # The zero-based column index. For example, the second column in the table has a column index of 1.
              &quot;tableStartLocation&quot;: { # A particular location in the document. # The location where the table starts in the document.
                &quot;index&quot;: 42, # The zero-based index, in UTF-16 code units. The index is relative to the beginning of the segment specified by segment_id.
                &quot;segmentId&quot;: &quot;A String&quot;, # The ID of the header, footer or footnote the location is in. An empty segment ID signifies the document&#x27;s body.
              },
              &quot;rowIndex&quot;: 42, # The zero-based row index. For example, the second row in the table has a row index of 1.
            },
            &quot;columnSpan&quot;: 42, # The column span of the table range.
          },
        },
        &quot;updateParagraphStyle&quot;: { # Update the styling of all paragraphs that overlap with the given range. # Updates the paragraph style at the specified range.
          &quot;paragraphStyle&quot;: { # Styles that apply to a whole paragraph. Inherited paragraph styles are represented as unset fields in this message. A paragraph style&#x27;s parent depends on where the paragraph style is defined: * The ParagraphStyle on a Paragraph inherits from the paragraph&#x27;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 is 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. # The styles to set on the paragraphs. Certain paragraph style changes may cause other changes in order to mirror the behavior of the Docs editor. See the documentation of ParagraphStyle for more information.
            &quot;borderRight&quot;: { # A border around a paragraph. # The border to the right of this paragraph. If unset, the value is inherited from the parent. Paragraph borders cannot be partially updated. When making changes to a paragraph border the new border must be specified in its entirety.
              &quot;color&quot;: { # A color that can either be fully opaque or fully transparent. # The color of the border.
                &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                  &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                    &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                    &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                    &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                  },
                },
              },
              &quot;width&quot;: { # A magnitude in a single direction in the specified units. # The width of the border.
                &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                &quot;magnitude&quot;: 3.14, # The magnitude.
              },
              &quot;padding&quot;: { # A magnitude in a single direction in the specified units. # The padding of the border.
                &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                &quot;magnitude&quot;: 3.14, # The magnitude.
              },
              &quot;dashStyle&quot;: &quot;A String&quot;, # The dash style of the border.
            },
            &quot;indentFirstLine&quot;: { # A magnitude in a single direction in the specified units. # The amount of indentation for the first line of the paragraph. If unset, the value is inherited from the parent.
              &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
              &quot;magnitude&quot;: 3.14, # The magnitude.
            },
            &quot;alignment&quot;: &quot;A String&quot;, # The text alignment for this paragraph.
            &quot;lineSpacing&quot;: 3.14, # The amount of space between lines, as a percentage of normal, where normal is represented as 100.0. If unset, the value is inherited from the parent.
            &quot;keepLinesTogether&quot;: True or False, # Whether all lines of the paragraph should be laid out on the same page or column if possible. If unset, the value is inherited from the parent.
            &quot;avoidWidowAndOrphan&quot;: True or False, # Whether to avoid widows and orphans for the paragraph. If unset, the value is inherited from the parent.
            &quot;spaceBelow&quot;: { # A magnitude in a single direction in the specified units. # The amount of extra space below the paragraph. If unset, the value is inherited from the parent.
              &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
              &quot;magnitude&quot;: 3.14, # The magnitude.
            },
            &quot;borderBetween&quot;: { # A border around a paragraph. # 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 making changes to a paragraph border the new border must be specified in its entirety.
              &quot;color&quot;: { # A color that can either be fully opaque or fully transparent. # The color of the border.
                &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                  &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                    &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                    &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                    &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                  },
                },
              },
              &quot;width&quot;: { # A magnitude in a single direction in the specified units. # The width of the border.
                &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                &quot;magnitude&quot;: 3.14, # The magnitude.
              },
              &quot;padding&quot;: { # A magnitude in a single direction in the specified units. # The padding of the border.
                &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                &quot;magnitude&quot;: 3.14, # The magnitude.
              },
              &quot;dashStyle&quot;: &quot;A String&quot;, # The dash style of the border.
            },
            &quot;headingId&quot;: &quot;A String&quot;, # The heading ID of the paragraph. If empty, then this paragraph is not a heading. This property is read-only.
            &quot;spaceAbove&quot;: { # A magnitude in a single direction in the specified units. # The amount of extra space above the paragraph. If unset, the value is inherited from the parent.
              &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
              &quot;magnitude&quot;: 3.14, # The magnitude.
            },
            &quot;direction&quot;: &quot;A String&quot;, # The text direction of this paragraph. If unset, the value defaults to LEFT_TO_RIGHT since paragraph direction is not inherited.
            &quot;namedStyleType&quot;: &quot;A String&quot;, # The named style type of the paragraph. Since updating the named style type affects other properties within ParagraphStyle, the named style type is applied before the other properties are updated.
            &quot;tabStops&quot;: [ # A list of the tab stops for this paragraph. The list of tab stops is not inherited. This property is read-only.
              { # A tab stop within a paragraph.
                &quot;offset&quot;: { # A magnitude in a single direction in the specified units. # The offset between this tab stop and the start margin.
                  &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                  &quot;magnitude&quot;: 3.14, # The magnitude.
                },
                &quot;alignment&quot;: &quot;A String&quot;, # The alignment of this tab stop. If unset, the value defaults to START.
              },
            ],
            &quot;indentStart&quot;: { # A magnitude in a single direction in the specified units. # The amount of indentation for the paragraph on the side that corresponds to the start of the text, based on the current paragraph direction. If unset, the value is inherited from the parent.
              &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
              &quot;magnitude&quot;: 3.14, # The magnitude.
            },
            &quot;keepWithNext&quot;: True or False, # Whether at least a part of this paragraph should be laid out on the same page or column as the next paragraph if possible. If unset, the value is inherited from the parent.
            &quot;borderTop&quot;: { # A border around a paragraph. # 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 making changes to a paragraph border the new border must be specified in its entirety.
              &quot;color&quot;: { # A color that can either be fully opaque or fully transparent. # The color of the border.
                &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                  &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                    &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                    &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                    &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                  },
                },
              },
              &quot;width&quot;: { # A magnitude in a single direction in the specified units. # The width of the border.
                &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                &quot;magnitude&quot;: 3.14, # The magnitude.
              },
              &quot;padding&quot;: { # A magnitude in a single direction in the specified units. # The padding of the border.
                &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                &quot;magnitude&quot;: 3.14, # The magnitude.
              },
              &quot;dashStyle&quot;: &quot;A String&quot;, # The dash style of the border.
            },
            &quot;borderLeft&quot;: { # A border around a paragraph. # The border to the left of this paragraph. If unset, the value is inherited from the parent. Paragraph borders cannot be partially updated. When making changes to a paragraph border the new border must be specified in its entirety.
              &quot;color&quot;: { # A color that can either be fully opaque or fully transparent. # The color of the border.
                &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                  &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                    &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                    &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                    &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                  },
                },
              },
              &quot;width&quot;: { # A magnitude in a single direction in the specified units. # The width of the border.
                &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                &quot;magnitude&quot;: 3.14, # The magnitude.
              },
              &quot;padding&quot;: { # A magnitude in a single direction in the specified units. # The padding of the border.
                &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                &quot;magnitude&quot;: 3.14, # The magnitude.
              },
              &quot;dashStyle&quot;: &quot;A String&quot;, # The dash style of the border.
            },
            &quot;borderBottom&quot;: { # A border around a paragraph. # 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 making changes to a paragraph border the new border must be specified in its entirety.
              &quot;color&quot;: { # A color that can either be fully opaque or fully transparent. # The color of the border.
                &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                  &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                    &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                    &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                    &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                  },
                },
              },
              &quot;width&quot;: { # A magnitude in a single direction in the specified units. # The width of the border.
                &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                &quot;magnitude&quot;: 3.14, # The magnitude.
              },
              &quot;padding&quot;: { # A magnitude in a single direction in the specified units. # The padding of the border.
                &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                &quot;magnitude&quot;: 3.14, # The magnitude.
              },
              &quot;dashStyle&quot;: &quot;A String&quot;, # The dash style of the border.
            },
            &quot;shading&quot;: { # The shading of a paragraph. # The shading of the paragraph. If unset, the value is inherited from the parent.
              &quot;backgroundColor&quot;: { # A color that can either be fully opaque or fully transparent. # The background color of this paragraph shading.
                &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                  &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                    &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                    &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                    &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                  },
                },
              },
            },
            &quot;indentEnd&quot;: { # A magnitude in a single direction in the specified units. # 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.
              &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
              &quot;magnitude&quot;: 3.14, # The magnitude.
            },
            &quot;spacingMode&quot;: &quot;A String&quot;, # The spacing mode for the paragraph.
          },
          &quot;fields&quot;: &quot;A String&quot;, # The fields that should be updated. At least one field must be specified. The root `paragraph_style` is implied and should not be specified. For example, to update the paragraph style&#x27;s alignment property, set `fields` to `&quot;alignment&quot;`. To reset a property to its default value, include its field name in the field mask but leave the field itself unset.
          &quot;range&quot;: { # Specifies a contiguous range of text. # The range overlapping the paragraphs to style.
            &quot;segmentId&quot;: &quot;A String&quot;, # The ID of the header, footer or footnote that this range is contained in. An empty segment ID signifies the document&#x27;s body.
            &quot;startIndex&quot;: 42, # The zero-based start index of this range, in UTF-16 code units. In all current uses, a start index must be provided. This field is an Int32Value in order to accommodate future use cases with open-ended ranges.
            &quot;endIndex&quot;: 42, # The zero-based end index of this range, exclusive, in UTF-16 code units. In all current uses, an end index must be provided. This field is an Int32Value in order to accommodate future use cases with open-ended ranges.
          },
        },
        &quot;insertPageBreak&quot;: { # Inserts a page break followed by a newline at the specified location. # Inserts a page break at the specified location.
          &quot;location&quot;: { # A particular location in the document. # 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&#x27;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.
            &quot;index&quot;: 42, # The zero-based index, in UTF-16 code units. The index is relative to the beginning of the segment specified by segment_id.
            &quot;segmentId&quot;: &quot;A String&quot;, # The ID of the header, footer or footnote the location is in. An empty segment ID signifies the document&#x27;s body.
          },
          &quot;endOfSegmentLocation&quot;: { # Location at the end of a body, header, footer or footnote. The location is immediately before the last newline in the document segment. # 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.
            &quot;segmentId&quot;: &quot;A String&quot;, # The ID of the header, footer or footnote the location is in. An empty segment ID signifies the document&#x27;s body.
          },
        },
        &quot;replaceImage&quot;: { # Replaces an existing image with a new image. Replacing an image removes some image effects from the existing image in order to mirror the behavior of the Docs editor. # Replaces an image in the document.
          &quot;uri&quot;: &quot;A String&quot;, # The URI of the new image. 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 can be at most 2 kB in length. The URI itself is saved with the image, and exposed via the ImageProperties.source_uri field.
          &quot;imageReplaceMethod&quot;: &quot;A String&quot;, # The replacement method.
          &quot;imageObjectId&quot;: &quot;A String&quot;, # The ID of the existing image that will be replaced.
        },
        &quot;deleteHeader&quot;: { # Deletes a Header from the document. # Deletes a header from the document.
          &quot;headerId&quot;: &quot;A String&quot;, # 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.
        },
        &quot;createHeader&quot;: { # Creates a Header. The new header is applied to the SectionStyle at the location of the SectionBreak if specificed, otherwise it is applied to the DocumentStyle. If a header of the specified type already exists, a 400 bad request error is returned. # Creates a header.
          &quot;type&quot;: &quot;A String&quot;, # The type of header to create.
          &quot;sectionBreakLocation&quot;: { # A particular location in the document. # The location of the SectionBreak which begins the section this header should belong to. If `section_break_location&#x27; is unset or if it refers to the first section break in the document body, the header applies to the DocumentStyle
            &quot;index&quot;: 42, # The zero-based index, in UTF-16 code units. The index is relative to the beginning of the segment specified by segment_id.
            &quot;segmentId&quot;: &quot;A String&quot;, # The ID of the header, footer or footnote the location is in. An empty segment ID signifies the document&#x27;s body.
          },
        },
        &quot;unmergeTableCells&quot;: { # Unmerges cells in a Table. # Unmerges cells in a table.
          &quot;tableRange&quot;: { # A table range represents a reference to a subset of a table. It&#x27;s important to note that the cells specified by a table range do not necessarily form a rectangle. For example, let&#x27;s say we have a 3 x 3 table where all the cells of the last row are merged together. The table looks like this: [ ] A table range with table cell location = (table_start_location, row = 0, column = 0), row span = 3 and column span = 2 specifies the following cells: x x [ x x x ] # The table range specifying which cells of the table to unmerge. All merged cells in this range will be unmerged, and cells that are already unmerged will not be affected. If the range has no merged cells, the request will do nothing. If there is text in any of the merged cells, the text will remain in the &quot;head&quot; cell of the resulting block of unmerged cells. The &quot;head&quot; cell is the upper-left cell when the content direction is from left to right, and the upper-right otherwise.
            &quot;rowSpan&quot;: 42, # The row span of the table range.
            &quot;tableCellLocation&quot;: { # Location of a single cell within a table. # The cell location where the table range starts.
              &quot;columnIndex&quot;: 42, # The zero-based column index. For example, the second column in the table has a column index of 1.
              &quot;tableStartLocation&quot;: { # A particular location in the document. # The location where the table starts in the document.
                &quot;index&quot;: 42, # The zero-based index, in UTF-16 code units. The index is relative to the beginning of the segment specified by segment_id.
                &quot;segmentId&quot;: &quot;A String&quot;, # The ID of the header, footer or footnote the location is in. An empty segment ID signifies the document&#x27;s body.
              },
              &quot;rowIndex&quot;: 42, # The zero-based row index. For example, the second row in the table has a row index of 1.
            },
            &quot;columnSpan&quot;: 42, # The column span of the table range.
          },
        },
        &quot;replaceNamedRangeContent&quot;: { # Replaces the contents of the specified NamedRange or NamedRanges with the given replacement content. Note that an individual NamedRange may consist of multiple discontinuous ranges. In this case, only the content in the first range will be replaced. The other ranges and their content will be deleted. In cases where replacing or deleting any ranges would result in an invalid document structure, a 400 bad request error is returned. # Replaces the content in a named range.
          &quot;namedRangeId&quot;: &quot;A String&quot;, # The ID of the named range whose content will be replaced. If there is no named range with the given ID a 400 bad request error is returned.
          &quot;namedRangeName&quot;: &quot;A String&quot;, # The name of the NamedRanges whose content will be replaced. If there are multiple named ranges with the given name, then the content of each one will be replaced. If there are no named ranges with the given name, then the request will be a no-op.
          &quot;text&quot;: &quot;A String&quot;, # Replaces the content of the specified named range(s) with the given text.
        },
        &quot;insertSectionBreak&quot;: { # Inserts a section break at the given location. A newline character will be inserted before the section break. # Inserts a section break at the specified location.
          &quot;location&quot;: { # A particular location in the document. # 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&#x27;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.
            &quot;index&quot;: 42, # The zero-based index, in UTF-16 code units. The index is relative to the beginning of the segment specified by segment_id.
            &quot;segmentId&quot;: &quot;A String&quot;, # The ID of the header, footer or footnote the location is in. An empty segment ID signifies the document&#x27;s body.
          },
          &quot;endOfSegmentLocation&quot;: { # Location at the end of a body, header, footer or footnote. The location is immediately before the last newline in the document segment. # 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.
            &quot;segmentId&quot;: &quot;A String&quot;, # The ID of the header, footer or footnote the location is in. An empty segment ID signifies the document&#x27;s body.
          },
          &quot;sectionType&quot;: &quot;A String&quot;, # The type of section to insert.
        },
        &quot;updateDocumentStyle&quot;: { # Updates the DocumentStyle. # Updates the style of the document.
          &quot;documentStyle&quot;: { # The style of the document. # The styles to set on the document. Certain document style changes may cause other changes in order to mirror the behavior of the Docs editor. See the documentation of DocumentStyle for more information.
            &quot;useFirstPageHeaderFooter&quot;: True or False, # Indicates whether to use the first page header / footer IDs for the first page.
            &quot;marginBottom&quot;: { # A magnitude in a single direction in the specified units. # The bottom page margin. Updating the bottom page margin on the document style clears the bottom page margin on all section styles.
              &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
              &quot;magnitude&quot;: 3.14, # The magnitude.
            },
            &quot;pageSize&quot;: { # A width and height. # The size of a page in the document.
              &quot;width&quot;: { # A magnitude in a single direction in the specified units. # The width of the object.
                &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                &quot;magnitude&quot;: 3.14, # The magnitude.
              },
              &quot;height&quot;: { # A magnitude in a single direction in the specified units. # The height of the object.
                &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                &quot;magnitude&quot;: 3.14, # The magnitude.
              },
            },
            &quot;marginLeft&quot;: { # A magnitude in a single direction in the specified units. # 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.
              &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
              &quot;magnitude&quot;: 3.14, # The magnitude.
            },
            &quot;defaultFooterId&quot;: &quot;A String&quot;, # The ID of the default footer. If not set, there is no default footer. This property is read-only.
            &quot;marginHeader&quot;: { # A magnitude in a single direction in the specified units. # The amount of space between the top of the page and the contents of the header.
              &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
              &quot;magnitude&quot;: 3.14, # The magnitude.
            },
            &quot;marginFooter&quot;: { # A magnitude in a single direction in the specified units. # The amount of space between the bottom of the page and the contents of the footer.
              &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
              &quot;magnitude&quot;: 3.14, # The magnitude.
            },
            &quot;firstPageHeaderId&quot;: &quot;A String&quot;, # 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 is no first page header. This property is read-only.
            &quot;useCustomHeaderFooterMargins&quot;: True or False, # 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.
            &quot;defaultHeaderId&quot;: &quot;A String&quot;, # The ID of the default header. If not set, there is no default header. This property is read-only.
            &quot;evenPageFooterId&quot;: &quot;A String&quot;, # 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 is no even page footer. This property is read-only.
            &quot;evenPageHeaderId&quot;: &quot;A String&quot;, # 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 is no even page header. This property is read-only.
            &quot;marginTop&quot;: { # A magnitude in a single direction in the specified units. # The top page margin. Updating the top page margin on the document style clears the top page margin on all section styles.
              &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
              &quot;magnitude&quot;: 3.14, # The magnitude.
            },
            &quot;useEvenPageHeaderFooter&quot;: True or False, # Indicates whether to use the even page header / footer IDs for the even pages.
            &quot;pageNumberStart&quot;: 42, # The page number from which to start counting the number of pages.
            &quot;marginRight&quot;: { # A magnitude in a single direction in the specified units. # 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.
              &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
              &quot;magnitude&quot;: 3.14, # The magnitude.
            },
            &quot;firstPageFooterId&quot;: &quot;A String&quot;, # 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 is no first page footer. This property is read-only.
            &quot;background&quot;: { # Represents the background of a document. # The background of the document. Documents cannot have a transparent background color.
              &quot;color&quot;: { # A color that can either be fully opaque or fully transparent. # The background color.
                &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                  &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                    &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                    &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                    &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                  },
                },
              },
            },
          },
          &quot;fields&quot;: &quot;A String&quot;, # The fields that should be updated. At least one field must be specified. The root `document_style` is implied and should not be specified. A single `&quot;*&quot;` can be used as short-hand for listing every field. For example to update the background, set `fields` to `&quot;background&quot;`.
        },
        &quot;insertTableRow&quot;: { # Inserts an empty row into a table. # Inserts an empty row into a table.
          &quot;tableCellLocation&quot;: { # Location of a single cell within a table. # 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.
            &quot;columnIndex&quot;: 42, # The zero-based column index. For example, the second column in the table has a column index of 1.
            &quot;tableStartLocation&quot;: { # A particular location in the document. # The location where the table starts in the document.
              &quot;index&quot;: 42, # The zero-based index, in UTF-16 code units. The index is relative to the beginning of the segment specified by segment_id.
              &quot;segmentId&quot;: &quot;A String&quot;, # The ID of the header, footer or footnote the location is in. An empty segment ID signifies the document&#x27;s body.
            },
            &quot;rowIndex&quot;: 42, # The zero-based row index. For example, the second row in the table has a row index of 1.
          },
          &quot;insertBelow&quot;: True or False, # Whether to insert new row below the reference cell location. - `True`: insert below the cell. - `False`: insert above the cell.
        },
        &quot;createParagraphBullets&quot;: { # 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. # Creates bullets for paragraphs.
          &quot;bulletPreset&quot;: &quot;A String&quot;, # The kinds of bullet glyphs to be used.
          &quot;range&quot;: { # Specifies a contiguous range of text. # The range to apply the bullet preset to.
            &quot;segmentId&quot;: &quot;A String&quot;, # The ID of the header, footer or footnote that this range is contained in. An empty segment ID signifies the document&#x27;s body.
            &quot;startIndex&quot;: 42, # The zero-based start index of this range, in UTF-16 code units. In all current uses, a start index must be provided. This field is an Int32Value in order to accommodate future use cases with open-ended ranges.
            &quot;endIndex&quot;: 42, # The zero-based end index of this range, exclusive, in UTF-16 code units. In all current uses, an end index must be provided. This field is an Int32Value in order to accommodate future use cases with open-ended ranges.
          },
        },
        &quot;deletePositionedObject&quot;: { # Deletes a PositionedObject from the document. # Deletes a positioned object from the document.
          &quot;objectId&quot;: &quot;A String&quot;, # The ID of the positioned object to delete.
        },
        &quot;deleteFooter&quot;: { # Deletes a Footer from the document. # Deletes a footer from the document.
          &quot;footerId&quot;: &quot;A String&quot;, # 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.
        },
        &quot;updateSectionStyle&quot;: { # Updates the SectionStyle. # Updates the section style of the specified range.
          &quot;fields&quot;: &quot;A String&quot;, # The fields that should be updated. At least one field must be specified. The root `section_style` is implied and must not be specified. A single `&quot;*&quot;` can be used as short-hand for listing every field. For example to update the left margin, set `fields` to `&quot;margin_left&quot;`.
          &quot;range&quot;: { # Specifies a contiguous range of text. # The range overlapping the sections to style. Because section breaks can only be inserted inside the body, the segment ID field must be empty.
            &quot;segmentId&quot;: &quot;A String&quot;, # The ID of the header, footer or footnote that this range is contained in. An empty segment ID signifies the document&#x27;s body.
            &quot;startIndex&quot;: 42, # The zero-based start index of this range, in UTF-16 code units. In all current uses, a start index must be provided. This field is an Int32Value in order to accommodate future use cases with open-ended ranges.
            &quot;endIndex&quot;: 42, # The zero-based end index of this range, exclusive, in UTF-16 code units. In all current uses, an end index must be provided. This field is an Int32Value in order to accommodate future use cases with open-ended ranges.
          },
          &quot;sectionStyle&quot;: { # The styling that applies to a section. # The styles to be set on the section. Certain section style changes may cause other changes in order to mirror the behavior of the Docs editor. See the documentation of SectionStyle for more information.
            &quot;marginLeft&quot;: { # A magnitude in a single direction in the specified units. # The left page margin of the section. If unset, uses margin_left from DocumentStyle. Updating left margin causes columns in this section to resize. Since the margin affects column width, it is applied before column properties. When updating this property, setting a concrete value is required. Unsetting this property results in a 400 bad request error.
              &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
              &quot;magnitude&quot;: 3.14, # The magnitude.
            },
            &quot;sectionType&quot;: &quot;A String&quot;, # Output only. The type of section.
            &quot;evenPageHeaderId&quot;: &quot;A String&quot;, # The ID of the header used only for even pages. If the value of DocumentStyle&#x27;s use_even_page_header_footer is true, this value is used for the headers on even pages in the section. If it is false, the headers on even pages uses the default_header_id. If unset, the value inherits from the previous SectionBreak&#x27;s SectionStyle. If the value is unset in the first SectionBreak, it inherits from DocumentStyle&#x27;s even_page_header_id. This property is read-only.
            &quot;useFirstPageHeaderFooter&quot;: True or False, # Indicates whether to use the first page header / footer IDs for the first page of the section. If unset, it inherits from DocumentStyle&#x27;s use_first_page_header_footer for the first section. If the value is unset for subsequent sectors, it should be interpreted as false. When updating this property, setting a concrete value is required. Unsetting this property results in a 400 bad request error.
            &quot;marginHeader&quot;: { # A magnitude in a single direction in the specified units. # The header margin of the section. If unset, uses margin_header from DocumentStyle. If updated, use_custom_header_footer_margins is set to true on DocumentStyle. The value of use_custom_header_footer_margins on DocumentStyle indicates if a header margin is being respected for this section. When updating this property, setting a concrete value is required. Unsetting this property results in a 400 bad request error.
              &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
              &quot;magnitude&quot;: 3.14, # The magnitude.
            },
            &quot;firstPageFooterId&quot;: &quot;A String&quot;, # The ID of the footer used only for the first page of the section. If use_first_page_header_footer is true, this value is used for the footer on the first page of the section. If it is false, the footer on the first page of the section uses the default_footer_id. If unset, the value inherits from the previous SectionBreak&#x27;s SectionStyle. If the value is unset in the first SectionBreak, it inherits from DocumentStyle&#x27;s first_page_footer_id. This property is read-only.
            &quot;firstPageHeaderId&quot;: &quot;A String&quot;, # The ID of the header used only for the first page of the section. If use_first_page_header_footer is true, this value is used for the header on the first page of the section. If it is false, the header on the first page of the section uses the default_header_id. If unset, the value inherits from the previous SectionBreak&#x27;s SectionStyle. If the value is unset in the first SectionBreak, it inherits from DocumentStyle&#x27;s first_page_header_id. This property is read-only.
            &quot;columnSeparatorStyle&quot;: &quot;A String&quot;, # The style of column separators. This style can be set even when there is one column in the section. When updating this property, setting a concrete value is required. Unsetting this property results in a 400 bad request error.
            &quot;marginBottom&quot;: { # A magnitude in a single direction in the specified units. # The bottom page margin of the section. If unset, uses margin_bottom from DocumentStyle. When updating this property, setting a concrete value is required. Unsetting this property results in a 400 bad request error.
              &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
              &quot;magnitude&quot;: 3.14, # The magnitude.
            },
            &quot;marginFooter&quot;: { # A magnitude in a single direction in the specified units. # The footer margin of the section. If unset, uses margin_footer from DocumentStyle. If updated, use_custom_header_footer_margins is set to true on DocumentStyle. The value of use_custom_header_footer_margins on DocumentStyle indicates if a footer margin is being respected for this section When updating this property, setting a concrete value is required. Unsetting this property results in a 400 bad request error.
              &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
              &quot;magnitude&quot;: 3.14, # The magnitude.
            },
            &quot;defaultFooterId&quot;: &quot;A String&quot;, # The ID of the default footer. If unset, the value inherits from the previous SectionBreak&#x27;s SectionStyle. If the value is unset in the first SectionBreak, it inherits from DocumentStyle&#x27;s default_footer_id. This property is read-only.
            &quot;marginTop&quot;: { # A magnitude in a single direction in the specified units. # The top page margin of the section. If unset, uses margin_top from DocumentStyle. When updating this property, setting a concrete value is required. Unsetting this property results in a 400 bad request error.
              &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
              &quot;magnitude&quot;: 3.14, # The magnitude.
            },
            &quot;contentDirection&quot;: &quot;A String&quot;, # The content direction of this section. If unset, the value defaults to LEFT_TO_RIGHT. When updating this property, setting a concrete value is required. Unsetting this property results in a 400 bad request error.
            &quot;evenPageFooterId&quot;: &quot;A String&quot;, # The ID of the footer used only for even pages. If the value of DocumentStyle&#x27;s use_even_page_header_footer is true, this value is used for the footers on even pages in the section. If it is false, the footers on even pages uses the default_footer_id. If unset, the value inherits from the previous SectionBreak&#x27;s SectionStyle. If the value is unset in the first SectionBreak, it inherits from DocumentStyle&#x27;s even_page_footer_id. This property is read-only.
            &quot;marginRight&quot;: { # A magnitude in a single direction in the specified units. # The right page margin of the section. If unset, uses margin_right from DocumentStyle. Updating right margin causes columns in this section to resize. Since the margin affects column width, it is applied before column properties. When updating this property, setting a concrete value is required. Unsetting this property results in a 400 bad request error.
              &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
              &quot;magnitude&quot;: 3.14, # The magnitude.
            },
            &quot;defaultHeaderId&quot;: &quot;A String&quot;, # The ID of the default header. If unset, the value inherits from the previous SectionBreak&#x27;s SectionStyle. If the value is unset in the first SectionBreak, it inherits from DocumentStyle&#x27;s default_header_id. This property is read-only.
            &quot;pageNumberStart&quot;: 42, # The page number from which to start counting the number of pages for this section. If unset, page numbering continues from the previous section. If the value is unset in the first SectionBreak, refer to DocumentStyle&#x27;s page_number_start. When updating this property, setting a concrete value is required. Unsetting this property results in a 400 bad request error.
            &quot;columnProperties&quot;: [ # The section&#x27;s columns properties. If empty, the section contains one column with the default properties in the Docs editor. A section can be updated to have no more than three columns. When updating this property, setting a concrete value is required. Unsetting this property will result in a 400 bad request error.
              { # Properties that apply to a section&#x27;s column.
                &quot;paddingEnd&quot;: { # A magnitude in a single direction in the specified units. # The padding at the end of the column.
                  &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                  &quot;magnitude&quot;: 3.14, # The magnitude.
                },
                &quot;width&quot;: { # A magnitude in a single direction in the specified units. # Output only. The width of the column.
                  &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                  &quot;magnitude&quot;: 3.14, # The magnitude.
                },
              },
            ],
          },
        },
        &quot;insertInlineImage&quot;: { # Inserts an InlineObject containing an image at the given location. # Inserts an inline image at the specified location.
          &quot;endOfSegmentLocation&quot;: { # Location at the end of a body, header, footer or footnote. The location is immediately before the last newline in the document segment. # Inserts the text at the end of a header, footer or the document body. Inline images cannot be inserted inside a footnote.
            &quot;segmentId&quot;: &quot;A String&quot;, # The ID of the header, footer or footnote the location is in. An empty segment ID signifies the document&#x27;s body.
          },
          &quot;location&quot;: { # A particular location in the document. # 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&#x27;s start index (i.e. between the table and its preceding paragraph). Inline images cannot be inserted inside a footnote or equation.
            &quot;index&quot;: 42, # The zero-based index, in UTF-16 code units. The index is relative to the beginning of the segment specified by segment_id.
            &quot;segmentId&quot;: &quot;A String&quot;, # The ID of the header, footer or footnote the location is in. An empty segment ID signifies the document&#x27;s body.
          },
          &quot;uri&quot;: &quot;A String&quot;, # 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 can be at most 2 kB in length. The URI itself is saved with the image, and exposed via the ImageProperties.content_uri field.
          &quot;objectSize&quot;: { # A width and height. # 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.
            &quot;width&quot;: { # A magnitude in a single direction in the specified units. # The width of the object.
              &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
              &quot;magnitude&quot;: 3.14, # The magnitude.
            },
            &quot;height&quot;: { # A magnitude in a single direction in the specified units. # The height of the object.
              &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
              &quot;magnitude&quot;: 3.14, # The magnitude.
            },
          },
        },
        &quot;deleteNamedRange&quot;: { # Deletes a NamedRange. # Deletes a named range.
          &quot;name&quot;: &quot;A String&quot;, # The name of the range(s) to delete. All named ranges with the given name will be deleted.
          &quot;namedRangeId&quot;: &quot;A String&quot;, # The ID of the named range to delete.
        },
        &quot;deleteParagraphBullets&quot;: { # 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. # Deletes bullets from paragraphs.
          &quot;range&quot;: { # Specifies a contiguous range of text. # The range to delete bullets from.
            &quot;segmentId&quot;: &quot;A String&quot;, # The ID of the header, footer or footnote that this range is contained in. An empty segment ID signifies the document&#x27;s body.
            &quot;startIndex&quot;: 42, # The zero-based start index of this range, in UTF-16 code units. In all current uses, a start index must be provided. This field is an Int32Value in order to accommodate future use cases with open-ended ranges.
            &quot;endIndex&quot;: 42, # The zero-based end index of this range, exclusive, in UTF-16 code units. In all current uses, an end index must be provided. This field is an Int32Value in order to accommodate future use cases with open-ended ranges.
          },
        },
        &quot;updateTableRowStyle&quot;: { # Updates the TableRowStyle of rows in a table. # Updates the row style in a table.
          &quot;tableRowStyle&quot;: { # Styles that apply to a table row. # The styles to be set on the rows.
            &quot;minRowHeight&quot;: { # A magnitude in a single direction in the specified units. # The minimum height of the row. The row will be rendered in the Docs editor at a height equal to or greater than this value in order to show all the content in the row&#x27;s cells.
              &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
              &quot;magnitude&quot;: 3.14, # The magnitude.
            },
          },
          &quot;tableStartLocation&quot;: { # A particular location in the document. # The location where the table starts in the document.
            &quot;index&quot;: 42, # The zero-based index, in UTF-16 code units. The index is relative to the beginning of the segment specified by segment_id.
            &quot;segmentId&quot;: &quot;A String&quot;, # The ID of the header, footer or footnote the location is in. An empty segment ID signifies the document&#x27;s body.
          },
          &quot;fields&quot;: &quot;A String&quot;, # The fields that should be updated. At least one field must be specified. The root `tableRowStyle` is implied and should not be specified. A single `&quot;*&quot;` can be used as short-hand for listing every field. For example to update the minimum row height, set `fields` to `&quot;min_row_height&quot;`.
          &quot;rowIndices&quot;: [ # The list of zero-based row indices whose style should be updated. If no indices are specified, all rows will be updated.
            42,
          ],
        },
        &quot;insertTableColumn&quot;: { # Inserts an empty column into a table. # Inserts an empty column into a table.
          &quot;tableCellLocation&quot;: { # Location of a single cell within a table. # 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.
            &quot;columnIndex&quot;: 42, # The zero-based column index. For example, the second column in the table has a column index of 1.
            &quot;tableStartLocation&quot;: { # A particular location in the document. # The location where the table starts in the document.
              &quot;index&quot;: 42, # The zero-based index, in UTF-16 code units. The index is relative to the beginning of the segment specified by segment_id.
              &quot;segmentId&quot;: &quot;A String&quot;, # The ID of the header, footer or footnote the location is in. An empty segment ID signifies the document&#x27;s body.
            },
            &quot;rowIndex&quot;: 42, # The zero-based row index. For example, the second row in the table has a row index of 1.
          },
          &quot;insertRight&quot;: True or False, # Whether to insert new column to the right of the reference cell location. - `True`: insert to the right. - `False`: insert to the left.
        },
        &quot;deleteTableRow&quot;: { # Deletes a row from a table. # Deletes a row from a table.
          &quot;tableCellLocation&quot;: { # Location of a single cell within a table. # 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.
            &quot;columnIndex&quot;: 42, # The zero-based column index. For example, the second column in the table has a column index of 1.
            &quot;tableStartLocation&quot;: { # A particular location in the document. # The location where the table starts in the document.
              &quot;index&quot;: 42, # The zero-based index, in UTF-16 code units. The index is relative to the beginning of the segment specified by segment_id.
              &quot;segmentId&quot;: &quot;A String&quot;, # The ID of the header, footer or footnote the location is in. An empty segment ID signifies the document&#x27;s body.
            },
            &quot;rowIndex&quot;: 42, # The zero-based row index. For example, the second row in the table has a row index of 1.
          },
        },
        &quot;updateTableColumnProperties&quot;: { # Updates the TableColumnProperties of columns in a table. # Updates the properties of columns in a table.
          &quot;columnIndices&quot;: [ # The list of zero-based column indices whose property should be updated. If no indices are specified, all columns will be updated.
            42,
          ],
          &quot;tableColumnProperties&quot;: { # The properties of a column in a table. # The table column properties to update. If the value of `table_column_properties#width` is less than 5 points (5/72 inch), a 400 bad request error is returned.
            &quot;widthType&quot;: &quot;A String&quot;, # The width type of the column.
            &quot;width&quot;: { # A magnitude in a single direction in the specified units. # The width of the column. Set when the column&#x27;s `width_type` is FIXED_WIDTH.
              &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
              &quot;magnitude&quot;: 3.14, # The magnitude.
            },
          },
          &quot;fields&quot;: &quot;A String&quot;, # The fields that should be updated. At least one field must be specified. The root `tableColumnProperties` is implied and should not be specified. A single `&quot;*&quot;` can be used as short-hand for listing every field. For example to update the column width, set `fields` to `&quot;width&quot;`.
          &quot;tableStartLocation&quot;: { # A particular location in the document. # The location where the table starts in the document.
            &quot;index&quot;: 42, # The zero-based index, in UTF-16 code units. The index is relative to the beginning of the segment specified by segment_id.
            &quot;segmentId&quot;: &quot;A String&quot;, # The ID of the header, footer or footnote the location is in. An empty segment ID signifies the document&#x27;s body.
          },
        },
        &quot;createFooter&quot;: { # Creates a Footer. The new footer is applied to the SectionStyle at the location of the SectionBreak if specificed, otherwise it is applied to the DocumentStyle. If a footer of the specified type already exists, a 400 bad request error is returned. # Creates a footer.
          &quot;type&quot;: &quot;A String&quot;, # The type of footer to create.
          &quot;sectionBreakLocation&quot;: { # A particular location in the document. # 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.
            &quot;index&quot;: 42, # The zero-based index, in UTF-16 code units. The index is relative to the beginning of the segment specified by segment_id.
            &quot;segmentId&quot;: &quot;A String&quot;, # The ID of the header, footer or footnote the location is in. An empty segment ID signifies the document&#x27;s body.
          },
        },
        &quot;insertTable&quot;: { # Inserts a table at the specified location. A newline character will be inserted before the inserted table. # Inserts a table at the specified location.
          &quot;endOfSegmentLocation&quot;: { # Location at the end of a body, header, footer or footnote. The location is immediately before the last newline in the document segment. # 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.
            &quot;segmentId&quot;: &quot;A String&quot;, # The ID of the header, footer or footnote the location is in. An empty segment ID signifies the document&#x27;s body.
          },
          &quot;columns&quot;: 42, # The number of columns in the table.
          &quot;rows&quot;: 42, # The number of rows in the table.
          &quot;location&quot;: { # A particular location in the document. # 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&#x27;s start index (i.e. between an existing table and its preceding paragraph). Tables cannot be inserted inside a footnote or equation.
            &quot;index&quot;: 42, # The zero-based index, in UTF-16 code units. The index is relative to the beginning of the segment specified by segment_id.
            &quot;segmentId&quot;: &quot;A String&quot;, # The ID of the header, footer or footnote the location is in. An empty segment ID signifies the document&#x27;s body.
          },
        },
        &quot;replaceAllText&quot;: { # Replaces all instances of text matching a criteria with replace text. # Replaces all instances of the specified text.
          &quot;containsText&quot;: { # A criteria that matches a specific string of text in the document. # Finds text in the document matching this substring.
            &quot;matchCase&quot;: True or False, # Indicates whether the search should respect case: - `True`: the search is case sensitive. - `False`: the search is case insensitive.
            &quot;text&quot;: &quot;A String&quot;, # The text to search for in the document.
          },
          &quot;replaceText&quot;: &quot;A String&quot;, # The text that will replace the matched text.
        },
        &quot;createFootnote&quot;: { # 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. # Creates a footnote.
          &quot;location&quot;: { # A particular location in the document. # 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&#x27;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.
            &quot;index&quot;: 42, # The zero-based index, in UTF-16 code units. The index is relative to the beginning of the segment specified by segment_id.
            &quot;segmentId&quot;: &quot;A String&quot;, # The ID of the header, footer or footnote the location is in. An empty segment ID signifies the document&#x27;s body.
          },
          &quot;endOfSegmentLocation&quot;: { # Location at the end of a body, header, footer or footnote. The location is immediately before the last newline in the document segment. # 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.
            &quot;segmentId&quot;: &quot;A String&quot;, # The ID of the header, footer or footnote the location is in. An empty segment ID signifies the document&#x27;s body.
          },
        },
        &quot;updateTableCellStyle&quot;: { # Updates the style of a range of table cells. # Updates the style of table cells.
          &quot;fields&quot;: &quot;A String&quot;, # The fields that should be updated. At least one field must be specified. The root `tableCellStyle` is implied and should not be specified. A single `&quot;*&quot;` can be used as short-hand for listing every field. For example to update the table cell background color, set `fields` to `&quot;backgroundColor&quot;`. To reset a property to its default value, include its field name in the field mask but leave the field itself unset.
          &quot;tableStartLocation&quot;: { # A particular location in the document. # The location where the table starts in the document. When specified, the updates are applied to all the cells in the table.
            &quot;index&quot;: 42, # The zero-based index, in UTF-16 code units. The index is relative to the beginning of the segment specified by segment_id.
            &quot;segmentId&quot;: &quot;A String&quot;, # The ID of the header, footer or footnote the location is in. An empty segment ID signifies the document&#x27;s body.
          },
          &quot;tableCellStyle&quot;: { # The style of a TableCell. Inherited table cell styles are represented as unset fields in this message. A table cell style can inherit from the table&#x27;s style. # The style to set on the table cells. When updating borders, if a cell shares a border with an adjacent cell, the corresponding border property of the adjacent cell is updated as well. Borders that are merged and invisible are not updated. Since updating a border shared by adjacent cells in the same request can cause conflicting border updates, border updates are applied in the following order: - `border_right` - `border_left` - `border_bottom` - `border_top`
            &quot;borderTop&quot;: { # A border around a table cell. Table cell borders cannot be transparent. To hide a table cell border, make its width 0. # The top border of the cell.
              &quot;width&quot;: { # A magnitude in a single direction in the specified units. # The width of the border.
                &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                &quot;magnitude&quot;: 3.14, # The magnitude.
              },
              &quot;dashStyle&quot;: &quot;A String&quot;, # The dash style of the border.
              &quot;color&quot;: { # A color that can either be fully opaque or fully transparent. # The color of the border. This color cannot be transparent.
                &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                  &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                    &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                    &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                    &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                  },
                },
              },
            },
            &quot;borderBottom&quot;: { # A border around a table cell. Table cell borders cannot be transparent. To hide a table cell border, make its width 0. # The bottom border of the cell.
              &quot;width&quot;: { # A magnitude in a single direction in the specified units. # The width of the border.
                &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                &quot;magnitude&quot;: 3.14, # The magnitude.
              },
              &quot;dashStyle&quot;: &quot;A String&quot;, # The dash style of the border.
              &quot;color&quot;: { # A color that can either be fully opaque or fully transparent. # The color of the border. This color cannot be transparent.
                &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                  &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                    &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                    &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                    &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                  },
                },
              },
            },
            &quot;contentAlignment&quot;: &quot;A String&quot;, # The alignment of the content in the table cell. The default alignment matches the alignment for newly created table cells in the Docs editor.
            &quot;paddingLeft&quot;: { # A magnitude in a single direction in the specified units. # The left padding of the cell.
              &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
              &quot;magnitude&quot;: 3.14, # The magnitude.
            },
            &quot;backgroundColor&quot;: { # A color that can either be fully opaque or fully transparent. # The background color of the cell.
              &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                  &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                  &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                  &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                },
              },
            },
            &quot;paddingTop&quot;: { # A magnitude in a single direction in the specified units. # The top padding of the cell.
              &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
              &quot;magnitude&quot;: 3.14, # The magnitude.
            },
            &quot;rowSpan&quot;: 42, # The row span of the cell. This property is read-only.
            &quot;paddingRight&quot;: { # A magnitude in a single direction in the specified units. # The right padding of the cell.
              &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
              &quot;magnitude&quot;: 3.14, # The magnitude.
            },
            &quot;borderRight&quot;: { # A border around a table cell. Table cell borders cannot be transparent. To hide a table cell border, make its width 0. # The right border of the cell.
              &quot;width&quot;: { # A magnitude in a single direction in the specified units. # The width of the border.
                &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                &quot;magnitude&quot;: 3.14, # The magnitude.
              },
              &quot;dashStyle&quot;: &quot;A String&quot;, # The dash style of the border.
              &quot;color&quot;: { # A color that can either be fully opaque or fully transparent. # The color of the border. This color cannot be transparent.
                &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                  &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                    &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                    &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                    &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                  },
                },
              },
            },
            &quot;borderLeft&quot;: { # A border around a table cell. Table cell borders cannot be transparent. To hide a table cell border, make its width 0. # The left border of the cell.
              &quot;width&quot;: { # A magnitude in a single direction in the specified units. # The width of the border.
                &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                &quot;magnitude&quot;: 3.14, # The magnitude.
              },
              &quot;dashStyle&quot;: &quot;A String&quot;, # The dash style of the border.
              &quot;color&quot;: { # A color that can either be fully opaque or fully transparent. # The color of the border. This color cannot be transparent.
                &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                  &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                    &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                    &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                    &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                  },
                },
              },
            },
            &quot;columnSpan&quot;: 42, # The column span of the cell. This property is read-only.
            &quot;paddingBottom&quot;: { # A magnitude in a single direction in the specified units. # The bottom padding of the cell.
              &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
              &quot;magnitude&quot;: 3.14, # The magnitude.
            },
          },
          &quot;tableRange&quot;: { # A table range represents a reference to a subset of a table. It&#x27;s important to note that the cells specified by a table range do not necessarily form a rectangle. For example, let&#x27;s say we have a 3 x 3 table where all the cells of the last row are merged together. The table looks like this: [ ] A table range with table cell location = (table_start_location, row = 0, column = 0), row span = 3 and column span = 2 specifies the following cells: x x [ x x x ] # The table range representing the subset of the table to which the updates are applied.
            &quot;rowSpan&quot;: 42, # The row span of the table range.
            &quot;tableCellLocation&quot;: { # Location of a single cell within a table. # The cell location where the table range starts.
              &quot;columnIndex&quot;: 42, # The zero-based column index. For example, the second column in the table has a column index of 1.
              &quot;tableStartLocation&quot;: { # A particular location in the document. # The location where the table starts in the document.
                &quot;index&quot;: 42, # The zero-based index, in UTF-16 code units. The index is relative to the beginning of the segment specified by segment_id.
                &quot;segmentId&quot;: &quot;A String&quot;, # The ID of the header, footer or footnote the location is in. An empty segment ID signifies the document&#x27;s body.
              },
              &quot;rowIndex&quot;: 42, # The zero-based row index. For example, the second row in the table has a row index of 1.
            },
            &quot;columnSpan&quot;: 42, # The column span of the table range.
          },
        },
      },
    ],
  }

  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    { # Response message from a BatchUpdateDocument request.
    &quot;replies&quot;: [ # The reply of the updates. This maps 1:1 with the updates, although replies to some requests may be empty.
      { # A single response from an update.
        &quot;createHeader&quot;: { # The result of creating a header. # The result of creating a header.
          &quot;headerId&quot;: &quot;A String&quot;, # The ID of the created header.
        },
        &quot;replaceAllText&quot;: { # The result of replacing text. # The result of replacing text.
          &quot;occurrencesChanged&quot;: 42, # The number of occurrences changed by replacing all text.
        },
        &quot;createNamedRange&quot;: { # The result of creating a named range. # The result of creating a named range.
          &quot;namedRangeId&quot;: &quot;A String&quot;, # The ID of the created named range.
        },
        &quot;insertInlineSheetsChart&quot;: { # The result of inserting an embedded Google Sheets chart. # The result of inserting an inline Google Sheets chart.
          &quot;objectId&quot;: &quot;A String&quot;, # The object ID of the inserted chart.
        },
        &quot;createFooter&quot;: { # The result of creating a footer. # The result of creating a footer.
          &quot;footerId&quot;: &quot;A String&quot;, # The ID of the created footer.
        },
        &quot;insertInlineImage&quot;: { # The result of inserting an inline image. # The result of inserting an inline image.
          &quot;objectId&quot;: &quot;A String&quot;, # The ID of the created InlineObject.
        },
        &quot;createFootnote&quot;: { # The result of creating a footnote. # The result of creating a footnote.
          &quot;footnoteId&quot;: &quot;A String&quot;, # The ID of the created footnote.
        },
      },
    ],
    &quot;documentId&quot;: &quot;A String&quot;, # The ID of the document to which the updates were applied to.
    &quot;writeControl&quot;: { # Provides control over how write requests are executed. # The updated write control after applying the request.
      &quot;targetRevisionId&quot;: &quot;A String&quot;, # The target revision ID of the document that the write request will be applied to. If collaborator changes have occurred after the document was read using the API, the changes produced by this write request will be transformed against the collaborator changes. This results in a new revision of the document which incorporates both the changes in the request and the collaborator changes, and the Docs server will resolve conflicting changes. When using `target_revision_id`, the API client can be thought of as another collaborator of the document. The target revision ID may only be used to write to recent versions of a document. If the target revision is too far behind the latest revision, the request will not be processed and will return a 400 bad request error and the request should be retried after reading the latest version of the document. In most cases a `revision_id` will remain valid for use as a target revision for several minutes after it is read, but for frequently-edited documents this window may be shorter.
      &quot;requiredRevisionId&quot;: &quot;A String&quot;, # The revision ID of the document that the write request will be applied to. If this is not the latest revision of the document, the request will not be processed and will return a 400 bad request error. When a required revision ID is returned in a response, it indicates the revision ID of the document after the request was applied.
    },
  }</pre>
</div>

<div class="method">
    <code class="details" id="close">close()</code>
  <pre>Close httplib2 connections.</pre>
</div>

<div class="method">
    <code class="details" id="create">create(body=None, x__xgafv=None)</code>
  <pre>Creates a blank document using the title given in the request. Other fields in the request, including any provided content, are ignored. Returns the created document.

Args:
  body: object, The request body.
    The object takes the form of:

{ # A Google Docs document.
  &quot;suggestionsViewMode&quot;: &quot;A String&quot;, # Output only. The suggestions view mode applied to the document. Note: When editing a document, changes must be based on a document with SUGGESTIONS_INLINE.
  &quot;documentId&quot;: &quot;A String&quot;, # Output only. The ID of the document.
  &quot;suggestedNamedStylesChanges&quot;: { # Output only. The suggested changes to the named styles of the document, keyed by suggestion ID.
    &quot;a_key&quot;: { # A suggested change to the NamedStyles.
      &quot;namedStyles&quot;: { # The named styles. Paragraphs in the document can inherit their TextStyle and ParagraphStyle from these named styles. # A NamedStyles that only includes the changes made in this suggestion. This can be used along with the named_styles_suggestion_state to see which fields have changed and their new values.
        &quot;styles&quot;: [ # The named styles. There is an entry for each of the possible named style types.
          { # A named style. Paragraphs in the document can inherit their TextStyle and ParagraphStyle from this named style when they have the same named style type.
            &quot;namedStyleType&quot;: &quot;A String&quot;, # The type of this named style.
            &quot;textStyle&quot;: { # Represents the styling that can be applied to text. Inherited text styles are represented as unset fields in this message. A text style&#x27;s parent depends on where the text style is defined: * The TextStyle of text in a Paragraph inherits from the paragraph&#x27;s corresponding named style type. * The TextStyle on a named style inherits from the normal text named style. * The TextStyle of the normal text named style inherits from the default text style in the Docs editor. * The TextStyle on a Paragraph element that is contained in a table may inherit its text style from the table style. If the text style does not inherit from a parent, unsetting fields will revert the style to a value matching the defaults in the Docs editor. # The text style of this named style.
              &quot;italic&quot;: True or False, # Whether or not the text is italicized.
              &quot;baselineOffset&quot;: &quot;A String&quot;, # The text&#x27;s vertical offset from its normal position. Text with `SUPERSCRIPT` or `SUBSCRIPT` baseline offsets is automatically rendered in a smaller font size, computed based on the `font_size` field. The `font_size` itself is not affected by changes in this field.
              &quot;bold&quot;: True or False, # Whether or not the text is rendered as bold.
              &quot;fontSize&quot;: { # A magnitude in a single direction in the specified units. # The size of the text&#x27;s font.
                &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                &quot;magnitude&quot;: 3.14, # The magnitude.
              },
              &quot;foregroundColor&quot;: { # A color that can either be fully opaque or fully transparent. # The foreground color of the text. If set, the color is either an RGB color or transparent, depending on the `color` field.
                &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                  &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                    &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                    &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                    &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                  },
                },
              },
              &quot;backgroundColor&quot;: { # A color that can either be fully opaque or fully transparent. # The background color of the text. If set, the color is either an RGB color or transparent, depending on the `color` field.
                &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                  &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                    &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                    &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                    &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                  },
                },
              },
              &quot;link&quot;: { # A reference to another portion of a document or an external URL resource. # The hyperlink destination of the text. If unset, there is no link. Links are not inherited from parent text. Changing the link in an update request causes some other changes to the text style of the range: * When setting a link, the text foreground color will be updated to the default link color and the text will be underlined. If these fields are modified in the same request, those values will be used instead of the link defaults. * Setting a link on a text range that overlaps with an existing link will also update the existing link to point to the new URL. * Links are not settable on newline characters. As a result, setting a link on a text range that crosses a paragraph boundary, such as `&quot;ABC\n123&quot;`, will separate the newline character(s) into their own text runs. The link will be applied separately to the runs before and after the newline. * Removing a link will update the text style of the range to match the style of the preceding text (or the default text styles if the preceding text is another link) unless different styles are being set in the same request.
                &quot;bookmarkId&quot;: &quot;A String&quot;, # The ID of a bookmark in this document.
                &quot;url&quot;: &quot;A String&quot;, # An external URL.
                &quot;headingId&quot;: &quot;A String&quot;, # The ID of a heading in this document.
              },
              &quot;strikethrough&quot;: True or False, # Whether or not the text is struck through.
              &quot;weightedFontFamily&quot;: { # Represents a font family and weight of text. # The font family and rendered weight of the text. If an update request specifies values for both `weighted_font_family` and `bold`, the `weighted_font_family` is applied first, then `bold`. If `weighted_font_family#weight` is not set, it defaults to `400`. If `weighted_font_family` is set, then `weighted_font_family#font_family` must also be set with a non-empty value. Otherwise, a 400 bad request error is returned.
                &quot;fontFamily&quot;: &quot;A String&quot;, # The font family of the text. The font family can be any font from the Font menu in Docs or from [Google Fonts] (https://fonts.google.com/). If the font name is unrecognized, the text is rendered in `Arial`.
                &quot;weight&quot;: 42, # The weight of the font. This field can have any value that is a multiple of `100` between `100` and `900`, inclusive. This range corresponds to the numerical values described in the CSS 2.1 Specification, [section 15.6](https://www.w3.org/TR/CSS21/fonts.html#font-boldness), with non-numerical values disallowed. The default value is `400` (&quot;normal&quot;). The font weight makes up just one component of the rendered font weight. The rendered weight is determined by a combination of the `weight` and the text style&#x27;s resolved `bold` value, after accounting for inheritance: * If the text is bold and the weight is less than `400`, the rendered weight is 400. * If the text is bold and the weight is greater than or equal to `400` but is less than `700`, the rendered weight is `700`. * If the weight is greater than or equal to `700`, the rendered weight is equal to the weight. * If the text is not bold, the rendered weight is equal to the weight.
              },
              &quot;underline&quot;: True or False, # Whether or not the text is underlined.
              &quot;smallCaps&quot;: True or False, # Whether or not the text is in small capital letters.
            },
            &quot;paragraphStyle&quot;: { # Styles that apply to a whole paragraph. Inherited paragraph styles are represented as unset fields in this message. A paragraph style&#x27;s parent depends on where the paragraph style is defined: * The ParagraphStyle on a Paragraph inherits from the paragraph&#x27;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 is 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. # The paragraph style of this named style.
              &quot;borderRight&quot;: { # A border around a paragraph. # The border to the right of this paragraph. If unset, the value is inherited from the parent. Paragraph borders cannot be partially updated. When making changes to a paragraph border the new border must be specified in its entirety.
                &quot;color&quot;: { # A color that can either be fully opaque or fully transparent. # The color of the border.
                  &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                    &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                      &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                      &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                      &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                    },
                  },
                },
                &quot;width&quot;: { # A magnitude in a single direction in the specified units. # The width of the border.
                  &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                  &quot;magnitude&quot;: 3.14, # The magnitude.
                },
                &quot;padding&quot;: { # A magnitude in a single direction in the specified units. # The padding of the border.
                  &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                  &quot;magnitude&quot;: 3.14, # The magnitude.
                },
                &quot;dashStyle&quot;: &quot;A String&quot;, # The dash style of the border.
              },
              &quot;indentFirstLine&quot;: { # A magnitude in a single direction in the specified units. # The amount of indentation for the first line of the paragraph. If unset, the value is inherited from the parent.
                &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                &quot;magnitude&quot;: 3.14, # The magnitude.
              },
              &quot;alignment&quot;: &quot;A String&quot;, # The text alignment for this paragraph.
              &quot;lineSpacing&quot;: 3.14, # The amount of space between lines, as a percentage of normal, where normal is represented as 100.0. If unset, the value is inherited from the parent.
              &quot;keepLinesTogether&quot;: True or False, # Whether all lines of the paragraph should be laid out on the same page or column if possible. If unset, the value is inherited from the parent.
              &quot;avoidWidowAndOrphan&quot;: True or False, # Whether to avoid widows and orphans for the paragraph. If unset, the value is inherited from the parent.
              &quot;spaceBelow&quot;: { # A magnitude in a single direction in the specified units. # The amount of extra space below the paragraph. If unset, the value is inherited from the parent.
                &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                &quot;magnitude&quot;: 3.14, # The magnitude.
              },
              &quot;borderBetween&quot;: { # A border around a paragraph. # 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 making changes to a paragraph border the new border must be specified in its entirety.
                &quot;color&quot;: { # A color that can either be fully opaque or fully transparent. # The color of the border.
                  &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                    &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                      &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                      &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                      &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                    },
                  },
                },
                &quot;width&quot;: { # A magnitude in a single direction in the specified units. # The width of the border.
                  &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                  &quot;magnitude&quot;: 3.14, # The magnitude.
                },
                &quot;padding&quot;: { # A magnitude in a single direction in the specified units. # The padding of the border.
                  &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                  &quot;magnitude&quot;: 3.14, # The magnitude.
                },
                &quot;dashStyle&quot;: &quot;A String&quot;, # The dash style of the border.
              },
              &quot;headingId&quot;: &quot;A String&quot;, # The heading ID of the paragraph. If empty, then this paragraph is not a heading. This property is read-only.
              &quot;spaceAbove&quot;: { # A magnitude in a single direction in the specified units. # The amount of extra space above the paragraph. If unset, the value is inherited from the parent.
                &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                &quot;magnitude&quot;: 3.14, # The magnitude.
              },
              &quot;direction&quot;: &quot;A String&quot;, # The text direction of this paragraph. If unset, the value defaults to LEFT_TO_RIGHT since paragraph direction is not inherited.
              &quot;namedStyleType&quot;: &quot;A String&quot;, # The named style type of the paragraph. Since updating the named style type affects other properties within ParagraphStyle, the named style type is applied before the other properties are updated.
              &quot;tabStops&quot;: [ # A list of the tab stops for this paragraph. The list of tab stops is not inherited. This property is read-only.
                { # A tab stop within a paragraph.
                  &quot;offset&quot;: { # A magnitude in a single direction in the specified units. # The offset between this tab stop and the start margin.
                    &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                    &quot;magnitude&quot;: 3.14, # The magnitude.
                  },
                  &quot;alignment&quot;: &quot;A String&quot;, # The alignment of this tab stop. If unset, the value defaults to START.
                },
              ],
              &quot;indentStart&quot;: { # A magnitude in a single direction in the specified units. # The amount of indentation for the paragraph on the side that corresponds to the start of the text, based on the current paragraph direction. If unset, the value is inherited from the parent.
                &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                &quot;magnitude&quot;: 3.14, # The magnitude.
              },
              &quot;keepWithNext&quot;: True or False, # Whether at least a part of this paragraph should be laid out on the same page or column as the next paragraph if possible. If unset, the value is inherited from the parent.
              &quot;borderTop&quot;: { # A border around a paragraph. # 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 making changes to a paragraph border the new border must be specified in its entirety.
                &quot;color&quot;: { # A color that can either be fully opaque or fully transparent. # The color of the border.
                  &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                    &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                      &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                      &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                      &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                    },
                  },
                },
                &quot;width&quot;: { # A magnitude in a single direction in the specified units. # The width of the border.
                  &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                  &quot;magnitude&quot;: 3.14, # The magnitude.
                },
                &quot;padding&quot;: { # A magnitude in a single direction in the specified units. # The padding of the border.
                  &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                  &quot;magnitude&quot;: 3.14, # The magnitude.
                },
                &quot;dashStyle&quot;: &quot;A String&quot;, # The dash style of the border.
              },
              &quot;borderLeft&quot;: { # A border around a paragraph. # The border to the left of this paragraph. If unset, the value is inherited from the parent. Paragraph borders cannot be partially updated. When making changes to a paragraph border the new border must be specified in its entirety.
                &quot;color&quot;: { # A color that can either be fully opaque or fully transparent. # The color of the border.
                  &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                    &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                      &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                      &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                      &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                    },
                  },
                },
                &quot;width&quot;: { # A magnitude in a single direction in the specified units. # The width of the border.
                  &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                  &quot;magnitude&quot;: 3.14, # The magnitude.
                },
                &quot;padding&quot;: { # A magnitude in a single direction in the specified units. # The padding of the border.
                  &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                  &quot;magnitude&quot;: 3.14, # The magnitude.
                },
                &quot;dashStyle&quot;: &quot;A String&quot;, # The dash style of the border.
              },
              &quot;borderBottom&quot;: { # A border around a paragraph. # 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 making changes to a paragraph border the new border must be specified in its entirety.
                &quot;color&quot;: { # A color that can either be fully opaque or fully transparent. # The color of the border.
                  &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                    &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                      &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                      &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                      &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                    },
                  },
                },
                &quot;width&quot;: { # A magnitude in a single direction in the specified units. # The width of the border.
                  &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                  &quot;magnitude&quot;: 3.14, # The magnitude.
                },
                &quot;padding&quot;: { # A magnitude in a single direction in the specified units. # The padding of the border.
                  &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                  &quot;magnitude&quot;: 3.14, # The magnitude.
                },
                &quot;dashStyle&quot;: &quot;A String&quot;, # The dash style of the border.
              },
              &quot;shading&quot;: { # The shading of a paragraph. # The shading of the paragraph. If unset, the value is inherited from the parent.
                &quot;backgroundColor&quot;: { # A color that can either be fully opaque or fully transparent. # The background color of this paragraph shading.
                  &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                    &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                      &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                      &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                      &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                    },
                  },
                },
              },
              &quot;indentEnd&quot;: { # A magnitude in a single direction in the specified units. # 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.
                &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                &quot;magnitude&quot;: 3.14, # The magnitude.
              },
              &quot;spacingMode&quot;: &quot;A String&quot;, # The spacing mode for the paragraph.
            },
          },
        ],
      },
      &quot;namedStylesSuggestionState&quot;: { # The suggestion state of a NamedStyles message. # A mask that indicates which of the fields on the base NamedStyles have been changed in this suggestion.
        &quot;stylesSuggestionStates&quot;: [ # A mask that indicates which of the fields on the corresponding NamedStyle in styles have been changed in this suggestion. The order of these named style suggestion states match the order of the corresponding named style within the named styles suggestion.
          { # A suggestion state of a NamedStyle message.
            &quot;paragraphStyleSuggestionState&quot;: { # A mask that indicates which of the fields on the base ParagraphStyle have been changed in this suggestion. For any field set to true, there is a new suggested value. # A mask that indicates which of the fields in paragraph style have been changed in this suggestion.
              &quot;borderRightSuggested&quot;: True or False, # Indicates if there was a suggested change to border_right.
              &quot;indentEndSuggested&quot;: True or False, # Indicates if there was a suggested change to indent_end.
              &quot;lineSpacingSuggested&quot;: True or False, # Indicates if there was a suggested change to line_spacing.
              &quot;headingIdSuggested&quot;: True or False, # Indicates if there was a suggested change to heading_id.
              &quot;indentStartSuggested&quot;: True or False, # Indicates if there was a suggested change to indent_start.
              &quot;keepWithNextSuggested&quot;: True or False, # Indicates if there was a suggested change to keep_with_next.
              &quot;namedStyleTypeSuggested&quot;: True or False, # Indicates if there was a suggested change to named_style_type.
              &quot;borderTopSuggested&quot;: True or False, # Indicates if there was a suggested change to border_top.
              &quot;keepLinesTogetherSuggested&quot;: True or False, # Indicates if there was a suggested change to keep_lines_together.
              &quot;avoidWidowAndOrphanSuggested&quot;: True or False, # Indicates if there was a suggested change to avoid_widow_and_orphan.
              &quot;spaceBelowSuggested&quot;: True or False, # Indicates if there was a suggested change to space_below.
              &quot;indentFirstLineSuggested&quot;: True or False, # Indicates if there was a suggested change to indent_first_line.
              &quot;shadingSuggestionState&quot;: { # A mask that indicates which of the fields on the base Shading have been changed in this suggested change. For any field set to true, there is a new suggested value. # A mask that indicates which of the fields in shading have been changed in this suggestion.
                &quot;backgroundColorSuggested&quot;: True or False, # Indicates if there was a suggested change to the Shading.
              },
              &quot;directionSuggested&quot;: True or False, # Indicates if there was a suggested change to direction.
              &quot;borderBetweenSuggested&quot;: True or False, # Indicates if there was a suggested change to border_between.
              &quot;spaceAboveSuggested&quot;: True or False, # Indicates if there was a suggested change to space_above.
              &quot;borderLeftSuggested&quot;: True or False, # Indicates if there was a suggested change to border_left.
              &quot;spacingModeSuggested&quot;: True or False, # Indicates if there was a suggested change to spacing_mode.
              &quot;borderBottomSuggested&quot;: True or False, # Indicates if there was a suggested change to border_bottom.
              &quot;alignmentSuggested&quot;: True or False, # Indicates if there was a suggested change to alignment.
            },
            &quot;textStyleSuggestionState&quot;: { # A mask that indicates which of the fields on the base TextStyle have been changed in this suggestion. For any field set to true, there is a new suggested value. # A mask that indicates which of the fields in text style have been changed in this suggestion.
              &quot;backgroundColorSuggested&quot;: True or False, # Indicates if there was a suggested change to background_color.
              &quot;fontSizeSuggested&quot;: True or False, # Indicates if there was a suggested change to font_size.
              &quot;boldSuggested&quot;: True or False, # Indicates if there was a suggested change to bold.
              &quot;baselineOffsetSuggested&quot;: True or False, # Indicates if there was a suggested change to baseline_offset.
              &quot;foregroundColorSuggested&quot;: True or False, # Indicates if there was a suggested change to foreground_color.
              &quot;italicSuggested&quot;: True or False, # Indicates if there was a suggested change to italic.
              &quot;linkSuggested&quot;: True or False, # Indicates if there was a suggested change to link.
              &quot;underlineSuggested&quot;: True or False, # Indicates if there was a suggested change to underline.
              &quot;weightedFontFamilySuggested&quot;: True or False, # Indicates if there was a suggested change to weighted_font_family.
              &quot;smallCapsSuggested&quot;: True or False, # Indicates if there was a suggested change to small_caps.
              &quot;strikethroughSuggested&quot;: True or False, # Indicates if there was a suggested change to strikethrough.
            },
            &quot;namedStyleType&quot;: &quot;A String&quot;, # The named style type that this suggestion state corresponds to. This field is provided as a convenience for matching the NamedStyleSuggestionState with its corresponding NamedStyle.
          },
        ],
      },
    },
  },
  &quot;namedStyles&quot;: { # The named styles. Paragraphs in the document can inherit their TextStyle and ParagraphStyle from these named styles. # Output only. The named styles of the document.
    &quot;styles&quot;: [ # The named styles. There is an entry for each of the possible named style types.
      { # A named style. Paragraphs in the document can inherit their TextStyle and ParagraphStyle from this named style when they have the same named style type.
        &quot;namedStyleType&quot;: &quot;A String&quot;, # The type of this named style.
        &quot;textStyle&quot;: { # Represents the styling that can be applied to text. Inherited text styles are represented as unset fields in this message. A text style&#x27;s parent depends on where the text style is defined: * The TextStyle of text in a Paragraph inherits from the paragraph&#x27;s corresponding named style type. * The TextStyle on a named style inherits from the normal text named style. * The TextStyle of the normal text named style inherits from the default text style in the Docs editor. * The TextStyle on a Paragraph element that is contained in a table may inherit its text style from the table style. If the text style does not inherit from a parent, unsetting fields will revert the style to a value matching the defaults in the Docs editor. # The text style of this named style.
          &quot;italic&quot;: True or False, # Whether or not the text is italicized.
          &quot;baselineOffset&quot;: &quot;A String&quot;, # The text&#x27;s vertical offset from its normal position. Text with `SUPERSCRIPT` or `SUBSCRIPT` baseline offsets is automatically rendered in a smaller font size, computed based on the `font_size` field. The `font_size` itself is not affected by changes in this field.
          &quot;bold&quot;: True or False, # Whether or not the text is rendered as bold.
          &quot;fontSize&quot;: { # A magnitude in a single direction in the specified units. # The size of the text&#x27;s font.
            &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
            &quot;magnitude&quot;: 3.14, # The magnitude.
          },
          &quot;foregroundColor&quot;: { # A color that can either be fully opaque or fully transparent. # The foreground color of the text. If set, the color is either an RGB color or transparent, depending on the `color` field.
            &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
              &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
              },
            },
          },
          &quot;backgroundColor&quot;: { # A color that can either be fully opaque or fully transparent. # The background color of the text. If set, the color is either an RGB color or transparent, depending on the `color` field.
            &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
              &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
              },
            },
          },
          &quot;link&quot;: { # A reference to another portion of a document or an external URL resource. # The hyperlink destination of the text. If unset, there is no link. Links are not inherited from parent text. Changing the link in an update request causes some other changes to the text style of the range: * When setting a link, the text foreground color will be updated to the default link color and the text will be underlined. If these fields are modified in the same request, those values will be used instead of the link defaults. * Setting a link on a text range that overlaps with an existing link will also update the existing link to point to the new URL. * Links are not settable on newline characters. As a result, setting a link on a text range that crosses a paragraph boundary, such as `&quot;ABC\n123&quot;`, will separate the newline character(s) into their own text runs. The link will be applied separately to the runs before and after the newline. * Removing a link will update the text style of the range to match the style of the preceding text (or the default text styles if the preceding text is another link) unless different styles are being set in the same request.
            &quot;bookmarkId&quot;: &quot;A String&quot;, # The ID of a bookmark in this document.
            &quot;url&quot;: &quot;A String&quot;, # An external URL.
            &quot;headingId&quot;: &quot;A String&quot;, # The ID of a heading in this document.
          },
          &quot;strikethrough&quot;: True or False, # Whether or not the text is struck through.
          &quot;weightedFontFamily&quot;: { # Represents a font family and weight of text. # The font family and rendered weight of the text. If an update request specifies values for both `weighted_font_family` and `bold`, the `weighted_font_family` is applied first, then `bold`. If `weighted_font_family#weight` is not set, it defaults to `400`. If `weighted_font_family` is set, then `weighted_font_family#font_family` must also be set with a non-empty value. Otherwise, a 400 bad request error is returned.
            &quot;fontFamily&quot;: &quot;A String&quot;, # The font family of the text. The font family can be any font from the Font menu in Docs or from [Google Fonts] (https://fonts.google.com/). If the font name is unrecognized, the text is rendered in `Arial`.
            &quot;weight&quot;: 42, # The weight of the font. This field can have any value that is a multiple of `100` between `100` and `900`, inclusive. This range corresponds to the numerical values described in the CSS 2.1 Specification, [section 15.6](https://www.w3.org/TR/CSS21/fonts.html#font-boldness), with non-numerical values disallowed. The default value is `400` (&quot;normal&quot;). The font weight makes up just one component of the rendered font weight. The rendered weight is determined by a combination of the `weight` and the text style&#x27;s resolved `bold` value, after accounting for inheritance: * If the text is bold and the weight is less than `400`, the rendered weight is 400. * If the text is bold and the weight is greater than or equal to `400` but is less than `700`, the rendered weight is `700`. * If the weight is greater than or equal to `700`, the rendered weight is equal to the weight. * If the text is not bold, the rendered weight is equal to the weight.
          },
          &quot;underline&quot;: True or False, # Whether or not the text is underlined.
          &quot;smallCaps&quot;: True or False, # Whether or not the text is in small capital letters.
        },
        &quot;paragraphStyle&quot;: { # Styles that apply to a whole paragraph. Inherited paragraph styles are represented as unset fields in this message. A paragraph style&#x27;s parent depends on where the paragraph style is defined: * The ParagraphStyle on a Paragraph inherits from the paragraph&#x27;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 is 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. # The paragraph style of this named style.
          &quot;borderRight&quot;: { # A border around a paragraph. # The border to the right of this paragraph. If unset, the value is inherited from the parent. Paragraph borders cannot be partially updated. When making changes to a paragraph border the new border must be specified in its entirety.
            &quot;color&quot;: { # A color that can either be fully opaque or fully transparent. # The color of the border.
              &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                  &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                  &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                  &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                },
              },
            },
            &quot;width&quot;: { # A magnitude in a single direction in the specified units. # The width of the border.
              &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
              &quot;magnitude&quot;: 3.14, # The magnitude.
            },
            &quot;padding&quot;: { # A magnitude in a single direction in the specified units. # The padding of the border.
              &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
              &quot;magnitude&quot;: 3.14, # The magnitude.
            },
            &quot;dashStyle&quot;: &quot;A String&quot;, # The dash style of the border.
          },
          &quot;indentFirstLine&quot;: { # A magnitude in a single direction in the specified units. # The amount of indentation for the first line of the paragraph. If unset, the value is inherited from the parent.
            &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
            &quot;magnitude&quot;: 3.14, # The magnitude.
          },
          &quot;alignment&quot;: &quot;A String&quot;, # The text alignment for this paragraph.
          &quot;lineSpacing&quot;: 3.14, # The amount of space between lines, as a percentage of normal, where normal is represented as 100.0. If unset, the value is inherited from the parent.
          &quot;keepLinesTogether&quot;: True or False, # Whether all lines of the paragraph should be laid out on the same page or column if possible. If unset, the value is inherited from the parent.
          &quot;avoidWidowAndOrphan&quot;: True or False, # Whether to avoid widows and orphans for the paragraph. If unset, the value is inherited from the parent.
          &quot;spaceBelow&quot;: { # A magnitude in a single direction in the specified units. # The amount of extra space below the paragraph. If unset, the value is inherited from the parent.
            &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
            &quot;magnitude&quot;: 3.14, # The magnitude.
          },
          &quot;borderBetween&quot;: { # A border around a paragraph. # 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 making changes to a paragraph border the new border must be specified in its entirety.
            &quot;color&quot;: { # A color that can either be fully opaque or fully transparent. # The color of the border.
              &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                  &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                  &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                  &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                },
              },
            },
            &quot;width&quot;: { # A magnitude in a single direction in the specified units. # The width of the border.
              &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
              &quot;magnitude&quot;: 3.14, # The magnitude.
            },
            &quot;padding&quot;: { # A magnitude in a single direction in the specified units. # The padding of the border.
              &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
              &quot;magnitude&quot;: 3.14, # The magnitude.
            },
            &quot;dashStyle&quot;: &quot;A String&quot;, # The dash style of the border.
          },
          &quot;headingId&quot;: &quot;A String&quot;, # The heading ID of the paragraph. If empty, then this paragraph is not a heading. This property is read-only.
          &quot;spaceAbove&quot;: { # A magnitude in a single direction in the specified units. # The amount of extra space above the paragraph. If unset, the value is inherited from the parent.
            &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
            &quot;magnitude&quot;: 3.14, # The magnitude.
          },
          &quot;direction&quot;: &quot;A String&quot;, # The text direction of this paragraph. If unset, the value defaults to LEFT_TO_RIGHT since paragraph direction is not inherited.
          &quot;namedStyleType&quot;: &quot;A String&quot;, # The named style type of the paragraph. Since updating the named style type affects other properties within ParagraphStyle, the named style type is applied before the other properties are updated.
          &quot;tabStops&quot;: [ # A list of the tab stops for this paragraph. The list of tab stops is not inherited. This property is read-only.
            { # A tab stop within a paragraph.
              &quot;offset&quot;: { # A magnitude in a single direction in the specified units. # The offset between this tab stop and the start margin.
                &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                &quot;magnitude&quot;: 3.14, # The magnitude.
              },
              &quot;alignment&quot;: &quot;A String&quot;, # The alignment of this tab stop. If unset, the value defaults to START.
            },
          ],
          &quot;indentStart&quot;: { # A magnitude in a single direction in the specified units. # The amount of indentation for the paragraph on the side that corresponds to the start of the text, based on the current paragraph direction. If unset, the value is inherited from the parent.
            &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
            &quot;magnitude&quot;: 3.14, # The magnitude.
          },
          &quot;keepWithNext&quot;: True or False, # Whether at least a part of this paragraph should be laid out on the same page or column as the next paragraph if possible. If unset, the value is inherited from the parent.
          &quot;borderTop&quot;: { # A border around a paragraph. # 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 making changes to a paragraph border the new border must be specified in its entirety.
            &quot;color&quot;: { # A color that can either be fully opaque or fully transparent. # The color of the border.
              &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                  &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                  &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                  &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                },
              },
            },
            &quot;width&quot;: { # A magnitude in a single direction in the specified units. # The width of the border.
              &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
              &quot;magnitude&quot;: 3.14, # The magnitude.
            },
            &quot;padding&quot;: { # A magnitude in a single direction in the specified units. # The padding of the border.
              &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
              &quot;magnitude&quot;: 3.14, # The magnitude.
            },
            &quot;dashStyle&quot;: &quot;A String&quot;, # The dash style of the border.
          },
          &quot;borderLeft&quot;: { # A border around a paragraph. # The border to the left of this paragraph. If unset, the value is inherited from the parent. Paragraph borders cannot be partially updated. When making changes to a paragraph border the new border must be specified in its entirety.
            &quot;color&quot;: { # A color that can either be fully opaque or fully transparent. # The color of the border.
              &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                  &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                  &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                  &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                },
              },
            },
            &quot;width&quot;: { # A magnitude in a single direction in the specified units. # The width of the border.
              &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
              &quot;magnitude&quot;: 3.14, # The magnitude.
            },
            &quot;padding&quot;: { # A magnitude in a single direction in the specified units. # The padding of the border.
              &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
              &quot;magnitude&quot;: 3.14, # The magnitude.
            },
            &quot;dashStyle&quot;: &quot;A String&quot;, # The dash style of the border.
          },
          &quot;borderBottom&quot;: { # A border around a paragraph. # 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 making changes to a paragraph border the new border must be specified in its entirety.
            &quot;color&quot;: { # A color that can either be fully opaque or fully transparent. # The color of the border.
              &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                  &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                  &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                  &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                },
              },
            },
            &quot;width&quot;: { # A magnitude in a single direction in the specified units. # The width of the border.
              &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
              &quot;magnitude&quot;: 3.14, # The magnitude.
            },
            &quot;padding&quot;: { # A magnitude in a single direction in the specified units. # The padding of the border.
              &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
              &quot;magnitude&quot;: 3.14, # The magnitude.
            },
            &quot;dashStyle&quot;: &quot;A String&quot;, # The dash style of the border.
          },
          &quot;shading&quot;: { # The shading of a paragraph. # The shading of the paragraph. If unset, the value is inherited from the parent.
            &quot;backgroundColor&quot;: { # A color that can either be fully opaque or fully transparent. # The background color of this paragraph shading.
              &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                  &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                  &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                  &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                },
              },
            },
          },
          &quot;indentEnd&quot;: { # A magnitude in a single direction in the specified units. # 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.
            &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
            &quot;magnitude&quot;: 3.14, # The magnitude.
          },
          &quot;spacingMode&quot;: &quot;A String&quot;, # The spacing mode for the paragraph.
        },
      },
    ],
  },
  &quot;positionedObjects&quot;: { # Output only. The positioned objects in the document, keyed by object ID.
    &quot;a_key&quot;: { # An object that is tethered to a Paragraph and positioned relative to the beginning of the paragraph. A PositionedObject contains an EmbeddedObject such as an image.
      &quot;suggestedInsertionId&quot;: &quot;A String&quot;, # The suggested insertion ID. If empty, then this is not a suggested insertion.
      &quot;suggestedPositionedObjectPropertiesChanges&quot;: { # The suggested changes to the positioned object properties, keyed by suggestion ID.
        &quot;a_key&quot;: { # A suggested change to PositionedObjectProperties.
          &quot;positionedObjectPropertiesSuggestionState&quot;: { # A mask that indicates which of the fields on the base PositionedObjectProperties have been changed in this suggestion. For any field set to true, there is a new suggested value. # A mask that indicates which of the fields on the base PositionedObjectProperties have been changed in this suggestion.
            &quot;embeddedObjectSuggestionState&quot;: { # A mask that indicates which of the fields on the base EmbeddedObject have been changed in this suggestion. For any field set to true, there is a new suggested value. # A mask that indicates which of the fields in embedded_object have been changed in this suggestion.
              &quot;marginBottomSuggested&quot;: True or False, # Indicates if there was a suggested change to margin_bottom.
              &quot;titleSuggested&quot;: True or False, # Indicates if there was a suggested change to title.
              &quot;imagePropertiesSuggestionState&quot;: { # A mask that indicates which of the fields on the base ImageProperties have been changed in this suggestion. For any field set to true, there is a new suggested value. # A mask that indicates which of the fields in image_properties have been changed in this suggestion.
                &quot;contentUriSuggested&quot;: True or False, # Indicates if there was a suggested change to content_uri.
                &quot;angleSuggested&quot;: True or False, # Indicates if there was a suggested change to angle.
                &quot;transparencySuggested&quot;: True or False, # Indicates if there was a suggested change to transparency.
                &quot;brightnessSuggested&quot;: True or False, # Indicates if there was a suggested change to brightness.
                &quot;contrastSuggested&quot;: True or False, # Indicates if there was a suggested change to contrast.
                &quot;cropPropertiesSuggestionState&quot;: { # A mask that indicates which of the fields on the base CropProperties have been changed in this suggestion. For any field set to true, there is a new suggested value. # A mask that indicates which of the fields in crop_properties have been changed in this suggestion.
                  &quot;offsetRightSuggested&quot;: True or False, # Indicates if there was a suggested change to offset_right.
                  &quot;offsetLeftSuggested&quot;: True or False, # Indicates if there was a suggested change to offset_left.
                  &quot;offsetTopSuggested&quot;: True or False, # Indicates if there was a suggested change to offset_top.
                  &quot;angleSuggested&quot;: True or False, # Indicates if there was a suggested change to angle.
                  &quot;offsetBottomSuggested&quot;: True or False, # Indicates if there was a suggested change to offset_bottom.
                },
                &quot;sourceUriSuggested&quot;: True or False, # Indicates if there was a suggested change to source_uri.
              },
              &quot;marginTopSuggested&quot;: True or False, # Indicates if there was a suggested change to margin_top.
              &quot;embeddedObjectBorderSuggestionState&quot;: { # A mask that indicates which of the fields on the base EmbeddedObjectBorder have been changed in this suggestion. For any field set to true, there is a new suggested value. # A mask that indicates which of the fields in embedded_object_border have been changed in this suggestion.
                &quot;colorSuggested&quot;: True or False, # Indicates if there was a suggested change to color.
                &quot;dashStyleSuggested&quot;: True or False, # Indicates if there was a suggested change to dash_style.
                &quot;propertyStateSuggested&quot;: True or False, # Indicates if there was a suggested change to property_state.
                &quot;widthSuggested&quot;: True or False, # Indicates if there was a suggested change to width.
              },
              &quot;descriptionSuggested&quot;: True or False, # Indicates if there was a suggested change to description.
              &quot;linkedContentReferenceSuggestionState&quot;: { # A mask that indicates which of the fields on the base LinkedContentReference have been changed in this suggestion. For any field set to true, there is a new suggested value. # A mask that indicates which of the fields in linked_content_reference have been changed in this suggestion.
                &quot;sheetsChartReferenceSuggestionState&quot;: { # A mask that indicates which of the fields on the base SheetsChartReference have been changed in this suggestion. For any field set to true, there is a new suggested value. # A mask that indicates which of the fields in sheets_chart_reference have been changed in this suggestion.
                  &quot;chartIdSuggested&quot;: True or False, # Indicates if there was a suggested change to chart_id.
                  &quot;spreadsheetIdSuggested&quot;: True or False, # Indicates if there was a suggested change to spreadsheet_id.
                },
              },
              &quot;sizeSuggestionState&quot;: { # A mask that indicates which of the fields on the base Size have been changed in this suggestion. For any field set to true, the Size has a new suggested value. # A mask that indicates which of the fields in size have been changed in this suggestion.
                &quot;heightSuggested&quot;: True or False, # Indicates if there was a suggested change to height.
                &quot;widthSuggested&quot;: True or False, # Indicates if there was a suggested change to width.
              },
              &quot;embeddedDrawingPropertiesSuggestionState&quot;: { # A mask that indicates which of the fields on the base EmbeddedDrawingProperties have been changed in this suggestion. For any field set to true, there is a new suggested value. # A mask that indicates which of the fields in embedded_drawing_properties have been changed in this suggestion.
              },
              &quot;marginRightSuggested&quot;: True or False, # Indicates if there was a suggested change to margin_right.
              &quot;marginLeftSuggested&quot;: True or False, # Indicates if there was a suggested change to margin_left.
            },
            &quot;positioningSuggestionState&quot;: { # A mask that indicates which of the fields on the base PositionedObjectPositioning have been changed in this suggestion. For any field set to true, there is a new suggested value. # A mask that indicates which of the fields in positioning have been changed in this suggestion.
              &quot;layoutSuggested&quot;: True or False, # Indicates if there was a suggested change to layout.
              &quot;topOffsetSuggested&quot;: True or False, # Indicates if there was a suggested change to top_offset.
              &quot;leftOffsetSuggested&quot;: True or False, # Indicates if there was a suggested change to left_offset.
            },
          },
          &quot;positionedObjectProperties&quot;: { # Properties of a PositionedObject. # A PositionedObjectProperties that only includes the changes made in this suggestion. This can be used along with the positioned_object_properties_suggestion_state to see which fields have changed and their new values.
            &quot;embeddedObject&quot;: { # An embedded object in the document. # The embedded object of this positioned object.
              &quot;linkedContentReference&quot;: { # A reference to the external linked source content. # A reference to the external linked source content. For example, it contains a reference to the source Sheets chart when the embedded object is a linked chart. If unset, then the embedded object is not linked.
                &quot;sheetsChartReference&quot;: { # A reference to a linked chart embedded from Google Sheets. # A reference to the linked chart.
                  &quot;chartId&quot;: 42, # The ID of the specific chart in the Google Sheets spreadsheet that is embedded.
                  &quot;spreadsheetId&quot;: &quot;A String&quot;, # The ID of the Google Sheets spreadsheet that contains the source chart.
                },
              },
              &quot;imageProperties&quot;: { # The properties of an image. # The properties of an image.
                &quot;transparency&quot;: 3.14, # The transparency effect of the image. The value should be in the interval [0.0, 1.0], where 0 means no effect and 1 means completely transparent.
                &quot;angle&quot;: 3.14, # The clockwise rotation angle of the image, in radians.
                &quot;contrast&quot;: 3.14, # The contrast effect of the image. The value should be in the interval [-1.0, 1.0], where 0 means no effect.
                &quot;brightness&quot;: 3.14, # The brightness effect of the image. The value should be in the interval [-1.0, 1.0], where 0 means no effect.
                &quot;cropProperties&quot;: { # The crop properties of an image. The crop rectangle is represented using fractional offsets from the original content&#x27;s four edges. - If the offset is in the interval (0, 1), the corresponding edge of crop rectangle is positioned inside of the image&#x27;s original bounding rectangle. - If the offset is negative or greater than 1, the corresponding edge of crop rectangle is positioned outside of the image&#x27;s original bounding rectangle. - If all offsets and rotation angle are 0, the image is not cropped. # The crop properties of the image.
                  &quot;offsetRight&quot;: 3.14, # The offset specifies how far inwards the right edge of the crop rectangle is from the right edge of the original content as a fraction of the original content&#x27;s width.
                  &quot;angle&quot;: 3.14, # The clockwise rotation angle of the crop rectangle around its center, in radians. Rotation is applied after the offsets.
                  &quot;offsetBottom&quot;: 3.14, # The offset specifies how far inwards the bottom edge of the crop rectangle is from the bottom edge of the original content as a fraction of the original content&#x27;s height.
                  &quot;offsetTop&quot;: 3.14, # The offset specifies how far inwards the top edge of the crop rectangle is from the top edge of the original content as a fraction of the original content&#x27;s height.
                  &quot;offsetLeft&quot;: 3.14, # The offset specifies how far inwards the left edge of the crop rectangle is from the left edge of the original content as a fraction of the original content&#x27;s width.
                },
                &quot;contentUri&quot;: &quot;A String&quot;, # A URI to the image with a default lifetime of 30 minutes. This URI is tagged with the account of the requester. Anyone with the URI effectively accesses the image as the original requester. Access to the image may be lost if the document&#x27;s sharing settings change.
                &quot;sourceUri&quot;: &quot;A String&quot;, # The source URI is the URI used to insert the image. The source URI can be empty.
              },
              &quot;marginRight&quot;: { # A magnitude in a single direction in the specified units. # The right margin of the embedded object.
                &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                &quot;magnitude&quot;: 3.14, # The magnitude.
              },
              &quot;title&quot;: &quot;A String&quot;, # The title of the embedded object. The `title` and `description` are both combined to display alt text.
              &quot;embeddedDrawingProperties&quot;: { # The properties of an embedded drawing. # The properties of an embedded drawing.
              },
              &quot;marginTop&quot;: { # A magnitude in a single direction in the specified units. # The top margin of the embedded object.
                &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                &quot;magnitude&quot;: 3.14, # The magnitude.
              },
              &quot;description&quot;: &quot;A String&quot;, # The description of the embedded object. The `title` and `description` are both combined to display alt text.
              &quot;marginLeft&quot;: { # A magnitude in a single direction in the specified units. # The left margin of the embedded object.
                &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                &quot;magnitude&quot;: 3.14, # The magnitude.
              },
              &quot;size&quot;: { # A width and height. # The visible size of the image after cropping.
                &quot;width&quot;: { # A magnitude in a single direction in the specified units. # The width of the object.
                  &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                  &quot;magnitude&quot;: 3.14, # The magnitude.
                },
                &quot;height&quot;: { # A magnitude in a single direction in the specified units. # The height of the object.
                  &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                  &quot;magnitude&quot;: 3.14, # The magnitude.
                },
              },
              &quot;embeddedObjectBorder&quot;: { # A border around an EmbeddedObject. # The border of the embedded object.
                &quot;color&quot;: { # A color that can either be fully opaque or fully transparent. # The color of the border.
                  &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                    &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                      &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                      &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                      &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                    },
                  },
                },
                &quot;width&quot;: { # A magnitude in a single direction in the specified units. # The width of the border.
                  &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                  &quot;magnitude&quot;: 3.14, # The magnitude.
                },
                &quot;dashStyle&quot;: &quot;A String&quot;, # The dash style of the border.
                &quot;propertyState&quot;: &quot;A String&quot;, # The property state of the border property.
              },
              &quot;marginBottom&quot;: { # A magnitude in a single direction in the specified units. # The bottom margin of the embedded object.
                &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                &quot;magnitude&quot;: 3.14, # The magnitude.
              },
            },
            &quot;positioning&quot;: { # The positioning of a PositionedObject. The positioned object is positioned relative to the beginning of the Paragraph it is tethered to. # The positioning of this positioned object relative to the newline of the Paragraph that references this positioned object.
              &quot;topOffset&quot;: { # A magnitude in a single direction in the specified units. # The offset of the top edge of the positioned object relative to the beginning of the Paragraph it is tethered to. The exact positioning of the object can depend on other content in the document and the document&#x27;s styling.
                &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                &quot;magnitude&quot;: 3.14, # The magnitude.
              },
              &quot;leftOffset&quot;: { # A magnitude in a single direction in the specified units. # The offset of the left edge of the positioned object relative to the beginning of the Paragraph it is tethered to. The exact positioning of the object can depend on other content in the document and the document&#x27;s styling.
                &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                &quot;magnitude&quot;: 3.14, # The magnitude.
              },
              &quot;layout&quot;: &quot;A String&quot;, # The layout of this positioned object.
            },
          },
        },
      },
      &quot;objectId&quot;: &quot;A String&quot;, # The ID of this positioned object.
      &quot;positionedObjectProperties&quot;: { # Properties of a PositionedObject. # The properties of this positioned object.
        &quot;embeddedObject&quot;: { # An embedded object in the document. # The embedded object of this positioned object.
          &quot;linkedContentReference&quot;: { # A reference to the external linked source content. # A reference to the external linked source content. For example, it contains a reference to the source Sheets chart when the embedded object is a linked chart. If unset, then the embedded object is not linked.
            &quot;sheetsChartReference&quot;: { # A reference to a linked chart embedded from Google Sheets. # A reference to the linked chart.
              &quot;chartId&quot;: 42, # The ID of the specific chart in the Google Sheets spreadsheet that is embedded.
              &quot;spreadsheetId&quot;: &quot;A String&quot;, # The ID of the Google Sheets spreadsheet that contains the source chart.
            },
          },
          &quot;imageProperties&quot;: { # The properties of an image. # The properties of an image.
            &quot;transparency&quot;: 3.14, # The transparency effect of the image. The value should be in the interval [0.0, 1.0], where 0 means no effect and 1 means completely transparent.
            &quot;angle&quot;: 3.14, # The clockwise rotation angle of the image, in radians.
            &quot;contrast&quot;: 3.14, # The contrast effect of the image. The value should be in the interval [-1.0, 1.0], where 0 means no effect.
            &quot;brightness&quot;: 3.14, # The brightness effect of the image. The value should be in the interval [-1.0, 1.0], where 0 means no effect.
            &quot;cropProperties&quot;: { # The crop properties of an image. The crop rectangle is represented using fractional offsets from the original content&#x27;s four edges. - If the offset is in the interval (0, 1), the corresponding edge of crop rectangle is positioned inside of the image&#x27;s original bounding rectangle. - If the offset is negative or greater than 1, the corresponding edge of crop rectangle is positioned outside of the image&#x27;s original bounding rectangle. - If all offsets and rotation angle are 0, the image is not cropped. # The crop properties of the image.
              &quot;offsetRight&quot;: 3.14, # The offset specifies how far inwards the right edge of the crop rectangle is from the right edge of the original content as a fraction of the original content&#x27;s width.
              &quot;angle&quot;: 3.14, # The clockwise rotation angle of the crop rectangle around its center, in radians. Rotation is applied after the offsets.
              &quot;offsetBottom&quot;: 3.14, # The offset specifies how far inwards the bottom edge of the crop rectangle is from the bottom edge of the original content as a fraction of the original content&#x27;s height.
              &quot;offsetTop&quot;: 3.14, # The offset specifies how far inwards the top edge of the crop rectangle is from the top edge of the original content as a fraction of the original content&#x27;s height.
              &quot;offsetLeft&quot;: 3.14, # The offset specifies how far inwards the left edge of the crop rectangle is from the left edge of the original content as a fraction of the original content&#x27;s width.
            },
            &quot;contentUri&quot;: &quot;A String&quot;, # A URI to the image with a default lifetime of 30 minutes. This URI is tagged with the account of the requester. Anyone with the URI effectively accesses the image as the original requester. Access to the image may be lost if the document&#x27;s sharing settings change.
            &quot;sourceUri&quot;: &quot;A String&quot;, # The source URI is the URI used to insert the image. The source URI can be empty.
          },
          &quot;marginRight&quot;: { # A magnitude in a single direction in the specified units. # The right margin of the embedded object.
            &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
            &quot;magnitude&quot;: 3.14, # The magnitude.
          },
          &quot;title&quot;: &quot;A String&quot;, # The title of the embedded object. The `title` and `description` are both combined to display alt text.
          &quot;embeddedDrawingProperties&quot;: { # The properties of an embedded drawing. # The properties of an embedded drawing.
          },
          &quot;marginTop&quot;: { # A magnitude in a single direction in the specified units. # The top margin of the embedded object.
            &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
            &quot;magnitude&quot;: 3.14, # The magnitude.
          },
          &quot;description&quot;: &quot;A String&quot;, # The description of the embedded object. The `title` and `description` are both combined to display alt text.
          &quot;marginLeft&quot;: { # A magnitude in a single direction in the specified units. # The left margin of the embedded object.
            &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
            &quot;magnitude&quot;: 3.14, # The magnitude.
          },
          &quot;size&quot;: { # A width and height. # The visible size of the image after cropping.
            &quot;width&quot;: { # A magnitude in a single direction in the specified units. # The width of the object.
              &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
              &quot;magnitude&quot;: 3.14, # The magnitude.
            },
            &quot;height&quot;: { # A magnitude in a single direction in the specified units. # The height of the object.
              &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
              &quot;magnitude&quot;: 3.14, # The magnitude.
            },
          },
          &quot;embeddedObjectBorder&quot;: { # A border around an EmbeddedObject. # The border of the embedded object.
            &quot;color&quot;: { # A color that can either be fully opaque or fully transparent. # The color of the border.
              &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                  &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                  &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                  &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                },
              },
            },
            &quot;width&quot;: { # A magnitude in a single direction in the specified units. # The width of the border.
              &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
              &quot;magnitude&quot;: 3.14, # The magnitude.
            },
            &quot;dashStyle&quot;: &quot;A String&quot;, # The dash style of the border.
            &quot;propertyState&quot;: &quot;A String&quot;, # The property state of the border property.
          },
          &quot;marginBottom&quot;: { # A magnitude in a single direction in the specified units. # The bottom margin of the embedded object.
            &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
            &quot;magnitude&quot;: 3.14, # The magnitude.
          },
        },
        &quot;positioning&quot;: { # The positioning of a PositionedObject. The positioned object is positioned relative to the beginning of the Paragraph it is tethered to. # The positioning of this positioned object relative to the newline of the Paragraph that references this positioned object.
          &quot;topOffset&quot;: { # A magnitude in a single direction in the specified units. # The offset of the top edge of the positioned object relative to the beginning of the Paragraph it is tethered to. The exact positioning of the object can depend on other content in the document and the document&#x27;s styling.
            &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
            &quot;magnitude&quot;: 3.14, # The magnitude.
          },
          &quot;leftOffset&quot;: { # A magnitude in a single direction in the specified units. # The offset of the left edge of the positioned object relative to the beginning of the Paragraph it is tethered to. The exact positioning of the object can depend on other content in the document and the document&#x27;s styling.
            &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
            &quot;magnitude&quot;: 3.14, # The magnitude.
          },
          &quot;layout&quot;: &quot;A String&quot;, # The layout of this positioned object.
        },
      },
      &quot;suggestedDeletionIds&quot;: [ # The suggested deletion IDs. If empty, then there are no suggested deletions of this content.
        &quot;A String&quot;,
      ],
    },
  },
  &quot;inlineObjects&quot;: { # Output only. The inline objects in the document, keyed by object ID.
    &quot;a_key&quot;: { # An object that appears inline with text. An InlineObject contains an EmbeddedObject such as an image.
      &quot;suggestedInlineObjectPropertiesChanges&quot;: { # The suggested changes to the inline object properties, keyed by suggestion ID.
        &quot;a_key&quot;: { # A suggested change to InlineObjectProperties.
          &quot;inlineObjectProperties&quot;: { # Properties of an InlineObject. # An InlineObjectProperties that only includes the changes made in this suggestion. This can be used along with the inline_object_properties_suggestion_state to see which fields have changed and their new values.
            &quot;embeddedObject&quot;: { # An embedded object in the document. # The embedded object of this inline object.
              &quot;linkedContentReference&quot;: { # A reference to the external linked source content. # A reference to the external linked source content. For example, it contains a reference to the source Sheets chart when the embedded object is a linked chart. If unset, then the embedded object is not linked.
                &quot;sheetsChartReference&quot;: { # A reference to a linked chart embedded from Google Sheets. # A reference to the linked chart.
                  &quot;chartId&quot;: 42, # The ID of the specific chart in the Google Sheets spreadsheet that is embedded.
                  &quot;spreadsheetId&quot;: &quot;A String&quot;, # The ID of the Google Sheets spreadsheet that contains the source chart.
                },
              },
              &quot;imageProperties&quot;: { # The properties of an image. # The properties of an image.
                &quot;transparency&quot;: 3.14, # The transparency effect of the image. The value should be in the interval [0.0, 1.0], where 0 means no effect and 1 means completely transparent.
                &quot;angle&quot;: 3.14, # The clockwise rotation angle of the image, in radians.
                &quot;contrast&quot;: 3.14, # The contrast effect of the image. The value should be in the interval [-1.0, 1.0], where 0 means no effect.
                &quot;brightness&quot;: 3.14, # The brightness effect of the image. The value should be in the interval [-1.0, 1.0], where 0 means no effect.
                &quot;cropProperties&quot;: { # The crop properties of an image. The crop rectangle is represented using fractional offsets from the original content&#x27;s four edges. - If the offset is in the interval (0, 1), the corresponding edge of crop rectangle is positioned inside of the image&#x27;s original bounding rectangle. - If the offset is negative or greater than 1, the corresponding edge of crop rectangle is positioned outside of the image&#x27;s original bounding rectangle. - If all offsets and rotation angle are 0, the image is not cropped. # The crop properties of the image.
                  &quot;offsetRight&quot;: 3.14, # The offset specifies how far inwards the right edge of the crop rectangle is from the right edge of the original content as a fraction of the original content&#x27;s width.
                  &quot;angle&quot;: 3.14, # The clockwise rotation angle of the crop rectangle around its center, in radians. Rotation is applied after the offsets.
                  &quot;offsetBottom&quot;: 3.14, # The offset specifies how far inwards the bottom edge of the crop rectangle is from the bottom edge of the original content as a fraction of the original content&#x27;s height.
                  &quot;offsetTop&quot;: 3.14, # The offset specifies how far inwards the top edge of the crop rectangle is from the top edge of the original content as a fraction of the original content&#x27;s height.
                  &quot;offsetLeft&quot;: 3.14, # The offset specifies how far inwards the left edge of the crop rectangle is from the left edge of the original content as a fraction of the original content&#x27;s width.
                },
                &quot;contentUri&quot;: &quot;A String&quot;, # A URI to the image with a default lifetime of 30 minutes. This URI is tagged with the account of the requester. Anyone with the URI effectively accesses the image as the original requester. Access to the image may be lost if the document&#x27;s sharing settings change.
                &quot;sourceUri&quot;: &quot;A String&quot;, # The source URI is the URI used to insert the image. The source URI can be empty.
              },
              &quot;marginRight&quot;: { # A magnitude in a single direction in the specified units. # The right margin of the embedded object.
                &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                &quot;magnitude&quot;: 3.14, # The magnitude.
              },
              &quot;title&quot;: &quot;A String&quot;, # The title of the embedded object. The `title` and `description` are both combined to display alt text.
              &quot;embeddedDrawingProperties&quot;: { # The properties of an embedded drawing. # The properties of an embedded drawing.
              },
              &quot;marginTop&quot;: { # A magnitude in a single direction in the specified units. # The top margin of the embedded object.
                &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                &quot;magnitude&quot;: 3.14, # The magnitude.
              },
              &quot;description&quot;: &quot;A String&quot;, # The description of the embedded object. The `title` and `description` are both combined to display alt text.
              &quot;marginLeft&quot;: { # A magnitude in a single direction in the specified units. # The left margin of the embedded object.
                &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                &quot;magnitude&quot;: 3.14, # The magnitude.
              },
              &quot;size&quot;: { # A width and height. # The visible size of the image after cropping.
                &quot;width&quot;: { # A magnitude in a single direction in the specified units. # The width of the object.
                  &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                  &quot;magnitude&quot;: 3.14, # The magnitude.
                },
                &quot;height&quot;: { # A magnitude in a single direction in the specified units. # The height of the object.
                  &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                  &quot;magnitude&quot;: 3.14, # The magnitude.
                },
              },
              &quot;embeddedObjectBorder&quot;: { # A border around an EmbeddedObject. # The border of the embedded object.
                &quot;color&quot;: { # A color that can either be fully opaque or fully transparent. # The color of the border.
                  &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                    &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                      &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                      &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                      &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                    },
                  },
                },
                &quot;width&quot;: { # A magnitude in a single direction in the specified units. # The width of the border.
                  &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                  &quot;magnitude&quot;: 3.14, # The magnitude.
                },
                &quot;dashStyle&quot;: &quot;A String&quot;, # The dash style of the border.
                &quot;propertyState&quot;: &quot;A String&quot;, # The property state of the border property.
              },
              &quot;marginBottom&quot;: { # A magnitude in a single direction in the specified units. # The bottom margin of the embedded object.
                &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                &quot;magnitude&quot;: 3.14, # The magnitude.
              },
            },
          },
          &quot;inlineObjectPropertiesSuggestionState&quot;: { # A mask that indicates which of the fields on the base InlineObjectProperties have been changed in this suggestion. For any field set to true, there is a new suggested value. # A mask that indicates which of the fields on the base InlineObjectProperties have been changed in this suggestion.
            &quot;embeddedObjectSuggestionState&quot;: { # A mask that indicates which of the fields on the base EmbeddedObject have been changed in this suggestion. For any field set to true, there is a new suggested value. # A mask that indicates which of the fields in embedded_object have been changed in this suggestion.
              &quot;marginBottomSuggested&quot;: True or False, # Indicates if there was a suggested change to margin_bottom.
              &quot;titleSuggested&quot;: True or False, # Indicates if there was a suggested change to title.
              &quot;imagePropertiesSuggestionState&quot;: { # A mask that indicates which of the fields on the base ImageProperties have been changed in this suggestion. For any field set to true, there is a new suggested value. # A mask that indicates which of the fields in image_properties have been changed in this suggestion.
                &quot;contentUriSuggested&quot;: True or False, # Indicates if there was a suggested change to content_uri.
                &quot;angleSuggested&quot;: True or False, # Indicates if there was a suggested change to angle.
                &quot;transparencySuggested&quot;: True or False, # Indicates if there was a suggested change to transparency.
                &quot;brightnessSuggested&quot;: True or False, # Indicates if there was a suggested change to brightness.
                &quot;contrastSuggested&quot;: True or False, # Indicates if there was a suggested change to contrast.
                &quot;cropPropertiesSuggestionState&quot;: { # A mask that indicates which of the fields on the base CropProperties have been changed in this suggestion. For any field set to true, there is a new suggested value. # A mask that indicates which of the fields in crop_properties have been changed in this suggestion.
                  &quot;offsetRightSuggested&quot;: True or False, # Indicates if there was a suggested change to offset_right.
                  &quot;offsetLeftSuggested&quot;: True or False, # Indicates if there was a suggested change to offset_left.
                  &quot;offsetTopSuggested&quot;: True or False, # Indicates if there was a suggested change to offset_top.
                  &quot;angleSuggested&quot;: True or False, # Indicates if there was a suggested change to angle.
                  &quot;offsetBottomSuggested&quot;: True or False, # Indicates if there was a suggested change to offset_bottom.
                },
                &quot;sourceUriSuggested&quot;: True or False, # Indicates if there was a suggested change to source_uri.
              },
              &quot;marginTopSuggested&quot;: True or False, # Indicates if there was a suggested change to margin_top.
              &quot;embeddedObjectBorderSuggestionState&quot;: { # A mask that indicates which of the fields on the base EmbeddedObjectBorder have been changed in this suggestion. For any field set to true, there is a new suggested value. # A mask that indicates which of the fields in embedded_object_border have been changed in this suggestion.
                &quot;colorSuggested&quot;: True or False, # Indicates if there was a suggested change to color.
                &quot;dashStyleSuggested&quot;: True or False, # Indicates if there was a suggested change to dash_style.
                &quot;propertyStateSuggested&quot;: True or False, # Indicates if there was a suggested change to property_state.
                &quot;widthSuggested&quot;: True or False, # Indicates if there was a suggested change to width.
              },
              &quot;descriptionSuggested&quot;: True or False, # Indicates if there was a suggested change to description.
              &quot;linkedContentReferenceSuggestionState&quot;: { # A mask that indicates which of the fields on the base LinkedContentReference have been changed in this suggestion. For any field set to true, there is a new suggested value. # A mask that indicates which of the fields in linked_content_reference have been changed in this suggestion.
                &quot;sheetsChartReferenceSuggestionState&quot;: { # A mask that indicates which of the fields on the base SheetsChartReference have been changed in this suggestion. For any field set to true, there is a new suggested value. # A mask that indicates which of the fields in sheets_chart_reference have been changed in this suggestion.
                  &quot;chartIdSuggested&quot;: True or False, # Indicates if there was a suggested change to chart_id.
                  &quot;spreadsheetIdSuggested&quot;: True or False, # Indicates if there was a suggested change to spreadsheet_id.
                },
              },
              &quot;sizeSuggestionState&quot;: { # A mask that indicates which of the fields on the base Size have been changed in this suggestion. For any field set to true, the Size has a new suggested value. # A mask that indicates which of the fields in size have been changed in this suggestion.
                &quot;heightSuggested&quot;: True or False, # Indicates if there was a suggested change to height.
                &quot;widthSuggested&quot;: True or False, # Indicates if there was a suggested change to width.
              },
              &quot;embeddedDrawingPropertiesSuggestionState&quot;: { # A mask that indicates which of the fields on the base EmbeddedDrawingProperties have been changed in this suggestion. For any field set to true, there is a new suggested value. # A mask that indicates which of the fields in embedded_drawing_properties have been changed in this suggestion.
              },
              &quot;marginRightSuggested&quot;: True or False, # Indicates if there was a suggested change to margin_right.
              &quot;marginLeftSuggested&quot;: True or False, # Indicates if there was a suggested change to margin_left.
            },
          },
        },
      },
      &quot;inlineObjectProperties&quot;: { # Properties of an InlineObject. # The properties of this inline object.
        &quot;embeddedObject&quot;: { # An embedded object in the document. # The embedded object of this inline object.
          &quot;linkedContentReference&quot;: { # A reference to the external linked source content. # A reference to the external linked source content. For example, it contains a reference to the source Sheets chart when the embedded object is a linked chart. If unset, then the embedded object is not linked.
            &quot;sheetsChartReference&quot;: { # A reference to a linked chart embedded from Google Sheets. # A reference to the linked chart.
              &quot;chartId&quot;: 42, # The ID of the specific chart in the Google Sheets spreadsheet that is embedded.
              &quot;spreadsheetId&quot;: &quot;A String&quot;, # The ID of the Google Sheets spreadsheet that contains the source chart.
            },
          },
          &quot;imageProperties&quot;: { # The properties of an image. # The properties of an image.
            &quot;transparency&quot;: 3.14, # The transparency effect of the image. The value should be in the interval [0.0, 1.0], where 0 means no effect and 1 means completely transparent.
            &quot;angle&quot;: 3.14, # The clockwise rotation angle of the image, in radians.
            &quot;contrast&quot;: 3.14, # The contrast effect of the image. The value should be in the interval [-1.0, 1.0], where 0 means no effect.
            &quot;brightness&quot;: 3.14, # The brightness effect of the image. The value should be in the interval [-1.0, 1.0], where 0 means no effect.
            &quot;cropProperties&quot;: { # The crop properties of an image. The crop rectangle is represented using fractional offsets from the original content&#x27;s four edges. - If the offset is in the interval (0, 1), the corresponding edge of crop rectangle is positioned inside of the image&#x27;s original bounding rectangle. - If the offset is negative or greater than 1, the corresponding edge of crop rectangle is positioned outside of the image&#x27;s original bounding rectangle. - If all offsets and rotation angle are 0, the image is not cropped. # The crop properties of the image.
              &quot;offsetRight&quot;: 3.14, # The offset specifies how far inwards the right edge of the crop rectangle is from the right edge of the original content as a fraction of the original content&#x27;s width.
              &quot;angle&quot;: 3.14, # The clockwise rotation angle of the crop rectangle around its center, in radians. Rotation is applied after the offsets.
              &quot;offsetBottom&quot;: 3.14, # The offset specifies how far inwards the bottom edge of the crop rectangle is from the bottom edge of the original content as a fraction of the original content&#x27;s height.
              &quot;offsetTop&quot;: 3.14, # The offset specifies how far inwards the top edge of the crop rectangle is from the top edge of the original content as a fraction of the original content&#x27;s height.
              &quot;offsetLeft&quot;: 3.14, # The offset specifies how far inwards the left edge of the crop rectangle is from the left edge of the original content as a fraction of the original content&#x27;s width.
            },
            &quot;contentUri&quot;: &quot;A String&quot;, # A URI to the image with a default lifetime of 30 minutes. This URI is tagged with the account of the requester. Anyone with the URI effectively accesses the image as the original requester. Access to the image may be lost if the document&#x27;s sharing settings change.
            &quot;sourceUri&quot;: &quot;A String&quot;, # The source URI is the URI used to insert the image. The source URI can be empty.
          },
          &quot;marginRight&quot;: { # A magnitude in a single direction in the specified units. # The right margin of the embedded object.
            &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
            &quot;magnitude&quot;: 3.14, # The magnitude.
          },
          &quot;title&quot;: &quot;A String&quot;, # The title of the embedded object. The `title` and `description` are both combined to display alt text.
          &quot;embeddedDrawingProperties&quot;: { # The properties of an embedded drawing. # The properties of an embedded drawing.
          },
          &quot;marginTop&quot;: { # A magnitude in a single direction in the specified units. # The top margin of the embedded object.
            &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
            &quot;magnitude&quot;: 3.14, # The magnitude.
          },
          &quot;description&quot;: &quot;A String&quot;, # The description of the embedded object. The `title` and `description` are both combined to display alt text.
          &quot;marginLeft&quot;: { # A magnitude in a single direction in the specified units. # The left margin of the embedded object.
            &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
            &quot;magnitude&quot;: 3.14, # The magnitude.
          },
          &quot;size&quot;: { # A width and height. # The visible size of the image after cropping.
            &quot;width&quot;: { # A magnitude in a single direction in the specified units. # The width of the object.
              &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
              &quot;magnitude&quot;: 3.14, # The magnitude.
            },
            &quot;height&quot;: { # A magnitude in a single direction in the specified units. # The height of the object.
              &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
              &quot;magnitude&quot;: 3.14, # The magnitude.
            },
          },
          &quot;embeddedObjectBorder&quot;: { # A border around an EmbeddedObject. # The border of the embedded object.
            &quot;color&quot;: { # A color that can either be fully opaque or fully transparent. # The color of the border.
              &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                  &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                  &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                  &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                },
              },
            },
            &quot;width&quot;: { # A magnitude in a single direction in the specified units. # The width of the border.
              &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
              &quot;magnitude&quot;: 3.14, # The magnitude.
            },
            &quot;dashStyle&quot;: &quot;A String&quot;, # The dash style of the border.
            &quot;propertyState&quot;: &quot;A String&quot;, # The property state of the border property.
          },
          &quot;marginBottom&quot;: { # A magnitude in a single direction in the specified units. # The bottom margin of the embedded object.
            &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
            &quot;magnitude&quot;: 3.14, # The magnitude.
          },
        },
      },
      &quot;objectId&quot;: &quot;A String&quot;, # The ID of this inline object.
      &quot;suggestedInsertionId&quot;: &quot;A String&quot;, # The suggested insertion ID. If empty, then this is not a suggested insertion.
      &quot;suggestedDeletionIds&quot;: [ # The suggested deletion IDs. If empty, then there are no suggested deletions of this content.
        &quot;A String&quot;,
      ],
    },
  },
  &quot;footers&quot;: { # Output only. The footers in the document, keyed by footer ID.
    &quot;a_key&quot;: { # A document footer.
      &quot;content&quot;: [ # The contents of the footer. The indexes for a footer&#x27;s content begin at zero.
        { # A StructuralElement describes content that provides structure to the document.
          &quot;paragraph&quot;: { # A StructuralElement representing a paragraph. A paragraph is a range of content that is terminated with a newline character. # A paragraph type of structural element.
            &quot;suggestedParagraphStyleChanges&quot;: { # The suggested paragraph style changes to this paragraph, keyed by suggestion ID.
              &quot;a_key&quot;: { # A suggested change to a ParagraphStyle.
                &quot;paragraphStyle&quot;: { # Styles that apply to a whole paragraph. Inherited paragraph styles are represented as unset fields in this message. A paragraph style&#x27;s parent depends on where the paragraph style is defined: * The ParagraphStyle on a Paragraph inherits from the paragraph&#x27;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 is 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. # A ParagraphStyle that only includes the changes made in this suggestion. This can be used along with the paragraph_suggestion_state to see which fields have changed and their new values.
                  &quot;borderRight&quot;: { # A border around a paragraph. # The border to the right of this paragraph. If unset, the value is inherited from the parent. Paragraph borders cannot be partially updated. When making changes to a paragraph border the new border must be specified in its entirety.
                    &quot;color&quot;: { # A color that can either be fully opaque or fully transparent. # The color of the border.
                      &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                        &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                          &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                          &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                          &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                        },
                      },
                    },
                    &quot;width&quot;: { # A magnitude in a single direction in the specified units. # The width of the border.
                      &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                      &quot;magnitude&quot;: 3.14, # The magnitude.
                    },
                    &quot;padding&quot;: { # A magnitude in a single direction in the specified units. # The padding of the border.
                      &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                      &quot;magnitude&quot;: 3.14, # The magnitude.
                    },
                    &quot;dashStyle&quot;: &quot;A String&quot;, # The dash style of the border.
                  },
                  &quot;indentFirstLine&quot;: { # A magnitude in a single direction in the specified units. # The amount of indentation for the first line of the paragraph. If unset, the value is inherited from the parent.
                    &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                    &quot;magnitude&quot;: 3.14, # The magnitude.
                  },
                  &quot;alignment&quot;: &quot;A String&quot;, # The text alignment for this paragraph.
                  &quot;lineSpacing&quot;: 3.14, # The amount of space between lines, as a percentage of normal, where normal is represented as 100.0. If unset, the value is inherited from the parent.
                  &quot;keepLinesTogether&quot;: True or False, # Whether all lines of the paragraph should be laid out on the same page or column if possible. If unset, the value is inherited from the parent.
                  &quot;avoidWidowAndOrphan&quot;: True or False, # Whether to avoid widows and orphans for the paragraph. If unset, the value is inherited from the parent.
                  &quot;spaceBelow&quot;: { # A magnitude in a single direction in the specified units. # The amount of extra space below the paragraph. If unset, the value is inherited from the parent.
                    &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                    &quot;magnitude&quot;: 3.14, # The magnitude.
                  },
                  &quot;borderBetween&quot;: { # A border around a paragraph. # 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 making changes to a paragraph border the new border must be specified in its entirety.
                    &quot;color&quot;: { # A color that can either be fully opaque or fully transparent. # The color of the border.
                      &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                        &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                          &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                          &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                          &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                        },
                      },
                    },
                    &quot;width&quot;: { # A magnitude in a single direction in the specified units. # The width of the border.
                      &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                      &quot;magnitude&quot;: 3.14, # The magnitude.
                    },
                    &quot;padding&quot;: { # A magnitude in a single direction in the specified units. # The padding of the border.
                      &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                      &quot;magnitude&quot;: 3.14, # The magnitude.
                    },
                    &quot;dashStyle&quot;: &quot;A String&quot;, # The dash style of the border.
                  },
                  &quot;headingId&quot;: &quot;A String&quot;, # The heading ID of the paragraph. If empty, then this paragraph is not a heading. This property is read-only.
                  &quot;spaceAbove&quot;: { # A magnitude in a single direction in the specified units. # The amount of extra space above the paragraph. If unset, the value is inherited from the parent.
                    &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                    &quot;magnitude&quot;: 3.14, # The magnitude.
                  },
                  &quot;direction&quot;: &quot;A String&quot;, # The text direction of this paragraph. If unset, the value defaults to LEFT_TO_RIGHT since paragraph direction is not inherited.
                  &quot;namedStyleType&quot;: &quot;A String&quot;, # The named style type of the paragraph. Since updating the named style type affects other properties within ParagraphStyle, the named style type is applied before the other properties are updated.
                  &quot;tabStops&quot;: [ # A list of the tab stops for this paragraph. The list of tab stops is not inherited. This property is read-only.
                    { # A tab stop within a paragraph.
                      &quot;offset&quot;: { # A magnitude in a single direction in the specified units. # The offset between this tab stop and the start margin.
                        &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                        &quot;magnitude&quot;: 3.14, # The magnitude.
                      },
                      &quot;alignment&quot;: &quot;A String&quot;, # The alignment of this tab stop. If unset, the value defaults to START.
                    },
                  ],
                  &quot;indentStart&quot;: { # A magnitude in a single direction in the specified units. # The amount of indentation for the paragraph on the side that corresponds to the start of the text, based on the current paragraph direction. If unset, the value is inherited from the parent.
                    &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                    &quot;magnitude&quot;: 3.14, # The magnitude.
                  },
                  &quot;keepWithNext&quot;: True or False, # Whether at least a part of this paragraph should be laid out on the same page or column as the next paragraph if possible. If unset, the value is inherited from the parent.
                  &quot;borderTop&quot;: { # A border around a paragraph. # 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 making changes to a paragraph border the new border must be specified in its entirety.
                    &quot;color&quot;: { # A color that can either be fully opaque or fully transparent. # The color of the border.
                      &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                        &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                          &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                          &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                          &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                        },
                      },
                    },
                    &quot;width&quot;: { # A magnitude in a single direction in the specified units. # The width of the border.
                      &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                      &quot;magnitude&quot;: 3.14, # The magnitude.
                    },
                    &quot;padding&quot;: { # A magnitude in a single direction in the specified units. # The padding of the border.
                      &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                      &quot;magnitude&quot;: 3.14, # The magnitude.
                    },
                    &quot;dashStyle&quot;: &quot;A String&quot;, # The dash style of the border.
                  },
                  &quot;borderLeft&quot;: { # A border around a paragraph. # The border to the left of this paragraph. If unset, the value is inherited from the parent. Paragraph borders cannot be partially updated. When making changes to a paragraph border the new border must be specified in its entirety.
                    &quot;color&quot;: { # A color that can either be fully opaque or fully transparent. # The color of the border.
                      &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                        &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                          &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                          &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                          &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                        },
                      },
                    },
                    &quot;width&quot;: { # A magnitude in a single direction in the specified units. # The width of the border.
                      &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                      &quot;magnitude&quot;: 3.14, # The magnitude.
                    },
                    &quot;padding&quot;: { # A magnitude in a single direction in the specified units. # The padding of the border.
                      &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                      &quot;magnitude&quot;: 3.14, # The magnitude.
                    },
                    &quot;dashStyle&quot;: &quot;A String&quot;, # The dash style of the border.
                  },
                  &quot;borderBottom&quot;: { # A border around a paragraph. # 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 making changes to a paragraph border the new border must be specified in its entirety.
                    &quot;color&quot;: { # A color that can either be fully opaque or fully transparent. # The color of the border.
                      &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                        &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                          &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                          &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                          &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                        },
                      },
                    },
                    &quot;width&quot;: { # A magnitude in a single direction in the specified units. # The width of the border.
                      &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                      &quot;magnitude&quot;: 3.14, # The magnitude.
                    },
                    &quot;padding&quot;: { # A magnitude in a single direction in the specified units. # The padding of the border.
                      &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                      &quot;magnitude&quot;: 3.14, # The magnitude.
                    },
                    &quot;dashStyle&quot;: &quot;A String&quot;, # The dash style of the border.
                  },
                  &quot;shading&quot;: { # The shading of a paragraph. # The shading of the paragraph. If unset, the value is inherited from the parent.
                    &quot;backgroundColor&quot;: { # A color that can either be fully opaque or fully transparent. # The background color of this paragraph shading.
                      &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                        &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                          &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                          &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                          &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                        },
                      },
                    },
                  },
                  &quot;indentEnd&quot;: { # A magnitude in a single direction in the specified units. # 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.
                    &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                    &quot;magnitude&quot;: 3.14, # The magnitude.
                  },
                  &quot;spacingMode&quot;: &quot;A String&quot;, # The spacing mode for the paragraph.
                },
                &quot;paragraphStyleSuggestionState&quot;: { # A mask that indicates which of the fields on the base ParagraphStyle have been changed in this suggestion. For any field set to true, there is a new suggested value. # A mask that indicates which of the fields on the base ParagraphStyle have been changed in this suggestion.
                  &quot;borderRightSuggested&quot;: True or False, # Indicates if there was a suggested change to border_right.
                  &quot;indentEndSuggested&quot;: True or False, # Indicates if there was a suggested change to indent_end.
                  &quot;lineSpacingSuggested&quot;: True or False, # Indicates if there was a suggested change to line_spacing.
                  &quot;headingIdSuggested&quot;: True or False, # Indicates if there was a suggested change to heading_id.
                  &quot;indentStartSuggested&quot;: True or False, # Indicates if there was a suggested change to indent_start.
                  &quot;keepWithNextSuggested&quot;: True or False, # Indicates if there was a suggested change to keep_with_next.
                  &quot;namedStyleTypeSuggested&quot;: True or False, # Indicates if there was a suggested change to named_style_type.
                  &quot;borderTopSuggested&quot;: True or False, # Indicates if there was a suggested change to border_top.
                  &quot;keepLinesTogetherSuggested&quot;: True or False, # Indicates if there was a suggested change to keep_lines_together.
                  &quot;avoidWidowAndOrphanSuggested&quot;: True or False, # Indicates if there was a suggested change to avoid_widow_and_orphan.
                  &quot;spaceBelowSuggested&quot;: True or False, # Indicates if there was a suggested change to space_below.
                  &quot;indentFirstLineSuggested&quot;: True or False, # Indicates if there was a suggested change to indent_first_line.
                  &quot;shadingSuggestionState&quot;: { # A mask that indicates which of the fields on the base Shading have been changed in this suggested change. For any field set to true, there is a new suggested value. # A mask that indicates which of the fields in shading have been changed in this suggestion.
                    &quot;backgroundColorSuggested&quot;: True or False, # Indicates if there was a suggested change to the Shading.
                  },
                  &quot;directionSuggested&quot;: True or False, # Indicates if there was a suggested change to direction.
                  &quot;borderBetweenSuggested&quot;: True or False, # Indicates if there was a suggested change to border_between.
                  &quot;spaceAboveSuggested&quot;: True or False, # Indicates if there was a suggested change to space_above.
                  &quot;borderLeftSuggested&quot;: True or False, # Indicates if there was a suggested change to border_left.
                  &quot;spacingModeSuggested&quot;: True or False, # Indicates if there was a suggested change to spacing_mode.
                  &quot;borderBottomSuggested&quot;: True or False, # Indicates if there was a suggested change to border_bottom.
                  &quot;alignmentSuggested&quot;: True or False, # Indicates if there was a suggested change to alignment.
                },
              },
            },
            &quot;bullet&quot;: { # Describes the bullet of a paragraph. # The bullet for this paragraph. If not present, the paragraph does not belong to a list.
              &quot;textStyle&quot;: { # Represents the styling that can be applied to text. Inherited text styles are represented as unset fields in this message. A text style&#x27;s parent depends on where the text style is defined: * The TextStyle of text in a Paragraph inherits from the paragraph&#x27;s corresponding named style type. * The TextStyle on a named style inherits from the normal text named style. * The TextStyle of the normal text named style inherits from the default text style in the Docs editor. * The TextStyle on a Paragraph element that is contained in a table may inherit its text style from the table style. If the text style does not inherit from a parent, unsetting fields will revert the style to a value matching the defaults in the Docs editor. # The paragraph specific text style applied to this bullet.
                &quot;italic&quot;: True or False, # Whether or not the text is italicized.
                &quot;baselineOffset&quot;: &quot;A String&quot;, # The text&#x27;s vertical offset from its normal position. Text with `SUPERSCRIPT` or `SUBSCRIPT` baseline offsets is automatically rendered in a smaller font size, computed based on the `font_size` field. The `font_size` itself is not affected by changes in this field.
                &quot;bold&quot;: True or False, # Whether or not the text is rendered as bold.
                &quot;fontSize&quot;: { # A magnitude in a single direction in the specified units. # The size of the text&#x27;s font.
                  &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                  &quot;magnitude&quot;: 3.14, # The magnitude.
                },
                &quot;foregroundColor&quot;: { # A color that can either be fully opaque or fully transparent. # The foreground color of the text. If set, the color is either an RGB color or transparent, depending on the `color` field.
                  &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                    &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                      &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                      &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                      &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                    },
                  },
                },
                &quot;backgroundColor&quot;: { # A color that can either be fully opaque or fully transparent. # The background color of the text. If set, the color is either an RGB color or transparent, depending on the `color` field.
                  &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                    &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                      &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                      &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                      &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                    },
                  },
                },
                &quot;link&quot;: { # A reference to another portion of a document or an external URL resource. # The hyperlink destination of the text. If unset, there is no link. Links are not inherited from parent text. Changing the link in an update request causes some other changes to the text style of the range: * When setting a link, the text foreground color will be updated to the default link color and the text will be underlined. If these fields are modified in the same request, those values will be used instead of the link defaults. * Setting a link on a text range that overlaps with an existing link will also update the existing link to point to the new URL. * Links are not settable on newline characters. As a result, setting a link on a text range that crosses a paragraph boundary, such as `&quot;ABC\n123&quot;`, will separate the newline character(s) into their own text runs. The link will be applied separately to the runs before and after the newline. * Removing a link will update the text style of the range to match the style of the preceding text (or the default text styles if the preceding text is another link) unless different styles are being set in the same request.
                  &quot;bookmarkId&quot;: &quot;A String&quot;, # The ID of a bookmark in this document.
                  &quot;url&quot;: &quot;A String&quot;, # An external URL.
                  &quot;headingId&quot;: &quot;A String&quot;, # The ID of a heading in this document.
                },
                &quot;strikethrough&quot;: True or False, # Whether or not the text is struck through.
                &quot;weightedFontFamily&quot;: { # Represents a font family and weight of text. # The font family and rendered weight of the text. If an update request specifies values for both `weighted_font_family` and `bold`, the `weighted_font_family` is applied first, then `bold`. If `weighted_font_family#weight` is not set, it defaults to `400`. If `weighted_font_family` is set, then `weighted_font_family#font_family` must also be set with a non-empty value. Otherwise, a 400 bad request error is returned.
                  &quot;fontFamily&quot;: &quot;A String&quot;, # The font family of the text. The font family can be any font from the Font menu in Docs or from [Google Fonts] (https://fonts.google.com/). If the font name is unrecognized, the text is rendered in `Arial`.
                  &quot;weight&quot;: 42, # The weight of the font. This field can have any value that is a multiple of `100` between `100` and `900`, inclusive. This range corresponds to the numerical values described in the CSS 2.1 Specification, [section 15.6](https://www.w3.org/TR/CSS21/fonts.html#font-boldness), with non-numerical values disallowed. The default value is `400` (&quot;normal&quot;). The font weight makes up just one component of the rendered font weight. The rendered weight is determined by a combination of the `weight` and the text style&#x27;s resolved `bold` value, after accounting for inheritance: * If the text is bold and the weight is less than `400`, the rendered weight is 400. * If the text is bold and the weight is greater than or equal to `400` but is less than `700`, the rendered weight is `700`. * If the weight is greater than or equal to `700`, the rendered weight is equal to the weight. * If the text is not bold, the rendered weight is equal to the weight.
                },
                &quot;underline&quot;: True or False, # Whether or not the text is underlined.
                &quot;smallCaps&quot;: True or False, # Whether or not the text is in small capital letters.
              },
              &quot;nestingLevel&quot;: 42, # The nesting level of this paragraph in the list.
              &quot;listId&quot;: &quot;A String&quot;, # The ID of the list this paragraph belongs to.
            },
            &quot;suggestedBulletChanges&quot;: { # The suggested changes to this paragraph&#x27;s bullet.
              &quot;a_key&quot;: { # A suggested change to a Bullet.
                &quot;bulletSuggestionState&quot;: { # A mask that indicates which of the fields on the base Bullet have been changed in this suggestion. For any field set to true, there is a new suggested value. # A mask that indicates which of the fields on the base Bullet have been changed in this suggestion.
                  &quot;nestingLevelSuggested&quot;: True or False, # Indicates if there was a suggested change to the nesting_level.
                  &quot;textStyleSuggestionState&quot;: { # A mask that indicates which of the fields on the base TextStyle have been changed in this suggestion. For any field set to true, there is a new suggested value. # A mask that indicates which of the fields in text style have been changed in this suggestion.
                    &quot;backgroundColorSuggested&quot;: True or False, # Indicates if there was a suggested change to background_color.
                    &quot;fontSizeSuggested&quot;: True or False, # Indicates if there was a suggested change to font_size.
                    &quot;boldSuggested&quot;: True or False, # Indicates if there was a suggested change to bold.
                    &quot;baselineOffsetSuggested&quot;: True or False, # Indicates if there was a suggested change to baseline_offset.
                    &quot;foregroundColorSuggested&quot;: True or False, # Indicates if there was a suggested change to foreground_color.
                    &quot;italicSuggested&quot;: True or False, # Indicates if there was a suggested change to italic.
                    &quot;linkSuggested&quot;: True or False, # Indicates if there was a suggested change to link.
                    &quot;underlineSuggested&quot;: True or False, # Indicates if there was a suggested change to underline.
                    &quot;weightedFontFamilySuggested&quot;: True or False, # Indicates if there was a suggested change to weighted_font_family.
                    &quot;smallCapsSuggested&quot;: True or False, # Indicates if there was a suggested change to small_caps.
                    &quot;strikethroughSuggested&quot;: True or False, # Indicates if there was a suggested change to strikethrough.
                  },
                  &quot;listIdSuggested&quot;: True or False, # Indicates if there was a suggested change to the list_id.
                },
                &quot;bullet&quot;: { # Describes the bullet of a paragraph. # A Bullet that only includes the changes made in this suggestion. This can be used along with the bullet_suggestion_state to see which fields have changed and their new values.
                  &quot;textStyle&quot;: { # Represents the styling that can be applied to text. Inherited text styles are represented as unset fields in this message. A text style&#x27;s parent depends on where the text style is defined: * The TextStyle of text in a Paragraph inherits from the paragraph&#x27;s corresponding named style type. * The TextStyle on a named style inherits from the normal text named style. * The TextStyle of the normal text named style inherits from the default text style in the Docs editor. * The TextStyle on a Paragraph element that is contained in a table may inherit its text style from the table style. If the text style does not inherit from a parent, unsetting fields will revert the style to a value matching the defaults in the Docs editor. # The paragraph specific text style applied to this bullet.
                    &quot;italic&quot;: True or False, # Whether or not the text is italicized.
                    &quot;baselineOffset&quot;: &quot;A String&quot;, # The text&#x27;s vertical offset from its normal position. Text with `SUPERSCRIPT` or `SUBSCRIPT` baseline offsets is automatically rendered in a smaller font size, computed based on the `font_size` field. The `font_size` itself is not affected by changes in this field.
                    &quot;bold&quot;: True or False, # Whether or not the text is rendered as bold.
                    &quot;fontSize&quot;: { # A magnitude in a single direction in the specified units. # The size of the text&#x27;s font.
                      &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                      &quot;magnitude&quot;: 3.14, # The magnitude.
                    },
                    &quot;foregroundColor&quot;: { # A color that can either be fully opaque or fully transparent. # The foreground color of the text. If set, the color is either an RGB color or transparent, depending on the `color` field.
                      &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                        &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                          &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                          &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                          &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                        },
                      },
                    },
                    &quot;backgroundColor&quot;: { # A color that can either be fully opaque or fully transparent. # The background color of the text. If set, the color is either an RGB color or transparent, depending on the `color` field.
                      &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                        &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                          &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                          &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                          &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                        },
                      },
                    },
                    &quot;link&quot;: { # A reference to another portion of a document or an external URL resource. # The hyperlink destination of the text. If unset, there is no link. Links are not inherited from parent text. Changing the link in an update request causes some other changes to the text style of the range: * When setting a link, the text foreground color will be updated to the default link color and the text will be underlined. If these fields are modified in the same request, those values will be used instead of the link defaults. * Setting a link on a text range that overlaps with an existing link will also update the existing link to point to the new URL. * Links are not settable on newline characters. As a result, setting a link on a text range that crosses a paragraph boundary, such as `&quot;ABC\n123&quot;`, will separate the newline character(s) into their own text runs. The link will be applied separately to the runs before and after the newline. * Removing a link will update the text style of the range to match the style of the preceding text (or the default text styles if the preceding text is another link) unless different styles are being set in the same request.
                      &quot;bookmarkId&quot;: &quot;A String&quot;, # The ID of a bookmark in this document.
                      &quot;url&quot;: &quot;A String&quot;, # An external URL.
                      &quot;headingId&quot;: &quot;A String&quot;, # The ID of a heading in this document.
                    },
                    &quot;strikethrough&quot;: True or False, # Whether or not the text is struck through.
                    &quot;weightedFontFamily&quot;: { # Represents a font family and weight of text. # The font family and rendered weight of the text. If an update request specifies values for both `weighted_font_family` and `bold`, the `weighted_font_family` is applied first, then `bold`. If `weighted_font_family#weight` is not set, it defaults to `400`. If `weighted_font_family` is set, then `weighted_font_family#font_family` must also be set with a non-empty value. Otherwise, a 400 bad request error is returned.
                      &quot;fontFamily&quot;: &quot;A String&quot;, # The font family of the text. The font family can be any font from the Font menu in Docs or from [Google Fonts] (https://fonts.google.com/). If the font name is unrecognized, the text is rendered in `Arial`.
                      &quot;weight&quot;: 42, # The weight of the font. This field can have any value that is a multiple of `100` between `100` and `900`, inclusive. This range corresponds to the numerical values described in the CSS 2.1 Specification, [section 15.6](https://www.w3.org/TR/CSS21/fonts.html#font-boldness), with non-numerical values disallowed. The default value is `400` (&quot;normal&quot;). The font weight makes up just one component of the rendered font weight. The rendered weight is determined by a combination of the `weight` and the text style&#x27;s resolved `bold` value, after accounting for inheritance: * If the text is bold and the weight is less than `400`, the rendered weight is 400. * If the text is bold and the weight is greater than or equal to `400` but is less than `700`, the rendered weight is `700`. * If the weight is greater than or equal to `700`, the rendered weight is equal to the weight. * If the text is not bold, the rendered weight is equal to the weight.
                    },
                    &quot;underline&quot;: True or False, # Whether or not the text is underlined.
                    &quot;smallCaps&quot;: True or False, # Whether or not the text is in small capital letters.
                  },
                  &quot;nestingLevel&quot;: 42, # The nesting level of this paragraph in the list.
                  &quot;listId&quot;: &quot;A String&quot;, # The ID of the list this paragraph belongs to.
                },
              },
            },
            &quot;suggestedPositionedObjectIds&quot;: { # The IDs of the positioned objects that are suggested to be attached to this paragraph, keyed by suggestion ID.
              &quot;a_key&quot;: { # A collection of object IDs.
                &quot;objectIds&quot;: [ # The object IDs.
                  &quot;A String&quot;,
                ],
              },
            },
            &quot;elements&quot;: [ # The content of the paragraph broken down into its component parts.
              { # A ParagraphElement describes content within a Paragraph.
                &quot;textRun&quot;: { # A ParagraphElement that represents a run of text that all has the same styling. # A text run paragraph element.
                  &quot;suggestedInsertionIds&quot;: [ # The suggested insertion IDs. A TextRun may have multiple insertion IDs if it is a nested suggested change. If empty, then this is not a suggested insertion.
                    &quot;A String&quot;,
                  ],
                  &quot;content&quot;: &quot;A String&quot;, # The text of this run. Any non-text elements in the run are replaced with the Unicode character U+E907.
                  &quot;textStyle&quot;: { # Represents the styling that can be applied to text. Inherited text styles are represented as unset fields in this message. A text style&#x27;s parent depends on where the text style is defined: * The TextStyle of text in a Paragraph inherits from the paragraph&#x27;s corresponding named style type. * The TextStyle on a named style inherits from the normal text named style. * The TextStyle of the normal text named style inherits from the default text style in the Docs editor. * The TextStyle on a Paragraph element that is contained in a table may inherit its text style from the table style. If the text style does not inherit from a parent, unsetting fields will revert the style to a value matching the defaults in the Docs editor. # The text style of this run.
                    &quot;italic&quot;: True or False, # Whether or not the text is italicized.
                    &quot;baselineOffset&quot;: &quot;A String&quot;, # The text&#x27;s vertical offset from its normal position. Text with `SUPERSCRIPT` or `SUBSCRIPT` baseline offsets is automatically rendered in a smaller font size, computed based on the `font_size` field. The `font_size` itself is not affected by changes in this field.
                    &quot;bold&quot;: True or False, # Whether or not the text is rendered as bold.
                    &quot;fontSize&quot;: { # A magnitude in a single direction in the specified units. # The size of the text&#x27;s font.
                      &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                      &quot;magnitude&quot;: 3.14, # The magnitude.
                    },
                    &quot;foregroundColor&quot;: { # A color that can either be fully opaque or fully transparent. # The foreground color of the text. If set, the color is either an RGB color or transparent, depending on the `color` field.
                      &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                        &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                          &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                          &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                          &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                        },
                      },
                    },
                    &quot;backgroundColor&quot;: { # A color that can either be fully opaque or fully transparent. # The background color of the text. If set, the color is either an RGB color or transparent, depending on the `color` field.
                      &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                        &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                          &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                          &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                          &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                        },
                      },
                    },
                    &quot;link&quot;: { # A reference to another portion of a document or an external URL resource. # The hyperlink destination of the text. If unset, there is no link. Links are not inherited from parent text. Changing the link in an update request causes some other changes to the text style of the range: * When setting a link, the text foreground color will be updated to the default link color and the text will be underlined. If these fields are modified in the same request, those values will be used instead of the link defaults. * Setting a link on a text range that overlaps with an existing link will also update the existing link to point to the new URL. * Links are not settable on newline characters. As a result, setting a link on a text range that crosses a paragraph boundary, such as `&quot;ABC\n123&quot;`, will separate the newline character(s) into their own text runs. The link will be applied separately to the runs before and after the newline. * Removing a link will update the text style of the range to match the style of the preceding text (or the default text styles if the preceding text is another link) unless different styles are being set in the same request.
                      &quot;bookmarkId&quot;: &quot;A String&quot;, # The ID of a bookmark in this document.
                      &quot;url&quot;: &quot;A String&quot;, # An external URL.
                      &quot;headingId&quot;: &quot;A String&quot;, # The ID of a heading in this document.
                    },
                    &quot;strikethrough&quot;: True or False, # Whether or not the text is struck through.
                    &quot;weightedFontFamily&quot;: { # Represents a font family and weight of text. # The font family and rendered weight of the text. If an update request specifies values for both `weighted_font_family` and `bold`, the `weighted_font_family` is applied first, then `bold`. If `weighted_font_family#weight` is not set, it defaults to `400`. If `weighted_font_family` is set, then `weighted_font_family#font_family` must also be set with a non-empty value. Otherwise, a 400 bad request error is returned.
                      &quot;fontFamily&quot;: &quot;A String&quot;, # The font family of the text. The font family can be any font from the Font menu in Docs or from [Google Fonts] (https://fonts.google.com/). If the font name is unrecognized, the text is rendered in `Arial`.
                      &quot;weight&quot;: 42, # The weight of the font. This field can have any value that is a multiple of `100` between `100` and `900`, inclusive. This range corresponds to the numerical values described in the CSS 2.1 Specification, [section 15.6](https://www.w3.org/TR/CSS21/fonts.html#font-boldness), with non-numerical values disallowed. The default value is `400` (&quot;normal&quot;). The font weight makes up just one component of the rendered font weight. The rendered weight is determined by a combination of the `weight` and the text style&#x27;s resolved `bold` value, after accounting for inheritance: * If the text is bold and the weight is less than `400`, the rendered weight is 400. * If the text is bold and the weight is greater than or equal to `400` but is less than `700`, the rendered weight is `700`. * If the weight is greater than or equal to `700`, the rendered weight is equal to the weight. * If the text is not bold, the rendered weight is equal to the weight.
                    },
                    &quot;underline&quot;: True or False, # Whether or not the text is underlined.
                    &quot;smallCaps&quot;: True or False, # Whether or not the text is in small capital letters.
                  },
                  &quot;suggestedTextStyleChanges&quot;: { # The suggested text style changes to this run, keyed by suggestion ID.
                    &quot;a_key&quot;: { # A suggested change to a TextStyle.
                      &quot;textStyleSuggestionState&quot;: { # A mask that indicates which of the fields on the base TextStyle have been changed in this suggestion. For any field set to true, there is a new suggested value. # A mask that indicates which of the fields on the base TextStyle have been changed in this suggestion.
                        &quot;backgroundColorSuggested&quot;: True or False, # Indicates if there was a suggested change to background_color.
                        &quot;fontSizeSuggested&quot;: True or False, # Indicates if there was a suggested change to font_size.
                        &quot;boldSuggested&quot;: True or False, # Indicates if there was a suggested change to bold.
                        &quot;baselineOffsetSuggested&quot;: True or False, # Indicates if there was a suggested change to baseline_offset.
                        &quot;foregroundColorSuggested&quot;: True or False, # Indicates if there was a suggested change to foreground_color.
                        &quot;italicSuggested&quot;: True or False, # Indicates if there was a suggested change to italic.
                        &quot;linkSuggested&quot;: True or False, # Indicates if there was a suggested change to link.
                        &quot;underlineSuggested&quot;: True or False, # Indicates if there was a suggested change to underline.
                        &quot;weightedFontFamilySuggested&quot;: True or False, # Indicates if there was a suggested change to weighted_font_family.
                        &quot;smallCapsSuggested&quot;: True or False, # Indicates if there was a suggested change to small_caps.
                        &quot;strikethroughSuggested&quot;: True or False, # Indicates if there was a suggested change to strikethrough.
                      },
                      &quot;textStyle&quot;: { # Represents the styling that can be applied to text. Inherited text styles are represented as unset fields in this message. A text style&#x27;s parent depends on where the text style is defined: * The TextStyle of text in a Paragraph inherits from the paragraph&#x27;s corresponding named style type. * The TextStyle on a named style inherits from the normal text named style. * The TextStyle of the normal text named style inherits from the default text style in the Docs editor. * The TextStyle on a Paragraph element that is contained in a table may inherit its text style from the table style. If the text style does not inherit from a parent, unsetting fields will revert the style to a value matching the defaults in the Docs editor. # A TextStyle that only includes the changes made in this suggestion. This can be used along with the text_style_suggestion_state to see which fields have changed and their new values.
                        &quot;italic&quot;: True or False, # Whether or not the text is italicized.
                        &quot;baselineOffset&quot;: &quot;A String&quot;, # The text&#x27;s vertical offset from its normal position. Text with `SUPERSCRIPT` or `SUBSCRIPT` baseline offsets is automatically rendered in a smaller font size, computed based on the `font_size` field. The `font_size` itself is not affected by changes in this field.
                        &quot;bold&quot;: True or False, # Whether or not the text is rendered as bold.
                        &quot;fontSize&quot;: { # A magnitude in a single direction in the specified units. # The size of the text&#x27;s font.
                          &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                          &quot;magnitude&quot;: 3.14, # The magnitude.
                        },
                        &quot;foregroundColor&quot;: { # A color that can either be fully opaque or fully transparent. # The foreground color of the text. If set, the color is either an RGB color or transparent, depending on the `color` field.
                          &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                            &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                              &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                              &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                              &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                            },
                          },
                        },
                        &quot;backgroundColor&quot;: { # A color that can either be fully opaque or fully transparent. # The background color of the text. If set, the color is either an RGB color or transparent, depending on the `color` field.
                          &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                            &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                              &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                              &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                              &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                            },
                          },
                        },
                        &quot;link&quot;: { # A reference to another portion of a document or an external URL resource. # The hyperlink destination of the text. If unset, there is no link. Links are not inherited from parent text. Changing the link in an update request causes some other changes to the text style of the range: * When setting a link, the text foreground color will be updated to the default link color and the text will be underlined. If these fields are modified in the same request, those values will be used instead of the link defaults. * Setting a link on a text range that overlaps with an existing link will also update the existing link to point to the new URL. * Links are not settable on newline characters. As a result, setting a link on a text range that crosses a paragraph boundary, such as `&quot;ABC\n123&quot;`, will separate the newline character(s) into their own text runs. The link will be applied separately to the runs before and after the newline. * Removing a link will update the text style of the range to match the style of the preceding text (or the default text styles if the preceding text is another link) unless different styles are being set in the same request.
                          &quot;bookmarkId&quot;: &quot;A String&quot;, # The ID of a bookmark in this document.
                          &quot;url&quot;: &quot;A String&quot;, # An external URL.
                          &quot;headingId&quot;: &quot;A String&quot;, # The ID of a heading in this document.
                        },
                        &quot;strikethrough&quot;: True or False, # Whether or not the text is struck through.
                        &quot;weightedFontFamily&quot;: { # Represents a font family and weight of text. # The font family and rendered weight of the text. If an update request specifies values for both `weighted_font_family` and `bold`, the `weighted_font_family` is applied first, then `bold`. If `weighted_font_family#weight` is not set, it defaults to `400`. If `weighted_font_family` is set, then `weighted_font_family#font_family` must also be set with a non-empty value. Otherwise, a 400 bad request error is returned.
                          &quot;fontFamily&quot;: &quot;A String&quot;, # The font family of the text. The font family can be any font from the Font menu in Docs or from [Google Fonts] (https://fonts.google.com/). If the font name is unrecognized, the text is rendered in `Arial`.
                          &quot;weight&quot;: 42, # The weight of the font. This field can have any value that is a multiple of `100` between `100` and `900`, inclusive. This range corresponds to the numerical values described in the CSS 2.1 Specification, [section 15.6](https://www.w3.org/TR/CSS21/fonts.html#font-boldness), with non-numerical values disallowed. The default value is `400` (&quot;normal&quot;). The font weight makes up just one component of the rendered font weight. The rendered weight is determined by a combination of the `weight` and the text style&#x27;s resolved `bold` value, after accounting for inheritance: * If the text is bold and the weight is less than `400`, the rendered weight is 400. * If the text is bold and the weight is greater than or equal to `400` but is less than `700`, the rendered weight is `700`. * If the weight is greater than or equal to `700`, the rendered weight is equal to the weight. * If the text is not bold, the rendered weight is equal to the weight.
                        },
                        &quot;underline&quot;: True or False, # Whether or not the text is underlined.
                        &quot;smallCaps&quot;: True or False, # Whether or not the text is in small capital letters.
                      },
                    },
                  },
                  &quot;suggestedDeletionIds&quot;: [ # The suggested deletion IDs. If empty, then there are no suggested deletions of this content.
                    &quot;A String&quot;,
                  ],
                },
                &quot;pageBreak&quot;: { # A ParagraphElement representing a page break. A page break makes the subsequent text start at the top of the next page. # A page break paragraph element.
                  &quot;suggestedInsertionIds&quot;: [ # The suggested insertion IDs. A PageBreak may have multiple insertion IDs if it is a nested suggested change. If empty, then this is not a suggested insertion.
                    &quot;A String&quot;,
                  ],
                  &quot;textStyle&quot;: { # Represents the styling that can be applied to text. Inherited text styles are represented as unset fields in this message. A text style&#x27;s parent depends on where the text style is defined: * The TextStyle of text in a Paragraph inherits from the paragraph&#x27;s corresponding named style type. * The TextStyle on a named style inherits from the normal text named style. * The TextStyle of the normal text named style inherits from the default text style in the Docs editor. * The TextStyle on a Paragraph element that is contained in a table may inherit its text style from the table style. If the text style does not inherit from a parent, unsetting fields will revert the style to a value matching the defaults in the Docs editor. # The text style of this PageBreak. Similar to text content, like text runs and footnote references, the text style of a page break can affect content layout as well as the styling of text inserted adjacent to it.
                    &quot;italic&quot;: True or False, # Whether or not the text is italicized.
                    &quot;baselineOffset&quot;: &quot;A String&quot;, # The text&#x27;s vertical offset from its normal position. Text with `SUPERSCRIPT` or `SUBSCRIPT` baseline offsets is automatically rendered in a smaller font size, computed based on the `font_size` field. The `font_size` itself is not affected by changes in this field.
                    &quot;bold&quot;: True or False, # Whether or not the text is rendered as bold.
                    &quot;fontSize&quot;: { # A magnitude in a single direction in the specified units. # The size of the text&#x27;s font.
                      &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                      &quot;magnitude&quot;: 3.14, # The magnitude.
                    },
                    &quot;foregroundColor&quot;: { # A color that can either be fully opaque or fully transparent. # The foreground color of the text. If set, the color is either an RGB color or transparent, depending on the `color` field.
                      &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                        &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                          &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                          &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                          &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                        },
                      },
                    },
                    &quot;backgroundColor&quot;: { # A color that can either be fully opaque or fully transparent. # The background color of the text. If set, the color is either an RGB color or transparent, depending on the `color` field.
                      &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                        &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                          &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                          &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                          &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                        },
                      },
                    },
                    &quot;link&quot;: { # A reference to another portion of a document or an external URL resource. # The hyperlink destination of the text. If unset, there is no link. Links are not inherited from parent text. Changing the link in an update request causes some other changes to the text style of the range: * When setting a link, the text foreground color will be updated to the default link color and the text will be underlined. If these fields are modified in the same request, those values will be used instead of the link defaults. * Setting a link on a text range that overlaps with an existing link will also update the existing link to point to the new URL. * Links are not settable on newline characters. As a result, setting a link on a text range that crosses a paragraph boundary, such as `&quot;ABC\n123&quot;`, will separate the newline character(s) into their own text runs. The link will be applied separately to the runs before and after the newline. * Removing a link will update the text style of the range to match the style of the preceding text (or the default text styles if the preceding text is another link) unless different styles are being set in the same request.
                      &quot;bookmarkId&quot;: &quot;A String&quot;, # The ID of a bookmark in this document.
                      &quot;url&quot;: &quot;A String&quot;, # An external URL.
                      &quot;headingId&quot;: &quot;A String&quot;, # The ID of a heading in this document.
                    },
                    &quot;strikethrough&quot;: True or False, # Whether or not the text is struck through.
                    &quot;weightedFontFamily&quot;: { # Represents a font family and weight of text. # The font family and rendered weight of the text. If an update request specifies values for both `weighted_font_family` and `bold`, the `weighted_font_family` is applied first, then `bold`. If `weighted_font_family#weight` is not set, it defaults to `400`. If `weighted_font_family` is set, then `weighted_font_family#font_family` must also be set with a non-empty value. Otherwise, a 400 bad request error is returned.
                      &quot;fontFamily&quot;: &quot;A String&quot;, # The font family of the text. The font family can be any font from the Font menu in Docs or from [Google Fonts] (https://fonts.google.com/). If the font name is unrecognized, the text is rendered in `Arial`.
                      &quot;weight&quot;: 42, # The weight of the font. This field can have any value that is a multiple of `100` between `100` and `900`, inclusive. This range corresponds to the numerical values described in the CSS 2.1 Specification, [section 15.6](https://www.w3.org/TR/CSS21/fonts.html#font-boldness), with non-numerical values disallowed. The default value is `400` (&quot;normal&quot;). The font weight makes up just one component of the rendered font weight. The rendered weight is determined by a combination of the `weight` and the text style&#x27;s resolved `bold` value, after accounting for inheritance: * If the text is bold and the weight is less than `400`, the rendered weight is 400. * If the text is bold and the weight is greater than or equal to `400` but is less than `700`, the rendered weight is `700`. * If the weight is greater than or equal to `700`, the rendered weight is equal to the weight. * If the text is not bold, the rendered weight is equal to the weight.
                    },
                    &quot;underline&quot;: True or False, # Whether or not the text is underlined.
                    &quot;smallCaps&quot;: True or False, # Whether or not the text is in small capital letters.
                  },
                  &quot;suggestedTextStyleChanges&quot;: { # The suggested text style changes to this PageBreak, keyed by suggestion ID.
                    &quot;a_key&quot;: { # A suggested change to a TextStyle.
                      &quot;textStyleSuggestionState&quot;: { # A mask that indicates which of the fields on the base TextStyle have been changed in this suggestion. For any field set to true, there is a new suggested value. # A mask that indicates which of the fields on the base TextStyle have been changed in this suggestion.
                        &quot;backgroundColorSuggested&quot;: True or False, # Indicates if there was a suggested change to background_color.
                        &quot;fontSizeSuggested&quot;: True or False, # Indicates if there was a suggested change to font_size.
                        &quot;boldSuggested&quot;: True or False, # Indicates if there was a suggested change to bold.
                        &quot;baselineOffsetSuggested&quot;: True or False, # Indicates if there was a suggested change to baseline_offset.
                        &quot;foregroundColorSuggested&quot;: True or False, # Indicates if there was a suggested change to foreground_color.
                        &quot;italicSuggested&quot;: True or False, # Indicates if there was a suggested change to italic.
                        &quot;linkSuggested&quot;: True or False, # Indicates if there was a suggested change to link.
                        &quot;underlineSuggested&quot;: True or False, # Indicates if there was a suggested change to underline.
                        &quot;weightedFontFamilySuggested&quot;: True or False, # Indicates if there was a suggested change to weighted_font_family.
                        &quot;smallCapsSuggested&quot;: True or False, # Indicates if there was a suggested change to small_caps.
                        &quot;strikethroughSuggested&quot;: True or False, # Indicates if there was a suggested change to strikethrough.
                      },
                      &quot;textStyle&quot;: { # Represents the styling that can be applied to text. Inherited text styles are represented as unset fields in this message. A text style&#x27;s parent depends on where the text style is defined: * The TextStyle of text in a Paragraph inherits from the paragraph&#x27;s corresponding named style type. * The TextStyle on a named style inherits from the normal text named style. * The TextStyle of the normal text named style inherits from the default text style in the Docs editor. * The TextStyle on a Paragraph element that is contained in a table may inherit its text style from the table style. If the text style does not inherit from a parent, unsetting fields will revert the style to a value matching the defaults in the Docs editor. # A TextStyle that only includes the changes made in this suggestion. This can be used along with the text_style_suggestion_state to see which fields have changed and their new values.
                        &quot;italic&quot;: True or False, # Whether or not the text is italicized.
                        &quot;baselineOffset&quot;: &quot;A String&quot;, # The text&#x27;s vertical offset from its normal position. Text with `SUPERSCRIPT` or `SUBSCRIPT` baseline offsets is automatically rendered in a smaller font size, computed based on the `font_size` field. The `font_size` itself is not affected by changes in this field.
                        &quot;bold&quot;: True or False, # Whether or not the text is rendered as bold.
                        &quot;fontSize&quot;: { # A magnitude in a single direction in the specified units. # The size of the text&#x27;s font.
                          &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                          &quot;magnitude&quot;: 3.14, # The magnitude.
                        },
                        &quot;foregroundColor&quot;: { # A color that can either be fully opaque or fully transparent. # The foreground color of the text. If set, the color is either an RGB color or transparent, depending on the `color` field.
                          &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                            &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                              &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                              &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                              &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                            },
                          },
                        },
                        &quot;backgroundColor&quot;: { # A color that can either be fully opaque or fully transparent. # The background color of the text. If set, the color is either an RGB color or transparent, depending on the `color` field.
                          &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                            &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                              &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                              &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                              &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                            },
                          },
                        },
                        &quot;link&quot;: { # A reference to another portion of a document or an external URL resource. # The hyperlink destination of the text. If unset, there is no link. Links are not inherited from parent text. Changing the link in an update request causes some other changes to the text style of the range: * When setting a link, the text foreground color will be updated to the default link color and the text will be underlined. If these fields are modified in the same request, those values will be used instead of the link defaults. * Setting a link on a text range that overlaps with an existing link will also update the existing link to point to the new URL. * Links are not settable on newline characters. As a result, setting a link on a text range that crosses a paragraph boundary, such as `&quot;ABC\n123&quot;`, will separate the newline character(s) into their own text runs. The link will be applied separately to the runs before and after the newline. * Removing a link will update the text style of the range to match the style of the preceding text (or the default text styles if the preceding text is another link) unless different styles are being set in the same request.
                          &quot;bookmarkId&quot;: &quot;A String&quot;, # The ID of a bookmark in this document.
                          &quot;url&quot;: &quot;A String&quot;, # An external URL.
                          &quot;headingId&quot;: &quot;A String&quot;, # The ID of a heading in this document.
                        },
                        &quot;strikethrough&quot;: True or False, # Whether or not the text is struck through.
                        &quot;weightedFontFamily&quot;: { # Represents a font family and weight of text. # The font family and rendered weight of the text. If an update request specifies values for both `weighted_font_family` and `bold`, the `weighted_font_family` is applied first, then `bold`. If `weighted_font_family#weight` is not set, it defaults to `400`. If `weighted_font_family` is set, then `weighted_font_family#font_family` must also be set with a non-empty value. Otherwise, a 400 bad request error is returned.
                          &quot;fontFamily&quot;: &quot;A String&quot;, # The font family of the text. The font family can be any font from the Font menu in Docs or from [Google Fonts] (https://fonts.google.com/). If the font name is unrecognized, the text is rendered in `Arial`.
                          &quot;weight&quot;: 42, # The weight of the font. This field can have any value that is a multiple of `100` between `100` and `900`, inclusive. This range corresponds to the numerical values described in the CSS 2.1 Specification, [section 15.6](https://www.w3.org/TR/CSS21/fonts.html#font-boldness), with non-numerical values disallowed. The default value is `400` (&quot;normal&quot;). The font weight makes up just one component of the rendered font weight. The rendered weight is determined by a combination of the `weight` and the text style&#x27;s resolved `bold` value, after accounting for inheritance: * If the text is bold and the weight is less than `400`, the rendered weight is 400. * If the text is bold and the weight is greater than or equal to `400` but is less than `700`, the rendered weight is `700`. * If the weight is greater than or equal to `700`, the rendered weight is equal to the weight. * If the text is not bold, the rendered weight is equal to the weight.
                        },
                        &quot;underline&quot;: True or False, # Whether or not the text is underlined.
                        &quot;smallCaps&quot;: True or False, # Whether or not the text is in small capital letters.
                      },
                    },
                  },
                  &quot;suggestedDeletionIds&quot;: [ # The suggested deletion IDs. If empty, then there are no suggested deletions of this content.
                    &quot;A String&quot;,
                  ],
                },
                &quot;horizontalRule&quot;: { # A ParagraphElement representing a horizontal line. # A horizontal rule paragraph element.
                  &quot;suggestedInsertionIds&quot;: [ # The suggested insertion IDs. A HorizontalRule may have multiple insertion IDs if it is a nested suggested change. If empty, then this is not a suggested insertion.
                    &quot;A String&quot;,
                  ],
                  &quot;suggestedTextStyleChanges&quot;: { # The suggested text style changes to this HorizontalRule, keyed by suggestion ID.
                    &quot;a_key&quot;: { # A suggested change to a TextStyle.
                      &quot;textStyleSuggestionState&quot;: { # A mask that indicates which of the fields on the base TextStyle have been changed in this suggestion. For any field set to true, there is a new suggested value. # A mask that indicates which of the fields on the base TextStyle have been changed in this suggestion.
                        &quot;backgroundColorSuggested&quot;: True or False, # Indicates if there was a suggested change to background_color.
                        &quot;fontSizeSuggested&quot;: True or False, # Indicates if there was a suggested change to font_size.
                        &quot;boldSuggested&quot;: True or False, # Indicates if there was a suggested change to bold.
                        &quot;baselineOffsetSuggested&quot;: True or False, # Indicates if there was a suggested change to baseline_offset.
                        &quot;foregroundColorSuggested&quot;: True or False, # Indicates if there was a suggested change to foreground_color.
                        &quot;italicSuggested&quot;: True or False, # Indicates if there was a suggested change to italic.
                        &quot;linkSuggested&quot;: True or False, # Indicates if there was a suggested change to link.
                        &quot;underlineSuggested&quot;: True or False, # Indicates if there was a suggested change to underline.
                        &quot;weightedFontFamilySuggested&quot;: True or False, # Indicates if there was a suggested change to weighted_font_family.
                        &quot;smallCapsSuggested&quot;: True or False, # Indicates if there was a suggested change to small_caps.
                        &quot;strikethroughSuggested&quot;: True or False, # Indicates if there was a suggested change to strikethrough.
                      },
                      &quot;textStyle&quot;: { # Represents the styling that can be applied to text. Inherited text styles are represented as unset fields in this message. A text style&#x27;s parent depends on where the text style is defined: * The TextStyle of text in a Paragraph inherits from the paragraph&#x27;s corresponding named style type. * The TextStyle on a named style inherits from the normal text named style. * The TextStyle of the normal text named style inherits from the default text style in the Docs editor. * The TextStyle on a Paragraph element that is contained in a table may inherit its text style from the table style. If the text style does not inherit from a parent, unsetting fields will revert the style to a value matching the defaults in the Docs editor. # A TextStyle that only includes the changes made in this suggestion. This can be used along with the text_style_suggestion_state to see which fields have changed and their new values.
                        &quot;italic&quot;: True or False, # Whether or not the text is italicized.
                        &quot;baselineOffset&quot;: &quot;A String&quot;, # The text&#x27;s vertical offset from its normal position. Text with `SUPERSCRIPT` or `SUBSCRIPT` baseline offsets is automatically rendered in a smaller font size, computed based on the `font_size` field. The `font_size` itself is not affected by changes in this field.
                        &quot;bold&quot;: True or False, # Whether or not the text is rendered as bold.
                        &quot;fontSize&quot;: { # A magnitude in a single direction in the specified units. # The size of the text&#x27;s font.
                          &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                          &quot;magnitude&quot;: 3.14, # The magnitude.
                        },
                        &quot;foregroundColor&quot;: { # A color that can either be fully opaque or fully transparent. # The foreground color of the text. If set, the color is either an RGB color or transparent, depending on the `color` field.
                          &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                            &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                              &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                              &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                              &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                            },
                          },
                        },
                        &quot;backgroundColor&quot;: { # A color that can either be fully opaque or fully transparent. # The background color of the text. If set, the color is either an RGB color or transparent, depending on the `color` field.
                          &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                            &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                              &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                              &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                              &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                            },
                          },
                        },
                        &quot;link&quot;: { # A reference to another portion of a document or an external URL resource. # The hyperlink destination of the text. If unset, there is no link. Links are not inherited from parent text. Changing the link in an update request causes some other changes to the text style of the range: * When setting a link, the text foreground color will be updated to the default link color and the text will be underlined. If these fields are modified in the same request, those values will be used instead of the link defaults. * Setting a link on a text range that overlaps with an existing link will also update the existing link to point to the new URL. * Links are not settable on newline characters. As a result, setting a link on a text range that crosses a paragraph boundary, such as `&quot;ABC\n123&quot;`, will separate the newline character(s) into their own text runs. The link will be applied separately to the runs before and after the newline. * Removing a link will update the text style of the range to match the style of the preceding text (or the default text styles if the preceding text is another link) unless different styles are being set in the same request.
                          &quot;bookmarkId&quot;: &quot;A String&quot;, # The ID of a bookmark in this document.
                          &quot;url&quot;: &quot;A String&quot;, # An external URL.
                          &quot;headingId&quot;: &quot;A String&quot;, # The ID of a heading in this document.
                        },
                        &quot;strikethrough&quot;: True or False, # Whether or not the text is struck through.
                        &quot;weightedFontFamily&quot;: { # Represents a font family and weight of text. # The font family and rendered weight of the text. If an update request specifies values for both `weighted_font_family` and `bold`, the `weighted_font_family` is applied first, then `bold`. If `weighted_font_family#weight` is not set, it defaults to `400`. If `weighted_font_family` is set, then `weighted_font_family#font_family` must also be set with a non-empty value. Otherwise, a 400 bad request error is returned.
                          &quot;fontFamily&quot;: &quot;A String&quot;, # The font family of the text. The font family can be any font from the Font menu in Docs or from [Google Fonts] (https://fonts.google.com/). If the font name is unrecognized, the text is rendered in `Arial`.
                          &quot;weight&quot;: 42, # The weight of the font. This field can have any value that is a multiple of `100` between `100` and `900`, inclusive. This range corresponds to the numerical values described in the CSS 2.1 Specification, [section 15.6](https://www.w3.org/TR/CSS21/fonts.html#font-boldness), with non-numerical values disallowed. The default value is `400` (&quot;normal&quot;). The font weight makes up just one component of the rendered font weight. The rendered weight is determined by a combination of the `weight` and the text style&#x27;s resolved `bold` value, after accounting for inheritance: * If the text is bold and the weight is less than `400`, the rendered weight is 400. * If the text is bold and the weight is greater than or equal to `400` but is less than `700`, the rendered weight is `700`. * If the weight is greater than or equal to `700`, the rendered weight is equal to the weight. * If the text is not bold, the rendered weight is equal to the weight.
                        },
                        &quot;underline&quot;: True or False, # Whether or not the text is underlined.
                        &quot;smallCaps&quot;: True or False, # Whether or not the text is in small capital letters.
                      },
                    },
                  },
                  &quot;suggestedDeletionIds&quot;: [ # The suggested deletion IDs. If empty, then there are no suggested deletions of this content.
                    &quot;A String&quot;,
                  ],
                  &quot;textStyle&quot;: { # Represents the styling that can be applied to text. Inherited text styles are represented as unset fields in this message. A text style&#x27;s parent depends on where the text style is defined: * The TextStyle of text in a Paragraph inherits from the paragraph&#x27;s corresponding named style type. * The TextStyle on a named style inherits from the normal text named style. * The TextStyle of the normal text named style inherits from the default text style in the Docs editor. * The TextStyle on a Paragraph element that is contained in a table may inherit its text style from the table style. If the text style does not inherit from a parent, unsetting fields will revert the style to a value matching the defaults in the Docs editor. # The text style of this HorizontalRule. Similar to text content, like text runs and footnote references, the text style of a horizontal rule can affect content layout as well as the styling of text inserted adjacent to it.
                    &quot;italic&quot;: True or False, # Whether or not the text is italicized.
                    &quot;baselineOffset&quot;: &quot;A String&quot;, # The text&#x27;s vertical offset from its normal position. Text with `SUPERSCRIPT` or `SUBSCRIPT` baseline offsets is automatically rendered in a smaller font size, computed based on the `font_size` field. The `font_size` itself is not affected by changes in this field.
                    &quot;bold&quot;: True or False, # Whether or not the text is rendered as bold.
                    &quot;fontSize&quot;: { # A magnitude in a single direction in the specified units. # The size of the text&#x27;s font.
                      &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                      &quot;magnitude&quot;: 3.14, # The magnitude.
                    },
                    &quot;foregroundColor&quot;: { # A color that can either be fully opaque or fully transparent. # The foreground color of the text. If set, the color is either an RGB color or transparent, depending on the `color` field.
                      &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                        &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                          &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                          &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                          &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                        },
                      },
                    },
                    &quot;backgroundColor&quot;: { # A color that can either be fully opaque or fully transparent. # The background color of the text. If set, the color is either an RGB color or transparent, depending on the `color` field.
                      &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                        &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                          &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                          &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                          &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                        },
                      },
                    },
                    &quot;link&quot;: { # A reference to another portion of a document or an external URL resource. # The hyperlink destination of the text. If unset, there is no link. Links are not inherited from parent text. Changing the link in an update request causes some other changes to the text style of the range: * When setting a link, the text foreground color will be updated to the default link color and the text will be underlined. If these fields are modified in the same request, those values will be used instead of the link defaults. * Setting a link on a text range that overlaps with an existing link will also update the existing link to point to the new URL. * Links are not settable on newline characters. As a result, setting a link on a text range that crosses a paragraph boundary, such as `&quot;ABC\n123&quot;`, will separate the newline character(s) into their own text runs. The link will be applied separately to the runs before and after the newline. * Removing a link will update the text style of the range to match the style of the preceding text (or the default text styles if the preceding text is another link) unless different styles are being set in the same request.
                      &quot;bookmarkId&quot;: &quot;A String&quot;, # The ID of a bookmark in this document.
                      &quot;url&quot;: &quot;A String&quot;, # An external URL.
                      &quot;headingId&quot;: &quot;A String&quot;, # The ID of a heading in this document.
                    },
                    &quot;strikethrough&quot;: True or False, # Whether or not the text is struck through.
                    &quot;weightedFontFamily&quot;: { # Represents a font family and weight of text. # The font family and rendered weight of the text. If an update request specifies values for both `weighted_font_family` and `bold`, the `weighted_font_family` is applied first, then `bold`. If `weighted_font_family#weight` is not set, it defaults to `400`. If `weighted_font_family` is set, then `weighted_font_family#font_family` must also be set with a non-empty value. Otherwise, a 400 bad request error is returned.
                      &quot;fontFamily&quot;: &quot;A String&quot;, # The font family of the text. The font family can be any font from the Font menu in Docs or from [Google Fonts] (https://fonts.google.com/). If the font name is unrecognized, the text is rendered in `Arial`.
                      &quot;weight&quot;: 42, # The weight of the font. This field can have any value that is a multiple of `100` between `100` and `900`, inclusive. This range corresponds to the numerical values described in the CSS 2.1 Specification, [section 15.6](https://www.w3.org/TR/CSS21/fonts.html#font-boldness), with non-numerical values disallowed. The default value is `400` (&quot;normal&quot;). The font weight makes up just one component of the rendered font weight. The rendered weight is determined by a combination of the `weight` and the text style&#x27;s resolved `bold` value, after accounting for inheritance: * If the text is bold and the weight is less than `400`, the rendered weight is 400. * If the text is bold and the weight is greater than or equal to `400` but is less than `700`, the rendered weight is `700`. * If the weight is greater than or equal to `700`, the rendered weight is equal to the weight. * If the text is not bold, the rendered weight is equal to the weight.
                    },
                    &quot;underline&quot;: True or False, # Whether or not the text is underlined.
                    &quot;smallCaps&quot;: True or False, # Whether or not the text is in small capital letters.
                  },
                },
                &quot;autoText&quot;: { # A ParagraphElement representing a spot in the text that is dynamically replaced with content that can change over time, like a page number. # An auto text paragraph element.
                  &quot;suggestedDeletionIds&quot;: [ # The suggested deletion IDs. If empty, then there are no suggested deletions of this content.
                    &quot;A String&quot;,
                  ],
                  &quot;suggestedInsertionIds&quot;: [ # The suggested insertion IDs. An AutoText may have multiple insertion IDs if it is a nested suggested change. If empty, then this is not a suggested insertion.
                    &quot;A String&quot;,
                  ],
                  &quot;suggestedTextStyleChanges&quot;: { # The suggested text style changes to this AutoText, keyed by suggestion ID.
                    &quot;a_key&quot;: { # A suggested change to a TextStyle.
                      &quot;textStyleSuggestionState&quot;: { # A mask that indicates which of the fields on the base TextStyle have been changed in this suggestion. For any field set to true, there is a new suggested value. # A mask that indicates which of the fields on the base TextStyle have been changed in this suggestion.
                        &quot;backgroundColorSuggested&quot;: True or False, # Indicates if there was a suggested change to background_color.
                        &quot;fontSizeSuggested&quot;: True or False, # Indicates if there was a suggested change to font_size.
                        &quot;boldSuggested&quot;: True or False, # Indicates if there was a suggested change to bold.
                        &quot;baselineOffsetSuggested&quot;: True or False, # Indicates if there was a suggested change to baseline_offset.
                        &quot;foregroundColorSuggested&quot;: True or False, # Indicates if there was a suggested change to foreground_color.
                        &quot;italicSuggested&quot;: True or False, # Indicates if there was a suggested change to italic.
                        &quot;linkSuggested&quot;: True or False, # Indicates if there was a suggested change to link.
                        &quot;underlineSuggested&quot;: True or False, # Indicates if there was a suggested change to underline.
                        &quot;weightedFontFamilySuggested&quot;: True or False, # Indicates if there was a suggested change to weighted_font_family.
                        &quot;smallCapsSuggested&quot;: True or False, # Indicates if there was a suggested change to small_caps.
                        &quot;strikethroughSuggested&quot;: True or False, # Indicates if there was a suggested change to strikethrough.
                      },
                      &quot;textStyle&quot;: { # Represents the styling that can be applied to text. Inherited text styles are represented as unset fields in this message. A text style&#x27;s parent depends on where the text style is defined: * The TextStyle of text in a Paragraph inherits from the paragraph&#x27;s corresponding named style type. * The TextStyle on a named style inherits from the normal text named style. * The TextStyle of the normal text named style inherits from the default text style in the Docs editor. * The TextStyle on a Paragraph element that is contained in a table may inherit its text style from the table style. If the text style does not inherit from a parent, unsetting fields will revert the style to a value matching the defaults in the Docs editor. # A TextStyle that only includes the changes made in this suggestion. This can be used along with the text_style_suggestion_state to see which fields have changed and their new values.
                        &quot;italic&quot;: True or False, # Whether or not the text is italicized.
                        &quot;baselineOffset&quot;: &quot;A String&quot;, # The text&#x27;s vertical offset from its normal position. Text with `SUPERSCRIPT` or `SUBSCRIPT` baseline offsets is automatically rendered in a smaller font size, computed based on the `font_size` field. The `font_size` itself is not affected by changes in this field.
                        &quot;bold&quot;: True or False, # Whether or not the text is rendered as bold.
                        &quot;fontSize&quot;: { # A magnitude in a single direction in the specified units. # The size of the text&#x27;s font.
                          &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                          &quot;magnitude&quot;: 3.14, # The magnitude.
                        },
                        &quot;foregroundColor&quot;: { # A color that can either be fully opaque or fully transparent. # The foreground color of the text. If set, the color is either an RGB color or transparent, depending on the `color` field.
                          &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                            &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                              &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                              &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                              &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                            },
                          },
                        },
                        &quot;backgroundColor&quot;: { # A color that can either be fully opaque or fully transparent. # The background color of the text. If set, the color is either an RGB color or transparent, depending on the `color` field.
                          &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                            &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                              &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                              &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                              &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                            },
                          },
                        },
                        &quot;link&quot;: { # A reference to another portion of a document or an external URL resource. # The hyperlink destination of the text. If unset, there is no link. Links are not inherited from parent text. Changing the link in an update request causes some other changes to the text style of the range: * When setting a link, the text foreground color will be updated to the default link color and the text will be underlined. If these fields are modified in the same request, those values will be used instead of the link defaults. * Setting a link on a text range that overlaps with an existing link will also update the existing link to point to the new URL. * Links are not settable on newline characters. As a result, setting a link on a text range that crosses a paragraph boundary, such as `&quot;ABC\n123&quot;`, will separate the newline character(s) into their own text runs. The link will be applied separately to the runs before and after the newline. * Removing a link will update the text style of the range to match the style of the preceding text (or the default text styles if the preceding text is another link) unless different styles are being set in the same request.
                          &quot;bookmarkId&quot;: &quot;A String&quot;, # The ID of a bookmark in this document.
                          &quot;url&quot;: &quot;A String&quot;, # An external URL.
                          &quot;headingId&quot;: &quot;A String&quot;, # The ID of a heading in this document.
                        },
                        &quot;strikethrough&quot;: True or False, # Whether or not the text is struck through.
                        &quot;weightedFontFamily&quot;: { # Represents a font family and weight of text. # The font family and rendered weight of the text. If an update request specifies values for both `weighted_font_family` and `bold`, the `weighted_font_family` is applied first, then `bold`. If `weighted_font_family#weight` is not set, it defaults to `400`. If `weighted_font_family` is set, then `weighted_font_family#font_family` must also be set with a non-empty value. Otherwise, a 400 bad request error is returned.
                          &quot;fontFamily&quot;: &quot;A String&quot;, # The font family of the text. The font family can be any font from the Font menu in Docs or from [Google Fonts] (https://fonts.google.com/). If the font name is unrecognized, the text is rendered in `Arial`.
                          &quot;weight&quot;: 42, # The weight of the font. This field can have any value that is a multiple of `100` between `100` and `900`, inclusive. This range corresponds to the numerical values described in the CSS 2.1 Specification, [section 15.6](https://www.w3.org/TR/CSS21/fonts.html#font-boldness), with non-numerical values disallowed. The default value is `400` (&quot;normal&quot;). The font weight makes up just one component of the rendered font weight. The rendered weight is determined by a combination of the `weight` and the text style&#x27;s resolved `bold` value, after accounting for inheritance: * If the text is bold and the weight is less than `400`, the rendered weight is 400. * If the text is bold and the weight is greater than or equal to `400` but is less than `700`, the rendered weight is `700`. * If the weight is greater than or equal to `700`, the rendered weight is equal to the weight. * If the text is not bold, the rendered weight is equal to the weight.
                        },
                        &quot;underline&quot;: True or False, # Whether or not the text is underlined.
                        &quot;smallCaps&quot;: True or False, # Whether or not the text is in small capital letters.
                      },
                    },
                  },
                  &quot;type&quot;: &quot;A String&quot;, # The type of this auto text.
                  &quot;textStyle&quot;: { # Represents the styling that can be applied to text. Inherited text styles are represented as unset fields in this message. A text style&#x27;s parent depends on where the text style is defined: * The TextStyle of text in a Paragraph inherits from the paragraph&#x27;s corresponding named style type. * The TextStyle on a named style inherits from the normal text named style. * The TextStyle of the normal text named style inherits from the default text style in the Docs editor. * The TextStyle on a Paragraph element that is contained in a table may inherit its text style from the table style. If the text style does not inherit from a parent, unsetting fields will revert the style to a value matching the defaults in the Docs editor. # The text style of this AutoText.
                    &quot;italic&quot;: True or False, # Whether or not the text is italicized.
                    &quot;baselineOffset&quot;: &quot;A String&quot;, # The text&#x27;s vertical offset from its normal position. Text with `SUPERSCRIPT` or `SUBSCRIPT` baseline offsets is automatically rendered in a smaller font size, computed based on the `font_size` field. The `font_size` itself is not affected by changes in this field.
                    &quot;bold&quot;: True or False, # Whether or not the text is rendered as bold.
                    &quot;fontSize&quot;: { # A magnitude in a single direction in the specified units. # The size of the text&#x27;s font.
                      &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                      &quot;magnitude&quot;: 3.14, # The magnitude.
                    },
                    &quot;foregroundColor&quot;: { # A color that can either be fully opaque or fully transparent. # The foreground color of the text. If set, the color is either an RGB color or transparent, depending on the `color` field.
                      &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                        &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                          &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                          &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                          &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                        },
                      },
                    },
                    &quot;backgroundColor&quot;: { # A color that can either be fully opaque or fully transparent. # The background color of the text. If set, the color is either an RGB color or transparent, depending on the `color` field.
                      &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                        &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                          &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                          &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                          &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                        },
                      },
                    },
                    &quot;link&quot;: { # A reference to another portion of a document or an external URL resource. # The hyperlink destination of the text. If unset, there is no link. Links are not inherited from parent text. Changing the link in an update request causes some other changes to the text style of the range: * When setting a link, the text foreground color will be updated to the default link color and the text will be underlined. If these fields are modified in the same request, those values will be used instead of the link defaults. * Setting a link on a text range that overlaps with an existing link will also update the existing link to point to the new URL. * Links are not settable on newline characters. As a result, setting a link on a text range that crosses a paragraph boundary, such as `&quot;ABC\n123&quot;`, will separate the newline character(s) into their own text runs. The link will be applied separately to the runs before and after the newline. * Removing a link will update the text style of the range to match the style of the preceding text (or the default text styles if the preceding text is another link) unless different styles are being set in the same request.
                      &quot;bookmarkId&quot;: &quot;A String&quot;, # The ID of a bookmark in this document.
                      &quot;url&quot;: &quot;A String&quot;, # An external URL.
                      &quot;headingId&quot;: &quot;A String&quot;, # The ID of a heading in this document.
                    },
                    &quot;strikethrough&quot;: True or False, # Whether or not the text is struck through.
                    &quot;weightedFontFamily&quot;: { # Represents a font family and weight of text. # The font family and rendered weight of the text. If an update request specifies values for both `weighted_font_family` and `bold`, the `weighted_font_family` is applied first, then `bold`. If `weighted_font_family#weight` is not set, it defaults to `400`. If `weighted_font_family` is set, then `weighted_font_family#font_family` must also be set with a non-empty value. Otherwise, a 400 bad request error is returned.
                      &quot;fontFamily&quot;: &quot;A String&quot;, # The font family of the text. The font family can be any font from the Font menu in Docs or from [Google Fonts] (https://fonts.google.com/). If the font name is unrecognized, the text is rendered in `Arial`.
                      &quot;weight&quot;: 42, # The weight of the font. This field can have any value that is a multiple of `100` between `100` and `900`, inclusive. This range corresponds to the numerical values described in the CSS 2.1 Specification, [section 15.6](https://www.w3.org/TR/CSS21/fonts.html#font-boldness), with non-numerical values disallowed. The default value is `400` (&quot;normal&quot;). The font weight makes up just one component of the rendered font weight. The rendered weight is determined by a combination of the `weight` and the text style&#x27;s resolved `bold` value, after accounting for inheritance: * If the text is bold and the weight is less than `400`, the rendered weight is 400. * If the text is bold and the weight is greater than or equal to `400` but is less than `700`, the rendered weight is `700`. * If the weight is greater than or equal to `700`, the rendered weight is equal to the weight. * If the text is not bold, the rendered weight is equal to the weight.
                    },
                    &quot;underline&quot;: True or False, # Whether or not the text is underlined.
                    &quot;smallCaps&quot;: True or False, # Whether or not the text is in small capital letters.
                  },
                },
                &quot;inlineObjectElement&quot;: { # A ParagraphElement that contains an InlineObject. # An inline object paragraph element.
                  &quot;suggestedDeletionIds&quot;: [ # The suggested deletion IDs. If empty, then there are no suggested deletions of this content.
                    &quot;A String&quot;,
                  ],
                  &quot;suggestedInsertionIds&quot;: [ # The suggested insertion IDs. An InlineObjectElement may have multiple insertion IDs if it is a nested suggested change. If empty, then this is not a suggested insertion.
                    &quot;A String&quot;,
                  ],
                  &quot;suggestedTextStyleChanges&quot;: { # The suggested text style changes to this InlineObject, keyed by suggestion ID.
                    &quot;a_key&quot;: { # A suggested change to a TextStyle.
                      &quot;textStyleSuggestionState&quot;: { # A mask that indicates which of the fields on the base TextStyle have been changed in this suggestion. For any field set to true, there is a new suggested value. # A mask that indicates which of the fields on the base TextStyle have been changed in this suggestion.
                        &quot;backgroundColorSuggested&quot;: True or False, # Indicates if there was a suggested change to background_color.
                        &quot;fontSizeSuggested&quot;: True or False, # Indicates if there was a suggested change to font_size.
                        &quot;boldSuggested&quot;: True or False, # Indicates if there was a suggested change to bold.
                        &quot;baselineOffsetSuggested&quot;: True or False, # Indicates if there was a suggested change to baseline_offset.
                        &quot;foregroundColorSuggested&quot;: True or False, # Indicates if there was a suggested change to foreground_color.
                        &quot;italicSuggested&quot;: True or False, # Indicates if there was a suggested change to italic.
                        &quot;linkSuggested&quot;: True or False, # Indicates if there was a suggested change to link.
                        &quot;underlineSuggested&quot;: True or False, # Indicates if there was a suggested change to underline.
                        &quot;weightedFontFamilySuggested&quot;: True or False, # Indicates if there was a suggested change to weighted_font_family.
                        &quot;smallCapsSuggested&quot;: True or False, # Indicates if there was a suggested change to small_caps.
                        &quot;strikethroughSuggested&quot;: True or False, # Indicates if there was a suggested change to strikethrough.
                      },
                      &quot;textStyle&quot;: { # Represents the styling that can be applied to text. Inherited text styles are represented as unset fields in this message. A text style&#x27;s parent depends on where the text style is defined: * The TextStyle of text in a Paragraph inherits from the paragraph&#x27;s corresponding named style type. * The TextStyle on a named style inherits from the normal text named style. * The TextStyle of the normal text named style inherits from the default text style in the Docs editor. * The TextStyle on a Paragraph element that is contained in a table may inherit its text style from the table style. If the text style does not inherit from a parent, unsetting fields will revert the style to a value matching the defaults in the Docs editor. # A TextStyle that only includes the changes made in this suggestion. This can be used along with the text_style_suggestion_state to see which fields have changed and their new values.
                        &quot;italic&quot;: True or False, # Whether or not the text is italicized.
                        &quot;baselineOffset&quot;: &quot;A String&quot;, # The text&#x27;s vertical offset from its normal position. Text with `SUPERSCRIPT` or `SUBSCRIPT` baseline offsets is automatically rendered in a smaller font size, computed based on the `font_size` field. The `font_size` itself is not affected by changes in this field.
                        &quot;bold&quot;: True or False, # Whether or not the text is rendered as bold.
                        &quot;fontSize&quot;: { # A magnitude in a single direction in the specified units. # The size of the text&#x27;s font.
                          &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                          &quot;magnitude&quot;: 3.14, # The magnitude.
                        },
                        &quot;foregroundColor&quot;: { # A color that can either be fully opaque or fully transparent. # The foreground color of the text. If set, the color is either an RGB color or transparent, depending on the `color` field.
                          &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                            &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                              &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                              &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                              &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                            },
                          },
                        },
                        &quot;backgroundColor&quot;: { # A color that can either be fully opaque or fully transparent. # The background color of the text. If set, the color is either an RGB color or transparent, depending on the `color` field.
                          &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                            &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                              &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                              &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                              &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                            },
                          },
                        },
                        &quot;link&quot;: { # A reference to another portion of a document or an external URL resource. # The hyperlink destination of the text. If unset, there is no link. Links are not inherited from parent text. Changing the link in an update request causes some other changes to the text style of the range: * When setting a link, the text foreground color will be updated to the default link color and the text will be underlined. If these fields are modified in the same request, those values will be used instead of the link defaults. * Setting a link on a text range that overlaps with an existing link will also update the existing link to point to the new URL. * Links are not settable on newline characters. As a result, setting a link on a text range that crosses a paragraph boundary, such as `&quot;ABC\n123&quot;`, will separate the newline character(s) into their own text runs. The link will be applied separately to the runs before and after the newline. * Removing a link will update the text style of the range to match the style of the preceding text (or the default text styles if the preceding text is another link) unless different styles are being set in the same request.
                          &quot;bookmarkId&quot;: &quot;A String&quot;, # The ID of a bookmark in this document.
                          &quot;url&quot;: &quot;A String&quot;, # An external URL.
                          &quot;headingId&quot;: &quot;A String&quot;, # The ID of a heading in this document.
                        },
                        &quot;strikethrough&quot;: True or False, # Whether or not the text is struck through.
                        &quot;weightedFontFamily&quot;: { # Represents a font family and weight of text. # The font family and rendered weight of the text. If an update request specifies values for both `weighted_font_family` and `bold`, the `weighted_font_family` is applied first, then `bold`. If `weighted_font_family#weight` is not set, it defaults to `400`. If `weighted_font_family` is set, then `weighted_font_family#font_family` must also be set with a non-empty value. Otherwise, a 400 bad request error is returned.
                          &quot;fontFamily&quot;: &quot;A String&quot;, # The font family of the text. The font family can be any font from the Font menu in Docs or from [Google Fonts] (https://fonts.google.com/). If the font name is unrecognized, the text is rendered in `Arial`.
                          &quot;weight&quot;: 42, # The weight of the font. This field can have any value that is a multiple of `100` between `100` and `900`, inclusive. This range corresponds to the numerical values described in the CSS 2.1 Specification, [section 15.6](https://www.w3.org/TR/CSS21/fonts.html#font-boldness), with non-numerical values disallowed. The default value is `400` (&quot;normal&quot;). The font weight makes up just one component of the rendered font weight. The rendered weight is determined by a combination of the `weight` and the text style&#x27;s resolved `bold` value, after accounting for inheritance: * If the text is bold and the weight is less than `400`, the rendered weight is 400. * If the text is bold and the weight is greater than or equal to `400` but is less than `700`, the rendered weight is `700`. * If the weight is greater than or equal to `700`, the rendered weight is equal to the weight. * If the text is not bold, the rendered weight is equal to the weight.
                        },
                        &quot;underline&quot;: True or False, # Whether or not the text is underlined.
                        &quot;smallCaps&quot;: True or False, # Whether or not the text is in small capital letters.
                      },
                    },
                  },
                  &quot;inlineObjectId&quot;: &quot;A String&quot;, # The ID of the InlineObject this element contains.
                  &quot;textStyle&quot;: { # Represents the styling that can be applied to text. Inherited text styles are represented as unset fields in this message. A text style&#x27;s parent depends on where the text style is defined: * The TextStyle of text in a Paragraph inherits from the paragraph&#x27;s corresponding named style type. * The TextStyle on a named style inherits from the normal text named style. * The TextStyle of the normal text named style inherits from the default text style in the Docs editor. * The TextStyle on a Paragraph element that is contained in a table may inherit its text style from the table style. If the text style does not inherit from a parent, unsetting fields will revert the style to a value matching the defaults in the Docs editor. # The text style of this InlineObjectElement. Similar to text content, like text runs and footnote references, the text style of an inline object element can affect content layout as well as the styling of text inserted adjacent to it.
                    &quot;italic&quot;: True or False, # Whether or not the text is italicized.
                    &quot;baselineOffset&quot;: &quot;A String&quot;, # The text&#x27;s vertical offset from its normal position. Text with `SUPERSCRIPT` or `SUBSCRIPT` baseline offsets is automatically rendered in a smaller font size, computed based on the `font_size` field. The `font_size` itself is not affected by changes in this field.
                    &quot;bold&quot;: True or False, # Whether or not the text is rendered as bold.
                    &quot;fontSize&quot;: { # A magnitude in a single direction in the specified units. # The size of the text&#x27;s font.
                      &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                      &quot;magnitude&quot;: 3.14, # The magnitude.
                    },
                    &quot;foregroundColor&quot;: { # A color that can either be fully opaque or fully transparent. # The foreground color of the text. If set, the color is either an RGB color or transparent, depending on the `color` field.
                      &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                        &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                          &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                          &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                          &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                        },
                      },
                    },
                    &quot;backgroundColor&quot;: { # A color that can either be fully opaque or fully transparent. # The background color of the text. If set, the color is either an RGB color or transparent, depending on the `color` field.
                      &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                        &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                          &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                          &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                          &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                        },
                      },
                    },
                    &quot;link&quot;: { # A reference to another portion of a document or an external URL resource. # The hyperlink destination of the text. If unset, there is no link. Links are not inherited from parent text. Changing the link in an update request causes some other changes to the text style of the range: * When setting a link, the text foreground color will be updated to the default link color and the text will be underlined. If these fields are modified in the same request, those values will be used instead of the link defaults. * Setting a link on a text range that overlaps with an existing link will also update the existing link to point to the new URL. * Links are not settable on newline characters. As a result, setting a link on a text range that crosses a paragraph boundary, such as `&quot;ABC\n123&quot;`, will separate the newline character(s) into their own text runs. The link will be applied separately to the runs before and after the newline. * Removing a link will update the text style of the range to match the style of the preceding text (or the default text styles if the preceding text is another link) unless different styles are being set in the same request.
                      &quot;bookmarkId&quot;: &quot;A String&quot;, # The ID of a bookmark in this document.
                      &quot;url&quot;: &quot;A String&quot;, # An external URL.
                      &quot;headingId&quot;: &quot;A String&quot;, # The ID of a heading in this document.
                    },
                    &quot;strikethrough&quot;: True or False, # Whether or not the text is struck through.
                    &quot;weightedFontFamily&quot;: { # Represents a font family and weight of text. # The font family and rendered weight of the text. If an update request specifies values for both `weighted_font_family` and `bold`, the `weighted_font_family` is applied first, then `bold`. If `weighted_font_family#weight` is not set, it defaults to `400`. If `weighted_font_family` is set, then `weighted_font_family#font_family` must also be set with a non-empty value. Otherwise, a 400 bad request error is returned.
                      &quot;fontFamily&quot;: &quot;A String&quot;, # The font family of the text. The font family can be any font from the Font menu in Docs or from [Google Fonts] (https://fonts.google.com/). If the font name is unrecognized, the text is rendered in `Arial`.
                      &quot;weight&quot;: 42, # The weight of the font. This field can have any value that is a multiple of `100` between `100` and `900`, inclusive. This range corresponds to the numerical values described in the CSS 2.1 Specification, [section 15.6](https://www.w3.org/TR/CSS21/fonts.html#font-boldness), with non-numerical values disallowed. The default value is `400` (&quot;normal&quot;). The font weight makes up just one component of the rendered font weight. The rendered weight is determined by a combination of the `weight` and the text style&#x27;s resolved `bold` value, after accounting for inheritance: * If the text is bold and the weight is less than `400`, the rendered weight is 400. * If the text is bold and the weight is greater than or equal to `400` but is less than `700`, the rendered weight is `700`. * If the weight is greater than or equal to `700`, the rendered weight is equal to the weight. * If the text is not bold, the rendered weight is equal to the weight.
                    },
                    &quot;underline&quot;: True or False, # Whether or not the text is underlined.
                    &quot;smallCaps&quot;: True or False, # Whether or not the text is in small capital letters.
                  },
                },
                &quot;footnoteReference&quot;: { # A ParagraphElement representing a footnote reference. A footnote reference is the inline content rendered with a number and is used to identify the footnote. # A footnote reference paragraph element.
                  &quot;footnoteId&quot;: &quot;A String&quot;, # The ID of the footnote that contains the content of this footnote reference.
                  &quot;suggestedInsertionIds&quot;: [ # The suggested insertion IDs. A FootnoteReference may have multiple insertion IDs if it is a nested suggested change. If empty, then this is not a suggested insertion.
                    &quot;A String&quot;,
                  ],
                  &quot;footnoteNumber&quot;: &quot;A String&quot;, # The rendered number of this footnote.
                  &quot;suggestedDeletionIds&quot;: [ # The suggested deletion IDs. If empty, then there are no suggested deletions of this content.
                    &quot;A String&quot;,
                  ],
                  &quot;suggestedTextStyleChanges&quot;: { # The suggested text style changes to this FootnoteReference, keyed by suggestion ID.
                    &quot;a_key&quot;: { # A suggested change to a TextStyle.
                      &quot;textStyleSuggestionState&quot;: { # A mask that indicates which of the fields on the base TextStyle have been changed in this suggestion. For any field set to true, there is a new suggested value. # A mask that indicates which of the fields on the base TextStyle have been changed in this suggestion.
                        &quot;backgroundColorSuggested&quot;: True or False, # Indicates if there was a suggested change to background_color.
                        &quot;fontSizeSuggested&quot;: True or False, # Indicates if there was a suggested change to font_size.
                        &quot;boldSuggested&quot;: True or False, # Indicates if there was a suggested change to bold.
                        &quot;baselineOffsetSuggested&quot;: True or False, # Indicates if there was a suggested change to baseline_offset.
                        &quot;foregroundColorSuggested&quot;: True or False, # Indicates if there was a suggested change to foreground_color.
                        &quot;italicSuggested&quot;: True or False, # Indicates if there was a suggested change to italic.
                        &quot;linkSuggested&quot;: True or False, # Indicates if there was a suggested change to link.
                        &quot;underlineSuggested&quot;: True or False, # Indicates if there was a suggested change to underline.
                        &quot;weightedFontFamilySuggested&quot;: True or False, # Indicates if there was a suggested change to weighted_font_family.
                        &quot;smallCapsSuggested&quot;: True or False, # Indicates if there was a suggested change to small_caps.
                        &quot;strikethroughSuggested&quot;: True or False, # Indicates if there was a suggested change to strikethrough.
                      },
                      &quot;textStyle&quot;: { # Represents the styling that can be applied to text. Inherited text styles are represented as unset fields in this message. A text style&#x27;s parent depends on where the text style is defined: * The TextStyle of text in a Paragraph inherits from the paragraph&#x27;s corresponding named style type. * The TextStyle on a named style inherits from the normal text named style. * The TextStyle of the normal text named style inherits from the default text style in the Docs editor. * The TextStyle on a Paragraph element that is contained in a table may inherit its text style from the table style. If the text style does not inherit from a parent, unsetting fields will revert the style to a value matching the defaults in the Docs editor. # A TextStyle that only includes the changes made in this suggestion. This can be used along with the text_style_suggestion_state to see which fields have changed and their new values.
                        &quot;italic&quot;: True or False, # Whether or not the text is italicized.
                        &quot;baselineOffset&quot;: &quot;A String&quot;, # The text&#x27;s vertical offset from its normal position. Text with `SUPERSCRIPT` or `SUBSCRIPT` baseline offsets is automatically rendered in a smaller font size, computed based on the `font_size` field. The `font_size` itself is not affected by changes in this field.
                        &quot;bold&quot;: True or False, # Whether or not the text is rendered as bold.
                        &quot;fontSize&quot;: { # A magnitude in a single direction in the specified units. # The size of the text&#x27;s font.
                          &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                          &quot;magnitude&quot;: 3.14, # The magnitude.
                        },
                        &quot;foregroundColor&quot;: { # A color that can either be fully opaque or fully transparent. # The foreground color of the text. If set, the color is either an RGB color or transparent, depending on the `color` field.
                          &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                            &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                              &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                              &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                              &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                            },
                          },
                        },
                        &quot;backgroundColor&quot;: { # A color that can either be fully opaque or fully transparent. # The background color of the text. If set, the color is either an RGB color or transparent, depending on the `color` field.
                          &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                            &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                              &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                              &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                              &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                            },
                          },
                        },
                        &quot;link&quot;: { # A reference to another portion of a document or an external URL resource. # The hyperlink destination of the text. If unset, there is no link. Links are not inherited from parent text. Changing the link in an update request causes some other changes to the text style of the range: * When setting a link, the text foreground color will be updated to the default link color and the text will be underlined. If these fields are modified in the same request, those values will be used instead of the link defaults. * Setting a link on a text range that overlaps with an existing link will also update the existing link to point to the new URL. * Links are not settable on newline characters. As a result, setting a link on a text range that crosses a paragraph boundary, such as `&quot;ABC\n123&quot;`, will separate the newline character(s) into their own text runs. The link will be applied separately to the runs before and after the newline. * Removing a link will update the text style of the range to match the style of the preceding text (or the default text styles if the preceding text is another link) unless different styles are being set in the same request.
                          &quot;bookmarkId&quot;: &quot;A String&quot;, # The ID of a bookmark in this document.
                          &quot;url&quot;: &quot;A String&quot;, # An external URL.
                          &quot;headingId&quot;: &quot;A String&quot;, # The ID of a heading in this document.
                        },
                        &quot;strikethrough&quot;: True or False, # Whether or not the text is struck through.
                        &quot;weightedFontFamily&quot;: { # Represents a font family and weight of text. # The font family and rendered weight of the text. If an update request specifies values for both `weighted_font_family` and `bold`, the `weighted_font_family` is applied first, then `bold`. If `weighted_font_family#weight` is not set, it defaults to `400`. If `weighted_font_family` is set, then `weighted_font_family#font_family` must also be set with a non-empty value. Otherwise, a 400 bad request error is returned.
                          &quot;fontFamily&quot;: &quot;A String&quot;, # The font family of the text. The font family can be any font from the Font menu in Docs or from [Google Fonts] (https://fonts.google.com/). If the font name is unrecognized, the text is rendered in `Arial`.
                          &quot;weight&quot;: 42, # The weight of the font. This field can have any value that is a multiple of `100` between `100` and `900`, inclusive. This range corresponds to the numerical values described in the CSS 2.1 Specification, [section 15.6](https://www.w3.org/TR/CSS21/fonts.html#font-boldness), with non-numerical values disallowed. The default value is `400` (&quot;normal&quot;). The font weight makes up just one component of the rendered font weight. The rendered weight is determined by a combination of the `weight` and the text style&#x27;s resolved `bold` value, after accounting for inheritance: * If the text is bold and the weight is less than `400`, the rendered weight is 400. * If the text is bold and the weight is greater than or equal to `400` but is less than `700`, the rendered weight is `700`. * If the weight is greater than or equal to `700`, the rendered weight is equal to the weight. * If the text is not bold, the rendered weight is equal to the weight.
                        },
                        &quot;underline&quot;: True or False, # Whether or not the text is underlined.
                        &quot;smallCaps&quot;: True or False, # Whether or not the text is in small capital letters.
                      },
                    },
                  },
                  &quot;textStyle&quot;: { # Represents the styling that can be applied to text. Inherited text styles are represented as unset fields in this message. A text style&#x27;s parent depends on where the text style is defined: * The TextStyle of text in a Paragraph inherits from the paragraph&#x27;s corresponding named style type. * The TextStyle on a named style inherits from the normal text named style. * The TextStyle of the normal text named style inherits from the default text style in the Docs editor. * The TextStyle on a Paragraph element that is contained in a table may inherit its text style from the table style. If the text style does not inherit from a parent, unsetting fields will revert the style to a value matching the defaults in the Docs editor. # The text style of this FootnoteReference.
                    &quot;italic&quot;: True or False, # Whether or not the text is italicized.
                    &quot;baselineOffset&quot;: &quot;A String&quot;, # The text&#x27;s vertical offset from its normal position. Text with `SUPERSCRIPT` or `SUBSCRIPT` baseline offsets is automatically rendered in a smaller font size, computed based on the `font_size` field. The `font_size` itself is not affected by changes in this field.
                    &quot;bold&quot;: True or False, # Whether or not the text is rendered as bold.
                    &quot;fontSize&quot;: { # A magnitude in a single direction in the specified units. # The size of the text&#x27;s font.
                      &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                      &quot;magnitude&quot;: 3.14, # The magnitude.
                    },
                    &quot;foregroundColor&quot;: { # A color that can either be fully opaque or fully transparent. # The foreground color of the text. If set, the color is either an RGB color or transparent, depending on the `color` field.
                      &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                        &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                          &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                          &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                          &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                        },
                      },
                    },
                    &quot;backgroundColor&quot;: { # A color that can either be fully opaque or fully transparent. # The background color of the text. If set, the color is either an RGB color or transparent, depending on the `color` field.
                      &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                        &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                          &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                          &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                          &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                        },
                      },
                    },
                    &quot;link&quot;: { # A reference to another portion of a document or an external URL resource. # The hyperlink destination of the text. If unset, there is no link. Links are not inherited from parent text. Changing the link in an update request causes some other changes to the text style of the range: * When setting a link, the text foreground color will be updated to the default link color and the text will be underlined. If these fields are modified in the same request, those values will be used instead of the link defaults. * Setting a link on a text range that overlaps with an existing link will also update the existing link to point to the new URL. * Links are not settable on newline characters. As a result, setting a link on a text range that crosses a paragraph boundary, such as `&quot;ABC\n123&quot;`, will separate the newline character(s) into their own text runs. The link will be applied separately to the runs before and after the newline. * Removing a link will update the text style of the range to match the style of the preceding text (or the default text styles if the preceding text is another link) unless different styles are being set in the same request.
                      &quot;bookmarkId&quot;: &quot;A String&quot;, # The ID of a bookmark in this document.
                      &quot;url&quot;: &quot;A String&quot;, # An external URL.
                      &quot;headingId&quot;: &quot;A String&quot;, # The ID of a heading in this document.
                    },
                    &quot;strikethrough&quot;: True or False, # Whether or not the text is struck through.
                    &quot;weightedFontFamily&quot;: { # Represents a font family and weight of text. # The font family and rendered weight of the text. If an update request specifies values for both `weighted_font_family` and `bold`, the `weighted_font_family` is applied first, then `bold`. If `weighted_font_family#weight` is not set, it defaults to `400`. If `weighted_font_family` is set, then `weighted_font_family#font_family` must also be set with a non-empty value. Otherwise, a 400 bad request error is returned.
                      &quot;fontFamily&quot;: &quot;A String&quot;, # The font family of the text. The font family can be any font from the Font menu in Docs or from [Google Fonts] (https://fonts.google.com/). If the font name is unrecognized, the text is rendered in `Arial`.
                      &quot;weight&quot;: 42, # The weight of the font. This field can have any value that is a multiple of `100` between `100` and `900`, inclusive. This range corresponds to the numerical values described in the CSS 2.1 Specification, [section 15.6](https://www.w3.org/TR/CSS21/fonts.html#font-boldness), with non-numerical values disallowed. The default value is `400` (&quot;normal&quot;). The font weight makes up just one component of the rendered font weight. The rendered weight is determined by a combination of the `weight` and the text style&#x27;s resolved `bold` value, after accounting for inheritance: * If the text is bold and the weight is less than `400`, the rendered weight is 400. * If the text is bold and the weight is greater than or equal to `400` but is less than `700`, the rendered weight is `700`. * If the weight is greater than or equal to `700`, the rendered weight is equal to the weight. * If the text is not bold, the rendered weight is equal to the weight.
                    },
                    &quot;underline&quot;: True or False, # Whether or not the text is underlined.
                    &quot;smallCaps&quot;: True or False, # Whether or not the text is in small capital letters.
                  },
                },
                &quot;startIndex&quot;: 42, # The zero-based start index of this paragraph element, in UTF-16 code units.
                &quot;endIndex&quot;: 42, # The zero-base end index of this paragraph element, exclusive, in UTF-16 code units.
                &quot;equation&quot;: { # A ParagraphElement representing an equation. # An equation paragraph element.
                  &quot;suggestedDeletionIds&quot;: [ # The suggested deletion IDs. If empty, then there are no suggested deletions of this content.
                    &quot;A String&quot;,
                  ],
                  &quot;suggestedInsertionIds&quot;: [ # The suggested insertion IDs. A Equation may have multiple insertion IDs if it is a nested suggested change. If empty, then this is not a suggested insertion.
                    &quot;A String&quot;,
                  ],
                },
                &quot;columnBreak&quot;: { # A ParagraphElement representing a column break. A column break makes the subsequent text start at the top of the next column. # A column break paragraph element.
                  &quot;suggestedTextStyleChanges&quot;: { # The suggested text style changes to this ColumnBreak, keyed by suggestion ID.
                    &quot;a_key&quot;: { # A suggested change to a TextStyle.
                      &quot;textStyleSuggestionState&quot;: { # A mask that indicates which of the fields on the base TextStyle have been changed in this suggestion. For any field set to true, there is a new suggested value. # A mask that indicates which of the fields on the base TextStyle have been changed in this suggestion.
                        &quot;backgroundColorSuggested&quot;: True or False, # Indicates if there was a suggested change to background_color.
                        &quot;fontSizeSuggested&quot;: True or False, # Indicates if there was a suggested change to font_size.
                        &quot;boldSuggested&quot;: True or False, # Indicates if there was a suggested change to bold.
                        &quot;baselineOffsetSuggested&quot;: True or False, # Indicates if there was a suggested change to baseline_offset.
                        &quot;foregroundColorSuggested&quot;: True or False, # Indicates if there was a suggested change to foreground_color.
                        &quot;italicSuggested&quot;: True or False, # Indicates if there was a suggested change to italic.
                        &quot;linkSuggested&quot;: True or False, # Indicates if there was a suggested change to link.
                        &quot;underlineSuggested&quot;: True or False, # Indicates if there was a suggested change to underline.
                        &quot;weightedFontFamilySuggested&quot;: True or False, # Indicates if there was a suggested change to weighted_font_family.
                        &quot;smallCapsSuggested&quot;: True or False, # Indicates if there was a suggested change to small_caps.
                        &quot;strikethroughSuggested&quot;: True or False, # Indicates if there was a suggested change to strikethrough.
                      },
                      &quot;textStyle&quot;: { # Represents the styling that can be applied to text. Inherited text styles are represented as unset fields in this message. A text style&#x27;s parent depends on where the text style is defined: * The TextStyle of text in a Paragraph inherits from the paragraph&#x27;s corresponding named style type. * The TextStyle on a named style inherits from the normal text named style. * The TextStyle of the normal text named style inherits from the default text style in the Docs editor. * The TextStyle on a Paragraph element that is contained in a table may inherit its text style from the table style. If the text style does not inherit from a parent, unsetting fields will revert the style to a value matching the defaults in the Docs editor. # A TextStyle that only includes the changes made in this suggestion. This can be used along with the text_style_suggestion_state to see which fields have changed and their new values.
                        &quot;italic&quot;: True or False, # Whether or not the text is italicized.
                        &quot;baselineOffset&quot;: &quot;A String&quot;, # The text&#x27;s vertical offset from its normal position. Text with `SUPERSCRIPT` or `SUBSCRIPT` baseline offsets is automatically rendered in a smaller font size, computed based on the `font_size` field. The `font_size` itself is not affected by changes in this field.
                        &quot;bold&quot;: True or False, # Whether or not the text is rendered as bold.
                        &quot;fontSize&quot;: { # A magnitude in a single direction in the specified units. # The size of the text&#x27;s font.
                          &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                          &quot;magnitude&quot;: 3.14, # The magnitude.
                        },
                        &quot;foregroundColor&quot;: { # A color that can either be fully opaque or fully transparent. # The foreground color of the text. If set, the color is either an RGB color or transparent, depending on the `color` field.
                          &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                            &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                              &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                              &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                              &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                            },
                          },
                        },
                        &quot;backgroundColor&quot;: { # A color that can either be fully opaque or fully transparent. # The background color of the text. If set, the color is either an RGB color or transparent, depending on the `color` field.
                          &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                            &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                              &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                              &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                              &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                            },
                          },
                        },
                        &quot;link&quot;: { # A reference to another portion of a document or an external URL resource. # The hyperlink destination of the text. If unset, there is no link. Links are not inherited from parent text. Changing the link in an update request causes some other changes to the text style of the range: * When setting a link, the text foreground color will be updated to the default link color and the text will be underlined. If these fields are modified in the same request, those values will be used instead of the link defaults. * Setting a link on a text range that overlaps with an existing link will also update the existing link to point to the new URL. * Links are not settable on newline characters. As a result, setting a link on a text range that crosses a paragraph boundary, such as `&quot;ABC\n123&quot;`, will separate the newline character(s) into their own text runs. The link will be applied separately to the runs before and after the newline. * Removing a link will update the text style of the range to match the style of the preceding text (or the default text styles if the preceding text is another link) unless different styles are being set in the same request.
                          &quot;bookmarkId&quot;: &quot;A String&quot;, # The ID of a bookmark in this document.
                          &quot;url&quot;: &quot;A String&quot;, # An external URL.
                          &quot;headingId&quot;: &quot;A String&quot;, # The ID of a heading in this document.
                        },
                        &quot;strikethrough&quot;: True or False, # Whether or not the text is struck through.
                        &quot;weightedFontFamily&quot;: { # Represents a font family and weight of text. # The font family and rendered weight of the text. If an update request specifies values for both `weighted_font_family` and `bold`, the `weighted_font_family` is applied first, then `bold`. If `weighted_font_family#weight` is not set, it defaults to `400`. If `weighted_font_family` is set, then `weighted_font_family#font_family` must also be set with a non-empty value. Otherwise, a 400 bad request error is returned.
                          &quot;fontFamily&quot;: &quot;A String&quot;, # The font family of the text. The font family can be any font from the Font menu in Docs or from [Google Fonts] (https://fonts.google.com/). If the font name is unrecognized, the text is rendered in `Arial`.
                          &quot;weight&quot;: 42, # The weight of the font. This field can have any value that is a multiple of `100` between `100` and `900`, inclusive. This range corresponds to the numerical values described in the CSS 2.1 Specification, [section 15.6](https://www.w3.org/TR/CSS21/fonts.html#font-boldness), with non-numerical values disallowed. The default value is `400` (&quot;normal&quot;). The font weight makes up just one component of the rendered font weight. The rendered weight is determined by a combination of the `weight` and the text style&#x27;s resolved `bold` value, after accounting for inheritance: * If the text is bold and the weight is less than `400`, the rendered weight is 400. * If the text is bold and the weight is greater than or equal to `400` but is less than `700`, the rendered weight is `700`. * If the weight is greater than or equal to `700`, the rendered weight is equal to the weight. * If the text is not bold, the rendered weight is equal to the weight.
                        },
                        &quot;underline&quot;: True or False, # Whether or not the text is underlined.
                        &quot;smallCaps&quot;: True or False, # Whether or not the text is in small capital letters.
                      },
                    },
                  },
                  &quot;suggestedDeletionIds&quot;: [ # The suggested deletion IDs. If empty, then there are no suggested deletions of this content.
                    &quot;A String&quot;,
                  ],
                  &quot;textStyle&quot;: { # Represents the styling that can be applied to text. Inherited text styles are represented as unset fields in this message. A text style&#x27;s parent depends on where the text style is defined: * The TextStyle of text in a Paragraph inherits from the paragraph&#x27;s corresponding named style type. * The TextStyle on a named style inherits from the normal text named style. * The TextStyle of the normal text named style inherits from the default text style in the Docs editor. * The TextStyle on a Paragraph element that is contained in a table may inherit its text style from the table style. If the text style does not inherit from a parent, unsetting fields will revert the style to a value matching the defaults in the Docs editor. # The text style of this ColumnBreak. Similar to text content, like text runs and footnote references, the text style of a column break can affect content layout as well as the styling of text inserted adjacent to it.
                    &quot;italic&quot;: True or False, # Whether or not the text is italicized.
                    &quot;baselineOffset&quot;: &quot;A String&quot;, # The text&#x27;s vertical offset from its normal position. Text with `SUPERSCRIPT` or `SUBSCRIPT` baseline offsets is automatically rendered in a smaller font size, computed based on the `font_size` field. The `font_size` itself is not affected by changes in this field.
                    &quot;bold&quot;: True or False, # Whether or not the text is rendered as bold.
                    &quot;fontSize&quot;: { # A magnitude in a single direction in the specified units. # The size of the text&#x27;s font.
                      &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                      &quot;magnitude&quot;: 3.14, # The magnitude.
                    },
                    &quot;foregroundColor&quot;: { # A color that can either be fully opaque or fully transparent. # The foreground color of the text. If set, the color is either an RGB color or transparent, depending on the `color` field.
                      &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                        &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                          &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                          &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                          &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                        },
                      },
                    },
                    &quot;backgroundColor&quot;: { # A color that can either be fully opaque or fully transparent. # The background color of the text. If set, the color is either an RGB color or transparent, depending on the `color` field.
                      &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                        &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                          &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                          &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                          &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                        },
                      },
                    },
                    &quot;link&quot;: { # A reference to another portion of a document or an external URL resource. # The hyperlink destination of the text. If unset, there is no link. Links are not inherited from parent text. Changing the link in an update request causes some other changes to the text style of the range: * When setting a link, the text foreground color will be updated to the default link color and the text will be underlined. If these fields are modified in the same request, those values will be used instead of the link defaults. * Setting a link on a text range that overlaps with an existing link will also update the existing link to point to the new URL. * Links are not settable on newline characters. As a result, setting a link on a text range that crosses a paragraph boundary, such as `&quot;ABC\n123&quot;`, will separate the newline character(s) into their own text runs. The link will be applied separately to the runs before and after the newline. * Removing a link will update the text style of the range to match the style of the preceding text (or the default text styles if the preceding text is another link) unless different styles are being set in the same request.
                      &quot;bookmarkId&quot;: &quot;A String&quot;, # The ID of a bookmark in this document.
                      &quot;url&quot;: &quot;A String&quot;, # An external URL.
                      &quot;headingId&quot;: &quot;A String&quot;, # The ID of a heading in this document.
                    },
                    &quot;strikethrough&quot;: True or False, # Whether or not the text is struck through.
                    &quot;weightedFontFamily&quot;: { # Represents a font family and weight of text. # The font family and rendered weight of the text. If an update request specifies values for both `weighted_font_family` and `bold`, the `weighted_font_family` is applied first, then `bold`. If `weighted_font_family#weight` is not set, it defaults to `400`. If `weighted_font_family` is set, then `weighted_font_family#font_family` must also be set with a non-empty value. Otherwise, a 400 bad request error is returned.
                      &quot;fontFamily&quot;: &quot;A String&quot;, # The font family of the text. The font family can be any font from the Font menu in Docs or from [Google Fonts] (https://fonts.google.com/). If the font name is unrecognized, the text is rendered in `Arial`.
                      &quot;weight&quot;: 42, # The weight of the font. This field can have any value that is a multiple of `100` between `100` and `900`, inclusive. This range corresponds to the numerical values described in the CSS 2.1 Specification, [section 15.6](https://www.w3.org/TR/CSS21/fonts.html#font-boldness), with non-numerical values disallowed. The default value is `400` (&quot;normal&quot;). The font weight makes up just one component of the rendered font weight. The rendered weight is determined by a combination of the `weight` and the text style&#x27;s resolved `bold` value, after accounting for inheritance: * If the text is bold and the weight is less than `400`, the rendered weight is 400. * If the text is bold and the weight is greater than or equal to `400` but is less than `700`, the rendered weight is `700`. * If the weight is greater than or equal to `700`, the rendered weight is equal to the weight. * If the text is not bold, the rendered weight is equal to the weight.
                    },
                    &quot;underline&quot;: True or False, # Whether or not the text is underlined.
                    &quot;smallCaps&quot;: True or False, # Whether or not the text is in small capital letters.
                  },
                  &quot;suggestedInsertionIds&quot;: [ # The suggested insertion IDs. A ColumnBreak may have multiple insertion IDs if it is a nested suggested change. If empty, then this is not a suggested insertion.
                    &quot;A String&quot;,
                  ],
                },
              },
            ],
            &quot;positionedObjectIds&quot;: [ # The IDs of the positioned objects tethered to this paragraph.
              &quot;A String&quot;,
            ],
            &quot;paragraphStyle&quot;: { # Styles that apply to a whole paragraph. Inherited paragraph styles are represented as unset fields in this message. A paragraph style&#x27;s parent depends on where the paragraph style is defined: * The ParagraphStyle on a Paragraph inherits from the paragraph&#x27;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 is 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. # The style of this paragraph.
              &quot;borderRight&quot;: { # A border around a paragraph. # The border to the right of this paragraph. If unset, the value is inherited from the parent. Paragraph borders cannot be partially updated. When making changes to a paragraph border the new border must be specified in its entirety.
                &quot;color&quot;: { # A color that can either be fully opaque or fully transparent. # The color of the border.
                  &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                    &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                      &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                      &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                      &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                    },
                  },
                },
                &quot;width&quot;: { # A magnitude in a single direction in the specified units. # The width of the border.
                  &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                  &quot;magnitude&quot;: 3.14, # The magnitude.
                },
                &quot;padding&quot;: { # A magnitude in a single direction in the specified units. # The padding of the border.
                  &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                  &quot;magnitude&quot;: 3.14, # The magnitude.
                },
                &quot;dashStyle&quot;: &quot;A String&quot;, # The dash style of the border.
              },
              &quot;indentFirstLine&quot;: { # A magnitude in a single direction in the specified units. # The amount of indentation for the first line of the paragraph. If unset, the value is inherited from the parent.
                &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                &quot;magnitude&quot;: 3.14, # The magnitude.
              },
              &quot;alignment&quot;: &quot;A String&quot;, # The text alignment for this paragraph.
              &quot;lineSpacing&quot;: 3.14, # The amount of space between lines, as a percentage of normal, where normal is represented as 100.0. If unset, the value is inherited from the parent.
              &quot;keepLinesTogether&quot;: True or False, # Whether all lines of the paragraph should be laid out on the same page or column if possible. If unset, the value is inherited from the parent.
              &quot;avoidWidowAndOrphan&quot;: True or False, # Whether to avoid widows and orphans for the paragraph. If unset, the value is inherited from the parent.
              &quot;spaceBelow&quot;: { # A magnitude in a single direction in the specified units. # The amount of extra space below the paragraph. If unset, the value is inherited from the parent.
                &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                &quot;magnitude&quot;: 3.14, # The magnitude.
              },
              &quot;borderBetween&quot;: { # A border around a paragraph. # 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 making changes to a paragraph border the new border must be specified in its entirety.
                &quot;color&quot;: { # A color that can either be fully opaque or fully transparent. # The color of the border.
                  &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                    &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                      &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                      &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                      &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                    },
                  },
                },
                &quot;width&quot;: { # A magnitude in a single direction in the specified units. # The width of the border.
                  &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                  &quot;magnitude&quot;: 3.14, # The magnitude.
                },
                &quot;padding&quot;: { # A magnitude in a single direction in the specified units. # The padding of the border.
                  &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                  &quot;magnitude&quot;: 3.14, # The magnitude.
                },
                &quot;dashStyle&quot;: &quot;A String&quot;, # The dash style of the border.
              },
              &quot;headingId&quot;: &quot;A String&quot;, # The heading ID of the paragraph. If empty, then this paragraph is not a heading. This property is read-only.
              &quot;spaceAbove&quot;: { # A magnitude in a single direction in the specified units. # The amount of extra space above the paragraph. If unset, the value is inherited from the parent.
                &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                &quot;magnitude&quot;: 3.14, # The magnitude.
              },
              &quot;direction&quot;: &quot;A String&quot;, # The text direction of this paragraph. If unset, the value defaults to LEFT_TO_RIGHT since paragraph direction is not inherited.
              &quot;namedStyleType&quot;: &quot;A String&quot;, # The named style type of the paragraph. Since updating the named style type affects other properties within ParagraphStyle, the named style type is applied before the other properties are updated.
              &quot;tabStops&quot;: [ # A list of the tab stops for this paragraph. The list of tab stops is not inherited. This property is read-only.
                { # A tab stop within a paragraph.
                  &quot;offset&quot;: { # A magnitude in a single direction in the specified units. # The offset between this tab stop and the start margin.
                    &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                    &quot;magnitude&quot;: 3.14, # The magnitude.
                  },
                  &quot;alignment&quot;: &quot;A String&quot;, # The alignment of this tab stop. If unset, the value defaults to START.
                },
              ],
              &quot;indentStart&quot;: { # A magnitude in a single direction in the specified units. # The amount of indentation for the paragraph on the side that corresponds to the start of the text, based on the current paragraph direction. If unset, the value is inherited from the parent.
                &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                &quot;magnitude&quot;: 3.14, # The magnitude.
              },
              &quot;keepWithNext&quot;: True or False, # Whether at least a part of this paragraph should be laid out on the same page or column as the next paragraph if possible. If unset, the value is inherited from the parent.
              &quot;borderTop&quot;: { # A border around a paragraph. # 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 making changes to a paragraph border the new border must be specified in its entirety.
                &quot;color&quot;: { # A color that can either be fully opaque or fully transparent. # The color of the border.
                  &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                    &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                      &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                      &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                      &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                    },
                  },
                },
                &quot;width&quot;: { # A magnitude in a single direction in the specified units. # The width of the border.
                  &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                  &quot;magnitude&quot;: 3.14, # The magnitude.
                },
                &quot;padding&quot;: { # A magnitude in a single direction in the specified units. # The padding of the border.
                  &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                  &quot;magnitude&quot;: 3.14, # The magnitude.
                },
                &quot;dashStyle&quot;: &quot;A String&quot;, # The dash style of the border.
              },
              &quot;borderLeft&quot;: { # A border around a paragraph. # The border to the left of this paragraph. If unset, the value is inherited from the parent. Paragraph borders cannot be partially updated. When making changes to a paragraph border the new border must be specified in its entirety.
                &quot;color&quot;: { # A color that can either be fully opaque or fully transparent. # The color of the border.
                  &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                    &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                      &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                      &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                      &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                    },
                  },
                },
                &quot;width&quot;: { # A magnitude in a single direction in the specified units. # The width of the border.
                  &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                  &quot;magnitude&quot;: 3.14, # The magnitude.
                },
                &quot;padding&quot;: { # A magnitude in a single direction in the specified units. # The padding of the border.
                  &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                  &quot;magnitude&quot;: 3.14, # The magnitude.
                },
                &quot;dashStyle&quot;: &quot;A String&quot;, # The dash style of the border.
              },
              &quot;borderBottom&quot;: { # A border around a paragraph. # 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 making changes to a paragraph border the new border must be specified in its entirety.
                &quot;color&quot;: { # A color that can either be fully opaque or fully transparent. # The color of the border.
                  &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                    &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                      &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                      &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                      &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                    },
                  },
                },
                &quot;width&quot;: { # A magnitude in a single direction in the specified units. # The width of the border.
                  &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                  &quot;magnitude&quot;: 3.14, # The magnitude.
                },
                &quot;padding&quot;: { # A magnitude in a single direction in the specified units. # The padding of the border.
                  &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                  &quot;magnitude&quot;: 3.14, # The magnitude.
                },
                &quot;dashStyle&quot;: &quot;A String&quot;, # The dash style of the border.
              },
              &quot;shading&quot;: { # The shading of a paragraph. # The shading of the paragraph. If unset, the value is inherited from the parent.
                &quot;backgroundColor&quot;: { # A color that can either be fully opaque or fully transparent. # The background color of this paragraph shading.
                  &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                    &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                      &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                      &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                      &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                    },
                  },
                },
              },
              &quot;indentEnd&quot;: { # A magnitude in a single direction in the specified units. # 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.
                &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                &quot;magnitude&quot;: 3.14, # The magnitude.
              },
              &quot;spacingMode&quot;: &quot;A String&quot;, # The spacing mode for the paragraph.
            },
          },
          &quot;startIndex&quot;: 42, # The zero-based start index of this structural element, in UTF-16 code units.
          &quot;endIndex&quot;: 42, # The zero-based end index of this structural element, exclusive, in UTF-16 code units.
          &quot;tableOfContents&quot;: { # A StructuralElement representing a table of contents. # A table of contents type of structural element.
            &quot;suggestedInsertionIds&quot;: [ # The suggested insertion IDs. A TableOfContents may have multiple insertion IDs if it is a nested suggested change. If empty, then this is not a suggested insertion.
              &quot;A String&quot;,
            ],
            &quot;content&quot;: [ # The content of the table of contents.
              # Object with schema name: StructuralElement
            ],
            &quot;suggestedDeletionIds&quot;: [ # The suggested deletion IDs. If empty, then there are no suggested deletions of this content.
              &quot;A String&quot;,
            ],
          },
          &quot;table&quot;: { # A StructuralElement representing a table. # A table type of structural element.
            &quot;tableStyle&quot;: { # Styles that apply to a table. # The style of the table.
              &quot;tableColumnProperties&quot;: [ # The properties of each column. Note that in Docs, tables contain rows and rows contain cells, similar to HTML. So the properties for a row can be found on the row&#x27;s table_row_style.
                { # The properties of a column in a table.
                  &quot;widthType&quot;: &quot;A String&quot;, # The width type of the column.
                  &quot;width&quot;: { # A magnitude in a single direction in the specified units. # The width of the column. Set when the column&#x27;s `width_type` is FIXED_WIDTH.
                    &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                    &quot;magnitude&quot;: 3.14, # The magnitude.
                  },
                },
              ],
            },
            &quot;suggestedInsertionIds&quot;: [ # The suggested insertion IDs. A Table may have multiple insertion IDs if it is a nested suggested change. If empty, then this is not a suggested insertion.
              &quot;A String&quot;,
            ],
            &quot;tableRows&quot;: [ # The contents and style of each row.
              { # The contents and style of a row in a Table.
                &quot;suggestedDeletionIds&quot;: [ # The suggested deletion IDs. If empty, then there are no suggested deletions of this content.
                  &quot;A String&quot;,
                ],
                &quot;suggestedInsertionIds&quot;: [ # The suggested insertion IDs. A TableRow may have multiple insertion IDs if it is a nested suggested change. If empty, then this is not a suggested insertion.
                  &quot;A String&quot;,
                ],
                &quot;suggestedTableRowStyleChanges&quot;: { # The suggested style changes to this row, keyed by suggestion ID.
                  &quot;a_key&quot;: { # A suggested change to a TableRowStyle.
                    &quot;tableRowStyleSuggestionState&quot;: { # A mask that indicates which of the fields on the base TableRowStyle have been changed in this suggestion. For any field set to true, there is a new suggested value. # A mask that indicates which of the fields on the base TableRowStyle have been changed in this suggestion.
                      &quot;minRowHeightSuggested&quot;: True or False, # Indicates if there was a suggested change to min_row_height.
                    },
                    &quot;tableRowStyle&quot;: { # Styles that apply to a table row. # A TableRowStyle that only includes the changes made in this suggestion. This can be used along with the table_row_style_suggestion_state to see which fields have changed and their new values.
                      &quot;minRowHeight&quot;: { # A magnitude in a single direction in the specified units. # The minimum height of the row. The row will be rendered in the Docs editor at a height equal to or greater than this value in order to show all the content in the row&#x27;s cells.
                        &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                        &quot;magnitude&quot;: 3.14, # The magnitude.
                      },
                    },
                  },
                },
                &quot;startIndex&quot;: 42, # The zero-based start index of this row, in UTF-16 code units.
                &quot;tableCells&quot;: [ # The contents and style of each cell in this row. It is possible for a table to be non-rectangular, so some rows may have a different number of cells than other rows in the same table.
                  { # The contents and style of a cell in a Table.
                    &quot;tableCellStyle&quot;: { # The style of a TableCell. Inherited table cell styles are represented as unset fields in this message. A table cell style can inherit from the table&#x27;s style. # The style of the cell.
                      &quot;borderTop&quot;: { # A border around a table cell. Table cell borders cannot be transparent. To hide a table cell border, make its width 0. # The top border of the cell.
                        &quot;width&quot;: { # A magnitude in a single direction in the specified units. # The width of the border.
                          &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                          &quot;magnitude&quot;: 3.14, # The magnitude.
                        },
                        &quot;dashStyle&quot;: &quot;A String&quot;, # The dash style of the border.
                        &quot;color&quot;: { # A color that can either be fully opaque or fully transparent. # The color of the border. This color cannot be transparent.
                          &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                            &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                              &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                              &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                              &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                            },
                          },
                        },
                      },
                      &quot;borderBottom&quot;: { # A border around a table cell. Table cell borders cannot be transparent. To hide a table cell border, make its width 0. # The bottom border of the cell.
                        &quot;width&quot;: { # A magnitude in a single direction in the specified units. # The width of the border.
                          &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                          &quot;magnitude&quot;: 3.14, # The magnitude.
                        },
                        &quot;dashStyle&quot;: &quot;A String&quot;, # The dash style of the border.
                        &quot;color&quot;: { # A color that can either be fully opaque or fully transparent. # The color of the border. This color cannot be transparent.
                          &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                            &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                              &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                              &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                              &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                            },
                          },
                        },
                      },
                      &quot;contentAlignment&quot;: &quot;A String&quot;, # The alignment of the content in the table cell. The default alignment matches the alignment for newly created table cells in the Docs editor.
                      &quot;paddingLeft&quot;: { # A magnitude in a single direction in the specified units. # The left padding of the cell.
                        &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                        &quot;magnitude&quot;: 3.14, # The magnitude.
                      },
                      &quot;backgroundColor&quot;: { # A color that can either be fully opaque or fully transparent. # The background color of the cell.
                        &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                          &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                            &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                            &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                            &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                          },
                        },
                      },
                      &quot;paddingTop&quot;: { # A magnitude in a single direction in the specified units. # The top padding of the cell.
                        &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                        &quot;magnitude&quot;: 3.14, # The magnitude.
                      },
                      &quot;rowSpan&quot;: 42, # The row span of the cell. This property is read-only.
                      &quot;paddingRight&quot;: { # A magnitude in a single direction in the specified units. # The right padding of the cell.
                        &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                        &quot;magnitude&quot;: 3.14, # The magnitude.
                      },
                      &quot;borderRight&quot;: { # A border around a table cell. Table cell borders cannot be transparent. To hide a table cell border, make its width 0. # The right border of the cell.
                        &quot;width&quot;: { # A magnitude in a single direction in the specified units. # The width of the border.
                          &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                          &quot;magnitude&quot;: 3.14, # The magnitude.
                        },
                        &quot;dashStyle&quot;: &quot;A String&quot;, # The dash style of the border.
                        &quot;color&quot;: { # A color that can either be fully opaque or fully transparent. # The color of the border. This color cannot be transparent.
                          &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                            &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                              &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                              &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                              &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                            },
                          },
                        },
                      },
                      &quot;borderLeft&quot;: { # A border around a table cell. Table cell borders cannot be transparent. To hide a table cell border, make its width 0. # The left border of the cell.
                        &quot;width&quot;: { # A magnitude in a single direction in the specified units. # The width of the border.
                          &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                          &quot;magnitude&quot;: 3.14, # The magnitude.
                        },
                        &quot;dashStyle&quot;: &quot;A String&quot;, # The dash style of the border.
                        &quot;color&quot;: { # A color that can either be fully opaque or fully transparent. # The color of the border. This color cannot be transparent.
                          &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                            &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                              &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                              &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                              &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                            },
                          },
                        },
                      },
                      &quot;columnSpan&quot;: 42, # The column span of the cell. This property is read-only.
                      &quot;paddingBottom&quot;: { # A magnitude in a single direction in the specified units. # The bottom padding of the cell.
                        &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                        &quot;magnitude&quot;: 3.14, # The magnitude.
                      },
                    },
                    &quot;content&quot;: [ # The content of the cell.
                      # Object with schema name: StructuralElement
                    ],
                    &quot;suggestedDeletionIds&quot;: [ # The suggested deletion IDs. If empty, then there are no suggested deletions of this content.
                      &quot;A String&quot;,
                    ],
                    &quot;startIndex&quot;: 42, # The zero-based start index of this cell, in UTF-16 code units.
                    &quot;suggestedInsertionIds&quot;: [ # The suggested insertion IDs. A TableCell may have multiple insertion IDs if it is a nested suggested change. If empty, then this is not a suggested insertion.
                      &quot;A String&quot;,
                    ],
                    &quot;suggestedTableCellStyleChanges&quot;: { # The suggested changes to the table cell style, keyed by suggestion ID.
                      &quot;a_key&quot;: { # A suggested change to a TableCellStyle.
                        &quot;tableCellStyle&quot;: { # The style of a TableCell. Inherited table cell styles are represented as unset fields in this message. A table cell style can inherit from the table&#x27;s style. # A TableCellStyle that only includes the changes made in this suggestion. This can be used along with the table_cell_style_suggestion_state to see which fields have changed and their new values.
                          &quot;borderTop&quot;: { # A border around a table cell. Table cell borders cannot be transparent. To hide a table cell border, make its width 0. # The top border of the cell.
                            &quot;width&quot;: { # A magnitude in a single direction in the specified units. # The width of the border.
                              &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                              &quot;magnitude&quot;: 3.14, # The magnitude.
                            },
                            &quot;dashStyle&quot;: &quot;A String&quot;, # The dash style of the border.
                            &quot;color&quot;: { # A color that can either be fully opaque or fully transparent. # The color of the border. This color cannot be transparent.
                              &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                                &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                                  &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                                  &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                                  &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                                },
                              },
                            },
                          },
                          &quot;borderBottom&quot;: { # A border around a table cell. Table cell borders cannot be transparent. To hide a table cell border, make its width 0. # The bottom border of the cell.
                            &quot;width&quot;: { # A magnitude in a single direction in the specified units. # The width of the border.
                              &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                              &quot;magnitude&quot;: 3.14, # The magnitude.
                            },
                            &quot;dashStyle&quot;: &quot;A String&quot;, # The dash style of the border.
                            &quot;color&quot;: { # A color that can either be fully opaque or fully transparent. # The color of the border. This color cannot be transparent.
                              &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                                &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                                  &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                                  &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                                  &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                                },
                              },
                            },
                          },
                          &quot;contentAlignment&quot;: &quot;A String&quot;, # The alignment of the content in the table cell. The default alignment matches the alignment for newly created table cells in the Docs editor.
                          &quot;paddingLeft&quot;: { # A magnitude in a single direction in the specified units. # The left padding of the cell.
                            &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                            &quot;magnitude&quot;: 3.14, # The magnitude.
                          },
                          &quot;backgroundColor&quot;: { # A color that can either be fully opaque or fully transparent. # The background color of the cell.
                            &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                              &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                                &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                                &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                                &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                              },
                            },
                          },
                          &quot;paddingTop&quot;: { # A magnitude in a single direction in the specified units. # The top padding of the cell.
                            &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                            &quot;magnitude&quot;: 3.14, # The magnitude.
                          },
                          &quot;rowSpan&quot;: 42, # The row span of the cell. This property is read-only.
                          &quot;paddingRight&quot;: { # A magnitude in a single direction in the specified units. # The right padding of the cell.
                            &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                            &quot;magnitude&quot;: 3.14, # The magnitude.
                          },
                          &quot;borderRight&quot;: { # A border around a table cell. Table cell borders cannot be transparent. To hide a table cell border, make its width 0. # The right border of the cell.
                            &quot;width&quot;: { # A magnitude in a single direction in the specified units. # The width of the border.
                              &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                              &quot;magnitude&quot;: 3.14, # The magnitude.
                            },
                            &quot;dashStyle&quot;: &quot;A String&quot;, # The dash style of the border.
                            &quot;color&quot;: { # A color that can either be fully opaque or fully transparent. # The color of the border. This color cannot be transparent.
                              &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                                &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                                  &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                                  &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                                  &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                                },
                              },
                            },
                          },
                          &quot;borderLeft&quot;: { # A border around a table cell. Table cell borders cannot be transparent. To hide a table cell border, make its width 0. # The left border of the cell.
                            &quot;width&quot;: { # A magnitude in a single direction in the specified units. # The width of the border.
                              &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                              &quot;magnitude&quot;: 3.14, # The magnitude.
                            },
                            &quot;dashStyle&quot;: &quot;A String&quot;, # The dash style of the border.
                            &quot;color&quot;: { # A color that can either be fully opaque or fully transparent. # The color of the border. This color cannot be transparent.
                              &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                                &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                                  &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                                  &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                                  &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                                },
                              },
                            },
                          },
                          &quot;columnSpan&quot;: 42, # The column span of the cell. This property is read-only.
                          &quot;paddingBottom&quot;: { # A magnitude in a single direction in the specified units. # The bottom padding of the cell.
                            &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                            &quot;magnitude&quot;: 3.14, # The magnitude.
                          },
                        },
                        &quot;tableCellStyleSuggestionState&quot;: { # A mask that indicates which of the fields on the base TableCellStyle have been changed in this suggestion. For any field set to true, there is a new suggested value. # A mask that indicates which of the fields on the base TableCellStyle have been changed in this suggestion.
                          &quot;rowSpanSuggested&quot;: True or False, # Indicates if there was a suggested change to row_span.
                          &quot;columnSpanSuggested&quot;: True or False, # Indicates if there was a suggested change to column_span.
                          &quot;borderBottomSuggested&quot;: True or False, # Indicates if there was a suggested change to border_bottom.
                          &quot;borderLeftSuggested&quot;: True or False, # Indicates if there was a suggested change to border_left.
                          &quot;paddingLeftSuggested&quot;: True or False, # Indicates if there was a suggested change to padding_left.
                          &quot;paddingRightSuggested&quot;: True or False, # Indicates if there was a suggested change to padding_right.
                          &quot;paddingBottomSuggested&quot;: True or False, # Indicates if there was a suggested change to padding_bottom.
                          &quot;paddingTopSuggested&quot;: True or False, # Indicates if there was a suggested change to padding_top.
                          &quot;contentAlignmentSuggested&quot;: True or False, # Indicates if there was a suggested change to content_alignment.
                          &quot;borderRightSuggested&quot;: True or False, # Indicates if there was a suggested change to border_right.
                          &quot;backgroundColorSuggested&quot;: True or False, # Indicates if there was a suggested change to background_color.
                          &quot;borderTopSuggested&quot;: True or False, # Indicates if there was a suggested change to border_top.
                        },
                      },
                    },
                    &quot;endIndex&quot;: 42, # The zero-based end index of this cell, exclusive, in UTF-16 code units.
                  },
                ],
                &quot;endIndex&quot;: 42, # The zero-based end index of this row, exclusive, in UTF-16 code units.
                &quot;tableRowStyle&quot;: { # Styles that apply to a table row. # The style of the table row.
                  &quot;minRowHeight&quot;: { # A magnitude in a single direction in the specified units. # The minimum height of the row. The row will be rendered in the Docs editor at a height equal to or greater than this value in order to show all the content in the row&#x27;s cells.
                    &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                    &quot;magnitude&quot;: 3.14, # The magnitude.
                  },
                },
              },
            ],
            &quot;suggestedDeletionIds&quot;: [ # The suggested deletion IDs. If empty, then there are no suggested deletions of this content.
              &quot;A String&quot;,
            ],
            &quot;rows&quot;: 42, # Number of rows in the table.
            &quot;columns&quot;: 42, # Number of columns in the table. It is possible for a table to be non-rectangular, so some rows may have a different number of cells.
          },
          &quot;sectionBreak&quot;: { # A StructuralElement representing a section break. A section is a range of content which has the same SectionStyle. A section break represents the start of a new section, and the section style applies to the section after the section break. The document body always begins with a section break. # A section break type of structural element.
            &quot;suggestedInsertionIds&quot;: [ # The suggested insertion IDs. A SectionBreak may have multiple insertion IDs if it is a nested suggested change. If empty, then this is not a suggested insertion.
              &quot;A String&quot;,
            ],
            &quot;sectionStyle&quot;: { # The styling that applies to a section. # The style of the section after this section break.
              &quot;marginLeft&quot;: { # A magnitude in a single direction in the specified units. # The left page margin of the section. If unset, uses margin_left from DocumentStyle. Updating left margin causes columns in this section to resize. Since the margin affects column width, it is applied before column properties. When updating this property, setting a concrete value is required. Unsetting this property results in a 400 bad request error.
                &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                &quot;magnitude&quot;: 3.14, # The magnitude.
              },
              &quot;sectionType&quot;: &quot;A String&quot;, # Output only. The type of section.
              &quot;evenPageHeaderId&quot;: &quot;A String&quot;, # The ID of the header used only for even pages. If the value of DocumentStyle&#x27;s use_even_page_header_footer is true, this value is used for the headers on even pages in the section. If it is false, the headers on even pages uses the default_header_id. If unset, the value inherits from the previous SectionBreak&#x27;s SectionStyle. If the value is unset in the first SectionBreak, it inherits from DocumentStyle&#x27;s even_page_header_id. This property is read-only.
              &quot;useFirstPageHeaderFooter&quot;: True or False, # Indicates whether to use the first page header / footer IDs for the first page of the section. If unset, it inherits from DocumentStyle&#x27;s use_first_page_header_footer for the first section. If the value is unset for subsequent sectors, it should be interpreted as false. When updating this property, setting a concrete value is required. Unsetting this property results in a 400 bad request error.
              &quot;marginHeader&quot;: { # A magnitude in a single direction in the specified units. # The header margin of the section. If unset, uses margin_header from DocumentStyle. If updated, use_custom_header_footer_margins is set to true on DocumentStyle. The value of use_custom_header_footer_margins on DocumentStyle indicates if a header margin is being respected for this section. When updating this property, setting a concrete value is required. Unsetting this property results in a 400 bad request error.
                &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                &quot;magnitude&quot;: 3.14, # The magnitude.
              },
              &quot;firstPageFooterId&quot;: &quot;A String&quot;, # The ID of the footer used only for the first page of the section. If use_first_page_header_footer is true, this value is used for the footer on the first page of the section. If it is false, the footer on the first page of the section uses the default_footer_id. If unset, the value inherits from the previous SectionBreak&#x27;s SectionStyle. If the value is unset in the first SectionBreak, it inherits from DocumentStyle&#x27;s first_page_footer_id. This property is read-only.
              &quot;firstPageHeaderId&quot;: &quot;A String&quot;, # The ID of the header used only for the first page of the section. If use_first_page_header_footer is true, this value is used for the header on the first page of the section. If it is false, the header on the first page of the section uses the default_header_id. If unset, the value inherits from the previous SectionBreak&#x27;s SectionStyle. If the value is unset in the first SectionBreak, it inherits from DocumentStyle&#x27;s first_page_header_id. This property is read-only.
              &quot;columnSeparatorStyle&quot;: &quot;A String&quot;, # The style of column separators. This style can be set even when there is one column in the section. When updating this property, setting a concrete value is required. Unsetting this property results in a 400 bad request error.
              &quot;marginBottom&quot;: { # A magnitude in a single direction in the specified units. # The bottom page margin of the section. If unset, uses margin_bottom from DocumentStyle. When updating this property, setting a concrete value is required. Unsetting this property results in a 400 bad request error.
                &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                &quot;magnitude&quot;: 3.14, # The magnitude.
              },
              &quot;marginFooter&quot;: { # A magnitude in a single direction in the specified units. # The footer margin of the section. If unset, uses margin_footer from DocumentStyle. If updated, use_custom_header_footer_margins is set to true on DocumentStyle. The value of use_custom_header_footer_margins on DocumentStyle indicates if a footer margin is being respected for this section When updating this property, setting a concrete value is required. Unsetting this property results in a 400 bad request error.
                &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                &quot;magnitude&quot;: 3.14, # The magnitude.
              },
              &quot;defaultFooterId&quot;: &quot;A String&quot;, # The ID of the default footer. If unset, the value inherits from the previous SectionBreak&#x27;s SectionStyle. If the value is unset in the first SectionBreak, it inherits from DocumentStyle&#x27;s default_footer_id. This property is read-only.
              &quot;marginTop&quot;: { # A magnitude in a single direction in the specified units. # The top page margin of the section. If unset, uses margin_top from DocumentStyle. When updating this property, setting a concrete value is required. Unsetting this property results in a 400 bad request error.
                &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                &quot;magnitude&quot;: 3.14, # The magnitude.
              },
              &quot;contentDirection&quot;: &quot;A String&quot;, # The content direction of this section. If unset, the value defaults to LEFT_TO_RIGHT. When updating this property, setting a concrete value is required. Unsetting this property results in a 400 bad request error.
              &quot;evenPageFooterId&quot;: &quot;A String&quot;, # The ID of the footer used only for even pages. If the value of DocumentStyle&#x27;s use_even_page_header_footer is true, this value is used for the footers on even pages in the section. If it is false, the footers on even pages uses the default_footer_id. If unset, the value inherits from the previous SectionBreak&#x27;s SectionStyle. If the value is unset in the first SectionBreak, it inherits from DocumentStyle&#x27;s even_page_footer_id. This property is read-only.
              &quot;marginRight&quot;: { # A magnitude in a single direction in the specified units. # The right page margin of the section. If unset, uses margin_right from DocumentStyle. Updating right margin causes columns in this section to resize. Since the margin affects column width, it is applied before column properties. When updating this property, setting a concrete value is required. Unsetting this property results in a 400 bad request error.
                &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                &quot;magnitude&quot;: 3.14, # The magnitude.
              },
              &quot;defaultHeaderId&quot;: &quot;A String&quot;, # The ID of the default header. If unset, the value inherits from the previous SectionBreak&#x27;s SectionStyle. If the value is unset in the first SectionBreak, it inherits from DocumentStyle&#x27;s default_header_id. This property is read-only.
              &quot;pageNumberStart&quot;: 42, # The page number from which to start counting the number of pages for this section. If unset, page numbering continues from the previous section. If the value is unset in the first SectionBreak, refer to DocumentStyle&#x27;s page_number_start. When updating this property, setting a concrete value is required. Unsetting this property results in a 400 bad request error.
              &quot;columnProperties&quot;: [ # The section&#x27;s columns properties. If empty, the section contains one column with the default properties in the Docs editor. A section can be updated to have no more than three columns. When updating this property, setting a concrete value is required. Unsetting this property will result in a 400 bad request error.
                { # Properties that apply to a section&#x27;s column.
                  &quot;paddingEnd&quot;: { # A magnitude in a single direction in the specified units. # The padding at the end of the column.
                    &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                    &quot;magnitude&quot;: 3.14, # The magnitude.
                  },
                  &quot;width&quot;: { # A magnitude in a single direction in the specified units. # Output only. The width of the column.
                    &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                    &quot;magnitude&quot;: 3.14, # The magnitude.
                  },
                },
              ],
            },
            &quot;suggestedDeletionIds&quot;: [ # The suggested deletion IDs. If empty, then there are no suggested deletions of this content.
              &quot;A String&quot;,
            ],
          },
        },
      ],
      &quot;footerId&quot;: &quot;A String&quot;, # The ID of the footer.
    },
  },
  &quot;title&quot;: &quot;A String&quot;, # The title of the document.
  &quot;documentStyle&quot;: { # The style of the document. # Output only. The style of the document.
    &quot;useFirstPageHeaderFooter&quot;: True or False, # Indicates whether to use the first page header / footer IDs for the first page.
    &quot;marginBottom&quot;: { # A magnitude in a single direction in the specified units. # The bottom page margin. Updating the bottom page margin on the document style clears the bottom page margin on all section styles.
      &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
      &quot;magnitude&quot;: 3.14, # The magnitude.
    },
    &quot;pageSize&quot;: { # A width and height. # The size of a page in the document.
      &quot;width&quot;: { # A magnitude in a single direction in the specified units. # The width of the object.
        &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
        &quot;magnitude&quot;: 3.14, # The magnitude.
      },
      &quot;height&quot;: { # A magnitude in a single direction in the specified units. # The height of the object.
        &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
        &quot;magnitude&quot;: 3.14, # The magnitude.
      },
    },
    &quot;marginLeft&quot;: { # A magnitude in a single direction in the specified units. # 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.
      &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
      &quot;magnitude&quot;: 3.14, # The magnitude.
    },
    &quot;defaultFooterId&quot;: &quot;A String&quot;, # The ID of the default footer. If not set, there is no default footer. This property is read-only.
    &quot;marginHeader&quot;: { # A magnitude in a single direction in the specified units. # The amount of space between the top of the page and the contents of the header.
      &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
      &quot;magnitude&quot;: 3.14, # The magnitude.
    },
    &quot;marginFooter&quot;: { # A magnitude in a single direction in the specified units. # The amount of space between the bottom of the page and the contents of the footer.
      &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
      &quot;magnitude&quot;: 3.14, # The magnitude.
    },
    &quot;firstPageHeaderId&quot;: &quot;A String&quot;, # 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 is no first page header. This property is read-only.
    &quot;useCustomHeaderFooterMargins&quot;: True or False, # 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.
    &quot;defaultHeaderId&quot;: &quot;A String&quot;, # The ID of the default header. If not set, there is no default header. This property is read-only.
    &quot;evenPageFooterId&quot;: &quot;A String&quot;, # 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 is no even page footer. This property is read-only.
    &quot;evenPageHeaderId&quot;: &quot;A String&quot;, # 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 is no even page header. This property is read-only.
    &quot;marginTop&quot;: { # A magnitude in a single direction in the specified units. # The top page margin. Updating the top page margin on the document style clears the top page margin on all section styles.
      &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
      &quot;magnitude&quot;: 3.14, # The magnitude.
    },
    &quot;useEvenPageHeaderFooter&quot;: True or False, # Indicates whether to use the even page header / footer IDs for the even pages.
    &quot;pageNumberStart&quot;: 42, # The page number from which to start counting the number of pages.
    &quot;marginRight&quot;: { # A magnitude in a single direction in the specified units. # 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.
      &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
      &quot;magnitude&quot;: 3.14, # The magnitude.
    },
    &quot;firstPageFooterId&quot;: &quot;A String&quot;, # 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 is no first page footer. This property is read-only.
    &quot;background&quot;: { # Represents the background of a document. # The background of the document. Documents cannot have a transparent background color.
      &quot;color&quot;: { # A color that can either be fully opaque or fully transparent. # The background color.
        &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
          &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
            &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
            &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
            &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
          },
        },
      },
    },
  },
  &quot;revisionId&quot;: &quot;A String&quot;, # Output only. The revision ID of the document. Can be used in update requests to specify which revision of a document to apply updates to and how the request should behave if the document has been edited since that revision. Only populated if the user has edit access to the document. The format of the revision ID may change over time, so it should be treated opaquely. A returned revision ID is only guaranteed to be valid for 24 hours after it has been returned and cannot be shared across users. If the revision ID is unchanged between calls, then the document has not changed. Conversely, a changed ID (for the same document and user) usually means the document has been updated; however, a changed ID can also be due to internal factors such as ID format changes.
  &quot;lists&quot;: { # Output only. The lists in the document, keyed by list ID.
    &quot;a_key&quot;: { # A List represents the list attributes for a group of paragraphs that all belong to the same list. A paragraph that is part of a list has a reference to the list&#x27;s ID in its bullet.
      &quot;suggestedInsertionId&quot;: &quot;A String&quot;, # The suggested insertion ID. If empty, then this is not a suggested insertion.
      &quot;suggestedDeletionIds&quot;: [ # The suggested deletion IDs. If empty, then there are no suggested deletions of this list.
        &quot;A String&quot;,
      ],
      &quot;listProperties&quot;: { # The properties of a list which describe the look and feel of bullets belonging to paragraphs associated with a list. # The properties of the list.
        &quot;nestingLevels&quot;: [ # Describes the properties of the bullets at the associated level. A list has at most nine levels of nesting with nesting level 0 corresponding to the top-most level and nesting level 8 corresponding to the most nested level. The nesting levels are returned in ascending order with the least nested returned first.
          { # Contains properties describing the look and feel of a list bullet at a given level of nesting.
            &quot;textStyle&quot;: { # Represents the styling that can be applied to text. Inherited text styles are represented as unset fields in this message. A text style&#x27;s parent depends on where the text style is defined: * The TextStyle of text in a Paragraph inherits from the paragraph&#x27;s corresponding named style type. * The TextStyle on a named style inherits from the normal text named style. * The TextStyle of the normal text named style inherits from the default text style in the Docs editor. * The TextStyle on a Paragraph element that is contained in a table may inherit its text style from the table style. If the text style does not inherit from a parent, unsetting fields will revert the style to a value matching the defaults in the Docs editor. # The text style of bullets at this level of nesting.
              &quot;italic&quot;: True or False, # Whether or not the text is italicized.
              &quot;baselineOffset&quot;: &quot;A String&quot;, # The text&#x27;s vertical offset from its normal position. Text with `SUPERSCRIPT` or `SUBSCRIPT` baseline offsets is automatically rendered in a smaller font size, computed based on the `font_size` field. The `font_size` itself is not affected by changes in this field.
              &quot;bold&quot;: True or False, # Whether or not the text is rendered as bold.
              &quot;fontSize&quot;: { # A magnitude in a single direction in the specified units. # The size of the text&#x27;s font.
                &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                &quot;magnitude&quot;: 3.14, # The magnitude.
              },
              &quot;foregroundColor&quot;: { # A color that can either be fully opaque or fully transparent. # The foreground color of the text. If set, the color is either an RGB color or transparent, depending on the `color` field.
                &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                  &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                    &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                    &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                    &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                  },
                },
              },
              &quot;backgroundColor&quot;: { # A color that can either be fully opaque or fully transparent. # The background color of the text. If set, the color is either an RGB color or transparent, depending on the `color` field.
                &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                  &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                    &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                    &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                    &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                  },
                },
              },
              &quot;link&quot;: { # A reference to another portion of a document or an external URL resource. # The hyperlink destination of the text. If unset, there is no link. Links are not inherited from parent text. Changing the link in an update request causes some other changes to the text style of the range: * When setting a link, the text foreground color will be updated to the default link color and the text will be underlined. If these fields are modified in the same request, those values will be used instead of the link defaults. * Setting a link on a text range that overlaps with an existing link will also update the existing link to point to the new URL. * Links are not settable on newline characters. As a result, setting a link on a text range that crosses a paragraph boundary, such as `&quot;ABC\n123&quot;`, will separate the newline character(s) into their own text runs. The link will be applied separately to the runs before and after the newline. * Removing a link will update the text style of the range to match the style of the preceding text (or the default text styles if the preceding text is another link) unless different styles are being set in the same request.
                &quot;bookmarkId&quot;: &quot;A String&quot;, # The ID of a bookmark in this document.
                &quot;url&quot;: &quot;A String&quot;, # An external URL.
                &quot;headingId&quot;: &quot;A String&quot;, # The ID of a heading in this document.
              },
              &quot;strikethrough&quot;: True or False, # Whether or not the text is struck through.
              &quot;weightedFontFamily&quot;: { # Represents a font family and weight of text. # The font family and rendered weight of the text. If an update request specifies values for both `weighted_font_family` and `bold`, the `weighted_font_family` is applied first, then `bold`. If `weighted_font_family#weight` is not set, it defaults to `400`. If `weighted_font_family` is set, then `weighted_font_family#font_family` must also be set with a non-empty value. Otherwise, a 400 bad request error is returned.
                &quot;fontFamily&quot;: &quot;A String&quot;, # The font family of the text. The font family can be any font from the Font menu in Docs or from [Google Fonts] (https://fonts.google.com/). If the font name is unrecognized, the text is rendered in `Arial`.
                &quot;weight&quot;: 42, # The weight of the font. This field can have any value that is a multiple of `100` between `100` and `900`, inclusive. This range corresponds to the numerical values described in the CSS 2.1 Specification, [section 15.6](https://www.w3.org/TR/CSS21/fonts.html#font-boldness), with non-numerical values disallowed. The default value is `400` (&quot;normal&quot;). The font weight makes up just one component of the rendered font weight. The rendered weight is determined by a combination of the `weight` and the text style&#x27;s resolved `bold` value, after accounting for inheritance: * If the text is bold and the weight is less than `400`, the rendered weight is 400. * If the text is bold and the weight is greater than or equal to `400` but is less than `700`, the rendered weight is `700`. * If the weight is greater than or equal to `700`, the rendered weight is equal to the weight. * If the text is not bold, the rendered weight is equal to the weight.
              },
              &quot;underline&quot;: True or False, # Whether or not the text is underlined.
              &quot;smallCaps&quot;: True or False, # Whether or not the text is in small capital letters.
            },
            &quot;glyphSymbol&quot;: &quot;A String&quot;, # A custom glyph symbol used by bullets when paragraphs at this level of nesting are unordered. The glyph symbol replaces placeholders within the glyph_format. For example, if the glyph_symbol is the solid circle corresponding to Unicode U+25cf code point and the glyph_format is `%0`, the rendered glyph would be the solid circle.
            &quot;startNumber&quot;: 42, # The number of the first list item at this nesting level. A value of 0 is treated as a value of 1 for lettered lists and roman numeraled lists, i.e. for values of both 0 and 1, lettered and roman numeraled lists will begin at `a` and `i` respectively. This value is ignored for nesting levels with unordered glyphs.
            &quot;bulletAlignment&quot;: &quot;A String&quot;, # The alignment of the bullet within the space allotted for rendering the bullet.
            &quot;indentFirstLine&quot;: { # A magnitude in a single direction in the specified units. # The amount of indentation for the first line of paragraphs at this level of nesting.
              &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
              &quot;magnitude&quot;: 3.14, # The magnitude.
            },
            &quot;indentStart&quot;: { # A magnitude in a single direction in the specified units. # The amount of indentation for paragraphs at this level of nesting. Applied to the side that corresponds to the start of the text, based on the paragraph&#x27;s content direction.
              &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
              &quot;magnitude&quot;: 3.14, # The magnitude.
            },
            &quot;glyphType&quot;: &quot;A String&quot;, # The type of glyph used by bullets when paragraphs at this level of nesting are ordered. The glyph type determines the type of glyph used to replace placeholders within the glyph_format when paragraphs at this level of nesting are ordered. For example, if the nesting level is 0, the glyph_format is `%0.` and the glyph type is DECIMAL, then the rendered glyph would replace the placeholder `%0` in the glyph format with a number corresponding to list item&#x27;s order within the list.
            &quot;glyphFormat&quot;: &quot;A String&quot;, # The format string used by bullets at this level of nesting. The glyph format contains one or more placeholders, and these placeholder are replaced with the appropriate values depending on the glyph_type or glyph_symbol. The placeholders follow the pattern `%[nesting_level]`. Furthermore, placeholders can have prefixes and suffixes. Thus, the glyph format follows the pattern `%[nesting_level]`. Note that the prefix and suffix are optional and can be arbitrary strings. For example, the glyph format `%0.` indicates that the rendered glyph will replace the placeholder with the corresponding glyph for nesting level 0 followed by a period as the suffix. So a list with a glyph type of UPPER_ALPHA and glyph format `%0.` at nesting level 0 will result in a list with rendered glyphs `A.` `B.` `C.` The glyph format can contain placeholders for the current nesting level as well as placeholders for parent nesting levels. For example, a list can have a glyph format of `%0.` at nesting level 0 and a glyph format of `%0.%1.` at nesting level 1. Assuming both nesting levels have DECIMAL glyph types, this would result in a list with rendered glyphs `1.` `2.` ` 2.1.` ` 2.2.` `3.` For nesting levels that are ordered, the string that replaces a placeholder in the glyph format for a particular paragraph depends on the paragraph&#x27;s order within the list.
          },
        ],
      },
      &quot;suggestedListPropertiesChanges&quot;: { # The suggested changes to the list properties, keyed by suggestion ID.
        &quot;a_key&quot;: { # A suggested change to ListProperties.
          &quot;listProperties&quot;: { # The properties of a list which describe the look and feel of bullets belonging to paragraphs associated with a list. # A ListProperties that only includes the changes made in this suggestion. This can be used along with the list_properties_suggestion_state to see which fields have changed and their new values.
            &quot;nestingLevels&quot;: [ # Describes the properties of the bullets at the associated level. A list has at most nine levels of nesting with nesting level 0 corresponding to the top-most level and nesting level 8 corresponding to the most nested level. The nesting levels are returned in ascending order with the least nested returned first.
              { # Contains properties describing the look and feel of a list bullet at a given level of nesting.
                &quot;textStyle&quot;: { # Represents the styling that can be applied to text. Inherited text styles are represented as unset fields in this message. A text style&#x27;s parent depends on where the text style is defined: * The TextStyle of text in a Paragraph inherits from the paragraph&#x27;s corresponding named style type. * The TextStyle on a named style inherits from the normal text named style. * The TextStyle of the normal text named style inherits from the default text style in the Docs editor. * The TextStyle on a Paragraph element that is contained in a table may inherit its text style from the table style. If the text style does not inherit from a parent, unsetting fields will revert the style to a value matching the defaults in the Docs editor. # The text style of bullets at this level of nesting.
                  &quot;italic&quot;: True or False, # Whether or not the text is italicized.
                  &quot;baselineOffset&quot;: &quot;A String&quot;, # The text&#x27;s vertical offset from its normal position. Text with `SUPERSCRIPT` or `SUBSCRIPT` baseline offsets is automatically rendered in a smaller font size, computed based on the `font_size` field. The `font_size` itself is not affected by changes in this field.
                  &quot;bold&quot;: True or False, # Whether or not the text is rendered as bold.
                  &quot;fontSize&quot;: { # A magnitude in a single direction in the specified units. # The size of the text&#x27;s font.
                    &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                    &quot;magnitude&quot;: 3.14, # The magnitude.
                  },
                  &quot;foregroundColor&quot;: { # A color that can either be fully opaque or fully transparent. # The foreground color of the text. If set, the color is either an RGB color or transparent, depending on the `color` field.
                    &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                      &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                        &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                        &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                        &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                      },
                    },
                  },
                  &quot;backgroundColor&quot;: { # A color that can either be fully opaque or fully transparent. # The background color of the text. If set, the color is either an RGB color or transparent, depending on the `color` field.
                    &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                      &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                        &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                        &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                        &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                      },
                    },
                  },
                  &quot;link&quot;: { # A reference to another portion of a document or an external URL resource. # The hyperlink destination of the text. If unset, there is no link. Links are not inherited from parent text. Changing the link in an update request causes some other changes to the text style of the range: * When setting a link, the text foreground color will be updated to the default link color and the text will be underlined. If these fields are modified in the same request, those values will be used instead of the link defaults. * Setting a link on a text range that overlaps with an existing link will also update the existing link to point to the new URL. * Links are not settable on newline characters. As a result, setting a link on a text range that crosses a paragraph boundary, such as `&quot;ABC\n123&quot;`, will separate the newline character(s) into their own text runs. The link will be applied separately to the runs before and after the newline. * Removing a link will update the text style of the range to match the style of the preceding text (or the default text styles if the preceding text is another link) unless different styles are being set in the same request.
                    &quot;bookmarkId&quot;: &quot;A String&quot;, # The ID of a bookmark in this document.
                    &quot;url&quot;: &quot;A String&quot;, # An external URL.
                    &quot;headingId&quot;: &quot;A String&quot;, # The ID of a heading in this document.
                  },
                  &quot;strikethrough&quot;: True or False, # Whether or not the text is struck through.
                  &quot;weightedFontFamily&quot;: { # Represents a font family and weight of text. # The font family and rendered weight of the text. If an update request specifies values for both `weighted_font_family` and `bold`, the `weighted_font_family` is applied first, then `bold`. If `weighted_font_family#weight` is not set, it defaults to `400`. If `weighted_font_family` is set, then `weighted_font_family#font_family` must also be set with a non-empty value. Otherwise, a 400 bad request error is returned.
                    &quot;fontFamily&quot;: &quot;A String&quot;, # The font family of the text. The font family can be any font from the Font menu in Docs or from [Google Fonts] (https://fonts.google.com/). If the font name is unrecognized, the text is rendered in `Arial`.
                    &quot;weight&quot;: 42, # The weight of the font. This field can have any value that is a multiple of `100` between `100` and `900`, inclusive. This range corresponds to the numerical values described in the CSS 2.1 Specification, [section 15.6](https://www.w3.org/TR/CSS21/fonts.html#font-boldness), with non-numerical values disallowed. The default value is `400` (&quot;normal&quot;). The font weight makes up just one component of the rendered font weight. The rendered weight is determined by a combination of the `weight` and the text style&#x27;s resolved `bold` value, after accounting for inheritance: * If the text is bold and the weight is less than `400`, the rendered weight is 400. * If the text is bold and the weight is greater than or equal to `400` but is less than `700`, the rendered weight is `700`. * If the weight is greater than or equal to `700`, the rendered weight is equal to the weight. * If the text is not bold, the rendered weight is equal to the weight.
                  },
                  &quot;underline&quot;: True or False, # Whether or not the text is underlined.
                  &quot;smallCaps&quot;: True or False, # Whether or not the text is in small capital letters.
                },
                &quot;glyphSymbol&quot;: &quot;A String&quot;, # A custom glyph symbol used by bullets when paragraphs at this level of nesting are unordered. The glyph symbol replaces placeholders within the glyph_format. For example, if the glyph_symbol is the solid circle corresponding to Unicode U+25cf code point and the glyph_format is `%0`, the rendered glyph would be the solid circle.
                &quot;startNumber&quot;: 42, # The number of the first list item at this nesting level. A value of 0 is treated as a value of 1 for lettered lists and roman numeraled lists, i.e. for values of both 0 and 1, lettered and roman numeraled lists will begin at `a` and `i` respectively. This value is ignored for nesting levels with unordered glyphs.
                &quot;bulletAlignment&quot;: &quot;A String&quot;, # The alignment of the bullet within the space allotted for rendering the bullet.
                &quot;indentFirstLine&quot;: { # A magnitude in a single direction in the specified units. # The amount of indentation for the first line of paragraphs at this level of nesting.
                  &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                  &quot;magnitude&quot;: 3.14, # The magnitude.
                },
                &quot;indentStart&quot;: { # A magnitude in a single direction in the specified units. # The amount of indentation for paragraphs at this level of nesting. Applied to the side that corresponds to the start of the text, based on the paragraph&#x27;s content direction.
                  &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                  &quot;magnitude&quot;: 3.14, # The magnitude.
                },
                &quot;glyphType&quot;: &quot;A String&quot;, # The type of glyph used by bullets when paragraphs at this level of nesting are ordered. The glyph type determines the type of glyph used to replace placeholders within the glyph_format when paragraphs at this level of nesting are ordered. For example, if the nesting level is 0, the glyph_format is `%0.` and the glyph type is DECIMAL, then the rendered glyph would replace the placeholder `%0` in the glyph format with a number corresponding to list item&#x27;s order within the list.
                &quot;glyphFormat&quot;: &quot;A String&quot;, # The format string used by bullets at this level of nesting. The glyph format contains one or more placeholders, and these placeholder are replaced with the appropriate values depending on the glyph_type or glyph_symbol. The placeholders follow the pattern `%[nesting_level]`. Furthermore, placeholders can have prefixes and suffixes. Thus, the glyph format follows the pattern `%[nesting_level]`. Note that the prefix and suffix are optional and can be arbitrary strings. For example, the glyph format `%0.` indicates that the rendered glyph will replace the placeholder with the corresponding glyph for nesting level 0 followed by a period as the suffix. So a list with a glyph type of UPPER_ALPHA and glyph format `%0.` at nesting level 0 will result in a list with rendered glyphs `A.` `B.` `C.` The glyph format can contain placeholders for the current nesting level as well as placeholders for parent nesting levels. For example, a list can have a glyph format of `%0.` at nesting level 0 and a glyph format of `%0.%1.` at nesting level 1. Assuming both nesting levels have DECIMAL glyph types, this would result in a list with rendered glyphs `1.` `2.` ` 2.1.` ` 2.2.` `3.` For nesting levels that are ordered, the string that replaces a placeholder in the glyph format for a particular paragraph depends on the paragraph&#x27;s order within the list.
              },
            ],
          },
          &quot;listPropertiesSuggestionState&quot;: { # A mask that indicates which of the fields on the base ListProperties have been changed in this suggestion. For any field set to true, there is a new suggested value. # A mask that indicates which of the fields on the base ListProperties have been changed in this suggestion.
            &quot;nestingLevelsSuggestionStates&quot;: [ # A mask that indicates which of the fields on the corresponding NestingLevel in nesting_levels have been changed in this suggestion. The nesting level suggestion states are returned in ascending order of the nesting level with the least nested returned first.
              { # A mask that indicates which of the fields on the base NestingLevel have been changed in this suggestion. For any field set to true, there is a new suggested value.
                &quot;glyphSymbolSuggested&quot;: True or False, # Indicates if there was a suggested change to glyph_symbol.
                &quot;indentFirstLineSuggested&quot;: True or False, # Indicates if there was a suggested change to indent_first_line.
                &quot;textStyleSuggestionState&quot;: { # A mask that indicates which of the fields on the base TextStyle have been changed in this suggestion. For any field set to true, there is a new suggested value. # A mask that indicates which of the fields in text style have been changed in this suggestion.
                  &quot;backgroundColorSuggested&quot;: True or False, # Indicates if there was a suggested change to background_color.
                  &quot;fontSizeSuggested&quot;: True or False, # Indicates if there was a suggested change to font_size.
                  &quot;boldSuggested&quot;: True or False, # Indicates if there was a suggested change to bold.
                  &quot;baselineOffsetSuggested&quot;: True or False, # Indicates if there was a suggested change to baseline_offset.
                  &quot;foregroundColorSuggested&quot;: True or False, # Indicates if there was a suggested change to foreground_color.
                  &quot;italicSuggested&quot;: True or False, # Indicates if there was a suggested change to italic.
                  &quot;linkSuggested&quot;: True or False, # Indicates if there was a suggested change to link.
                  &quot;underlineSuggested&quot;: True or False, # Indicates if there was a suggested change to underline.
                  &quot;weightedFontFamilySuggested&quot;: True or False, # Indicates if there was a suggested change to weighted_font_family.
                  &quot;smallCapsSuggested&quot;: True or False, # Indicates if there was a suggested change to small_caps.
                  &quot;strikethroughSuggested&quot;: True or False, # Indicates if there was a suggested change to strikethrough.
                },
                &quot;indentStartSuggested&quot;: True or False, # Indicates if there was a suggested change to indent_start.
                &quot;glyphTypeSuggested&quot;: True or False, # Indicates if there was a suggested change to glyph_type.
                &quot;startNumberSuggested&quot;: True or False, # Indicates if there was a suggested change to start_number.
                &quot;bulletAlignmentSuggested&quot;: True or False, # Indicates if there was a suggested change to bullet_alignment.
                &quot;glyphFormatSuggested&quot;: True or False, # Indicates if there was a suggested change to glyph_format.
              },
            ],
          },
        },
      },
    },
  },
  &quot;suggestedDocumentStyleChanges&quot;: { # Output only. The suggested changes to the style of the document, keyed by suggestion ID.
    &quot;a_key&quot;: { # A suggested change to the DocumentStyle.
      &quot;documentStyleSuggestionState&quot;: { # A mask that indicates which of the fields on the base DocumentStyle have been changed in this suggestion. For any field set to true, there is a new suggested value. # A mask that indicates which of the fields on the base DocumentStyle have been changed in this suggestion.
        &quot;defaultHeaderIdSuggested&quot;: True or False, # Indicates if there was a suggested change to default_header_id.
        &quot;pageSizeSuggestionState&quot;: { # A mask that indicates which of the fields on the base Size have been changed in this suggestion. For any field set to true, the Size has a new suggested value. # A mask that indicates which of the fields in size have been changed in this suggestion.
          &quot;heightSuggested&quot;: True or False, # Indicates if there was a suggested change to height.
          &quot;widthSuggested&quot;: True or False, # Indicates if there was a suggested change to width.
        },
        &quot;marginRightSuggested&quot;: True or False, # Indicates if there was a suggested change to margin_right.
        &quot;marginFooterSuggested&quot;: True or False, # Indicates if there was a suggested change to margin_footer.
        &quot;marginHeaderSuggested&quot;: True or False, # Indicates if there was a suggested change to margin_header.
        &quot;useEvenPageHeaderFooterSuggested&quot;: True or False, # Indicates if there was a suggested change to use_even_page_header_footer.
        &quot;backgroundSuggestionState&quot;: { # A mask that indicates which of the fields on the base Background have been changed in this suggestion. For any field set to true, the Backgound has a new suggested value. # A mask that indicates which of the fields in background have been changed in this suggestion.
          &quot;backgroundColorSuggested&quot;: True or False, # Indicates whether the current background color has been modified in this suggestion.
        },
        &quot;evenPageHeaderIdSuggested&quot;: True or False, # Indicates if there was a suggested change to even_page_header_id.
        &quot;marginLeftSuggested&quot;: True or False, # Indicates if there was a suggested change to margin_left.
        &quot;useFirstPageHeaderFooterSuggested&quot;: True or False, # Indicates if there was a suggested change to use_first_page_header_footer.
        &quot;evenPageFooterIdSuggested&quot;: True or False, # Indicates if there was a suggested change to even_page_footer_id.
        &quot;firstPageFooterIdSuggested&quot;: True or False, # Indicates if there was a suggested change to first_page_footer_id.
        &quot;useCustomHeaderFooterMarginsSuggested&quot;: True or False, # Indicates if there was a suggested change to use_custom_header_footer_margins.
        &quot;marginBottomSuggested&quot;: True or False, # Indicates if there was a suggested change to margin_bottom.
        &quot;marginTopSuggested&quot;: True or False, # Indicates if there was a suggested change to margin_top.
        &quot;defaultFooterIdSuggested&quot;: True or False, # Indicates if there was a suggested change to default_footer_id.
        &quot;pageNumberStartSuggested&quot;: True or False, # Indicates if there was a suggested change to page_number_start.
        &quot;firstPageHeaderIdSuggested&quot;: True or False, # Indicates if there was a suggested change to first_page_header_id.
      },
      &quot;documentStyle&quot;: { # The style of the document. # A DocumentStyle that only includes the changes made in this suggestion. This can be used along with the document_style_suggestion_state to see which fields have changed and their new values.
        &quot;useFirstPageHeaderFooter&quot;: True or False, # Indicates whether to use the first page header / footer IDs for the first page.
        &quot;marginBottom&quot;: { # A magnitude in a single direction in the specified units. # The bottom page margin. Updating the bottom page margin on the document style clears the bottom page margin on all section styles.
          &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
          &quot;magnitude&quot;: 3.14, # The magnitude.
        },
        &quot;pageSize&quot;: { # A width and height. # The size of a page in the document.
          &quot;width&quot;: { # A magnitude in a single direction in the specified units. # The width of the object.
            &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
            &quot;magnitude&quot;: 3.14, # The magnitude.
          },
          &quot;height&quot;: { # A magnitude in a single direction in the specified units. # The height of the object.
            &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
            &quot;magnitude&quot;: 3.14, # The magnitude.
          },
        },
        &quot;marginLeft&quot;: { # A magnitude in a single direction in the specified units. # 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.
          &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
          &quot;magnitude&quot;: 3.14, # The magnitude.
        },
        &quot;defaultFooterId&quot;: &quot;A String&quot;, # The ID of the default footer. If not set, there is no default footer. This property is read-only.
        &quot;marginHeader&quot;: { # A magnitude in a single direction in the specified units. # The amount of space between the top of the page and the contents of the header.
          &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
          &quot;magnitude&quot;: 3.14, # The magnitude.
        },
        &quot;marginFooter&quot;: { # A magnitude in a single direction in the specified units. # The amount of space between the bottom of the page and the contents of the footer.
          &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
          &quot;magnitude&quot;: 3.14, # The magnitude.
        },
        &quot;firstPageHeaderId&quot;: &quot;A String&quot;, # 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 is no first page header. This property is read-only.
        &quot;useCustomHeaderFooterMargins&quot;: True or False, # 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.
        &quot;defaultHeaderId&quot;: &quot;A String&quot;, # The ID of the default header. If not set, there is no default header. This property is read-only.
        &quot;evenPageFooterId&quot;: &quot;A String&quot;, # 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 is no even page footer. This property is read-only.
        &quot;evenPageHeaderId&quot;: &quot;A String&quot;, # 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 is no even page header. This property is read-only.
        &quot;marginTop&quot;: { # A magnitude in a single direction in the specified units. # The top page margin. Updating the top page margin on the document style clears the top page margin on all section styles.
          &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
          &quot;magnitude&quot;: 3.14, # The magnitude.
        },
        &quot;useEvenPageHeaderFooter&quot;: True or False, # Indicates whether to use the even page header / footer IDs for the even pages.
        &quot;pageNumberStart&quot;: 42, # The page number from which to start counting the number of pages.
        &quot;marginRight&quot;: { # A magnitude in a single direction in the specified units. # 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.
          &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
          &quot;magnitude&quot;: 3.14, # The magnitude.
        },
        &quot;firstPageFooterId&quot;: &quot;A String&quot;, # 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 is no first page footer. This property is read-only.
        &quot;background&quot;: { # Represents the background of a document. # The background of the document. Documents cannot have a transparent background color.
          &quot;color&quot;: { # A color that can either be fully opaque or fully transparent. # The background color.
            &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
              &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
              },
            },
          },
        },
      },
    },
  },
  &quot;body&quot;: { # The document body. The body typically contains the full document contents except for headers, footers and footnotes. # Output only. The main body of the document.
    &quot;content&quot;: [ # The contents of the body. The indexes for the body&#x27;s content begin at zero.
      { # A StructuralElement describes content that provides structure to the document.
        &quot;paragraph&quot;: { # A StructuralElement representing a paragraph. A paragraph is a range of content that is terminated with a newline character. # A paragraph type of structural element.
          &quot;suggestedParagraphStyleChanges&quot;: { # The suggested paragraph style changes to this paragraph, keyed by suggestion ID.
            &quot;a_key&quot;: { # A suggested change to a ParagraphStyle.
              &quot;paragraphStyle&quot;: { # Styles that apply to a whole paragraph. Inherited paragraph styles are represented as unset fields in this message. A paragraph style&#x27;s parent depends on where the paragraph style is defined: * The ParagraphStyle on a Paragraph inherits from the paragraph&#x27;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 is 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. # A ParagraphStyle that only includes the changes made in this suggestion. This can be used along with the paragraph_suggestion_state to see which fields have changed and their new values.
                &quot;borderRight&quot;: { # A border around a paragraph. # The border to the right of this paragraph. If unset, the value is inherited from the parent. Paragraph borders cannot be partially updated. When making changes to a paragraph border the new border must be specified in its entirety.
                  &quot;color&quot;: { # A color that can either be fully opaque or fully transparent. # The color of the border.
                    &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                      &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                        &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                        &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                        &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                      },
                    },
                  },
                  &quot;width&quot;: { # A magnitude in a single direction in the specified units. # The width of the border.
                    &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                    &quot;magnitude&quot;: 3.14, # The magnitude.
                  },
                  &quot;padding&quot;: { # A magnitude in a single direction in the specified units. # The padding of the border.
                    &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                    &quot;magnitude&quot;: 3.14, # The magnitude.
                  },
                  &quot;dashStyle&quot;: &quot;A String&quot;, # The dash style of the border.
                },
                &quot;indentFirstLine&quot;: { # A magnitude in a single direction in the specified units. # The amount of indentation for the first line of the paragraph. If unset, the value is inherited from the parent.
                  &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                  &quot;magnitude&quot;: 3.14, # The magnitude.
                },
                &quot;alignment&quot;: &quot;A String&quot;, # The text alignment for this paragraph.
                &quot;lineSpacing&quot;: 3.14, # The amount of space between lines, as a percentage of normal, where normal is represented as 100.0. If unset, the value is inherited from the parent.
                &quot;keepLinesTogether&quot;: True or False, # Whether all lines of the paragraph should be laid out on the same page or column if possible. If unset, the value is inherited from the parent.
                &quot;avoidWidowAndOrphan&quot;: True or False, # Whether to avoid widows and orphans for the paragraph. If unset, the value is inherited from the parent.
                &quot;spaceBelow&quot;: { # A magnitude in a single direction in the specified units. # The amount of extra space below the paragraph. If unset, the value is inherited from the parent.
                  &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                  &quot;magnitude&quot;: 3.14, # The magnitude.
                },
                &quot;borderBetween&quot;: { # A border around a paragraph. # 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 making changes to a paragraph border the new border must be specified in its entirety.
                  &quot;color&quot;: { # A color that can either be fully opaque or fully transparent. # The color of the border.
                    &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                      &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                        &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                        &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                        &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                      },
                    },
                  },
                  &quot;width&quot;: { # A magnitude in a single direction in the specified units. # The width of the border.
                    &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                    &quot;magnitude&quot;: 3.14, # The magnitude.
                  },
                  &quot;padding&quot;: { # A magnitude in a single direction in the specified units. # The padding of the border.
                    &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                    &quot;magnitude&quot;: 3.14, # The magnitude.
                  },
                  &quot;dashStyle&quot;: &quot;A String&quot;, # The dash style of the border.
                },
                &quot;headingId&quot;: &quot;A String&quot;, # The heading ID of the paragraph. If empty, then this paragraph is not a heading. This property is read-only.
                &quot;spaceAbove&quot;: { # A magnitude in a single direction in the specified units. # The amount of extra space above the paragraph. If unset, the value is inherited from the parent.
                  &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                  &quot;magnitude&quot;: 3.14, # The magnitude.
                },
                &quot;direction&quot;: &quot;A String&quot;, # The text direction of this paragraph. If unset, the value defaults to LEFT_TO_RIGHT since paragraph direction is not inherited.
                &quot;namedStyleType&quot;: &quot;A String&quot;, # The named style type of the paragraph. Since updating the named style type affects other properties within ParagraphStyle, the named style type is applied before the other properties are updated.
                &quot;tabStops&quot;: [ # A list of the tab stops for this paragraph. The list of tab stops is not inherited. This property is read-only.
                  { # A tab stop within a paragraph.
                    &quot;offset&quot;: { # A magnitude in a single direction in the specified units. # The offset between this tab stop and the start margin.
                      &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                      &quot;magnitude&quot;: 3.14, # The magnitude.
                    },
                    &quot;alignment&quot;: &quot;A String&quot;, # The alignment of this tab stop. If unset, the value defaults to START.
                  },
                ],
                &quot;indentStart&quot;: { # A magnitude in a single direction in the specified units. # The amount of indentation for the paragraph on the side that corresponds to the start of the text, based on the current paragraph direction. If unset, the value is inherited from the parent.
                  &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                  &quot;magnitude&quot;: 3.14, # The magnitude.
                },
                &quot;keepWithNext&quot;: True or False, # Whether at least a part of this paragraph should be laid out on the same page or column as the next paragraph if possible. If unset, the value is inherited from the parent.
                &quot;borderTop&quot;: { # A border around a paragraph. # 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 making changes to a paragraph border the new border must be specified in its entirety.
                  &quot;color&quot;: { # A color that can either be fully opaque or fully transparent. # The color of the border.
                    &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                      &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                        &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                        &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                        &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                      },
                    },
                  },
                  &quot;width&quot;: { # A magnitude in a single direction in the specified units. # The width of the border.
                    &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                    &quot;magnitude&quot;: 3.14, # The magnitude.
                  },
                  &quot;padding&quot;: { # A magnitude in a single direction in the specified units. # The padding of the border.
                    &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                    &quot;magnitude&quot;: 3.14, # The magnitude.
                  },
                  &quot;dashStyle&quot;: &quot;A String&quot;, # The dash style of the border.
                },
                &quot;borderLeft&quot;: { # A border around a paragraph. # The border to the left of this paragraph. If unset, the value is inherited from the parent. Paragraph borders cannot be partially updated. When making changes to a paragraph border the new border must be specified in its entirety.
                  &quot;color&quot;: { # A color that can either be fully opaque or fully transparent. # The color of the border.
                    &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                      &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                        &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                        &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                        &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                      },
                    },
                  },
                  &quot;width&quot;: { # A magnitude in a single direction in the specified units. # The width of the border.
                    &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                    &quot;magnitude&quot;: 3.14, # The magnitude.
                  },
                  &quot;padding&quot;: { # A magnitude in a single direction in the specified units. # The padding of the border.
                    &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                    &quot;magnitude&quot;: 3.14, # The magnitude.
                  },
                  &quot;dashStyle&quot;: &quot;A String&quot;, # The dash style of the border.
                },
                &quot;borderBottom&quot;: { # A border around a paragraph. # 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 making changes to a paragraph border the new border must be specified in its entirety.
                  &quot;color&quot;: { # A color that can either be fully opaque or fully transparent. # The color of the border.
                    &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                      &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                        &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                        &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                        &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                      },
                    },
                  },
                  &quot;width&quot;: { # A magnitude in a single direction in the specified units. # The width of the border.
                    &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                    &quot;magnitude&quot;: 3.14, # The magnitude.
                  },
                  &quot;padding&quot;: { # A magnitude in a single direction in the specified units. # The padding of the border.
                    &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                    &quot;magnitude&quot;: 3.14, # The magnitude.
                  },
                  &quot;dashStyle&quot;: &quot;A String&quot;, # The dash style of the border.
                },
                &quot;shading&quot;: { # The shading of a paragraph. # The shading of the paragraph. If unset, the value is inherited from the parent.
                  &quot;backgroundColor&quot;: { # A color that can either be fully opaque or fully transparent. # The background color of this paragraph shading.
                    &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                      &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                        &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                        &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                        &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                      },
                    },
                  },
                },
                &quot;indentEnd&quot;: { # A magnitude in a single direction in the specified units. # 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.
                  &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                  &quot;magnitude&quot;: 3.14, # The magnitude.
                },
                &quot;spacingMode&quot;: &quot;A String&quot;, # The spacing mode for the paragraph.
              },
              &quot;paragraphStyleSuggestionState&quot;: { # A mask that indicates which of the fields on the base ParagraphStyle have been changed in this suggestion. For any field set to true, there is a new suggested value. # A mask that indicates which of the fields on the base ParagraphStyle have been changed in this suggestion.
                &quot;borderRightSuggested&quot;: True or False, # Indicates if there was a suggested change to border_right.
                &quot;indentEndSuggested&quot;: True or False, # Indicates if there was a suggested change to indent_end.
                &quot;lineSpacingSuggested&quot;: True or False, # Indicates if there was a suggested change to line_spacing.
                &quot;headingIdSuggested&quot;: True or False, # Indicates if there was a suggested change to heading_id.
                &quot;indentStartSuggested&quot;: True or False, # Indicates if there was a suggested change to indent_start.
                &quot;keepWithNextSuggested&quot;: True or False, # Indicates if there was a suggested change to keep_with_next.
                &quot;namedStyleTypeSuggested&quot;: True or False, # Indicates if there was a suggested change to named_style_type.
                &quot;borderTopSuggested&quot;: True or False, # Indicates if there was a suggested change to border_top.
                &quot;keepLinesTogetherSuggested&quot;: True or False, # Indicates if there was a suggested change to keep_lines_together.
                &quot;avoidWidowAndOrphanSuggested&quot;: True or False, # Indicates if there was a suggested change to avoid_widow_and_orphan.
                &quot;spaceBelowSuggested&quot;: True or False, # Indicates if there was a suggested change to space_below.
                &quot;indentFirstLineSuggested&quot;: True or False, # Indicates if there was a suggested change to indent_first_line.
                &quot;shadingSuggestionState&quot;: { # A mask that indicates which of the fields on the base Shading have been changed in this suggested change. For any field set to true, there is a new suggested value. # A mask that indicates which of the fields in shading have been changed in this suggestion.
                  &quot;backgroundColorSuggested&quot;: True or False, # Indicates if there was a suggested change to the Shading.
                },
                &quot;directionSuggested&quot;: True or False, # Indicates if there was a suggested change to direction.
                &quot;borderBetweenSuggested&quot;: True or False, # Indicates if there was a suggested change to border_between.
                &quot;spaceAboveSuggested&quot;: True or False, # Indicates if there was a suggested change to space_above.
                &quot;borderLeftSuggested&quot;: True or False, # Indicates if there was a suggested change to border_left.
                &quot;spacingModeSuggested&quot;: True or False, # Indicates if there was a suggested change to spacing_mode.
                &quot;borderBottomSuggested&quot;: True or False, # Indicates if there was a suggested change to border_bottom.
                &quot;alignmentSuggested&quot;: True or False, # Indicates if there was a suggested change to alignment.
              },
            },
          },
          &quot;bullet&quot;: { # Describes the bullet of a paragraph. # The bullet for this paragraph. If not present, the paragraph does not belong to a list.
            &quot;textStyle&quot;: { # Represents the styling that can be applied to text. Inherited text styles are represented as unset fields in this message. A text style&#x27;s parent depends on where the text style is defined: * The TextStyle of text in a Paragraph inherits from the paragraph&#x27;s corresponding named style type. * The TextStyle on a named style inherits from the normal text named style. * The TextStyle of the normal text named style inherits from the default text style in the Docs editor. * The TextStyle on a Paragraph element that is contained in a table may inherit its text style from the table style. If the text style does not inherit from a parent, unsetting fields will revert the style to a value matching the defaults in the Docs editor. # The paragraph specific text style applied to this bullet.
              &quot;italic&quot;: True or False, # Whether or not the text is italicized.
              &quot;baselineOffset&quot;: &quot;A String&quot;, # The text&#x27;s vertical offset from its normal position. Text with `SUPERSCRIPT` or `SUBSCRIPT` baseline offsets is automatically rendered in a smaller font size, computed based on the `font_size` field. The `font_size` itself is not affected by changes in this field.
              &quot;bold&quot;: True or False, # Whether or not the text is rendered as bold.
              &quot;fontSize&quot;: { # A magnitude in a single direction in the specified units. # The size of the text&#x27;s font.
                &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                &quot;magnitude&quot;: 3.14, # The magnitude.
              },
              &quot;foregroundColor&quot;: { # A color that can either be fully opaque or fully transparent. # The foreground color of the text. If set, the color is either an RGB color or transparent, depending on the `color` field.
                &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                  &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                    &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                    &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                    &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                  },
                },
              },
              &quot;backgroundColor&quot;: { # A color that can either be fully opaque or fully transparent. # The background color of the text. If set, the color is either an RGB color or transparent, depending on the `color` field.
                &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                  &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                    &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                    &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                    &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                  },
                },
              },
              &quot;link&quot;: { # A reference to another portion of a document or an external URL resource. # The hyperlink destination of the text. If unset, there is no link. Links are not inherited from parent text. Changing the link in an update request causes some other changes to the text style of the range: * When setting a link, the text foreground color will be updated to the default link color and the text will be underlined. If these fields are modified in the same request, those values will be used instead of the link defaults. * Setting a link on a text range that overlaps with an existing link will also update the existing link to point to the new URL. * Links are not settable on newline characters. As a result, setting a link on a text range that crosses a paragraph boundary, such as `&quot;ABC\n123&quot;`, will separate the newline character(s) into their own text runs. The link will be applied separately to the runs before and after the newline. * Removing a link will update the text style of the range to match the style of the preceding text (or the default text styles if the preceding text is another link) unless different styles are being set in the same request.
                &quot;bookmarkId&quot;: &quot;A String&quot;, # The ID of a bookmark in this document.
                &quot;url&quot;: &quot;A String&quot;, # An external URL.
                &quot;headingId&quot;: &quot;A String&quot;, # The ID of a heading in this document.
              },
              &quot;strikethrough&quot;: True or False, # Whether or not the text is struck through.
              &quot;weightedFontFamily&quot;: { # Represents a font family and weight of text. # The font family and rendered weight of the text. If an update request specifies values for both `weighted_font_family` and `bold`, the `weighted_font_family` is applied first, then `bold`. If `weighted_font_family#weight` is not set, it defaults to `400`. If `weighted_font_family` is set, then `weighted_font_family#font_family` must also be set with a non-empty value. Otherwise, a 400 bad request error is returned.
                &quot;fontFamily&quot;: &quot;A String&quot;, # The font family of the text. The font family can be any font from the Font menu in Docs or from [Google Fonts] (https://fonts.google.com/). If the font name is unrecognized, the text is rendered in `Arial`.
                &quot;weight&quot;: 42, # The weight of the font. This field can have any value that is a multiple of `100` between `100` and `900`, inclusive. This range corresponds to the numerical values described in the CSS 2.1 Specification, [section 15.6](https://www.w3.org/TR/CSS21/fonts.html#font-boldness), with non-numerical values disallowed. The default value is `400` (&quot;normal&quot;). The font weight makes up just one component of the rendered font weight. The rendered weight is determined by a combination of the `weight` and the text style&#x27;s resolved `bold` value, after accounting for inheritance: * If the text is bold and the weight is less than `400`, the rendered weight is 400. * If the text is bold and the weight is greater than or equal to `400` but is less than `700`, the rendered weight is `700`. * If the weight is greater than or equal to `700`, the rendered weight is equal to the weight. * If the text is not bold, the rendered weight is equal to the weight.
              },
              &quot;underline&quot;: True or False, # Whether or not the text is underlined.
              &quot;smallCaps&quot;: True or False, # Whether or not the text is in small capital letters.
            },
            &quot;nestingLevel&quot;: 42, # The nesting level of this paragraph in the list.
            &quot;listId&quot;: &quot;A String&quot;, # The ID of the list this paragraph belongs to.
          },
          &quot;suggestedBulletChanges&quot;: { # The suggested changes to this paragraph&#x27;s bullet.
            &quot;a_key&quot;: { # A suggested change to a Bullet.
              &quot;bulletSuggestionState&quot;: { # A mask that indicates which of the fields on the base Bullet have been changed in this suggestion. For any field set to true, there is a new suggested value. # A mask that indicates which of the fields on the base Bullet have been changed in this suggestion.
                &quot;nestingLevelSuggested&quot;: True or False, # Indicates if there was a suggested change to the nesting_level.
                &quot;textStyleSuggestionState&quot;: { # A mask that indicates which of the fields on the base TextStyle have been changed in this suggestion. For any field set to true, there is a new suggested value. # A mask that indicates which of the fields in text style have been changed in this suggestion.
                  &quot;backgroundColorSuggested&quot;: True or False, # Indicates if there was a suggested change to background_color.
                  &quot;fontSizeSuggested&quot;: True or False, # Indicates if there was a suggested change to font_size.
                  &quot;boldSuggested&quot;: True or False, # Indicates if there was a suggested change to bold.
                  &quot;baselineOffsetSuggested&quot;: True or False, # Indicates if there was a suggested change to baseline_offset.
                  &quot;foregroundColorSuggested&quot;: True or False, # Indicates if there was a suggested change to foreground_color.
                  &quot;italicSuggested&quot;: True or False, # Indicates if there was a suggested change to italic.
                  &quot;linkSuggested&quot;: True or False, # Indicates if there was a suggested change to link.
                  &quot;underlineSuggested&quot;: True or False, # Indicates if there was a suggested change to underline.
                  &quot;weightedFontFamilySuggested&quot;: True or False, # Indicates if there was a suggested change to weighted_font_family.
                  &quot;smallCapsSuggested&quot;: True or False, # Indicates if there was a suggested change to small_caps.
                  &quot;strikethroughSuggested&quot;: True or False, # Indicates if there was a suggested change to strikethrough.
                },
                &quot;listIdSuggested&quot;: True or False, # Indicates if there was a suggested change to the list_id.
              },
              &quot;bullet&quot;: { # Describes the bullet of a paragraph. # A Bullet that only includes the changes made in this suggestion. This can be used along with the bullet_suggestion_state to see which fields have changed and their new values.
                &quot;textStyle&quot;: { # Represents the styling that can be applied to text. Inherited text styles are represented as unset fields in this message. A text style&#x27;s parent depends on where the text style is defined: * The TextStyle of text in a Paragraph inherits from the paragraph&#x27;s corresponding named style type. * The TextStyle on a named style inherits from the normal text named style. * The TextStyle of the normal text named style inherits from the default text style in the Docs editor. * The TextStyle on a Paragraph element that is contained in a table may inherit its text style from the table style. If the text style does not inherit from a parent, unsetting fields will revert the style to a value matching the defaults in the Docs editor. # The paragraph specific text style applied to this bullet.
                  &quot;italic&quot;: True or False, # Whether or not the text is italicized.
                  &quot;baselineOffset&quot;: &quot;A String&quot;, # The text&#x27;s vertical offset from its normal position. Text with `SUPERSCRIPT` or `SUBSCRIPT` baseline offsets is automatically rendered in a smaller font size, computed based on the `font_size` field. The `font_size` itself is not affected by changes in this field.
                  &quot;bold&quot;: True or False, # Whether or not the text is rendered as bold.
                  &quot;fontSize&quot;: { # A magnitude in a single direction in the specified units. # The size of the text&#x27;s font.
                    &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                    &quot;magnitude&quot;: 3.14, # The magnitude.
                  },
                  &quot;foregroundColor&quot;: { # A color that can either be fully opaque or fully transparent. # The foreground color of the text. If set, the color is either an RGB color or transparent, depending on the `color` field.
                    &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                      &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                        &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                        &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                        &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                      },
                    },
                  },
                  &quot;backgroundColor&quot;: { # A color that can either be fully opaque or fully transparent. # The background color of the text. If set, the color is either an RGB color or transparent, depending on the `color` field.
                    &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                      &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                        &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                        &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                        &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                      },
                    },
                  },
                  &quot;link&quot;: { # A reference to another portion of a document or an external URL resource. # The hyperlink destination of the text. If unset, there is no link. Links are not inherited from parent text. Changing the link in an update request causes some other changes to the text style of the range: * When setting a link, the text foreground color will be updated to the default link color and the text will be underlined. If these fields are modified in the same request, those values will be used instead of the link defaults. * Setting a link on a text range that overlaps with an existing link will also update the existing link to point to the new URL. * Links are not settable on newline characters. As a result, setting a link on a text range that crosses a paragraph boundary, such as `&quot;ABC\n123&quot;`, will separate the newline character(s) into their own text runs. The link will be applied separately to the runs before and after the newline. * Removing a link will update the text style of the range to match the style of the preceding text (or the default text styles if the preceding text is another link) unless different styles are being set in the same request.
                    &quot;bookmarkId&quot;: &quot;A String&quot;, # The ID of a bookmark in this document.
                    &quot;url&quot;: &quot;A String&quot;, # An external URL.
                    &quot;headingId&quot;: &quot;A String&quot;, # The ID of a heading in this document.
                  },
                  &quot;strikethrough&quot;: True or False, # Whether or not the text is struck through.
                  &quot;weightedFontFamily&quot;: { # Represents a font family and weight of text. # The font family and rendered weight of the text. If an update request specifies values for both `weighted_font_family` and `bold`, the `weighted_font_family` is applied first, then `bold`. If `weighted_font_family#weight` is not set, it defaults to `400`. If `weighted_font_family` is set, then `weighted_font_family#font_family` must also be set with a non-empty value. Otherwise, a 400 bad request error is returned.
                    &quot;fontFamily&quot;: &quot;A String&quot;, # The font family of the text. The font family can be any font from the Font menu in Docs or from [Google Fonts] (https://fonts.google.com/). If the font name is unrecognized, the text is rendered in `Arial`.
                    &quot;weight&quot;: 42, # The weight of the font. This field can have any value that is a multiple of `100` between `100` and `900`, inclusive. This range corresponds to the numerical values described in the CSS 2.1 Specification, [section 15.6](https://www.w3.org/TR/CSS21/fonts.html#font-boldness), with non-numerical values disallowed. The default value is `400` (&quot;normal&quot;). The font weight makes up just one component of the rendered font weight. The rendered weight is determined by a combination of the `weight` and the text style&#x27;s resolved `bold` value, after accounting for inheritance: * If the text is bold and the weight is less than `400`, the rendered weight is 400. * If the text is bold and the weight is greater than or equal to `400` but is less than `700`, the rendered weight is `700`. * If the weight is greater than or equal to `700`, the rendered weight is equal to the weight. * If the text is not bold, the rendered weight is equal to the weight.
                  },
                  &quot;underline&quot;: True or False, # Whether or not the text is underlined.
                  &quot;smallCaps&quot;: True or False, # Whether or not the text is in small capital letters.
                },
                &quot;nestingLevel&quot;: 42, # The nesting level of this paragraph in the list.
                &quot;listId&quot;: &quot;A String&quot;, # The ID of the list this paragraph belongs to.
              },
            },
          },
          &quot;suggestedPositionedObjectIds&quot;: { # The IDs of the positioned objects that are suggested to be attached to this paragraph, keyed by suggestion ID.
            &quot;a_key&quot;: { # A collection of object IDs.
              &quot;objectIds&quot;: [ # The object IDs.
                &quot;A String&quot;,
              ],
            },
          },
          &quot;elements&quot;: [ # The content of the paragraph broken down into its component parts.
            { # A ParagraphElement describes content within a Paragraph.
              &quot;textRun&quot;: { # A ParagraphElement that represents a run of text that all has the same styling. # A text run paragraph element.
                &quot;suggestedInsertionIds&quot;: [ # The suggested insertion IDs. A TextRun may have multiple insertion IDs if it is a nested suggested change. If empty, then this is not a suggested insertion.
                  &quot;A String&quot;,
                ],
                &quot;content&quot;: &quot;A String&quot;, # The text of this run. Any non-text elements in the run are replaced with the Unicode character U+E907.
                &quot;textStyle&quot;: { # Represents the styling that can be applied to text. Inherited text styles are represented as unset fields in this message. A text style&#x27;s parent depends on where the text style is defined: * The TextStyle of text in a Paragraph inherits from the paragraph&#x27;s corresponding named style type. * The TextStyle on a named style inherits from the normal text named style. * The TextStyle of the normal text named style inherits from the default text style in the Docs editor. * The TextStyle on a Paragraph element that is contained in a table may inherit its text style from the table style. If the text style does not inherit from a parent, unsetting fields will revert the style to a value matching the defaults in the Docs editor. # The text style of this run.
                  &quot;italic&quot;: True or False, # Whether or not the text is italicized.
                  &quot;baselineOffset&quot;: &quot;A String&quot;, # The text&#x27;s vertical offset from its normal position. Text with `SUPERSCRIPT` or `SUBSCRIPT` baseline offsets is automatically rendered in a smaller font size, computed based on the `font_size` field. The `font_size` itself is not affected by changes in this field.
                  &quot;bold&quot;: True or False, # Whether or not the text is rendered as bold.
                  &quot;fontSize&quot;: { # A magnitude in a single direction in the specified units. # The size of the text&#x27;s font.
                    &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                    &quot;magnitude&quot;: 3.14, # The magnitude.
                  },
                  &quot;foregroundColor&quot;: { # A color that can either be fully opaque or fully transparent. # The foreground color of the text. If set, the color is either an RGB color or transparent, depending on the `color` field.
                    &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                      &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                        &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                        &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                        &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                      },
                    },
                  },
                  &quot;backgroundColor&quot;: { # A color that can either be fully opaque or fully transparent. # The background color of the text. If set, the color is either an RGB color or transparent, depending on the `color` field.
                    &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                      &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                        &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                        &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                        &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                      },
                    },
                  },
                  &quot;link&quot;: { # A reference to another portion of a document or an external URL resource. # The hyperlink destination of the text. If unset, there is no link. Links are not inherited from parent text. Changing the link in an update request causes some other changes to the text style of the range: * When setting a link, the text foreground color will be updated to the default link color and the text will be underlined. If these fields are modified in the same request, those values will be used instead of the link defaults. * Setting a link on a text range that overlaps with an existing link will also update the existing link to point to the new URL. * Links are not settable on newline characters. As a result, setting a link on a text range that crosses a paragraph boundary, such as `&quot;ABC\n123&quot;`, will separate the newline character(s) into their own text runs. The link will be applied separately to the runs before and after the newline. * Removing a link will update the text style of the range to match the style of the preceding text (or the default text styles if the preceding text is another link) unless different styles are being set in the same request.
                    &quot;bookmarkId&quot;: &quot;A String&quot;, # The ID of a bookmark in this document.
                    &quot;url&quot;: &quot;A String&quot;, # An external URL.
                    &quot;headingId&quot;: &quot;A String&quot;, # The ID of a heading in this document.
                  },
                  &quot;strikethrough&quot;: True or False, # Whether or not the text is struck through.
                  &quot;weightedFontFamily&quot;: { # Represents a font family and weight of text. # The font family and rendered weight of the text. If an update request specifies values for both `weighted_font_family` and `bold`, the `weighted_font_family` is applied first, then `bold`. If `weighted_font_family#weight` is not set, it defaults to `400`. If `weighted_font_family` is set, then `weighted_font_family#font_family` must also be set with a non-empty value. Otherwise, a 400 bad request error is returned.
                    &quot;fontFamily&quot;: &quot;A String&quot;, # The font family of the text. The font family can be any font from the Font menu in Docs or from [Google Fonts] (https://fonts.google.com/). If the font name is unrecognized, the text is rendered in `Arial`.
                    &quot;weight&quot;: 42, # The weight of the font. This field can have any value that is a multiple of `100` between `100` and `900`, inclusive. This range corresponds to the numerical values described in the CSS 2.1 Specification, [section 15.6](https://www.w3.org/TR/CSS21/fonts.html#font-boldness), with non-numerical values disallowed. The default value is `400` (&quot;normal&quot;). The font weight makes up just one component of the rendered font weight. The rendered weight is determined by a combination of the `weight` and the text style&#x27;s resolved `bold` value, after accounting for inheritance: * If the text is bold and the weight is less than `400`, the rendered weight is 400. * If the text is bold and the weight is greater than or equal to `400` but is less than `700`, the rendered weight is `700`. * If the weight is greater than or equal to `700`, the rendered weight is equal to the weight. * If the text is not bold, the rendered weight is equal to the weight.
                  },
                  &quot;underline&quot;: True or False, # Whether or not the text is underlined.
                  &quot;smallCaps&quot;: True or False, # Whether or not the text is in small capital letters.
                },
                &quot;suggestedTextStyleChanges&quot;: { # The suggested text style changes to this run, keyed by suggestion ID.
                  &quot;a_key&quot;: { # A suggested change to a TextStyle.
                    &quot;textStyleSuggestionState&quot;: { # A mask that indicates which of the fields on the base TextStyle have been changed in this suggestion. For any field set to true, there is a new suggested value. # A mask that indicates which of the fields on the base TextStyle have been changed in this suggestion.
                      &quot;backgroundColorSuggested&quot;: True or False, # Indicates if there was a suggested change to background_color.
                      &quot;fontSizeSuggested&quot;: True or False, # Indicates if there was a suggested change to font_size.
                      &quot;boldSuggested&quot;: True or False, # Indicates if there was a suggested change to bold.
                      &quot;baselineOffsetSuggested&quot;: True or False, # Indicates if there was a suggested change to baseline_offset.
                      &quot;foregroundColorSuggested&quot;: True or False, # Indicates if there was a suggested change to foreground_color.
                      &quot;italicSuggested&quot;: True or False, # Indicates if there was a suggested change to italic.
                      &quot;linkSuggested&quot;: True or False, # Indicates if there was a suggested change to link.
                      &quot;underlineSuggested&quot;: True or False, # Indicates if there was a suggested change to underline.
                      &quot;weightedFontFamilySuggested&quot;: True or False, # Indicates if there was a suggested change to weighted_font_family.
                      &quot;smallCapsSuggested&quot;: True or False, # Indicates if there was a suggested change to small_caps.
                      &quot;strikethroughSuggested&quot;: True or False, # Indicates if there was a suggested change to strikethrough.
                    },
                    &quot;textStyle&quot;: { # Represents the styling that can be applied to text. Inherited text styles are represented as unset fields in this message. A text style&#x27;s parent depends on where the text style is defined: * The TextStyle of text in a Paragraph inherits from the paragraph&#x27;s corresponding named style type. * The TextStyle on a named style inherits from the normal text named style. * The TextStyle of the normal text named style inherits from the default text style in the Docs editor. * The TextStyle on a Paragraph element that is contained in a table may inherit its text style from the table style. If the text style does not inherit from a parent, unsetting fields will revert the style to a value matching the defaults in the Docs editor. # A TextStyle that only includes the changes made in this suggestion. This can be used along with the text_style_suggestion_state to see which fields have changed and their new values.
                      &quot;italic&quot;: True or False, # Whether or not the text is italicized.
                      &quot;baselineOffset&quot;: &quot;A String&quot;, # The text&#x27;s vertical offset from its normal position. Text with `SUPERSCRIPT` or `SUBSCRIPT` baseline offsets is automatically rendered in a smaller font size, computed based on the `font_size` field. The `font_size` itself is not affected by changes in this field.
                      &quot;bold&quot;: True or False, # Whether or not the text is rendered as bold.
                      &quot;fontSize&quot;: { # A magnitude in a single direction in the specified units. # The size of the text&#x27;s font.
                        &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                        &quot;magnitude&quot;: 3.14, # The magnitude.
                      },
                      &quot;foregroundColor&quot;: { # A color that can either be fully opaque or fully transparent. # The foreground color of the text. If set, the color is either an RGB color or transparent, depending on the `color` field.
                        &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                          &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                            &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                            &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                            &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                          },
                        },
                      },
                      &quot;backgroundColor&quot;: { # A color that can either be fully opaque or fully transparent. # The background color of the text. If set, the color is either an RGB color or transparent, depending on the `color` field.
                        &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                          &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                            &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                            &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                            &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                          },
                        },
                      },
                      &quot;link&quot;: { # A reference to another portion of a document or an external URL resource. # The hyperlink destination of the text. If unset, there is no link. Links are not inherited from parent text. Changing the link in an update request causes some other changes to the text style of the range: * When setting a link, the text foreground color will be updated to the default link color and the text will be underlined. If these fields are modified in the same request, those values will be used instead of the link defaults. * Setting a link on a text range that overlaps with an existing link will also update the existing link to point to the new URL. * Links are not settable on newline characters. As a result, setting a link on a text range that crosses a paragraph boundary, such as `&quot;ABC\n123&quot;`, will separate the newline character(s) into their own text runs. The link will be applied separately to the runs before and after the newline. * Removing a link will update the text style of the range to match the style of the preceding text (or the default text styles if the preceding text is another link) unless different styles are being set in the same request.
                        &quot;bookmarkId&quot;: &quot;A String&quot;, # The ID of a bookmark in this document.
                        &quot;url&quot;: &quot;A String&quot;, # An external URL.
                        &quot;headingId&quot;: &quot;A String&quot;, # The ID of a heading in this document.
                      },
                      &quot;strikethrough&quot;: True or False, # Whether or not the text is struck through.
                      &quot;weightedFontFamily&quot;: { # Represents a font family and weight of text. # The font family and rendered weight of the text. If an update request specifies values for both `weighted_font_family` and `bold`, the `weighted_font_family` is applied first, then `bold`. If `weighted_font_family#weight` is not set, it defaults to `400`. If `weighted_font_family` is set, then `weighted_font_family#font_family` must also be set with a non-empty value. Otherwise, a 400 bad request error is returned.
                        &quot;fontFamily&quot;: &quot;A String&quot;, # The font family of the text. The font family can be any font from the Font menu in Docs or from [Google Fonts] (https://fonts.google.com/). If the font name is unrecognized, the text is rendered in `Arial`.
                        &quot;weight&quot;: 42, # The weight of the font. This field can have any value that is a multiple of `100` between `100` and `900`, inclusive. This range corresponds to the numerical values described in the CSS 2.1 Specification, [section 15.6](https://www.w3.org/TR/CSS21/fonts.html#font-boldness), with non-numerical values disallowed. The default value is `400` (&quot;normal&quot;). The font weight makes up just one component of the rendered font weight. The rendered weight is determined by a combination of the `weight` and the text style&#x27;s resolved `bold` value, after accounting for inheritance: * If the text is bold and the weight is less than `400`, the rendered weight is 400. * If the text is bold and the weight is greater than or equal to `400` but is less than `700`, the rendered weight is `700`. * If the weight is greater than or equal to `700`, the rendered weight is equal to the weight. * If the text is not bold, the rendered weight is equal to the weight.
                      },
                      &quot;underline&quot;: True or False, # Whether or not the text is underlined.
                      &quot;smallCaps&quot;: True or False, # Whether or not the text is in small capital letters.
                    },
                  },
                },
                &quot;suggestedDeletionIds&quot;: [ # The suggested deletion IDs. If empty, then there are no suggested deletions of this content.
                  &quot;A String&quot;,
                ],
              },
              &quot;pageBreak&quot;: { # A ParagraphElement representing a page break. A page break makes the subsequent text start at the top of the next page. # A page break paragraph element.
                &quot;suggestedInsertionIds&quot;: [ # The suggested insertion IDs. A PageBreak may have multiple insertion IDs if it is a nested suggested change. If empty, then this is not a suggested insertion.
                  &quot;A String&quot;,
                ],
                &quot;textStyle&quot;: { # Represents the styling that can be applied to text. Inherited text styles are represented as unset fields in this message. A text style&#x27;s parent depends on where the text style is defined: * The TextStyle of text in a Paragraph inherits from the paragraph&#x27;s corresponding named style type. * The TextStyle on a named style inherits from the normal text named style. * The TextStyle of the normal text named style inherits from the default text style in the Docs editor. * The TextStyle on a Paragraph element that is contained in a table may inherit its text style from the table style. If the text style does not inherit from a parent, unsetting fields will revert the style to a value matching the defaults in the Docs editor. # The text style of this PageBreak. Similar to text content, like text runs and footnote references, the text style of a page break can affect content layout as well as the styling of text inserted adjacent to it.
                  &quot;italic&quot;: True or False, # Whether or not the text is italicized.
                  &quot;baselineOffset&quot;: &quot;A String&quot;, # The text&#x27;s vertical offset from its normal position. Text with `SUPERSCRIPT` or `SUBSCRIPT` baseline offsets is automatically rendered in a smaller font size, computed based on the `font_size` field. The `font_size` itself is not affected by changes in this field.
                  &quot;bold&quot;: True or False, # Whether or not the text is rendered as bold.
                  &quot;fontSize&quot;: { # A magnitude in a single direction in the specified units. # The size of the text&#x27;s font.
                    &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                    &quot;magnitude&quot;: 3.14, # The magnitude.
                  },
                  &quot;foregroundColor&quot;: { # A color that can either be fully opaque or fully transparent. # The foreground color of the text. If set, the color is either an RGB color or transparent, depending on the `color` field.
                    &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                      &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                        &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                        &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                        &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                      },
                    },
                  },
                  &quot;backgroundColor&quot;: { # A color that can either be fully opaque or fully transparent. # The background color of the text. If set, the color is either an RGB color or transparent, depending on the `color` field.
                    &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                      &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                        &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                        &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                        &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                      },
                    },
                  },
                  &quot;link&quot;: { # A reference to another portion of a document or an external URL resource. # The hyperlink destination of the text. If unset, there is no link. Links are not inherited from parent text. Changing the link in an update request causes some other changes to the text style of the range: * When setting a link, the text foreground color will be updated to the default link color and the text will be underlined. If these fields are modified in the same request, those values will be used instead of the link defaults. * Setting a link on a text range that overlaps with an existing link will also update the existing link to point to the new URL. * Links are not settable on newline characters. As a result, setting a link on a text range that crosses a paragraph boundary, such as `&quot;ABC\n123&quot;`, will separate the newline character(s) into their own text runs. The link will be applied separately to the runs before and after the newline. * Removing a link will update the text style of the range to match the style of the preceding text (or the default text styles if the preceding text is another link) unless different styles are being set in the same request.
                    &quot;bookmarkId&quot;: &quot;A String&quot;, # The ID of a bookmark in this document.
                    &quot;url&quot;: &quot;A String&quot;, # An external URL.
                    &quot;headingId&quot;: &quot;A String&quot;, # The ID of a heading in this document.
                  },
                  &quot;strikethrough&quot;: True or False, # Whether or not the text is struck through.
                  &quot;weightedFontFamily&quot;: { # Represents a font family and weight of text. # The font family and rendered weight of the text. If an update request specifies values for both `weighted_font_family` and `bold`, the `weighted_font_family` is applied first, then `bold`. If `weighted_font_family#weight` is not set, it defaults to `400`. If `weighted_font_family` is set, then `weighted_font_family#font_family` must also be set with a non-empty value. Otherwise, a 400 bad request error is returned.
                    &quot;fontFamily&quot;: &quot;A String&quot;, # The font family of the text. The font family can be any font from the Font menu in Docs or from [Google Fonts] (https://fonts.google.com/). If the font name is unrecognized, the text is rendered in `Arial`.
                    &quot;weight&quot;: 42, # The weight of the font. This field can have any value that is a multiple of `100` between `100` and `900`, inclusive. This range corresponds to the numerical values described in the CSS 2.1 Specification, [section 15.6](https://www.w3.org/TR/CSS21/fonts.html#font-boldness), with non-numerical values disallowed. The default value is `400` (&quot;normal&quot;). The font weight makes up just one component of the rendered font weight. The rendered weight is determined by a combination of the `weight` and the text style&#x27;s resolved `bold` value, after accounting for inheritance: * If the text is bold and the weight is less than `400`, the rendered weight is 400. * If the text is bold and the weight is greater than or equal to `400` but is less than `700`, the rendered weight is `700`. * If the weight is greater than or equal to `700`, the rendered weight is equal to the weight. * If the text is not bold, the rendered weight is equal to the weight.
                  },
                  &quot;underline&quot;: True or False, # Whether or not the text is underlined.
                  &quot;smallCaps&quot;: True or False, # Whether or not the text is in small capital letters.
                },
                &quot;suggestedTextStyleChanges&quot;: { # The suggested text style changes to this PageBreak, keyed by suggestion ID.
                  &quot;a_key&quot;: { # A suggested change to a TextStyle.
                    &quot;textStyleSuggestionState&quot;: { # A mask that indicates which of the fields on the base TextStyle have been changed in this suggestion. For any field set to true, there is a new suggested value. # A mask that indicates which of the fields on the base TextStyle have been changed in this suggestion.
                      &quot;backgroundColorSuggested&quot;: True or False, # Indicates if there was a suggested change to background_color.
                      &quot;fontSizeSuggested&quot;: True or False, # Indicates if there was a suggested change to font_size.
                      &quot;boldSuggested&quot;: True or False, # Indicates if there was a suggested change to bold.
                      &quot;baselineOffsetSuggested&quot;: True or False, # Indicates if there was a suggested change to baseline_offset.
                      &quot;foregroundColorSuggested&quot;: True or False, # Indicates if there was a suggested change to foreground_color.
                      &quot;italicSuggested&quot;: True or False, # Indicates if there was a suggested change to italic.
                      &quot;linkSuggested&quot;: True or False, # Indicates if there was a suggested change to link.
                      &quot;underlineSuggested&quot;: True or False, # Indicates if there was a suggested change to underline.
                      &quot;weightedFontFamilySuggested&quot;: True or False, # Indicates if there was a suggested change to weighted_font_family.
                      &quot;smallCapsSuggested&quot;: True or False, # Indicates if there was a suggested change to small_caps.
                      &quot;strikethroughSuggested&quot;: True or False, # Indicates if there was a suggested change to strikethrough.
                    },
                    &quot;textStyle&quot;: { # Represents the styling that can be applied to text. Inherited text styles are represented as unset fields in this message. A text style&#x27;s parent depends on where the text style is defined: * The TextStyle of text in a Paragraph inherits from the paragraph&#x27;s corresponding named style type. * The TextStyle on a named style inherits from the normal text named style. * The TextStyle of the normal text named style inherits from the default text style in the Docs editor. * The TextStyle on a Paragraph element that is contained in a table may inherit its text style from the table style. If the text style does not inherit from a parent, unsetting fields will revert the style to a value matching the defaults in the Docs editor. # A TextStyle that only includes the changes made in this suggestion. This can be used along with the text_style_suggestion_state to see which fields have changed and their new values.
                      &quot;italic&quot;: True or False, # Whether or not the text is italicized.
                      &quot;baselineOffset&quot;: &quot;A String&quot;, # The text&#x27;s vertical offset from its normal position. Text with `SUPERSCRIPT` or `SUBSCRIPT` baseline offsets is automatically rendered in a smaller font size, computed based on the `font_size` field. The `font_size` itself is not affected by changes in this field.
                      &quot;bold&quot;: True or False, # Whether or not the text is rendered as bold.
                      &quot;fontSize&quot;: { # A magnitude in a single direction in the specified units. # The size of the text&#x27;s font.
                        &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                        &quot;magnitude&quot;: 3.14, # The magnitude.
                      },
                      &quot;foregroundColor&quot;: { # A color that can either be fully opaque or fully transparent. # The foreground color of the text. If set, the color is either an RGB color or transparent, depending on the `color` field.
                        &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                          &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                            &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                            &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                            &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                          },
                        },
                      },
                      &quot;backgroundColor&quot;: { # A color that can either be fully opaque or fully transparent. # The background color of the text. If set, the color is either an RGB color or transparent, depending on the `color` field.
                        &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                          &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                            &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                            &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                            &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                          },
                        },
                      },
                      &quot;link&quot;: { # A reference to another portion of a document or an external URL resource. # The hyperlink destination of the text. If unset, there is no link. Links are not inherited from parent text. Changing the link in an update request causes some other changes to the text style of the range: * When setting a link, the text foreground color will be updated to the default link color and the text will be underlined. If these fields are modified in the same request, those values will be used instead of the link defaults. * Setting a link on a text range that overlaps with an existing link will also update the existing link to point to the new URL. * Links are not settable on newline characters. As a result, setting a link on a text range that crosses a paragraph boundary, such as `&quot;ABC\n123&quot;`, will separate the newline character(s) into their own text runs. The link will be applied separately to the runs before and after the newline. * Removing a link will update the text style of the range to match the style of the preceding text (or the default text styles if the preceding text is another link) unless different styles are being set in the same request.
                        &quot;bookmarkId&quot;: &quot;A String&quot;, # The ID of a bookmark in this document.
                        &quot;url&quot;: &quot;A String&quot;, # An external URL.
                        &quot;headingId&quot;: &quot;A String&quot;, # The ID of a heading in this document.
                      },
                      &quot;strikethrough&quot;: True or False, # Whether or not the text is struck through.
                      &quot;weightedFontFamily&quot;: { # Represents a font family and weight of text. # The font family and rendered weight of the text. If an update request specifies values for both `weighted_font_family` and `bold`, the `weighted_font_family` is applied first, then `bold`. If `weighted_font_family#weight` is not set, it defaults to `400`. If `weighted_font_family` is set, then `weighted_font_family#font_family` must also be set with a non-empty value. Otherwise, a 400 bad request error is returned.
                        &quot;fontFamily&quot;: &quot;A String&quot;, # The font family of the text. The font family can be any font from the Font menu in Docs or from [Google Fonts] (https://fonts.google.com/). If the font name is unrecognized, the text is rendered in `Arial`.
                        &quot;weight&quot;: 42, # The weight of the font. This field can have any value that is a multiple of `100` between `100` and `900`, inclusive. This range corresponds to the numerical values described in the CSS 2.1 Specification, [section 15.6](https://www.w3.org/TR/CSS21/fonts.html#font-boldness), with non-numerical values disallowed. The default value is `400` (&quot;normal&quot;). The font weight makes up just one component of the rendered font weight. The rendered weight is determined by a combination of the `weight` and the text style&#x27;s resolved `bold` value, after accounting for inheritance: * If the text is bold and the weight is less than `400`, the rendered weight is 400. * If the text is bold and the weight is greater than or equal to `400` but is less than `700`, the rendered weight is `700`. * If the weight is greater than or equal to `700`, the rendered weight is equal to the weight. * If the text is not bold, the rendered weight is equal to the weight.
                      },
                      &quot;underline&quot;: True or False, # Whether or not the text is underlined.
                      &quot;smallCaps&quot;: True or False, # Whether or not the text is in small capital letters.
                    },
                  },
                },
                &quot;suggestedDeletionIds&quot;: [ # The suggested deletion IDs. If empty, then there are no suggested deletions of this content.
                  &quot;A String&quot;,
                ],
              },
              &quot;horizontalRule&quot;: { # A ParagraphElement representing a horizontal line. # A horizontal rule paragraph element.
                &quot;suggestedInsertionIds&quot;: [ # The suggested insertion IDs. A HorizontalRule may have multiple insertion IDs if it is a nested suggested change. If empty, then this is not a suggested insertion.
                  &quot;A String&quot;,
                ],
                &quot;suggestedTextStyleChanges&quot;: { # The suggested text style changes to this HorizontalRule, keyed by suggestion ID.
                  &quot;a_key&quot;: { # A suggested change to a TextStyle.
                    &quot;textStyleSuggestionState&quot;: { # A mask that indicates which of the fields on the base TextStyle have been changed in this suggestion. For any field set to true, there is a new suggested value. # A mask that indicates which of the fields on the base TextStyle have been changed in this suggestion.
                      &quot;backgroundColorSuggested&quot;: True or False, # Indicates if there was a suggested change to background_color.
                      &quot;fontSizeSuggested&quot;: True or False, # Indicates if there was a suggested change to font_size.
                      &quot;boldSuggested&quot;: True or False, # Indicates if there was a suggested change to bold.
                      &quot;baselineOffsetSuggested&quot;: True or False, # Indicates if there was a suggested change to baseline_offset.
                      &quot;foregroundColorSuggested&quot;: True or False, # Indicates if there was a suggested change to foreground_color.
                      &quot;italicSuggested&quot;: True or False, # Indicates if there was a suggested change to italic.
                      &quot;linkSuggested&quot;: True or False, # Indicates if there was a suggested change to link.
                      &quot;underlineSuggested&quot;: True or False, # Indicates if there was a suggested change to underline.
                      &quot;weightedFontFamilySuggested&quot;: True or False, # Indicates if there was a suggested change to weighted_font_family.
                      &quot;smallCapsSuggested&quot;: True or False, # Indicates if there was a suggested change to small_caps.
                      &quot;strikethroughSuggested&quot;: True or False, # Indicates if there was a suggested change to strikethrough.
                    },
                    &quot;textStyle&quot;: { # Represents the styling that can be applied to text. Inherited text styles are represented as unset fields in this message. A text style&#x27;s parent depends on where the text style is defined: * The TextStyle of text in a Paragraph inherits from the paragraph&#x27;s corresponding named style type. * The TextStyle on a named style inherits from the normal text named style. * The TextStyle of the normal text named style inherits from the default text style in the Docs editor. * The TextStyle on a Paragraph element that is contained in a table may inherit its text style from the table style. If the text style does not inherit from a parent, unsetting fields will revert the style to a value matching the defaults in the Docs editor. # A TextStyle that only includes the changes made in this suggestion. This can be used along with the text_style_suggestion_state to see which fields have changed and their new values.
                      &quot;italic&quot;: True or False, # Whether or not the text is italicized.
                      &quot;baselineOffset&quot;: &quot;A String&quot;, # The text&#x27;s vertical offset from its normal position. Text with `SUPERSCRIPT` or `SUBSCRIPT` baseline offsets is automatically rendered in a smaller font size, computed based on the `font_size` field. The `font_size` itself is not affected by changes in this field.
                      &quot;bold&quot;: True or False, # Whether or not the text is rendered as bold.
                      &quot;fontSize&quot;: { # A magnitude in a single direction in the specified units. # The size of the text&#x27;s font.
                        &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                        &quot;magnitude&quot;: 3.14, # The magnitude.
                      },
                      &quot;foregroundColor&quot;: { # A color that can either be fully opaque or fully transparent. # The foreground color of the text. If set, the color is either an RGB color or transparent, depending on the `color` field.
                        &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                          &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                            &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                            &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                            &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                          },
                        },
                      },
                      &quot;backgroundColor&quot;: { # A color that can either be fully opaque or fully transparent. # The background color of the text. If set, the color is either an RGB color or transparent, depending on the `color` field.
                        &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                          &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                            &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                            &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                            &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                          },
                        },
                      },
                      &quot;link&quot;: { # A reference to another portion of a document or an external URL resource. # The hyperlink destination of the text. If unset, there is no link. Links are not inherited from parent text. Changing the link in an update request causes some other changes to the text style of the range: * When setting a link, the text foreground color will be updated to the default link color and the text will be underlined. If these fields are modified in the same request, those values will be used instead of the link defaults. * Setting a link on a text range that overlaps with an existing link will also update the existing link to point to the new URL. * Links are not settable on newline characters. As a result, setting a link on a text range that crosses a paragraph boundary, such as `&quot;ABC\n123&quot;`, will separate the newline character(s) into their own text runs. The link will be applied separately to the runs before and after the newline. * Removing a link will update the text style of the range to match the style of the preceding text (or the default text styles if the preceding text is another link) unless different styles are being set in the same request.
                        &quot;bookmarkId&quot;: &quot;A String&quot;, # The ID of a bookmark in this document.
                        &quot;url&quot;: &quot;A String&quot;, # An external URL.
                        &quot;headingId&quot;: &quot;A String&quot;, # The ID of a heading in this document.
                      },
                      &quot;strikethrough&quot;: True or False, # Whether or not the text is struck through.
                      &quot;weightedFontFamily&quot;: { # Represents a font family and weight of text. # The font family and rendered weight of the text. If an update request specifies values for both `weighted_font_family` and `bold`, the `weighted_font_family` is applied first, then `bold`. If `weighted_font_family#weight` is not set, it defaults to `400`. If `weighted_font_family` is set, then `weighted_font_family#font_family` must also be set with a non-empty value. Otherwise, a 400 bad request error is returned.
                        &quot;fontFamily&quot;: &quot;A String&quot;, # The font family of the text. The font family can be any font from the Font menu in Docs or from [Google Fonts] (https://fonts.google.com/). If the font name is unrecognized, the text is rendered in `Arial`.
                        &quot;weight&quot;: 42, # The weight of the font. This field can have any value that is a multiple of `100` between `100` and `900`, inclusive. This range corresponds to the numerical values described in the CSS 2.1 Specification, [section 15.6](https://www.w3.org/TR/CSS21/fonts.html#font-boldness), with non-numerical values disallowed. The default value is `400` (&quot;normal&quot;). The font weight makes up just one component of the rendered font weight. The rendered weight is determined by a combination of the `weight` and the text style&#x27;s resolved `bold` value, after accounting for inheritance: * If the text is bold and the weight is less than `400`, the rendered weight is 400. * If the text is bold and the weight is greater than or equal to `400` but is less than `700`, the rendered weight is `700`. * If the weight is greater than or equal to `700`, the rendered weight is equal to the weight. * If the text is not bold, the rendered weight is equal to the weight.
                      },
                      &quot;underline&quot;: True or False, # Whether or not the text is underlined.
                      &quot;smallCaps&quot;: True or False, # Whether or not the text is in small capital letters.
                    },
                  },
                },
                &quot;suggestedDeletionIds&quot;: [ # The suggested deletion IDs. If empty, then there are no suggested deletions of this content.
                  &quot;A String&quot;,
                ],
                &quot;textStyle&quot;: { # Represents the styling that can be applied to text. Inherited text styles are represented as unset fields in this message. A text style&#x27;s parent depends on where the text style is defined: * The TextStyle of text in a Paragraph inherits from the paragraph&#x27;s corresponding named style type. * The TextStyle on a named style inherits from the normal text named style. * The TextStyle of the normal text named style inherits from the default text style in the Docs editor. * The TextStyle on a Paragraph element that is contained in a table may inherit its text style from the table style. If the text style does not inherit from a parent, unsetting fields will revert the style to a value matching the defaults in the Docs editor. # The text style of this HorizontalRule. Similar to text content, like text runs and footnote references, the text style of a horizontal rule can affect content layout as well as the styling of text inserted adjacent to it.
                  &quot;italic&quot;: True or False, # Whether or not the text is italicized.
                  &quot;baselineOffset&quot;: &quot;A String&quot;, # The text&#x27;s vertical offset from its normal position. Text with `SUPERSCRIPT` or `SUBSCRIPT` baseline offsets is automatically rendered in a smaller font size, computed based on the `font_size` field. The `font_size` itself is not affected by changes in this field.
                  &quot;bold&quot;: True or False, # Whether or not the text is rendered as bold.
                  &quot;fontSize&quot;: { # A magnitude in a single direction in the specified units. # The size of the text&#x27;s font.
                    &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                    &quot;magnitude&quot;: 3.14, # The magnitude.
                  },
                  &quot;foregroundColor&quot;: { # A color that can either be fully opaque or fully transparent. # The foreground color of the text. If set, the color is either an RGB color or transparent, depending on the `color` field.
                    &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                      &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                        &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                        &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                        &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                      },
                    },
                  },
                  &quot;backgroundColor&quot;: { # A color that can either be fully opaque or fully transparent. # The background color of the text. If set, the color is either an RGB color or transparent, depending on the `color` field.
                    &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                      &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                        &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                        &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                        &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                      },
                    },
                  },
                  &quot;link&quot;: { # A reference to another portion of a document or an external URL resource. # The hyperlink destination of the text. If unset, there is no link. Links are not inherited from parent text. Changing the link in an update request causes some other changes to the text style of the range: * When setting a link, the text foreground color will be updated to the default link color and the text will be underlined. If these fields are modified in the same request, those values will be used instead of the link defaults. * Setting a link on a text range that overlaps with an existing link will also update the existing link to point to the new URL. * Links are not settable on newline characters. As a result, setting a link on a text range that crosses a paragraph boundary, such as `&quot;ABC\n123&quot;`, will separate the newline character(s) into their own text runs. The link will be applied separately to the runs before and after the newline. * Removing a link will update the text style of the range to match the style of the preceding text (or the default text styles if the preceding text is another link) unless different styles are being set in the same request.
                    &quot;bookmarkId&quot;: &quot;A String&quot;, # The ID of a bookmark in this document.
                    &quot;url&quot;: &quot;A String&quot;, # An external URL.
                    &quot;headingId&quot;: &quot;A String&quot;, # The ID of a heading in this document.
                  },
                  &quot;strikethrough&quot;: True or False, # Whether or not the text is struck through.
                  &quot;weightedFontFamily&quot;: { # Represents a font family and weight of text. # The font family and rendered weight of the text. If an update request specifies values for both `weighted_font_family` and `bold`, the `weighted_font_family` is applied first, then `bold`. If `weighted_font_family#weight` is not set, it defaults to `400`. If `weighted_font_family` is set, then `weighted_font_family#font_family` must also be set with a non-empty value. Otherwise, a 400 bad request error is returned.
                    &quot;fontFamily&quot;: &quot;A String&quot;, # The font family of the text. The font family can be any font from the Font menu in Docs or from [Google Fonts] (https://fonts.google.com/). If the font name is unrecognized, the text is rendered in `Arial`.
                    &quot;weight&quot;: 42, # The weight of the font. This field can have any value that is a multiple of `100` between `100` and `900`, inclusive. This range corresponds to the numerical values described in the CSS 2.1 Specification, [section 15.6](https://www.w3.org/TR/CSS21/fonts.html#font-boldness), with non-numerical values disallowed. The default value is `400` (&quot;normal&quot;). The font weight makes up just one component of the rendered font weight. The rendered weight is determined by a combination of the `weight` and the text style&#x27;s resolved `bold` value, after accounting for inheritance: * If the text is bold and the weight is less than `400`, the rendered weight is 400. * If the text is bold and the weight is greater than or equal to `400` but is less than `700`, the rendered weight is `700`. * If the weight is greater than or equal to `700`, the rendered weight is equal to the weight. * If the text is not bold, the rendered weight is equal to the weight.
                  },
                  &quot;underline&quot;: True or False, # Whether or not the text is underlined.
                  &quot;smallCaps&quot;: True or False, # Whether or not the text is in small capital letters.
                },
              },
              &quot;autoText&quot;: { # A ParagraphElement representing a spot in the text that is dynamically replaced with content that can change over time, like a page number. # An auto text paragraph element.
                &quot;suggestedDeletionIds&quot;: [ # The suggested deletion IDs. If empty, then there are no suggested deletions of this content.
                  &quot;A String&quot;,
                ],
                &quot;suggestedInsertionIds&quot;: [ # The suggested insertion IDs. An AutoText may have multiple insertion IDs if it is a nested suggested change. If empty, then this is not a suggested insertion.
                  &quot;A String&quot;,
                ],
                &quot;suggestedTextStyleChanges&quot;: { # The suggested text style changes to this AutoText, keyed by suggestion ID.
                  &quot;a_key&quot;: { # A suggested change to a TextStyle.
                    &quot;textStyleSuggestionState&quot;: { # A mask that indicates which of the fields on the base TextStyle have been changed in this suggestion. For any field set to true, there is a new suggested value. # A mask that indicates which of the fields on the base TextStyle have been changed in this suggestion.
                      &quot;backgroundColorSuggested&quot;: True or False, # Indicates if there was a suggested change to background_color.
                      &quot;fontSizeSuggested&quot;: True or False, # Indicates if there was a suggested change to font_size.
                      &quot;boldSuggested&quot;: True or False, # Indicates if there was a suggested change to bold.
                      &quot;baselineOffsetSuggested&quot;: True or False, # Indicates if there was a suggested change to baseline_offset.
                      &quot;foregroundColorSuggested&quot;: True or False, # Indicates if there was a suggested change to foreground_color.
                      &quot;italicSuggested&quot;: True or False, # Indicates if there was a suggested change to italic.
                      &quot;linkSuggested&quot;: True or False, # Indicates if there was a suggested change to link.
                      &quot;underlineSuggested&quot;: True or False, # Indicates if there was a suggested change to underline.
                      &quot;weightedFontFamilySuggested&quot;: True or False, # Indicates if there was a suggested change to weighted_font_family.
                      &quot;smallCapsSuggested&quot;: True or False, # Indicates if there was a suggested change to small_caps.
                      &quot;strikethroughSuggested&quot;: True or False, # Indicates if there was a suggested change to strikethrough.
                    },
                    &quot;textStyle&quot;: { # Represents the styling that can be applied to text. Inherited text styles are represented as unset fields in this message. A text style&#x27;s parent depends on where the text style is defined: * The TextStyle of text in a Paragraph inherits from the paragraph&#x27;s corresponding named style type. * The TextStyle on a named style inherits from the normal text named style. * The TextStyle of the normal text named style inherits from the default text style in the Docs editor. * The TextStyle on a Paragraph element that is contained in a table may inherit its text style from the table style. If the text style does not inherit from a parent, unsetting fields will revert the style to a value matching the defaults in the Docs editor. # A TextStyle that only includes the changes made in this suggestion. This can be used along with the text_style_suggestion_state to see which fields have changed and their new values.
                      &quot;italic&quot;: True or False, # Whether or not the text is italicized.
                      &quot;baselineOffset&quot;: &quot;A String&quot;, # The text&#x27;s vertical offset from its normal position. Text with `SUPERSCRIPT` or `SUBSCRIPT` baseline offsets is automatically rendered in a smaller font size, computed based on the `font_size` field. The `font_size` itself is not affected by changes in this field.
                      &quot;bold&quot;: True or False, # Whether or not the text is rendered as bold.
                      &quot;fontSize&quot;: { # A magnitude in a single direction in the specified units. # The size of the text&#x27;s font.
                        &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                        &quot;magnitude&quot;: 3.14, # The magnitude.
                      },
                      &quot;foregroundColor&quot;: { # A color that can either be fully opaque or fully transparent. # The foreground color of the text. If set, the color is either an RGB color or transparent, depending on the `color` field.
                        &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                          &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                            &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                            &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                            &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                          },
                        },
                      },
                      &quot;backgroundColor&quot;: { # A color that can either be fully opaque or fully transparent. # The background color of the text. If set, the color is either an RGB color or transparent, depending on the `color` field.
                        &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                          &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                            &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                            &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                            &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                          },
                        },
                      },
                      &quot;link&quot;: { # A reference to another portion of a document or an external URL resource. # The hyperlink destination of the text. If unset, there is no link. Links are not inherited from parent text. Changing the link in an update request causes some other changes to the text style of the range: * When setting a link, the text foreground color will be updated to the default link color and the text will be underlined. If these fields are modified in the same request, those values will be used instead of the link defaults. * Setting a link on a text range that overlaps with an existing link will also update the existing link to point to the new URL. * Links are not settable on newline characters. As a result, setting a link on a text range that crosses a paragraph boundary, such as `&quot;ABC\n123&quot;`, will separate the newline character(s) into their own text runs. The link will be applied separately to the runs before and after the newline. * Removing a link will update the text style of the range to match the style of the preceding text (or the default text styles if the preceding text is another link) unless different styles are being set in the same request.
                        &quot;bookmarkId&quot;: &quot;A String&quot;, # The ID of a bookmark in this document.
                        &quot;url&quot;: &quot;A String&quot;, # An external URL.
                        &quot;headingId&quot;: &quot;A String&quot;, # The ID of a heading in this document.
                      },
                      &quot;strikethrough&quot;: True or False, # Whether or not the text is struck through.
                      &quot;weightedFontFamily&quot;: { # Represents a font family and weight of text. # The font family and rendered weight of the text. If an update request specifies values for both `weighted_font_family` and `bold`, the `weighted_font_family` is applied first, then `bold`. If `weighted_font_family#weight` is not set, it defaults to `400`. If `weighted_font_family` is set, then `weighted_font_family#font_family` must also be set with a non-empty value. Otherwise, a 400 bad request error is returned.
                        &quot;fontFamily&quot;: &quot;A String&quot;, # The font family of the text. The font family can be any font from the Font menu in Docs or from [Google Fonts] (https://fonts.google.com/). If the font name is unrecognized, the text is rendered in `Arial`.
                        &quot;weight&quot;: 42, # The weight of the font. This field can have any value that is a multiple of `100` between `100` and `900`, inclusive. This range corresponds to the numerical values described in the CSS 2.1 Specification, [section 15.6](https://www.w3.org/TR/CSS21/fonts.html#font-boldness), with non-numerical values disallowed. The default value is `400` (&quot;normal&quot;). The font weight makes up just one component of the rendered font weight. The rendered weight is determined by a combination of the `weight` and the text style&#x27;s resolved `bold` value, after accounting for inheritance: * If the text is bold and the weight is less than `400`, the rendered weight is 400. * If the text is bold and the weight is greater than or equal to `400` but is less than `700`, the rendered weight is `700`. * If the weight is greater than or equal to `700`, the rendered weight is equal to the weight. * If the text is not bold, the rendered weight is equal to the weight.
                      },
                      &quot;underline&quot;: True or False, # Whether or not the text is underlined.
                      &quot;smallCaps&quot;: True or False, # Whether or not the text is in small capital letters.
                    },
                  },
                },
                &quot;type&quot;: &quot;A String&quot;, # The type of this auto text.
                &quot;textStyle&quot;: { # Represents the styling that can be applied to text. Inherited text styles are represented as unset fields in this message. A text style&#x27;s parent depends on where the text style is defined: * The TextStyle of text in a Paragraph inherits from the paragraph&#x27;s corresponding named style type. * The TextStyle on a named style inherits from the normal text named style. * The TextStyle of the normal text named style inherits from the default text style in the Docs editor. * The TextStyle on a Paragraph element that is contained in a table may inherit its text style from the table style. If the text style does not inherit from a parent, unsetting fields will revert the style to a value matching the defaults in the Docs editor. # The text style of this AutoText.
                  &quot;italic&quot;: True or False, # Whether or not the text is italicized.
                  &quot;baselineOffset&quot;: &quot;A String&quot;, # The text&#x27;s vertical offset from its normal position. Text with `SUPERSCRIPT` or `SUBSCRIPT` baseline offsets is automatically rendered in a smaller font size, computed based on the `font_size` field. The `font_size` itself is not affected by changes in this field.
                  &quot;bold&quot;: True or False, # Whether or not the text is rendered as bold.
                  &quot;fontSize&quot;: { # A magnitude in a single direction in the specified units. # The size of the text&#x27;s font.
                    &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                    &quot;magnitude&quot;: 3.14, # The magnitude.
                  },
                  &quot;foregroundColor&quot;: { # A color that can either be fully opaque or fully transparent. # The foreground color of the text. If set, the color is either an RGB color or transparent, depending on the `color` field.
                    &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                      &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                        &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                        &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                        &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                      },
                    },
                  },
                  &quot;backgroundColor&quot;: { # A color that can either be fully opaque or fully transparent. # The background color of the text. If set, the color is either an RGB color or transparent, depending on the `color` field.
                    &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                      &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                        &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                        &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                        &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                      },
                    },
                  },
                  &quot;link&quot;: { # A reference to another portion of a document or an external URL resource. # The hyperlink destination of the text. If unset, there is no link. Links are not inherited from parent text. Changing the link in an update request causes some other changes to the text style of the range: * When setting a link, the text foreground color will be updated to the default link color and the text will be underlined. If these fields are modified in the same request, those values will be used instead of the link defaults. * Setting a link on a text range that overlaps with an existing link will also update the existing link to point to the new URL. * Links are not settable on newline characters. As a result, setting a link on a text range that crosses a paragraph boundary, such as `&quot;ABC\n123&quot;`, will separate the newline character(s) into their own text runs. The link will be applied separately to the runs before and after the newline. * Removing a link will update the text style of the range to match the style of the preceding text (or the default text styles if the preceding text is another link) unless different styles are being set in the same request.
                    &quot;bookmarkId&quot;: &quot;A String&quot;, # The ID of a bookmark in this document.
                    &quot;url&quot;: &quot;A String&quot;, # An external URL.
                    &quot;headingId&quot;: &quot;A String&quot;, # The ID of a heading in this document.
                  },
                  &quot;strikethrough&quot;: True or False, # Whether or not the text is struck through.
                  &quot;weightedFontFamily&quot;: { # Represents a font family and weight of text. # The font family and rendered weight of the text. If an update request specifies values for both `weighted_font_family` and `bold`, the `weighted_font_family` is applied first, then `bold`. If `weighted_font_family#weight` is not set, it defaults to `400`. If `weighted_font_family` is set, then `weighted_font_family#font_family` must also be set with a non-empty value. Otherwise, a 400 bad request error is returned.
                    &quot;fontFamily&quot;: &quot;A String&quot;, # The font family of the text. The font family can be any font from the Font menu in Docs or from [Google Fonts] (https://fonts.google.com/). If the font name is unrecognized, the text is rendered in `Arial`.
                    &quot;weight&quot;: 42, # The weight of the font. This field can have any value that is a multiple of `100` between `100` and `900`, inclusive. This range corresponds to the numerical values described in the CSS 2.1 Specification, [section 15.6](https://www.w3.org/TR/CSS21/fonts.html#font-boldness), with non-numerical values disallowed. The default value is `400` (&quot;normal&quot;). The font weight makes up just one component of the rendered font weight. The rendered weight is determined by a combination of the `weight` and the text style&#x27;s resolved `bold` value, after accounting for inheritance: * If the text is bold and the weight is less than `400`, the rendered weight is 400. * If the text is bold and the weight is greater than or equal to `400` but is less than `700`, the rendered weight is `700`. * If the weight is greater than or equal to `700`, the rendered weight is equal to the weight. * If the text is not bold, the rendered weight is equal to the weight.
                  },
                  &quot;underline&quot;: True or False, # Whether or not the text is underlined.
                  &quot;smallCaps&quot;: True or False, # Whether or not the text is in small capital letters.
                },
              },
              &quot;inlineObjectElement&quot;: { # A ParagraphElement that contains an InlineObject. # An inline object paragraph element.
                &quot;suggestedDeletionIds&quot;: [ # The suggested deletion IDs. If empty, then there are no suggested deletions of this content.
                  &quot;A String&quot;,
                ],
                &quot;suggestedInsertionIds&quot;: [ # The suggested insertion IDs. An InlineObjectElement may have multiple insertion IDs if it is a nested suggested change. If empty, then this is not a suggested insertion.
                  &quot;A String&quot;,
                ],
                &quot;suggestedTextStyleChanges&quot;: { # The suggested text style changes to this InlineObject, keyed by suggestion ID.
                  &quot;a_key&quot;: { # A suggested change to a TextStyle.
                    &quot;textStyleSuggestionState&quot;: { # A mask that indicates which of the fields on the base TextStyle have been changed in this suggestion. For any field set to true, there is a new suggested value. # A mask that indicates which of the fields on the base TextStyle have been changed in this suggestion.
                      &quot;backgroundColorSuggested&quot;: True or False, # Indicates if there was a suggested change to background_color.
                      &quot;fontSizeSuggested&quot;: True or False, # Indicates if there was a suggested change to font_size.
                      &quot;boldSuggested&quot;: True or False, # Indicates if there was a suggested change to bold.
                      &quot;baselineOffsetSuggested&quot;: True or False, # Indicates if there was a suggested change to baseline_offset.
                      &quot;foregroundColorSuggested&quot;: True or False, # Indicates if there was a suggested change to foreground_color.
                      &quot;italicSuggested&quot;: True or False, # Indicates if there was a suggested change to italic.
                      &quot;linkSuggested&quot;: True or False, # Indicates if there was a suggested change to link.
                      &quot;underlineSuggested&quot;: True or False, # Indicates if there was a suggested change to underline.
                      &quot;weightedFontFamilySuggested&quot;: True or False, # Indicates if there was a suggested change to weighted_font_family.
                      &quot;smallCapsSuggested&quot;: True or False, # Indicates if there was a suggested change to small_caps.
                      &quot;strikethroughSuggested&quot;: True or False, # Indicates if there was a suggested change to strikethrough.
                    },
                    &quot;textStyle&quot;: { # Represents the styling that can be applied to text. Inherited text styles are represented as unset fields in this message. A text style&#x27;s parent depends on where the text style is defined: * The TextStyle of text in a Paragraph inherits from the paragraph&#x27;s corresponding named style type. * The TextStyle on a named style inherits from the normal text named style. * The TextStyle of the normal text named style inherits from the default text style in the Docs editor. * The TextStyle on a Paragraph element that is contained in a table may inherit its text style from the table style. If the text style does not inherit from a parent, unsetting fields will revert the style to a value matching the defaults in the Docs editor. # A TextStyle that only includes the changes made in this suggestion. This can be used along with the text_style_suggestion_state to see which fields have changed and their new values.
                      &quot;italic&quot;: True or False, # Whether or not the text is italicized.
                      &quot;baselineOffset&quot;: &quot;A String&quot;, # The text&#x27;s vertical offset from its normal position. Text with `SUPERSCRIPT` or `SUBSCRIPT` baseline offsets is automatically rendered in a smaller font size, computed based on the `font_size` field. The `font_size` itself is not affected by changes in this field.
                      &quot;bold&quot;: True or False, # Whether or not the text is rendered as bold.
                      &quot;fontSize&quot;: { # A magnitude in a single direction in the specified units. # The size of the text&#x27;s font.
                        &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                        &quot;magnitude&quot;: 3.14, # The magnitude.
                      },
                      &quot;foregroundColor&quot;: { # A color that can either be fully opaque or fully transparent. # The foreground color of the text. If set, the color is either an RGB color or transparent, depending on the `color` field.
                        &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                          &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                            &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                            &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                            &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                          },
                        },
                      },
                      &quot;backgroundColor&quot;: { # A color that can either be fully opaque or fully transparent. # The background color of the text. If set, the color is either an RGB color or transparent, depending on the `color` field.
                        &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                          &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                            &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                            &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                            &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                          },
                        },
                      },
                      &quot;link&quot;: { # A reference to another portion of a document or an external URL resource. # The hyperlink destination of the text. If unset, there is no link. Links are not inherited from parent text. Changing the link in an update request causes some other changes to the text style of the range: * When setting a link, the text foreground color will be updated to the default link color and the text will be underlined. If these fields are modified in the same request, those values will be used instead of the link defaults. * Setting a link on a text range that overlaps with an existing link will also update the existing link to point to the new URL. * Links are not settable on newline characters. As a result, setting a link on a text range that crosses a paragraph boundary, such as `&quot;ABC\n123&quot;`, will separate the newline character(s) into their own text runs. The link will be applied separately to the runs before and after the newline. * Removing a link will update the text style of the range to match the style of the preceding text (or the default text styles if the preceding text is another link) unless different styles are being set in the same request.
                        &quot;bookmarkId&quot;: &quot;A String&quot;, # The ID of a bookmark in this document.
                        &quot;url&quot;: &quot;A String&quot;, # An external URL.
                        &quot;headingId&quot;: &quot;A String&quot;, # The ID of a heading in this document.
                      },
                      &quot;strikethrough&quot;: True or False, # Whether or not the text is struck through.
                      &quot;weightedFontFamily&quot;: { # Represents a font family and weight of text. # The font family and rendered weight of the text. If an update request specifies values for both `weighted_font_family` and `bold`, the `weighted_font_family` is applied first, then `bold`. If `weighted_font_family#weight` is not set, it defaults to `400`. If `weighted_font_family` is set, then `weighted_font_family#font_family` must also be set with a non-empty value. Otherwise, a 400 bad request error is returned.
                        &quot;fontFamily&quot;: &quot;A String&quot;, # The font family of the text. The font family can be any font from the Font menu in Docs or from [Google Fonts] (https://fonts.google.com/). If the font name is unrecognized, the text is rendered in `Arial`.
                        &quot;weight&quot;: 42, # The weight of the font. This field can have any value that is a multiple of `100` between `100` and `900`, inclusive. This range corresponds to the numerical values described in the CSS 2.1 Specification, [section 15.6](https://www.w3.org/TR/CSS21/fonts.html#font-boldness), with non-numerical values disallowed. The default value is `400` (&quot;normal&quot;). The font weight makes up just one component of the rendered font weight. The rendered weight is determined by a combination of the `weight` and the text style&#x27;s resolved `bold` value, after accounting for inheritance: * If the text is bold and the weight is less than `400`, the rendered weight is 400. * If the text is bold and the weight is greater than or equal to `400` but is less than `700`, the rendered weight is `700`. * If the weight is greater than or equal to `700`, the rendered weight is equal to the weight. * If the text is not bold, the rendered weight is equal to the weight.
                      },
                      &quot;underline&quot;: True or False, # Whether or not the text is underlined.
                      &quot;smallCaps&quot;: True or False, # Whether or not the text is in small capital letters.
                    },
                  },
                },
                &quot;inlineObjectId&quot;: &quot;A String&quot;, # The ID of the InlineObject this element contains.
                &quot;textStyle&quot;: { # Represents the styling that can be applied to text. Inherited text styles are represented as unset fields in this message. A text style&#x27;s parent depends on where the text style is defined: * The TextStyle of text in a Paragraph inherits from the paragraph&#x27;s corresponding named style type. * The TextStyle on a named style inherits from the normal text named style. * The TextStyle of the normal text named style inherits from the default text style in the Docs editor. * The TextStyle on a Paragraph element that is contained in a table may inherit its text style from the table style. If the text style does not inherit from a parent, unsetting fields will revert the style to a value matching the defaults in the Docs editor. # The text style of this InlineObjectElement. Similar to text content, like text runs and footnote references, the text style of an inline object element can affect content layout as well as the styling of text inserted adjacent to it.
                  &quot;italic&quot;: True or False, # Whether or not the text is italicized.
                  &quot;baselineOffset&quot;: &quot;A String&quot;, # The text&#x27;s vertical offset from its normal position. Text with `SUPERSCRIPT` or `SUBSCRIPT` baseline offsets is automatically rendered in a smaller font size, computed based on the `font_size` field. The `font_size` itself is not affected by changes in this field.
                  &quot;bold&quot;: True or False, # Whether or not the text is rendered as bold.
                  &quot;fontSize&quot;: { # A magnitude in a single direction in the specified units. # The size of the text&#x27;s font.
                    &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                    &quot;magnitude&quot;: 3.14, # The magnitude.
                  },
                  &quot;foregroundColor&quot;: { # A color that can either be fully opaque or fully transparent. # The foreground color of the text. If set, the color is either an RGB color or transparent, depending on the `color` field.
                    &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                      &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                        &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                        &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                        &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                      },
                    },
                  },
                  &quot;backgroundColor&quot;: { # A color that can either be fully opaque or fully transparent. # The background color of the text. If set, the color is either an RGB color or transparent, depending on the `color` field.
                    &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                      &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                        &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                        &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                        &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                      },
                    },
                  },
                  &quot;link&quot;: { # A reference to another portion of a document or an external URL resource. # The hyperlink destination of the text. If unset, there is no link. Links are not inherited from parent text. Changing the link in an update request causes some other changes to the text style of the range: * When setting a link, the text foreground color will be updated to the default link color and the text will be underlined. If these fields are modified in the same request, those values will be used instead of the link defaults. * Setting a link on a text range that overlaps with an existing link will also update the existing link to point to the new URL. * Links are not settable on newline characters. As a result, setting a link on a text range that crosses a paragraph boundary, such as `&quot;ABC\n123&quot;`, will separate the newline character(s) into their own text runs. The link will be applied separately to the runs before and after the newline. * Removing a link will update the text style of the range to match the style of the preceding text (or the default text styles if the preceding text is another link) unless different styles are being set in the same request.
                    &quot;bookmarkId&quot;: &quot;A String&quot;, # The ID of a bookmark in this document.
                    &quot;url&quot;: &quot;A String&quot;, # An external URL.
                    &quot;headingId&quot;: &quot;A String&quot;, # The ID of a heading in this document.
                  },
                  &quot;strikethrough&quot;: True or False, # Whether or not the text is struck through.
                  &quot;weightedFontFamily&quot;: { # Represents a font family and weight of text. # The font family and rendered weight of the text. If an update request specifies values for both `weighted_font_family` and `bold`, the `weighted_font_family` is applied first, then `bold`. If `weighted_font_family#weight` is not set, it defaults to `400`. If `weighted_font_family` is set, then `weighted_font_family#font_family` must also be set with a non-empty value. Otherwise, a 400 bad request error is returned.
                    &quot;fontFamily&quot;: &quot;A String&quot;, # The font family of the text. The font family can be any font from the Font menu in Docs or from [Google Fonts] (https://fonts.google.com/). If the font name is unrecognized, the text is rendered in `Arial`.
                    &quot;weight&quot;: 42, # The weight of the font. This field can have any value that is a multiple of `100` between `100` and `900`, inclusive. This range corresponds to the numerical values described in the CSS 2.1 Specification, [section 15.6](https://www.w3.org/TR/CSS21/fonts.html#font-boldness), with non-numerical values disallowed. The default value is `400` (&quot;normal&quot;). The font weight makes up just one component of the rendered font weight. The rendered weight is determined by a combination of the `weight` and the text style&#x27;s resolved `bold` value, after accounting for inheritance: * If the text is bold and the weight is less than `400`, the rendered weight is 400. * If the text is bold and the weight is greater than or equal to `400` but is less than `700`, the rendered weight is `700`. * If the weight is greater than or equal to `700`, the rendered weight is equal to the weight. * If the text is not bold, the rendered weight is equal to the weight.
                  },
                  &quot;underline&quot;: True or False, # Whether or not the text is underlined.
                  &quot;smallCaps&quot;: True or False, # Whether or not the text is in small capital letters.
                },
              },
              &quot;footnoteReference&quot;: { # A ParagraphElement representing a footnote reference. A footnote reference is the inline content rendered with a number and is used to identify the footnote. # A footnote reference paragraph element.
                &quot;footnoteId&quot;: &quot;A String&quot;, # The ID of the footnote that contains the content of this footnote reference.
                &quot;suggestedInsertionIds&quot;: [ # The suggested insertion IDs. A FootnoteReference may have multiple insertion IDs if it is a nested suggested change. If empty, then this is not a suggested insertion.
                  &quot;A String&quot;,
                ],
                &quot;footnoteNumber&quot;: &quot;A String&quot;, # The rendered number of this footnote.
                &quot;suggestedDeletionIds&quot;: [ # The suggested deletion IDs. If empty, then there are no suggested deletions of this content.
                  &quot;A String&quot;,
                ],
                &quot;suggestedTextStyleChanges&quot;: { # The suggested text style changes to this FootnoteReference, keyed by suggestion ID.
                  &quot;a_key&quot;: { # A suggested change to a TextStyle.
                    &quot;textStyleSuggestionState&quot;: { # A mask that indicates which of the fields on the base TextStyle have been changed in this suggestion. For any field set to true, there is a new suggested value. # A mask that indicates which of the fields on the base TextStyle have been changed in this suggestion.
                      &quot;backgroundColorSuggested&quot;: True or False, # Indicates if there was a suggested change to background_color.
                      &quot;fontSizeSuggested&quot;: True or False, # Indicates if there was a suggested change to font_size.
                      &quot;boldSuggested&quot;: True or False, # Indicates if there was a suggested change to bold.
                      &quot;baselineOffsetSuggested&quot;: True or False, # Indicates if there was a suggested change to baseline_offset.
                      &quot;foregroundColorSuggested&quot;: True or False, # Indicates if there was a suggested change to foreground_color.
                      &quot;italicSuggested&quot;: True or False, # Indicates if there was a suggested change to italic.
                      &quot;linkSuggested&quot;: True or False, # Indicates if there was a suggested change to link.
                      &quot;underlineSuggested&quot;: True or False, # Indicates if there was a suggested change to underline.
                      &quot;weightedFontFamilySuggested&quot;: True or False, # Indicates if there was a suggested change to weighted_font_family.
                      &quot;smallCapsSuggested&quot;: True or False, # Indicates if there was a suggested change to small_caps.
                      &quot;strikethroughSuggested&quot;: True or False, # Indicates if there was a suggested change to strikethrough.
                    },
                    &quot;textStyle&quot;: { # Represents the styling that can be applied to text. Inherited text styles are represented as unset fields in this message. A text style&#x27;s parent depends on where the text style is defined: * The TextStyle of text in a Paragraph inherits from the paragraph&#x27;s corresponding named style type. * The TextStyle on a named style inherits from the normal text named style. * The TextStyle of the normal text named style inherits from the default text style in the Docs editor. * The TextStyle on a Paragraph element that is contained in a table may inherit its text style from the table style. If the text style does not inherit from a parent, unsetting fields will revert the style to a value matching the defaults in the Docs editor. # A TextStyle that only includes the changes made in this suggestion. This can be used along with the text_style_suggestion_state to see which fields have changed and their new values.
                      &quot;italic&quot;: True or False, # Whether or not the text is italicized.
                      &quot;baselineOffset&quot;: &quot;A String&quot;, # The text&#x27;s vertical offset from its normal position. Text with `SUPERSCRIPT` or `SUBSCRIPT` baseline offsets is automatically rendered in a smaller font size, computed based on the `font_size` field. The `font_size` itself is not affected by changes in this field.
                      &quot;bold&quot;: True or False, # Whether or not the text is rendered as bold.
                      &quot;fontSize&quot;: { # A magnitude in a single direction in the specified units. # The size of the text&#x27;s font.
                        &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                        &quot;magnitude&quot;: 3.14, # The magnitude.
                      },
                      &quot;foregroundColor&quot;: { # A color that can either be fully opaque or fully transparent. # The foreground color of the text. If set, the color is either an RGB color or transparent, depending on the `color` field.
                        &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                          &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                            &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                            &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                            &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                          },
                        },
                      },
                      &quot;backgroundColor&quot;: { # A color that can either be fully opaque or fully transparent. # The background color of the text. If set, the color is either an RGB color or transparent, depending on the `color` field.
                        &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                          &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                            &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                            &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                            &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                          },
                        },
                      },
                      &quot;link&quot;: { # A reference to another portion of a document or an external URL resource. # The hyperlink destination of the text. If unset, there is no link. Links are not inherited from parent text. Changing the link in an update request causes some other changes to the text style of the range: * When setting a link, the text foreground color will be updated to the default link color and the text will be underlined. If these fields are modified in the same request, those values will be used instead of the link defaults. * Setting a link on a text range that overlaps with an existing link will also update the existing link to point to the new URL. * Links are not settable on newline characters. As a result, setting a link on a text range that crosses a paragraph boundary, such as `&quot;ABC\n123&quot;`, will separate the newline character(s) into their own text runs. The link will be applied separately to the runs before and after the newline. * Removing a link will update the text style of the range to match the style of the preceding text (or the default text styles if the preceding text is another link) unless different styles are being set in the same request.
                        &quot;bookmarkId&quot;: &quot;A String&quot;, # The ID of a bookmark in this document.
                        &quot;url&quot;: &quot;A String&quot;, # An external URL.
                        &quot;headingId&quot;: &quot;A String&quot;, # The ID of a heading in this document.
                      },
                      &quot;strikethrough&quot;: True or False, # Whether or not the text is struck through.
                      &quot;weightedFontFamily&quot;: { # Represents a font family and weight of text. # The font family and rendered weight of the text. If an update request specifies values for both `weighted_font_family` and `bold`, the `weighted_font_family` is applied first, then `bold`. If `weighted_font_family#weight` is not set, it defaults to `400`. If `weighted_font_family` is set, then `weighted_font_family#font_family` must also be set with a non-empty value. Otherwise, a 400 bad request error is returned.
                        &quot;fontFamily&quot;: &quot;A String&quot;, # The font family of the text. The font family can be any font from the Font menu in Docs or from [Google Fonts] (https://fonts.google.com/). If the font name is unrecognized, the text is rendered in `Arial`.
                        &quot;weight&quot;: 42, # The weight of the font. This field can have any value that is a multiple of `100` between `100` and `900`, inclusive. This range corresponds to the numerical values described in the CSS 2.1 Specification, [section 15.6](https://www.w3.org/TR/CSS21/fonts.html#font-boldness), with non-numerical values disallowed. The default value is `400` (&quot;normal&quot;). The font weight makes up just one component of the rendered font weight. The rendered weight is determined by a combination of the `weight` and the text style&#x27;s resolved `bold` value, after accounting for inheritance: * If the text is bold and the weight is less than `400`, the rendered weight is 400. * If the text is bold and the weight is greater than or equal to `400` but is less than `700`, the rendered weight is `700`. * If the weight is greater than or equal to `700`, the rendered weight is equal to the weight. * If the text is not bold, the rendered weight is equal to the weight.
                      },
                      &quot;underline&quot;: True or False, # Whether or not the text is underlined.
                      &quot;smallCaps&quot;: True or False, # Whether or not the text is in small capital letters.
                    },
                  },
                },
                &quot;textStyle&quot;: { # Represents the styling that can be applied to text. Inherited text styles are represented as unset fields in this message. A text style&#x27;s parent depends on where the text style is defined: * The TextStyle of text in a Paragraph inherits from the paragraph&#x27;s corresponding named style type. * The TextStyle on a named style inherits from the normal text named style. * The TextStyle of the normal text named style inherits from the default text style in the Docs editor. * The TextStyle on a Paragraph element that is contained in a table may inherit its text style from the table style. If the text style does not inherit from a parent, unsetting fields will revert the style to a value matching the defaults in the Docs editor. # The text style of this FootnoteReference.
                  &quot;italic&quot;: True or False, # Whether or not the text is italicized.
                  &quot;baselineOffset&quot;: &quot;A String&quot;, # The text&#x27;s vertical offset from its normal position. Text with `SUPERSCRIPT` or `SUBSCRIPT` baseline offsets is automatically rendered in a smaller font size, computed based on the `font_size` field. The `font_size` itself is not affected by changes in this field.
                  &quot;bold&quot;: True or False, # Whether or not the text is rendered as bold.
                  &quot;fontSize&quot;: { # A magnitude in a single direction in the specified units. # The size of the text&#x27;s font.
                    &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                    &quot;magnitude&quot;: 3.14, # The magnitude.
                  },
                  &quot;foregroundColor&quot;: { # A color that can either be fully opaque or fully transparent. # The foreground color of the text. If set, the color is either an RGB color or transparent, depending on the `color` field.
                    &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                      &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                        &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                        &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                        &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                      },
                    },
                  },
                  &quot;backgroundColor&quot;: { # A color that can either be fully opaque or fully transparent. # The background color of the text. If set, the color is either an RGB color or transparent, depending on the `color` field.
                    &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                      &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                        &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                        &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                        &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                      },
                    },
                  },
                  &quot;link&quot;: { # A reference to another portion of a document or an external URL resource. # The hyperlink destination of the text. If unset, there is no link. Links are not inherited from parent text. Changing the link in an update request causes some other changes to the text style of the range: * When setting a link, the text foreground color will be updated to the default link color and the text will be underlined. If these fields are modified in the same request, those values will be used instead of the link defaults. * Setting a link on a text range that overlaps with an existing link will also update the existing link to point to the new URL. * Links are not settable on newline characters. As a result, setting a link on a text range that crosses a paragraph boundary, such as `&quot;ABC\n123&quot;`, will separate the newline character(s) into their own text runs. The link will be applied separately to the runs before and after the newline. * Removing a link will update the text style of the range to match the style of the preceding text (or the default text styles if the preceding text is another link) unless different styles are being set in the same request.
                    &quot;bookmarkId&quot;: &quot;A String&quot;, # The ID of a bookmark in this document.
                    &quot;url&quot;: &quot;A String&quot;, # An external URL.
                    &quot;headingId&quot;: &quot;A String&quot;, # The ID of a heading in this document.
                  },
                  &quot;strikethrough&quot;: True or False, # Whether or not the text is struck through.
                  &quot;weightedFontFamily&quot;: { # Represents a font family and weight of text. # The font family and rendered weight of the text. If an update request specifies values for both `weighted_font_family` and `bold`, the `weighted_font_family` is applied first, then `bold`. If `weighted_font_family#weight` is not set, it defaults to `400`. If `weighted_font_family` is set, then `weighted_font_family#font_family` must also be set with a non-empty value. Otherwise, a 400 bad request error is returned.
                    &quot;fontFamily&quot;: &quot;A String&quot;, # The font family of the text. The font family can be any font from the Font menu in Docs or from [Google Fonts] (https://fonts.google.com/). If the font name is unrecognized, the text is rendered in `Arial`.
                    &quot;weight&quot;: 42, # The weight of the font. This field can have any value that is a multiple of `100` between `100` and `900`, inclusive. This range corresponds to the numerical values described in the CSS 2.1 Specification, [section 15.6](https://www.w3.org/TR/CSS21/fonts.html#font-boldness), with non-numerical values disallowed. The default value is `400` (&quot;normal&quot;). The font weight makes up just one component of the rendered font weight. The rendered weight is determined by a combination of the `weight` and the text style&#x27;s resolved `bold` value, after accounting for inheritance: * If the text is bold and the weight is less than `400`, the rendered weight is 400. * If the text is bold and the weight is greater than or equal to `400` but is less than `700`, the rendered weight is `700`. * If the weight is greater than or equal to `700`, the rendered weight is equal to the weight. * If the text is not bold, the rendered weight is equal to the weight.
                  },
                  &quot;underline&quot;: True or False, # Whether or not the text is underlined.
                  &quot;smallCaps&quot;: True or False, # Whether or not the text is in small capital letters.
                },
              },
              &quot;startIndex&quot;: 42, # The zero-based start index of this paragraph element, in UTF-16 code units.
              &quot;endIndex&quot;: 42, # The zero-base end index of this paragraph element, exclusive, in UTF-16 code units.
              &quot;equation&quot;: { # A ParagraphElement representing an equation. # An equation paragraph element.
                &quot;suggestedDeletionIds&quot;: [ # The suggested deletion IDs. If empty, then there are no suggested deletions of this content.
                  &quot;A String&quot;,
                ],
                &quot;suggestedInsertionIds&quot;: [ # The suggested insertion IDs. A Equation may have multiple insertion IDs if it is a nested suggested change. If empty, then this is not a suggested insertion.
                  &quot;A String&quot;,
                ],
              },
              &quot;columnBreak&quot;: { # A ParagraphElement representing a column break. A column break makes the subsequent text start at the top of the next column. # A column break paragraph element.
                &quot;suggestedTextStyleChanges&quot;: { # The suggested text style changes to this ColumnBreak, keyed by suggestion ID.
                  &quot;a_key&quot;: { # A suggested change to a TextStyle.
                    &quot;textStyleSuggestionState&quot;: { # A mask that indicates which of the fields on the base TextStyle have been changed in this suggestion. For any field set to true, there is a new suggested value. # A mask that indicates which of the fields on the base TextStyle have been changed in this suggestion.
                      &quot;backgroundColorSuggested&quot;: True or False, # Indicates if there was a suggested change to background_color.
                      &quot;fontSizeSuggested&quot;: True or False, # Indicates if there was a suggested change to font_size.
                      &quot;boldSuggested&quot;: True or False, # Indicates if there was a suggested change to bold.
                      &quot;baselineOffsetSuggested&quot;: True or False, # Indicates if there was a suggested change to baseline_offset.
                      &quot;foregroundColorSuggested&quot;: True or False, # Indicates if there was a suggested change to foreground_color.
                      &quot;italicSuggested&quot;: True or False, # Indicates if there was a suggested change to italic.
                      &quot;linkSuggested&quot;: True or False, # Indicates if there was a suggested change to link.
                      &quot;underlineSuggested&quot;: True or False, # Indicates if there was a suggested change to underline.
                      &quot;weightedFontFamilySuggested&quot;: True or False, # Indicates if there was a suggested change to weighted_font_family.
                      &quot;smallCapsSuggested&quot;: True or False, # Indicates if there was a suggested change to small_caps.
                      &quot;strikethroughSuggested&quot;: True or False, # Indicates if there was a suggested change to strikethrough.
                    },
                    &quot;textStyle&quot;: { # Represents the styling that can be applied to text. Inherited text styles are represented as unset fields in this message. A text style&#x27;s parent depends on where the text style is defined: * The TextStyle of text in a Paragraph inherits from the paragraph&#x27;s corresponding named style type. * The TextStyle on a named style inherits from the normal text named style. * The TextStyle of the normal text named style inherits from the default text style in the Docs editor. * The TextStyle on a Paragraph element that is contained in a table may inherit its text style from the table style. If the text style does not inherit from a parent, unsetting fields will revert the style to a value matching the defaults in the Docs editor. # A TextStyle that only includes the changes made in this suggestion. This can be used along with the text_style_suggestion_state to see which fields have changed and their new values.
                      &quot;italic&quot;: True or False, # Whether or not the text is italicized.
                      &quot;baselineOffset&quot;: &quot;A String&quot;, # The text&#x27;s vertical offset from its normal position. Text with `SUPERSCRIPT` or `SUBSCRIPT` baseline offsets is automatically rendered in a smaller font size, computed based on the `font_size` field. The `font_size` itself is not affected by changes in this field.
                      &quot;bold&quot;: True or False, # Whether or not the text is rendered as bold.
                      &quot;fontSize&quot;: { # A magnitude in a single direction in the specified units. # The size of the text&#x27;s font.
                        &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                        &quot;magnitude&quot;: 3.14, # The magnitude.
                      },
                      &quot;foregroundColor&quot;: { # A color that can either be fully opaque or fully transparent. # The foreground color of the text. If set, the color is either an RGB color or transparent, depending on the `color` field.
                        &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                          &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                            &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                            &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                            &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                          },
                        },
                      },
                      &quot;backgroundColor&quot;: { # A color that can either be fully opaque or fully transparent. # The background color of the text. If set, the color is either an RGB color or transparent, depending on the `color` field.
                        &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                          &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                            &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                            &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                            &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                          },
                        },
                      },
                      &quot;link&quot;: { # A reference to another portion of a document or an external URL resource. # The hyperlink destination of the text. If unset, there is no link. Links are not inherited from parent text. Changing the link in an update request causes some other changes to the text style of the range: * When setting a link, the text foreground color will be updated to the default link color and the text will be underlined. If these fields are modified in the same request, those values will be used instead of the link defaults. * Setting a link on a text range that overlaps with an existing link will also update the existing link to point to the new URL. * Links are not settable on newline characters. As a result, setting a link on a text range that crosses a paragraph boundary, such as `&quot;ABC\n123&quot;`, will separate the newline character(s) into their own text runs. The link will be applied separately to the runs before and after the newline. * Removing a link will update the text style of the range to match the style of the preceding text (or the default text styles if the preceding text is another link) unless different styles are being set in the same request.
                        &quot;bookmarkId&quot;: &quot;A String&quot;, # The ID of a bookmark in this document.
                        &quot;url&quot;: &quot;A String&quot;, # An external URL.
                        &quot;headingId&quot;: &quot;A String&quot;, # The ID of a heading in this document.
                      },
                      &quot;strikethrough&quot;: True or False, # Whether or not the text is struck through.
                      &quot;weightedFontFamily&quot;: { # Represents a font family and weight of text. # The font family and rendered weight of the text. If an update request specifies values for both `weighted_font_family` and `bold`, the `weighted_font_family` is applied first, then `bold`. If `weighted_font_family#weight` is not set, it defaults to `400`. If `weighted_font_family` is set, then `weighted_font_family#font_family` must also be set with a non-empty value. Otherwise, a 400 bad request error is returned.
                        &quot;fontFamily&quot;: &quot;A String&quot;, # The font family of the text. The font family can be any font from the Font menu in Docs or from [Google Fonts] (https://fonts.google.com/). If the font name is unrecognized, the text is rendered in `Arial`.
                        &quot;weight&quot;: 42, # The weight of the font. This field can have any value that is a multiple of `100` between `100` and `900`, inclusive. This range corresponds to the numerical values described in the CSS 2.1 Specification, [section 15.6](https://www.w3.org/TR/CSS21/fonts.html#font-boldness), with non-numerical values disallowed. The default value is `400` (&quot;normal&quot;). The font weight makes up just one component of the rendered font weight. The rendered weight is determined by a combination of the `weight` and the text style&#x27;s resolved `bold` value, after accounting for inheritance: * If the text is bold and the weight is less than `400`, the rendered weight is 400. * If the text is bold and the weight is greater than or equal to `400` but is less than `700`, the rendered weight is `700`. * If the weight is greater than or equal to `700`, the rendered weight is equal to the weight. * If the text is not bold, the rendered weight is equal to the weight.
                      },
                      &quot;underline&quot;: True or False, # Whether or not the text is underlined.
                      &quot;smallCaps&quot;: True or False, # Whether or not the text is in small capital letters.
                    },
                  },
                },
                &quot;suggestedDeletionIds&quot;: [ # The suggested deletion IDs. If empty, then there are no suggested deletions of this content.
                  &quot;A String&quot;,
                ],
                &quot;textStyle&quot;: { # Represents the styling that can be applied to text. Inherited text styles are represented as unset fields in this message. A text style&#x27;s parent depends on where the text style is defined: * The TextStyle of text in a Paragraph inherits from the paragraph&#x27;s corresponding named style type. * The TextStyle on a named style inherits from the normal text named style. * The TextStyle of the normal text named style inherits from the default text style in the Docs editor. * The TextStyle on a Paragraph element that is contained in a table may inherit its text style from the table style. If the text style does not inherit from a parent, unsetting fields will revert the style to a value matching the defaults in the Docs editor. # The text style of this ColumnBreak. Similar to text content, like text runs and footnote references, the text style of a column break can affect content layout as well as the styling of text inserted adjacent to it.
                  &quot;italic&quot;: True or False, # Whether or not the text is italicized.
                  &quot;baselineOffset&quot;: &quot;A String&quot;, # The text&#x27;s vertical offset from its normal position. Text with `SUPERSCRIPT` or `SUBSCRIPT` baseline offsets is automatically rendered in a smaller font size, computed based on the `font_size` field. The `font_size` itself is not affected by changes in this field.
                  &quot;bold&quot;: True or False, # Whether or not the text is rendered as bold.
                  &quot;fontSize&quot;: { # A magnitude in a single direction in the specified units. # The size of the text&#x27;s font.
                    &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                    &quot;magnitude&quot;: 3.14, # The magnitude.
                  },
                  &quot;foregroundColor&quot;: { # A color that can either be fully opaque or fully transparent. # The foreground color of the text. If set, the color is either an RGB color or transparent, depending on the `color` field.
                    &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                      &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                        &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                        &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                        &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                      },
                    },
                  },
                  &quot;backgroundColor&quot;: { # A color that can either be fully opaque or fully transparent. # The background color of the text. If set, the color is either an RGB color or transparent, depending on the `color` field.
                    &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                      &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                        &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                        &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                        &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                      },
                    },
                  },
                  &quot;link&quot;: { # A reference to another portion of a document or an external URL resource. # The hyperlink destination of the text. If unset, there is no link. Links are not inherited from parent text. Changing the link in an update request causes some other changes to the text style of the range: * When setting a link, the text foreground color will be updated to the default link color and the text will be underlined. If these fields are modified in the same request, those values will be used instead of the link defaults. * Setting a link on a text range that overlaps with an existing link will also update the existing link to point to the new URL. * Links are not settable on newline characters. As a result, setting a link on a text range that crosses a paragraph boundary, such as `&quot;ABC\n123&quot;`, will separate the newline character(s) into their own text runs. The link will be applied separately to the runs before and after the newline. * Removing a link will update the text style of the range to match the style of the preceding text (or the default text styles if the preceding text is another link) unless different styles are being set in the same request.
                    &quot;bookmarkId&quot;: &quot;A String&quot;, # The ID of a bookmark in this document.
                    &quot;url&quot;: &quot;A String&quot;, # An external URL.
                    &quot;headingId&quot;: &quot;A String&quot;, # The ID of a heading in this document.
                  },
                  &quot;strikethrough&quot;: True or False, # Whether or not the text is struck through.
                  &quot;weightedFontFamily&quot;: { # Represents a font family and weight of text. # The font family and rendered weight of the text. If an update request specifies values for both `weighted_font_family` and `bold`, the `weighted_font_family` is applied first, then `bold`. If `weighted_font_family#weight` is not set, it defaults to `400`. If `weighted_font_family` is set, then `weighted_font_family#font_family` must also be set with a non-empty value. Otherwise, a 400 bad request error is returned.
                    &quot;fontFamily&quot;: &quot;A String&quot;, # The font family of the text. The font family can be any font from the Font menu in Docs or from [Google Fonts] (https://fonts.google.com/). If the font name is unrecognized, the text is rendered in `Arial`.
                    &quot;weight&quot;: 42, # The weight of the font. This field can have any value that is a multiple of `100` between `100` and `900`, inclusive. This range corresponds to the numerical values described in the CSS 2.1 Specification, [section 15.6](https://www.w3.org/TR/CSS21/fonts.html#font-boldness), with non-numerical values disallowed. The default value is `400` (&quot;normal&quot;). The font weight makes up just one component of the rendered font weight. The rendered weight is determined by a combination of the `weight` and the text style&#x27;s resolved `bold` value, after accounting for inheritance: * If the text is bold and the weight is less than `400`, the rendered weight is 400. * If the text is bold and the weight is greater than or equal to `400` but is less than `700`, the rendered weight is `700`. * If the weight is greater than or equal to `700`, the rendered weight is equal to the weight. * If the text is not bold, the rendered weight is equal to the weight.
                  },
                  &quot;underline&quot;: True or False, # Whether or not the text is underlined.
                  &quot;smallCaps&quot;: True or False, # Whether or not the text is in small capital letters.
                },
                &quot;suggestedInsertionIds&quot;: [ # The suggested insertion IDs. A ColumnBreak may have multiple insertion IDs if it is a nested suggested change. If empty, then this is not a suggested insertion.
                  &quot;A String&quot;,
                ],
              },
            },
          ],
          &quot;positionedObjectIds&quot;: [ # The IDs of the positioned objects tethered to this paragraph.
            &quot;A String&quot;,
          ],
          &quot;paragraphStyle&quot;: { # Styles that apply to a whole paragraph. Inherited paragraph styles are represented as unset fields in this message. A paragraph style&#x27;s parent depends on where the paragraph style is defined: * The ParagraphStyle on a Paragraph inherits from the paragraph&#x27;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 is 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. # The style of this paragraph.
            &quot;borderRight&quot;: { # A border around a paragraph. # The border to the right of this paragraph. If unset, the value is inherited from the parent. Paragraph borders cannot be partially updated. When making changes to a paragraph border the new border must be specified in its entirety.
              &quot;color&quot;: { # A color that can either be fully opaque or fully transparent. # The color of the border.
                &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                  &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                    &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                    &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                    &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                  },
                },
              },
              &quot;width&quot;: { # A magnitude in a single direction in the specified units. # The width of the border.
                &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                &quot;magnitude&quot;: 3.14, # The magnitude.
              },
              &quot;padding&quot;: { # A magnitude in a single direction in the specified units. # The padding of the border.
                &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                &quot;magnitude&quot;: 3.14, # The magnitude.
              },
              &quot;dashStyle&quot;: &quot;A String&quot;, # The dash style of the border.
            },
            &quot;indentFirstLine&quot;: { # A magnitude in a single direction in the specified units. # The amount of indentation for the first line of the paragraph. If unset, the value is inherited from the parent.
              &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
              &quot;magnitude&quot;: 3.14, # The magnitude.
            },
            &quot;alignment&quot;: &quot;A String&quot;, # The text alignment for this paragraph.
            &quot;lineSpacing&quot;: 3.14, # The amount of space between lines, as a percentage of normal, where normal is represented as 100.0. If unset, the value is inherited from the parent.
            &quot;keepLinesTogether&quot;: True or False, # Whether all lines of the paragraph should be laid out on the same page or column if possible. If unset, the value is inherited from the parent.
            &quot;avoidWidowAndOrphan&quot;: True or False, # Whether to avoid widows and orphans for the paragraph. If unset, the value is inherited from the parent.
            &quot;spaceBelow&quot;: { # A magnitude in a single direction in the specified units. # The amount of extra space below the paragraph. If unset, the value is inherited from the parent.
              &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
              &quot;magnitude&quot;: 3.14, # The magnitude.
            },
            &quot;borderBetween&quot;: { # A border around a paragraph. # 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 making changes to a paragraph border the new border must be specified in its entirety.
              &quot;color&quot;: { # A color that can either be fully opaque or fully transparent. # The color of the border.
                &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                  &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                    &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                    &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                    &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                  },
                },
              },
              &quot;width&quot;: { # A magnitude in a single direction in the specified units. # The width of the border.
                &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                &quot;magnitude&quot;: 3.14, # The magnitude.
              },
              &quot;padding&quot;: { # A magnitude in a single direction in the specified units. # The padding of the border.
                &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                &quot;magnitude&quot;: 3.14, # The magnitude.
              },
              &quot;dashStyle&quot;: &quot;A String&quot;, # The dash style of the border.
            },
            &quot;headingId&quot;: &quot;A String&quot;, # The heading ID of the paragraph. If empty, then this paragraph is not a heading. This property is read-only.
            &quot;spaceAbove&quot;: { # A magnitude in a single direction in the specified units. # The amount of extra space above the paragraph. If unset, the value is inherited from the parent.
              &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
              &quot;magnitude&quot;: 3.14, # The magnitude.
            },
            &quot;direction&quot;: &quot;A String&quot;, # The text direction of this paragraph. If unset, the value defaults to LEFT_TO_RIGHT since paragraph direction is not inherited.
            &quot;namedStyleType&quot;: &quot;A String&quot;, # The named style type of the paragraph. Since updating the named style type affects other properties within ParagraphStyle, the named style type is applied before the other properties are updated.
            &quot;tabStops&quot;: [ # A list of the tab stops for this paragraph. The list of tab stops is not inherited. This property is read-only.
              { # A tab stop within a paragraph.
                &quot;offset&quot;: { # A magnitude in a single direction in the specified units. # The offset between this tab stop and the start margin.
                  &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                  &quot;magnitude&quot;: 3.14, # The magnitude.
                },
                &quot;alignment&quot;: &quot;A String&quot;, # The alignment of this tab stop. If unset, the value defaults to START.
              },
            ],
            &quot;indentStart&quot;: { # A magnitude in a single direction in the specified units. # The amount of indentation for the paragraph on the side that corresponds to the start of the text, based on the current paragraph direction. If unset, the value is inherited from the parent.
              &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
              &quot;magnitude&quot;: 3.14, # The magnitude.
            },
            &quot;keepWithNext&quot;: True or False, # Whether at least a part of this paragraph should be laid out on the same page or column as the next paragraph if possible. If unset, the value is inherited from the parent.
            &quot;borderTop&quot;: { # A border around a paragraph. # 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 making changes to a paragraph border the new border must be specified in its entirety.
              &quot;color&quot;: { # A color that can either be fully opaque or fully transparent. # The color of the border.
                &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                  &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                    &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                    &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                    &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                  },
                },
              },
              &quot;width&quot;: { # A magnitude in a single direction in the specified units. # The width of the border.
                &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                &quot;magnitude&quot;: 3.14, # The magnitude.
              },
              &quot;padding&quot;: { # A magnitude in a single direction in the specified units. # The padding of the border.
                &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                &quot;magnitude&quot;: 3.14, # The magnitude.
              },
              &quot;dashStyle&quot;: &quot;A String&quot;, # The dash style of the border.
            },
            &quot;borderLeft&quot;: { # A border around a paragraph. # The border to the left of this paragraph. If unset, the value is inherited from the parent. Paragraph borders cannot be partially updated. When making changes to a paragraph border the new border must be specified in its entirety.
              &quot;color&quot;: { # A color that can either be fully opaque or fully transparent. # The color of the border.
                &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                  &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                    &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                    &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                    &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                  },
                },
              },
              &quot;width&quot;: { # A magnitude in a single direction in the specified units. # The width of the border.
                &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                &quot;magnitude&quot;: 3.14, # The magnitude.
              },
              &quot;padding&quot;: { # A magnitude in a single direction in the specified units. # The padding of the border.
                &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                &quot;magnitude&quot;: 3.14, # The magnitude.
              },
              &quot;dashStyle&quot;: &quot;A String&quot;, # The dash style of the border.
            },
            &quot;borderBottom&quot;: { # A border around a paragraph. # 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 making changes to a paragraph border the new border must be specified in its entirety.
              &quot;color&quot;: { # A color that can either be fully opaque or fully transparent. # The color of the border.
                &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                  &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                    &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                    &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                    &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                  },
                },
              },
              &quot;width&quot;: { # A magnitude in a single direction in the specified units. # The width of the border.
                &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                &quot;magnitude&quot;: 3.14, # The magnitude.
              },
              &quot;padding&quot;: { # A magnitude in a single direction in the specified units. # The padding of the border.
                &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                &quot;magnitude&quot;: 3.14, # The magnitude.
              },
              &quot;dashStyle&quot;: &quot;A String&quot;, # The dash style of the border.
            },
            &quot;shading&quot;: { # The shading of a paragraph. # The shading of the paragraph. If unset, the value is inherited from the parent.
              &quot;backgroundColor&quot;: { # A color that can either be fully opaque or fully transparent. # The background color of this paragraph shading.
                &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                  &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                    &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                    &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                    &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                  },
                },
              },
            },
            &quot;indentEnd&quot;: { # A magnitude in a single direction in the specified units. # 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.
              &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
              &quot;magnitude&quot;: 3.14, # The magnitude.
            },
            &quot;spacingMode&quot;: &quot;A String&quot;, # The spacing mode for the paragraph.
          },
        },
        &quot;startIndex&quot;: 42, # The zero-based start index of this structural element, in UTF-16 code units.
        &quot;endIndex&quot;: 42, # The zero-based end index of this structural element, exclusive, in UTF-16 code units.
        &quot;tableOfContents&quot;: { # A StructuralElement representing a table of contents. # A table of contents type of structural element.
          &quot;suggestedInsertionIds&quot;: [ # The suggested insertion IDs. A TableOfContents may have multiple insertion IDs if it is a nested suggested change. If empty, then this is not a suggested insertion.
            &quot;A String&quot;,
          ],
          &quot;content&quot;: [ # The content of the table of contents.
            # Object with schema name: StructuralElement
          ],
          &quot;suggestedDeletionIds&quot;: [ # The suggested deletion IDs. If empty, then there are no suggested deletions of this content.
            &quot;A String&quot;,
          ],
        },
        &quot;table&quot;: { # A StructuralElement representing a table. # A table type of structural element.
          &quot;tableStyle&quot;: { # Styles that apply to a table. # The style of the table.
            &quot;tableColumnProperties&quot;: [ # The properties of each column. Note that in Docs, tables contain rows and rows contain cells, similar to HTML. So the properties for a row can be found on the row&#x27;s table_row_style.
              { # The properties of a column in a table.
                &quot;widthType&quot;: &quot;A String&quot;, # The width type of the column.
                &quot;width&quot;: { # A magnitude in a single direction in the specified units. # The width of the column. Set when the column&#x27;s `width_type` is FIXED_WIDTH.
                  &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                  &quot;magnitude&quot;: 3.14, # The magnitude.
                },
              },
            ],
          },
          &quot;suggestedInsertionIds&quot;: [ # The suggested insertion IDs. A Table may have multiple insertion IDs if it is a nested suggested change. If empty, then this is not a suggested insertion.
            &quot;A String&quot;,
          ],
          &quot;tableRows&quot;: [ # The contents and style of each row.
            { # The contents and style of a row in a Table.
              &quot;suggestedDeletionIds&quot;: [ # The suggested deletion IDs. If empty, then there are no suggested deletions of this content.
                &quot;A String&quot;,
              ],
              &quot;suggestedInsertionIds&quot;: [ # The suggested insertion IDs. A TableRow may have multiple insertion IDs if it is a nested suggested change. If empty, then this is not a suggested insertion.
                &quot;A String&quot;,
              ],
              &quot;suggestedTableRowStyleChanges&quot;: { # The suggested style changes to this row, keyed by suggestion ID.
                &quot;a_key&quot;: { # A suggested change to a TableRowStyle.
                  &quot;tableRowStyleSuggestionState&quot;: { # A mask that indicates which of the fields on the base TableRowStyle have been changed in this suggestion. For any field set to true, there is a new suggested value. # A mask that indicates which of the fields on the base TableRowStyle have been changed in this suggestion.
                    &quot;minRowHeightSuggested&quot;: True or False, # Indicates if there was a suggested change to min_row_height.
                  },
                  &quot;tableRowStyle&quot;: { # Styles that apply to a table row. # A TableRowStyle that only includes the changes made in this suggestion. This can be used along with the table_row_style_suggestion_state to see which fields have changed and their new values.
                    &quot;minRowHeight&quot;: { # A magnitude in a single direction in the specified units. # The minimum height of the row. The row will be rendered in the Docs editor at a height equal to or greater than this value in order to show all the content in the row&#x27;s cells.
                      &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                      &quot;magnitude&quot;: 3.14, # The magnitude.
                    },
                  },
                },
              },
              &quot;startIndex&quot;: 42, # The zero-based start index of this row, in UTF-16 code units.
              &quot;tableCells&quot;: [ # The contents and style of each cell in this row. It is possible for a table to be non-rectangular, so some rows may have a different number of cells than other rows in the same table.
                { # The contents and style of a cell in a Table.
                  &quot;tableCellStyle&quot;: { # The style of a TableCell. Inherited table cell styles are represented as unset fields in this message. A table cell style can inherit from the table&#x27;s style. # The style of the cell.
                    &quot;borderTop&quot;: { # A border around a table cell. Table cell borders cannot be transparent. To hide a table cell border, make its width 0. # The top border of the cell.
                      &quot;width&quot;: { # A magnitude in a single direction in the specified units. # The width of the border.
                        &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                        &quot;magnitude&quot;: 3.14, # The magnitude.
                      },
                      &quot;dashStyle&quot;: &quot;A String&quot;, # The dash style of the border.
                      &quot;color&quot;: { # A color that can either be fully opaque or fully transparent. # The color of the border. This color cannot be transparent.
                        &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                          &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                            &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                            &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                            &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                          },
                        },
                      },
                    },
                    &quot;borderBottom&quot;: { # A border around a table cell. Table cell borders cannot be transparent. To hide a table cell border, make its width 0. # The bottom border of the cell.
                      &quot;width&quot;: { # A magnitude in a single direction in the specified units. # The width of the border.
                        &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                        &quot;magnitude&quot;: 3.14, # The magnitude.
                      },
                      &quot;dashStyle&quot;: &quot;A String&quot;, # The dash style of the border.
                      &quot;color&quot;: { # A color that can either be fully opaque or fully transparent. # The color of the border. This color cannot be transparent.
                        &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                          &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                            &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                            &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                            &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                          },
                        },
                      },
                    },
                    &quot;contentAlignment&quot;: &quot;A String&quot;, # The alignment of the content in the table cell. The default alignment matches the alignment for newly created table cells in the Docs editor.
                    &quot;paddingLeft&quot;: { # A magnitude in a single direction in the specified units. # The left padding of the cell.
                      &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                      &quot;magnitude&quot;: 3.14, # The magnitude.
                    },
                    &quot;backgroundColor&quot;: { # A color that can either be fully opaque or fully transparent. # The background color of the cell.
                      &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                        &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                          &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                          &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                          &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                        },
                      },
                    },
                    &quot;paddingTop&quot;: { # A magnitude in a single direction in the specified units. # The top padding of the cell.
                      &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                      &quot;magnitude&quot;: 3.14, # The magnitude.
                    },
                    &quot;rowSpan&quot;: 42, # The row span of the cell. This property is read-only.
                    &quot;paddingRight&quot;: { # A magnitude in a single direction in the specified units. # The right padding of the cell.
                      &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                      &quot;magnitude&quot;: 3.14, # The magnitude.
                    },
                    &quot;borderRight&quot;: { # A border around a table cell. Table cell borders cannot be transparent. To hide a table cell border, make its width 0. # The right border of the cell.
                      &quot;width&quot;: { # A magnitude in a single direction in the specified units. # The width of the border.
                        &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                        &quot;magnitude&quot;: 3.14, # The magnitude.
                      },
                      &quot;dashStyle&quot;: &quot;A String&quot;, # The dash style of the border.
                      &quot;color&quot;: { # A color that can either be fully opaque or fully transparent. # The color of the border. This color cannot be transparent.
                        &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                          &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                            &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                            &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                            &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                          },
                        },
                      },
                    },
                    &quot;borderLeft&quot;: { # A border around a table cell. Table cell borders cannot be transparent. To hide a table cell border, make its width 0. # The left border of the cell.
                      &quot;width&quot;: { # A magnitude in a single direction in the specified units. # The width of the border.
                        &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                        &quot;magnitude&quot;: 3.14, # The magnitude.
                      },
                      &quot;dashStyle&quot;: &quot;A String&quot;, # The dash style of the border.
                      &quot;color&quot;: { # A color that can either be fully opaque or fully transparent. # The color of the border. This color cannot be transparent.
                        &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                          &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                            &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                            &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                            &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                          },
                        },
                      },
                    },
                    &quot;columnSpan&quot;: 42, # The column span of the cell. This property is read-only.
                    &quot;paddingBottom&quot;: { # A magnitude in a single direction in the specified units. # The bottom padding of the cell.
                      &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                      &quot;magnitude&quot;: 3.14, # The magnitude.
                    },
                  },
                  &quot;content&quot;: [ # The content of the cell.
                    # Object with schema name: StructuralElement
                  ],
                  &quot;suggestedDeletionIds&quot;: [ # The suggested deletion IDs. If empty, then there are no suggested deletions of this content.
                    &quot;A String&quot;,
                  ],
                  &quot;startIndex&quot;: 42, # The zero-based start index of this cell, in UTF-16 code units.
                  &quot;suggestedInsertionIds&quot;: [ # The suggested insertion IDs. A TableCell may have multiple insertion IDs if it is a nested suggested change. If empty, then this is not a suggested insertion.
                    &quot;A String&quot;,
                  ],
                  &quot;suggestedTableCellStyleChanges&quot;: { # The suggested changes to the table cell style, keyed by suggestion ID.
                    &quot;a_key&quot;: { # A suggested change to a TableCellStyle.
                      &quot;tableCellStyle&quot;: { # The style of a TableCell. Inherited table cell styles are represented as unset fields in this message. A table cell style can inherit from the table&#x27;s style. # A TableCellStyle that only includes the changes made in this suggestion. This can be used along with the table_cell_style_suggestion_state to see which fields have changed and their new values.
                        &quot;borderTop&quot;: { # A border around a table cell. Table cell borders cannot be transparent. To hide a table cell border, make its width 0. # The top border of the cell.
                          &quot;width&quot;: { # A magnitude in a single direction in the specified units. # The width of the border.
                            &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                            &quot;magnitude&quot;: 3.14, # The magnitude.
                          },
                          &quot;dashStyle&quot;: &quot;A String&quot;, # The dash style of the border.
                          &quot;color&quot;: { # A color that can either be fully opaque or fully transparent. # The color of the border. This color cannot be transparent.
                            &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                              &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                                &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                                &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                                &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                              },
                            },
                          },
                        },
                        &quot;borderBottom&quot;: { # A border around a table cell. Table cell borders cannot be transparent. To hide a table cell border, make its width 0. # The bottom border of the cell.
                          &quot;width&quot;: { # A magnitude in a single direction in the specified units. # The width of the border.
                            &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                            &quot;magnitude&quot;: 3.14, # The magnitude.
                          },
                          &quot;dashStyle&quot;: &quot;A String&quot;, # The dash style of the border.
                          &quot;color&quot;: { # A color that can either be fully opaque or fully transparent. # The color of the border. This color cannot be transparent.
                            &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                              &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                                &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                                &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                                &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                              },
                            },
                          },
                        },
                        &quot;contentAlignment&quot;: &quot;A String&quot;, # The alignment of the content in the table cell. The default alignment matches the alignment for newly created table cells in the Docs editor.
                        &quot;paddingLeft&quot;: { # A magnitude in a single direction in the specified units. # The left padding of the cell.
                          &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                          &quot;magnitude&quot;: 3.14, # The magnitude.
                        },
                        &quot;backgroundColor&quot;: { # A color that can either be fully opaque or fully transparent. # The background color of the cell.
                          &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                            &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                              &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                              &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                              &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                            },
                          },
                        },
                        &quot;paddingTop&quot;: { # A magnitude in a single direction in the specified units. # The top padding of the cell.
                          &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                          &quot;magnitude&quot;: 3.14, # The magnitude.
                        },
                        &quot;rowSpan&quot;: 42, # The row span of the cell. This property is read-only.
                        &quot;paddingRight&quot;: { # A magnitude in a single direction in the specified units. # The right padding of the cell.
                          &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                          &quot;magnitude&quot;: 3.14, # The magnitude.
                        },
                        &quot;borderRight&quot;: { # A border around a table cell. Table cell borders cannot be transparent. To hide a table cell border, make its width 0. # The right border of the cell.
                          &quot;width&quot;: { # A magnitude in a single direction in the specified units. # The width of the border.
                            &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                            &quot;magnitude&quot;: 3.14, # The magnitude.
                          },
                          &quot;dashStyle&quot;: &quot;A String&quot;, # The dash style of the border.
                          &quot;color&quot;: { # A color that can either be fully opaque or fully transparent. # The color of the border. This color cannot be transparent.
                            &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                              &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                                &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                                &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                                &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                              },
                            },
                          },
                        },
                        &quot;borderLeft&quot;: { # A border around a table cell. Table cell borders cannot be transparent. To hide a table cell border, make its width 0. # The left border of the cell.
                          &quot;width&quot;: { # A magnitude in a single direction in the specified units. # The width of the border.
                            &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                            &quot;magnitude&quot;: 3.14, # The magnitude.
                          },
                          &quot;dashStyle&quot;: &quot;A String&quot;, # The dash style of the border.
                          &quot;color&quot;: { # A color that can either be fully opaque or fully transparent. # The color of the border. This color cannot be transparent.
                            &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                              &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                                &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                                &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                                &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                              },
                            },
                          },
                        },
                        &quot;columnSpan&quot;: 42, # The column span of the cell. This property is read-only.
                        &quot;paddingBottom&quot;: { # A magnitude in a single direction in the specified units. # The bottom padding of the cell.
                          &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                          &quot;magnitude&quot;: 3.14, # The magnitude.
                        },
                      },
                      &quot;tableCellStyleSuggestionState&quot;: { # A mask that indicates which of the fields on the base TableCellStyle have been changed in this suggestion. For any field set to true, there is a new suggested value. # A mask that indicates which of the fields on the base TableCellStyle have been changed in this suggestion.
                        &quot;rowSpanSuggested&quot;: True or False, # Indicates if there was a suggested change to row_span.
                        &quot;columnSpanSuggested&quot;: True or False, # Indicates if there was a suggested change to column_span.
                        &quot;borderBottomSuggested&quot;: True or False, # Indicates if there was a suggested change to border_bottom.
                        &quot;borderLeftSuggested&quot;: True or False, # Indicates if there was a suggested change to border_left.
                        &quot;paddingLeftSuggested&quot;: True or False, # Indicates if there was a suggested change to padding_left.
                        &quot;paddingRightSuggested&quot;: True or False, # Indicates if there was a suggested change to padding_right.
                        &quot;paddingBottomSuggested&quot;: True or False, # Indicates if there was a suggested change to padding_bottom.
                        &quot;paddingTopSuggested&quot;: True or False, # Indicates if there was a suggested change to padding_top.
                        &quot;contentAlignmentSuggested&quot;: True or False, # Indicates if there was a suggested change to content_alignment.
                        &quot;borderRightSuggested&quot;: True or False, # Indicates if there was a suggested change to border_right.
                        &quot;backgroundColorSuggested&quot;: True or False, # Indicates if there was a suggested change to background_color.
                        &quot;borderTopSuggested&quot;: True or False, # Indicates if there was a suggested change to border_top.
                      },
                    },
                  },
                  &quot;endIndex&quot;: 42, # The zero-based end index of this cell, exclusive, in UTF-16 code units.
                },
              ],
              &quot;endIndex&quot;: 42, # The zero-based end index of this row, exclusive, in UTF-16 code units.
              &quot;tableRowStyle&quot;: { # Styles that apply to a table row. # The style of the table row.
                &quot;minRowHeight&quot;: { # A magnitude in a single direction in the specified units. # The minimum height of the row. The row will be rendered in the Docs editor at a height equal to or greater than this value in order to show all the content in the row&#x27;s cells.
                  &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                  &quot;magnitude&quot;: 3.14, # The magnitude.
                },
              },
            },
          ],
          &quot;suggestedDeletionIds&quot;: [ # The suggested deletion IDs. If empty, then there are no suggested deletions of this content.
            &quot;A String&quot;,
          ],
          &quot;rows&quot;: 42, # Number of rows in the table.
          &quot;columns&quot;: 42, # Number of columns in the table. It is possible for a table to be non-rectangular, so some rows may have a different number of cells.
        },
        &quot;sectionBreak&quot;: { # A StructuralElement representing a section break. A section is a range of content which has the same SectionStyle. A section break represents the start of a new section, and the section style applies to the section after the section break. The document body always begins with a section break. # A section break type of structural element.
          &quot;suggestedInsertionIds&quot;: [ # The suggested insertion IDs. A SectionBreak may have multiple insertion IDs if it is a nested suggested change. If empty, then this is not a suggested insertion.
            &quot;A String&quot;,
          ],
          &quot;sectionStyle&quot;: { # The styling that applies to a section. # The style of the section after this section break.
            &quot;marginLeft&quot;: { # A magnitude in a single direction in the specified units. # The left page margin of the section. If unset, uses margin_left from DocumentStyle. Updating left margin causes columns in this section to resize. Since the margin affects column width, it is applied before column properties. When updating this property, setting a concrete value is required. Unsetting this property results in a 400 bad request error.
              &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
              &quot;magnitude&quot;: 3.14, # The magnitude.
            },
            &quot;sectionType&quot;: &quot;A String&quot;, # Output only. The type of section.
            &quot;evenPageHeaderId&quot;: &quot;A String&quot;, # The ID of the header used only for even pages. If the value of DocumentStyle&#x27;s use_even_page_header_footer is true, this value is used for the headers on even pages in the section. If it is false, the headers on even pages uses the default_header_id. If unset, the value inherits from the previous SectionBreak&#x27;s SectionStyle. If the value is unset in the first SectionBreak, it inherits from DocumentStyle&#x27;s even_page_header_id. This property is read-only.
            &quot;useFirstPageHeaderFooter&quot;: True or False, # Indicates whether to use the first page header / footer IDs for the first page of the section. If unset, it inherits from DocumentStyle&#x27;s use_first_page_header_footer for the first section. If the value is unset for subsequent sectors, it should be interpreted as false. When updating this property, setting a concrete value is required. Unsetting this property results in a 400 bad request error.
            &quot;marginHeader&quot;: { # A magnitude in a single direction in the specified units. # The header margin of the section. If unset, uses margin_header from DocumentStyle. If updated, use_custom_header_footer_margins is set to true on DocumentStyle. The value of use_custom_header_footer_margins on DocumentStyle indicates if a header margin is being respected for this section. When updating this property, setting a concrete value is required. Unsetting this property results in a 400 bad request error.
              &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
              &quot;magnitude&quot;: 3.14, # The magnitude.
            },
            &quot;firstPageFooterId&quot;: &quot;A String&quot;, # The ID of the footer used only for the first page of the section. If use_first_page_header_footer is true, this value is used for the footer on the first page of the section. If it is false, the footer on the first page of the section uses the default_footer_id. If unset, the value inherits from the previous SectionBreak&#x27;s SectionStyle. If the value is unset in the first SectionBreak, it inherits from DocumentStyle&#x27;s first_page_footer_id. This property is read-only.
            &quot;firstPageHeaderId&quot;: &quot;A String&quot;, # The ID of the header used only for the first page of the section. If use_first_page_header_footer is true, this value is used for the header on the first page of the section. If it is false, the header on the first page of the section uses the default_header_id. If unset, the value inherits from the previous SectionBreak&#x27;s SectionStyle. If the value is unset in the first SectionBreak, it inherits from DocumentStyle&#x27;s first_page_header_id. This property is read-only.
            &quot;columnSeparatorStyle&quot;: &quot;A String&quot;, # The style of column separators. This style can be set even when there is one column in the section. When updating this property, setting a concrete value is required. Unsetting this property results in a 400 bad request error.
            &quot;marginBottom&quot;: { # A magnitude in a single direction in the specified units. # The bottom page margin of the section. If unset, uses margin_bottom from DocumentStyle. When updating this property, setting a concrete value is required. Unsetting this property results in a 400 bad request error.
              &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
              &quot;magnitude&quot;: 3.14, # The magnitude.
            },
            &quot;marginFooter&quot;: { # A magnitude in a single direction in the specified units. # The footer margin of the section. If unset, uses margin_footer from DocumentStyle. If updated, use_custom_header_footer_margins is set to true on DocumentStyle. The value of use_custom_header_footer_margins on DocumentStyle indicates if a footer margin is being respected for this section When updating this property, setting a concrete value is required. Unsetting this property results in a 400 bad request error.
              &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
              &quot;magnitude&quot;: 3.14, # The magnitude.
            },
            &quot;defaultFooterId&quot;: &quot;A String&quot;, # The ID of the default footer. If unset, the value inherits from the previous SectionBreak&#x27;s SectionStyle. If the value is unset in the first SectionBreak, it inherits from DocumentStyle&#x27;s default_footer_id. This property is read-only.
            &quot;marginTop&quot;: { # A magnitude in a single direction in the specified units. # The top page margin of the section. If unset, uses margin_top from DocumentStyle. When updating this property, setting a concrete value is required. Unsetting this property results in a 400 bad request error.
              &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
              &quot;magnitude&quot;: 3.14, # The magnitude.
            },
            &quot;contentDirection&quot;: &quot;A String&quot;, # The content direction of this section. If unset, the value defaults to LEFT_TO_RIGHT. When updating this property, setting a concrete value is required. Unsetting this property results in a 400 bad request error.
            &quot;evenPageFooterId&quot;: &quot;A String&quot;, # The ID of the footer used only for even pages. If the value of DocumentStyle&#x27;s use_even_page_header_footer is true, this value is used for the footers on even pages in the section. If it is false, the footers on even pages uses the default_footer_id. If unset, the value inherits from the previous SectionBreak&#x27;s SectionStyle. If the value is unset in the first SectionBreak, it inherits from DocumentStyle&#x27;s even_page_footer_id. This property is read-only.
            &quot;marginRight&quot;: { # A magnitude in a single direction in the specified units. # The right page margin of the section. If unset, uses margin_right from DocumentStyle. Updating right margin causes columns in this section to resize. Since the margin affects column width, it is applied before column properties. When updating this property, setting a concrete value is required. Unsetting this property results in a 400 bad request error.
              &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
              &quot;magnitude&quot;: 3.14, # The magnitude.
            },
            &quot;defaultHeaderId&quot;: &quot;A String&quot;, # The ID of the default header. If unset, the value inherits from the previous SectionBreak&#x27;s SectionStyle. If the value is unset in the first SectionBreak, it inherits from DocumentStyle&#x27;s default_header_id. This property is read-only.
            &quot;pageNumberStart&quot;: 42, # The page number from which to start counting the number of pages for this section. If unset, page numbering continues from the previous section. If the value is unset in the first SectionBreak, refer to DocumentStyle&#x27;s page_number_start. When updating this property, setting a concrete value is required. Unsetting this property results in a 400 bad request error.
            &quot;columnProperties&quot;: [ # The section&#x27;s columns properties. If empty, the section contains one column with the default properties in the Docs editor. A section can be updated to have no more than three columns. When updating this property, setting a concrete value is required. Unsetting this property will result in a 400 bad request error.
              { # Properties that apply to a section&#x27;s column.
                &quot;paddingEnd&quot;: { # A magnitude in a single direction in the specified units. # The padding at the end of the column.
                  &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                  &quot;magnitude&quot;: 3.14, # The magnitude.
                },
                &quot;width&quot;: { # A magnitude in a single direction in the specified units. # Output only. The width of the column.
                  &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                  &quot;magnitude&quot;: 3.14, # The magnitude.
                },
              },
            ],
          },
          &quot;suggestedDeletionIds&quot;: [ # The suggested deletion IDs. If empty, then there are no suggested deletions of this content.
            &quot;A String&quot;,
          ],
        },
      },
    ],
  },
  &quot;footnotes&quot;: { # Output only. The footnotes in the document, keyed by footnote ID.
    &quot;a_key&quot;: { # A document footnote.
      &quot;content&quot;: [ # The contents of the footnote. The indexes for a footnote&#x27;s content begin at zero.
        { # A StructuralElement describes content that provides structure to the document.
          &quot;paragraph&quot;: { # A StructuralElement representing a paragraph. A paragraph is a range of content that is terminated with a newline character. # A paragraph type of structural element.
            &quot;suggestedParagraphStyleChanges&quot;: { # The suggested paragraph style changes to this paragraph, keyed by suggestion ID.
              &quot;a_key&quot;: { # A suggested change to a ParagraphStyle.
                &quot;paragraphStyle&quot;: { # Styles that apply to a whole paragraph. Inherited paragraph styles are represented as unset fields in this message. A paragraph style&#x27;s parent depends on where the paragraph style is defined: * The ParagraphStyle on a Paragraph inherits from the paragraph&#x27;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 is 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. # A ParagraphStyle that only includes the changes made in this suggestion. This can be used along with the paragraph_suggestion_state to see which fields have changed and their new values.
                  &quot;borderRight&quot;: { # A border around a paragraph. # The border to the right of this paragraph. If unset, the value is inherited from the parent. Paragraph borders cannot be partially updated. When making changes to a paragraph border the new border must be specified in its entirety.
                    &quot;color&quot;: { # A color that can either be fully opaque or fully transparent. # The color of the border.
                      &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                        &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                          &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                          &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                          &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                        },
                      },
                    },
                    &quot;width&quot;: { # A magnitude in a single direction in the specified units. # The width of the border.
                      &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                      &quot;magnitude&quot;: 3.14, # The magnitude.
                    },
                    &quot;padding&quot;: { # A magnitude in a single direction in the specified units. # The padding of the border.
                      &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                      &quot;magnitude&quot;: 3.14, # The magnitude.
                    },
                    &quot;dashStyle&quot;: &quot;A String&quot;, # The dash style of the border.
                  },
                  &quot;indentFirstLine&quot;: { # A magnitude in a single direction in the specified units. # The amount of indentation for the first line of the paragraph. If unset, the value is inherited from the parent.
                    &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                    &quot;magnitude&quot;: 3.14, # The magnitude.
                  },
                  &quot;alignment&quot;: &quot;A String&quot;, # The text alignment for this paragraph.
                  &quot;lineSpacing&quot;: 3.14, # The amount of space between lines, as a percentage of normal, where normal is represented as 100.0. If unset, the value is inherited from the parent.
                  &quot;keepLinesTogether&quot;: True or False, # Whether all lines of the paragraph should be laid out on the same page or column if possible. If unset, the value is inherited from the parent.
                  &quot;avoidWidowAndOrphan&quot;: True or False, # Whether to avoid widows and orphans for the paragraph. If unset, the value is inherited from the parent.
                  &quot;spaceBelow&quot;: { # A magnitude in a single direction in the specified units. # The amount of extra space below the paragraph. If unset, the value is inherited from the parent.
                    &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                    &quot;magnitude&quot;: 3.14, # The magnitude.
                  },
                  &quot;borderBetween&quot;: { # A border around a paragraph. # 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 making changes to a paragraph border the new border must be specified in its entirety.
                    &quot;color&quot;: { # A color that can either be fully opaque or fully transparent. # The color of the border.
                      &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                        &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                          &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                          &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                          &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                        },
                      },
                    },
                    &quot;width&quot;: { # A magnitude in a single direction in the specified units. # The width of the border.
                      &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                      &quot;magnitude&quot;: 3.14, # The magnitude.
                    },
                    &quot;padding&quot;: { # A magnitude in a single direction in the specified units. # The padding of the border.
                      &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                      &quot;magnitude&quot;: 3.14, # The magnitude.
                    },
                    &quot;dashStyle&quot;: &quot;A String&quot;, # The dash style of the border.
                  },
                  &quot;headingId&quot;: &quot;A String&quot;, # The heading ID of the paragraph. If empty, then this paragraph is not a heading. This property is read-only.
                  &quot;spaceAbove&quot;: { # A magnitude in a single direction in the specified units. # The amount of extra space above the paragraph. If unset, the value is inherited from the parent.
                    &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                    &quot;magnitude&quot;: 3.14, # The magnitude.
                  },
                  &quot;direction&quot;: &quot;A String&quot;, # The text direction of this paragraph. If unset, the value defaults to LEFT_TO_RIGHT since paragraph direction is not inherited.
                  &quot;namedStyleType&quot;: &quot;A String&quot;, # The named style type of the paragraph. Since updating the named style type affects other properties within ParagraphStyle, the named style type is applied before the other properties are updated.
                  &quot;tabStops&quot;: [ # A list of the tab stops for this paragraph. The list of tab stops is not inherited. This property is read-only.
                    { # A tab stop within a paragraph.
                      &quot;offset&quot;: { # A magnitude in a single direction in the specified units. # The offset between this tab stop and the start margin.
                        &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                        &quot;magnitude&quot;: 3.14, # The magnitude.
                      },
                      &quot;alignment&quot;: &quot;A String&quot;, # The alignment of this tab stop. If unset, the value defaults to START.
                    },
                  ],
                  &quot;indentStart&quot;: { # A magnitude in a single direction in the specified units. # The amount of indentation for the paragraph on the side that corresponds to the start of the text, based on the current paragraph direction. If unset, the value is inherited from the parent.
                    &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                    &quot;magnitude&quot;: 3.14, # The magnitude.
                  },
                  &quot;keepWithNext&quot;: True or False, # Whether at least a part of this paragraph should be laid out on the same page or column as the next paragraph if possible. If unset, the value is inherited from the parent.
                  &quot;borderTop&quot;: { # A border around a paragraph. # 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 making changes to a paragraph border the new border must be specified in its entirety.
                    &quot;color&quot;: { # A color that can either be fully opaque or fully transparent. # The color of the border.
                      &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                        &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                          &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                          &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                          &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                        },
                      },
                    },
                    &quot;width&quot;: { # A magnitude in a single direction in the specified units. # The width of the border.
                      &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                      &quot;magnitude&quot;: 3.14, # The magnitude.
                    },
                    &quot;padding&quot;: { # A magnitude in a single direction in the specified units. # The padding of the border.
                      &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                      &quot;magnitude&quot;: 3.14, # The magnitude.
                    },
                    &quot;dashStyle&quot;: &quot;A String&quot;, # The dash style of the border.
                  },
                  &quot;borderLeft&quot;: { # A border around a paragraph. # The border to the left of this paragraph. If unset, the value is inherited from the parent. Paragraph borders cannot be partially updated. When making changes to a paragraph border the new border must be specified in its entirety.
                    &quot;color&quot;: { # A color that can either be fully opaque or fully transparent. # The color of the border.
                      &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                        &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                          &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                          &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                          &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                        },
                      },
                    },
                    &quot;width&quot;: { # A magnitude in a single direction in the specified units. # The width of the border.
                      &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                      &quot;magnitude&quot;: 3.14, # The magnitude.
                    },
                    &quot;padding&quot;: { # A magnitude in a single direction in the specified units. # The padding of the border.
                      &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                      &quot;magnitude&quot;: 3.14, # The magnitude.
                    },
                    &quot;dashStyle&quot;: &quot;A String&quot;, # The dash style of the border.
                  },
                  &quot;borderBottom&quot;: { # A border around a paragraph. # 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 making changes to a paragraph border the new border must be specified in its entirety.
                    &quot;color&quot;: { # A color that can either be fully opaque or fully transparent. # The color of the border.
                      &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                        &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                          &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                          &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                          &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                        },
                      },
                    },
                    &quot;width&quot;: { # A magnitude in a single direction in the specified units. # The width of the border.
                      &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                      &quot;magnitude&quot;: 3.14, # The magnitude.
                    },
                    &quot;padding&quot;: { # A magnitude in a single direction in the specified units. # The padding of the border.
                      &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                      &quot;magnitude&quot;: 3.14, # The magnitude.
                    },
                    &quot;dashStyle&quot;: &quot;A String&quot;, # The dash style of the border.
                  },
                  &quot;shading&quot;: { # The shading of a paragraph. # The shading of the paragraph. If unset, the value is inherited from the parent.
                    &quot;backgroundColor&quot;: { # A color that can either be fully opaque or fully transparent. # The background color of this paragraph shading.
                      &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                        &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                          &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                          &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                          &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                        },
                      },
                    },
                  },
                  &quot;indentEnd&quot;: { # A magnitude in a single direction in the specified units. # 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.
                    &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                    &quot;magnitude&quot;: 3.14, # The magnitude.
                  },
                  &quot;spacingMode&quot;: &quot;A String&quot;, # The spacing mode for the paragraph.
                },
                &quot;paragraphStyleSuggestionState&quot;: { # A mask that indicates which of the fields on the base ParagraphStyle have been changed in this suggestion. For any field set to true, there is a new suggested value. # A mask that indicates which of the fields on the base ParagraphStyle have been changed in this suggestion.
                  &quot;borderRightSuggested&quot;: True or False, # Indicates if there was a suggested change to border_right.
                  &quot;indentEndSuggested&quot;: True or False, # Indicates if there was a suggested change to indent_end.
                  &quot;lineSpacingSuggested&quot;: True or False, # Indicates if there was a suggested change to line_spacing.
                  &quot;headingIdSuggested&quot;: True or False, # Indicates if there was a suggested change to heading_id.
                  &quot;indentStartSuggested&quot;: True or False, # Indicates if there was a suggested change to indent_start.
                  &quot;keepWithNextSuggested&quot;: True or False, # Indicates if there was a suggested change to keep_with_next.
                  &quot;namedStyleTypeSuggested&quot;: True or False, # Indicates if there was a suggested change to named_style_type.
                  &quot;borderTopSuggested&quot;: True or False, # Indicates if there was a suggested change to border_top.
                  &quot;keepLinesTogetherSuggested&quot;: True or False, # Indicates if there was a suggested change to keep_lines_together.
                  &quot;avoidWidowAndOrphanSuggested&quot;: True or False, # Indicates if there was a suggested change to avoid_widow_and_orphan.
                  &quot;spaceBelowSuggested&quot;: True or False, # Indicates if there was a suggested change to space_below.
                  &quot;indentFirstLineSuggested&quot;: True or False, # Indicates if there was a suggested change to indent_first_line.
                  &quot;shadingSuggestionState&quot;: { # A mask that indicates which of the fields on the base Shading have been changed in this suggested change. For any field set to true, there is a new suggested value. # A mask that indicates which of the fields in shading have been changed in this suggestion.
                    &quot;backgroundColorSuggested&quot;: True or False, # Indicates if there was a suggested change to the Shading.
                  },
                  &quot;directionSuggested&quot;: True or False, # Indicates if there was a suggested change to direction.
                  &quot;borderBetweenSuggested&quot;: True or False, # Indicates if there was a suggested change to border_between.
                  &quot;spaceAboveSuggested&quot;: True or False, # Indicates if there was a suggested change to space_above.
                  &quot;borderLeftSuggested&quot;: True or False, # Indicates if there was a suggested change to border_left.
                  &quot;spacingModeSuggested&quot;: True or False, # Indicates if there was a suggested change to spacing_mode.
                  &quot;borderBottomSuggested&quot;: True or False, # Indicates if there was a suggested change to border_bottom.
                  &quot;alignmentSuggested&quot;: True or False, # Indicates if there was a suggested change to alignment.
                },
              },
            },
            &quot;bullet&quot;: { # Describes the bullet of a paragraph. # The bullet for this paragraph. If not present, the paragraph does not belong to a list.
              &quot;textStyle&quot;: { # Represents the styling that can be applied to text. Inherited text styles are represented as unset fields in this message. A text style&#x27;s parent depends on where the text style is defined: * The TextStyle of text in a Paragraph inherits from the paragraph&#x27;s corresponding named style type. * The TextStyle on a named style inherits from the normal text named style. * The TextStyle of the normal text named style inherits from the default text style in the Docs editor. * The TextStyle on a Paragraph element that is contained in a table may inherit its text style from the table style. If the text style does not inherit from a parent, unsetting fields will revert the style to a value matching the defaults in the Docs editor. # The paragraph specific text style applied to this bullet.
                &quot;italic&quot;: True or False, # Whether or not the text is italicized.
                &quot;baselineOffset&quot;: &quot;A String&quot;, # The text&#x27;s vertical offset from its normal position. Text with `SUPERSCRIPT` or `SUBSCRIPT` baseline offsets is automatically rendered in a smaller font size, computed based on the `font_size` field. The `font_size` itself is not affected by changes in this field.
                &quot;bold&quot;: True or False, # Whether or not the text is rendered as bold.
                &quot;fontSize&quot;: { # A magnitude in a single direction in the specified units. # The size of the text&#x27;s font.
                  &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                  &quot;magnitude&quot;: 3.14, # The magnitude.
                },
                &quot;foregroundColor&quot;: { # A color that can either be fully opaque or fully transparent. # The foreground color of the text. If set, the color is either an RGB color or transparent, depending on the `color` field.
                  &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                    &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                      &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                      &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                      &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                    },
                  },
                },
                &quot;backgroundColor&quot;: { # A color that can either be fully opaque or fully transparent. # The background color of the text. If set, the color is either an RGB color or transparent, depending on the `color` field.
                  &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                    &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                      &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                      &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                      &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                    },
                  },
                },
                &quot;link&quot;: { # A reference to another portion of a document or an external URL resource. # The hyperlink destination of the text. If unset, there is no link. Links are not inherited from parent text. Changing the link in an update request causes some other changes to the text style of the range: * When setting a link, the text foreground color will be updated to the default link color and the text will be underlined. If these fields are modified in the same request, those values will be used instead of the link defaults. * Setting a link on a text range that overlaps with an existing link will also update the existing link to point to the new URL. * Links are not settable on newline characters. As a result, setting a link on a text range that crosses a paragraph boundary, such as `&quot;ABC\n123&quot;`, will separate the newline character(s) into their own text runs. The link will be applied separately to the runs before and after the newline. * Removing a link will update the text style of the range to match the style of the preceding text (or the default text styles if the preceding text is another link) unless different styles are being set in the same request.
                  &quot;bookmarkId&quot;: &quot;A String&quot;, # The ID of a bookmark in this document.
                  &quot;url&quot;: &quot;A String&quot;, # An external URL.
                  &quot;headingId&quot;: &quot;A String&quot;, # The ID of a heading in this document.
                },
                &quot;strikethrough&quot;: True or False, # Whether or not the text is struck through.
                &quot;weightedFontFamily&quot;: { # Represents a font family and weight of text. # The font family and rendered weight of the text. If an update request specifies values for both `weighted_font_family` and `bold`, the `weighted_font_family` is applied first, then `bold`. If `weighted_font_family#weight` is not set, it defaults to `400`. If `weighted_font_family` is set, then `weighted_font_family#font_family` must also be set with a non-empty value. Otherwise, a 400 bad request error is returned.
                  &quot;fontFamily&quot;: &quot;A String&quot;, # The font family of the text. The font family can be any font from the Font menu in Docs or from [Google Fonts] (https://fonts.google.com/). If the font name is unrecognized, the text is rendered in `Arial`.
                  &quot;weight&quot;: 42, # The weight of the font. This field can have any value that is a multiple of `100` between `100` and `900`, inclusive. This range corresponds to the numerical values described in the CSS 2.1 Specification, [section 15.6](https://www.w3.org/TR/CSS21/fonts.html#font-boldness), with non-numerical values disallowed. The default value is `400` (&quot;normal&quot;). The font weight makes up just one component of the rendered font weight. The rendered weight is determined by a combination of the `weight` and the text style&#x27;s resolved `bold` value, after accounting for inheritance: * If the text is bold and the weight is less than `400`, the rendered weight is 400. * If the text is bold and the weight is greater than or equal to `400` but is less than `700`, the rendered weight is `700`. * If the weight is greater than or equal to `700`, the rendered weight is equal to the weight. * If the text is not bold, the rendered weight is equal to the weight.
                },
                &quot;underline&quot;: True or False, # Whether or not the text is underlined.
                &quot;smallCaps&quot;: True or False, # Whether or not the text is in small capital letters.
              },
              &quot;nestingLevel&quot;: 42, # The nesting level of this paragraph in the list.
              &quot;listId&quot;: &quot;A String&quot;, # The ID of the list this paragraph belongs to.
            },
            &quot;suggestedBulletChanges&quot;: { # The suggested changes to this paragraph&#x27;s bullet.
              &quot;a_key&quot;: { # A suggested change to a Bullet.
                &quot;bulletSuggestionState&quot;: { # A mask that indicates which of the fields on the base Bullet have been changed in this suggestion. For any field set to true, there is a new suggested value. # A mask that indicates which of the fields on the base Bullet have been changed in this suggestion.
                  &quot;nestingLevelSuggested&quot;: True or False, # Indicates if there was a suggested change to the nesting_level.
                  &quot;textStyleSuggestionState&quot;: { # A mask that indicates which of the fields on the base TextStyle have been changed in this suggestion. For any field set to true, there is a new suggested value. # A mask that indicates which of the fields in text style have been changed in this suggestion.
                    &quot;backgroundColorSuggested&quot;: True or False, # Indicates if there was a suggested change to background_color.
                    &quot;fontSizeSuggested&quot;: True or False, # Indicates if there was a suggested change to font_size.
                    &quot;boldSuggested&quot;: True or False, # Indicates if there was a suggested change to bold.
                    &quot;baselineOffsetSuggested&quot;: True or False, # Indicates if there was a suggested change to baseline_offset.
                    &quot;foregroundColorSuggested&quot;: True or False, # Indicates if there was a suggested change to foreground_color.
                    &quot;italicSuggested&quot;: True or False, # Indicates if there was a suggested change to italic.
                    &quot;linkSuggested&quot;: True or False, # Indicates if there was a suggested change to link.
                    &quot;underlineSuggested&quot;: True or False, # Indicates if there was a suggested change to underline.
                    &quot;weightedFontFamilySuggested&quot;: True or False, # Indicates if there was a suggested change to weighted_font_family.
                    &quot;smallCapsSuggested&quot;: True or False, # Indicates if there was a suggested change to small_caps.
                    &quot;strikethroughSuggested&quot;: True or False, # Indicates if there was a suggested change to strikethrough.
                  },
                  &quot;listIdSuggested&quot;: True or False, # Indicates if there was a suggested change to the list_id.
                },
                &quot;bullet&quot;: { # Describes the bullet of a paragraph. # A Bullet that only includes the changes made in this suggestion. This can be used along with the bullet_suggestion_state to see which fields have changed and their new values.
                  &quot;textStyle&quot;: { # Represents the styling that can be applied to text. Inherited text styles are represented as unset fields in this message. A text style&#x27;s parent depends on where the text style is defined: * The TextStyle of text in a Paragraph inherits from the paragraph&#x27;s corresponding named style type. * The TextStyle on a named style inherits from the normal text named style. * The TextStyle of the normal text named style inherits from the default text style in the Docs editor. * The TextStyle on a Paragraph element that is contained in a table may inherit its text style from the table style. If the text style does not inherit from a parent, unsetting fields will revert the style to a value matching the defaults in the Docs editor. # The paragraph specific text style applied to this bullet.
                    &quot;italic&quot;: True or False, # Whether or not the text is italicized.
                    &quot;baselineOffset&quot;: &quot;A String&quot;, # The text&#x27;s vertical offset from its normal position. Text with `SUPERSCRIPT` or `SUBSCRIPT` baseline offsets is automatically rendered in a smaller font size, computed based on the `font_size` field. The `font_size` itself is not affected by changes in this field.
                    &quot;bold&quot;: True or False, # Whether or not the text is rendered as bold.
                    &quot;fontSize&quot;: { # A magnitude in a single direction in the specified units. # The size of the text&#x27;s font.
                      &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                      &quot;magnitude&quot;: 3.14, # The magnitude.
                    },
                    &quot;foregroundColor&quot;: { # A color that can either be fully opaque or fully transparent. # The foreground color of the text. If set, the color is either an RGB color or transparent, depending on the `color` field.
                      &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                        &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                          &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                          &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                          &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                        },
                      },
                    },
                    &quot;backgroundColor&quot;: { # A color that can either be fully opaque or fully transparent. # The background color of the text. If set, the color is either an RGB color or transparent, depending on the `color` field.
                      &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                        &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                          &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                          &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                          &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                        },
                      },
                    },
                    &quot;link&quot;: { # A reference to another portion of a document or an external URL resource. # The hyperlink destination of the text. If unset, there is no link. Links are not inherited from parent text. Changing the link in an update request causes some other changes to the text style of the range: * When setting a link, the text foreground color will be updated to the default link color and the text will be underlined. If these fields are modified in the same request, those values will be used instead of the link defaults. * Setting a link on a text range that overlaps with an existing link will also update the existing link to point to the new URL. * Links are not settable on newline characters. As a result, setting a link on a text range that crosses a paragraph boundary, such as `&quot;ABC\n123&quot;`, will separate the newline character(s) into their own text runs. The link will be applied separately to the runs before and after the newline. * Removing a link will update the text style of the range to match the style of the preceding text (or the default text styles if the preceding text is another link) unless different styles are being set in the same request.
                      &quot;bookmarkId&quot;: &quot;A String&quot;, # The ID of a bookmark in this document.
                      &quot;url&quot;: &quot;A String&quot;, # An external URL.
                      &quot;headingId&quot;: &quot;A String&quot;, # The ID of a heading in this document.
                    },
                    &quot;strikethrough&quot;: True or False, # Whether or not the text is struck through.
                    &quot;weightedFontFamily&quot;: { # Represents a font family and weight of text. # The font family and rendered weight of the text. If an update request specifies values for both `weighted_font_family` and `bold`, the `weighted_font_family` is applied first, then `bold`. If `weighted_font_family#weight` is not set, it defaults to `400`. If `weighted_font_family` is set, then `weighted_font_family#font_family` must also be set with a non-empty value. Otherwise, a 400 bad request error is returned.
                      &quot;fontFamily&quot;: &quot;A String&quot;, # The font family of the text. The font family can be any font from the Font menu in Docs or from [Google Fonts] (https://fonts.google.com/). If the font name is unrecognized, the text is rendered in `Arial`.
                      &quot;weight&quot;: 42, # The weight of the font. This field can have any value that is a multiple of `100` between `100` and `900`, inclusive. This range corresponds to the numerical values described in the CSS 2.1 Specification, [section 15.6](https://www.w3.org/TR/CSS21/fonts.html#font-boldness), with non-numerical values disallowed. The default value is `400` (&quot;normal&quot;). The font weight makes up just one component of the rendered font weight. The rendered weight is determined by a combination of the `weight` and the text style&#x27;s resolved `bold` value, after accounting for inheritance: * If the text is bold and the weight is less than `400`, the rendered weight is 400. * If the text is bold and the weight is greater than or equal to `400` but is less than `700`, the rendered weight is `700`. * If the weight is greater than or equal to `700`, the rendered weight is equal to the weight. * If the text is not bold, the rendered weight is equal to the weight.
                    },
                    &quot;underline&quot;: True or False, # Whether or not the text is underlined.
                    &quot;smallCaps&quot;: True or False, # Whether or not the text is in small capital letters.
                  },
                  &quot;nestingLevel&quot;: 42, # The nesting level of this paragraph in the list.
                  &quot;listId&quot;: &quot;A String&quot;, # The ID of the list this paragraph belongs to.
                },
              },
            },
            &quot;suggestedPositionedObjectIds&quot;: { # The IDs of the positioned objects that are suggested to be attached to this paragraph, keyed by suggestion ID.
              &quot;a_key&quot;: { # A collection of object IDs.
                &quot;objectIds&quot;: [ # The object IDs.
                  &quot;A String&quot;,
                ],
              },
            },
            &quot;elements&quot;: [ # The content of the paragraph broken down into its component parts.
              { # A ParagraphElement describes content within a Paragraph.
                &quot;textRun&quot;: { # A ParagraphElement that represents a run of text that all has the same styling. # A text run paragraph element.
                  &quot;suggestedInsertionIds&quot;: [ # The suggested insertion IDs. A TextRun may have multiple insertion IDs if it is a nested suggested change. If empty, then this is not a suggested insertion.
                    &quot;A String&quot;,
                  ],
                  &quot;content&quot;: &quot;A String&quot;, # The text of this run. Any non-text elements in the run are replaced with the Unicode character U+E907.
                  &quot;textStyle&quot;: { # Represents the styling that can be applied to text. Inherited text styles are represented as unset fields in this message. A text style&#x27;s parent depends on where the text style is defined: * The TextStyle of text in a Paragraph inherits from the paragraph&#x27;s corresponding named style type. * The TextStyle on a named style inherits from the normal text named style. * The TextStyle of the normal text named style inherits from the default text style in the Docs editor. * The TextStyle on a Paragraph element that is contained in a table may inherit its text style from the table style. If the text style does not inherit from a parent, unsetting fields will revert the style to a value matching the defaults in the Docs editor. # The text style of this run.
                    &quot;italic&quot;: True or False, # Whether or not the text is italicized.
                    &quot;baselineOffset&quot;: &quot;A String&quot;, # The text&#x27;s vertical offset from its normal position. Text with `SUPERSCRIPT` or `SUBSCRIPT` baseline offsets is automatically rendered in a smaller font size, computed based on the `font_size` field. The `font_size` itself is not affected by changes in this field.
                    &quot;bold&quot;: True or False, # Whether or not the text is rendered as bold.
                    &quot;fontSize&quot;: { # A magnitude in a single direction in the specified units. # The size of the text&#x27;s font.
                      &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                      &quot;magnitude&quot;: 3.14, # The magnitude.
                    },
                    &quot;foregroundColor&quot;: { # A color that can either be fully opaque or fully transparent. # The foreground color of the text. If set, the color is either an RGB color or transparent, depending on the `color` field.
                      &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                        &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                          &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                          &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                          &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                        },
                      },
                    },
                    &quot;backgroundColor&quot;: { # A color that can either be fully opaque or fully transparent. # The background color of the text. If set, the color is either an RGB color or transparent, depending on the `color` field.
                      &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                        &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                          &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                          &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                          &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                        },
                      },
                    },
                    &quot;link&quot;: { # A reference to another portion of a document or an external URL resource. # The hyperlink destination of the text. If unset, there is no link. Links are not inherited from parent text. Changing the link in an update request causes some other changes to the text style of the range: * When setting a link, the text foreground color will be updated to the default link color and the text will be underlined. If these fields are modified in the same request, those values will be used instead of the link defaults. * Setting a link on a text range that overlaps with an existing link will also update the existing link to point to the new URL. * Links are not settable on newline characters. As a result, setting a link on a text range that crosses a paragraph boundary, such as `&quot;ABC\n123&quot;`, will separate the newline character(s) into their own text runs. The link will be applied separately to the runs before and after the newline. * Removing a link will update the text style of the range to match the style of the preceding text (or the default text styles if the preceding text is another link) unless different styles are being set in the same request.
                      &quot;bookmarkId&quot;: &quot;A String&quot;, # The ID of a bookmark in this document.
                      &quot;url&quot;: &quot;A String&quot;, # An external URL.
                      &quot;headingId&quot;: &quot;A String&quot;, # The ID of a heading in this document.
                    },
                    &quot;strikethrough&quot;: True or False, # Whether or not the text is struck through.
                    &quot;weightedFontFamily&quot;: { # Represents a font family and weight of text. # The font family and rendered weight of the text. If an update request specifies values for both `weighted_font_family` and `bold`, the `weighted_font_family` is applied first, then `bold`. If `weighted_font_family#weight` is not set, it defaults to `400`. If `weighted_font_family` is set, then `weighted_font_family#font_family` must also be set with a non-empty value. Otherwise, a 400 bad request error is returned.
                      &quot;fontFamily&quot;: &quot;A String&quot;, # The font family of the text. The font family can be any font from the Font menu in Docs or from [Google Fonts] (https://fonts.google.com/). If the font name is unrecognized, the text is rendered in `Arial`.
                      &quot;weight&quot;: 42, # The weight of the font. This field can have any value that is a multiple of `100` between `100` and `900`, inclusive. This range corresponds to the numerical values described in the CSS 2.1 Specification, [section 15.6](https://www.w3.org/TR/CSS21/fonts.html#font-boldness), with non-numerical values disallowed. The default value is `400` (&quot;normal&quot;). The font weight makes up just one component of the rendered font weight. The rendered weight is determined by a combination of the `weight` and the text style&#x27;s resolved `bold` value, after accounting for inheritance: * If the text is bold and the weight is less than `400`, the rendered weight is 400. * If the text is bold and the weight is greater than or equal to `400` but is less than `700`, the rendered weight is `700`. * If the weight is greater than or equal to `700`, the rendered weight is equal to the weight. * If the text is not bold, the rendered weight is equal to the weight.
                    },
                    &quot;underline&quot;: True or False, # Whether or not the text is underlined.
                    &quot;smallCaps&quot;: True or False, # Whether or not the text is in small capital letters.
                  },
                  &quot;suggestedTextStyleChanges&quot;: { # The suggested text style changes to this run, keyed by suggestion ID.
                    &quot;a_key&quot;: { # A suggested change to a TextStyle.
                      &quot;textStyleSuggestionState&quot;: { # A mask that indicates which of the fields on the base TextStyle have been changed in this suggestion. For any field set to true, there is a new suggested value. # A mask that indicates which of the fields on the base TextStyle have been changed in this suggestion.
                        &quot;backgroundColorSuggested&quot;: True or False, # Indicates if there was a suggested change to background_color.
                        &quot;fontSizeSuggested&quot;: True or False, # Indicates if there was a suggested change to font_size.
                        &quot;boldSuggested&quot;: True or False, # Indicates if there was a suggested change to bold.
                        &quot;baselineOffsetSuggested&quot;: True or False, # Indicates if there was a suggested change to baseline_offset.
                        &quot;foregroundColorSuggested&quot;: True or False, # Indicates if there was a suggested change to foreground_color.
                        &quot;italicSuggested&quot;: True or False, # Indicates if there was a suggested change to italic.
                        &quot;linkSuggested&quot;: True or False, # Indicates if there was a suggested change to link.
                        &quot;underlineSuggested&quot;: True or False, # Indicates if there was a suggested change to underline.
                        &quot;weightedFontFamilySuggested&quot;: True or False, # Indicates if there was a suggested change to weighted_font_family.
                        &quot;smallCapsSuggested&quot;: True or False, # Indicates if there was a suggested change to small_caps.
                        &quot;strikethroughSuggested&quot;: True or False, # Indicates if there was a suggested change to strikethrough.
                      },
                      &quot;textStyle&quot;: { # Represents the styling that can be applied to text. Inherited text styles are represented as unset fields in this message. A text style&#x27;s parent depends on where the text style is defined: * The TextStyle of text in a Paragraph inherits from the paragraph&#x27;s corresponding named style type. * The TextStyle on a named style inherits from the normal text named style. * The TextStyle of the normal text named style inherits from the default text style in the Docs editor. * The TextStyle on a Paragraph element that is contained in a table may inherit its text style from the table style. If the text style does not inherit from a parent, unsetting fields will revert the style to a value matching the defaults in the Docs editor. # A TextStyle that only includes the changes made in this suggestion. This can be used along with the text_style_suggestion_state to see which fields have changed and their new values.
                        &quot;italic&quot;: True or False, # Whether or not the text is italicized.
                        &quot;baselineOffset&quot;: &quot;A String&quot;, # The text&#x27;s vertical offset from its normal position. Text with `SUPERSCRIPT` or `SUBSCRIPT` baseline offsets is automatically rendered in a smaller font size, computed based on the `font_size` field. The `font_size` itself is not affected by changes in this field.
                        &quot;bold&quot;: True or False, # Whether or not the text is rendered as bold.
                        &quot;fontSize&quot;: { # A magnitude in a single direction in the specified units. # The size of the text&#x27;s font.
                          &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                          &quot;magnitude&quot;: 3.14, # The magnitude.
                        },
                        &quot;foregroundColor&quot;: { # A color that can either be fully opaque or fully transparent. # The foreground color of the text. If set, the color is either an RGB color or transparent, depending on the `color` field.
                          &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                            &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                              &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                              &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                              &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                            },
                          },
                        },
                        &quot;backgroundColor&quot;: { # A color that can either be fully opaque or fully transparent. # The background color of the text. If set, the color is either an RGB color or transparent, depending on the `color` field.
                          &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                            &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                              &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                              &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                              &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                            },
                          },
                        },
                        &quot;link&quot;: { # A reference to another portion of a document or an external URL resource. # The hyperlink destination of the text. If unset, there is no link. Links are not inherited from parent text. Changing the link in an update request causes some other changes to the text style of the range: * When setting a link, the text foreground color will be updated to the default link color and the text will be underlined. If these fields are modified in the same request, those values will be used instead of the link defaults. * Setting a link on a text range that overlaps with an existing link will also update the existing link to point to the new URL. * Links are not settable on newline characters. As a result, setting a link on a text range that crosses a paragraph boundary, such as `&quot;ABC\n123&quot;`, will separate the newline character(s) into their own text runs. The link will be applied separately to the runs before and after the newline. * Removing a link will update the text style of the range to match the style of the preceding text (or the default text styles if the preceding text is another link) unless different styles are being set in the same request.
                          &quot;bookmarkId&quot;: &quot;A String&quot;, # The ID of a bookmark in this document.
                          &quot;url&quot;: &quot;A String&quot;, # An external URL.
                          &quot;headingId&quot;: &quot;A String&quot;, # The ID of a heading in this document.
                        },
                        &quot;strikethrough&quot;: True or False, # Whether or not the text is struck through.
                        &quot;weightedFontFamily&quot;: { # Represents a font family and weight of text. # The font family and rendered weight of the text. If an update request specifies values for both `weighted_font_family` and `bold`, the `weighted_font_family` is applied first, then `bold`. If `weighted_font_family#weight` is not set, it defaults to `400`. If `weighted_font_family` is set, then `weighted_font_family#font_family` must also be set with a non-empty value. Otherwise, a 400 bad request error is returned.
                          &quot;fontFamily&quot;: &quot;A String&quot;, # The font family of the text. The font family can be any font from the Font menu in Docs or from [Google Fonts] (https://fonts.google.com/). If the font name is unrecognized, the text is rendered in `Arial`.
                          &quot;weight&quot;: 42, # The weight of the font. This field can have any value that is a multiple of `100` between `100` and `900`, inclusive. This range corresponds to the numerical values described in the CSS 2.1 Specification, [section 15.6](https://www.w3.org/TR/CSS21/fonts.html#font-boldness), with non-numerical values disallowed. The default value is `400` (&quot;normal&quot;). The font weight makes up just one component of the rendered font weight. The rendered weight is determined by a combination of the `weight` and the text style&#x27;s resolved `bold` value, after accounting for inheritance: * If the text is bold and the weight is less than `400`, the rendered weight is 400. * If the text is bold and the weight is greater than or equal to `400` but is less than `700`, the rendered weight is `700`. * If the weight is greater than or equal to `700`, the rendered weight is equal to the weight. * If the text is not bold, the rendered weight is equal to the weight.
                        },
                        &quot;underline&quot;: True or False, # Whether or not the text is underlined.
                        &quot;smallCaps&quot;: True or False, # Whether or not the text is in small capital letters.
                      },
                    },
                  },
                  &quot;suggestedDeletionIds&quot;: [ # The suggested deletion IDs. If empty, then there are no suggested deletions of this content.
                    &quot;A String&quot;,
                  ],
                },
                &quot;pageBreak&quot;: { # A ParagraphElement representing a page break. A page break makes the subsequent text start at the top of the next page. # A page break paragraph element.
                  &quot;suggestedInsertionIds&quot;: [ # The suggested insertion IDs. A PageBreak may have multiple insertion IDs if it is a nested suggested change. If empty, then this is not a suggested insertion.
                    &quot;A String&quot;,
                  ],
                  &quot;textStyle&quot;: { # Represents the styling that can be applied to text. Inherited text styles are represented as unset fields in this message. A text style&#x27;s parent depends on where the text style is defined: * The TextStyle of text in a Paragraph inherits from the paragraph&#x27;s corresponding named style type. * The TextStyle on a named style inherits from the normal text named style. * The TextStyle of the normal text named style inherits from the default text style in the Docs editor. * The TextStyle on a Paragraph element that is contained in a table may inherit its text style from the table style. If the text style does not inherit from a parent, unsetting fields will revert the style to a value matching the defaults in the Docs editor. # The text style of this PageBreak. Similar to text content, like text runs and footnote references, the text style of a page break can affect content layout as well as the styling of text inserted adjacent to it.
                    &quot;italic&quot;: True or False, # Whether or not the text is italicized.
                    &quot;baselineOffset&quot;: &quot;A String&quot;, # The text&#x27;s vertical offset from its normal position. Text with `SUPERSCRIPT` or `SUBSCRIPT` baseline offsets is automatically rendered in a smaller font size, computed based on the `font_size` field. The `font_size` itself is not affected by changes in this field.
                    &quot;bold&quot;: True or False, # Whether or not the text is rendered as bold.
                    &quot;fontSize&quot;: { # A magnitude in a single direction in the specified units. # The size of the text&#x27;s font.
                      &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                      &quot;magnitude&quot;: 3.14, # The magnitude.
                    },
                    &quot;foregroundColor&quot;: { # A color that can either be fully opaque or fully transparent. # The foreground color of the text. If set, the color is either an RGB color or transparent, depending on the `color` field.
                      &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                        &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                          &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                          &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                          &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                        },
                      },
                    },
                    &quot;backgroundColor&quot;: { # A color that can either be fully opaque or fully transparent. # The background color of the text. If set, the color is either an RGB color or transparent, depending on the `color` field.
                      &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                        &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                          &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                          &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                          &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                        },
                      },
                    },
                    &quot;link&quot;: { # A reference to another portion of a document or an external URL resource. # The hyperlink destination of the text. If unset, there is no link. Links are not inherited from parent text. Changing the link in an update request causes some other changes to the text style of the range: * When setting a link, the text foreground color will be updated to the default link color and the text will be underlined. If these fields are modified in the same request, those values will be used instead of the link defaults. * Setting a link on a text range that overlaps with an existing link will also update the existing link to point to the new URL. * Links are not settable on newline characters. As a result, setting a link on a text range that crosses a paragraph boundary, such as `&quot;ABC\n123&quot;`, will separate the newline character(s) into their own text runs. The link will be applied separately to the runs before and after the newline. * Removing a link will update the text style of the range to match the style of the preceding text (or the default text styles if the preceding text is another link) unless different styles are being set in the same request.
                      &quot;bookmarkId&quot;: &quot;A String&quot;, # The ID of a bookmark in this document.
                      &quot;url&quot;: &quot;A String&quot;, # An external URL.
                      &quot;headingId&quot;: &quot;A String&quot;, # The ID of a heading in this document.
                    },
                    &quot;strikethrough&quot;: True or False, # Whether or not the text is struck through.
                    &quot;weightedFontFamily&quot;: { # Represents a font family and weight of text. # The font family and rendered weight of the text. If an update request specifies values for both `weighted_font_family` and `bold`, the `weighted_font_family` is applied first, then `bold`. If `weighted_font_family#weight` is not set, it defaults to `400`. If `weighted_font_family` is set, then `weighted_font_family#font_family` must also be set with a non-empty value. Otherwise, a 400 bad request error is returned.
                      &quot;fontFamily&quot;: &quot;A String&quot;, # The font family of the text. The font family can be any font from the Font menu in Docs or from [Google Fonts] (https://fonts.google.com/). If the font name is unrecognized, the text is rendered in `Arial`.
                      &quot;weight&quot;: 42, # The weight of the font. This field can have any value that is a multiple of `100` between `100` and `900`, inclusive. This range corresponds to the numerical values described in the CSS 2.1 Specification, [section 15.6](https://www.w3.org/TR/CSS21/fonts.html#font-boldness), with non-numerical values disallowed. The default value is `400` (&quot;normal&quot;). The font weight makes up just one component of the rendered font weight. The rendered weight is determined by a combination of the `weight` and the text style&#x27;s resolved `bold` value, after accounting for inheritance: * If the text is bold and the weight is less than `400`, the rendered weight is 400. * If the text is bold and the weight is greater than or equal to `400` but is less than `700`, the rendered weight is `700`. * If the weight is greater than or equal to `700`, the rendered weight is equal to the weight. * If the text is not bold, the rendered weight is equal to the weight.
                    },
                    &quot;underline&quot;: True or False, # Whether or not the text is underlined.
                    &quot;smallCaps&quot;: True or False, # Whether or not the text is in small capital letters.
                  },
                  &quot;suggestedTextStyleChanges&quot;: { # The suggested text style changes to this PageBreak, keyed by suggestion ID.
                    &quot;a_key&quot;: { # A suggested change to a TextStyle.
                      &quot;textStyleSuggestionState&quot;: { # A mask that indicates which of the fields on the base TextStyle have been changed in this suggestion. For any field set to true, there is a new suggested value. # A mask that indicates which of the fields on the base TextStyle have been changed in this suggestion.
                        &quot;backgroundColorSuggested&quot;: True or False, # Indicates if there was a suggested change to background_color.
                        &quot;fontSizeSuggested&quot;: True or False, # Indicates if there was a suggested change to font_size.
                        &quot;boldSuggested&quot;: True or False, # Indicates if there was a suggested change to bold.
                        &quot;baselineOffsetSuggested&quot;: True or False, # Indicates if there was a suggested change to baseline_offset.
                        &quot;foregroundColorSuggested&quot;: True or False, # Indicates if there was a suggested change to foreground_color.
                        &quot;italicSuggested&quot;: True or False, # Indicates if there was a suggested change to italic.
                        &quot;linkSuggested&quot;: True or False, # Indicates if there was a suggested change to link.
                        &quot;underlineSuggested&quot;: True or False, # Indicates if there was a suggested change to underline.
                        &quot;weightedFontFamilySuggested&quot;: True or False, # Indicates if there was a suggested change to weighted_font_family.
                        &quot;smallCapsSuggested&quot;: True or False, # Indicates if there was a suggested change to small_caps.
                        &quot;strikethroughSuggested&quot;: True or False, # Indicates if there was a suggested change to strikethrough.
                      },
                      &quot;textStyle&quot;: { # Represents the styling that can be applied to text. Inherited text styles are represented as unset fields in this message. A text style&#x27;s parent depends on where the text style is defined: * The TextStyle of text in a Paragraph inherits from the paragraph&#x27;s corresponding named style type. * The TextStyle on a named style inherits from the normal text named style. * The TextStyle of the normal text named style inherits from the default text style in the Docs editor. * The TextStyle on a Paragraph element that is contained in a table may inherit its text style from the table style. If the text style does not inherit from a parent, unsetting fields will revert the style to a value matching the defaults in the Docs editor. # A TextStyle that only includes the changes made in this suggestion. This can be used along with the text_style_suggestion_state to see which fields have changed and their new values.
                        &quot;italic&quot;: True or False, # Whether or not the text is italicized.
                        &quot;baselineOffset&quot;: &quot;A String&quot;, # The text&#x27;s vertical offset from its normal position. Text with `SUPERSCRIPT` or `SUBSCRIPT` baseline offsets is automatically rendered in a smaller font size, computed based on the `font_size` field. The `font_size` itself is not affected by changes in this field.
                        &quot;bold&quot;: True or False, # Whether or not the text is rendered as bold.
                        &quot;fontSize&quot;: { # A magnitude in a single direction in the specified units. # The size of the text&#x27;s font.
                          &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                          &quot;magnitude&quot;: 3.14, # The magnitude.
                        },
                        &quot;foregroundColor&quot;: { # A color that can either be fully opaque or fully transparent. # The foreground color of the text. If set, the color is either an RGB color or transparent, depending on the `color` field.
                          &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                            &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                              &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                              &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                              &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                            },
                          },
                        },
                        &quot;backgroundColor&quot;: { # A color that can either be fully opaque or fully transparent. # The background color of the text. If set, the color is either an RGB color or transparent, depending on the `color` field.
                          &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                            &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                              &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                              &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                              &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                            },
                          },
                        },
                        &quot;link&quot;: { # A reference to another portion of a document or an external URL resource. # The hyperlink destination of the text. If unset, there is no link. Links are not inherited from parent text. Changing the link in an update request causes some other changes to the text style of the range: * When setting a link, the text foreground color will be updated to the default link color and the text will be underlined. If these fields are modified in the same request, those values will be used instead of the link defaults. * Setting a link on a text range that overlaps with an existing link will also update the existing link to point to the new URL. * Links are not settable on newline characters. As a result, setting a link on a text range that crosses a paragraph boundary, such as `&quot;ABC\n123&quot;`, will separate the newline character(s) into their own text runs. The link will be applied separately to the runs before and after the newline. * Removing a link will update the text style of the range to match the style of the preceding text (or the default text styles if the preceding text is another link) unless different styles are being set in the same request.
                          &quot;bookmarkId&quot;: &quot;A String&quot;, # The ID of a bookmark in this document.
                          &quot;url&quot;: &quot;A String&quot;, # An external URL.
                          &quot;headingId&quot;: &quot;A String&quot;, # The ID of a heading in this document.
                        },
                        &quot;strikethrough&quot;: True or False, # Whether or not the text is struck through.
                        &quot;weightedFontFamily&quot;: { # Represents a font family and weight of text. # The font family and rendered weight of the text. If an update request specifies values for both `weighted_font_family` and `bold`, the `weighted_font_family` is applied first, then `bold`. If `weighted_font_family#weight` is not set, it defaults to `400`. If `weighted_font_family` is set, then `weighted_font_family#font_family` must also be set with a non-empty value. Otherwise, a 400 bad request error is returned.
                          &quot;fontFamily&quot;: &quot;A String&quot;, # The font family of the text. The font family can be any font from the Font menu in Docs or from [Google Fonts] (https://fonts.google.com/). If the font name is unrecognized, the text is rendered in `Arial`.
                          &quot;weight&quot;: 42, # The weight of the font. This field can have any value that is a multiple of `100` between `100` and `900`, inclusive. This range corresponds to the numerical values described in the CSS 2.1 Specification, [section 15.6](https://www.w3.org/TR/CSS21/fonts.html#font-boldness), with non-numerical values disallowed. The default value is `400` (&quot;normal&quot;). The font weight makes up just one component of the rendered font weight. The rendered weight is determined by a combination of the `weight` and the text style&#x27;s resolved `bold` value, after accounting for inheritance: * If the text is bold and the weight is less than `400`, the rendered weight is 400. * If the text is bold and the weight is greater than or equal to `400` but is less than `700`, the rendered weight is `700`. * If the weight is greater than or equal to `700`, the rendered weight is equal to the weight. * If the text is not bold, the rendered weight is equal to the weight.
                        },
                        &quot;underline&quot;: True or False, # Whether or not the text is underlined.
                        &quot;smallCaps&quot;: True or False, # Whether or not the text is in small capital letters.
                      },
                    },
                  },
                  &quot;suggestedDeletionIds&quot;: [ # The suggested deletion IDs. If empty, then there are no suggested deletions of this content.
                    &quot;A String&quot;,
                  ],
                },
                &quot;horizontalRule&quot;: { # A ParagraphElement representing a horizontal line. # A horizontal rule paragraph element.
                  &quot;suggestedInsertionIds&quot;: [ # The suggested insertion IDs. A HorizontalRule may have multiple insertion IDs if it is a nested suggested change. If empty, then this is not a suggested insertion.
                    &quot;A String&quot;,
                  ],
                  &quot;suggestedTextStyleChanges&quot;: { # The suggested text style changes to this HorizontalRule, keyed by suggestion ID.
                    &quot;a_key&quot;: { # A suggested change to a TextStyle.
                      &quot;textStyleSuggestionState&quot;: { # A mask that indicates which of the fields on the base TextStyle have been changed in this suggestion. For any field set to true, there is a new suggested value. # A mask that indicates which of the fields on the base TextStyle have been changed in this suggestion.
                        &quot;backgroundColorSuggested&quot;: True or False, # Indicates if there was a suggested change to background_color.
                        &quot;fontSizeSuggested&quot;: True or False, # Indicates if there was a suggested change to font_size.
                        &quot;boldSuggested&quot;: True or False, # Indicates if there was a suggested change to bold.
                        &quot;baselineOffsetSuggested&quot;: True or False, # Indicates if there was a suggested change to baseline_offset.
                        &quot;foregroundColorSuggested&quot;: True or False, # Indicates if there was a suggested change to foreground_color.
                        &quot;italicSuggested&quot;: True or False, # Indicates if there was a suggested change to italic.
                        &quot;linkSuggested&quot;: True or False, # Indicates if there was a suggested change to link.
                        &quot;underlineSuggested&quot;: True or False, # Indicates if there was a suggested change to underline.
                        &quot;weightedFontFamilySuggested&quot;: True or False, # Indicates if there was a suggested change to weighted_font_family.
                        &quot;smallCapsSuggested&quot;: True or False, # Indicates if there was a suggested change to small_caps.
                        &quot;strikethroughSuggested&quot;: True or False, # Indicates if there was a suggested change to strikethrough.
                      },
                      &quot;textStyle&quot;: { # Represents the styling that can be applied to text. Inherited text styles are represented as unset fields in this message. A text style&#x27;s parent depends on where the text style is defined: * The TextStyle of text in a Paragraph inherits from the paragraph&#x27;s corresponding named style type. * The TextStyle on a named style inherits from the normal text named style. * The TextStyle of the normal text named style inherits from the default text style in the Docs editor. * The TextStyle on a Paragraph element that is contained in a table may inherit its text style from the table style. If the text style does not inherit from a parent, unsetting fields will revert the style to a value matching the defaults in the Docs editor. # A TextStyle that only includes the changes made in this suggestion. This can be used along with the text_style_suggestion_state to see which fields have changed and their new values.
                        &quot;italic&quot;: True or False, # Whether or not the text is italicized.
                        &quot;baselineOffset&quot;: &quot;A String&quot;, # The text&#x27;s vertical offset from its normal position. Text with `SUPERSCRIPT` or `SUBSCRIPT` baseline offsets is automatically rendered in a smaller font size, computed based on the `font_size` field. The `font_size` itself is not affected by changes in this field.
                        &quot;bold&quot;: True or False, # Whether or not the text is rendered as bold.
                        &quot;fontSize&quot;: { # A magnitude in a single direction in the specified units. # The size of the text&#x27;s font.
                          &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                          &quot;magnitude&quot;: 3.14, # The magnitude.
                        },
                        &quot;foregroundColor&quot;: { # A color that can either be fully opaque or fully transparent. # The foreground color of the text. If set, the color is either an RGB color or transparent, depending on the `color` field.
                          &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                            &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                              &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                              &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                              &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                            },
                          },
                        },
                        &quot;backgroundColor&quot;: { # A color that can either be fully opaque or fully transparent. # The background color of the text. If set, the color is either an RGB color or transparent, depending on the `color` field.
                          &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                            &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                              &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                              &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                              &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                            },
                          },
                        },
                        &quot;link&quot;: { # A reference to another portion of a document or an external URL resource. # The hyperlink destination of the text. If unset, there is no link. Links are not inherited from parent text. Changing the link in an update request causes some other changes to the text style of the range: * When setting a link, the text foreground color will be updated to the default link color and the text will be underlined. If these fields are modified in the same request, those values will be used instead of the link defaults. * Setting a link on a text range that overlaps with an existing link will also update the existing link to point to the new URL. * Links are not settable on newline characters. As a result, setting a link on a text range that crosses a paragraph boundary, such as `&quot;ABC\n123&quot;`, will separate the newline character(s) into their own text runs. The link will be applied separately to the runs before and after the newline. * Removing a link will update the text style of the range to match the style of the preceding text (or the default text styles if the preceding text is another link) unless different styles are being set in the same request.
                          &quot;bookmarkId&quot;: &quot;A String&quot;, # The ID of a bookmark in this document.
                          &quot;url&quot;: &quot;A String&quot;, # An external URL.
                          &quot;headingId&quot;: &quot;A String&quot;, # The ID of a heading in this document.
                        },
                        &quot;strikethrough&quot;: True or False, # Whether or not the text is struck through.
                        &quot;weightedFontFamily&quot;: { # Represents a font family and weight of text. # The font family and rendered weight of the text. If an update request specifies values for both `weighted_font_family` and `bold`, the `weighted_font_family` is applied first, then `bold`. If `weighted_font_family#weight` is not set, it defaults to `400`. If `weighted_font_family` is set, then `weighted_font_family#font_family` must also be set with a non-empty value. Otherwise, a 400 bad request error is returned.
                          &quot;fontFamily&quot;: &quot;A String&quot;, # The font family of the text. The font family can be any font from the Font menu in Docs or from [Google Fonts] (https://fonts.google.com/). If the font name is unrecognized, the text is rendered in `Arial`.
                          &quot;weight&quot;: 42, # The weight of the font. This field can have any value that is a multiple of `100` between `100` and `900`, inclusive. This range corresponds to the numerical values described in the CSS 2.1 Specification, [section 15.6](https://www.w3.org/TR/CSS21/fonts.html#font-boldness), with non-numerical values disallowed. The default value is `400` (&quot;normal&quot;). The font weight makes up just one component of the rendered font weight. The rendered weight is determined by a combination of the `weight` and the text style&#x27;s resolved `bold` value, after accounting for inheritance: * If the text is bold and the weight is less than `400`, the rendered weight is 400. * If the text is bold and the weight is greater than or equal to `400` but is less than `700`, the rendered weight is `700`. * If the weight is greater than or equal to `700`, the rendered weight is equal to the weight. * If the text is not bold, the rendered weight is equal to the weight.
                        },
                        &quot;underline&quot;: True or False, # Whether or not the text is underlined.
                        &quot;smallCaps&quot;: True or False, # Whether or not the text is in small capital letters.
                      },
                    },
                  },
                  &quot;suggestedDeletionIds&quot;: [ # The suggested deletion IDs. If empty, then there are no suggested deletions of this content.
                    &quot;A String&quot;,
                  ],
                  &quot;textStyle&quot;: { # Represents the styling that can be applied to text. Inherited text styles are represented as unset fields in this message. A text style&#x27;s parent depends on where the text style is defined: * The TextStyle of text in a Paragraph inherits from the paragraph&#x27;s corresponding named style type. * The TextStyle on a named style inherits from the normal text named style. * The TextStyle of the normal text named style inherits from the default text style in the Docs editor. * The TextStyle on a Paragraph element that is contained in a table may inherit its text style from the table style. If the text style does not inherit from a parent, unsetting fields will revert the style to a value matching the defaults in the Docs editor. # The text style of this HorizontalRule. Similar to text content, like text runs and footnote references, the text style of a horizontal rule can affect content layout as well as the styling of text inserted adjacent to it.
                    &quot;italic&quot;: True or False, # Whether or not the text is italicized.
                    &quot;baselineOffset&quot;: &quot;A String&quot;, # The text&#x27;s vertical offset from its normal position. Text with `SUPERSCRIPT` or `SUBSCRIPT` baseline offsets is automatically rendered in a smaller font size, computed based on the `font_size` field. The `font_size` itself is not affected by changes in this field.
                    &quot;bold&quot;: True or False, # Whether or not the text is rendered as bold.
                    &quot;fontSize&quot;: { # A magnitude in a single direction in the specified units. # The size of the text&#x27;s font.
                      &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                      &quot;magnitude&quot;: 3.14, # The magnitude.
                    },
                    &quot;foregroundColor&quot;: { # A color that can either be fully opaque or fully transparent. # The foreground color of the text. If set, the color is either an RGB color or transparent, depending on the `color` field.
                      &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                        &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                          &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                          &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                          &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                        },
                      },
                    },
                    &quot;backgroundColor&quot;: { # A color that can either be fully opaque or fully transparent. # The background color of the text. If set, the color is either an RGB color or transparent, depending on the `color` field.
                      &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                        &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                          &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                          &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                          &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                        },
                      },
                    },
                    &quot;link&quot;: { # A reference to another portion of a document or an external URL resource. # The hyperlink destination of the text. If unset, there is no link. Links are not inherited from parent text. Changing the link in an update request causes some other changes to the text style of the range: * When setting a link, the text foreground color will be updated to the default link color and the text will be underlined. If these fields are modified in the same request, those values will be used instead of the link defaults. * Setting a link on a text range that overlaps with an existing link will also update the existing link to point to the new URL. * Links are not settable on newline characters. As a result, setting a link on a text range that crosses a paragraph boundary, such as `&quot;ABC\n123&quot;`, will separate the newline character(s) into their own text runs. The link will be applied separately to the runs before and after the newline. * Removing a link will update the text style of the range to match the style of the preceding text (or the default text styles if the preceding text is another link) unless different styles are being set in the same request.
                      &quot;bookmarkId&quot;: &quot;A String&quot;, # The ID of a bookmark in this document.
                      &quot;url&quot;: &quot;A String&quot;, # An external URL.
                      &quot;headingId&quot;: &quot;A String&quot;, # The ID of a heading in this document.
                    },
                    &quot;strikethrough&quot;: True or False, # Whether or not the text is struck through.
                    &quot;weightedFontFamily&quot;: { # Represents a font family and weight of text. # The font family and rendered weight of the text. If an update request specifies values for both `weighted_font_family` and `bold`, the `weighted_font_family` is applied first, then `bold`. If `weighted_font_family#weight` is not set, it defaults to `400`. If `weighted_font_family` is set, then `weighted_font_family#font_family` must also be set with a non-empty value. Otherwise, a 400 bad request error is returned.
                      &quot;fontFamily&quot;: &quot;A String&quot;, # The font family of the text. The font family can be any font from the Font menu in Docs or from [Google Fonts] (https://fonts.google.com/). If the font name is unrecognized, the text is rendered in `Arial`.
                      &quot;weight&quot;: 42, # The weight of the font. This field can have any value that is a multiple of `100` between `100` and `900`, inclusive. This range corresponds to the numerical values described in the CSS 2.1 Specification, [section 15.6](https://www.w3.org/TR/CSS21/fonts.html#font-boldness), with non-numerical values disallowed. The default value is `400` (&quot;normal&quot;). The font weight makes up just one component of the rendered font weight. The rendered weight is determined by a combination of the `weight` and the text style&#x27;s resolved `bold` value, after accounting for inheritance: * If the text is bold and the weight is less than `400`, the rendered weight is 400. * If the text is bold and the weight is greater than or equal to `400` but is less than `700`, the rendered weight is `700`. * If the weight is greater than or equal to `700`, the rendered weight is equal to the weight. * If the text is not bold, the rendered weight is equal to the weight.
                    },
                    &quot;underline&quot;: True or False, # Whether or not the text is underlined.
                    &quot;smallCaps&quot;: True or False, # Whether or not the text is in small capital letters.
                  },
                },
                &quot;autoText&quot;: { # A ParagraphElement representing a spot in the text that is dynamically replaced with content that can change over time, like a page number. # An auto text paragraph element.
                  &quot;suggestedDeletionIds&quot;: [ # The suggested deletion IDs. If empty, then there are no suggested deletions of this content.
                    &quot;A String&quot;,
                  ],
                  &quot;suggestedInsertionIds&quot;: [ # The suggested insertion IDs. An AutoText may have multiple insertion IDs if it is a nested suggested change. If empty, then this is not a suggested insertion.
                    &quot;A String&quot;,
                  ],
                  &quot;suggestedTextStyleChanges&quot;: { # The suggested text style changes to this AutoText, keyed by suggestion ID.
                    &quot;a_key&quot;: { # A suggested change to a TextStyle.
                      &quot;textStyleSuggestionState&quot;: { # A mask that indicates which of the fields on the base TextStyle have been changed in this suggestion. For any field set to true, there is a new suggested value. # A mask that indicates which of the fields on the base TextStyle have been changed in this suggestion.
                        &quot;backgroundColorSuggested&quot;: True or False, # Indicates if there was a suggested change to background_color.
                        &quot;fontSizeSuggested&quot;: True or False, # Indicates if there was a suggested change to font_size.
                        &quot;boldSuggested&quot;: True or False, # Indicates if there was a suggested change to bold.
                        &quot;baselineOffsetSuggested&quot;: True or False, # Indicates if there was a suggested change to baseline_offset.
                        &quot;foregroundColorSuggested&quot;: True or False, # Indicates if there was a suggested change to foreground_color.
                        &quot;italicSuggested&quot;: True or False, # Indicates if there was a suggested change to italic.
                        &quot;linkSuggested&quot;: True or False, # Indicates if there was a suggested change to link.
                        &quot;underlineSuggested&quot;: True or False, # Indicates if there was a suggested change to underline.
                        &quot;weightedFontFamilySuggested&quot;: True or False, # Indicates if there was a suggested change to weighted_font_family.
                        &quot;smallCapsSuggested&quot;: True or False, # Indicates if there was a suggested change to small_caps.
                        &quot;strikethroughSuggested&quot;: True or False, # Indicates if there was a suggested change to strikethrough.
                      },
                      &quot;textStyle&quot;: { # Represents the styling that can be applied to text. Inherited text styles are represented as unset fields in this message. A text style&#x27;s parent depends on where the text style is defined: * The TextStyle of text in a Paragraph inherits from the paragraph&#x27;s corresponding named style type. * The TextStyle on a named style inherits from the normal text named style. * The TextStyle of the normal text named style inherits from the default text style in the Docs editor. * The TextStyle on a Paragraph element that is contained in a table may inherit its text style from the table style. If the text style does not inherit from a parent, unsetting fields will revert the style to a value matching the defaults in the Docs editor. # A TextStyle that only includes the changes made in this suggestion. This can be used along with the text_style_suggestion_state to see which fields have changed and their new values.
                        &quot;italic&quot;: True or False, # Whether or not the text is italicized.
                        &quot;baselineOffset&quot;: &quot;A String&quot;, # The text&#x27;s vertical offset from its normal position. Text with `SUPERSCRIPT` or `SUBSCRIPT` baseline offsets is automatically rendered in a smaller font size, computed based on the `font_size` field. The `font_size` itself is not affected by changes in this field.
                        &quot;bold&quot;: True or False, # Whether or not the text is rendered as bold.
                        &quot;fontSize&quot;: { # A magnitude in a single direction in the specified units. # The size of the text&#x27;s font.
                          &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                          &quot;magnitude&quot;: 3.14, # The magnitude.
                        },
                        &quot;foregroundColor&quot;: { # A color that can either be fully opaque or fully transparent. # The foreground color of the text. If set, the color is either an RGB color or transparent, depending on the `color` field.
                          &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                            &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                              &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                              &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                              &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                            },
                          },
                        },
                        &quot;backgroundColor&quot;: { # A color that can either be fully opaque or fully transparent. # The background color of the text. If set, the color is either an RGB color or transparent, depending on the `color` field.
                          &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                            &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                              &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                              &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                              &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                            },
                          },
                        },
                        &quot;link&quot;: { # A reference to another portion of a document or an external URL resource. # The hyperlink destination of the text. If unset, there is no link. Links are not inherited from parent text. Changing the link in an update request causes some other changes to the text style of the range: * When setting a link, the text foreground color will be updated to the default link color and the text will be underlined. If these fields are modified in the same request, those values will be used instead of the link defaults. * Setting a link on a text range that overlaps with an existing link will also update the existing link to point to the new URL. * Links are not settable on newline characters. As a result, setting a link on a text range that crosses a paragraph boundary, such as `&quot;ABC\n123&quot;`, will separate the newline character(s) into their own text runs. The link will be applied separately to the runs before and after the newline. * Removing a link will update the text style of the range to match the style of the preceding text (or the default text styles if the preceding text is another link) unless different styles are being set in the same request.
                          &quot;bookmarkId&quot;: &quot;A String&quot;, # The ID of a bookmark in this document.
                          &quot;url&quot;: &quot;A String&quot;, # An external URL.
                          &quot;headingId&quot;: &quot;A String&quot;, # The ID of a heading in this document.
                        },
                        &quot;strikethrough&quot;: True or False, # Whether or not the text is struck through.
                        &quot;weightedFontFamily&quot;: { # Represents a font family and weight of text. # The font family and rendered weight of the text. If an update request specifies values for both `weighted_font_family` and `bold`, the `weighted_font_family` is applied first, then `bold`. If `weighted_font_family#weight` is not set, it defaults to `400`. If `weighted_font_family` is set, then `weighted_font_family#font_family` must also be set with a non-empty value. Otherwise, a 400 bad request error is returned.
                          &quot;fontFamily&quot;: &quot;A String&quot;, # The font family of the text. The font family can be any font from the Font menu in Docs or from [Google Fonts] (https://fonts.google.com/). If the font name is unrecognized, the text is rendered in `Arial`.
                          &quot;weight&quot;: 42, # The weight of the font. This field can have any value that is a multiple of `100` between `100` and `900`, inclusive. This range corresponds to the numerical values described in the CSS 2.1 Specification, [section 15.6](https://www.w3.org/TR/CSS21/fonts.html#font-boldness), with non-numerical values disallowed. The default value is `400` (&quot;normal&quot;). The font weight makes up just one component of the rendered font weight. The rendered weight is determined by a combination of the `weight` and the text style&#x27;s resolved `bold` value, after accounting for inheritance: * If the text is bold and the weight is less than `400`, the rendered weight is 400. * If the text is bold and the weight is greater than or equal to `400` but is less than `700`, the rendered weight is `700`. * If the weight is greater than or equal to `700`, the rendered weight is equal to the weight. * If the text is not bold, the rendered weight is equal to the weight.
                        },
                        &quot;underline&quot;: True or False, # Whether or not the text is underlined.
                        &quot;smallCaps&quot;: True or False, # Whether or not the text is in small capital letters.
                      },
                    },
                  },
                  &quot;type&quot;: &quot;A String&quot;, # The type of this auto text.
                  &quot;textStyle&quot;: { # Represents the styling that can be applied to text. Inherited text styles are represented as unset fields in this message. A text style&#x27;s parent depends on where the text style is defined: * The TextStyle of text in a Paragraph inherits from the paragraph&#x27;s corresponding named style type. * The TextStyle on a named style inherits from the normal text named style. * The TextStyle of the normal text named style inherits from the default text style in the Docs editor. * The TextStyle on a Paragraph element that is contained in a table may inherit its text style from the table style. If the text style does not inherit from a parent, unsetting fields will revert the style to a value matching the defaults in the Docs editor. # The text style of this AutoText.
                    &quot;italic&quot;: True or False, # Whether or not the text is italicized.
                    &quot;baselineOffset&quot;: &quot;A String&quot;, # The text&#x27;s vertical offset from its normal position. Text with `SUPERSCRIPT` or `SUBSCRIPT` baseline offsets is automatically rendered in a smaller font size, computed based on the `font_size` field. The `font_size` itself is not affected by changes in this field.
                    &quot;bold&quot;: True or False, # Whether or not the text is rendered as bold.
                    &quot;fontSize&quot;: { # A magnitude in a single direction in the specified units. # The size of the text&#x27;s font.
                      &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                      &quot;magnitude&quot;: 3.14, # The magnitude.
                    },
                    &quot;foregroundColor&quot;: { # A color that can either be fully opaque or fully transparent. # The foreground color of the text. If set, the color is either an RGB color or transparent, depending on the `color` field.
                      &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                        &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                          &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                          &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                          &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                        },
                      },
                    },
                    &quot;backgroundColor&quot;: { # A color that can either be fully opaque or fully transparent. # The background color of the text. If set, the color is either an RGB color or transparent, depending on the `color` field.
                      &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                        &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                          &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                          &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                          &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                        },
                      },
                    },
                    &quot;link&quot;: { # A reference to another portion of a document or an external URL resource. # The hyperlink destination of the text. If unset, there is no link. Links are not inherited from parent text. Changing the link in an update request causes some other changes to the text style of the range: * When setting a link, the text foreground color will be updated to the default link color and the text will be underlined. If these fields are modified in the same request, those values will be used instead of the link defaults. * Setting a link on a text range that overlaps with an existing link will also update the existing link to point to the new URL. * Links are not settable on newline characters. As a result, setting a link on a text range that crosses a paragraph boundary, such as `&quot;ABC\n123&quot;`, will separate the newline character(s) into their own text runs. The link will be applied separately to the runs before and after the newline. * Removing a link will update the text style of the range to match the style of the preceding text (or the default text styles if the preceding text is another link) unless different styles are being set in the same request.
                      &quot;bookmarkId&quot;: &quot;A String&quot;, # The ID of a bookmark in this document.
                      &quot;url&quot;: &quot;A String&quot;, # An external URL.
                      &quot;headingId&quot;: &quot;A String&quot;, # The ID of a heading in this document.
                    },
                    &quot;strikethrough&quot;: True or False, # Whether or not the text is struck through.
                    &quot;weightedFontFamily&quot;: { # Represents a font family and weight of text. # The font family and rendered weight of the text. If an update request specifies values for both `weighted_font_family` and `bold`, the `weighted_font_family` is applied first, then `bold`. If `weighted_font_family#weight` is not set, it defaults to `400`. If `weighted_font_family` is set, then `weighted_font_family#font_family` must also be set with a non-empty value. Otherwise, a 400 bad request error is returned.
                      &quot;fontFamily&quot;: &quot;A String&quot;, # The font family of the text. The font family can be any font from the Font menu in Docs or from [Google Fonts] (https://fonts.google.com/). If the font name is unrecognized, the text is rendered in `Arial`.
                      &quot;weight&quot;: 42, # The weight of the font. This field can have any value that is a multiple of `100` between `100` and `900`, inclusive. This range corresponds to the numerical values described in the CSS 2.1 Specification, [section 15.6](https://www.w3.org/TR/CSS21/fonts.html#font-boldness), with non-numerical values disallowed. The default value is `400` (&quot;normal&quot;). The font weight makes up just one component of the rendered font weight. The rendered weight is determined by a combination of the `weight` and the text style&#x27;s resolved `bold` value, after accounting for inheritance: * If the text is bold and the weight is less than `400`, the rendered weight is 400. * If the text is bold and the weight is greater than or equal to `400` but is less than `700`, the rendered weight is `700`. * If the weight is greater than or equal to `700`, the rendered weight is equal to the weight. * If the text is not bold, the rendered weight is equal to the weight.
                    },
                    &quot;underline&quot;: True or False, # Whether or not the text is underlined.
                    &quot;smallCaps&quot;: True or False, # Whether or not the text is in small capital letters.
                  },
                },
                &quot;inlineObjectElement&quot;: { # A ParagraphElement that contains an InlineObject. # An inline object paragraph element.
                  &quot;suggestedDeletionIds&quot;: [ # The suggested deletion IDs. If empty, then there are no suggested deletions of this content.
                    &quot;A String&quot;,
                  ],
                  &quot;suggestedInsertionIds&quot;: [ # The suggested insertion IDs. An InlineObjectElement may have multiple insertion IDs if it is a nested suggested change. If empty, then this is not a suggested insertion.
                    &quot;A String&quot;,
                  ],
                  &quot;suggestedTextStyleChanges&quot;: { # The suggested text style changes to this InlineObject, keyed by suggestion ID.
                    &quot;a_key&quot;: { # A suggested change to a TextStyle.
                      &quot;textStyleSuggestionState&quot;: { # A mask that indicates which of the fields on the base TextStyle have been changed in this suggestion. For any field set to true, there is a new suggested value. # A mask that indicates which of the fields on the base TextStyle have been changed in this suggestion.
                        &quot;backgroundColorSuggested&quot;: True or False, # Indicates if there was a suggested change to background_color.
                        &quot;fontSizeSuggested&quot;: True or False, # Indicates if there was a suggested change to font_size.
                        &quot;boldSuggested&quot;: True or False, # Indicates if there was a suggested change to bold.
                        &quot;baselineOffsetSuggested&quot;: True or False, # Indicates if there was a suggested change to baseline_offset.
                        &quot;foregroundColorSuggested&quot;: True or False, # Indicates if there was a suggested change to foreground_color.
                        &quot;italicSuggested&quot;: True or False, # Indicates if there was a suggested change to italic.
                        &quot;linkSuggested&quot;: True or False, # Indicates if there was a suggested change to link.
                        &quot;underlineSuggested&quot;: True or False, # Indicates if there was a suggested change to underline.
                        &quot;weightedFontFamilySuggested&quot;: True or False, # Indicates if there was a suggested change to weighted_font_family.
                        &quot;smallCapsSuggested&quot;: True or False, # Indicates if there was a suggested change to small_caps.
                        &quot;strikethroughSuggested&quot;: True or False, # Indicates if there was a suggested change to strikethrough.
                      },
                      &quot;textStyle&quot;: { # Represents the styling that can be applied to text. Inherited text styles are represented as unset fields in this message. A text style&#x27;s parent depends on where the text style is defined: * The TextStyle of text in a Paragraph inherits from the paragraph&#x27;s corresponding named style type. * The TextStyle on a named style inherits from the normal text named style. * The TextStyle of the normal text named style inherits from the default text style in the Docs editor. * The TextStyle on a Paragraph element that is contained in a table may inherit its text style from the table style. If the text style does not inherit from a parent, unsetting fields will revert the style to a value matching the defaults in the Docs editor. # A TextStyle that only includes the changes made in this suggestion. This can be used along with the text_style_suggestion_state to see which fields have changed and their new values.
                        &quot;italic&quot;: True or False, # Whether or not the text is italicized.
                        &quot;baselineOffset&quot;: &quot;A String&quot;, # The text&#x27;s vertical offset from its normal position. Text with `SUPERSCRIPT` or `SUBSCRIPT` baseline offsets is automatically rendered in a smaller font size, computed based on the `font_size` field. The `font_size` itself is not affected by changes in this field.
                        &quot;bold&quot;: True or False, # Whether or not the text is rendered as bold.
                        &quot;fontSize&quot;: { # A magnitude in a single direction in the specified units. # The size of the text&#x27;s font.
                          &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                          &quot;magnitude&quot;: 3.14, # The magnitude.
                        },
                        &quot;foregroundColor&quot;: { # A color that can either be fully opaque or fully transparent. # The foreground color of the text. If set, the color is either an RGB color or transparent, depending on the `color` field.
                          &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                            &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                              &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                              &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                              &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                            },
                          },
                        },
                        &quot;backgroundColor&quot;: { # A color that can either be fully opaque or fully transparent. # The background color of the text. If set, the color is either an RGB color or transparent, depending on the `color` field.
                          &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                            &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                              &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                              &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                              &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                            },
                          },
                        },
                        &quot;link&quot;: { # A reference to another portion of a document or an external URL resource. # The hyperlink destination of the text. If unset, there is no link. Links are not inherited from parent text. Changing the link in an update request causes some other changes to the text style of the range: * When setting a link, the text foreground color will be updated to the default link color and the text will be underlined. If these fields are modified in the same request, those values will be used instead of the link defaults. * Setting a link on a text range that overlaps with an existing link will also update the existing link to point to the new URL. * Links are not settable on newline characters. As a result, setting a link on a text range that crosses a paragraph boundary, such as `&quot;ABC\n123&quot;`, will separate the newline character(s) into their own text runs. The link will be applied separately to the runs before and after the newline. * Removing a link will update the text style of the range to match the style of the preceding text (or the default text styles if the preceding text is another link) unless different styles are being set in the same request.
                          &quot;bookmarkId&quot;: &quot;A String&quot;, # The ID of a bookmark in this document.
                          &quot;url&quot;: &quot;A String&quot;, # An external URL.
                          &quot;headingId&quot;: &quot;A String&quot;, # The ID of a heading in this document.
                        },
                        &quot;strikethrough&quot;: True or False, # Whether or not the text is struck through.
                        &quot;weightedFontFamily&quot;: { # Represents a font family and weight of text. # The font family and rendered weight of the text. If an update request specifies values for both `weighted_font_family` and `bold`, the `weighted_font_family` is applied first, then `bold`. If `weighted_font_family#weight` is not set, it defaults to `400`. If `weighted_font_family` is set, then `weighted_font_family#font_family` must also be set with a non-empty value. Otherwise, a 400 bad request error is returned.
                          &quot;fontFamily&quot;: &quot;A String&quot;, # The font family of the text. The font family can be any font from the Font menu in Docs or from [Google Fonts] (https://fonts.google.com/). If the font name is unrecognized, the text is rendered in `Arial`.
                          &quot;weight&quot;: 42, # The weight of the font. This field can have any value that is a multiple of `100` between `100` and `900`, inclusive. This range corresponds to the numerical values described in the CSS 2.1 Specification, [section 15.6](https://www.w3.org/TR/CSS21/fonts.html#font-boldness), with non-numerical values disallowed. The default value is `400` (&quot;normal&quot;). The font weight makes up just one component of the rendered font weight. The rendered weight is determined by a combination of the `weight` and the text style&#x27;s resolved `bold` value, after accounting for inheritance: * If the text is bold and the weight is less than `400`, the rendered weight is 400. * If the text is bold and the weight is greater than or equal to `400` but is less than `700`, the rendered weight is `700`. * If the weight is greater than or equal to `700`, the rendered weight is equal to the weight. * If the text is not bold, the rendered weight is equal to the weight.
                        },
                        &quot;underline&quot;: True or False, # Whether or not the text is underlined.
                        &quot;smallCaps&quot;: True or False, # Whether or not the text is in small capital letters.
                      },
                    },
                  },
                  &quot;inlineObjectId&quot;: &quot;A String&quot;, # The ID of the InlineObject this element contains.
                  &quot;textStyle&quot;: { # Represents the styling that can be applied to text. Inherited text styles are represented as unset fields in this message. A text style&#x27;s parent depends on where the text style is defined: * The TextStyle of text in a Paragraph inherits from the paragraph&#x27;s corresponding named style type. * The TextStyle on a named style inherits from the normal text named style. * The TextStyle of the normal text named style inherits from the default text style in the Docs editor. * The TextStyle on a Paragraph element that is contained in a table may inherit its text style from the table style. If the text style does not inherit from a parent, unsetting fields will revert the style to a value matching the defaults in the Docs editor. # The text style of this InlineObjectElement. Similar to text content, like text runs and footnote references, the text style of an inline object element can affect content layout as well as the styling of text inserted adjacent to it.
                    &quot;italic&quot;: True or False, # Whether or not the text is italicized.
                    &quot;baselineOffset&quot;: &quot;A String&quot;, # The text&#x27;s vertical offset from its normal position. Text with `SUPERSCRIPT` or `SUBSCRIPT` baseline offsets is automatically rendered in a smaller font size, computed based on the `font_size` field. The `font_size` itself is not affected by changes in this field.
                    &quot;bold&quot;: True or False, # Whether or not the text is rendered as bold.
                    &quot;fontSize&quot;: { # A magnitude in a single direction in the specified units. # The size of the text&#x27;s font.
                      &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                      &quot;magnitude&quot;: 3.14, # The magnitude.
                    },
                    &quot;foregroundColor&quot;: { # A color that can either be fully opaque or fully transparent. # The foreground color of the text. If set, the color is either an RGB color or transparent, depending on the `color` field.
                      &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                        &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                          &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                          &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                          &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                        },
                      },
                    },
                    &quot;backgroundColor&quot;: { # A color that can either be fully opaque or fully transparent. # The background color of the text. If set, the color is either an RGB color or transparent, depending on the `color` field.
                      &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                        &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                          &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                          &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                          &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                        },
                      },
                    },
                    &quot;link&quot;: { # A reference to another portion of a document or an external URL resource. # The hyperlink destination of the text. If unset, there is no link. Links are not inherited from parent text. Changing the link in an update request causes some other changes to the text style of the range: * When setting a link, the text foreground color will be updated to the default link color and the text will be underlined. If these fields are modified in the same request, those values will be used instead of the link defaults. * Setting a link on a text range that overlaps with an existing link will also update the existing link to point to the new URL. * Links are not settable on newline characters. As a result, setting a link on a text range that crosses a paragraph boundary, such as `&quot;ABC\n123&quot;`, will separate the newline character(s) into their own text runs. The link will be applied separately to the runs before and after the newline. * Removing a link will update the text style of the range to match the style of the preceding text (or the default text styles if the preceding text is another link) unless different styles are being set in the same request.
                      &quot;bookmarkId&quot;: &quot;A String&quot;, # The ID of a bookmark in this document.
                      &quot;url&quot;: &quot;A String&quot;, # An external URL.
                      &quot;headingId&quot;: &quot;A String&quot;, # The ID of a heading in this document.
                    },
                    &quot;strikethrough&quot;: True or False, # Whether or not the text is struck through.
                    &quot;weightedFontFamily&quot;: { # Represents a font family and weight of text. # The font family and rendered weight of the text. If an update request specifies values for both `weighted_font_family` and `bold`, the `weighted_font_family` is applied first, then `bold`. If `weighted_font_family#weight` is not set, it defaults to `400`. If `weighted_font_family` is set, then `weighted_font_family#font_family` must also be set with a non-empty value. Otherwise, a 400 bad request error is returned.
                      &quot;fontFamily&quot;: &quot;A String&quot;, # The font family of the text. The font family can be any font from the Font menu in Docs or from [Google Fonts] (https://fonts.google.com/). If the font name is unrecognized, the text is rendered in `Arial`.
                      &quot;weight&quot;: 42, # The weight of the font. This field can have any value that is a multiple of `100` between `100` and `900`, inclusive. This range corresponds to the numerical values described in the CSS 2.1 Specification, [section 15.6](https://www.w3.org/TR/CSS21/fonts.html#font-boldness), with non-numerical values disallowed. The default value is `400` (&quot;normal&quot;). The font weight makes up just one component of the rendered font weight. The rendered weight is determined by a combination of the `weight` and the text style&#x27;s resolved `bold` value, after accounting for inheritance: * If the text is bold and the weight is less than `400`, the rendered weight is 400. * If the text is bold and the weight is greater than or equal to `400` but is less than `700`, the rendered weight is `700`. * If the weight is greater than or equal to `700`, the rendered weight is equal to the weight. * If the text is not bold, the rendered weight is equal to the weight.
                    },
                    &quot;underline&quot;: True or False, # Whether or not the text is underlined.
                    &quot;smallCaps&quot;: True or False, # Whether or not the text is in small capital letters.
                  },
                },
                &quot;footnoteReference&quot;: { # A ParagraphElement representing a footnote reference. A footnote reference is the inline content rendered with a number and is used to identify the footnote. # A footnote reference paragraph element.
                  &quot;footnoteId&quot;: &quot;A String&quot;, # The ID of the footnote that contains the content of this footnote reference.
                  &quot;suggestedInsertionIds&quot;: [ # The suggested insertion IDs. A FootnoteReference may have multiple insertion IDs if it is a nested suggested change. If empty, then this is not a suggested insertion.
                    &quot;A String&quot;,
                  ],
                  &quot;footnoteNumber&quot;: &quot;A String&quot;, # The rendered number of this footnote.
                  &quot;suggestedDeletionIds&quot;: [ # The suggested deletion IDs. If empty, then there are no suggested deletions of this content.
                    &quot;A String&quot;,
                  ],
                  &quot;suggestedTextStyleChanges&quot;: { # The suggested text style changes to this FootnoteReference, keyed by suggestion ID.
                    &quot;a_key&quot;: { # A suggested change to a TextStyle.
                      &quot;textStyleSuggestionState&quot;: { # A mask that indicates which of the fields on the base TextStyle have been changed in this suggestion. For any field set to true, there is a new suggested value. # A mask that indicates which of the fields on the base TextStyle have been changed in this suggestion.
                        &quot;backgroundColorSuggested&quot;: True or False, # Indicates if there was a suggested change to background_color.
                        &quot;fontSizeSuggested&quot;: True or False, # Indicates if there was a suggested change to font_size.
                        &quot;boldSuggested&quot;: True or False, # Indicates if there was a suggested change to bold.
                        &quot;baselineOffsetSuggested&quot;: True or False, # Indicates if there was a suggested change to baseline_offset.
                        &quot;foregroundColorSuggested&quot;: True or False, # Indicates if there was a suggested change to foreground_color.
                        &quot;italicSuggested&quot;: True or False, # Indicates if there was a suggested change to italic.
                        &quot;linkSuggested&quot;: True or False, # Indicates if there was a suggested change to link.
                        &quot;underlineSuggested&quot;: True or False, # Indicates if there was a suggested change to underline.
                        &quot;weightedFontFamilySuggested&quot;: True or False, # Indicates if there was a suggested change to weighted_font_family.
                        &quot;smallCapsSuggested&quot;: True or False, # Indicates if there was a suggested change to small_caps.
                        &quot;strikethroughSuggested&quot;: True or False, # Indicates if there was a suggested change to strikethrough.
                      },
                      &quot;textStyle&quot;: { # Represents the styling that can be applied to text. Inherited text styles are represented as unset fields in this message. A text style&#x27;s parent depends on where the text style is defined: * The TextStyle of text in a Paragraph inherits from the paragraph&#x27;s corresponding named style type. * The TextStyle on a named style inherits from the normal text named style. * The TextStyle of the normal text named style inherits from the default text style in the Docs editor. * The TextStyle on a Paragraph element that is contained in a table may inherit its text style from the table style. If the text style does not inherit from a parent, unsetting fields will revert the style to a value matching the defaults in the Docs editor. # A TextStyle that only includes the changes made in this suggestion. This can be used along with the text_style_suggestion_state to see which fields have changed and their new values.
                        &quot;italic&quot;: True or False, # Whether or not the text is italicized.
                        &quot;baselineOffset&quot;: &quot;A String&quot;, # The text&#x27;s vertical offset from its normal position. Text with `SUPERSCRIPT` or `SUBSCRIPT` baseline offsets is automatically rendered in a smaller font size, computed based on the `font_size` field. The `font_size` itself is not affected by changes in this field.
                        &quot;bold&quot;: True or False, # Whether or not the text is rendered as bold.
                        &quot;fontSize&quot;: { # A magnitude in a single direction in the specified units. # The size of the text&#x27;s font.
                          &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                          &quot;magnitude&quot;: 3.14, # The magnitude.
                        },
                        &quot;foregroundColor&quot;: { # A color that can either be fully opaque or fully transparent. # The foreground color of the text. If set, the color is either an RGB color or transparent, depending on the `color` field.
                          &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                            &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                              &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                              &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                              &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                            },
                          },
                        },
                        &quot;backgroundColor&quot;: { # A color that can either be fully opaque or fully transparent. # The background color of the text. If set, the color is either an RGB color or transparent, depending on the `color` field.
                          &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                            &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                              &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                              &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                              &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                            },
                          },
                        },
                        &quot;link&quot;: { # A reference to another portion of a document or an external URL resource. # The hyperlink destination of the text. If unset, there is no link. Links are not inherited from parent text. Changing the link in an update request causes some other changes to the text style of the range: * When setting a link, the text foreground color will be updated to the default link color and the text will be underlined. If these fields are modified in the same request, those values will be used instead of the link defaults. * Setting a link on a text range that overlaps with an existing link will also update the existing link to point to the new URL. * Links are not settable on newline characters. As a result, setting a link on a text range that crosses a paragraph boundary, such as `&quot;ABC\n123&quot;`, will separate the newline character(s) into their own text runs. The link will be applied separately to the runs before and after the newline. * Removing a link will update the text style of the range to match the style of the preceding text (or the default text styles if the preceding text is another link) unless different styles are being set in the same request.
                          &quot;bookmarkId&quot;: &quot;A String&quot;, # The ID of a bookmark in this document.
                          &quot;url&quot;: &quot;A String&quot;, # An external URL.
                          &quot;headingId&quot;: &quot;A String&quot;, # The ID of a heading in this document.
                        },
                        &quot;strikethrough&quot;: True or False, # Whether or not the text is struck through.
                        &quot;weightedFontFamily&quot;: { # Represents a font family and weight of text. # The font family and rendered weight of the text. If an update request specifies values for both `weighted_font_family` and `bold`, the `weighted_font_family` is applied first, then `bold`. If `weighted_font_family#weight` is not set, it defaults to `400`. If `weighted_font_family` is set, then `weighted_font_family#font_family` must also be set with a non-empty value. Otherwise, a 400 bad request error is returned.
                          &quot;fontFamily&quot;: &quot;A String&quot;, # The font family of the text. The font family can be any font from the Font menu in Docs or from [Google Fonts] (https://fonts.google.com/). If the font name is unrecognized, the text is rendered in `Arial`.
                          &quot;weight&quot;: 42, # The weight of the font. This field can have any value that is a multiple of `100` between `100` and `900`, inclusive. This range corresponds to the numerical values described in the CSS 2.1 Specification, [section 15.6](https://www.w3.org/TR/CSS21/fonts.html#font-boldness), with non-numerical values disallowed. The default value is `400` (&quot;normal&quot;). The font weight makes up just one component of the rendered font weight. The rendered weight is determined by a combination of the `weight` and the text style&#x27;s resolved `bold` value, after accounting for inheritance: * If the text is bold and the weight is less than `400`, the rendered weight is 400. * If the text is bold and the weight is greater than or equal to `400` but is less than `700`, the rendered weight is `700`. * If the weight is greater than or equal to `700`, the rendered weight is equal to the weight. * If the text is not bold, the rendered weight is equal to the weight.
                        },
                        &quot;underline&quot;: True or False, # Whether or not the text is underlined.
                        &quot;smallCaps&quot;: True or False, # Whether or not the text is in small capital letters.
                      },
                    },
                  },
                  &quot;textStyle&quot;: { # Represents the styling that can be applied to text. Inherited text styles are represented as unset fields in this message. A text style&#x27;s parent depends on where the text style is defined: * The TextStyle of text in a Paragraph inherits from the paragraph&#x27;s corresponding named style type. * The TextStyle on a named style inherits from the normal text named style. * The TextStyle of the normal text named style inherits from the default text style in the Docs editor. * The TextStyle on a Paragraph element that is contained in a table may inherit its text style from the table style. If the text style does not inherit from a parent, unsetting fields will revert the style to a value matching the defaults in the Docs editor. # The text style of this FootnoteReference.
                    &quot;italic&quot;: True or False, # Whether or not the text is italicized.
                    &quot;baselineOffset&quot;: &quot;A String&quot;, # The text&#x27;s vertical offset from its normal position. Text with `SUPERSCRIPT` or `SUBSCRIPT` baseline offsets is automatically rendered in a smaller font size, computed based on the `font_size` field. The `font_size` itself is not affected by changes in this field.
                    &quot;bold&quot;: True or False, # Whether or not the text is rendered as bold.
                    &quot;fontSize&quot;: { # A magnitude in a single direction in the specified units. # The size of the text&#x27;s font.
                      &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                      &quot;magnitude&quot;: 3.14, # The magnitude.
                    },
                    &quot;foregroundColor&quot;: { # A color that can either be fully opaque or fully transparent. # The foreground color of the text. If set, the color is either an RGB color or transparent, depending on the `color` field.
                      &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                        &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                          &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                          &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                          &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                        },
                      },
                    },
                    &quot;backgroundColor&quot;: { # A color that can either be fully opaque or fully transparent. # The background color of the text. If set, the color is either an RGB color or transparent, depending on the `color` field.
                      &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                        &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                          &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                          &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                          &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                        },
                      },
                    },
                    &quot;link&quot;: { # A reference to another portion of a document or an external URL resource. # The hyperlink destination of the text. If unset, there is no link. Links are not inherited from parent text. Changing the link in an update request causes some other changes to the text style of the range: * When setting a link, the text foreground color will be updated to the default link color and the text will be underlined. If these fields are modified in the same request, those values will be used instead of the link defaults. * Setting a link on a text range that overlaps with an existing link will also update the existing link to point to the new URL. * Links are not settable on newline characters. As a result, setting a link on a text range that crosses a paragraph boundary, such as `&quot;ABC\n123&quot;`, will separate the newline character(s) into their own text runs. The link will be applied separately to the runs before and after the newline. * Removing a link will update the text style of the range to match the style of the preceding text (or the default text styles if the preceding text is another link) unless different styles are being set in the same request.
                      &quot;bookmarkId&quot;: &quot;A String&quot;, # The ID of a bookmark in this document.
                      &quot;url&quot;: &quot;A String&quot;, # An external URL.
                      &quot;headingId&quot;: &quot;A String&quot;, # The ID of a heading in this document.
                    },
                    &quot;strikethrough&quot;: True or False, # Whether or not the text is struck through.
                    &quot;weightedFontFamily&quot;: { # Represents a font family and weight of text. # The font family and rendered weight of the text. If an update request specifies values for both `weighted_font_family` and `bold`, the `weighted_font_family` is applied first, then `bold`. If `weighted_font_family#weight` is not set, it defaults to `400`. If `weighted_font_family` is set, then `weighted_font_family#font_family` must also be set with a non-empty value. Otherwise, a 400 bad request error is returned.
                      &quot;fontFamily&quot;: &quot;A String&quot;, # The font family of the text. The font family can be any font from the Font menu in Docs or from [Google Fonts] (https://fonts.google.com/). If the font name is unrecognized, the text is rendered in `Arial`.
                      &quot;weight&quot;: 42, # The weight of the font. This field can have any value that is a multiple of `100` between `100` and `900`, inclusive. This range corresponds to the numerical values described in the CSS 2.1 Specification, [section 15.6](https://www.w3.org/TR/CSS21/fonts.html#font-boldness), with non-numerical values disallowed. The default value is `400` (&quot;normal&quot;). The font weight makes up just one component of the rendered font weight. The rendered weight is determined by a combination of the `weight` and the text style&#x27;s resolved `bold` value, after accounting for inheritance: * If the text is bold and the weight is less than `400`, the rendered weight is 400. * If the text is bold and the weight is greater than or equal to `400` but is less than `700`, the rendered weight is `700`. * If the weight is greater than or equal to `700`, the rendered weight is equal to the weight. * If the text is not bold, the rendered weight is equal to the weight.
                    },
                    &quot;underline&quot;: True or False, # Whether or not the text is underlined.
                    &quot;smallCaps&quot;: True or False, # Whether or not the text is in small capital letters.
                  },
                },
                &quot;startIndex&quot;: 42, # The zero-based start index of this paragraph element, in UTF-16 code units.
                &quot;endIndex&quot;: 42, # The zero-base end index of this paragraph element, exclusive, in UTF-16 code units.
                &quot;equation&quot;: { # A ParagraphElement representing an equation. # An equation paragraph element.
                  &quot;suggestedDeletionIds&quot;: [ # The suggested deletion IDs. If empty, then there are no suggested deletions of this content.
                    &quot;A String&quot;,
                  ],
                  &quot;suggestedInsertionIds&quot;: [ # The suggested insertion IDs. A Equation may have multiple insertion IDs if it is a nested suggested change. If empty, then this is not a suggested insertion.
                    &quot;A String&quot;,
                  ],
                },
                &quot;columnBreak&quot;: { # A ParagraphElement representing a column break. A column break makes the subsequent text start at the top of the next column. # A column break paragraph element.
                  &quot;suggestedTextStyleChanges&quot;: { # The suggested text style changes to this ColumnBreak, keyed by suggestion ID.
                    &quot;a_key&quot;: { # A suggested change to a TextStyle.
                      &quot;textStyleSuggestionState&quot;: { # A mask that indicates which of the fields on the base TextStyle have been changed in this suggestion. For any field set to true, there is a new suggested value. # A mask that indicates which of the fields on the base TextStyle have been changed in this suggestion.
                        &quot;backgroundColorSuggested&quot;: True or False, # Indicates if there was a suggested change to background_color.
                        &quot;fontSizeSuggested&quot;: True or False, # Indicates if there was a suggested change to font_size.
                        &quot;boldSuggested&quot;: True or False, # Indicates if there was a suggested change to bold.
                        &quot;baselineOffsetSuggested&quot;: True or False, # Indicates if there was a suggested change to baseline_offset.
                        &quot;foregroundColorSuggested&quot;: True or False, # Indicates if there was a suggested change to foreground_color.
                        &quot;italicSuggested&quot;: True or False, # Indicates if there was a suggested change to italic.
                        &quot;linkSuggested&quot;: True or False, # Indicates if there was a suggested change to link.
                        &quot;underlineSuggested&quot;: True or False, # Indicates if there was a suggested change to underline.
                        &quot;weightedFontFamilySuggested&quot;: True or False, # Indicates if there was a suggested change to weighted_font_family.
                        &quot;smallCapsSuggested&quot;: True or False, # Indicates if there was a suggested change to small_caps.
                        &quot;strikethroughSuggested&quot;: True or False, # Indicates if there was a suggested change to strikethrough.
                      },
                      &quot;textStyle&quot;: { # Represents the styling that can be applied to text. Inherited text styles are represented as unset fields in this message. A text style&#x27;s parent depends on where the text style is defined: * The TextStyle of text in a Paragraph inherits from the paragraph&#x27;s corresponding named style type. * The TextStyle on a named style inherits from the normal text named style. * The TextStyle of the normal text named style inherits from the default text style in the Docs editor. * The TextStyle on a Paragraph element that is contained in a table may inherit its text style from the table style. If the text style does not inherit from a parent, unsetting fields will revert the style to a value matching the defaults in the Docs editor. # A TextStyle that only includes the changes made in this suggestion. This can be used along with the text_style_suggestion_state to see which fields have changed and their new values.
                        &quot;italic&quot;: True or False, # Whether or not the text is italicized.
                        &quot;baselineOffset&quot;: &quot;A String&quot;, # The text&#x27;s vertical offset from its normal position. Text with `SUPERSCRIPT` or `SUBSCRIPT` baseline offsets is automatically rendered in a smaller font size, computed based on the `font_size` field. The `font_size` itself is not affected by changes in this field.
                        &quot;bold&quot;: True or False, # Whether or not the text is rendered as bold.
                        &quot;fontSize&quot;: { # A magnitude in a single direction in the specified units. # The size of the text&#x27;s font.
                          &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                          &quot;magnitude&quot;: 3.14, # The magnitude.
                        },
                        &quot;foregroundColor&quot;: { # A color that can either be fully opaque or fully transparent. # The foreground color of the text. If set, the color is either an RGB color or transparent, depending on the `color` field.
                          &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                            &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                              &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                              &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                              &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                            },
                          },
                        },
                        &quot;backgroundColor&quot;: { # A color that can either be fully opaque or fully transparent. # The background color of the text. If set, the color is either an RGB color or transparent, depending on the `color` field.
                          &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                            &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                              &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                              &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                              &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                            },
                          },
                        },
                        &quot;link&quot;: { # A reference to another portion of a document or an external URL resource. # The hyperlink destination of the text. If unset, there is no link. Links are not inherited from parent text. Changing the link in an update request causes some other changes to the text style of the range: * When setting a link, the text foreground color will be updated to the default link color and the text will be underlined. If these fields are modified in the same request, those values will be used instead of the link defaults. * Setting a link on a text range that overlaps with an existing link will also update the existing link to point to the new URL. * Links are not settable on newline characters. As a result, setting a link on a text range that crosses a paragraph boundary, such as `&quot;ABC\n123&quot;`, will separate the newline character(s) into their own text runs. The link will be applied separately to the runs before and after the newline. * Removing a link will update the text style of the range to match the style of the preceding text (or the default text styles if the preceding text is another link) unless different styles are being set in the same request.
                          &quot;bookmarkId&quot;: &quot;A String&quot;, # The ID of a bookmark in this document.
                          &quot;url&quot;: &quot;A String&quot;, # An external URL.
                          &quot;headingId&quot;: &quot;A String&quot;, # The ID of a heading in this document.
                        },
                        &quot;strikethrough&quot;: True or False, # Whether or not the text is struck through.
                        &quot;weightedFontFamily&quot;: { # Represents a font family and weight of text. # The font family and rendered weight of the text. If an update request specifies values for both `weighted_font_family` and `bold`, the `weighted_font_family` is applied first, then `bold`. If `weighted_font_family#weight` is not set, it defaults to `400`. If `weighted_font_family` is set, then `weighted_font_family#font_family` must also be set with a non-empty value. Otherwise, a 400 bad request error is returned.
                          &quot;fontFamily&quot;: &quot;A String&quot;, # The font family of the text. The font family can be any font from the Font menu in Docs or from [Google Fonts] (https://fonts.google.com/). If the font name is unrecognized, the text is rendered in `Arial`.
                          &quot;weight&quot;: 42, # The weight of the font. This field can have any value that is a multiple of `100` between `100` and `900`, inclusive. This range corresponds to the numerical values described in the CSS 2.1 Specification, [section 15.6](https://www.w3.org/TR/CSS21/fonts.html#font-boldness), with non-numerical values disallowed. The default value is `400` (&quot;normal&quot;). The font weight makes up just one component of the rendered font weight. The rendered weight is determined by a combination of the `weight` and the text style&#x27;s resolved `bold` value, after accounting for inheritance: * If the text is bold and the weight is less than `400`, the rendered weight is 400. * If the text is bold and the weight is greater than or equal to `400` but is less than `700`, the rendered weight is `700`. * If the weight is greater than or equal to `700`, the rendered weight is equal to the weight. * If the text is not bold, the rendered weight is equal to the weight.
                        },
                        &quot;underline&quot;: True or False, # Whether or not the text is underlined.
                        &quot;smallCaps&quot;: True or False, # Whether or not the text is in small capital letters.
                      },
                    },
                  },
                  &quot;suggestedDeletionIds&quot;: [ # The suggested deletion IDs. If empty, then there are no suggested deletions of this content.
                    &quot;A String&quot;,
                  ],
                  &quot;textStyle&quot;: { # Represents the styling that can be applied to text. Inherited text styles are represented as unset fields in this message. A text style&#x27;s parent depends on where the text style is defined: * The TextStyle of text in a Paragraph inherits from the paragraph&#x27;s corresponding named style type. * The TextStyle on a named style inherits from the normal text named style. * The TextStyle of the normal text named style inherits from the default text style in the Docs editor. * The TextStyle on a Paragraph element that is contained in a table may inherit its text style from the table style. If the text style does not inherit from a parent, unsetting fields will revert the style to a value matching the defaults in the Docs editor. # The text style of this ColumnBreak. Similar to text content, like text runs and footnote references, the text style of a column break can affect content layout as well as the styling of text inserted adjacent to it.
                    &quot;italic&quot;: True or False, # Whether or not the text is italicized.
                    &quot;baselineOffset&quot;: &quot;A String&quot;, # The text&#x27;s vertical offset from its normal position. Text with `SUPERSCRIPT` or `SUBSCRIPT` baseline offsets is automatically rendered in a smaller font size, computed based on the `font_size` field. The `font_size` itself is not affected by changes in this field.
                    &quot;bold&quot;: True or False, # Whether or not the text is rendered as bold.
                    &quot;fontSize&quot;: { # A magnitude in a single direction in the specified units. # The size of the text&#x27;s font.
                      &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                      &quot;magnitude&quot;: 3.14, # The magnitude.
                    },
                    &quot;foregroundColor&quot;: { # A color that can either be fully opaque or fully transparent. # The foreground color of the text. If set, the color is either an RGB color or transparent, depending on the `color` field.
                      &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                        &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                          &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                          &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                          &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                        },
                      },
                    },
                    &quot;backgroundColor&quot;: { # A color that can either be fully opaque or fully transparent. # The background color of the text. If set, the color is either an RGB color or transparent, depending on the `color` field.
                      &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                        &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                          &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                          &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                          &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                        },
                      },
                    },
                    &quot;link&quot;: { # A reference to another portion of a document or an external URL resource. # The hyperlink destination of the text. If unset, there is no link. Links are not inherited from parent text. Changing the link in an update request causes some other changes to the text style of the range: * When setting a link, the text foreground color will be updated to the default link color and the text will be underlined. If these fields are modified in the same request, those values will be used instead of the link defaults. * Setting a link on a text range that overlaps with an existing link will also update the existing link to point to the new URL. * Links are not settable on newline characters. As a result, setting a link on a text range that crosses a paragraph boundary, such as `&quot;ABC\n123&quot;`, will separate the newline character(s) into their own text runs. The link will be applied separately to the runs before and after the newline. * Removing a link will update the text style of the range to match the style of the preceding text (or the default text styles if the preceding text is another link) unless different styles are being set in the same request.
                      &quot;bookmarkId&quot;: &quot;A String&quot;, # The ID of a bookmark in this document.
                      &quot;url&quot;: &quot;A String&quot;, # An external URL.
                      &quot;headingId&quot;: &quot;A String&quot;, # The ID of a heading in this document.
                    },
                    &quot;strikethrough&quot;: True or False, # Whether or not the text is struck through.
                    &quot;weightedFontFamily&quot;: { # Represents a font family and weight of text. # The font family and rendered weight of the text. If an update request specifies values for both `weighted_font_family` and `bold`, the `weighted_font_family` is applied first, then `bold`. If `weighted_font_family#weight` is not set, it defaults to `400`. If `weighted_font_family` is set, then `weighted_font_family#font_family` must also be set with a non-empty value. Otherwise, a 400 bad request error is returned.
                      &quot;fontFamily&quot;: &quot;A String&quot;, # The font family of the text. The font family can be any font from the Font menu in Docs or from [Google Fonts] (https://fonts.google.com/). If the font name is unrecognized, the text is rendered in `Arial`.
                      &quot;weight&quot;: 42, # The weight of the font. This field can have any value that is a multiple of `100` between `100` and `900`, inclusive. This range corresponds to the numerical values described in the CSS 2.1 Specification, [section 15.6](https://www.w3.org/TR/CSS21/fonts.html#font-boldness), with non-numerical values disallowed. The default value is `400` (&quot;normal&quot;). The font weight makes up just one component of the rendered font weight. The rendered weight is determined by a combination of the `weight` and the text style&#x27;s resolved `bold` value, after accounting for inheritance: * If the text is bold and the weight is less than `400`, the rendered weight is 400. * If the text is bold and the weight is greater than or equal to `400` but is less than `700`, the rendered weight is `700`. * If the weight is greater than or equal to `700`, the rendered weight is equal to the weight. * If the text is not bold, the rendered weight is equal to the weight.
                    },
                    &quot;underline&quot;: True or False, # Whether or not the text is underlined.
                    &quot;smallCaps&quot;: True or False, # Whether or not the text is in small capital letters.
                  },
                  &quot;suggestedInsertionIds&quot;: [ # The suggested insertion IDs. A ColumnBreak may have multiple insertion IDs if it is a nested suggested change. If empty, then this is not a suggested insertion.
                    &quot;A String&quot;,
                  ],
                },
              },
            ],
            &quot;positionedObjectIds&quot;: [ # The IDs of the positioned objects tethered to this paragraph.
              &quot;A String&quot;,
            ],
            &quot;paragraphStyle&quot;: { # Styles that apply to a whole paragraph. Inherited paragraph styles are represented as unset fields in this message. A paragraph style&#x27;s parent depends on where the paragraph style is defined: * The ParagraphStyle on a Paragraph inherits from the paragraph&#x27;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 is 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. # The style of this paragraph.
              &quot;borderRight&quot;: { # A border around a paragraph. # The border to the right of this paragraph. If unset, the value is inherited from the parent. Paragraph borders cannot be partially updated. When making changes to a paragraph border the new border must be specified in its entirety.
                &quot;color&quot;: { # A color that can either be fully opaque or fully transparent. # The color of the border.
                  &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                    &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                      &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                      &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                      &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                    },
                  },
                },
                &quot;width&quot;: { # A magnitude in a single direction in the specified units. # The width of the border.
                  &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                  &quot;magnitude&quot;: 3.14, # The magnitude.
                },
                &quot;padding&quot;: { # A magnitude in a single direction in the specified units. # The padding of the border.
                  &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                  &quot;magnitude&quot;: 3.14, # The magnitude.
                },
                &quot;dashStyle&quot;: &quot;A String&quot;, # The dash style of the border.
              },
              &quot;indentFirstLine&quot;: { # A magnitude in a single direction in the specified units. # The amount of indentation for the first line of the paragraph. If unset, the value is inherited from the parent.
                &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                &quot;magnitude&quot;: 3.14, # The magnitude.
              },
              &quot;alignment&quot;: &quot;A String&quot;, # The text alignment for this paragraph.
              &quot;lineSpacing&quot;: 3.14, # The amount of space between lines, as a percentage of normal, where normal is represented as 100.0. If unset, the value is inherited from the parent.
              &quot;keepLinesTogether&quot;: True or False, # Whether all lines of the paragraph should be laid out on the same page or column if possible. If unset, the value is inherited from the parent.
              &quot;avoidWidowAndOrphan&quot;: True or False, # Whether to avoid widows and orphans for the paragraph. If unset, the value is inherited from the parent.
              &quot;spaceBelow&quot;: { # A magnitude in a single direction in the specified units. # The amount of extra space below the paragraph. If unset, the value is inherited from the parent.
                &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                &quot;magnitude&quot;: 3.14, # The magnitude.
              },
              &quot;borderBetween&quot;: { # A border around a paragraph. # 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 making changes to a paragraph border the new border must be specified in its entirety.
                &quot;color&quot;: { # A color that can either be fully opaque or fully transparent. # The color of the border.
                  &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                    &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                      &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                      &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                      &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                    },
                  },
                },
                &quot;width&quot;: { # A magnitude in a single direction in the specified units. # The width of the border.
                  &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                  &quot;magnitude&quot;: 3.14, # The magnitude.
                },
                &quot;padding&quot;: { # A magnitude in a single direction in the specified units. # The padding of the border.
                  &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                  &quot;magnitude&quot;: 3.14, # The magnitude.
                },
                &quot;dashStyle&quot;: &quot;A String&quot;, # The dash style of the border.
              },
              &quot;headingId&quot;: &quot;A String&quot;, # The heading ID of the paragraph. If empty, then this paragraph is not a heading. This property is read-only.
              &quot;spaceAbove&quot;: { # A magnitude in a single direction in the specified units. # The amount of extra space above the paragraph. If unset, the value is inherited from the parent.
                &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                &quot;magnitude&quot;: 3.14, # The magnitude.
              },
              &quot;direction&quot;: &quot;A String&quot;, # The text direction of this paragraph. If unset, the value defaults to LEFT_TO_RIGHT since paragraph direction is not inherited.
              &quot;namedStyleType&quot;: &quot;A String&quot;, # The named style type of the paragraph. Since updating the named style type affects other properties within ParagraphStyle, the named style type is applied before the other properties are updated.
              &quot;tabStops&quot;: [ # A list of the tab stops for this paragraph. The list of tab stops is not inherited. This property is read-only.
                { # A tab stop within a paragraph.
                  &quot;offset&quot;: { # A magnitude in a single direction in the specified units. # The offset between this tab stop and the start margin.
                    &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                    &quot;magnitude&quot;: 3.14, # The magnitude.
                  },
                  &quot;alignment&quot;: &quot;A String&quot;, # The alignment of this tab stop. If unset, the value defaults to START.
                },
              ],
              &quot;indentStart&quot;: { # A magnitude in a single direction in the specified units. # The amount of indentation for the paragraph on the side that corresponds to the start of the text, based on the current paragraph direction. If unset, the value is inherited from the parent.
                &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                &quot;magnitude&quot;: 3.14, # The magnitude.
              },
              &quot;keepWithNext&quot;: True or False, # Whether at least a part of this paragraph should be laid out on the same page or column as the next paragraph if possible. If unset, the value is inherited from the parent.
              &quot;borderTop&quot;: { # A border around a paragraph. # 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 making changes to a paragraph border the new border must be specified in its entirety.
                &quot;color&quot;: { # A color that can either be fully opaque or fully transparent. # The color of the border.
                  &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                    &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                      &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                      &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                      &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                    },
                  },
                },
                &quot;width&quot;: { # A magnitude in a single direction in the specified units. # The width of the border.
                  &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                  &quot;magnitude&quot;: 3.14, # The magnitude.
                },
                &quot;padding&quot;: { # A magnitude in a single direction in the specified units. # The padding of the border.
                  &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                  &quot;magnitude&quot;: 3.14, # The magnitude.
                },
                &quot;dashStyle&quot;: &quot;A String&quot;, # The dash style of the border.
              },
              &quot;borderLeft&quot;: { # A border around a paragraph. # The border to the left of this paragraph. If unset, the value is inherited from the parent. Paragraph borders cannot be partially updated. When making changes to a paragraph border the new border must be specified in its entirety.
                &quot;color&quot;: { # A color that can either be fully opaque or fully transparent. # The color of the border.
                  &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                    &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                      &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                      &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                      &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                    },
                  },
                },
                &quot;width&quot;: { # A magnitude in a single direction in the specified units. # The width of the border.
                  &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                  &quot;magnitude&quot;: 3.14, # The magnitude.
                },
                &quot;padding&quot;: { # A magnitude in a single direction in the specified units. # The padding of the border.
                  &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                  &quot;magnitude&quot;: 3.14, # The magnitude.
                },
                &quot;dashStyle&quot;: &quot;A String&quot;, # The dash style of the border.
              },
              &quot;borderBottom&quot;: { # A border around a paragraph. # 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 making changes to a paragraph border the new border must be specified in its entirety.
                &quot;color&quot;: { # A color that can either be fully opaque or fully transparent. # The color of the border.
                  &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                    &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                      &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                      &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                      &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                    },
                  },
                },
                &quot;width&quot;: { # A magnitude in a single direction in the specified units. # The width of the border.
                  &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                  &quot;magnitude&quot;: 3.14, # The magnitude.
                },
                &quot;padding&quot;: { # A magnitude in a single direction in the specified units. # The padding of the border.
                  &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                  &quot;magnitude&quot;: 3.14, # The magnitude.
                },
                &quot;dashStyle&quot;: &quot;A String&quot;, # The dash style of the border.
              },
              &quot;shading&quot;: { # The shading of a paragraph. # The shading of the paragraph. If unset, the value is inherited from the parent.
                &quot;backgroundColor&quot;: { # A color that can either be fully opaque or fully transparent. # The background color of this paragraph shading.
                  &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                    &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                      &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                      &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                      &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                    },
                  },
                },
              },
              &quot;indentEnd&quot;: { # A magnitude in a single direction in the specified units. # 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.
                &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                &quot;magnitude&quot;: 3.14, # The magnitude.
              },
              &quot;spacingMode&quot;: &quot;A String&quot;, # The spacing mode for the paragraph.
            },
          },
          &quot;startIndex&quot;: 42, # The zero-based start index of this structural element, in UTF-16 code units.
          &quot;endIndex&quot;: 42, # The zero-based end index of this structural element, exclusive, in UTF-16 code units.
          &quot;tableOfContents&quot;: { # A StructuralElement representing a table of contents. # A table of contents type of structural element.
            &quot;suggestedInsertionIds&quot;: [ # The suggested insertion IDs. A TableOfContents may have multiple insertion IDs if it is a nested suggested change. If empty, then this is not a suggested insertion.
              &quot;A String&quot;,
            ],
            &quot;content&quot;: [ # The content of the table of contents.
              # Object with schema name: StructuralElement
            ],
            &quot;suggestedDeletionIds&quot;: [ # The suggested deletion IDs. If empty, then there are no suggested deletions of this content.
              &quot;A String&quot;,
            ],
          },
          &quot;table&quot;: { # A StructuralElement representing a table. # A table type of structural element.
            &quot;tableStyle&quot;: { # Styles that apply to a table. # The style of the table.
              &quot;tableColumnProperties&quot;: [ # The properties of each column. Note that in Docs, tables contain rows and rows contain cells, similar to HTML. So the properties for a row can be found on the row&#x27;s table_row_style.
                { # The properties of a column in a table.
                  &quot;widthType&quot;: &quot;A String&quot;, # The width type of the column.
                  &quot;width&quot;: { # A magnitude in a single direction in the specified units. # The width of the column. Set when the column&#x27;s `width_type` is FIXED_WIDTH.
                    &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                    &quot;magnitude&quot;: 3.14, # The magnitude.
                  },
                },
              ],
            },
            &quot;suggestedInsertionIds&quot;: [ # The suggested insertion IDs. A Table may have multiple insertion IDs if it is a nested suggested change. If empty, then this is not a suggested insertion.
              &quot;A String&quot;,
            ],
            &quot;tableRows&quot;: [ # The contents and style of each row.
              { # The contents and style of a row in a Table.
                &quot;suggestedDeletionIds&quot;: [ # The suggested deletion IDs. If empty, then there are no suggested deletions of this content.
                  &quot;A String&quot;,
                ],
                &quot;suggestedInsertionIds&quot;: [ # The suggested insertion IDs. A TableRow may have multiple insertion IDs if it is a nested suggested change. If empty, then this is not a suggested insertion.
                  &quot;A String&quot;,
                ],
                &quot;suggestedTableRowStyleChanges&quot;: { # The suggested style changes to this row, keyed by suggestion ID.
                  &quot;a_key&quot;: { # A suggested change to a TableRowStyle.
                    &quot;tableRowStyleSuggestionState&quot;: { # A mask that indicates which of the fields on the base TableRowStyle have been changed in this suggestion. For any field set to true, there is a new suggested value. # A mask that indicates which of the fields on the base TableRowStyle have been changed in this suggestion.
                      &quot;minRowHeightSuggested&quot;: True or False, # Indicates if there was a suggested change to min_row_height.
                    },
                    &quot;tableRowStyle&quot;: { # Styles that apply to a table row. # A TableRowStyle that only includes the changes made in this suggestion. This can be used along with the table_row_style_suggestion_state to see which fields have changed and their new values.
                      &quot;minRowHeight&quot;: { # A magnitude in a single direction in the specified units. # The minimum height of the row. The row will be rendered in the Docs editor at a height equal to or greater than this value in order to show all the content in the row&#x27;s cells.
                        &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                        &quot;magnitude&quot;: 3.14, # The magnitude.
                      },
                    },
                  },
                },
                &quot;startIndex&quot;: 42, # The zero-based start index of this row, in UTF-16 code units.
                &quot;tableCells&quot;: [ # The contents and style of each cell in this row. It is possible for a table to be non-rectangular, so some rows may have a different number of cells than other rows in the same table.
                  { # The contents and style of a cell in a Table.
                    &quot;tableCellStyle&quot;: { # The style of a TableCell. Inherited table cell styles are represented as unset fields in this message. A table cell style can inherit from the table&#x27;s style. # The style of the cell.
                      &quot;borderTop&quot;: { # A border around a table cell. Table cell borders cannot be transparent. To hide a table cell border, make its width 0. # The top border of the cell.
                        &quot;width&quot;: { # A magnitude in a single direction in the specified units. # The width of the border.
                          &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                          &quot;magnitude&quot;: 3.14, # The magnitude.
                        },
                        &quot;dashStyle&quot;: &quot;A String&quot;, # The dash style of the border.
                        &quot;color&quot;: { # A color that can either be fully opaque or fully transparent. # The color of the border. This color cannot be transparent.
                          &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                            &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                              &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                              &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                              &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                            },
                          },
                        },
                      },
                      &quot;borderBottom&quot;: { # A border around a table cell. Table cell borders cannot be transparent. To hide a table cell border, make its width 0. # The bottom border of the cell.
                        &quot;width&quot;: { # A magnitude in a single direction in the specified units. # The width of the border.
                          &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                          &quot;magnitude&quot;: 3.14, # The magnitude.
                        },
                        &quot;dashStyle&quot;: &quot;A String&quot;, # The dash style of the border.
                        &quot;color&quot;: { # A color that can either be fully opaque or fully transparent. # The color of the border. This color cannot be transparent.
                          &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                            &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                              &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                              &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                              &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                            },
                          },
                        },
                      },
                      &quot;contentAlignment&quot;: &quot;A String&quot;, # The alignment of the content in the table cell. The default alignment matches the alignment for newly created table cells in the Docs editor.
                      &quot;paddingLeft&quot;: { # A magnitude in a single direction in the specified units. # The left padding of the cell.
                        &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                        &quot;magnitude&quot;: 3.14, # The magnitude.
                      },
                      &quot;backgroundColor&quot;: { # A color that can either be fully opaque or fully transparent. # The background color of the cell.
                        &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                          &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                            &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                            &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                            &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                          },
                        },
                      },
                      &quot;paddingTop&quot;: { # A magnitude in a single direction in the specified units. # The top padding of the cell.
                        &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                        &quot;magnitude&quot;: 3.14, # The magnitude.
                      },
                      &quot;rowSpan&quot;: 42, # The row span of the cell. This property is read-only.
                      &quot;paddingRight&quot;: { # A magnitude in a single direction in the specified units. # The right padding of the cell.
                        &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                        &quot;magnitude&quot;: 3.14, # The magnitude.
                      },
                      &quot;borderRight&quot;: { # A border around a table cell. Table cell borders cannot be transparent. To hide a table cell border, make its width 0. # The right border of the cell.
                        &quot;width&quot;: { # A magnitude in a single direction in the specified units. # The width of the border.
                          &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                          &quot;magnitude&quot;: 3.14, # The magnitude.
                        },
                        &quot;dashStyle&quot;: &quot;A String&quot;, # The dash style of the border.
                        &quot;color&quot;: { # A color that can either be fully opaque or fully transparent. # The color of the border. This color cannot be transparent.
                          &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                            &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                              &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                              &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                              &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                            },
                          },
                        },
                      },
                      &quot;borderLeft&quot;: { # A border around a table cell. Table cell borders cannot be transparent. To hide a table cell border, make its width 0. # The left border of the cell.
                        &quot;width&quot;: { # A magnitude in a single direction in the specified units. # The width of the border.
                          &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                          &quot;magnitude&quot;: 3.14, # The magnitude.
                        },
                        &quot;dashStyle&quot;: &quot;A String&quot;, # The dash style of the border.
                        &quot;color&quot;: { # A color that can either be fully opaque or fully transparent. # The color of the border. This color cannot be transparent.
                          &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                            &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                              &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                              &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                              &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                            },
                          },
                        },
                      },
                      &quot;columnSpan&quot;: 42, # The column span of the cell. This property is read-only.
                      &quot;paddingBottom&quot;: { # A magnitude in a single direction in the specified units. # The bottom padding of the cell.
                        &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                        &quot;magnitude&quot;: 3.14, # The magnitude.
                      },
                    },
                    &quot;content&quot;: [ # The content of the cell.
                      # Object with schema name: StructuralElement
                    ],
                    &quot;suggestedDeletionIds&quot;: [ # The suggested deletion IDs. If empty, then there are no suggested deletions of this content.
                      &quot;A String&quot;,
                    ],
                    &quot;startIndex&quot;: 42, # The zero-based start index of this cell, in UTF-16 code units.
                    &quot;suggestedInsertionIds&quot;: [ # The suggested insertion IDs. A TableCell may have multiple insertion IDs if it is a nested suggested change. If empty, then this is not a suggested insertion.
                      &quot;A String&quot;,
                    ],
                    &quot;suggestedTableCellStyleChanges&quot;: { # The suggested changes to the table cell style, keyed by suggestion ID.
                      &quot;a_key&quot;: { # A suggested change to a TableCellStyle.
                        &quot;tableCellStyle&quot;: { # The style of a TableCell. Inherited table cell styles are represented as unset fields in this message. A table cell style can inherit from the table&#x27;s style. # A TableCellStyle that only includes the changes made in this suggestion. This can be used along with the table_cell_style_suggestion_state to see which fields have changed and their new values.
                          &quot;borderTop&quot;: { # A border around a table cell. Table cell borders cannot be transparent. To hide a table cell border, make its width 0. # The top border of the cell.
                            &quot;width&quot;: { # A magnitude in a single direction in the specified units. # The width of the border.
                              &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                              &quot;magnitude&quot;: 3.14, # The magnitude.
                            },
                            &quot;dashStyle&quot;: &quot;A String&quot;, # The dash style of the border.
                            &quot;color&quot;: { # A color that can either be fully opaque or fully transparent. # The color of the border. This color cannot be transparent.
                              &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                                &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                                  &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                                  &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                                  &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                                },
                              },
                            },
                          },
                          &quot;borderBottom&quot;: { # A border around a table cell. Table cell borders cannot be transparent. To hide a table cell border, make its width 0. # The bottom border of the cell.
                            &quot;width&quot;: { # A magnitude in a single direction in the specified units. # The width of the border.
                              &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                              &quot;magnitude&quot;: 3.14, # The magnitude.
                            },
                            &quot;dashStyle&quot;: &quot;A String&quot;, # The dash style of the border.
                            &quot;color&quot;: { # A color that can either be fully opaque or fully transparent. # The color of the border. This color cannot be transparent.
                              &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                                &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                                  &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                                  &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                                  &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                                },
                              },
                            },
                          },
                          &quot;contentAlignment&quot;: &quot;A String&quot;, # The alignment of the content in the table cell. The default alignment matches the alignment for newly created table cells in the Docs editor.
                          &quot;paddingLeft&quot;: { # A magnitude in a single direction in the specified units. # The left padding of the cell.
                            &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                            &quot;magnitude&quot;: 3.14, # The magnitude.
                          },
                          &quot;backgroundColor&quot;: { # A color that can either be fully opaque or fully transparent. # The background color of the cell.
                            &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                              &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                                &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                                &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                                &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                              },
                            },
                          },
                          &quot;paddingTop&quot;: { # A magnitude in a single direction in the specified units. # The top padding of the cell.
                            &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                            &quot;magnitude&quot;: 3.14, # The magnitude.
                          },
                          &quot;rowSpan&quot;: 42, # The row span of the cell. This property is read-only.
                          &quot;paddingRight&quot;: { # A magnitude in a single direction in the specified units. # The right padding of the cell.
                            &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                            &quot;magnitude&quot;: 3.14, # The magnitude.
                          },
                          &quot;borderRight&quot;: { # A border around a table cell. Table cell borders cannot be transparent. To hide a table cell border, make its width 0. # The right border of the cell.
                            &quot;width&quot;: { # A magnitude in a single direction in the specified units. # The width of the border.
                              &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                              &quot;magnitude&quot;: 3.14, # The magnitude.
                            },
                            &quot;dashStyle&quot;: &quot;A String&quot;, # The dash style of the border.
                            &quot;color&quot;: { # A color that can either be fully opaque or fully transparent. # The color of the border. This color cannot be transparent.
                              &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                                &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                                  &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                                  &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                                  &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                                },
                              },
                            },
                          },
                          &quot;borderLeft&quot;: { # A border around a table cell. Table cell borders cannot be transparent. To hide a table cell border, make its width 0. # The left border of the cell.
                            &quot;width&quot;: { # A magnitude in a single direction in the specified units. # The width of the border.
                              &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                              &quot;magnitude&quot;: 3.14, # The magnitude.
                            },
                            &quot;dashStyle&quot;: &quot;A String&quot;, # The dash style of the border.
                            &quot;color&quot;: { # A color that can either be fully opaque or fully transparent. # The color of the border. This color cannot be transparent.
                              &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                                &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                                  &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                                  &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                                  &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                                },
                              },
                            },
                          },
                          &quot;columnSpan&quot;: 42, # The column span of the cell. This property is read-only.
                          &quot;paddingBottom&quot;: { # A magnitude in a single direction in the specified units. # The bottom padding of the cell.
                            &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                            &quot;magnitude&quot;: 3.14, # The magnitude.
                          },
                        },
                        &quot;tableCellStyleSuggestionState&quot;: { # A mask that indicates which of the fields on the base TableCellStyle have been changed in this suggestion. For any field set to true, there is a new suggested value. # A mask that indicates which of the fields on the base TableCellStyle have been changed in this suggestion.
                          &quot;rowSpanSuggested&quot;: True or False, # Indicates if there was a suggested change to row_span.
                          &quot;columnSpanSuggested&quot;: True or False, # Indicates if there was a suggested change to column_span.
                          &quot;borderBottomSuggested&quot;: True or False, # Indicates if there was a suggested change to border_bottom.
                          &quot;borderLeftSuggested&quot;: True or False, # Indicates if there was a suggested change to border_left.
                          &quot;paddingLeftSuggested&quot;: True or False, # Indicates if there was a suggested change to padding_left.
                          &quot;paddingRightSuggested&quot;: True or False, # Indicates if there was a suggested change to padding_right.
                          &quot;paddingBottomSuggested&quot;: True or False, # Indicates if there was a suggested change to padding_bottom.
                          &quot;paddingTopSuggested&quot;: True or False, # Indicates if there was a suggested change to padding_top.
                          &quot;contentAlignmentSuggested&quot;: True or False, # Indicates if there was a suggested change to content_alignment.
                          &quot;borderRightSuggested&quot;: True or False, # Indicates if there was a suggested change to border_right.
                          &quot;backgroundColorSuggested&quot;: True or False, # Indicates if there was a suggested change to background_color.
                          &quot;borderTopSuggested&quot;: True or False, # Indicates if there was a suggested change to border_top.
                        },
                      },
                    },
                    &quot;endIndex&quot;: 42, # The zero-based end index of this cell, exclusive, in UTF-16 code units.
                  },
                ],
                &quot;endIndex&quot;: 42, # The zero-based end index of this row, exclusive, in UTF-16 code units.
                &quot;tableRowStyle&quot;: { # Styles that apply to a table row. # The style of the table row.
                  &quot;minRowHeight&quot;: { # A magnitude in a single direction in the specified units. # The minimum height of the row. The row will be rendered in the Docs editor at a height equal to or greater than this value in order to show all the content in the row&#x27;s cells.
                    &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                    &quot;magnitude&quot;: 3.14, # The magnitude.
                  },
                },
              },
            ],
            &quot;suggestedDeletionIds&quot;: [ # The suggested deletion IDs. If empty, then there are no suggested deletions of this content.
              &quot;A String&quot;,
            ],
            &quot;rows&quot;: 42, # Number of rows in the table.
            &quot;columns&quot;: 42, # Number of columns in the table. It is possible for a table to be non-rectangular, so some rows may have a different number of cells.
          },
          &quot;sectionBreak&quot;: { # A StructuralElement representing a section break. A section is a range of content which has the same SectionStyle. A section break represents the start of a new section, and the section style applies to the section after the section break. The document body always begins with a section break. # A section break type of structural element.
            &quot;suggestedInsertionIds&quot;: [ # The suggested insertion IDs. A SectionBreak may have multiple insertion IDs if it is a nested suggested change. If empty, then this is not a suggested insertion.
              &quot;A String&quot;,
            ],
            &quot;sectionStyle&quot;: { # The styling that applies to a section. # The style of the section after this section break.
              &quot;marginLeft&quot;: { # A magnitude in a single direction in the specified units. # The left page margin of the section. If unset, uses margin_left from DocumentStyle. Updating left margin causes columns in this section to resize. Since the margin affects column width, it is applied before column properties. When updating this property, setting a concrete value is required. Unsetting this property results in a 400 bad request error.
                &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                &quot;magnitude&quot;: 3.14, # The magnitude.
              },
              &quot;sectionType&quot;: &quot;A String&quot;, # Output only. The type of section.
              &quot;evenPageHeaderId&quot;: &quot;A String&quot;, # The ID of the header used only for even pages. If the value of DocumentStyle&#x27;s use_even_page_header_footer is true, this value is used for the headers on even pages in the section. If it is false, the headers on even pages uses the default_header_id. If unset, the value inherits from the previous SectionBreak&#x27;s SectionStyle. If the value is unset in the first SectionBreak, it inherits from DocumentStyle&#x27;s even_page_header_id. This property is read-only.
              &quot;useFirstPageHeaderFooter&quot;: True or False, # Indicates whether to use the first page header / footer IDs for the first page of the section. If unset, it inherits from DocumentStyle&#x27;s use_first_page_header_footer for the first section. If the value is unset for subsequent sectors, it should be interpreted as false. When updating this property, setting a concrete value is required. Unsetting this property results in a 400 bad request error.
              &quot;marginHeader&quot;: { # A magnitude in a single direction in the specified units. # The header margin of the section. If unset, uses margin_header from DocumentStyle. If updated, use_custom_header_footer_margins is set to true on DocumentStyle. The value of use_custom_header_footer_margins on DocumentStyle indicates if a header margin is being respected for this section. When updating this property, setting a concrete value is required. Unsetting this property results in a 400 bad request error.
                &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                &quot;magnitude&quot;: 3.14, # The magnitude.
              },
              &quot;firstPageFooterId&quot;: &quot;A String&quot;, # The ID of the footer used only for the first page of the section. If use_first_page_header_footer is true, this value is used for the footer on the first page of the section. If it is false, the footer on the first page of the section uses the default_footer_id. If unset, the value inherits from the previous SectionBreak&#x27;s SectionStyle. If the value is unset in the first SectionBreak, it inherits from DocumentStyle&#x27;s first_page_footer_id. This property is read-only.
              &quot;firstPageHeaderId&quot;: &quot;A String&quot;, # The ID of the header used only for the first page of the section. If use_first_page_header_footer is true, this value is used for the header on the first page of the section. If it is false, the header on the first page of the section uses the default_header_id. If unset, the value inherits from the previous SectionBreak&#x27;s SectionStyle. If the value is unset in the first SectionBreak, it inherits from DocumentStyle&#x27;s first_page_header_id. This property is read-only.
              &quot;columnSeparatorStyle&quot;: &quot;A String&quot;, # The style of column separators. This style can be set even when there is one column in the section. When updating this property, setting a concrete value is required. Unsetting this property results in a 400 bad request error.
              &quot;marginBottom&quot;: { # A magnitude in a single direction in the specified units. # The bottom page margin of the section. If unset, uses margin_bottom from DocumentStyle. When updating this property, setting a concrete value is required. Unsetting this property results in a 400 bad request error.
                &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                &quot;magnitude&quot;: 3.14, # The magnitude.
              },
              &quot;marginFooter&quot;: { # A magnitude in a single direction in the specified units. # The footer margin of the section. If unset, uses margin_footer from DocumentStyle. If updated, use_custom_header_footer_margins is set to true on DocumentStyle. The value of use_custom_header_footer_margins on DocumentStyle indicates if a footer margin is being respected for this section When updating this property, setting a concrete value is required. Unsetting this property results in a 400 bad request error.
                &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                &quot;magnitude&quot;: 3.14, # The magnitude.
              },
              &quot;defaultFooterId&quot;: &quot;A String&quot;, # The ID of the default footer. If unset, the value inherits from the previous SectionBreak&#x27;s SectionStyle. If the value is unset in the first SectionBreak, it inherits from DocumentStyle&#x27;s default_footer_id. This property is read-only.
              &quot;marginTop&quot;: { # A magnitude in a single direction in the specified units. # The top page margin of the section. If unset, uses margin_top from DocumentStyle. When updating this property, setting a concrete value is required. Unsetting this property results in a 400 bad request error.
                &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                &quot;magnitude&quot;: 3.14, # The magnitude.
              },
              &quot;contentDirection&quot;: &quot;A String&quot;, # The content direction of this section. If unset, the value defaults to LEFT_TO_RIGHT. When updating this property, setting a concrete value is required. Unsetting this property results in a 400 bad request error.
              &quot;evenPageFooterId&quot;: &quot;A String&quot;, # The ID of the footer used only for even pages. If the value of DocumentStyle&#x27;s use_even_page_header_footer is true, this value is used for the footers on even pages in the section. If it is false, the footers on even pages uses the default_footer_id. If unset, the value inherits from the previous SectionBreak&#x27;s SectionStyle. If the value is unset in the first SectionBreak, it inherits from DocumentStyle&#x27;s even_page_footer_id. This property is read-only.
              &quot;marginRight&quot;: { # A magnitude in a single direction in the specified units. # The right page margin of the section. If unset, uses margin_right from DocumentStyle. Updating right margin causes columns in this section to resize. Since the margin affects column width, it is applied before column properties. When updating this property, setting a concrete value is required. Unsetting this property results in a 400 bad request error.
                &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                &quot;magnitude&quot;: 3.14, # The magnitude.
              },
              &quot;defaultHeaderId&quot;: &quot;A String&quot;, # The ID of the default header. If unset, the value inherits from the previous SectionBreak&#x27;s SectionStyle. If the value is unset in the first SectionBreak, it inherits from DocumentStyle&#x27;s default_header_id. This property is read-only.
              &quot;pageNumberStart&quot;: 42, # The page number from which to start counting the number of pages for this section. If unset, page numbering continues from the previous section. If the value is unset in the first SectionBreak, refer to DocumentStyle&#x27;s page_number_start. When updating this property, setting a concrete value is required. Unsetting this property results in a 400 bad request error.
              &quot;columnProperties&quot;: [ # The section&#x27;s columns properties. If empty, the section contains one column with the default properties in the Docs editor. A section can be updated to have no more than three columns. When updating this property, setting a concrete value is required. Unsetting this property will result in a 400 bad request error.
                { # Properties that apply to a section&#x27;s column.
                  &quot;paddingEnd&quot;: { # A magnitude in a single direction in the specified units. # The padding at the end of the column.
                    &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                    &quot;magnitude&quot;: 3.14, # The magnitude.
                  },
                  &quot;width&quot;: { # A magnitude in a single direction in the specified units. # Output only. The width of the column.
                    &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                    &quot;magnitude&quot;: 3.14, # The magnitude.
                  },
                },
              ],
            },
            &quot;suggestedDeletionIds&quot;: [ # The suggested deletion IDs. If empty, then there are no suggested deletions of this content.
              &quot;A String&quot;,
            ],
          },
        },
      ],
      &quot;footnoteId&quot;: &quot;A String&quot;, # The ID of the footnote.
    },
  },
  &quot;headers&quot;: { # Output only. The headers in the document, keyed by header ID.
    &quot;a_key&quot;: { # A document header.
      &quot;content&quot;: [ # The contents of the header. The indexes for a header&#x27;s content begin at zero.
        { # A StructuralElement describes content that provides structure to the document.
          &quot;paragraph&quot;: { # A StructuralElement representing a paragraph. A paragraph is a range of content that is terminated with a newline character. # A paragraph type of structural element.
            &quot;suggestedParagraphStyleChanges&quot;: { # The suggested paragraph style changes to this paragraph, keyed by suggestion ID.
              &quot;a_key&quot;: { # A suggested change to a ParagraphStyle.
                &quot;paragraphStyle&quot;: { # Styles that apply to a whole paragraph. Inherited paragraph styles are represented as unset fields in this message. A paragraph style&#x27;s parent depends on where the paragraph style is defined: * The ParagraphStyle on a Paragraph inherits from the paragraph&#x27;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 is 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. # A ParagraphStyle that only includes the changes made in this suggestion. This can be used along with the paragraph_suggestion_state to see which fields have changed and their new values.
                  &quot;borderRight&quot;: { # A border around a paragraph. # The border to the right of this paragraph. If unset, the value is inherited from the parent. Paragraph borders cannot be partially updated. When making changes to a paragraph border the new border must be specified in its entirety.
                    &quot;color&quot;: { # A color that can either be fully opaque or fully transparent. # The color of the border.
                      &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                        &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                          &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                          &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                          &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                        },
                      },
                    },
                    &quot;width&quot;: { # A magnitude in a single direction in the specified units. # The width of the border.
                      &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                      &quot;magnitude&quot;: 3.14, # The magnitude.
                    },
                    &quot;padding&quot;: { # A magnitude in a single direction in the specified units. # The padding of the border.
                      &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                      &quot;magnitude&quot;: 3.14, # The magnitude.
                    },
                    &quot;dashStyle&quot;: &quot;A String&quot;, # The dash style of the border.
                  },
                  &quot;indentFirstLine&quot;: { # A magnitude in a single direction in the specified units. # The amount of indentation for the first line of the paragraph. If unset, the value is inherited from the parent.
                    &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                    &quot;magnitude&quot;: 3.14, # The magnitude.
                  },
                  &quot;alignment&quot;: &quot;A String&quot;, # The text alignment for this paragraph.
                  &quot;lineSpacing&quot;: 3.14, # The amount of space between lines, as a percentage of normal, where normal is represented as 100.0. If unset, the value is inherited from the parent.
                  &quot;keepLinesTogether&quot;: True or False, # Whether all lines of the paragraph should be laid out on the same page or column if possible. If unset, the value is inherited from the parent.
                  &quot;avoidWidowAndOrphan&quot;: True or False, # Whether to avoid widows and orphans for the paragraph. If unset, the value is inherited from the parent.
                  &quot;spaceBelow&quot;: { # A magnitude in a single direction in the specified units. # The amount of extra space below the paragraph. If unset, the value is inherited from the parent.
                    &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                    &quot;magnitude&quot;: 3.14, # The magnitude.
                  },
                  &quot;borderBetween&quot;: { # A border around a paragraph. # 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 making changes to a paragraph border the new border must be specified in its entirety.
                    &quot;color&quot;: { # A color that can either be fully opaque or fully transparent. # The color of the border.
                      &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                        &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                          &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                          &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                          &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                        },
                      },
                    },
                    &quot;width&quot;: { # A magnitude in a single direction in the specified units. # The width of the border.
                      &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                      &quot;magnitude&quot;: 3.14, # The magnitude.
                    },
                    &quot;padding&quot;: { # A magnitude in a single direction in the specified units. # The padding of the border.
                      &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                      &quot;magnitude&quot;: 3.14, # The magnitude.
                    },
                    &quot;dashStyle&quot;: &quot;A String&quot;, # The dash style of the border.
                  },
                  &quot;headingId&quot;: &quot;A String&quot;, # The heading ID of the paragraph. If empty, then this paragraph is not a heading. This property is read-only.
                  &quot;spaceAbove&quot;: { # A magnitude in a single direction in the specified units. # The amount of extra space above the paragraph. If unset, the value is inherited from the parent.
                    &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                    &quot;magnitude&quot;: 3.14, # The magnitude.
                  },
                  &quot;direction&quot;: &quot;A String&quot;, # The text direction of this paragraph. If unset, the value defaults to LEFT_TO_RIGHT since paragraph direction is not inherited.
                  &quot;namedStyleType&quot;: &quot;A String&quot;, # The named style type of the paragraph. Since updating the named style type affects other properties within ParagraphStyle, the named style type is applied before the other properties are updated.
                  &quot;tabStops&quot;: [ # A list of the tab stops for this paragraph. The list of tab stops is not inherited. This property is read-only.
                    { # A tab stop within a paragraph.
                      &quot;offset&quot;: { # A magnitude in a single direction in the specified units. # The offset between this tab stop and the start margin.
                        &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                        &quot;magnitude&quot;: 3.14, # The magnitude.
                      },
                      &quot;alignment&quot;: &quot;A String&quot;, # The alignment of this tab stop. If unset, the value defaults to START.
                    },
                  ],
                  &quot;indentStart&quot;: { # A magnitude in a single direction in the specified units. # The amount of indentation for the paragraph on the side that corresponds to the start of the text, based on the current paragraph direction. If unset, the value is inherited from the parent.
                    &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                    &quot;magnitude&quot;: 3.14, # The magnitude.
                  },
                  &quot;keepWithNext&quot;: True or False, # Whether at least a part of this paragraph should be laid out on the same page or column as the next paragraph if possible. If unset, the value is inherited from the parent.
                  &quot;borderTop&quot;: { # A border around a paragraph. # 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 making changes to a paragraph border the new border must be specified in its entirety.
                    &quot;color&quot;: { # A color that can either be fully opaque or fully transparent. # The color of the border.
                      &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                        &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                          &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                          &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                          &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                        },
                      },
                    },
                    &quot;width&quot;: { # A magnitude in a single direction in the specified units. # The width of the border.
                      &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                      &quot;magnitude&quot;: 3.14, # The magnitude.
                    },
                    &quot;padding&quot;: { # A magnitude in a single direction in the specified units. # The padding of the border.
                      &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                      &quot;magnitude&quot;: 3.14, # The magnitude.
                    },
                    &quot;dashStyle&quot;: &quot;A String&quot;, # The dash style of the border.
                  },
                  &quot;borderLeft&quot;: { # A border around a paragraph. # The border to the left of this paragraph. If unset, the value is inherited from the parent. Paragraph borders cannot be partially updated. When making changes to a paragraph border the new border must be specified in its entirety.
                    &quot;color&quot;: { # A color that can either be fully opaque or fully transparent. # The color of the border.
                      &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                        &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                          &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                          &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                          &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                        },
                      },
                    },
                    &quot;width&quot;: { # A magnitude in a single direction in the specified units. # The width of the border.
                      &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                      &quot;magnitude&quot;: 3.14, # The magnitude.
                    },
                    &quot;padding&quot;: { # A magnitude in a single direction in the specified units. # The padding of the border.
                      &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                      &quot;magnitude&quot;: 3.14, # The magnitude.
                    },
                    &quot;dashStyle&quot;: &quot;A String&quot;, # The dash style of the border.
                  },
                  &quot;borderBottom&quot;: { # A border around a paragraph. # 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 making changes to a paragraph border the new border must be specified in its entirety.
                    &quot;color&quot;: { # A color that can either be fully opaque or fully transparent. # The color of the border.
                      &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                        &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                          &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                          &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                          &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                        },
                      },
                    },
                    &quot;width&quot;: { # A magnitude in a single direction in the specified units. # The width of the border.
                      &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                      &quot;magnitude&quot;: 3.14, # The magnitude.
                    },
                    &quot;padding&quot;: { # A magnitude in a single direction in the specified units. # The padding of the border.
                      &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                      &quot;magnitude&quot;: 3.14, # The magnitude.
                    },
                    &quot;dashStyle&quot;: &quot;A String&quot;, # The dash style of the border.
                  },
                  &quot;shading&quot;: { # The shading of a paragraph. # The shading of the paragraph. If unset, the value is inherited from the parent.
                    &quot;backgroundColor&quot;: { # A color that can either be fully opaque or fully transparent. # The background color of this paragraph shading.
                      &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                        &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                          &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                          &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                          &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                        },
                      },
                    },
                  },
                  &quot;indentEnd&quot;: { # A magnitude in a single direction in the specified units. # 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.
                    &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                    &quot;magnitude&quot;: 3.14, # The magnitude.
                  },
                  &quot;spacingMode&quot;: &quot;A String&quot;, # The spacing mode for the paragraph.
                },
                &quot;paragraphStyleSuggestionState&quot;: { # A mask that indicates which of the fields on the base ParagraphStyle have been changed in this suggestion. For any field set to true, there is a new suggested value. # A mask that indicates which of the fields on the base ParagraphStyle have been changed in this suggestion.
                  &quot;borderRightSuggested&quot;: True or False, # Indicates if there was a suggested change to border_right.
                  &quot;indentEndSuggested&quot;: True or False, # Indicates if there was a suggested change to indent_end.
                  &quot;lineSpacingSuggested&quot;: True or False, # Indicates if there was a suggested change to line_spacing.
                  &quot;headingIdSuggested&quot;: True or False, # Indicates if there was a suggested change to heading_id.
                  &quot;indentStartSuggested&quot;: True or False, # Indicates if there was a suggested change to indent_start.
                  &quot;keepWithNextSuggested&quot;: True or False, # Indicates if there was a suggested change to keep_with_next.
                  &quot;namedStyleTypeSuggested&quot;: True or False, # Indicates if there was a suggested change to named_style_type.
                  &quot;borderTopSuggested&quot;: True or False, # Indicates if there was a suggested change to border_top.
                  &quot;keepLinesTogetherSuggested&quot;: True or False, # Indicates if there was a suggested change to keep_lines_together.
                  &quot;avoidWidowAndOrphanSuggested&quot;: True or False, # Indicates if there was a suggested change to avoid_widow_and_orphan.
                  &quot;spaceBelowSuggested&quot;: True or False, # Indicates if there was a suggested change to space_below.
                  &quot;indentFirstLineSuggested&quot;: True or False, # Indicates if there was a suggested change to indent_first_line.
                  &quot;shadingSuggestionState&quot;: { # A mask that indicates which of the fields on the base Shading have been changed in this suggested change. For any field set to true, there is a new suggested value. # A mask that indicates which of the fields in shading have been changed in this suggestion.
                    &quot;backgroundColorSuggested&quot;: True or False, # Indicates if there was a suggested change to the Shading.
                  },
                  &quot;directionSuggested&quot;: True or False, # Indicates if there was a suggested change to direction.
                  &quot;borderBetweenSuggested&quot;: True or False, # Indicates if there was a suggested change to border_between.
                  &quot;spaceAboveSuggested&quot;: True or False, # Indicates if there was a suggested change to space_above.
                  &quot;borderLeftSuggested&quot;: True or False, # Indicates if there was a suggested change to border_left.
                  &quot;spacingModeSuggested&quot;: True or False, # Indicates if there was a suggested change to spacing_mode.
                  &quot;borderBottomSuggested&quot;: True or False, # Indicates if there was a suggested change to border_bottom.
                  &quot;alignmentSuggested&quot;: True or False, # Indicates if there was a suggested change to alignment.
                },
              },
            },
            &quot;bullet&quot;: { # Describes the bullet of a paragraph. # The bullet for this paragraph. If not present, the paragraph does not belong to a list.
              &quot;textStyle&quot;: { # Represents the styling that can be applied to text. Inherited text styles are represented as unset fields in this message. A text style&#x27;s parent depends on where the text style is defined: * The TextStyle of text in a Paragraph inherits from the paragraph&#x27;s corresponding named style type. * The TextStyle on a named style inherits from the normal text named style. * The TextStyle of the normal text named style inherits from the default text style in the Docs editor. * The TextStyle on a Paragraph element that is contained in a table may inherit its text style from the table style. If the text style does not inherit from a parent, unsetting fields will revert the style to a value matching the defaults in the Docs editor. # The paragraph specific text style applied to this bullet.
                &quot;italic&quot;: True or False, # Whether or not the text is italicized.
                &quot;baselineOffset&quot;: &quot;A String&quot;, # The text&#x27;s vertical offset from its normal position. Text with `SUPERSCRIPT` or `SUBSCRIPT` baseline offsets is automatically rendered in a smaller font size, computed based on the `font_size` field. The `font_size` itself is not affected by changes in this field.
                &quot;bold&quot;: True or False, # Whether or not the text is rendered as bold.
                &quot;fontSize&quot;: { # A magnitude in a single direction in the specified units. # The size of the text&#x27;s font.
                  &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                  &quot;magnitude&quot;: 3.14, # The magnitude.
                },
                &quot;foregroundColor&quot;: { # A color that can either be fully opaque or fully transparent. # The foreground color of the text. If set, the color is either an RGB color or transparent, depending on the `color` field.
                  &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                    &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                      &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                      &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                      &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                    },
                  },
                },
                &quot;backgroundColor&quot;: { # A color that can either be fully opaque or fully transparent. # The background color of the text. If set, the color is either an RGB color or transparent, depending on the `color` field.
                  &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                    &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                      &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                      &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                      &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                    },
                  },
                },
                &quot;link&quot;: { # A reference to another portion of a document or an external URL resource. # The hyperlink destination of the text. If unset, there is no link. Links are not inherited from parent text. Changing the link in an update request causes some other changes to the text style of the range: * When setting a link, the text foreground color will be updated to the default link color and the text will be underlined. If these fields are modified in the same request, those values will be used instead of the link defaults. * Setting a link on a text range that overlaps with an existing link will also update the existing link to point to the new URL. * Links are not settable on newline characters. As a result, setting a link on a text range that crosses a paragraph boundary, such as `&quot;ABC\n123&quot;`, will separate the newline character(s) into their own text runs. The link will be applied separately to the runs before and after the newline. * Removing a link will update the text style of the range to match the style of the preceding text (or the default text styles if the preceding text is another link) unless different styles are being set in the same request.
                  &quot;bookmarkId&quot;: &quot;A String&quot;, # The ID of a bookmark in this document.
                  &quot;url&quot;: &quot;A String&quot;, # An external URL.
                  &quot;headingId&quot;: &quot;A String&quot;, # The ID of a heading in this document.
                },
                &quot;strikethrough&quot;: True or False, # Whether or not the text is struck through.
                &quot;weightedFontFamily&quot;: { # Represents a font family and weight of text. # The font family and rendered weight of the text. If an update request specifies values for both `weighted_font_family` and `bold`, the `weighted_font_family` is applied first, then `bold`. If `weighted_font_family#weight` is not set, it defaults to `400`. If `weighted_font_family` is set, then `weighted_font_family#font_family` must also be set with a non-empty value. Otherwise, a 400 bad request error is returned.
                  &quot;fontFamily&quot;: &quot;A String&quot;, # The font family of the text. The font family can be any font from the Font menu in Docs or from [Google Fonts] (https://fonts.google.com/). If the font name is unrecognized, the text is rendered in `Arial`.
                  &quot;weight&quot;: 42, # The weight of the font. This field can have any value that is a multiple of `100` between `100` and `900`, inclusive. This range corresponds to the numerical values described in the CSS 2.1 Specification, [section 15.6](https://www.w3.org/TR/CSS21/fonts.html#font-boldness), with non-numerical values disallowed. The default value is `400` (&quot;normal&quot;). The font weight makes up just one component of the rendered font weight. The rendered weight is determined by a combination of the `weight` and the text style&#x27;s resolved `bold` value, after accounting for inheritance: * If the text is bold and the weight is less than `400`, the rendered weight is 400. * If the text is bold and the weight is greater than or equal to `400` but is less than `700`, the rendered weight is `700`. * If the weight is greater than or equal to `700`, the rendered weight is equal to the weight. * If the text is not bold, the rendered weight is equal to the weight.
                },
                &quot;underline&quot;: True or False, # Whether or not the text is underlined.
                &quot;smallCaps&quot;: True or False, # Whether or not the text is in small capital letters.
              },
              &quot;nestingLevel&quot;: 42, # The nesting level of this paragraph in the list.
              &quot;listId&quot;: &quot;A String&quot;, # The ID of the list this paragraph belongs to.
            },
            &quot;suggestedBulletChanges&quot;: { # The suggested changes to this paragraph&#x27;s bullet.
              &quot;a_key&quot;: { # A suggested change to a Bullet.
                &quot;bulletSuggestionState&quot;: { # A mask that indicates which of the fields on the base Bullet have been changed in this suggestion. For any field set to true, there is a new suggested value. # A mask that indicates which of the fields on the base Bullet have been changed in this suggestion.
                  &quot;nestingLevelSuggested&quot;: True or False, # Indicates if there was a suggested change to the nesting_level.
                  &quot;textStyleSuggestionState&quot;: { # A mask that indicates which of the fields on the base TextStyle have been changed in this suggestion. For any field set to true, there is a new suggested value. # A mask that indicates which of the fields in text style have been changed in this suggestion.
                    &quot;backgroundColorSuggested&quot;: True or False, # Indicates if there was a suggested change to background_color.
                    &quot;fontSizeSuggested&quot;: True or False, # Indicates if there was a suggested change to font_size.
                    &quot;boldSuggested&quot;: True or False, # Indicates if there was a suggested change to bold.
                    &quot;baselineOffsetSuggested&quot;: True or False, # Indicates if there was a suggested change to baseline_offset.
                    &quot;foregroundColorSuggested&quot;: True or False, # Indicates if there was a suggested change to foreground_color.
                    &quot;italicSuggested&quot;: True or False, # Indicates if there was a suggested change to italic.
                    &quot;linkSuggested&quot;: True or False, # Indicates if there was a suggested change to link.
                    &quot;underlineSuggested&quot;: True or False, # Indicates if there was a suggested change to underline.
                    &quot;weightedFontFamilySuggested&quot;: True or False, # Indicates if there was a suggested change to weighted_font_family.
                    &quot;smallCapsSuggested&quot;: True or False, # Indicates if there was a suggested change to small_caps.
                    &quot;strikethroughSuggested&quot;: True or False, # Indicates if there was a suggested change to strikethrough.
                  },
                  &quot;listIdSuggested&quot;: True or False, # Indicates if there was a suggested change to the list_id.
                },
                &quot;bullet&quot;: { # Describes the bullet of a paragraph. # A Bullet that only includes the changes made in this suggestion. This can be used along with the bullet_suggestion_state to see which fields have changed and their new values.
                  &quot;textStyle&quot;: { # Represents the styling that can be applied to text. Inherited text styles are represented as unset fields in this message. A text style&#x27;s parent depends on where the text style is defined: * The TextStyle of text in a Paragraph inherits from the paragraph&#x27;s corresponding named style type. * The TextStyle on a named style inherits from the normal text named style. * The TextStyle of the normal text named style inherits from the default text style in the Docs editor. * The TextStyle on a Paragraph element that is contained in a table may inherit its text style from the table style. If the text style does not inherit from a parent, unsetting fields will revert the style to a value matching the defaults in the Docs editor. # The paragraph specific text style applied to this bullet.
                    &quot;italic&quot;: True or False, # Whether or not the text is italicized.
                    &quot;baselineOffset&quot;: &quot;A String&quot;, # The text&#x27;s vertical offset from its normal position. Text with `SUPERSCRIPT` or `SUBSCRIPT` baseline offsets is automatically rendered in a smaller font size, computed based on the `font_size` field. The `font_size` itself is not affected by changes in this field.
                    &quot;bold&quot;: True or False, # Whether or not the text is rendered as bold.
                    &quot;fontSize&quot;: { # A magnitude in a single direction in the specified units. # The size of the text&#x27;s font.
                      &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                      &quot;magnitude&quot;: 3.14, # The magnitude.
                    },
                    &quot;foregroundColor&quot;: { # A color that can either be fully opaque or fully transparent. # The foreground color of the text. If set, the color is either an RGB color or transparent, depending on the `color` field.
                      &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                        &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                          &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                          &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                          &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                        },
                      },
                    },
                    &quot;backgroundColor&quot;: { # A color that can either be fully opaque or fully transparent. # The background color of the text. If set, the color is either an RGB color or transparent, depending on the `color` field.
                      &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                        &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                          &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                          &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                          &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                        },
                      },
                    },
                    &quot;link&quot;: { # A reference to another portion of a document or an external URL resource. # The hyperlink destination of the text. If unset, there is no link. Links are not inherited from parent text. Changing the link in an update request causes some other changes to the text style of the range: * When setting a link, the text foreground color will be updated to the default link color and the text will be underlined. If these fields are modified in the same request, those values will be used instead of the link defaults. * Setting a link on a text range that overlaps with an existing link will also update the existing link to point to the new URL. * Links are not settable on newline characters. As a result, setting a link on a text range that crosses a paragraph boundary, such as `&quot;ABC\n123&quot;`, will separate the newline character(s) into their own text runs. The link will be applied separately to the runs before and after the newline. * Removing a link will update the text style of the range to match the style of the preceding text (or the default text styles if the preceding text is another link) unless different styles are being set in the same request.
                      &quot;bookmarkId&quot;: &quot;A String&quot;, # The ID of a bookmark in this document.
                      &quot;url&quot;: &quot;A String&quot;, # An external URL.
                      &quot;headingId&quot;: &quot;A String&quot;, # The ID of a heading in this document.
                    },
                    &quot;strikethrough&quot;: True or False, # Whether or not the text is struck through.
                    &quot;weightedFontFamily&quot;: { # Represents a font family and weight of text. # The font family and rendered weight of the text. If an update request specifies values for both `weighted_font_family` and `bold`, the `weighted_font_family` is applied first, then `bold`. If `weighted_font_family#weight` is not set, it defaults to `400`. If `weighted_font_family` is set, then `weighted_font_family#font_family` must also be set with a non-empty value. Otherwise, a 400 bad request error is returned.
                      &quot;fontFamily&quot;: &quot;A String&quot;, # The font family of the text. The font family can be any font from the Font menu in Docs or from [Google Fonts] (https://fonts.google.com/). If the font name is unrecognized, the text is rendered in `Arial`.
                      &quot;weight&quot;: 42, # The weight of the font. This field can have any value that is a multiple of `100` between `100` and `900`, inclusive. This range corresponds to the numerical values described in the CSS 2.1 Specification, [section 15.6](https://www.w3.org/TR/CSS21/fonts.html#font-boldness), with non-numerical values disallowed. The default value is `400` (&quot;normal&quot;). The font weight makes up just one component of the rendered font weight. The rendered weight is determined by a combination of the `weight` and the text style&#x27;s resolved `bold` value, after accounting for inheritance: * If the text is bold and the weight is less than `400`, the rendered weight is 400. * If the text is bold and the weight is greater than or equal to `400` but is less than `700`, the rendered weight is `700`. * If the weight is greater than or equal to `700`, the rendered weight is equal to the weight. * If the text is not bold, the rendered weight is equal to the weight.
                    },
                    &quot;underline&quot;: True or False, # Whether or not the text is underlined.
                    &quot;smallCaps&quot;: True or False, # Whether or not the text is in small capital letters.
                  },
                  &quot;nestingLevel&quot;: 42, # The nesting level of this paragraph in the list.
                  &quot;listId&quot;: &quot;A String&quot;, # The ID of the list this paragraph belongs to.
                },
              },
            },
            &quot;suggestedPositionedObjectIds&quot;: { # The IDs of the positioned objects that are suggested to be attached to this paragraph, keyed by suggestion ID.
              &quot;a_key&quot;: { # A collection of object IDs.
                &quot;objectIds&quot;: [ # The object IDs.
                  &quot;A String&quot;,
                ],
              },
            },
            &quot;elements&quot;: [ # The content of the paragraph broken down into its component parts.
              { # A ParagraphElement describes content within a Paragraph.
                &quot;textRun&quot;: { # A ParagraphElement that represents a run of text that all has the same styling. # A text run paragraph element.
                  &quot;suggestedInsertionIds&quot;: [ # The suggested insertion IDs. A TextRun may have multiple insertion IDs if it is a nested suggested change. If empty, then this is not a suggested insertion.
                    &quot;A String&quot;,
                  ],
                  &quot;content&quot;: &quot;A String&quot;, # The text of this run. Any non-text elements in the run are replaced with the Unicode character U+E907.
                  &quot;textStyle&quot;: { # Represents the styling that can be applied to text. Inherited text styles are represented as unset fields in this message. A text style&#x27;s parent depends on where the text style is defined: * The TextStyle of text in a Paragraph inherits from the paragraph&#x27;s corresponding named style type. * The TextStyle on a named style inherits from the normal text named style. * The TextStyle of the normal text named style inherits from the default text style in the Docs editor. * The TextStyle on a Paragraph element that is contained in a table may inherit its text style from the table style. If the text style does not inherit from a parent, unsetting fields will revert the style to a value matching the defaults in the Docs editor. # The text style of this run.
                    &quot;italic&quot;: True or False, # Whether or not the text is italicized.
                    &quot;baselineOffset&quot;: &quot;A String&quot;, # The text&#x27;s vertical offset from its normal position. Text with `SUPERSCRIPT` or `SUBSCRIPT` baseline offsets is automatically rendered in a smaller font size, computed based on the `font_size` field. The `font_size` itself is not affected by changes in this field.
                    &quot;bold&quot;: True or False, # Whether or not the text is rendered as bold.
                    &quot;fontSize&quot;: { # A magnitude in a single direction in the specified units. # The size of the text&#x27;s font.
                      &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                      &quot;magnitude&quot;: 3.14, # The magnitude.
                    },
                    &quot;foregroundColor&quot;: { # A color that can either be fully opaque or fully transparent. # The foreground color of the text. If set, the color is either an RGB color or transparent, depending on the `color` field.
                      &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                        &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                          &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                          &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                          &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                        },
                      },
                    },
                    &quot;backgroundColor&quot;: { # A color that can either be fully opaque or fully transparent. # The background color of the text. If set, the color is either an RGB color or transparent, depending on the `color` field.
                      &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                        &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                          &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                          &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                          &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                        },
                      },
                    },
                    &quot;link&quot;: { # A reference to another portion of a document or an external URL resource. # The hyperlink destination of the text. If unset, there is no link. Links are not inherited from parent text. Changing the link in an update request causes some other changes to the text style of the range: * When setting a link, the text foreground color will be updated to the default link color and the text will be underlined. If these fields are modified in the same request, those values will be used instead of the link defaults. * Setting a link on a text range that overlaps with an existing link will also update the existing link to point to the new URL. * Links are not settable on newline characters. As a result, setting a link on a text range that crosses a paragraph boundary, such as `&quot;ABC\n123&quot;`, will separate the newline character(s) into their own text runs. The link will be applied separately to the runs before and after the newline. * Removing a link will update the text style of the range to match the style of the preceding text (or the default text styles if the preceding text is another link) unless different styles are being set in the same request.
                      &quot;bookmarkId&quot;: &quot;A String&quot;, # The ID of a bookmark in this document.
                      &quot;url&quot;: &quot;A String&quot;, # An external URL.
                      &quot;headingId&quot;: &quot;A String&quot;, # The ID of a heading in this document.
                    },
                    &quot;strikethrough&quot;: True or False, # Whether or not the text is struck through.
                    &quot;weightedFontFamily&quot;: { # Represents a font family and weight of text. # The font family and rendered weight of the text. If an update request specifies values for both `weighted_font_family` and `bold`, the `weighted_font_family` is applied first, then `bold`. If `weighted_font_family#weight` is not set, it defaults to `400`. If `weighted_font_family` is set, then `weighted_font_family#font_family` must also be set with a non-empty value. Otherwise, a 400 bad request error is returned.
                      &quot;fontFamily&quot;: &quot;A String&quot;, # The font family of the text. The font family can be any font from the Font menu in Docs or from [Google Fonts] (https://fonts.google.com/). If the font name is unrecognized, the text is rendered in `Arial`.
                      &quot;weight&quot;: 42, # The weight of the font. This field can have any value that is a multiple of `100` between `100` and `900`, inclusive. This range corresponds to the numerical values described in the CSS 2.1 Specification, [section 15.6](https://www.w3.org/TR/CSS21/fonts.html#font-boldness), with non-numerical values disallowed. The default value is `400` (&quot;normal&quot;). The font weight makes up just one component of the rendered font weight. The rendered weight is determined by a combination of the `weight` and the text style&#x27;s resolved `bold` value, after accounting for inheritance: * If the text is bold and the weight is less than `400`, the rendered weight is 400. * If the text is bold and the weight is greater than or equal to `400` but is less than `700`, the rendered weight is `700`. * If the weight is greater than or equal to `700`, the rendered weight is equal to the weight. * If the text is not bold, the rendered weight is equal to the weight.
                    },
                    &quot;underline&quot;: True or False, # Whether or not the text is underlined.
                    &quot;smallCaps&quot;: True or False, # Whether or not the text is in small capital letters.
                  },
                  &quot;suggestedTextStyleChanges&quot;: { # The suggested text style changes to this run, keyed by suggestion ID.
                    &quot;a_key&quot;: { # A suggested change to a TextStyle.
                      &quot;textStyleSuggestionState&quot;: { # A mask that indicates which of the fields on the base TextStyle have been changed in this suggestion. For any field set to true, there is a new suggested value. # A mask that indicates which of the fields on the base TextStyle have been changed in this suggestion.
                        &quot;backgroundColorSuggested&quot;: True or False, # Indicates if there was a suggested change to background_color.
                        &quot;fontSizeSuggested&quot;: True or False, # Indicates if there was a suggested change to font_size.
                        &quot;boldSuggested&quot;: True or False, # Indicates if there was a suggested change to bold.
                        &quot;baselineOffsetSuggested&quot;: True or False, # Indicates if there was a suggested change to baseline_offset.
                        &quot;foregroundColorSuggested&quot;: True or False, # Indicates if there was a suggested change to foreground_color.
                        &quot;italicSuggested&quot;: True or False, # Indicates if there was a suggested change to italic.
                        &quot;linkSuggested&quot;: True or False, # Indicates if there was a suggested change to link.
                        &quot;underlineSuggested&quot;: True or False, # Indicates if there was a suggested change to underline.
                        &quot;weightedFontFamilySuggested&quot;: True or False, # Indicates if there was a suggested change to weighted_font_family.
                        &quot;smallCapsSuggested&quot;: True or False, # Indicates if there was a suggested change to small_caps.
                        &quot;strikethroughSuggested&quot;: True or False, # Indicates if there was a suggested change to strikethrough.
                      },
                      &quot;textStyle&quot;: { # Represents the styling that can be applied to text. Inherited text styles are represented as unset fields in this message. A text style&#x27;s parent depends on where the text style is defined: * The TextStyle of text in a Paragraph inherits from the paragraph&#x27;s corresponding named style type. * The TextStyle on a named style inherits from the normal text named style. * The TextStyle of the normal text named style inherits from the default text style in the Docs editor. * The TextStyle on a Paragraph element that is contained in a table may inherit its text style from the table style. If the text style does not inherit from a parent, unsetting fields will revert the style to a value matching the defaults in the Docs editor. # A TextStyle that only includes the changes made in this suggestion. This can be used along with the text_style_suggestion_state to see which fields have changed and their new values.
                        &quot;italic&quot;: True or False, # Whether or not the text is italicized.
                        &quot;baselineOffset&quot;: &quot;A String&quot;, # The text&#x27;s vertical offset from its normal position. Text with `SUPERSCRIPT` or `SUBSCRIPT` baseline offsets is automatically rendered in a smaller font size, computed based on the `font_size` field. The `font_size` itself is not affected by changes in this field.
                        &quot;bold&quot;: True or False, # Whether or not the text is rendered as bold.
                        &quot;fontSize&quot;: { # A magnitude in a single direction in the specified units. # The size of the text&#x27;s font.
                          &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                          &quot;magnitude&quot;: 3.14, # The magnitude.
                        },
                        &quot;foregroundColor&quot;: { # A color that can either be fully opaque or fully transparent. # The foreground color of the text. If set, the color is either an RGB color or transparent, depending on the `color` field.
                          &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                            &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                              &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                              &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                              &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                            },
                          },
                        },
                        &quot;backgroundColor&quot;: { # A color that can either be fully opaque or fully transparent. # The background color of the text. If set, the color is either an RGB color or transparent, depending on the `color` field.
                          &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                            &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                              &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                              &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                              &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                            },
                          },
                        },
                        &quot;link&quot;: { # A reference to another portion of a document or an external URL resource. # The hyperlink destination of the text. If unset, there is no link. Links are not inherited from parent text. Changing the link in an update request causes some other changes to the text style of the range: * When setting a link, the text foreground color will be updated to the default link color and the text will be underlined. If these fields are modified in the same request, those values will be used instead of the link defaults. * Setting a link on a text range that overlaps with an existing link will also update the existing link to point to the new URL. * Links are not settable on newline characters. As a result, setting a link on a text range that crosses a paragraph boundary, such as `&quot;ABC\n123&quot;`, will separate the newline character(s) into their own text runs. The link will be applied separately to the runs before and after the newline. * Removing a link will update the text style of the range to match the style of the preceding text (or the default text styles if the preceding text is another link) unless different styles are being set in the same request.
                          &quot;bookmarkId&quot;: &quot;A String&quot;, # The ID of a bookmark in this document.
                          &quot;url&quot;: &quot;A String&quot;, # An external URL.
                          &quot;headingId&quot;: &quot;A String&quot;, # The ID of a heading in this document.
                        },
                        &quot;strikethrough&quot;: True or False, # Whether or not the text is struck through.
                        &quot;weightedFontFamily&quot;: { # Represents a font family and weight of text. # The font family and rendered weight of the text. If an update request specifies values for both `weighted_font_family` and `bold`, the `weighted_font_family` is applied first, then `bold`. If `weighted_font_family#weight` is not set, it defaults to `400`. If `weighted_font_family` is set, then `weighted_font_family#font_family` must also be set with a non-empty value. Otherwise, a 400 bad request error is returned.
                          &quot;fontFamily&quot;: &quot;A String&quot;, # The font family of the text. The font family can be any font from the Font menu in Docs or from [Google Fonts] (https://fonts.google.com/). If the font name is unrecognized, the text is rendered in `Arial`.
                          &quot;weight&quot;: 42, # The weight of the font. This field can have any value that is a multiple of `100` between `100` and `900`, inclusive. This range corresponds to the numerical values described in the CSS 2.1 Specification, [section 15.6](https://www.w3.org/TR/CSS21/fonts.html#font-boldness), with non-numerical values disallowed. The default value is `400` (&quot;normal&quot;). The font weight makes up just one component of the rendered font weight. The rendered weight is determined by a combination of the `weight` and the text style&#x27;s resolved `bold` value, after accounting for inheritance: * If the text is bold and the weight is less than `400`, the rendered weight is 400. * If the text is bold and the weight is greater than or equal to `400` but is less than `700`, the rendered weight is `700`. * If the weight is greater than or equal to `700`, the rendered weight is equal to the weight. * If the text is not bold, the rendered weight is equal to the weight.
                        },
                        &quot;underline&quot;: True or False, # Whether or not the text is underlined.
                        &quot;smallCaps&quot;: True or False, # Whether or not the text is in small capital letters.
                      },
                    },
                  },
                  &quot;suggestedDeletionIds&quot;: [ # The suggested deletion IDs. If empty, then there are no suggested deletions of this content.
                    &quot;A String&quot;,
                  ],
                },
                &quot;pageBreak&quot;: { # A ParagraphElement representing a page break. A page break makes the subsequent text start at the top of the next page. # A page break paragraph element.
                  &quot;suggestedInsertionIds&quot;: [ # The suggested insertion IDs. A PageBreak may have multiple insertion IDs if it is a nested suggested change. If empty, then this is not a suggested insertion.
                    &quot;A String&quot;,
                  ],
                  &quot;textStyle&quot;: { # Represents the styling that can be applied to text. Inherited text styles are represented as unset fields in this message. A text style&#x27;s parent depends on where the text style is defined: * The TextStyle of text in a Paragraph inherits from the paragraph&#x27;s corresponding named style type. * The TextStyle on a named style inherits from the normal text named style. * The TextStyle of the normal text named style inherits from the default text style in the Docs editor. * The TextStyle on a Paragraph element that is contained in a table may inherit its text style from the table style. If the text style does not inherit from a parent, unsetting fields will revert the style to a value matching the defaults in the Docs editor. # The text style of this PageBreak. Similar to text content, like text runs and footnote references, the text style of a page break can affect content layout as well as the styling of text inserted adjacent to it.
                    &quot;italic&quot;: True or False, # Whether or not the text is italicized.
                    &quot;baselineOffset&quot;: &quot;A String&quot;, # The text&#x27;s vertical offset from its normal position. Text with `SUPERSCRIPT` or `SUBSCRIPT` baseline offsets is automatically rendered in a smaller font size, computed based on the `font_size` field. The `font_size` itself is not affected by changes in this field.
                    &quot;bold&quot;: True or False, # Whether or not the text is rendered as bold.
                    &quot;fontSize&quot;: { # A magnitude in a single direction in the specified units. # The size of the text&#x27;s font.
                      &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                      &quot;magnitude&quot;: 3.14, # The magnitude.
                    },
                    &quot;foregroundColor&quot;: { # A color that can either be fully opaque or fully transparent. # The foreground color of the text. If set, the color is either an RGB color or transparent, depending on the `color` field.
                      &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                        &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                          &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                          &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                          &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                        },
                      },
                    },
                    &quot;backgroundColor&quot;: { # A color that can either be fully opaque or fully transparent. # The background color of the text. If set, the color is either an RGB color or transparent, depending on the `color` field.
                      &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                        &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                          &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                          &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                          &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                        },
                      },
                    },
                    &quot;link&quot;: { # A reference to another portion of a document or an external URL resource. # The hyperlink destination of the text. If unset, there is no link. Links are not inherited from parent text. Changing the link in an update request causes some other changes to the text style of the range: * When setting a link, the text foreground color will be updated to the default link color and the text will be underlined. If these fields are modified in the same request, those values will be used instead of the link defaults. * Setting a link on a text range that overlaps with an existing link will also update the existing link to point to the new URL. * Links are not settable on newline characters. As a result, setting a link on a text range that crosses a paragraph boundary, such as `&quot;ABC\n123&quot;`, will separate the newline character(s) into their own text runs. The link will be applied separately to the runs before and after the newline. * Removing a link will update the text style of the range to match the style of the preceding text (or the default text styles if the preceding text is another link) unless different styles are being set in the same request.
                      &quot;bookmarkId&quot;: &quot;A String&quot;, # The ID of a bookmark in this document.
                      &quot;url&quot;: &quot;A String&quot;, # An external URL.
                      &quot;headingId&quot;: &quot;A String&quot;, # The ID of a heading in this document.
                    },
                    &quot;strikethrough&quot;: True or False, # Whether or not the text is struck through.
                    &quot;weightedFontFamily&quot;: { # Represents a font family and weight of text. # The font family and rendered weight of the text. If an update request specifies values for both `weighted_font_family` and `bold`, the `weighted_font_family` is applied first, then `bold`. If `weighted_font_family#weight` is not set, it defaults to `400`. If `weighted_font_family` is set, then `weighted_font_family#font_family` must also be set with a non-empty value. Otherwise, a 400 bad request error is returned.
                      &quot;fontFamily&quot;: &quot;A String&quot;, # The font family of the text. The font family can be any font from the Font menu in Docs or from [Google Fonts] (https://fonts.google.com/). If the font name is unrecognized, the text is rendered in `Arial`.
                      &quot;weight&quot;: 42, # The weight of the font. This field can have any value that is a multiple of `100` between `100` and `900`, inclusive. This range corresponds to the numerical values described in the CSS 2.1 Specification, [section 15.6](https://www.w3.org/TR/CSS21/fonts.html#font-boldness), with non-numerical values disallowed. The default value is `400` (&quot;normal&quot;). The font weight makes up just one component of the rendered font weight. The rendered weight is determined by a combination of the `weight` and the text style&#x27;s resolved `bold` value, after accounting for inheritance: * If the text is bold and the weight is less than `400`, the rendered weight is 400. * If the text is bold and the weight is greater than or equal to `400` but is less than `700`, the rendered weight is `700`. * If the weight is greater than or equal to `700`, the rendered weight is equal to the weight. * If the text is not bold, the rendered weight is equal to the weight.
                    },
                    &quot;underline&quot;: True or False, # Whether or not the text is underlined.
                    &quot;smallCaps&quot;: True or False, # Whether or not the text is in small capital letters.
                  },
                  &quot;suggestedTextStyleChanges&quot;: { # The suggested text style changes to this PageBreak, keyed by suggestion ID.
                    &quot;a_key&quot;: { # A suggested change to a TextStyle.
                      &quot;textStyleSuggestionState&quot;: { # A mask that indicates which of the fields on the base TextStyle have been changed in this suggestion. For any field set to true, there is a new suggested value. # A mask that indicates which of the fields on the base TextStyle have been changed in this suggestion.
                        &quot;backgroundColorSuggested&quot;: True or False, # Indicates if there was a suggested change to background_color.
                        &quot;fontSizeSuggested&quot;: True or False, # Indicates if there was a suggested change to font_size.
                        &quot;boldSuggested&quot;: True or False, # Indicates if there was a suggested change to bold.
                        &quot;baselineOffsetSuggested&quot;: True or False, # Indicates if there was a suggested change to baseline_offset.
                        &quot;foregroundColorSuggested&quot;: True or False, # Indicates if there was a suggested change to foreground_color.
                        &quot;italicSuggested&quot;: True or False, # Indicates if there was a suggested change to italic.
                        &quot;linkSuggested&quot;: True or False, # Indicates if there was a suggested change to link.
                        &quot;underlineSuggested&quot;: True or False, # Indicates if there was a suggested change to underline.
                        &quot;weightedFontFamilySuggested&quot;: True or False, # Indicates if there was a suggested change to weighted_font_family.
                        &quot;smallCapsSuggested&quot;: True or False, # Indicates if there was a suggested change to small_caps.
                        &quot;strikethroughSuggested&quot;: True or False, # Indicates if there was a suggested change to strikethrough.
                      },
                      &quot;textStyle&quot;: { # Represents the styling that can be applied to text. Inherited text styles are represented as unset fields in this message. A text style&#x27;s parent depends on where the text style is defined: * The TextStyle of text in a Paragraph inherits from the paragraph&#x27;s corresponding named style type. * The TextStyle on a named style inherits from the normal text named style. * The TextStyle of the normal text named style inherits from the default text style in the Docs editor. * The TextStyle on a Paragraph element that is contained in a table may inherit its text style from the table style. If the text style does not inherit from a parent, unsetting fields will revert the style to a value matching the defaults in the Docs editor. # A TextStyle that only includes the changes made in this suggestion. This can be used along with the text_style_suggestion_state to see which fields have changed and their new values.
                        &quot;italic&quot;: True or False, # Whether or not the text is italicized.
                        &quot;baselineOffset&quot;: &quot;A String&quot;, # The text&#x27;s vertical offset from its normal position. Text with `SUPERSCRIPT` or `SUBSCRIPT` baseline offsets is automatically rendered in a smaller font size, computed based on the `font_size` field. The `font_size` itself is not affected by changes in this field.
                        &quot;bold&quot;: True or False, # Whether or not the text is rendered as bold.
                        &quot;fontSize&quot;: { # A magnitude in a single direction in the specified units. # The size of the text&#x27;s font.
                          &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                          &quot;magnitude&quot;: 3.14, # The magnitude.
                        },
                        &quot;foregroundColor&quot;: { # A color that can either be fully opaque or fully transparent. # The foreground color of the text. If set, the color is either an RGB color or transparent, depending on the `color` field.
                          &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                            &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                              &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                              &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                              &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                            },
                          },
                        },
                        &quot;backgroundColor&quot;: { # A color that can either be fully opaque or fully transparent. # The background color of the text. If set, the color is either an RGB color or transparent, depending on the `color` field.
                          &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                            &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                              &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                              &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                              &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                            },
                          },
                        },
                        &quot;link&quot;: { # A reference to another portion of a document or an external URL resource. # The hyperlink destination of the text. If unset, there is no link. Links are not inherited from parent text. Changing the link in an update request causes some other changes to the text style of the range: * When setting a link, the text foreground color will be updated to the default link color and the text will be underlined. If these fields are modified in the same request, those values will be used instead of the link defaults. * Setting a link on a text range that overlaps with an existing link will also update the existing link to point to the new URL. * Links are not settable on newline characters. As a result, setting a link on a text range that crosses a paragraph boundary, such as `&quot;ABC\n123&quot;`, will separate the newline character(s) into their own text runs. The link will be applied separately to the runs before and after the newline. * Removing a link will update the text style of the range to match the style of the preceding text (or the default text styles if the preceding text is another link) unless different styles are being set in the same request.
                          &quot;bookmarkId&quot;: &quot;A String&quot;, # The ID of a bookmark in this document.
                          &quot;url&quot;: &quot;A String&quot;, # An external URL.
                          &quot;headingId&quot;: &quot;A String&quot;, # The ID of a heading in this document.
                        },
                        &quot;strikethrough&quot;: True or False, # Whether or not the text is struck through.
                        &quot;weightedFontFamily&quot;: { # Represents a font family and weight of text. # The font family and rendered weight of the text. If an update request specifies values for both `weighted_font_family` and `bold`, the `weighted_font_family` is applied first, then `bold`. If `weighted_font_family#weight` is not set, it defaults to `400`. If `weighted_font_family` is set, then `weighted_font_family#font_family` must also be set with a non-empty value. Otherwise, a 400 bad request error is returned.
                          &quot;fontFamily&quot;: &quot;A String&quot;, # The font family of the text. The font family can be any font from the Font menu in Docs or from [Google Fonts] (https://fonts.google.com/). If the font name is unrecognized, the text is rendered in `Arial`.
                          &quot;weight&quot;: 42, # The weight of the font. This field can have any value that is a multiple of `100` between `100` and `900`, inclusive. This range corresponds to the numerical values described in the CSS 2.1 Specification, [section 15.6](https://www.w3.org/TR/CSS21/fonts.html#font-boldness), with non-numerical values disallowed. The default value is `400` (&quot;normal&quot;). The font weight makes up just one component of the rendered font weight. The rendered weight is determined by a combination of the `weight` and the text style&#x27;s resolved `bold` value, after accounting for inheritance: * If the text is bold and the weight is less than `400`, the rendered weight is 400. * If the text is bold and the weight is greater than or equal to `400` but is less than `700`, the rendered weight is `700`. * If the weight is greater than or equal to `700`, the rendered weight is equal to the weight. * If the text is not bold, the rendered weight is equal to the weight.
                        },
                        &quot;underline&quot;: True or False, # Whether or not the text is underlined.
                        &quot;smallCaps&quot;: True or False, # Whether or not the text is in small capital letters.
                      },
                    },
                  },
                  &quot;suggestedDeletionIds&quot;: [ # The suggested deletion IDs. If empty, then there are no suggested deletions of this content.
                    &quot;A String&quot;,
                  ],
                },
                &quot;horizontalRule&quot;: { # A ParagraphElement representing a horizontal line. # A horizontal rule paragraph element.
                  &quot;suggestedInsertionIds&quot;: [ # The suggested insertion IDs. A HorizontalRule may have multiple insertion IDs if it is a nested suggested change. If empty, then this is not a suggested insertion.
                    &quot;A String&quot;,
                  ],
                  &quot;suggestedTextStyleChanges&quot;: { # The suggested text style changes to this HorizontalRule, keyed by suggestion ID.
                    &quot;a_key&quot;: { # A suggested change to a TextStyle.
                      &quot;textStyleSuggestionState&quot;: { # A mask that indicates which of the fields on the base TextStyle have been changed in this suggestion. For any field set to true, there is a new suggested value. # A mask that indicates which of the fields on the base TextStyle have been changed in this suggestion.
                        &quot;backgroundColorSuggested&quot;: True or False, # Indicates if there was a suggested change to background_color.
                        &quot;fontSizeSuggested&quot;: True or False, # Indicates if there was a suggested change to font_size.
                        &quot;boldSuggested&quot;: True or False, # Indicates if there was a suggested change to bold.
                        &quot;baselineOffsetSuggested&quot;: True or False, # Indicates if there was a suggested change to baseline_offset.
                        &quot;foregroundColorSuggested&quot;: True or False, # Indicates if there was a suggested change to foreground_color.
                        &quot;italicSuggested&quot;: True or False, # Indicates if there was a suggested change to italic.
                        &quot;linkSuggested&quot;: True or False, # Indicates if there was a suggested change to link.
                        &quot;underlineSuggested&quot;: True or False, # Indicates if there was a suggested change to underline.
                        &quot;weightedFontFamilySuggested&quot;: True or False, # Indicates if there was a suggested change to weighted_font_family.
                        &quot;smallCapsSuggested&quot;: True or False, # Indicates if there was a suggested change to small_caps.
                        &quot;strikethroughSuggested&quot;: True or False, # Indicates if there was a suggested change to strikethrough.
                      },
                      &quot;textStyle&quot;: { # Represents the styling that can be applied to text. Inherited text styles are represented as unset fields in this message. A text style&#x27;s parent depends on where the text style is defined: * The TextStyle of text in a Paragraph inherits from the paragraph&#x27;s corresponding named style type. * The TextStyle on a named style inherits from the normal text named style. * The TextStyle of the normal text named style inherits from the default text style in the Docs editor. * The TextStyle on a Paragraph element that is contained in a table may inherit its text style from the table style. If the text style does not inherit from a parent, unsetting fields will revert the style to a value matching the defaults in the Docs editor. # A TextStyle that only includes the changes made in this suggestion. This can be used along with the text_style_suggestion_state to see which fields have changed and their new values.
                        &quot;italic&quot;: True or False, # Whether or not the text is italicized.
                        &quot;baselineOffset&quot;: &quot;A String&quot;, # The text&#x27;s vertical offset from its normal position. Text with `SUPERSCRIPT` or `SUBSCRIPT` baseline offsets is automatically rendered in a smaller font size, computed based on the `font_size` field. The `font_size` itself is not affected by changes in this field.
                        &quot;bold&quot;: True or False, # Whether or not the text is rendered as bold.
                        &quot;fontSize&quot;: { # A magnitude in a single direction in the specified units. # The size of the text&#x27;s font.
                          &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                          &quot;magnitude&quot;: 3.14, # The magnitude.
                        },
                        &quot;foregroundColor&quot;: { # A color that can either be fully opaque or fully transparent. # The foreground color of the text. If set, the color is either an RGB color or transparent, depending on the `color` field.
                          &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                            &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                              &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                              &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                              &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                            },
                          },
                        },
                        &quot;backgroundColor&quot;: { # A color that can either be fully opaque or fully transparent. # The background color of the text. If set, the color is either an RGB color or transparent, depending on the `color` field.
                          &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                            &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                              &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                              &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                              &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                            },
                          },
                        },
                        &quot;link&quot;: { # A reference to another portion of a document or an external URL resource. # The hyperlink destination of the text. If unset, there is no link. Links are not inherited from parent text. Changing the link in an update request causes some other changes to the text style of the range: * When setting a link, the text foreground color will be updated to the default link color and the text will be underlined. If these fields are modified in the same request, those values will be used instead of the link defaults. * Setting a link on a text range that overlaps with an existing link will also update the existing link to point to the new URL. * Links are not settable on newline characters. As a result, setting a link on a text range that crosses a paragraph boundary, such as `&quot;ABC\n123&quot;`, will separate the newline character(s) into their own text runs. The link will be applied separately to the runs before and after the newline. * Removing a link will update the text style of the range to match the style of the preceding text (or the default text styles if the preceding text is another link) unless different styles are being set in the same request.
                          &quot;bookmarkId&quot;: &quot;A String&quot;, # The ID of a bookmark in this document.
                          &quot;url&quot;: &quot;A String&quot;, # An external URL.
                          &quot;headingId&quot;: &quot;A String&quot;, # The ID of a heading in this document.
                        },
                        &quot;strikethrough&quot;: True or False, # Whether or not the text is struck through.
                        &quot;weightedFontFamily&quot;: { # Represents a font family and weight of text. # The font family and rendered weight of the text. If an update request specifies values for both `weighted_font_family` and `bold`, the `weighted_font_family` is applied first, then `bold`. If `weighted_font_family#weight` is not set, it defaults to `400`. If `weighted_font_family` is set, then `weighted_font_family#font_family` must also be set with a non-empty value. Otherwise, a 400 bad request error is returned.
                          &quot;fontFamily&quot;: &quot;A String&quot;, # The font family of the text. The font family can be any font from the Font menu in Docs or from [Google Fonts] (https://fonts.google.com/). If the font name is unrecognized, the text is rendered in `Arial`.
                          &quot;weight&quot;: 42, # The weight of the font. This field can have any value that is a multiple of `100` between `100` and `900`, inclusive. This range corresponds to the numerical values described in the CSS 2.1 Specification, [section 15.6](https://www.w3.org/TR/CSS21/fonts.html#font-boldness), with non-numerical values disallowed. The default value is `400` (&quot;normal&quot;). The font weight makes up just one component of the rendered font weight. The rendered weight is determined by a combination of the `weight` and the text style&#x27;s resolved `bold` value, after accounting for inheritance: * If the text is bold and the weight is less than `400`, the rendered weight is 400. * If the text is bold and the weight is greater than or equal to `400` but is less than `700`, the rendered weight is `700`. * If the weight is greater than or equal to `700`, the rendered weight is equal to the weight. * If the text is not bold, the rendered weight is equal to the weight.
                        },
                        &quot;underline&quot;: True or False, # Whether or not the text is underlined.
                        &quot;smallCaps&quot;: True or False, # Whether or not the text is in small capital letters.
                      },
                    },
                  },
                  &quot;suggestedDeletionIds&quot;: [ # The suggested deletion IDs. If empty, then there are no suggested deletions of this content.
                    &quot;A String&quot;,
                  ],
                  &quot;textStyle&quot;: { # Represents the styling that can be applied to text. Inherited text styles are represented as unset fields in this message. A text style&#x27;s parent depends on where the text style is defined: * The TextStyle of text in a Paragraph inherits from the paragraph&#x27;s corresponding named style type. * The TextStyle on a named style inherits from the normal text named style. * The TextStyle of the normal text named style inherits from the default text style in the Docs editor. * The TextStyle on a Paragraph element that is contained in a table may inherit its text style from the table style. If the text style does not inherit from a parent, unsetting fields will revert the style to a value matching the defaults in the Docs editor. # The text style of this HorizontalRule. Similar to text content, like text runs and footnote references, the text style of a horizontal rule can affect content layout as well as the styling of text inserted adjacent to it.
                    &quot;italic&quot;: True or False, # Whether or not the text is italicized.
                    &quot;baselineOffset&quot;: &quot;A String&quot;, # The text&#x27;s vertical offset from its normal position. Text with `SUPERSCRIPT` or `SUBSCRIPT` baseline offsets is automatically rendered in a smaller font size, computed based on the `font_size` field. The `font_size` itself is not affected by changes in this field.
                    &quot;bold&quot;: True or False, # Whether or not the text is rendered as bold.
                    &quot;fontSize&quot;: { # A magnitude in a single direction in the specified units. # The size of the text&#x27;s font.
                      &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                      &quot;magnitude&quot;: 3.14, # The magnitude.
                    },
                    &quot;foregroundColor&quot;: { # A color that can either be fully opaque or fully transparent. # The foreground color of the text. If set, the color is either an RGB color or transparent, depending on the `color` field.
                      &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                        &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                          &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                          &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                          &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                        },
                      },
                    },
                    &quot;backgroundColor&quot;: { # A color that can either be fully opaque or fully transparent. # The background color of the text. If set, the color is either an RGB color or transparent, depending on the `color` field.
                      &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                        &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                          &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                          &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                          &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                        },
                      },
                    },
                    &quot;link&quot;: { # A reference to another portion of a document or an external URL resource. # The hyperlink destination of the text. If unset, there is no link. Links are not inherited from parent text. Changing the link in an update request causes some other changes to the text style of the range: * When setting a link, the text foreground color will be updated to the default link color and the text will be underlined. If these fields are modified in the same request, those values will be used instead of the link defaults. * Setting a link on a text range that overlaps with an existing link will also update the existing link to point to the new URL. * Links are not settable on newline characters. As a result, setting a link on a text range that crosses a paragraph boundary, such as `&quot;ABC\n123&quot;`, will separate the newline character(s) into their own text runs. The link will be applied separately to the runs before and after the newline. * Removing a link will update the text style of the range to match the style of the preceding text (or the default text styles if the preceding text is another link) unless different styles are being set in the same request.
                      &quot;bookmarkId&quot;: &quot;A String&quot;, # The ID of a bookmark in this document.
                      &quot;url&quot;: &quot;A String&quot;, # An external URL.
                      &quot;headingId&quot;: &quot;A String&quot;, # The ID of a heading in this document.
                    },
                    &quot;strikethrough&quot;: True or False, # Whether or not the text is struck through.
                    &quot;weightedFontFamily&quot;: { # Represents a font family and weight of text. # The font family and rendered weight of the text. If an update request specifies values for both `weighted_font_family` and `bold`, the `weighted_font_family` is applied first, then `bold`. If `weighted_font_family#weight` is not set, it defaults to `400`. If `weighted_font_family` is set, then `weighted_font_family#font_family` must also be set with a non-empty value. Otherwise, a 400 bad request error is returned.
                      &quot;fontFamily&quot;: &quot;A String&quot;, # The font family of the text. The font family can be any font from the Font menu in Docs or from [Google Fonts] (https://fonts.google.com/). If the font name is unrecognized, the text is rendered in `Arial`.
                      &quot;weight&quot;: 42, # The weight of the font. This field can have any value that is a multiple of `100` between `100` and `900`, inclusive. This range corresponds to the numerical values described in the CSS 2.1 Specification, [section 15.6](https://www.w3.org/TR/CSS21/fonts.html#font-boldness), with non-numerical values disallowed. The default value is `400` (&quot;normal&quot;). The font weight makes up just one component of the rendered font weight. The rendered weight is determined by a combination of the `weight` and the text style&#x27;s resolved `bold` value, after accounting for inheritance: * If the text is bold and the weight is less than `400`, the rendered weight is 400. * If the text is bold and the weight is greater than or equal to `400` but is less than `700`, the rendered weight is `700`. * If the weight is greater than or equal to `700`, the rendered weight is equal to the weight. * If the text is not bold, the rendered weight is equal to the weight.
                    },
                    &quot;underline&quot;: True or False, # Whether or not the text is underlined.
                    &quot;smallCaps&quot;: True or False, # Whether or not the text is in small capital letters.
                  },
                },
                &quot;autoText&quot;: { # A ParagraphElement representing a spot in the text that is dynamically replaced with content that can change over time, like a page number. # An auto text paragraph element.
                  &quot;suggestedDeletionIds&quot;: [ # The suggested deletion IDs. If empty, then there are no suggested deletions of this content.
                    &quot;A String&quot;,
                  ],
                  &quot;suggestedInsertionIds&quot;: [ # The suggested insertion IDs. An AutoText may have multiple insertion IDs if it is a nested suggested change. If empty, then this is not a suggested insertion.
                    &quot;A String&quot;,
                  ],
                  &quot;suggestedTextStyleChanges&quot;: { # The suggested text style changes to this AutoText, keyed by suggestion ID.
                    &quot;a_key&quot;: { # A suggested change to a TextStyle.
                      &quot;textStyleSuggestionState&quot;: { # A mask that indicates which of the fields on the base TextStyle have been changed in this suggestion. For any field set to true, there is a new suggested value. # A mask that indicates which of the fields on the base TextStyle have been changed in this suggestion.
                        &quot;backgroundColorSuggested&quot;: True or False, # Indicates if there was a suggested change to background_color.
                        &quot;fontSizeSuggested&quot;: True or False, # Indicates if there was a suggested change to font_size.
                        &quot;boldSuggested&quot;: True or False, # Indicates if there was a suggested change to bold.
                        &quot;baselineOffsetSuggested&quot;: True or False, # Indicates if there was a suggested change to baseline_offset.
                        &quot;foregroundColorSuggested&quot;: True or False, # Indicates if there was a suggested change to foreground_color.
                        &quot;italicSuggested&quot;: True or False, # Indicates if there was a suggested change to italic.
                        &quot;linkSuggested&quot;: True or False, # Indicates if there was a suggested change to link.
                        &quot;underlineSuggested&quot;: True or False, # Indicates if there was a suggested change to underline.
                        &quot;weightedFontFamilySuggested&quot;: True or False, # Indicates if there was a suggested change to weighted_font_family.
                        &quot;smallCapsSuggested&quot;: True or False, # Indicates if there was a suggested change to small_caps.
                        &quot;strikethroughSuggested&quot;: True or False, # Indicates if there was a suggested change to strikethrough.
                      },
                      &quot;textStyle&quot;: { # Represents the styling that can be applied to text. Inherited text styles are represented as unset fields in this message. A text style&#x27;s parent depends on where the text style is defined: * The TextStyle of text in a Paragraph inherits from the paragraph&#x27;s corresponding named style type. * The TextStyle on a named style inherits from the normal text named style. * The TextStyle of the normal text named style inherits from the default text style in the Docs editor. * The TextStyle on a Paragraph element that is contained in a table may inherit its text style from the table style. If the text style does not inherit from a parent, unsetting fields will revert the style to a value matching the defaults in the Docs editor. # A TextStyle that only includes the changes made in this suggestion. This can be used along with the text_style_suggestion_state to see which fields have changed and their new values.
                        &quot;italic&quot;: True or False, # Whether or not the text is italicized.
                        &quot;baselineOffset&quot;: &quot;A String&quot;, # The text&#x27;s vertical offset from its normal position. Text with `SUPERSCRIPT` or `SUBSCRIPT` baseline offsets is automatically rendered in a smaller font size, computed based on the `font_size` field. The `font_size` itself is not affected by changes in this field.
                        &quot;bold&quot;: True or False, # Whether or not the text is rendered as bold.
                        &quot;fontSize&quot;: { # A magnitude in a single direction in the specified units. # The size of the text&#x27;s font.
                          &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                          &quot;magnitude&quot;: 3.14, # The magnitude.
                        },
                        &quot;foregroundColor&quot;: { # A color that can either be fully opaque or fully transparent. # The foreground color of the text. If set, the color is either an RGB color or transparent, depending on the `color` field.
                          &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                            &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                              &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                              &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                              &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                            },
                          },
                        },
                        &quot;backgroundColor&quot;: { # A color that can either be fully opaque or fully transparent. # The background color of the text. If set, the color is either an RGB color or transparent, depending on the `color` field.
                          &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                            &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                              &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                              &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                              &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                            },
                          },
                        },
                        &quot;link&quot;: { # A reference to another portion of a document or an external URL resource. # The hyperlink destination of the text. If unset, there is no link. Links are not inherited from parent text. Changing the link in an update request causes some other changes to the text style of the range: * When setting a link, the text foreground color will be updated to the default link color and the text will be underlined. If these fields are modified in the same request, those values will be used instead of the link defaults. * Setting a link on a text range that overlaps with an existing link will also update the existing link to point to the new URL. * Links are not settable on newline characters. As a result, setting a link on a text range that crosses a paragraph boundary, such as `&quot;ABC\n123&quot;`, will separate the newline character(s) into their own text runs. The link will be applied separately to the runs before and after the newline. * Removing a link will update the text style of the range to match the style of the preceding text (or the default text styles if the preceding text is another link) unless different styles are being set in the same request.
                          &quot;bookmarkId&quot;: &quot;A String&quot;, # The ID of a bookmark in this document.
                          &quot;url&quot;: &quot;A String&quot;, # An external URL.
                          &quot;headingId&quot;: &quot;A String&quot;, # The ID of a heading in this document.
                        },
                        &quot;strikethrough&quot;: True or False, # Whether or not the text is struck through.
                        &quot;weightedFontFamily&quot;: { # Represents a font family and weight of text. # The font family and rendered weight of the text. If an update request specifies values for both `weighted_font_family` and `bold`, the `weighted_font_family` is applied first, then `bold`. If `weighted_font_family#weight` is not set, it defaults to `400`. If `weighted_font_family` is set, then `weighted_font_family#font_family` must also be set with a non-empty value. Otherwise, a 400 bad request error is returned.
                          &quot;fontFamily&quot;: &quot;A String&quot;, # The font family of the text. The font family can be any font from the Font menu in Docs or from [Google Fonts] (https://fonts.google.com/). If the font name is unrecognized, the text is rendered in `Arial`.
                          &quot;weight&quot;: 42, # The weight of the font. This field can have any value that is a multiple of `100` between `100` and `900`, inclusive. This range corresponds to the numerical values described in the CSS 2.1 Specification, [section 15.6](https://www.w3.org/TR/CSS21/fonts.html#font-boldness), with non-numerical values disallowed. The default value is `400` (&quot;normal&quot;). The font weight makes up just one component of the rendered font weight. The rendered weight is determined by a combination of the `weight` and the text style&#x27;s resolved `bold` value, after accounting for inheritance: * If the text is bold and the weight is less than `400`, the rendered weight is 400. * If the text is bold and the weight is greater than or equal to `400` but is less than `700`, the rendered weight is `700`. * If the weight is greater than or equal to `700`, the rendered weight is equal to the weight. * If the text is not bold, the rendered weight is equal to the weight.
                        },
                        &quot;underline&quot;: True or False, # Whether or not the text is underlined.
                        &quot;smallCaps&quot;: True or False, # Whether or not the text is in small capital letters.
                      },
                    },
                  },
                  &quot;type&quot;: &quot;A String&quot;, # The type of this auto text.
                  &quot;textStyle&quot;: { # Represents the styling that can be applied to text. Inherited text styles are represented as unset fields in this message. A text style&#x27;s parent depends on where the text style is defined: * The TextStyle of text in a Paragraph inherits from the paragraph&#x27;s corresponding named style type. * The TextStyle on a named style inherits from the normal text named style. * The TextStyle of the normal text named style inherits from the default text style in the Docs editor. * The TextStyle on a Paragraph element that is contained in a table may inherit its text style from the table style. If the text style does not inherit from a parent, unsetting fields will revert the style to a value matching the defaults in the Docs editor. # The text style of this AutoText.
                    &quot;italic&quot;: True or False, # Whether or not the text is italicized.
                    &quot;baselineOffset&quot;: &quot;A String&quot;, # The text&#x27;s vertical offset from its normal position. Text with `SUPERSCRIPT` or `SUBSCRIPT` baseline offsets is automatically rendered in a smaller font size, computed based on the `font_size` field. The `font_size` itself is not affected by changes in this field.
                    &quot;bold&quot;: True or False, # Whether or not the text is rendered as bold.
                    &quot;fontSize&quot;: { # A magnitude in a single direction in the specified units. # The size of the text&#x27;s font.
                      &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                      &quot;magnitude&quot;: 3.14, # The magnitude.
                    },
                    &quot;foregroundColor&quot;: { # A color that can either be fully opaque or fully transparent. # The foreground color of the text. If set, the color is either an RGB color or transparent, depending on the `color` field.
                      &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                        &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                          &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                          &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                          &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                        },
                      },
                    },
                    &quot;backgroundColor&quot;: { # A color that can either be fully opaque or fully transparent. # The background color of the text. If set, the color is either an RGB color or transparent, depending on the `color` field.
                      &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                        &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                          &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                          &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                          &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                        },
                      },
                    },
                    &quot;link&quot;: { # A reference to another portion of a document or an external URL resource. # The hyperlink destination of the text. If unset, there is no link. Links are not inherited from parent text. Changing the link in an update request causes some other changes to the text style of the range: * When setting a link, the text foreground color will be updated to the default link color and the text will be underlined. If these fields are modified in the same request, those values will be used instead of the link defaults. * Setting a link on a text range that overlaps with an existing link will also update the existing link to point to the new URL. * Links are not settable on newline characters. As a result, setting a link on a text range that crosses a paragraph boundary, such as `&quot;ABC\n123&quot;`, will separate the newline character(s) into their own text runs. The link will be applied separately to the runs before and after the newline. * Removing a link will update the text style of the range to match the style of the preceding text (or the default text styles if the preceding text is another link) unless different styles are being set in the same request.
                      &quot;bookmarkId&quot;: &quot;A String&quot;, # The ID of a bookmark in this document.
                      &quot;url&quot;: &quot;A String&quot;, # An external URL.
                      &quot;headingId&quot;: &quot;A String&quot;, # The ID of a heading in this document.
                    },
                    &quot;strikethrough&quot;: True or False, # Whether or not the text is struck through.
                    &quot;weightedFontFamily&quot;: { # Represents a font family and weight of text. # The font family and rendered weight of the text. If an update request specifies values for both `weighted_font_family` and `bold`, the `weighted_font_family` is applied first, then `bold`. If `weighted_font_family#weight` is not set, it defaults to `400`. If `weighted_font_family` is set, then `weighted_font_family#font_family` must also be set with a non-empty value. Otherwise, a 400 bad request error is returned.
                      &quot;fontFamily&quot;: &quot;A String&quot;, # The font family of the text. The font family can be any font from the Font menu in Docs or from [Google Fonts] (https://fonts.google.com/). If the font name is unrecognized, the text is rendered in `Arial`.
                      &quot;weight&quot;: 42, # The weight of the font. This field can have any value that is a multiple of `100` between `100` and `900`, inclusive. This range corresponds to the numerical values described in the CSS 2.1 Specification, [section 15.6](https://www.w3.org/TR/CSS21/fonts.html#font-boldness), with non-numerical values disallowed. The default value is `400` (&quot;normal&quot;). The font weight makes up just one component of the rendered font weight. The rendered weight is determined by a combination of the `weight` and the text style&#x27;s resolved `bold` value, after accounting for inheritance: * If the text is bold and the weight is less than `400`, the rendered weight is 400. * If the text is bold and the weight is greater than or equal to `400` but is less than `700`, the rendered weight is `700`. * If the weight is greater than or equal to `700`, the rendered weight is equal to the weight. * If the text is not bold, the rendered weight is equal to the weight.
                    },
                    &quot;underline&quot;: True or False, # Whether or not the text is underlined.
                    &quot;smallCaps&quot;: True or False, # Whether or not the text is in small capital letters.
                  },
                },
                &quot;inlineObjectElement&quot;: { # A ParagraphElement that contains an InlineObject. # An inline object paragraph element.
                  &quot;suggestedDeletionIds&quot;: [ # The suggested deletion IDs. If empty, then there are no suggested deletions of this content.
                    &quot;A String&quot;,
                  ],
                  &quot;suggestedInsertionIds&quot;: [ # The suggested insertion IDs. An InlineObjectElement may have multiple insertion IDs if it is a nested suggested change. If empty, then this is not a suggested insertion.
                    &quot;A String&quot;,
                  ],
                  &quot;suggestedTextStyleChanges&quot;: { # The suggested text style changes to this InlineObject, keyed by suggestion ID.
                    &quot;a_key&quot;: { # A suggested change to a TextStyle.
                      &quot;textStyleSuggestionState&quot;: { # A mask that indicates which of the fields on the base TextStyle have been changed in this suggestion. For any field set to true, there is a new suggested value. # A mask that indicates which of the fields on the base TextStyle have been changed in this suggestion.
                        &quot;backgroundColorSuggested&quot;: True or False, # Indicates if there was a suggested change to background_color.
                        &quot;fontSizeSuggested&quot;: True or False, # Indicates if there was a suggested change to font_size.
                        &quot;boldSuggested&quot;: True or False, # Indicates if there was a suggested change to bold.
                        &quot;baselineOffsetSuggested&quot;: True or False, # Indicates if there was a suggested change to baseline_offset.
                        &quot;foregroundColorSuggested&quot;: True or False, # Indicates if there was a suggested change to foreground_color.
                        &quot;italicSuggested&quot;: True or False, # Indicates if there was a suggested change to italic.
                        &quot;linkSuggested&quot;: True or False, # Indicates if there was a suggested change to link.
                        &quot;underlineSuggested&quot;: True or False, # Indicates if there was a suggested change to underline.
                        &quot;weightedFontFamilySuggested&quot;: True or False, # Indicates if there was a suggested change to weighted_font_family.
                        &quot;smallCapsSuggested&quot;: True or False, # Indicates if there was a suggested change to small_caps.
                        &quot;strikethroughSuggested&quot;: True or False, # Indicates if there was a suggested change to strikethrough.
                      },
                      &quot;textStyle&quot;: { # Represents the styling that can be applied to text. Inherited text styles are represented as unset fields in this message. A text style&#x27;s parent depends on where the text style is defined: * The TextStyle of text in a Paragraph inherits from the paragraph&#x27;s corresponding named style type. * The TextStyle on a named style inherits from the normal text named style. * The TextStyle of the normal text named style inherits from the default text style in the Docs editor. * The TextStyle on a Paragraph element that is contained in a table may inherit its text style from the table style. If the text style does not inherit from a parent, unsetting fields will revert the style to a value matching the defaults in the Docs editor. # A TextStyle that only includes the changes made in this suggestion. This can be used along with the text_style_suggestion_state to see which fields have changed and their new values.
                        &quot;italic&quot;: True or False, # Whether or not the text is italicized.
                        &quot;baselineOffset&quot;: &quot;A String&quot;, # The text&#x27;s vertical offset from its normal position. Text with `SUPERSCRIPT` or `SUBSCRIPT` baseline offsets is automatically rendered in a smaller font size, computed based on the `font_size` field. The `font_size` itself is not affected by changes in this field.
                        &quot;bold&quot;: True or False, # Whether or not the text is rendered as bold.
                        &quot;fontSize&quot;: { # A magnitude in a single direction in the specified units. # The size of the text&#x27;s font.
                          &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                          &quot;magnitude&quot;: 3.14, # The magnitude.
                        },
                        &quot;foregroundColor&quot;: { # A color that can either be fully opaque or fully transparent. # The foreground color of the text. If set, the color is either an RGB color or transparent, depending on the `color` field.
                          &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                            &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                              &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                              &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                              &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                            },
                          },
                        },
                        &quot;backgroundColor&quot;: { # A color that can either be fully opaque or fully transparent. # The background color of the text. If set, the color is either an RGB color or transparent, depending on the `color` field.
                          &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                            &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                              &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                              &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                              &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                            },
                          },
                        },
                        &quot;link&quot;: { # A reference to another portion of a document or an external URL resource. # The hyperlink destination of the text. If unset, there is no link. Links are not inherited from parent text. Changing the link in an update request causes some other changes to the text style of the range: * When setting a link, the text foreground color will be updated to the default link color and the text will be underlined. If these fields are modified in the same request, those values will be used instead of the link defaults. * Setting a link on a text range that overlaps with an existing link will also update the existing link to point to the new URL. * Links are not settable on newline characters. As a result, setting a link on a text range that crosses a paragraph boundary, such as `&quot;ABC\n123&quot;`, will separate the newline character(s) into their own text runs. The link will be applied separately to the runs before and after the newline. * Removing a link will update the text style of the range to match the style of the preceding text (or the default text styles if the preceding text is another link) unless different styles are being set in the same request.
                          &quot;bookmarkId&quot;: &quot;A String&quot;, # The ID of a bookmark in this document.
                          &quot;url&quot;: &quot;A String&quot;, # An external URL.
                          &quot;headingId&quot;: &quot;A String&quot;, # The ID of a heading in this document.
                        },
                        &quot;strikethrough&quot;: True or False, # Whether or not the text is struck through.
                        &quot;weightedFontFamily&quot;: { # Represents a font family and weight of text. # The font family and rendered weight of the text. If an update request specifies values for both `weighted_font_family` and `bold`, the `weighted_font_family` is applied first, then `bold`. If `weighted_font_family#weight` is not set, it defaults to `400`. If `weighted_font_family` is set, then `weighted_font_family#font_family` must also be set with a non-empty value. Otherwise, a 400 bad request error is returned.
                          &quot;fontFamily&quot;: &quot;A String&quot;, # The font family of the text. The font family can be any font from the Font menu in Docs or from [Google Fonts] (https://fonts.google.com/). If the font name is unrecognized, the text is rendered in `Arial`.
                          &quot;weight&quot;: 42, # The weight of the font. This field can have any value that is a multiple of `100` between `100` and `900`, inclusive. This range corresponds to the numerical values described in the CSS 2.1 Specification, [section 15.6](https://www.w3.org/TR/CSS21/fonts.html#font-boldness), with non-numerical values disallowed. The default value is `400` (&quot;normal&quot;). The font weight makes up just one component of the rendered font weight. The rendered weight is determined by a combination of the `weight` and the text style&#x27;s resolved `bold` value, after accounting for inheritance: * If the text is bold and the weight is less than `400`, the rendered weight is 400. * If the text is bold and the weight is greater than or equal to `400` but is less than `700`, the rendered weight is `700`. * If the weight is greater than or equal to `700`, the rendered weight is equal to the weight. * If the text is not bold, the rendered weight is equal to the weight.
                        },
                        &quot;underline&quot;: True or False, # Whether or not the text is underlined.
                        &quot;smallCaps&quot;: True or False, # Whether or not the text is in small capital letters.
                      },
                    },
                  },
                  &quot;inlineObjectId&quot;: &quot;A String&quot;, # The ID of the InlineObject this element contains.
                  &quot;textStyle&quot;: { # Represents the styling that can be applied to text. Inherited text styles are represented as unset fields in this message. A text style&#x27;s parent depends on where the text style is defined: * The TextStyle of text in a Paragraph inherits from the paragraph&#x27;s corresponding named style type. * The TextStyle on a named style inherits from the normal text named style. * The TextStyle of the normal text named style inherits from the default text style in the Docs editor. * The TextStyle on a Paragraph element that is contained in a table may inherit its text style from the table style. If the text style does not inherit from a parent, unsetting fields will revert the style to a value matching the defaults in the Docs editor. # The text style of this InlineObjectElement. Similar to text content, like text runs and footnote references, the text style of an inline object element can affect content layout as well as the styling of text inserted adjacent to it.
                    &quot;italic&quot;: True or False, # Whether or not the text is italicized.
                    &quot;baselineOffset&quot;: &quot;A String&quot;, # The text&#x27;s vertical offset from its normal position. Text with `SUPERSCRIPT` or `SUBSCRIPT` baseline offsets is automatically rendered in a smaller font size, computed based on the `font_size` field. The `font_size` itself is not affected by changes in this field.
                    &quot;bold&quot;: True or False, # Whether or not the text is rendered as bold.
                    &quot;fontSize&quot;: { # A magnitude in a single direction in the specified units. # The size of the text&#x27;s font.
                      &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                      &quot;magnitude&quot;: 3.14, # The magnitude.
                    },
                    &quot;foregroundColor&quot;: { # A color that can either be fully opaque or fully transparent. # The foreground color of the text. If set, the color is either an RGB color or transparent, depending on the `color` field.
                      &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                        &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                          &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                          &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                          &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                        },
                      },
                    },
                    &quot;backgroundColor&quot;: { # A color that can either be fully opaque or fully transparent. # The background color of the text. If set, the color is either an RGB color or transparent, depending on the `color` field.
                      &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                        &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                          &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                          &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                          &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                        },
                      },
                    },
                    &quot;link&quot;: { # A reference to another portion of a document or an external URL resource. # The hyperlink destination of the text. If unset, there is no link. Links are not inherited from parent text. Changing the link in an update request causes some other changes to the text style of the range: * When setting a link, the text foreground color will be updated to the default link color and the text will be underlined. If these fields are modified in the same request, those values will be used instead of the link defaults. * Setting a link on a text range that overlaps with an existing link will also update the existing link to point to the new URL. * Links are not settable on newline characters. As a result, setting a link on a text range that crosses a paragraph boundary, such as `&quot;ABC\n123&quot;`, will separate the newline character(s) into their own text runs. The link will be applied separately to the runs before and after the newline. * Removing a link will update the text style of the range to match the style of the preceding text (or the default text styles if the preceding text is another link) unless different styles are being set in the same request.
                      &quot;bookmarkId&quot;: &quot;A String&quot;, # The ID of a bookmark in this document.
                      &quot;url&quot;: &quot;A String&quot;, # An external URL.
                      &quot;headingId&quot;: &quot;A String&quot;, # The ID of a heading in this document.
                    },
                    &quot;strikethrough&quot;: True or False, # Whether or not the text is struck through.
                    &quot;weightedFontFamily&quot;: { # Represents a font family and weight of text. # The font family and rendered weight of the text. If an update request specifies values for both `weighted_font_family` and `bold`, the `weighted_font_family` is applied first, then `bold`. If `weighted_font_family#weight` is not set, it defaults to `400`. If `weighted_font_family` is set, then `weighted_font_family#font_family` must also be set with a non-empty value. Otherwise, a 400 bad request error is returned.
                      &quot;fontFamily&quot;: &quot;A String&quot;, # The font family of the text. The font family can be any font from the Font menu in Docs or from [Google Fonts] (https://fonts.google.com/). If the font name is unrecognized, the text is rendered in `Arial`.
                      &quot;weight&quot;: 42, # The weight of the font. This field can have any value that is a multiple of `100` between `100` and `900`, inclusive. This range corresponds to the numerical values described in the CSS 2.1 Specification, [section 15.6](https://www.w3.org/TR/CSS21/fonts.html#font-boldness), with non-numerical values disallowed. The default value is `400` (&quot;normal&quot;). The font weight makes up just one component of the rendered font weight. The rendered weight is determined by a combination of the `weight` and the text style&#x27;s resolved `bold` value, after accounting for inheritance: * If the text is bold and the weight is less than `400`, the rendered weight is 400. * If the text is bold and the weight is greater than or equal to `400` but is less than `700`, the rendered weight is `700`. * If the weight is greater than or equal to `700`, the rendered weight is equal to the weight. * If the text is not bold, the rendered weight is equal to the weight.
                    },
                    &quot;underline&quot;: True or False, # Whether or not the text is underlined.
                    &quot;smallCaps&quot;: True or False, # Whether or not the text is in small capital letters.
                  },
                },
                &quot;footnoteReference&quot;: { # A ParagraphElement representing a footnote reference. A footnote reference is the inline content rendered with a number and is used to identify the footnote. # A footnote reference paragraph element.
                  &quot;footnoteId&quot;: &quot;A String&quot;, # The ID of the footnote that contains the content of this footnote reference.
                  &quot;suggestedInsertionIds&quot;: [ # The suggested insertion IDs. A FootnoteReference may have multiple insertion IDs if it is a nested suggested change. If empty, then this is not a suggested insertion.
                    &quot;A String&quot;,
                  ],
                  &quot;footnoteNumber&quot;: &quot;A String&quot;, # The rendered number of this footnote.
                  &quot;suggestedDeletionIds&quot;: [ # The suggested deletion IDs. If empty, then there are no suggested deletions of this content.
                    &quot;A String&quot;,
                  ],
                  &quot;suggestedTextStyleChanges&quot;: { # The suggested text style changes to this FootnoteReference, keyed by suggestion ID.
                    &quot;a_key&quot;: { # A suggested change to a TextStyle.
                      &quot;textStyleSuggestionState&quot;: { # A mask that indicates which of the fields on the base TextStyle have been changed in this suggestion. For any field set to true, there is a new suggested value. # A mask that indicates which of the fields on the base TextStyle have been changed in this suggestion.
                        &quot;backgroundColorSuggested&quot;: True or False, # Indicates if there was a suggested change to background_color.
                        &quot;fontSizeSuggested&quot;: True or False, # Indicates if there was a suggested change to font_size.
                        &quot;boldSuggested&quot;: True or False, # Indicates if there was a suggested change to bold.
                        &quot;baselineOffsetSuggested&quot;: True or False, # Indicates if there was a suggested change to baseline_offset.
                        &quot;foregroundColorSuggested&quot;: True or False, # Indicates if there was a suggested change to foreground_color.
                        &quot;italicSuggested&quot;: True or False, # Indicates if there was a suggested change to italic.
                        &quot;linkSuggested&quot;: True or False, # Indicates if there was a suggested change to link.
                        &quot;underlineSuggested&quot;: True or False, # Indicates if there was a suggested change to underline.
                        &quot;weightedFontFamilySuggested&quot;: True or False, # Indicates if there was a suggested change to weighted_font_family.
                        &quot;smallCapsSuggested&quot;: True or False, # Indicates if there was a suggested change to small_caps.
                        &quot;strikethroughSuggested&quot;: True or False, # Indicates if there was a suggested change to strikethrough.
                      },
                      &quot;textStyle&quot;: { # Represents the styling that can be applied to text. Inherited text styles are represented as unset fields in this message. A text style&#x27;s parent depends on where the text style is defined: * The TextStyle of text in a Paragraph inherits from the paragraph&#x27;s corresponding named style type. * The TextStyle on a named style inherits from the normal text named style. * The TextStyle of the normal text named style inherits from the default text style in the Docs editor. * The TextStyle on a Paragraph element that is contained in a table may inherit its text style from the table style. If the text style does not inherit from a parent, unsetting fields will revert the style to a value matching the defaults in the Docs editor. # A TextStyle that only includes the changes made in this suggestion. This can be used along with the text_style_suggestion_state to see which fields have changed and their new values.
                        &quot;italic&quot;: True or False, # Whether or not the text is italicized.
                        &quot;baselineOffset&quot;: &quot;A String&quot;, # The text&#x27;s vertical offset from its normal position. Text with `SUPERSCRIPT` or `SUBSCRIPT` baseline offsets is automatically rendered in a smaller font size, computed based on the `font_size` field. The `font_size` itself is not affected by changes in this field.
                        &quot;bold&quot;: True or False, # Whether or not the text is rendered as bold.
                        &quot;fontSize&quot;: { # A magnitude in a single direction in the specified units. # The size of the text&#x27;s font.
                          &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                          &quot;magnitude&quot;: 3.14, # The magnitude.
                        },
                        &quot;foregroundColor&quot;: { # A color that can either be fully opaque or fully transparent. # The foreground color of the text. If set, the color is either an RGB color or transparent, depending on the `color` field.
                          &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                            &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                              &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                              &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                              &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                            },
                          },
                        },
                        &quot;backgroundColor&quot;: { # A color that can either be fully opaque or fully transparent. # The background color of the text. If set, the color is either an RGB color or transparent, depending on the `color` field.
                          &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                            &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                              &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                              &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                              &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                            },
                          },
                        },
                        &quot;link&quot;: { # A reference to another portion of a document or an external URL resource. # The hyperlink destination of the text. If unset, there is no link. Links are not inherited from parent text. Changing the link in an update request causes some other changes to the text style of the range: * When setting a link, the text foreground color will be updated to the default link color and the text will be underlined. If these fields are modified in the same request, those values will be used instead of the link defaults. * Setting a link on a text range that overlaps with an existing link will also update the existing link to point to the new URL. * Links are not settable on newline characters. As a result, setting a link on a text range that crosses a paragraph boundary, such as `&quot;ABC\n123&quot;`, will separate the newline character(s) into their own text runs. The link will be applied separately to the runs before and after the newline. * Removing a link will update the text style of the range to match the style of the preceding text (or the default text styles if the preceding text is another link) unless different styles are being set in the same request.
                          &quot;bookmarkId&quot;: &quot;A String&quot;, # The ID of a bookmark in this document.
                          &quot;url&quot;: &quot;A String&quot;, # An external URL.
                          &quot;headingId&quot;: &quot;A String&quot;, # The ID of a heading in this document.
                        },
                        &quot;strikethrough&quot;: True or False, # Whether or not the text is struck through.
                        &quot;weightedFontFamily&quot;: { # Represents a font family and weight of text. # The font family and rendered weight of the text. If an update request specifies values for both `weighted_font_family` and `bold`, the `weighted_font_family` is applied first, then `bold`. If `weighted_font_family#weight` is not set, it defaults to `400`. If `weighted_font_family` is set, then `weighted_font_family#font_family` must also be set with a non-empty value. Otherwise, a 400 bad request error is returned.
                          &quot;fontFamily&quot;: &quot;A String&quot;, # The font family of the text. The font family can be any font from the Font menu in Docs or from [Google Fonts] (https://fonts.google.com/). If the font name is unrecognized, the text is rendered in `Arial`.
                          &quot;weight&quot;: 42, # The weight of the font. This field can have any value that is a multiple of `100` between `100` and `900`, inclusive. This range corresponds to the numerical values described in the CSS 2.1 Specification, [section 15.6](https://www.w3.org/TR/CSS21/fonts.html#font-boldness), with non-numerical values disallowed. The default value is `400` (&quot;normal&quot;). The font weight makes up just one component of the rendered font weight. The rendered weight is determined by a combination of the `weight` and the text style&#x27;s resolved `bold` value, after accounting for inheritance: * If the text is bold and the weight is less than `400`, the rendered weight is 400. * If the text is bold and the weight is greater than or equal to `400` but is less than `700`, the rendered weight is `700`. * If the weight is greater than or equal to `700`, the rendered weight is equal to the weight. * If the text is not bold, the rendered weight is equal to the weight.
                        },
                        &quot;underline&quot;: True or False, # Whether or not the text is underlined.
                        &quot;smallCaps&quot;: True or False, # Whether or not the text is in small capital letters.
                      },
                    },
                  },
                  &quot;textStyle&quot;: { # Represents the styling that can be applied to text. Inherited text styles are represented as unset fields in this message. A text style&#x27;s parent depends on where the text style is defined: * The TextStyle of text in a Paragraph inherits from the paragraph&#x27;s corresponding named style type. * The TextStyle on a named style inherits from the normal text named style. * The TextStyle of the normal text named style inherits from the default text style in the Docs editor. * The TextStyle on a Paragraph element that is contained in a table may inherit its text style from the table style. If the text style does not inherit from a parent, unsetting fields will revert the style to a value matching the defaults in the Docs editor. # The text style of this FootnoteReference.
                    &quot;italic&quot;: True or False, # Whether or not the text is italicized.
                    &quot;baselineOffset&quot;: &quot;A String&quot;, # The text&#x27;s vertical offset from its normal position. Text with `SUPERSCRIPT` or `SUBSCRIPT` baseline offsets is automatically rendered in a smaller font size, computed based on the `font_size` field. The `font_size` itself is not affected by changes in this field.
                    &quot;bold&quot;: True or False, # Whether or not the text is rendered as bold.
                    &quot;fontSize&quot;: { # A magnitude in a single direction in the specified units. # The size of the text&#x27;s font.
                      &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                      &quot;magnitude&quot;: 3.14, # The magnitude.
                    },
                    &quot;foregroundColor&quot;: { # A color that can either be fully opaque or fully transparent. # The foreground color of the text. If set, the color is either an RGB color or transparent, depending on the `color` field.
                      &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                        &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                          &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                          &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                          &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                        },
                      },
                    },
                    &quot;backgroundColor&quot;: { # A color that can either be fully opaque or fully transparent. # The background color of the text. If set, the color is either an RGB color or transparent, depending on the `color` field.
                      &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                        &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                          &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                          &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                          &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                        },
                      },
                    },
                    &quot;link&quot;: { # A reference to another portion of a document or an external URL resource. # The hyperlink destination of the text. If unset, there is no link. Links are not inherited from parent text. Changing the link in an update request causes some other changes to the text style of the range: * When setting a link, the text foreground color will be updated to the default link color and the text will be underlined. If these fields are modified in the same request, those values will be used instead of the link defaults. * Setting a link on a text range that overlaps with an existing link will also update the existing link to point to the new URL. * Links are not settable on newline characters. As a result, setting a link on a text range that crosses a paragraph boundary, such as `&quot;ABC\n123&quot;`, will separate the newline character(s) into their own text runs. The link will be applied separately to the runs before and after the newline. * Removing a link will update the text style of the range to match the style of the preceding text (or the default text styles if the preceding text is another link) unless different styles are being set in the same request.
                      &quot;bookmarkId&quot;: &quot;A String&quot;, # The ID of a bookmark in this document.
                      &quot;url&quot;: &quot;A String&quot;, # An external URL.
                      &quot;headingId&quot;: &quot;A String&quot;, # The ID of a heading in this document.
                    },
                    &quot;strikethrough&quot;: True or False, # Whether or not the text is struck through.
                    &quot;weightedFontFamily&quot;: { # Represents a font family and weight of text. # The font family and rendered weight of the text. If an update request specifies values for both `weighted_font_family` and `bold`, the `weighted_font_family` is applied first, then `bold`. If `weighted_font_family#weight` is not set, it defaults to `400`. If `weighted_font_family` is set, then `weighted_font_family#font_family` must also be set with a non-empty value. Otherwise, a 400 bad request error is returned.
                      &quot;fontFamily&quot;: &quot;A String&quot;, # The font family of the text. The font family can be any font from the Font menu in Docs or from [Google Fonts] (https://fonts.google.com/). If the font name is unrecognized, the text is rendered in `Arial`.
                      &quot;weight&quot;: 42, # The weight of the font. This field can have any value that is a multiple of `100` between `100` and `900`, inclusive. This range corresponds to the numerical values described in the CSS 2.1 Specification, [section 15.6](https://www.w3.org/TR/CSS21/fonts.html#font-boldness), with non-numerical values disallowed. The default value is `400` (&quot;normal&quot;). The font weight makes up just one component of the rendered font weight. The rendered weight is determined by a combination of the `weight` and the text style&#x27;s resolved `bold` value, after accounting for inheritance: * If the text is bold and the weight is less than `400`, the rendered weight is 400. * If the text is bold and the weight is greater than or equal to `400` but is less than `700`, the rendered weight is `700`. * If the weight is greater than or equal to `700`, the rendered weight is equal to the weight. * If the text is not bold, the rendered weight is equal to the weight.
                    },
                    &quot;underline&quot;: True or False, # Whether or not the text is underlined.
                    &quot;smallCaps&quot;: True or False, # Whether or not the text is in small capital letters.
                  },
                },
                &quot;startIndex&quot;: 42, # The zero-based start index of this paragraph element, in UTF-16 code units.
                &quot;endIndex&quot;: 42, # The zero-base end index of this paragraph element, exclusive, in UTF-16 code units.
                &quot;equation&quot;: { # A ParagraphElement representing an equation. # An equation paragraph element.
                  &quot;suggestedDeletionIds&quot;: [ # The suggested deletion IDs. If empty, then there are no suggested deletions of this content.
                    &quot;A String&quot;,
                  ],
                  &quot;suggestedInsertionIds&quot;: [ # The suggested insertion IDs. A Equation may have multiple insertion IDs if it is a nested suggested change. If empty, then this is not a suggested insertion.
                    &quot;A String&quot;,
                  ],
                },
                &quot;columnBreak&quot;: { # A ParagraphElement representing a column break. A column break makes the subsequent text start at the top of the next column. # A column break paragraph element.
                  &quot;suggestedTextStyleChanges&quot;: { # The suggested text style changes to this ColumnBreak, keyed by suggestion ID.
                    &quot;a_key&quot;: { # A suggested change to a TextStyle.
                      &quot;textStyleSuggestionState&quot;: { # A mask that indicates which of the fields on the base TextStyle have been changed in this suggestion. For any field set to true, there is a new suggested value. # A mask that indicates which of the fields on the base TextStyle have been changed in this suggestion.
                        &quot;backgroundColorSuggested&quot;: True or False, # Indicates if there was a suggested change to background_color.
                        &quot;fontSizeSuggested&quot;: True or False, # Indicates if there was a suggested change to font_size.
                        &quot;boldSuggested&quot;: True or False, # Indicates if there was a suggested change to bold.
                        &quot;baselineOffsetSuggested&quot;: True or False, # Indicates if there was a suggested change to baseline_offset.
                        &quot;foregroundColorSuggested&quot;: True or False, # Indicates if there was a suggested change to foreground_color.
                        &quot;italicSuggested&quot;: True or False, # Indicates if there was a suggested change to italic.
                        &quot;linkSuggested&quot;: True or False, # Indicates if there was a suggested change to link.
                        &quot;underlineSuggested&quot;: True or False, # Indicates if there was a suggested change to underline.
                        &quot;weightedFontFamilySuggested&quot;: True or False, # Indicates if there was a suggested change to weighted_font_family.
                        &quot;smallCapsSuggested&quot;: True or False, # Indicates if there was a suggested change to small_caps.
                        &quot;strikethroughSuggested&quot;: True or False, # Indicates if there was a suggested change to strikethrough.
                      },
                      &quot;textStyle&quot;: { # Represents the styling that can be applied to text. Inherited text styles are represented as unset fields in this message. A text style&#x27;s parent depends on where the text style is defined: * The TextStyle of text in a Paragraph inherits from the paragraph&#x27;s corresponding named style type. * The TextStyle on a named style inherits from the normal text named style. * The TextStyle of the normal text named style inherits from the default text style in the Docs editor. * The TextStyle on a Paragraph element that is contained in a table may inherit its text style from the table style. If the text style does not inherit from a parent, unsetting fields will revert the style to a value matching the defaults in the Docs editor. # A TextStyle that only includes the changes made in this suggestion. This can be used along with the text_style_suggestion_state to see which fields have changed and their new values.
                        &quot;italic&quot;: True or False, # Whether or not the text is italicized.
                        &quot;baselineOffset&quot;: &quot;A String&quot;, # The text&#x27;s vertical offset from its normal position. Text with `SUPERSCRIPT` or `SUBSCRIPT` baseline offsets is automatically rendered in a smaller font size, computed based on the `font_size` field. The `font_size` itself is not affected by changes in this field.
                        &quot;bold&quot;: True or False, # Whether or not the text is rendered as bold.
                        &quot;fontSize&quot;: { # A magnitude in a single direction in the specified units. # The size of the text&#x27;s font.
                          &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                          &quot;magnitude&quot;: 3.14, # The magnitude.
                        },
                        &quot;foregroundColor&quot;: { # A color that can either be fully opaque or fully transparent. # The foreground color of the text. If set, the color is either an RGB color or transparent, depending on the `color` field.
                          &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                            &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                              &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                              &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                              &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                            },
                          },
                        },
                        &quot;backgroundColor&quot;: { # A color that can either be fully opaque or fully transparent. # The background color of the text. If set, the color is either an RGB color or transparent, depending on the `color` field.
                          &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                            &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                              &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                              &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                              &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                            },
                          },
                        },
                        &quot;link&quot;: { # A reference to another portion of a document or an external URL resource. # The hyperlink destination of the text. If unset, there is no link. Links are not inherited from parent text. Changing the link in an update request causes some other changes to the text style of the range: * When setting a link, the text foreground color will be updated to the default link color and the text will be underlined. If these fields are modified in the same request, those values will be used instead of the link defaults. * Setting a link on a text range that overlaps with an existing link will also update the existing link to point to the new URL. * Links are not settable on newline characters. As a result, setting a link on a text range that crosses a paragraph boundary, such as `&quot;ABC\n123&quot;`, will separate the newline character(s) into their own text runs. The link will be applied separately to the runs before and after the newline. * Removing a link will update the text style of the range to match the style of the preceding text (or the default text styles if the preceding text is another link) unless different styles are being set in the same request.
                          &quot;bookmarkId&quot;: &quot;A String&quot;, # The ID of a bookmark in this document.
                          &quot;url&quot;: &quot;A String&quot;, # An external URL.
                          &quot;headingId&quot;: &quot;A String&quot;, # The ID of a heading in this document.
                        },
                        &quot;strikethrough&quot;: True or False, # Whether or not the text is struck through.
                        &quot;weightedFontFamily&quot;: { # Represents a font family and weight of text. # The font family and rendered weight of the text. If an update request specifies values for both `weighted_font_family` and `bold`, the `weighted_font_family` is applied first, then `bold`. If `weighted_font_family#weight` is not set, it defaults to `400`. If `weighted_font_family` is set, then `weighted_font_family#font_family` must also be set with a non-empty value. Otherwise, a 400 bad request error is returned.
                          &quot;fontFamily&quot;: &quot;A String&quot;, # The font family of the text. The font family can be any font from the Font menu in Docs or from [Google Fonts] (https://fonts.google.com/). If the font name is unrecognized, the text is rendered in `Arial`.
                          &quot;weight&quot;: 42, # The weight of the font. This field can have any value that is a multiple of `100` between `100` and `900`, inclusive. This range corresponds to the numerical values described in the CSS 2.1 Specification, [section 15.6](https://www.w3.org/TR/CSS21/fonts.html#font-boldness), with non-numerical values disallowed. The default value is `400` (&quot;normal&quot;). The font weight makes up just one component of the rendered font weight. The rendered weight is determined by a combination of the `weight` and the text style&#x27;s resolved `bold` value, after accounting for inheritance: * If the text is bold and the weight is less than `400`, the rendered weight is 400. * If the text is bold and the weight is greater than or equal to `400` but is less than `700`, the rendered weight is `700`. * If the weight is greater than or equal to `700`, the rendered weight is equal to the weight. * If the text is not bold, the rendered weight is equal to the weight.
                        },
                        &quot;underline&quot;: True or False, # Whether or not the text is underlined.
                        &quot;smallCaps&quot;: True or False, # Whether or not the text is in small capital letters.
                      },
                    },
                  },
                  &quot;suggestedDeletionIds&quot;: [ # The suggested deletion IDs. If empty, then there are no suggested deletions of this content.
                    &quot;A String&quot;,
                  ],
                  &quot;textStyle&quot;: { # Represents the styling that can be applied to text. Inherited text styles are represented as unset fields in this message. A text style&#x27;s parent depends on where the text style is defined: * The TextStyle of text in a Paragraph inherits from the paragraph&#x27;s corresponding named style type. * The TextStyle on a named style inherits from the normal text named style. * The TextStyle of the normal text named style inherits from the default text style in the Docs editor. * The TextStyle on a Paragraph element that is contained in a table may inherit its text style from the table style. If the text style does not inherit from a parent, unsetting fields will revert the style to a value matching the defaults in the Docs editor. # The text style of this ColumnBreak. Similar to text content, like text runs and footnote references, the text style of a column break can affect content layout as well as the styling of text inserted adjacent to it.
                    &quot;italic&quot;: True or False, # Whether or not the text is italicized.
                    &quot;baselineOffset&quot;: &quot;A String&quot;, # The text&#x27;s vertical offset from its normal position. Text with `SUPERSCRIPT` or `SUBSCRIPT` baseline offsets is automatically rendered in a smaller font size, computed based on the `font_size` field. The `font_size` itself is not affected by changes in this field.
                    &quot;bold&quot;: True or False, # Whether or not the text is rendered as bold.
                    &quot;fontSize&quot;: { # A magnitude in a single direction in the specified units. # The size of the text&#x27;s font.
                      &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                      &quot;magnitude&quot;: 3.14, # The magnitude.
                    },
                    &quot;foregroundColor&quot;: { # A color that can either be fully opaque or fully transparent. # The foreground color of the text. If set, the color is either an RGB color or transparent, depending on the `color` field.
                      &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                        &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                          &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                          &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                          &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                        },
                      },
                    },
                    &quot;backgroundColor&quot;: { # A color that can either be fully opaque or fully transparent. # The background color of the text. If set, the color is either an RGB color or transparent, depending on the `color` field.
                      &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                        &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                          &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                          &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                          &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                        },
                      },
                    },
                    &quot;link&quot;: { # A reference to another portion of a document or an external URL resource. # The hyperlink destination of the text. If unset, there is no link. Links are not inherited from parent text. Changing the link in an update request causes some other changes to the text style of the range: * When setting a link, the text foreground color will be updated to the default link color and the text will be underlined. If these fields are modified in the same request, those values will be used instead of the link defaults. * Setting a link on a text range that overlaps with an existing link will also update the existing link to point to the new URL. * Links are not settable on newline characters. As a result, setting a link on a text range that crosses a paragraph boundary, such as `&quot;ABC\n123&quot;`, will separate the newline character(s) into their own text runs. The link will be applied separately to the runs before and after the newline. * Removing a link will update the text style of the range to match the style of the preceding text (or the default text styles if the preceding text is another link) unless different styles are being set in the same request.
                      &quot;bookmarkId&quot;: &quot;A String&quot;, # The ID of a bookmark in this document.
                      &quot;url&quot;: &quot;A String&quot;, # An external URL.
                      &quot;headingId&quot;: &quot;A String&quot;, # The ID of a heading in this document.
                    },
                    &quot;strikethrough&quot;: True or False, # Whether or not the text is struck through.
                    &quot;weightedFontFamily&quot;: { # Represents a font family and weight of text. # The font family and rendered weight of the text. If an update request specifies values for both `weighted_font_family` and `bold`, the `weighted_font_family` is applied first, then `bold`. If `weighted_font_family#weight` is not set, it defaults to `400`. If `weighted_font_family` is set, then `weighted_font_family#font_family` must also be set with a non-empty value. Otherwise, a 400 bad request error is returned.
                      &quot;fontFamily&quot;: &quot;A String&quot;, # The font family of the text. The font family can be any font from the Font menu in Docs or from [Google Fonts] (https://fonts.google.com/). If the font name is unrecognized, the text is rendered in `Arial`.
                      &quot;weight&quot;: 42, # The weight of the font. This field can have any value that is a multiple of `100` between `100` and `900`, inclusive. This range corresponds to the numerical values described in the CSS 2.1 Specification, [section 15.6](https://www.w3.org/TR/CSS21/fonts.html#font-boldness), with non-numerical values disallowed. The default value is `400` (&quot;normal&quot;). The font weight makes up just one component of the rendered font weight. The rendered weight is determined by a combination of the `weight` and the text style&#x27;s resolved `bold` value, after accounting for inheritance: * If the text is bold and the weight is less than `400`, the rendered weight is 400. * If the text is bold and the weight is greater than or equal to `400` but is less than `700`, the rendered weight is `700`. * If the weight is greater than or equal to `700`, the rendered weight is equal to the weight. * If the text is not bold, the rendered weight is equal to the weight.
                    },
                    &quot;underline&quot;: True or False, # Whether or not the text is underlined.
                    &quot;smallCaps&quot;: True or False, # Whether or not the text is in small capital letters.
                  },
                  &quot;suggestedInsertionIds&quot;: [ # The suggested insertion IDs. A ColumnBreak may have multiple insertion IDs if it is a nested suggested change. If empty, then this is not a suggested insertion.
                    &quot;A String&quot;,
                  ],
                },
              },
            ],
            &quot;positionedObjectIds&quot;: [ # The IDs of the positioned objects tethered to this paragraph.
              &quot;A String&quot;,
            ],
            &quot;paragraphStyle&quot;: { # Styles that apply to a whole paragraph. Inherited paragraph styles are represented as unset fields in this message. A paragraph style&#x27;s parent depends on where the paragraph style is defined: * The ParagraphStyle on a Paragraph inherits from the paragraph&#x27;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 is 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. # The style of this paragraph.
              &quot;borderRight&quot;: { # A border around a paragraph. # The border to the right of this paragraph. If unset, the value is inherited from the parent. Paragraph borders cannot be partially updated. When making changes to a paragraph border the new border must be specified in its entirety.
                &quot;color&quot;: { # A color that can either be fully opaque or fully transparent. # The color of the border.
                  &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                    &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                      &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                      &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                      &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                    },
                  },
                },
                &quot;width&quot;: { # A magnitude in a single direction in the specified units. # The width of the border.
                  &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                  &quot;magnitude&quot;: 3.14, # The magnitude.
                },
                &quot;padding&quot;: { # A magnitude in a single direction in the specified units. # The padding of the border.
                  &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                  &quot;magnitude&quot;: 3.14, # The magnitude.
                },
                &quot;dashStyle&quot;: &quot;A String&quot;, # The dash style of the border.
              },
              &quot;indentFirstLine&quot;: { # A magnitude in a single direction in the specified units. # The amount of indentation for the first line of the paragraph. If unset, the value is inherited from the parent.
                &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                &quot;magnitude&quot;: 3.14, # The magnitude.
              },
              &quot;alignment&quot;: &quot;A String&quot;, # The text alignment for this paragraph.
              &quot;lineSpacing&quot;: 3.14, # The amount of space between lines, as a percentage of normal, where normal is represented as 100.0. If unset, the value is inherited from the parent.
              &quot;keepLinesTogether&quot;: True or False, # Whether all lines of the paragraph should be laid out on the same page or column if possible. If unset, the value is inherited from the parent.
              &quot;avoidWidowAndOrphan&quot;: True or False, # Whether to avoid widows and orphans for the paragraph. If unset, the value is inherited from the parent.
              &quot;spaceBelow&quot;: { # A magnitude in a single direction in the specified units. # The amount of extra space below the paragraph. If unset, the value is inherited from the parent.
                &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                &quot;magnitude&quot;: 3.14, # The magnitude.
              },
              &quot;borderBetween&quot;: { # A border around a paragraph. # 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 making changes to a paragraph border the new border must be specified in its entirety.
                &quot;color&quot;: { # A color that can either be fully opaque or fully transparent. # The color of the border.
                  &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                    &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                      &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                      &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                      &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                    },
                  },
                },
                &quot;width&quot;: { # A magnitude in a single direction in the specified units. # The width of the border.
                  &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                  &quot;magnitude&quot;: 3.14, # The magnitude.
                },
                &quot;padding&quot;: { # A magnitude in a single direction in the specified units. # The padding of the border.
                  &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                  &quot;magnitude&quot;: 3.14, # The magnitude.
                },
                &quot;dashStyle&quot;: &quot;A String&quot;, # The dash style of the border.
              },
              &quot;headingId&quot;: &quot;A String&quot;, # The heading ID of the paragraph. If empty, then this paragraph is not a heading. This property is read-only.
              &quot;spaceAbove&quot;: { # A magnitude in a single direction in the specified units. # The amount of extra space above the paragraph. If unset, the value is inherited from the parent.
                &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                &quot;magnitude&quot;: 3.14, # The magnitude.
              },
              &quot;direction&quot;: &quot;A String&quot;, # The text direction of this paragraph. If unset, the value defaults to LEFT_TO_RIGHT since paragraph direction is not inherited.
              &quot;namedStyleType&quot;: &quot;A String&quot;, # The named style type of the paragraph. Since updating the named style type affects other properties within ParagraphStyle, the named style type is applied before the other properties are updated.
              &quot;tabStops&quot;: [ # A list of the tab stops for this paragraph. The list of tab stops is not inherited. This property is read-only.
                { # A tab stop within a paragraph.
                  &quot;offset&quot;: { # A magnitude in a single direction in the specified units. # The offset between this tab stop and the start margin.
                    &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                    &quot;magnitude&quot;: 3.14, # The magnitude.
                  },
                  &quot;alignment&quot;: &quot;A String&quot;, # The alignment of this tab stop. If unset, the value defaults to START.
                },
              ],
              &quot;indentStart&quot;: { # A magnitude in a single direction in the specified units. # The amount of indentation for the paragraph on the side that corresponds to the start of the text, based on the current paragraph direction. If unset, the value is inherited from the parent.
                &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                &quot;magnitude&quot;: 3.14, # The magnitude.
              },
              &quot;keepWithNext&quot;: True or False, # Whether at least a part of this paragraph should be laid out on the same page or column as the next paragraph if possible. If unset, the value is inherited from the parent.
              &quot;borderTop&quot;: { # A border around a paragraph. # 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 making changes to a paragraph border the new border must be specified in its entirety.
                &quot;color&quot;: { # A color that can either be fully opaque or fully transparent. # The color of the border.
                  &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                    &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                      &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                      &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                      &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                    },
                  },
                },
                &quot;width&quot;: { # A magnitude in a single direction in the specified units. # The width of the border.
                  &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                  &quot;magnitude&quot;: 3.14, # The magnitude.
                },
                &quot;padding&quot;: { # A magnitude in a single direction in the specified units. # The padding of the border.
                  &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                  &quot;magnitude&quot;: 3.14, # The magnitude.
                },
                &quot;dashStyle&quot;: &quot;A String&quot;, # The dash style of the border.
              },
              &quot;borderLeft&quot;: { # A border around a paragraph. # The border to the left of this paragraph. If unset, the value is inherited from the parent. Paragraph borders cannot be partially updated. When making changes to a paragraph border the new border must be specified in its entirety.
                &quot;color&quot;: { # A color that can either be fully opaque or fully transparent. # The color of the border.
                  &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                    &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                      &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                      &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                      &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                    },
                  },
                },
                &quot;width&quot;: { # A magnitude in a single direction in the specified units. # The width of the border.
                  &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                  &quot;magnitude&quot;: 3.14, # The magnitude.
                },
                &quot;padding&quot;: { # A magnitude in a single direction in the specified units. # The padding of the border.
                  &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                  &quot;magnitude&quot;: 3.14, # The magnitude.
                },
                &quot;dashStyle&quot;: &quot;A String&quot;, # The dash style of the border.
              },
              &quot;borderBottom&quot;: { # A border around a paragraph. # 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 making changes to a paragraph border the new border must be specified in its entirety.
                &quot;color&quot;: { # A color that can either be fully opaque or fully transparent. # The color of the border.
                  &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                    &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                      &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                      &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                      &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                    },
                  },
                },
                &quot;width&quot;: { # A magnitude in a single direction in the specified units. # The width of the border.
                  &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                  &quot;magnitude&quot;: 3.14, # The magnitude.
                },
                &quot;padding&quot;: { # A magnitude in a single direction in the specified units. # The padding of the border.
                  &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                  &quot;magnitude&quot;: 3.14, # The magnitude.
                },
                &quot;dashStyle&quot;: &quot;A String&quot;, # The dash style of the border.
              },
              &quot;shading&quot;: { # The shading of a paragraph. # The shading of the paragraph. If unset, the value is inherited from the parent.
                &quot;backgroundColor&quot;: { # A color that can either be fully opaque or fully transparent. # The background color of this paragraph shading.
                  &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                    &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                      &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                      &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                      &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                    },
                  },
                },
              },
              &quot;indentEnd&quot;: { # A magnitude in a single direction in the specified units. # 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.
                &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                &quot;magnitude&quot;: 3.14, # The magnitude.
              },
              &quot;spacingMode&quot;: &quot;A String&quot;, # The spacing mode for the paragraph.
            },
          },
          &quot;startIndex&quot;: 42, # The zero-based start index of this structural element, in UTF-16 code units.
          &quot;endIndex&quot;: 42, # The zero-based end index of this structural element, exclusive, in UTF-16 code units.
          &quot;tableOfContents&quot;: { # A StructuralElement representing a table of contents. # A table of contents type of structural element.
            &quot;suggestedInsertionIds&quot;: [ # The suggested insertion IDs. A TableOfContents may have multiple insertion IDs if it is a nested suggested change. If empty, then this is not a suggested insertion.
              &quot;A String&quot;,
            ],
            &quot;content&quot;: [ # The content of the table of contents.
              # Object with schema name: StructuralElement
            ],
            &quot;suggestedDeletionIds&quot;: [ # The suggested deletion IDs. If empty, then there are no suggested deletions of this content.
              &quot;A String&quot;,
            ],
          },
          &quot;table&quot;: { # A StructuralElement representing a table. # A table type of structural element.
            &quot;tableStyle&quot;: { # Styles that apply to a table. # The style of the table.
              &quot;tableColumnProperties&quot;: [ # The properties of each column. Note that in Docs, tables contain rows and rows contain cells, similar to HTML. So the properties for a row can be found on the row&#x27;s table_row_style.
                { # The properties of a column in a table.
                  &quot;widthType&quot;: &quot;A String&quot;, # The width type of the column.
                  &quot;width&quot;: { # A magnitude in a single direction in the specified units. # The width of the column. Set when the column&#x27;s `width_type` is FIXED_WIDTH.
                    &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                    &quot;magnitude&quot;: 3.14, # The magnitude.
                  },
                },
              ],
            },
            &quot;suggestedInsertionIds&quot;: [ # The suggested insertion IDs. A Table may have multiple insertion IDs if it is a nested suggested change. If empty, then this is not a suggested insertion.
              &quot;A String&quot;,
            ],
            &quot;tableRows&quot;: [ # The contents and style of each row.
              { # The contents and style of a row in a Table.
                &quot;suggestedDeletionIds&quot;: [ # The suggested deletion IDs. If empty, then there are no suggested deletions of this content.
                  &quot;A String&quot;,
                ],
                &quot;suggestedInsertionIds&quot;: [ # The suggested insertion IDs. A TableRow may have multiple insertion IDs if it is a nested suggested change. If empty, then this is not a suggested insertion.
                  &quot;A String&quot;,
                ],
                &quot;suggestedTableRowStyleChanges&quot;: { # The suggested style changes to this row, keyed by suggestion ID.
                  &quot;a_key&quot;: { # A suggested change to a TableRowStyle.
                    &quot;tableRowStyleSuggestionState&quot;: { # A mask that indicates which of the fields on the base TableRowStyle have been changed in this suggestion. For any field set to true, there is a new suggested value. # A mask that indicates which of the fields on the base TableRowStyle have been changed in this suggestion.
                      &quot;minRowHeightSuggested&quot;: True or False, # Indicates if there was a suggested change to min_row_height.
                    },
                    &quot;tableRowStyle&quot;: { # Styles that apply to a table row. # A TableRowStyle that only includes the changes made in this suggestion. This can be used along with the table_row_style_suggestion_state to see which fields have changed and their new values.
                      &quot;minRowHeight&quot;: { # A magnitude in a single direction in the specified units. # The minimum height of the row. The row will be rendered in the Docs editor at a height equal to or greater than this value in order to show all the content in the row&#x27;s cells.
                        &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                        &quot;magnitude&quot;: 3.14, # The magnitude.
                      },
                    },
                  },
                },
                &quot;startIndex&quot;: 42, # The zero-based start index of this row, in UTF-16 code units.
                &quot;tableCells&quot;: [ # The contents and style of each cell in this row. It is possible for a table to be non-rectangular, so some rows may have a different number of cells than other rows in the same table.
                  { # The contents and style of a cell in a Table.
                    &quot;tableCellStyle&quot;: { # The style of a TableCell. Inherited table cell styles are represented as unset fields in this message. A table cell style can inherit from the table&#x27;s style. # The style of the cell.
                      &quot;borderTop&quot;: { # A border around a table cell. Table cell borders cannot be transparent. To hide a table cell border, make its width 0. # The top border of the cell.
                        &quot;width&quot;: { # A magnitude in a single direction in the specified units. # The width of the border.
                          &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                          &quot;magnitude&quot;: 3.14, # The magnitude.
                        },
                        &quot;dashStyle&quot;: &quot;A String&quot;, # The dash style of the border.
                        &quot;color&quot;: { # A color that can either be fully opaque or fully transparent. # The color of the border. This color cannot be transparent.
                          &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                            &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                              &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                              &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                              &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                            },
                          },
                        },
                      },
                      &quot;borderBottom&quot;: { # A border around a table cell. Table cell borders cannot be transparent. To hide a table cell border, make its width 0. # The bottom border of the cell.
                        &quot;width&quot;: { # A magnitude in a single direction in the specified units. # The width of the border.
                          &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                          &quot;magnitude&quot;: 3.14, # The magnitude.
                        },
                        &quot;dashStyle&quot;: &quot;A String&quot;, # The dash style of the border.
                        &quot;color&quot;: { # A color that can either be fully opaque or fully transparent. # The color of the border. This color cannot be transparent.
                          &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                            &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                              &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                              &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                              &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                            },
                          },
                        },
                      },
                      &quot;contentAlignment&quot;: &quot;A String&quot;, # The alignment of the content in the table cell. The default alignment matches the alignment for newly created table cells in the Docs editor.
                      &quot;paddingLeft&quot;: { # A magnitude in a single direction in the specified units. # The left padding of the cell.
                        &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                        &quot;magnitude&quot;: 3.14, # The magnitude.
                      },
                      &quot;backgroundColor&quot;: { # A color that can either be fully opaque or fully transparent. # The background color of the cell.
                        &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                          &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                            &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                            &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                            &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                          },
                        },
                      },
                      &quot;paddingTop&quot;: { # A magnitude in a single direction in the specified units. # The top padding of the cell.
                        &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                        &quot;magnitude&quot;: 3.14, # The magnitude.
                      },
                      &quot;rowSpan&quot;: 42, # The row span of the cell. This property is read-only.
                      &quot;paddingRight&quot;: { # A magnitude in a single direction in the specified units. # The right padding of the cell.
                        &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                        &quot;magnitude&quot;: 3.14, # The magnitude.
                      },
                      &quot;borderRight&quot;: { # A border around a table cell. Table cell borders cannot be transparent. To hide a table cell border, make its width 0. # The right border of the cell.
                        &quot;width&quot;: { # A magnitude in a single direction in the specified units. # The width of the border.
                          &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                          &quot;magnitude&quot;: 3.14, # The magnitude.
                        },
                        &quot;dashStyle&quot;: &quot;A String&quot;, # The dash style of the border.
                        &quot;color&quot;: { # A color that can either be fully opaque or fully transparent. # The color of the border. This color cannot be transparent.
                          &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                            &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                              &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                              &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                              &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                            },
                          },
                        },
                      },
                      &quot;borderLeft&quot;: { # A border around a table cell. Table cell borders cannot be transparent. To hide a table cell border, make its width 0. # The left border of the cell.
                        &quot;width&quot;: { # A magnitude in a single direction in the specified units. # The width of the border.
                          &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                          &quot;magnitude&quot;: 3.14, # The magnitude.
                        },
                        &quot;dashStyle&quot;: &quot;A String&quot;, # The dash style of the border.
                        &quot;color&quot;: { # A color that can either be fully opaque or fully transparent. # The color of the border. This color cannot be transparent.
                          &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                            &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                              &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                              &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                              &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                            },
                          },
                        },
                      },
                      &quot;columnSpan&quot;: 42, # The column span of the cell. This property is read-only.
                      &quot;paddingBottom&quot;: { # A magnitude in a single direction in the specified units. # The bottom padding of the cell.
                        &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                        &quot;magnitude&quot;: 3.14, # The magnitude.
                      },
                    },
                    &quot;content&quot;: [ # The content of the cell.
                      # Object with schema name: StructuralElement
                    ],
                    &quot;suggestedDeletionIds&quot;: [ # The suggested deletion IDs. If empty, then there are no suggested deletions of this content.
                      &quot;A String&quot;,
                    ],
                    &quot;startIndex&quot;: 42, # The zero-based start index of this cell, in UTF-16 code units.
                    &quot;suggestedInsertionIds&quot;: [ # The suggested insertion IDs. A TableCell may have multiple insertion IDs if it is a nested suggested change. If empty, then this is not a suggested insertion.
                      &quot;A String&quot;,
                    ],
                    &quot;suggestedTableCellStyleChanges&quot;: { # The suggested changes to the table cell style, keyed by suggestion ID.
                      &quot;a_key&quot;: { # A suggested change to a TableCellStyle.
                        &quot;tableCellStyle&quot;: { # The style of a TableCell. Inherited table cell styles are represented as unset fields in this message. A table cell style can inherit from the table&#x27;s style. # A TableCellStyle that only includes the changes made in this suggestion. This can be used along with the table_cell_style_suggestion_state to see which fields have changed and their new values.
                          &quot;borderTop&quot;: { # A border around a table cell. Table cell borders cannot be transparent. To hide a table cell border, make its width 0. # The top border of the cell.
                            &quot;width&quot;: { # A magnitude in a single direction in the specified units. # The width of the border.
                              &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                              &quot;magnitude&quot;: 3.14, # The magnitude.
                            },
                            &quot;dashStyle&quot;: &quot;A String&quot;, # The dash style of the border.
                            &quot;color&quot;: { # A color that can either be fully opaque or fully transparent. # The color of the border. This color cannot be transparent.
                              &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                                &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                                  &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                                  &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                                  &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                                },
                              },
                            },
                          },
                          &quot;borderBottom&quot;: { # A border around a table cell. Table cell borders cannot be transparent. To hide a table cell border, make its width 0. # The bottom border of the cell.
                            &quot;width&quot;: { # A magnitude in a single direction in the specified units. # The width of the border.
                              &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                              &quot;magnitude&quot;: 3.14, # The magnitude.
                            },
                            &quot;dashStyle&quot;: &quot;A String&quot;, # The dash style of the border.
                            &quot;color&quot;: { # A color that can either be fully opaque or fully transparent. # The color of the border. This color cannot be transparent.
                              &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                                &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                                  &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                                  &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                                  &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                                },
                              },
                            },
                          },
                          &quot;contentAlignment&quot;: &quot;A String&quot;, # The alignment of the content in the table cell. The default alignment matches the alignment for newly created table cells in the Docs editor.
                          &quot;paddingLeft&quot;: { # A magnitude in a single direction in the specified units. # The left padding of the cell.
                            &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                            &quot;magnitude&quot;: 3.14, # The magnitude.
                          },
                          &quot;backgroundColor&quot;: { # A color that can either be fully opaque or fully transparent. # The background color of the cell.
                            &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                              &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                                &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                                &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                                &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                              },
                            },
                          },
                          &quot;paddingTop&quot;: { # A magnitude in a single direction in the specified units. # The top padding of the cell.
                            &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                            &quot;magnitude&quot;: 3.14, # The magnitude.
                          },
                          &quot;rowSpan&quot;: 42, # The row span of the cell. This property is read-only.
                          &quot;paddingRight&quot;: { # A magnitude in a single direction in the specified units. # The right padding of the cell.
                            &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                            &quot;magnitude&quot;: 3.14, # The magnitude.
                          },
                          &quot;borderRight&quot;: { # A border around a table cell. Table cell borders cannot be transparent. To hide a table cell border, make its width 0. # The right border of the cell.
                            &quot;width&quot;: { # A magnitude in a single direction in the specified units. # The width of the border.
                              &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                              &quot;magnitude&quot;: 3.14, # The magnitude.
                            },
                            &quot;dashStyle&quot;: &quot;A String&quot;, # The dash style of the border.
                            &quot;color&quot;: { # A color that can either be fully opaque or fully transparent. # The color of the border. This color cannot be transparent.
                              &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                                &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                                  &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                                  &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                                  &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                                },
                              },
                            },
                          },
                          &quot;borderLeft&quot;: { # A border around a table cell. Table cell borders cannot be transparent. To hide a table cell border, make its width 0. # The left border of the cell.
                            &quot;width&quot;: { # A magnitude in a single direction in the specified units. # The width of the border.
                              &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                              &quot;magnitude&quot;: 3.14, # The magnitude.
                            },
                            &quot;dashStyle&quot;: &quot;A String&quot;, # The dash style of the border.
                            &quot;color&quot;: { # A color that can either be fully opaque or fully transparent. # The color of the border. This color cannot be transparent.
                              &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                                &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                                  &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                                  &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                                  &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                                },
                              },
                            },
                          },
                          &quot;columnSpan&quot;: 42, # The column span of the cell. This property is read-only.
                          &quot;paddingBottom&quot;: { # A magnitude in a single direction in the specified units. # The bottom padding of the cell.
                            &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                            &quot;magnitude&quot;: 3.14, # The magnitude.
                          },
                        },
                        &quot;tableCellStyleSuggestionState&quot;: { # A mask that indicates which of the fields on the base TableCellStyle have been changed in this suggestion. For any field set to true, there is a new suggested value. # A mask that indicates which of the fields on the base TableCellStyle have been changed in this suggestion.
                          &quot;rowSpanSuggested&quot;: True or False, # Indicates if there was a suggested change to row_span.
                          &quot;columnSpanSuggested&quot;: True or False, # Indicates if there was a suggested change to column_span.
                          &quot;borderBottomSuggested&quot;: True or False, # Indicates if there was a suggested change to border_bottom.
                          &quot;borderLeftSuggested&quot;: True or False, # Indicates if there was a suggested change to border_left.
                          &quot;paddingLeftSuggested&quot;: True or False, # Indicates if there was a suggested change to padding_left.
                          &quot;paddingRightSuggested&quot;: True or False, # Indicates if there was a suggested change to padding_right.
                          &quot;paddingBottomSuggested&quot;: True or False, # Indicates if there was a suggested change to padding_bottom.
                          &quot;paddingTopSuggested&quot;: True or False, # Indicates if there was a suggested change to padding_top.
                          &quot;contentAlignmentSuggested&quot;: True or False, # Indicates if there was a suggested change to content_alignment.
                          &quot;borderRightSuggested&quot;: True or False, # Indicates if there was a suggested change to border_right.
                          &quot;backgroundColorSuggested&quot;: True or False, # Indicates if there was a suggested change to background_color.
                          &quot;borderTopSuggested&quot;: True or False, # Indicates if there was a suggested change to border_top.
                        },
                      },
                    },
                    &quot;endIndex&quot;: 42, # The zero-based end index of this cell, exclusive, in UTF-16 code units.
                  },
                ],
                &quot;endIndex&quot;: 42, # The zero-based end index of this row, exclusive, in UTF-16 code units.
                &quot;tableRowStyle&quot;: { # Styles that apply to a table row. # The style of the table row.
                  &quot;minRowHeight&quot;: { # A magnitude in a single direction in the specified units. # The minimum height of the row. The row will be rendered in the Docs editor at a height equal to or greater than this value in order to show all the content in the row&#x27;s cells.
                    &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                    &quot;magnitude&quot;: 3.14, # The magnitude.
                  },
                },
              },
            ],
            &quot;suggestedDeletionIds&quot;: [ # The suggested deletion IDs. If empty, then there are no suggested deletions of this content.
              &quot;A String&quot;,
            ],
            &quot;rows&quot;: 42, # Number of rows in the table.
            &quot;columns&quot;: 42, # Number of columns in the table. It is possible for a table to be non-rectangular, so some rows may have a different number of cells.
          },
          &quot;sectionBreak&quot;: { # A StructuralElement representing a section break. A section is a range of content which has the same SectionStyle. A section break represents the start of a new section, and the section style applies to the section after the section break. The document body always begins with a section break. # A section break type of structural element.
            &quot;suggestedInsertionIds&quot;: [ # The suggested insertion IDs. A SectionBreak may have multiple insertion IDs if it is a nested suggested change. If empty, then this is not a suggested insertion.
              &quot;A String&quot;,
            ],
            &quot;sectionStyle&quot;: { # The styling that applies to a section. # The style of the section after this section break.
              &quot;marginLeft&quot;: { # A magnitude in a single direction in the specified units. # The left page margin of the section. If unset, uses margin_left from DocumentStyle. Updating left margin causes columns in this section to resize. Since the margin affects column width, it is applied before column properties. When updating this property, setting a concrete value is required. Unsetting this property results in a 400 bad request error.
                &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                &quot;magnitude&quot;: 3.14, # The magnitude.
              },
              &quot;sectionType&quot;: &quot;A String&quot;, # Output only. The type of section.
              &quot;evenPageHeaderId&quot;: &quot;A String&quot;, # The ID of the header used only for even pages. If the value of DocumentStyle&#x27;s use_even_page_header_footer is true, this value is used for the headers on even pages in the section. If it is false, the headers on even pages uses the default_header_id. If unset, the value inherits from the previous SectionBreak&#x27;s SectionStyle. If the value is unset in the first SectionBreak, it inherits from DocumentStyle&#x27;s even_page_header_id. This property is read-only.
              &quot;useFirstPageHeaderFooter&quot;: True or False, # Indicates whether to use the first page header / footer IDs for the first page of the section. If unset, it inherits from DocumentStyle&#x27;s use_first_page_header_footer for the first section. If the value is unset for subsequent sectors, it should be interpreted as false. When updating this property, setting a concrete value is required. Unsetting this property results in a 400 bad request error.
              &quot;marginHeader&quot;: { # A magnitude in a single direction in the specified units. # The header margin of the section. If unset, uses margin_header from DocumentStyle. If updated, use_custom_header_footer_margins is set to true on DocumentStyle. The value of use_custom_header_footer_margins on DocumentStyle indicates if a header margin is being respected for this section. When updating this property, setting a concrete value is required. Unsetting this property results in a 400 bad request error.
                &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                &quot;magnitude&quot;: 3.14, # The magnitude.
              },
              &quot;firstPageFooterId&quot;: &quot;A String&quot;, # The ID of the footer used only for the first page of the section. If use_first_page_header_footer is true, this value is used for the footer on the first page of the section. If it is false, the footer on the first page of the section uses the default_footer_id. If unset, the value inherits from the previous SectionBreak&#x27;s SectionStyle. If the value is unset in the first SectionBreak, it inherits from DocumentStyle&#x27;s first_page_footer_id. This property is read-only.
              &quot;firstPageHeaderId&quot;: &quot;A String&quot;, # The ID of the header used only for the first page of the section. If use_first_page_header_footer is true, this value is used for the header on the first page of the section. If it is false, the header on the first page of the section uses the default_header_id. If unset, the value inherits from the previous SectionBreak&#x27;s SectionStyle. If the value is unset in the first SectionBreak, it inherits from DocumentStyle&#x27;s first_page_header_id. This property is read-only.
              &quot;columnSeparatorStyle&quot;: &quot;A String&quot;, # The style of column separators. This style can be set even when there is one column in the section. When updating this property, setting a concrete value is required. Unsetting this property results in a 400 bad request error.
              &quot;marginBottom&quot;: { # A magnitude in a single direction in the specified units. # The bottom page margin of the section. If unset, uses margin_bottom from DocumentStyle. When updating this property, setting a concrete value is required. Unsetting this property results in a 400 bad request error.
                &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                &quot;magnitude&quot;: 3.14, # The magnitude.
              },
              &quot;marginFooter&quot;: { # A magnitude in a single direction in the specified units. # The footer margin of the section. If unset, uses margin_footer from DocumentStyle. If updated, use_custom_header_footer_margins is set to true on DocumentStyle. The value of use_custom_header_footer_margins on DocumentStyle indicates if a footer margin is being respected for this section When updating this property, setting a concrete value is required. Unsetting this property results in a 400 bad request error.
                &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                &quot;magnitude&quot;: 3.14, # The magnitude.
              },
              &quot;defaultFooterId&quot;: &quot;A String&quot;, # The ID of the default footer. If unset, the value inherits from the previous SectionBreak&#x27;s SectionStyle. If the value is unset in the first SectionBreak, it inherits from DocumentStyle&#x27;s default_footer_id. This property is read-only.
              &quot;marginTop&quot;: { # A magnitude in a single direction in the specified units. # The top page margin of the section. If unset, uses margin_top from DocumentStyle. When updating this property, setting a concrete value is required. Unsetting this property results in a 400 bad request error.
                &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                &quot;magnitude&quot;: 3.14, # The magnitude.
              },
              &quot;contentDirection&quot;: &quot;A String&quot;, # The content direction of this section. If unset, the value defaults to LEFT_TO_RIGHT. When updating this property, setting a concrete value is required. Unsetting this property results in a 400 bad request error.
              &quot;evenPageFooterId&quot;: &quot;A String&quot;, # The ID of the footer used only for even pages. If the value of DocumentStyle&#x27;s use_even_page_header_footer is true, this value is used for the footers on even pages in the section. If it is false, the footers on even pages uses the default_footer_id. If unset, the value inherits from the previous SectionBreak&#x27;s SectionStyle. If the value is unset in the first SectionBreak, it inherits from DocumentStyle&#x27;s even_page_footer_id. This property is read-only.
              &quot;marginRight&quot;: { # A magnitude in a single direction in the specified units. # The right page margin of the section. If unset, uses margin_right from DocumentStyle. Updating right margin causes columns in this section to resize. Since the margin affects column width, it is applied before column properties. When updating this property, setting a concrete value is required. Unsetting this property results in a 400 bad request error.
                &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                &quot;magnitude&quot;: 3.14, # The magnitude.
              },
              &quot;defaultHeaderId&quot;: &quot;A String&quot;, # The ID of the default header. If unset, the value inherits from the previous SectionBreak&#x27;s SectionStyle. If the value is unset in the first SectionBreak, it inherits from DocumentStyle&#x27;s default_header_id. This property is read-only.
              &quot;pageNumberStart&quot;: 42, # The page number from which to start counting the number of pages for this section. If unset, page numbering continues from the previous section. If the value is unset in the first SectionBreak, refer to DocumentStyle&#x27;s page_number_start. When updating this property, setting a concrete value is required. Unsetting this property results in a 400 bad request error.
              &quot;columnProperties&quot;: [ # The section&#x27;s columns properties. If empty, the section contains one column with the default properties in the Docs editor. A section can be updated to have no more than three columns. When updating this property, setting a concrete value is required. Unsetting this property will result in a 400 bad request error.
                { # Properties that apply to a section&#x27;s column.
                  &quot;paddingEnd&quot;: { # A magnitude in a single direction in the specified units. # The padding at the end of the column.
                    &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                    &quot;magnitude&quot;: 3.14, # The magnitude.
                  },
                  &quot;width&quot;: { # A magnitude in a single direction in the specified units. # Output only. The width of the column.
                    &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                    &quot;magnitude&quot;: 3.14, # The magnitude.
                  },
                },
              ],
            },
            &quot;suggestedDeletionIds&quot;: [ # The suggested deletion IDs. If empty, then there are no suggested deletions of this content.
              &quot;A String&quot;,
            ],
          },
        },
      ],
      &quot;headerId&quot;: &quot;A String&quot;, # The ID of the header.
    },
  },
  &quot;namedRanges&quot;: { # Output only. The named ranges in the document, keyed by name.
    &quot;a_key&quot;: { # A collection of all the NamedRanges in the document that share a given name.
      &quot;namedRanges&quot;: [ # The NamedRanges that share the same name.
        { # A collection of Ranges with the same named range ID. Named ranges allow developers to associate parts of a document with an arbitrary user-defined label so their contents can be programmatically read or edited at a later time. A document can contain multiple named ranges with the same name, but every named range has a unique ID. A named range is created with a single Range, and content inserted inside a named range generally expands that range. However, certain document changes can cause the range to be split into multiple ranges. Named ranges are not private. All applications and collaborators that have access to the document can see its named ranges.
          &quot;namedRangeId&quot;: &quot;A String&quot;, # The ID of the named range.
          &quot;name&quot;: &quot;A String&quot;, # The name of the named range.
          &quot;ranges&quot;: [ # The ranges that belong to this named range.
            { # Specifies a contiguous range of text.
              &quot;segmentId&quot;: &quot;A String&quot;, # The ID of the header, footer or footnote that this range is contained in. An empty segment ID signifies the document&#x27;s body.
              &quot;startIndex&quot;: 42, # The zero-based start index of this range, in UTF-16 code units. In all current uses, a start index must be provided. This field is an Int32Value in order to accommodate future use cases with open-ended ranges.
              &quot;endIndex&quot;: 42, # The zero-based end index of this range, exclusive, in UTF-16 code units. In all current uses, an end index must be provided. This field is an Int32Value in order to accommodate future use cases with open-ended ranges.
            },
          ],
        },
      ],
      &quot;name&quot;: &quot;A String&quot;, # The name that all the named ranges share.
    },
  },
}

  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    { # A Google Docs document.
    &quot;suggestionsViewMode&quot;: &quot;A String&quot;, # Output only. The suggestions view mode applied to the document. Note: When editing a document, changes must be based on a document with SUGGESTIONS_INLINE.
    &quot;documentId&quot;: &quot;A String&quot;, # Output only. The ID of the document.
    &quot;suggestedNamedStylesChanges&quot;: { # Output only. The suggested changes to the named styles of the document, keyed by suggestion ID.
      &quot;a_key&quot;: { # A suggested change to the NamedStyles.
        &quot;namedStyles&quot;: { # The named styles. Paragraphs in the document can inherit their TextStyle and ParagraphStyle from these named styles. # A NamedStyles that only includes the changes made in this suggestion. This can be used along with the named_styles_suggestion_state to see which fields have changed and their new values.
          &quot;styles&quot;: [ # The named styles. There is an entry for each of the possible named style types.
            { # A named style. Paragraphs in the document can inherit their TextStyle and ParagraphStyle from this named style when they have the same named style type.
              &quot;namedStyleType&quot;: &quot;A String&quot;, # The type of this named style.
              &quot;textStyle&quot;: { # Represents the styling that can be applied to text. Inherited text styles are represented as unset fields in this message. A text style&#x27;s parent depends on where the text style is defined: * The TextStyle of text in a Paragraph inherits from the paragraph&#x27;s corresponding named style type. * The TextStyle on a named style inherits from the normal text named style. * The TextStyle of the normal text named style inherits from the default text style in the Docs editor. * The TextStyle on a Paragraph element that is contained in a table may inherit its text style from the table style. If the text style does not inherit from a parent, unsetting fields will revert the style to a value matching the defaults in the Docs editor. # The text style of this named style.
                &quot;italic&quot;: True or False, # Whether or not the text is italicized.
                &quot;baselineOffset&quot;: &quot;A String&quot;, # The text&#x27;s vertical offset from its normal position. Text with `SUPERSCRIPT` or `SUBSCRIPT` baseline offsets is automatically rendered in a smaller font size, computed based on the `font_size` field. The `font_size` itself is not affected by changes in this field.
                &quot;bold&quot;: True or False, # Whether or not the text is rendered as bold.
                &quot;fontSize&quot;: { # A magnitude in a single direction in the specified units. # The size of the text&#x27;s font.
                  &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                  &quot;magnitude&quot;: 3.14, # The magnitude.
                },
                &quot;foregroundColor&quot;: { # A color that can either be fully opaque or fully transparent. # The foreground color of the text. If set, the color is either an RGB color or transparent, depending on the `color` field.
                  &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                    &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                      &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                      &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                      &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                    },
                  },
                },
                &quot;backgroundColor&quot;: { # A color that can either be fully opaque or fully transparent. # The background color of the text. If set, the color is either an RGB color or transparent, depending on the `color` field.
                  &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                    &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                      &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                      &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                      &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                    },
                  },
                },
                &quot;link&quot;: { # A reference to another portion of a document or an external URL resource. # The hyperlink destination of the text. If unset, there is no link. Links are not inherited from parent text. Changing the link in an update request causes some other changes to the text style of the range: * When setting a link, the text foreground color will be updated to the default link color and the text will be underlined. If these fields are modified in the same request, those values will be used instead of the link defaults. * Setting a link on a text range that overlaps with an existing link will also update the existing link to point to the new URL. * Links are not settable on newline characters. As a result, setting a link on a text range that crosses a paragraph boundary, such as `&quot;ABC\n123&quot;`, will separate the newline character(s) into their own text runs. The link will be applied separately to the runs before and after the newline. * Removing a link will update the text style of the range to match the style of the preceding text (or the default text styles if the preceding text is another link) unless different styles are being set in the same request.
                  &quot;bookmarkId&quot;: &quot;A String&quot;, # The ID of a bookmark in this document.
                  &quot;url&quot;: &quot;A String&quot;, # An external URL.
                  &quot;headingId&quot;: &quot;A String&quot;, # The ID of a heading in this document.
                },
                &quot;strikethrough&quot;: True or False, # Whether or not the text is struck through.
                &quot;weightedFontFamily&quot;: { # Represents a font family and weight of text. # The font family and rendered weight of the text. If an update request specifies values for both `weighted_font_family` and `bold`, the `weighted_font_family` is applied first, then `bold`. If `weighted_font_family#weight` is not set, it defaults to `400`. If `weighted_font_family` is set, then `weighted_font_family#font_family` must also be set with a non-empty value. Otherwise, a 400 bad request error is returned.
                  &quot;fontFamily&quot;: &quot;A String&quot;, # The font family of the text. The font family can be any font from the Font menu in Docs or from [Google Fonts] (https://fonts.google.com/). If the font name is unrecognized, the text is rendered in `Arial`.
                  &quot;weight&quot;: 42, # The weight of the font. This field can have any value that is a multiple of `100` between `100` and `900`, inclusive. This range corresponds to the numerical values described in the CSS 2.1 Specification, [section 15.6](https://www.w3.org/TR/CSS21/fonts.html#font-boldness), with non-numerical values disallowed. The default value is `400` (&quot;normal&quot;). The font weight makes up just one component of the rendered font weight. The rendered weight is determined by a combination of the `weight` and the text style&#x27;s resolved `bold` value, after accounting for inheritance: * If the text is bold and the weight is less than `400`, the rendered weight is 400. * If the text is bold and the weight is greater than or equal to `400` but is less than `700`, the rendered weight is `700`. * If the weight is greater than or equal to `700`, the rendered weight is equal to the weight. * If the text is not bold, the rendered weight is equal to the weight.
                },
                &quot;underline&quot;: True or False, # Whether or not the text is underlined.
                &quot;smallCaps&quot;: True or False, # Whether or not the text is in small capital letters.
              },
              &quot;paragraphStyle&quot;: { # Styles that apply to a whole paragraph. Inherited paragraph styles are represented as unset fields in this message. A paragraph style&#x27;s parent depends on where the paragraph style is defined: * The ParagraphStyle on a Paragraph inherits from the paragraph&#x27;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 is 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. # The paragraph style of this named style.
                &quot;borderRight&quot;: { # A border around a paragraph. # The border to the right of this paragraph. If unset, the value is inherited from the parent. Paragraph borders cannot be partially updated. When making changes to a paragraph border the new border must be specified in its entirety.
                  &quot;color&quot;: { # A color that can either be fully opaque or fully transparent. # The color of the border.
                    &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                      &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                        &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                        &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                        &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                      },
                    },
                  },
                  &quot;width&quot;: { # A magnitude in a single direction in the specified units. # The width of the border.
                    &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                    &quot;magnitude&quot;: 3.14, # The magnitude.
                  },
                  &quot;padding&quot;: { # A magnitude in a single direction in the specified units. # The padding of the border.
                    &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                    &quot;magnitude&quot;: 3.14, # The magnitude.
                  },
                  &quot;dashStyle&quot;: &quot;A String&quot;, # The dash style of the border.
                },
                &quot;indentFirstLine&quot;: { # A magnitude in a single direction in the specified units. # The amount of indentation for the first line of the paragraph. If unset, the value is inherited from the parent.
                  &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                  &quot;magnitude&quot;: 3.14, # The magnitude.
                },
                &quot;alignment&quot;: &quot;A String&quot;, # The text alignment for this paragraph.
                &quot;lineSpacing&quot;: 3.14, # The amount of space between lines, as a percentage of normal, where normal is represented as 100.0. If unset, the value is inherited from the parent.
                &quot;keepLinesTogether&quot;: True or False, # Whether all lines of the paragraph should be laid out on the same page or column if possible. If unset, the value is inherited from the parent.
                &quot;avoidWidowAndOrphan&quot;: True or False, # Whether to avoid widows and orphans for the paragraph. If unset, the value is inherited from the parent.
                &quot;spaceBelow&quot;: { # A magnitude in a single direction in the specified units. # The amount of extra space below the paragraph. If unset, the value is inherited from the parent.
                  &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                  &quot;magnitude&quot;: 3.14, # The magnitude.
                },
                &quot;borderBetween&quot;: { # A border around a paragraph. # 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 making changes to a paragraph border the new border must be specified in its entirety.
                  &quot;color&quot;: { # A color that can either be fully opaque or fully transparent. # The color of the border.
                    &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                      &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                        &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                        &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                        &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                      },
                    },
                  },
                  &quot;width&quot;: { # A magnitude in a single direction in the specified units. # The width of the border.
                    &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                    &quot;magnitude&quot;: 3.14, # The magnitude.
                  },
                  &quot;padding&quot;: { # A magnitude in a single direction in the specified units. # The padding of the border.
                    &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                    &quot;magnitude&quot;: 3.14, # The magnitude.
                  },
                  &quot;dashStyle&quot;: &quot;A String&quot;, # The dash style of the border.
                },
                &quot;headingId&quot;: &quot;A String&quot;, # The heading ID of the paragraph. If empty, then this paragraph is not a heading. This property is read-only.
                &quot;spaceAbove&quot;: { # A magnitude in a single direction in the specified units. # The amount of extra space above the paragraph. If unset, the value is inherited from the parent.
                  &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                  &quot;magnitude&quot;: 3.14, # The magnitude.
                },
                &quot;direction&quot;: &quot;A String&quot;, # The text direction of this paragraph. If unset, the value defaults to LEFT_TO_RIGHT since paragraph direction is not inherited.
                &quot;namedStyleType&quot;: &quot;A String&quot;, # The named style type of the paragraph. Since updating the named style type affects other properties within ParagraphStyle, the named style type is applied before the other properties are updated.
                &quot;tabStops&quot;: [ # A list of the tab stops for this paragraph. The list of tab stops is not inherited. This property is read-only.
                  { # A tab stop within a paragraph.
                    &quot;offset&quot;: { # A magnitude in a single direction in the specified units. # The offset between this tab stop and the start margin.
                      &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                      &quot;magnitude&quot;: 3.14, # The magnitude.
                    },
                    &quot;alignment&quot;: &quot;A String&quot;, # The alignment of this tab stop. If unset, the value defaults to START.
                  },
                ],
                &quot;indentStart&quot;: { # A magnitude in a single direction in the specified units. # The amount of indentation for the paragraph on the side that corresponds to the start of the text, based on the current paragraph direction. If unset, the value is inherited from the parent.
                  &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                  &quot;magnitude&quot;: 3.14, # The magnitude.
                },
                &quot;keepWithNext&quot;: True or False, # Whether at least a part of this paragraph should be laid out on the same page or column as the next paragraph if possible. If unset, the value is inherited from the parent.
                &quot;borderTop&quot;: { # A border around a paragraph. # 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 making changes to a paragraph border the new border must be specified in its entirety.
                  &quot;color&quot;: { # A color that can either be fully opaque or fully transparent. # The color of the border.
                    &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                      &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                        &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                        &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                        &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                      },
                    },
                  },
                  &quot;width&quot;: { # A magnitude in a single direction in the specified units. # The width of the border.
                    &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                    &quot;magnitude&quot;: 3.14, # The magnitude.
                  },
                  &quot;padding&quot;: { # A magnitude in a single direction in the specified units. # The padding of the border.
                    &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                    &quot;magnitude&quot;: 3.14, # The magnitude.
                  },
                  &quot;dashStyle&quot;: &quot;A String&quot;, # The dash style of the border.
                },
                &quot;borderLeft&quot;: { # A border around a paragraph. # The border to the left of this paragraph. If unset, the value is inherited from the parent. Paragraph borders cannot be partially updated. When making changes to a paragraph border the new border must be specified in its entirety.
                  &quot;color&quot;: { # A color that can either be fully opaque or fully transparent. # The color of the border.
                    &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                      &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                        &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                        &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                        &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                      },
                    },
                  },
                  &quot;width&quot;: { # A magnitude in a single direction in the specified units. # The width of the border.
                    &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                    &quot;magnitude&quot;: 3.14, # The magnitude.
                  },
                  &quot;padding&quot;: { # A magnitude in a single direction in the specified units. # The padding of the border.
                    &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                    &quot;magnitude&quot;: 3.14, # The magnitude.
                  },
                  &quot;dashStyle&quot;: &quot;A String&quot;, # The dash style of the border.
                },
                &quot;borderBottom&quot;: { # A border around a paragraph. # 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 making changes to a paragraph border the new border must be specified in its entirety.
                  &quot;color&quot;: { # A color that can either be fully opaque or fully transparent. # The color of the border.
                    &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                      &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                        &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                        &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                        &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                      },
                    },
                  },
                  &quot;width&quot;: { # A magnitude in a single direction in the specified units. # The width of the border.
                    &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                    &quot;magnitude&quot;: 3.14, # The magnitude.
                  },
                  &quot;padding&quot;: { # A magnitude in a single direction in the specified units. # The padding of the border.
                    &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                    &quot;magnitude&quot;: 3.14, # The magnitude.
                  },
                  &quot;dashStyle&quot;: &quot;A String&quot;, # The dash style of the border.
                },
                &quot;shading&quot;: { # The shading of a paragraph. # The shading of the paragraph. If unset, the value is inherited from the parent.
                  &quot;backgroundColor&quot;: { # A color that can either be fully opaque or fully transparent. # The background color of this paragraph shading.
                    &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                      &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                        &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                        &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                        &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                      },
                    },
                  },
                },
                &quot;indentEnd&quot;: { # A magnitude in a single direction in the specified units. # 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.
                  &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                  &quot;magnitude&quot;: 3.14, # The magnitude.
                },
                &quot;spacingMode&quot;: &quot;A String&quot;, # The spacing mode for the paragraph.
              },
            },
          ],
        },
        &quot;namedStylesSuggestionState&quot;: { # The suggestion state of a NamedStyles message. # A mask that indicates which of the fields on the base NamedStyles have been changed in this suggestion.
          &quot;stylesSuggestionStates&quot;: [ # A mask that indicates which of the fields on the corresponding NamedStyle in styles have been changed in this suggestion. The order of these named style suggestion states match the order of the corresponding named style within the named styles suggestion.
            { # A suggestion state of a NamedStyle message.
              &quot;paragraphStyleSuggestionState&quot;: { # A mask that indicates which of the fields on the base ParagraphStyle have been changed in this suggestion. For any field set to true, there is a new suggested value. # A mask that indicates which of the fields in paragraph style have been changed in this suggestion.
                &quot;borderRightSuggested&quot;: True or False, # Indicates if there was a suggested change to border_right.
                &quot;indentEndSuggested&quot;: True or False, # Indicates if there was a suggested change to indent_end.
                &quot;lineSpacingSuggested&quot;: True or False, # Indicates if there was a suggested change to line_spacing.
                &quot;headingIdSuggested&quot;: True or False, # Indicates if there was a suggested change to heading_id.
                &quot;indentStartSuggested&quot;: True or False, # Indicates if there was a suggested change to indent_start.
                &quot;keepWithNextSuggested&quot;: True or False, # Indicates if there was a suggested change to keep_with_next.
                &quot;namedStyleTypeSuggested&quot;: True or False, # Indicates if there was a suggested change to named_style_type.
                &quot;borderTopSuggested&quot;: True or False, # Indicates if there was a suggested change to border_top.
                &quot;keepLinesTogetherSuggested&quot;: True or False, # Indicates if there was a suggested change to keep_lines_together.
                &quot;avoidWidowAndOrphanSuggested&quot;: True or False, # Indicates if there was a suggested change to avoid_widow_and_orphan.
                &quot;spaceBelowSuggested&quot;: True or False, # Indicates if there was a suggested change to space_below.
                &quot;indentFirstLineSuggested&quot;: True or False, # Indicates if there was a suggested change to indent_first_line.
                &quot;shadingSuggestionState&quot;: { # A mask that indicates which of the fields on the base Shading have been changed in this suggested change. For any field set to true, there is a new suggested value. # A mask that indicates which of the fields in shading have been changed in this suggestion.
                  &quot;backgroundColorSuggested&quot;: True or False, # Indicates if there was a suggested change to the Shading.
                },
                &quot;directionSuggested&quot;: True or False, # Indicates if there was a suggested change to direction.
                &quot;borderBetweenSuggested&quot;: True or False, # Indicates if there was a suggested change to border_between.
                &quot;spaceAboveSuggested&quot;: True or False, # Indicates if there was a suggested change to space_above.
                &quot;borderLeftSuggested&quot;: True or False, # Indicates if there was a suggested change to border_left.
                &quot;spacingModeSuggested&quot;: True or False, # Indicates if there was a suggested change to spacing_mode.
                &quot;borderBottomSuggested&quot;: True or False, # Indicates if there was a suggested change to border_bottom.
                &quot;alignmentSuggested&quot;: True or False, # Indicates if there was a suggested change to alignment.
              },
              &quot;textStyleSuggestionState&quot;: { # A mask that indicates which of the fields on the base TextStyle have been changed in this suggestion. For any field set to true, there is a new suggested value. # A mask that indicates which of the fields in text style have been changed in this suggestion.
                &quot;backgroundColorSuggested&quot;: True or False, # Indicates if there was a suggested change to background_color.
                &quot;fontSizeSuggested&quot;: True or False, # Indicates if there was a suggested change to font_size.
                &quot;boldSuggested&quot;: True or False, # Indicates if there was a suggested change to bold.
                &quot;baselineOffsetSuggested&quot;: True or False, # Indicates if there was a suggested change to baseline_offset.
                &quot;foregroundColorSuggested&quot;: True or False, # Indicates if there was a suggested change to foreground_color.
                &quot;italicSuggested&quot;: True or False, # Indicates if there was a suggested change to italic.
                &quot;linkSuggested&quot;: True or False, # Indicates if there was a suggested change to link.
                &quot;underlineSuggested&quot;: True or False, # Indicates if there was a suggested change to underline.
                &quot;weightedFontFamilySuggested&quot;: True or False, # Indicates if there was a suggested change to weighted_font_family.
                &quot;smallCapsSuggested&quot;: True or False, # Indicates if there was a suggested change to small_caps.
                &quot;strikethroughSuggested&quot;: True or False, # Indicates if there was a suggested change to strikethrough.
              },
              &quot;namedStyleType&quot;: &quot;A String&quot;, # The named style type that this suggestion state corresponds to. This field is provided as a convenience for matching the NamedStyleSuggestionState with its corresponding NamedStyle.
            },
          ],
        },
      },
    },
    &quot;namedStyles&quot;: { # The named styles. Paragraphs in the document can inherit their TextStyle and ParagraphStyle from these named styles. # Output only. The named styles of the document.
      &quot;styles&quot;: [ # The named styles. There is an entry for each of the possible named style types.
        { # A named style. Paragraphs in the document can inherit their TextStyle and ParagraphStyle from this named style when they have the same named style type.
          &quot;namedStyleType&quot;: &quot;A String&quot;, # The type of this named style.
          &quot;textStyle&quot;: { # Represents the styling that can be applied to text. Inherited text styles are represented as unset fields in this message. A text style&#x27;s parent depends on where the text style is defined: * The TextStyle of text in a Paragraph inherits from the paragraph&#x27;s corresponding named style type. * The TextStyle on a named style inherits from the normal text named style. * The TextStyle of the normal text named style inherits from the default text style in the Docs editor. * The TextStyle on a Paragraph element that is contained in a table may inherit its text style from the table style. If the text style does not inherit from a parent, unsetting fields will revert the style to a value matching the defaults in the Docs editor. # The text style of this named style.
            &quot;italic&quot;: True or False, # Whether or not the text is italicized.
            &quot;baselineOffset&quot;: &quot;A String&quot;, # The text&#x27;s vertical offset from its normal position. Text with `SUPERSCRIPT` or `SUBSCRIPT` baseline offsets is automatically rendered in a smaller font size, computed based on the `font_size` field. The `font_size` itself is not affected by changes in this field.
            &quot;bold&quot;: True or False, # Whether or not the text is rendered as bold.
            &quot;fontSize&quot;: { # A magnitude in a single direction in the specified units. # The size of the text&#x27;s font.
              &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
              &quot;magnitude&quot;: 3.14, # The magnitude.
            },
            &quot;foregroundColor&quot;: { # A color that can either be fully opaque or fully transparent. # The foreground color of the text. If set, the color is either an RGB color or transparent, depending on the `color` field.
              &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                  &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                  &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                  &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                },
              },
            },
            &quot;backgroundColor&quot;: { # A color that can either be fully opaque or fully transparent. # The background color of the text. If set, the color is either an RGB color or transparent, depending on the `color` field.
              &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                  &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                  &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                  &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                },
              },
            },
            &quot;link&quot;: { # A reference to another portion of a document or an external URL resource. # The hyperlink destination of the text. If unset, there is no link. Links are not inherited from parent text. Changing the link in an update request causes some other changes to the text style of the range: * When setting a link, the text foreground color will be updated to the default link color and the text will be underlined. If these fields are modified in the same request, those values will be used instead of the link defaults. * Setting a link on a text range that overlaps with an existing link will also update the existing link to point to the new URL. * Links are not settable on newline characters. As a result, setting a link on a text range that crosses a paragraph boundary, such as `&quot;ABC\n123&quot;`, will separate the newline character(s) into their own text runs. The link will be applied separately to the runs before and after the newline. * Removing a link will update the text style of the range to match the style of the preceding text (or the default text styles if the preceding text is another link) unless different styles are being set in the same request.
              &quot;bookmarkId&quot;: &quot;A String&quot;, # The ID of a bookmark in this document.
              &quot;url&quot;: &quot;A String&quot;, # An external URL.
              &quot;headingId&quot;: &quot;A String&quot;, # The ID of a heading in this document.
            },
            &quot;strikethrough&quot;: True or False, # Whether or not the text is struck through.
            &quot;weightedFontFamily&quot;: { # Represents a font family and weight of text. # The font family and rendered weight of the text. If an update request specifies values for both `weighted_font_family` and `bold`, the `weighted_font_family` is applied first, then `bold`. If `weighted_font_family#weight` is not set, it defaults to `400`. If `weighted_font_family` is set, then `weighted_font_family#font_family` must also be set with a non-empty value. Otherwise, a 400 bad request error is returned.
              &quot;fontFamily&quot;: &quot;A String&quot;, # The font family of the text. The font family can be any font from the Font menu in Docs or from [Google Fonts] (https://fonts.google.com/). If the font name is unrecognized, the text is rendered in `Arial`.
              &quot;weight&quot;: 42, # The weight of the font. This field can have any value that is a multiple of `100` between `100` and `900`, inclusive. This range corresponds to the numerical values described in the CSS 2.1 Specification, [section 15.6](https://www.w3.org/TR/CSS21/fonts.html#font-boldness), with non-numerical values disallowed. The default value is `400` (&quot;normal&quot;). The font weight makes up just one component of the rendered font weight. The rendered weight is determined by a combination of the `weight` and the text style&#x27;s resolved `bold` value, after accounting for inheritance: * If the text is bold and the weight is less than `400`, the rendered weight is 400. * If the text is bold and the weight is greater than or equal to `400` but is less than `700`, the rendered weight is `700`. * If the weight is greater than or equal to `700`, the rendered weight is equal to the weight. * If the text is not bold, the rendered weight is equal to the weight.
            },
            &quot;underline&quot;: True or False, # Whether or not the text is underlined.
            &quot;smallCaps&quot;: True or False, # Whether or not the text is in small capital letters.
          },
          &quot;paragraphStyle&quot;: { # Styles that apply to a whole paragraph. Inherited paragraph styles are represented as unset fields in this message. A paragraph style&#x27;s parent depends on where the paragraph style is defined: * The ParagraphStyle on a Paragraph inherits from the paragraph&#x27;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 is 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. # The paragraph style of this named style.
            &quot;borderRight&quot;: { # A border around a paragraph. # The border to the right of this paragraph. If unset, the value is inherited from the parent. Paragraph borders cannot be partially updated. When making changes to a paragraph border the new border must be specified in its entirety.
              &quot;color&quot;: { # A color that can either be fully opaque or fully transparent. # The color of the border.
                &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                  &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                    &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                    &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                    &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                  },
                },
              },
              &quot;width&quot;: { # A magnitude in a single direction in the specified units. # The width of the border.
                &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                &quot;magnitude&quot;: 3.14, # The magnitude.
              },
              &quot;padding&quot;: { # A magnitude in a single direction in the specified units. # The padding of the border.
                &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                &quot;magnitude&quot;: 3.14, # The magnitude.
              },
              &quot;dashStyle&quot;: &quot;A String&quot;, # The dash style of the border.
            },
            &quot;indentFirstLine&quot;: { # A magnitude in a single direction in the specified units. # The amount of indentation for the first line of the paragraph. If unset, the value is inherited from the parent.
              &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
              &quot;magnitude&quot;: 3.14, # The magnitude.
            },
            &quot;alignment&quot;: &quot;A String&quot;, # The text alignment for this paragraph.
            &quot;lineSpacing&quot;: 3.14, # The amount of space between lines, as a percentage of normal, where normal is represented as 100.0. If unset, the value is inherited from the parent.
            &quot;keepLinesTogether&quot;: True or False, # Whether all lines of the paragraph should be laid out on the same page or column if possible. If unset, the value is inherited from the parent.
            &quot;avoidWidowAndOrphan&quot;: True or False, # Whether to avoid widows and orphans for the paragraph. If unset, the value is inherited from the parent.
            &quot;spaceBelow&quot;: { # A magnitude in a single direction in the specified units. # The amount of extra space below the paragraph. If unset, the value is inherited from the parent.
              &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
              &quot;magnitude&quot;: 3.14, # The magnitude.
            },
            &quot;borderBetween&quot;: { # A border around a paragraph. # 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 making changes to a paragraph border the new border must be specified in its entirety.
              &quot;color&quot;: { # A color that can either be fully opaque or fully transparent. # The color of the border.
                &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                  &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                    &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                    &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                    &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                  },
                },
              },
              &quot;width&quot;: { # A magnitude in a single direction in the specified units. # The width of the border.
                &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                &quot;magnitude&quot;: 3.14, # The magnitude.
              },
              &quot;padding&quot;: { # A magnitude in a single direction in the specified units. # The padding of the border.
                &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                &quot;magnitude&quot;: 3.14, # The magnitude.
              },
              &quot;dashStyle&quot;: &quot;A String&quot;, # The dash style of the border.
            },
            &quot;headingId&quot;: &quot;A String&quot;, # The heading ID of the paragraph. If empty, then this paragraph is not a heading. This property is read-only.
            &quot;spaceAbove&quot;: { # A magnitude in a single direction in the specified units. # The amount of extra space above the paragraph. If unset, the value is inherited from the parent.
              &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
              &quot;magnitude&quot;: 3.14, # The magnitude.
            },
            &quot;direction&quot;: &quot;A String&quot;, # The text direction of this paragraph. If unset, the value defaults to LEFT_TO_RIGHT since paragraph direction is not inherited.
            &quot;namedStyleType&quot;: &quot;A String&quot;, # The named style type of the paragraph. Since updating the named style type affects other properties within ParagraphStyle, the named style type is applied before the other properties are updated.
            &quot;tabStops&quot;: [ # A list of the tab stops for this paragraph. The list of tab stops is not inherited. This property is read-only.
              { # A tab stop within a paragraph.
                &quot;offset&quot;: { # A magnitude in a single direction in the specified units. # The offset between this tab stop and the start margin.
                  &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                  &quot;magnitude&quot;: 3.14, # The magnitude.
                },
                &quot;alignment&quot;: &quot;A String&quot;, # The alignment of this tab stop. If unset, the value defaults to START.
              },
            ],
            &quot;indentStart&quot;: { # A magnitude in a single direction in the specified units. # The amount of indentation for the paragraph on the side that corresponds to the start of the text, based on the current paragraph direction. If unset, the value is inherited from the parent.
              &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
              &quot;magnitude&quot;: 3.14, # The magnitude.
            },
            &quot;keepWithNext&quot;: True or False, # Whether at least a part of this paragraph should be laid out on the same page or column as the next paragraph if possible. If unset, the value is inherited from the parent.
            &quot;borderTop&quot;: { # A border around a paragraph. # 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 making changes to a paragraph border the new border must be specified in its entirety.
              &quot;color&quot;: { # A color that can either be fully opaque or fully transparent. # The color of the border.
                &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                  &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                    &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                    &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                    &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                  },
                },
              },
              &quot;width&quot;: { # A magnitude in a single direction in the specified units. # The width of the border.
                &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                &quot;magnitude&quot;: 3.14, # The magnitude.
              },
              &quot;padding&quot;: { # A magnitude in a single direction in the specified units. # The padding of the border.
                &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                &quot;magnitude&quot;: 3.14, # The magnitude.
              },
              &quot;dashStyle&quot;: &quot;A String&quot;, # The dash style of the border.
            },
            &quot;borderLeft&quot;: { # A border around a paragraph. # The border to the left of this paragraph. If unset, the value is inherited from the parent. Paragraph borders cannot be partially updated. When making changes to a paragraph border the new border must be specified in its entirety.
              &quot;color&quot;: { # A color that can either be fully opaque or fully transparent. # The color of the border.
                &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                  &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                    &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                    &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                    &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                  },
                },
              },
              &quot;width&quot;: { # A magnitude in a single direction in the specified units. # The width of the border.
                &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                &quot;magnitude&quot;: 3.14, # The magnitude.
              },
              &quot;padding&quot;: { # A magnitude in a single direction in the specified units. # The padding of the border.
                &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                &quot;magnitude&quot;: 3.14, # The magnitude.
              },
              &quot;dashStyle&quot;: &quot;A String&quot;, # The dash style of the border.
            },
            &quot;borderBottom&quot;: { # A border around a paragraph. # 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 making changes to a paragraph border the new border must be specified in its entirety.
              &quot;color&quot;: { # A color that can either be fully opaque or fully transparent. # The color of the border.
                &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                  &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                    &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                    &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                    &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                  },
                },
              },
              &quot;width&quot;: { # A magnitude in a single direction in the specified units. # The width of the border.
                &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                &quot;magnitude&quot;: 3.14, # The magnitude.
              },
              &quot;padding&quot;: { # A magnitude in a single direction in the specified units. # The padding of the border.
                &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                &quot;magnitude&quot;: 3.14, # The magnitude.
              },
              &quot;dashStyle&quot;: &quot;A String&quot;, # The dash style of the border.
            },
            &quot;shading&quot;: { # The shading of a paragraph. # The shading of the paragraph. If unset, the value is inherited from the parent.
              &quot;backgroundColor&quot;: { # A color that can either be fully opaque or fully transparent. # The background color of this paragraph shading.
                &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                  &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                    &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                    &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                    &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                  },
                },
              },
            },
            &quot;indentEnd&quot;: { # A magnitude in a single direction in the specified units. # 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.
              &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
              &quot;magnitude&quot;: 3.14, # The magnitude.
            },
            &quot;spacingMode&quot;: &quot;A String&quot;, # The spacing mode for the paragraph.
          },
        },
      ],
    },
    &quot;positionedObjects&quot;: { # Output only. The positioned objects in the document, keyed by object ID.
      &quot;a_key&quot;: { # An object that is tethered to a Paragraph and positioned relative to the beginning of the paragraph. A PositionedObject contains an EmbeddedObject such as an image.
        &quot;suggestedInsertionId&quot;: &quot;A String&quot;, # The suggested insertion ID. If empty, then this is not a suggested insertion.
        &quot;suggestedPositionedObjectPropertiesChanges&quot;: { # The suggested changes to the positioned object properties, keyed by suggestion ID.
          &quot;a_key&quot;: { # A suggested change to PositionedObjectProperties.
            &quot;positionedObjectPropertiesSuggestionState&quot;: { # A mask that indicates which of the fields on the base PositionedObjectProperties have been changed in this suggestion. For any field set to true, there is a new suggested value. # A mask that indicates which of the fields on the base PositionedObjectProperties have been changed in this suggestion.
              &quot;embeddedObjectSuggestionState&quot;: { # A mask that indicates which of the fields on the base EmbeddedObject have been changed in this suggestion. For any field set to true, there is a new suggested value. # A mask that indicates which of the fields in embedded_object have been changed in this suggestion.
                &quot;marginBottomSuggested&quot;: True or False, # Indicates if there was a suggested change to margin_bottom.
                &quot;titleSuggested&quot;: True or False, # Indicates if there was a suggested change to title.
                &quot;imagePropertiesSuggestionState&quot;: { # A mask that indicates which of the fields on the base ImageProperties have been changed in this suggestion. For any field set to true, there is a new suggested value. # A mask that indicates which of the fields in image_properties have been changed in this suggestion.
                  &quot;contentUriSuggested&quot;: True or False, # Indicates if there was a suggested change to content_uri.
                  &quot;angleSuggested&quot;: True or False, # Indicates if there was a suggested change to angle.
                  &quot;transparencySuggested&quot;: True or False, # Indicates if there was a suggested change to transparency.
                  &quot;brightnessSuggested&quot;: True or False, # Indicates if there was a suggested change to brightness.
                  &quot;contrastSuggested&quot;: True or False, # Indicates if there was a suggested change to contrast.
                  &quot;cropPropertiesSuggestionState&quot;: { # A mask that indicates which of the fields on the base CropProperties have been changed in this suggestion. For any field set to true, there is a new suggested value. # A mask that indicates which of the fields in crop_properties have been changed in this suggestion.
                    &quot;offsetRightSuggested&quot;: True or False, # Indicates if there was a suggested change to offset_right.
                    &quot;offsetLeftSuggested&quot;: True or False, # Indicates if there was a suggested change to offset_left.
                    &quot;offsetTopSuggested&quot;: True or False, # Indicates if there was a suggested change to offset_top.
                    &quot;angleSuggested&quot;: True or False, # Indicates if there was a suggested change to angle.
                    &quot;offsetBottomSuggested&quot;: True or False, # Indicates if there was a suggested change to offset_bottom.
                  },
                  &quot;sourceUriSuggested&quot;: True or False, # Indicates if there was a suggested change to source_uri.
                },
                &quot;marginTopSuggested&quot;: True or False, # Indicates if there was a suggested change to margin_top.
                &quot;embeddedObjectBorderSuggestionState&quot;: { # A mask that indicates which of the fields on the base EmbeddedObjectBorder have been changed in this suggestion. For any field set to true, there is a new suggested value. # A mask that indicates which of the fields in embedded_object_border have been changed in this suggestion.
                  &quot;colorSuggested&quot;: True or False, # Indicates if there was a suggested change to color.
                  &quot;dashStyleSuggested&quot;: True or False, # Indicates if there was a suggested change to dash_style.
                  &quot;propertyStateSuggested&quot;: True or False, # Indicates if there was a suggested change to property_state.
                  &quot;widthSuggested&quot;: True or False, # Indicates if there was a suggested change to width.
                },
                &quot;descriptionSuggested&quot;: True or False, # Indicates if there was a suggested change to description.
                &quot;linkedContentReferenceSuggestionState&quot;: { # A mask that indicates which of the fields on the base LinkedContentReference have been changed in this suggestion. For any field set to true, there is a new suggested value. # A mask that indicates which of the fields in linked_content_reference have been changed in this suggestion.
                  &quot;sheetsChartReferenceSuggestionState&quot;: { # A mask that indicates which of the fields on the base SheetsChartReference have been changed in this suggestion. For any field set to true, there is a new suggested value. # A mask that indicates which of the fields in sheets_chart_reference have been changed in this suggestion.
                    &quot;chartIdSuggested&quot;: True or False, # Indicates if there was a suggested change to chart_id.
                    &quot;spreadsheetIdSuggested&quot;: True or False, # Indicates if there was a suggested change to spreadsheet_id.
                  },
                },
                &quot;sizeSuggestionState&quot;: { # A mask that indicates which of the fields on the base Size have been changed in this suggestion. For any field set to true, the Size has a new suggested value. # A mask that indicates which of the fields in size have been changed in this suggestion.
                  &quot;heightSuggested&quot;: True or False, # Indicates if there was a suggested change to height.
                  &quot;widthSuggested&quot;: True or False, # Indicates if there was a suggested change to width.
                },
                &quot;embeddedDrawingPropertiesSuggestionState&quot;: { # A mask that indicates which of the fields on the base EmbeddedDrawingProperties have been changed in this suggestion. For any field set to true, there is a new suggested value. # A mask that indicates which of the fields in embedded_drawing_properties have been changed in this suggestion.
                },
                &quot;marginRightSuggested&quot;: True or False, # Indicates if there was a suggested change to margin_right.
                &quot;marginLeftSuggested&quot;: True or False, # Indicates if there was a suggested change to margin_left.
              },
              &quot;positioningSuggestionState&quot;: { # A mask that indicates which of the fields on the base PositionedObjectPositioning have been changed in this suggestion. For any field set to true, there is a new suggested value. # A mask that indicates which of the fields in positioning have been changed in this suggestion.
                &quot;layoutSuggested&quot;: True or False, # Indicates if there was a suggested change to layout.
                &quot;topOffsetSuggested&quot;: True or False, # Indicates if there was a suggested change to top_offset.
                &quot;leftOffsetSuggested&quot;: True or False, # Indicates if there was a suggested change to left_offset.
              },
            },
            &quot;positionedObjectProperties&quot;: { # Properties of a PositionedObject. # A PositionedObjectProperties that only includes the changes made in this suggestion. This can be used along with the positioned_object_properties_suggestion_state to see which fields have changed and their new values.
              &quot;embeddedObject&quot;: { # An embedded object in the document. # The embedded object of this positioned object.
                &quot;linkedContentReference&quot;: { # A reference to the external linked source content. # A reference to the external linked source content. For example, it contains a reference to the source Sheets chart when the embedded object is a linked chart. If unset, then the embedded object is not linked.
                  &quot;sheetsChartReference&quot;: { # A reference to a linked chart embedded from Google Sheets. # A reference to the linked chart.
                    &quot;chartId&quot;: 42, # The ID of the specific chart in the Google Sheets spreadsheet that is embedded.
                    &quot;spreadsheetId&quot;: &quot;A String&quot;, # The ID of the Google Sheets spreadsheet that contains the source chart.
                  },
                },
                &quot;imageProperties&quot;: { # The properties of an image. # The properties of an image.
                  &quot;transparency&quot;: 3.14, # The transparency effect of the image. The value should be in the interval [0.0, 1.0], where 0 means no effect and 1 means completely transparent.
                  &quot;angle&quot;: 3.14, # The clockwise rotation angle of the image, in radians.
                  &quot;contrast&quot;: 3.14, # The contrast effect of the image. The value should be in the interval [-1.0, 1.0], where 0 means no effect.
                  &quot;brightness&quot;: 3.14, # The brightness effect of the image. The value should be in the interval [-1.0, 1.0], where 0 means no effect.
                  &quot;cropProperties&quot;: { # The crop properties of an image. The crop rectangle is represented using fractional offsets from the original content&#x27;s four edges. - If the offset is in the interval (0, 1), the corresponding edge of crop rectangle is positioned inside of the image&#x27;s original bounding rectangle. - If the offset is negative or greater than 1, the corresponding edge of crop rectangle is positioned outside of the image&#x27;s original bounding rectangle. - If all offsets and rotation angle are 0, the image is not cropped. # The crop properties of the image.
                    &quot;offsetRight&quot;: 3.14, # The offset specifies how far inwards the right edge of the crop rectangle is from the right edge of the original content as a fraction of the original content&#x27;s width.
                    &quot;angle&quot;: 3.14, # The clockwise rotation angle of the crop rectangle around its center, in radians. Rotation is applied after the offsets.
                    &quot;offsetBottom&quot;: 3.14, # The offset specifies how far inwards the bottom edge of the crop rectangle is from the bottom edge of the original content as a fraction of the original content&#x27;s height.
                    &quot;offsetTop&quot;: 3.14, # The offset specifies how far inwards the top edge of the crop rectangle is from the top edge of the original content as a fraction of the original content&#x27;s height.
                    &quot;offsetLeft&quot;: 3.14, # The offset specifies how far inwards the left edge of the crop rectangle is from the left edge of the original content as a fraction of the original content&#x27;s width.
                  },
                  &quot;contentUri&quot;: &quot;A String&quot;, # A URI to the image with a default lifetime of 30 minutes. This URI is tagged with the account of the requester. Anyone with the URI effectively accesses the image as the original requester. Access to the image may be lost if the document&#x27;s sharing settings change.
                  &quot;sourceUri&quot;: &quot;A String&quot;, # The source URI is the URI used to insert the image. The source URI can be empty.
                },
                &quot;marginRight&quot;: { # A magnitude in a single direction in the specified units. # The right margin of the embedded object.
                  &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                  &quot;magnitude&quot;: 3.14, # The magnitude.
                },
                &quot;title&quot;: &quot;A String&quot;, # The title of the embedded object. The `title` and `description` are both combined to display alt text.
                &quot;embeddedDrawingProperties&quot;: { # The properties of an embedded drawing. # The properties of an embedded drawing.
                },
                &quot;marginTop&quot;: { # A magnitude in a single direction in the specified units. # The top margin of the embedded object.
                  &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                  &quot;magnitude&quot;: 3.14, # The magnitude.
                },
                &quot;description&quot;: &quot;A String&quot;, # The description of the embedded object. The `title` and `description` are both combined to display alt text.
                &quot;marginLeft&quot;: { # A magnitude in a single direction in the specified units. # The left margin of the embedded object.
                  &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                  &quot;magnitude&quot;: 3.14, # The magnitude.
                },
                &quot;size&quot;: { # A width and height. # The visible size of the image after cropping.
                  &quot;width&quot;: { # A magnitude in a single direction in the specified units. # The width of the object.
                    &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                    &quot;magnitude&quot;: 3.14, # The magnitude.
                  },
                  &quot;height&quot;: { # A magnitude in a single direction in the specified units. # The height of the object.
                    &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                    &quot;magnitude&quot;: 3.14, # The magnitude.
                  },
                },
                &quot;embeddedObjectBorder&quot;: { # A border around an EmbeddedObject. # The border of the embedded object.
                  &quot;color&quot;: { # A color that can either be fully opaque or fully transparent. # The color of the border.
                    &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                      &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                        &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                        &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                        &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                      },
                    },
                  },
                  &quot;width&quot;: { # A magnitude in a single direction in the specified units. # The width of the border.
                    &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                    &quot;magnitude&quot;: 3.14, # The magnitude.
                  },
                  &quot;dashStyle&quot;: &quot;A String&quot;, # The dash style of the border.
                  &quot;propertyState&quot;: &quot;A String&quot;, # The property state of the border property.
                },
                &quot;marginBottom&quot;: { # A magnitude in a single direction in the specified units. # The bottom margin of the embedded object.
                  &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                  &quot;magnitude&quot;: 3.14, # The magnitude.
                },
              },
              &quot;positioning&quot;: { # The positioning of a PositionedObject. The positioned object is positioned relative to the beginning of the Paragraph it is tethered to. # The positioning of this positioned object relative to the newline of the Paragraph that references this positioned object.
                &quot;topOffset&quot;: { # A magnitude in a single direction in the specified units. # The offset of the top edge of the positioned object relative to the beginning of the Paragraph it is tethered to. The exact positioning of the object can depend on other content in the document and the document&#x27;s styling.
                  &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                  &quot;magnitude&quot;: 3.14, # The magnitude.
                },
                &quot;leftOffset&quot;: { # A magnitude in a single direction in the specified units. # The offset of the left edge of the positioned object relative to the beginning of the Paragraph it is tethered to. The exact positioning of the object can depend on other content in the document and the document&#x27;s styling.
                  &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                  &quot;magnitude&quot;: 3.14, # The magnitude.
                },
                &quot;layout&quot;: &quot;A String&quot;, # The layout of this positioned object.
              },
            },
          },
        },
        &quot;objectId&quot;: &quot;A String&quot;, # The ID of this positioned object.
        &quot;positionedObjectProperties&quot;: { # Properties of a PositionedObject. # The properties of this positioned object.
          &quot;embeddedObject&quot;: { # An embedded object in the document. # The embedded object of this positioned object.
            &quot;linkedContentReference&quot;: { # A reference to the external linked source content. # A reference to the external linked source content. For example, it contains a reference to the source Sheets chart when the embedded object is a linked chart. If unset, then the embedded object is not linked.
              &quot;sheetsChartReference&quot;: { # A reference to a linked chart embedded from Google Sheets. # A reference to the linked chart.
                &quot;chartId&quot;: 42, # The ID of the specific chart in the Google Sheets spreadsheet that is embedded.
                &quot;spreadsheetId&quot;: &quot;A String&quot;, # The ID of the Google Sheets spreadsheet that contains the source chart.
              },
            },
            &quot;imageProperties&quot;: { # The properties of an image. # The properties of an image.
              &quot;transparency&quot;: 3.14, # The transparency effect of the image. The value should be in the interval [0.0, 1.0], where 0 means no effect and 1 means completely transparent.
              &quot;angle&quot;: 3.14, # The clockwise rotation angle of the image, in radians.
              &quot;contrast&quot;: 3.14, # The contrast effect of the image. The value should be in the interval [-1.0, 1.0], where 0 means no effect.
              &quot;brightness&quot;: 3.14, # The brightness effect of the image. The value should be in the interval [-1.0, 1.0], where 0 means no effect.
              &quot;cropProperties&quot;: { # The crop properties of an image. The crop rectangle is represented using fractional offsets from the original content&#x27;s four edges. - If the offset is in the interval (0, 1), the corresponding edge of crop rectangle is positioned inside of the image&#x27;s original bounding rectangle. - If the offset is negative or greater than 1, the corresponding edge of crop rectangle is positioned outside of the image&#x27;s original bounding rectangle. - If all offsets and rotation angle are 0, the image is not cropped. # The crop properties of the image.
                &quot;offsetRight&quot;: 3.14, # The offset specifies how far inwards the right edge of the crop rectangle is from the right edge of the original content as a fraction of the original content&#x27;s width.
                &quot;angle&quot;: 3.14, # The clockwise rotation angle of the crop rectangle around its center, in radians. Rotation is applied after the offsets.
                &quot;offsetBottom&quot;: 3.14, # The offset specifies how far inwards the bottom edge of the crop rectangle is from the bottom edge of the original content as a fraction of the original content&#x27;s height.
                &quot;offsetTop&quot;: 3.14, # The offset specifies how far inwards the top edge of the crop rectangle is from the top edge of the original content as a fraction of the original content&#x27;s height.
                &quot;offsetLeft&quot;: 3.14, # The offset specifies how far inwards the left edge of the crop rectangle is from the left edge of the original content as a fraction of the original content&#x27;s width.
              },
              &quot;contentUri&quot;: &quot;A String&quot;, # A URI to the image with a default lifetime of 30 minutes. This URI is tagged with the account of the requester. Anyone with the URI effectively accesses the image as the original requester. Access to the image may be lost if the document&#x27;s sharing settings change.
              &quot;sourceUri&quot;: &quot;A String&quot;, # The source URI is the URI used to insert the image. The source URI can be empty.
            },
            &quot;marginRight&quot;: { # A magnitude in a single direction in the specified units. # The right margin of the embedded object.
              &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
              &quot;magnitude&quot;: 3.14, # The magnitude.
            },
            &quot;title&quot;: &quot;A String&quot;, # The title of the embedded object. The `title` and `description` are both combined to display alt text.
            &quot;embeddedDrawingProperties&quot;: { # The properties of an embedded drawing. # The properties of an embedded drawing.
            },
            &quot;marginTop&quot;: { # A magnitude in a single direction in the specified units. # The top margin of the embedded object.
              &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
              &quot;magnitude&quot;: 3.14, # The magnitude.
            },
            &quot;description&quot;: &quot;A String&quot;, # The description of the embedded object. The `title` and `description` are both combined to display alt text.
            &quot;marginLeft&quot;: { # A magnitude in a single direction in the specified units. # The left margin of the embedded object.
              &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
              &quot;magnitude&quot;: 3.14, # The magnitude.
            },
            &quot;size&quot;: { # A width and height. # The visible size of the image after cropping.
              &quot;width&quot;: { # A magnitude in a single direction in the specified units. # The width of the object.
                &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                &quot;magnitude&quot;: 3.14, # The magnitude.
              },
              &quot;height&quot;: { # A magnitude in a single direction in the specified units. # The height of the object.
                &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                &quot;magnitude&quot;: 3.14, # The magnitude.
              },
            },
            &quot;embeddedObjectBorder&quot;: { # A border around an EmbeddedObject. # The border of the embedded object.
              &quot;color&quot;: { # A color that can either be fully opaque or fully transparent. # The color of the border.
                &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                  &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                    &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                    &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                    &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                  },
                },
              },
              &quot;width&quot;: { # A magnitude in a single direction in the specified units. # The width of the border.
                &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                &quot;magnitude&quot;: 3.14, # The magnitude.
              },
              &quot;dashStyle&quot;: &quot;A String&quot;, # The dash style of the border.
              &quot;propertyState&quot;: &quot;A String&quot;, # The property state of the border property.
            },
            &quot;marginBottom&quot;: { # A magnitude in a single direction in the specified units. # The bottom margin of the embedded object.
              &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
              &quot;magnitude&quot;: 3.14, # The magnitude.
            },
          },
          &quot;positioning&quot;: { # The positioning of a PositionedObject. The positioned object is positioned relative to the beginning of the Paragraph it is tethered to. # The positioning of this positioned object relative to the newline of the Paragraph that references this positioned object.
            &quot;topOffset&quot;: { # A magnitude in a single direction in the specified units. # The offset of the top edge of the positioned object relative to the beginning of the Paragraph it is tethered to. The exact positioning of the object can depend on other content in the document and the document&#x27;s styling.
              &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
              &quot;magnitude&quot;: 3.14, # The magnitude.
            },
            &quot;leftOffset&quot;: { # A magnitude in a single direction in the specified units. # The offset of the left edge of the positioned object relative to the beginning of the Paragraph it is tethered to. The exact positioning of the object can depend on other content in the document and the document&#x27;s styling.
              &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
              &quot;magnitude&quot;: 3.14, # The magnitude.
            },
            &quot;layout&quot;: &quot;A String&quot;, # The layout of this positioned object.
          },
        },
        &quot;suggestedDeletionIds&quot;: [ # The suggested deletion IDs. If empty, then there are no suggested deletions of this content.
          &quot;A String&quot;,
        ],
      },
    },
    &quot;inlineObjects&quot;: { # Output only. The inline objects in the document, keyed by object ID.
      &quot;a_key&quot;: { # An object that appears inline with text. An InlineObject contains an EmbeddedObject such as an image.
        &quot;suggestedInlineObjectPropertiesChanges&quot;: { # The suggested changes to the inline object properties, keyed by suggestion ID.
          &quot;a_key&quot;: { # A suggested change to InlineObjectProperties.
            &quot;inlineObjectProperties&quot;: { # Properties of an InlineObject. # An InlineObjectProperties that only includes the changes made in this suggestion. This can be used along with the inline_object_properties_suggestion_state to see which fields have changed and their new values.
              &quot;embeddedObject&quot;: { # An embedded object in the document. # The embedded object of this inline object.
                &quot;linkedContentReference&quot;: { # A reference to the external linked source content. # A reference to the external linked source content. For example, it contains a reference to the source Sheets chart when the embedded object is a linked chart. If unset, then the embedded object is not linked.
                  &quot;sheetsChartReference&quot;: { # A reference to a linked chart embedded from Google Sheets. # A reference to the linked chart.
                    &quot;chartId&quot;: 42, # The ID of the specific chart in the Google Sheets spreadsheet that is embedded.
                    &quot;spreadsheetId&quot;: &quot;A String&quot;, # The ID of the Google Sheets spreadsheet that contains the source chart.
                  },
                },
                &quot;imageProperties&quot;: { # The properties of an image. # The properties of an image.
                  &quot;transparency&quot;: 3.14, # The transparency effect of the image. The value should be in the interval [0.0, 1.0], where 0 means no effect and 1 means completely transparent.
                  &quot;angle&quot;: 3.14, # The clockwise rotation angle of the image, in radians.
                  &quot;contrast&quot;: 3.14, # The contrast effect of the image. The value should be in the interval [-1.0, 1.0], where 0 means no effect.
                  &quot;brightness&quot;: 3.14, # The brightness effect of the image. The value should be in the interval [-1.0, 1.0], where 0 means no effect.
                  &quot;cropProperties&quot;: { # The crop properties of an image. The crop rectangle is represented using fractional offsets from the original content&#x27;s four edges. - If the offset is in the interval (0, 1), the corresponding edge of crop rectangle is positioned inside of the image&#x27;s original bounding rectangle. - If the offset is negative or greater than 1, the corresponding edge of crop rectangle is positioned outside of the image&#x27;s original bounding rectangle. - If all offsets and rotation angle are 0, the image is not cropped. # The crop properties of the image.
                    &quot;offsetRight&quot;: 3.14, # The offset specifies how far inwards the right edge of the crop rectangle is from the right edge of the original content as a fraction of the original content&#x27;s width.
                    &quot;angle&quot;: 3.14, # The clockwise rotation angle of the crop rectangle around its center, in radians. Rotation is applied after the offsets.
                    &quot;offsetBottom&quot;: 3.14, # The offset specifies how far inwards the bottom edge of the crop rectangle is from the bottom edge of the original content as a fraction of the original content&#x27;s height.
                    &quot;offsetTop&quot;: 3.14, # The offset specifies how far inwards the top edge of the crop rectangle is from the top edge of the original content as a fraction of the original content&#x27;s height.
                    &quot;offsetLeft&quot;: 3.14, # The offset specifies how far inwards the left edge of the crop rectangle is from the left edge of the original content as a fraction of the original content&#x27;s width.
                  },
                  &quot;contentUri&quot;: &quot;A String&quot;, # A URI to the image with a default lifetime of 30 minutes. This URI is tagged with the account of the requester. Anyone with the URI effectively accesses the image as the original requester. Access to the image may be lost if the document&#x27;s sharing settings change.
                  &quot;sourceUri&quot;: &quot;A String&quot;, # The source URI is the URI used to insert the image. The source URI can be empty.
                },
                &quot;marginRight&quot;: { # A magnitude in a single direction in the specified units. # The right margin of the embedded object.
                  &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                  &quot;magnitude&quot;: 3.14, # The magnitude.
                },
                &quot;title&quot;: &quot;A String&quot;, # The title of the embedded object. The `title` and `description` are both combined to display alt text.
                &quot;embeddedDrawingProperties&quot;: { # The properties of an embedded drawing. # The properties of an embedded drawing.
                },
                &quot;marginTop&quot;: { # A magnitude in a single direction in the specified units. # The top margin of the embedded object.
                  &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                  &quot;magnitude&quot;: 3.14, # The magnitude.
                },
                &quot;description&quot;: &quot;A String&quot;, # The description of the embedded object. The `title` and `description` are both combined to display alt text.
                &quot;marginLeft&quot;: { # A magnitude in a single direction in the specified units. # The left margin of the embedded object.
                  &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                  &quot;magnitude&quot;: 3.14, # The magnitude.
                },
                &quot;size&quot;: { # A width and height. # The visible size of the image after cropping.
                  &quot;width&quot;: { # A magnitude in a single direction in the specified units. # The width of the object.
                    &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                    &quot;magnitude&quot;: 3.14, # The magnitude.
                  },
                  &quot;height&quot;: { # A magnitude in a single direction in the specified units. # The height of the object.
                    &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                    &quot;magnitude&quot;: 3.14, # The magnitude.
                  },
                },
                &quot;embeddedObjectBorder&quot;: { # A border around an EmbeddedObject. # The border of the embedded object.
                  &quot;color&quot;: { # A color that can either be fully opaque or fully transparent. # The color of the border.
                    &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                      &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                        &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                        &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                        &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                      },
                    },
                  },
                  &quot;width&quot;: { # A magnitude in a single direction in the specified units. # The width of the border.
                    &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                    &quot;magnitude&quot;: 3.14, # The magnitude.
                  },
                  &quot;dashStyle&quot;: &quot;A String&quot;, # The dash style of the border.
                  &quot;propertyState&quot;: &quot;A String&quot;, # The property state of the border property.
                },
                &quot;marginBottom&quot;: { # A magnitude in a single direction in the specified units. # The bottom margin of the embedded object.
                  &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                  &quot;magnitude&quot;: 3.14, # The magnitude.
                },
              },
            },
            &quot;inlineObjectPropertiesSuggestionState&quot;: { # A mask that indicates which of the fields on the base InlineObjectProperties have been changed in this suggestion. For any field set to true, there is a new suggested value. # A mask that indicates which of the fields on the base InlineObjectProperties have been changed in this suggestion.
              &quot;embeddedObjectSuggestionState&quot;: { # A mask that indicates which of the fields on the base EmbeddedObject have been changed in this suggestion. For any field set to true, there is a new suggested value. # A mask that indicates which of the fields in embedded_object have been changed in this suggestion.
                &quot;marginBottomSuggested&quot;: True or False, # Indicates if there was a suggested change to margin_bottom.
                &quot;titleSuggested&quot;: True or False, # Indicates if there was a suggested change to title.
                &quot;imagePropertiesSuggestionState&quot;: { # A mask that indicates which of the fields on the base ImageProperties have been changed in this suggestion. For any field set to true, there is a new suggested value. # A mask that indicates which of the fields in image_properties have been changed in this suggestion.
                  &quot;contentUriSuggested&quot;: True or False, # Indicates if there was a suggested change to content_uri.
                  &quot;angleSuggested&quot;: True or False, # Indicates if there was a suggested change to angle.
                  &quot;transparencySuggested&quot;: True or False, # Indicates if there was a suggested change to transparency.
                  &quot;brightnessSuggested&quot;: True or False, # Indicates if there was a suggested change to brightness.
                  &quot;contrastSuggested&quot;: True or False, # Indicates if there was a suggested change to contrast.
                  &quot;cropPropertiesSuggestionState&quot;: { # A mask that indicates which of the fields on the base CropProperties have been changed in this suggestion. For any field set to true, there is a new suggested value. # A mask that indicates which of the fields in crop_properties have been changed in this suggestion.
                    &quot;offsetRightSuggested&quot;: True or False, # Indicates if there was a suggested change to offset_right.
                    &quot;offsetLeftSuggested&quot;: True or False, # Indicates if there was a suggested change to offset_left.
                    &quot;offsetTopSuggested&quot;: True or False, # Indicates if there was a suggested change to offset_top.
                    &quot;angleSuggested&quot;: True or False, # Indicates if there was a suggested change to angle.
                    &quot;offsetBottomSuggested&quot;: True or False, # Indicates if there was a suggested change to offset_bottom.
                  },
                  &quot;sourceUriSuggested&quot;: True or False, # Indicates if there was a suggested change to source_uri.
                },
                &quot;marginTopSuggested&quot;: True or False, # Indicates if there was a suggested change to margin_top.
                &quot;embeddedObjectBorderSuggestionState&quot;: { # A mask that indicates which of the fields on the base EmbeddedObjectBorder have been changed in this suggestion. For any field set to true, there is a new suggested value. # A mask that indicates which of the fields in embedded_object_border have been changed in this suggestion.
                  &quot;colorSuggested&quot;: True or False, # Indicates if there was a suggested change to color.
                  &quot;dashStyleSuggested&quot;: True or False, # Indicates if there was a suggested change to dash_style.
                  &quot;propertyStateSuggested&quot;: True or False, # Indicates if there was a suggested change to property_state.
                  &quot;widthSuggested&quot;: True or False, # Indicates if there was a suggested change to width.
                },
                &quot;descriptionSuggested&quot;: True or False, # Indicates if there was a suggested change to description.
                &quot;linkedContentReferenceSuggestionState&quot;: { # A mask that indicates which of the fields on the base LinkedContentReference have been changed in this suggestion. For any field set to true, there is a new suggested value. # A mask that indicates which of the fields in linked_content_reference have been changed in this suggestion.
                  &quot;sheetsChartReferenceSuggestionState&quot;: { # A mask that indicates which of the fields on the base SheetsChartReference have been changed in this suggestion. For any field set to true, there is a new suggested value. # A mask that indicates which of the fields in sheets_chart_reference have been changed in this suggestion.
                    &quot;chartIdSuggested&quot;: True or False, # Indicates if there was a suggested change to chart_id.
                    &quot;spreadsheetIdSuggested&quot;: True or False, # Indicates if there was a suggested change to spreadsheet_id.
                  },
                },
                &quot;sizeSuggestionState&quot;: { # A mask that indicates which of the fields on the base Size have been changed in this suggestion. For any field set to true, the Size has a new suggested value. # A mask that indicates which of the fields in size have been changed in this suggestion.
                  &quot;heightSuggested&quot;: True or False, # Indicates if there was a suggested change to height.
                  &quot;widthSuggested&quot;: True or False, # Indicates if there was a suggested change to width.
                },
                &quot;embeddedDrawingPropertiesSuggestionState&quot;: { # A mask that indicates which of the fields on the base EmbeddedDrawingProperties have been changed in this suggestion. For any field set to true, there is a new suggested value. # A mask that indicates which of the fields in embedded_drawing_properties have been changed in this suggestion.
                },
                &quot;marginRightSuggested&quot;: True or False, # Indicates if there was a suggested change to margin_right.
                &quot;marginLeftSuggested&quot;: True or False, # Indicates if there was a suggested change to margin_left.
              },
            },
          },
        },
        &quot;inlineObjectProperties&quot;: { # Properties of an InlineObject. # The properties of this inline object.
          &quot;embeddedObject&quot;: { # An embedded object in the document. # The embedded object of this inline object.
            &quot;linkedContentReference&quot;: { # A reference to the external linked source content. # A reference to the external linked source content. For example, it contains a reference to the source Sheets chart when the embedded object is a linked chart. If unset, then the embedded object is not linked.
              &quot;sheetsChartReference&quot;: { # A reference to a linked chart embedded from Google Sheets. # A reference to the linked chart.
                &quot;chartId&quot;: 42, # The ID of the specific chart in the Google Sheets spreadsheet that is embedded.
                &quot;spreadsheetId&quot;: &quot;A String&quot;, # The ID of the Google Sheets spreadsheet that contains the source chart.
              },
            },
            &quot;imageProperties&quot;: { # The properties of an image. # The properties of an image.
              &quot;transparency&quot;: 3.14, # The transparency effect of the image. The value should be in the interval [0.0, 1.0], where 0 means no effect and 1 means completely transparent.
              &quot;angle&quot;: 3.14, # The clockwise rotation angle of the image, in radians.
              &quot;contrast&quot;: 3.14, # The contrast effect of the image. The value should be in the interval [-1.0, 1.0], where 0 means no effect.
              &quot;brightness&quot;: 3.14, # The brightness effect of the image. The value should be in the interval [-1.0, 1.0], where 0 means no effect.
              &quot;cropProperties&quot;: { # The crop properties of an image. The crop rectangle is represented using fractional offsets from the original content&#x27;s four edges. - If the offset is in the interval (0, 1), the corresponding edge of crop rectangle is positioned inside of the image&#x27;s original bounding rectangle. - If the offset is negative or greater than 1, the corresponding edge of crop rectangle is positioned outside of the image&#x27;s original bounding rectangle. - If all offsets and rotation angle are 0, the image is not cropped. # The crop properties of the image.
                &quot;offsetRight&quot;: 3.14, # The offset specifies how far inwards the right edge of the crop rectangle is from the right edge of the original content as a fraction of the original content&#x27;s width.
                &quot;angle&quot;: 3.14, # The clockwise rotation angle of the crop rectangle around its center, in radians. Rotation is applied after the offsets.
                &quot;offsetBottom&quot;: 3.14, # The offset specifies how far inwards the bottom edge of the crop rectangle is from the bottom edge of the original content as a fraction of the original content&#x27;s height.
                &quot;offsetTop&quot;: 3.14, # The offset specifies how far inwards the top edge of the crop rectangle is from the top edge of the original content as a fraction of the original content&#x27;s height.
                &quot;offsetLeft&quot;: 3.14, # The offset specifies how far inwards the left edge of the crop rectangle is from the left edge of the original content as a fraction of the original content&#x27;s width.
              },
              &quot;contentUri&quot;: &quot;A String&quot;, # A URI to the image with a default lifetime of 30 minutes. This URI is tagged with the account of the requester. Anyone with the URI effectively accesses the image as the original requester. Access to the image may be lost if the document&#x27;s sharing settings change.
              &quot;sourceUri&quot;: &quot;A String&quot;, # The source URI is the URI used to insert the image. The source URI can be empty.
            },
            &quot;marginRight&quot;: { # A magnitude in a single direction in the specified units. # The right margin of the embedded object.
              &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
              &quot;magnitude&quot;: 3.14, # The magnitude.
            },
            &quot;title&quot;: &quot;A String&quot;, # The title of the embedded object. The `title` and `description` are both combined to display alt text.
            &quot;embeddedDrawingProperties&quot;: { # The properties of an embedded drawing. # The properties of an embedded drawing.
            },
            &quot;marginTop&quot;: { # A magnitude in a single direction in the specified units. # The top margin of the embedded object.
              &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
              &quot;magnitude&quot;: 3.14, # The magnitude.
            },
            &quot;description&quot;: &quot;A String&quot;, # The description of the embedded object. The `title` and `description` are both combined to display alt text.
            &quot;marginLeft&quot;: { # A magnitude in a single direction in the specified units. # The left margin of the embedded object.
              &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
              &quot;magnitude&quot;: 3.14, # The magnitude.
            },
            &quot;size&quot;: { # A width and height. # The visible size of the image after cropping.
              &quot;width&quot;: { # A magnitude in a single direction in the specified units. # The width of the object.
                &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                &quot;magnitude&quot;: 3.14, # The magnitude.
              },
              &quot;height&quot;: { # A magnitude in a single direction in the specified units. # The height of the object.
                &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                &quot;magnitude&quot;: 3.14, # The magnitude.
              },
            },
            &quot;embeddedObjectBorder&quot;: { # A border around an EmbeddedObject. # The border of the embedded object.
              &quot;color&quot;: { # A color that can either be fully opaque or fully transparent. # The color of the border.
                &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                  &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                    &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                    &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                    &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                  },
                },
              },
              &quot;width&quot;: { # A magnitude in a single direction in the specified units. # The width of the border.
                &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                &quot;magnitude&quot;: 3.14, # The magnitude.
              },
              &quot;dashStyle&quot;: &quot;A String&quot;, # The dash style of the border.
              &quot;propertyState&quot;: &quot;A String&quot;, # The property state of the border property.
            },
            &quot;marginBottom&quot;: { # A magnitude in a single direction in the specified units. # The bottom margin of the embedded object.
              &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
              &quot;magnitude&quot;: 3.14, # The magnitude.
            },
          },
        },
        &quot;objectId&quot;: &quot;A String&quot;, # The ID of this inline object.
        &quot;suggestedInsertionId&quot;: &quot;A String&quot;, # The suggested insertion ID. If empty, then this is not a suggested insertion.
        &quot;suggestedDeletionIds&quot;: [ # The suggested deletion IDs. If empty, then there are no suggested deletions of this content.
          &quot;A String&quot;,
        ],
      },
    },
    &quot;footers&quot;: { # Output only. The footers in the document, keyed by footer ID.
      &quot;a_key&quot;: { # A document footer.
        &quot;content&quot;: [ # The contents of the footer. The indexes for a footer&#x27;s content begin at zero.
          { # A StructuralElement describes content that provides structure to the document.
            &quot;paragraph&quot;: { # A StructuralElement representing a paragraph. A paragraph is a range of content that is terminated with a newline character. # A paragraph type of structural element.
              &quot;suggestedParagraphStyleChanges&quot;: { # The suggested paragraph style changes to this paragraph, keyed by suggestion ID.
                &quot;a_key&quot;: { # A suggested change to a ParagraphStyle.
                  &quot;paragraphStyle&quot;: { # Styles that apply to a whole paragraph. Inherited paragraph styles are represented as unset fields in this message. A paragraph style&#x27;s parent depends on where the paragraph style is defined: * The ParagraphStyle on a Paragraph inherits from the paragraph&#x27;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 is 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. # A ParagraphStyle that only includes the changes made in this suggestion. This can be used along with the paragraph_suggestion_state to see which fields have changed and their new values.
                    &quot;borderRight&quot;: { # A border around a paragraph. # The border to the right of this paragraph. If unset, the value is inherited from the parent. Paragraph borders cannot be partially updated. When making changes to a paragraph border the new border must be specified in its entirety.
                      &quot;color&quot;: { # A color that can either be fully opaque or fully transparent. # The color of the border.
                        &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                          &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                            &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                            &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                            &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                          },
                        },
                      },
                      &quot;width&quot;: { # A magnitude in a single direction in the specified units. # The width of the border.
                        &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                        &quot;magnitude&quot;: 3.14, # The magnitude.
                      },
                      &quot;padding&quot;: { # A magnitude in a single direction in the specified units. # The padding of the border.
                        &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                        &quot;magnitude&quot;: 3.14, # The magnitude.
                      },
                      &quot;dashStyle&quot;: &quot;A String&quot;, # The dash style of the border.
                    },
                    &quot;indentFirstLine&quot;: { # A magnitude in a single direction in the specified units. # The amount of indentation for the first line of the paragraph. If unset, the value is inherited from the parent.
                      &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                      &quot;magnitude&quot;: 3.14, # The magnitude.
                    },
                    &quot;alignment&quot;: &quot;A String&quot;, # The text alignment for this paragraph.
                    &quot;lineSpacing&quot;: 3.14, # The amount of space between lines, as a percentage of normal, where normal is represented as 100.0. If unset, the value is inherited from the parent.
                    &quot;keepLinesTogether&quot;: True or False, # Whether all lines of the paragraph should be laid out on the same page or column if possible. If unset, the value is inherited from the parent.
                    &quot;avoidWidowAndOrphan&quot;: True or False, # Whether to avoid widows and orphans for the paragraph. If unset, the value is inherited from the parent.
                    &quot;spaceBelow&quot;: { # A magnitude in a single direction in the specified units. # The amount of extra space below the paragraph. If unset, the value is inherited from the parent.
                      &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                      &quot;magnitude&quot;: 3.14, # The magnitude.
                    },
                    &quot;borderBetween&quot;: { # A border around a paragraph. # 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 making changes to a paragraph border the new border must be specified in its entirety.
                      &quot;color&quot;: { # A color that can either be fully opaque or fully transparent. # The color of the border.
                        &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                          &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                            &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                            &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                            &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                          },
                        },
                      },
                      &quot;width&quot;: { # A magnitude in a single direction in the specified units. # The width of the border.
                        &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                        &quot;magnitude&quot;: 3.14, # The magnitude.
                      },
                      &quot;padding&quot;: { # A magnitude in a single direction in the specified units. # The padding of the border.
                        &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                        &quot;magnitude&quot;: 3.14, # The magnitude.
                      },
                      &quot;dashStyle&quot;: &quot;A String&quot;, # The dash style of the border.
                    },
                    &quot;headingId&quot;: &quot;A String&quot;, # The heading ID of the paragraph. If empty, then this paragraph is not a heading. This property is read-only.
                    &quot;spaceAbove&quot;: { # A magnitude in a single direction in the specified units. # The amount of extra space above the paragraph. If unset, the value is inherited from the parent.
                      &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                      &quot;magnitude&quot;: 3.14, # The magnitude.
                    },
                    &quot;direction&quot;: &quot;A String&quot;, # The text direction of this paragraph. If unset, the value defaults to LEFT_TO_RIGHT since paragraph direction is not inherited.
                    &quot;namedStyleType&quot;: &quot;A String&quot;, # The named style type of the paragraph. Since updating the named style type affects other properties within ParagraphStyle, the named style type is applied before the other properties are updated.
                    &quot;tabStops&quot;: [ # A list of the tab stops for this paragraph. The list of tab stops is not inherited. This property is read-only.
                      { # A tab stop within a paragraph.
                        &quot;offset&quot;: { # A magnitude in a single direction in the specified units. # The offset between this tab stop and the start margin.
                          &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                          &quot;magnitude&quot;: 3.14, # The magnitude.
                        },
                        &quot;alignment&quot;: &quot;A String&quot;, # The alignment of this tab stop. If unset, the value defaults to START.
                      },
                    ],
                    &quot;indentStart&quot;: { # A magnitude in a single direction in the specified units. # The amount of indentation for the paragraph on the side that corresponds to the start of the text, based on the current paragraph direction. If unset, the value is inherited from the parent.
                      &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                      &quot;magnitude&quot;: 3.14, # The magnitude.
                    },
                    &quot;keepWithNext&quot;: True or False, # Whether at least a part of this paragraph should be laid out on the same page or column as the next paragraph if possible. If unset, the value is inherited from the parent.
                    &quot;borderTop&quot;: { # A border around a paragraph. # 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 making changes to a paragraph border the new border must be specified in its entirety.
                      &quot;color&quot;: { # A color that can either be fully opaque or fully transparent. # The color of the border.
                        &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                          &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                            &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                            &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                            &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                          },
                        },
                      },
                      &quot;width&quot;: { # A magnitude in a single direction in the specified units. # The width of the border.
                        &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                        &quot;magnitude&quot;: 3.14, # The magnitude.
                      },
                      &quot;padding&quot;: { # A magnitude in a single direction in the specified units. # The padding of the border.
                        &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                        &quot;magnitude&quot;: 3.14, # The magnitude.
                      },
                      &quot;dashStyle&quot;: &quot;A String&quot;, # The dash style of the border.
                    },
                    &quot;borderLeft&quot;: { # A border around a paragraph. # The border to the left of this paragraph. If unset, the value is inherited from the parent. Paragraph borders cannot be partially updated. When making changes to a paragraph border the new border must be specified in its entirety.
                      &quot;color&quot;: { # A color that can either be fully opaque or fully transparent. # The color of the border.
                        &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                          &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                            &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                            &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                            &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                          },
                        },
                      },
                      &quot;width&quot;: { # A magnitude in a single direction in the specified units. # The width of the border.
                        &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                        &quot;magnitude&quot;: 3.14, # The magnitude.
                      },
                      &quot;padding&quot;: { # A magnitude in a single direction in the specified units. # The padding of the border.
                        &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                        &quot;magnitude&quot;: 3.14, # The magnitude.
                      },
                      &quot;dashStyle&quot;: &quot;A String&quot;, # The dash style of the border.
                    },
                    &quot;borderBottom&quot;: { # A border around a paragraph. # 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 making changes to a paragraph border the new border must be specified in its entirety.
                      &quot;color&quot;: { # A color that can either be fully opaque or fully transparent. # The color of the border.
                        &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                          &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                            &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                            &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                            &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                          },
                        },
                      },
                      &quot;width&quot;: { # A magnitude in a single direction in the specified units. # The width of the border.
                        &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                        &quot;magnitude&quot;: 3.14, # The magnitude.
                      },
                      &quot;padding&quot;: { # A magnitude in a single direction in the specified units. # The padding of the border.
                        &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                        &quot;magnitude&quot;: 3.14, # The magnitude.
                      },
                      &quot;dashStyle&quot;: &quot;A String&quot;, # The dash style of the border.
                    },
                    &quot;shading&quot;: { # The shading of a paragraph. # The shading of the paragraph. If unset, the value is inherited from the parent.
                      &quot;backgroundColor&quot;: { # A color that can either be fully opaque or fully transparent. # The background color of this paragraph shading.
                        &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                          &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                            &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                            &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                            &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                          },
                        },
                      },
                    },
                    &quot;indentEnd&quot;: { # A magnitude in a single direction in the specified units. # 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.
                      &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                      &quot;magnitude&quot;: 3.14, # The magnitude.
                    },
                    &quot;spacingMode&quot;: &quot;A String&quot;, # The spacing mode for the paragraph.
                  },
                  &quot;paragraphStyleSuggestionState&quot;: { # A mask that indicates which of the fields on the base ParagraphStyle have been changed in this suggestion. For any field set to true, there is a new suggested value. # A mask that indicates which of the fields on the base ParagraphStyle have been changed in this suggestion.
                    &quot;borderRightSuggested&quot;: True or False, # Indicates if there was a suggested change to border_right.
                    &quot;indentEndSuggested&quot;: True or False, # Indicates if there was a suggested change to indent_end.
                    &quot;lineSpacingSuggested&quot;: True or False, # Indicates if there was a suggested change to line_spacing.
                    &quot;headingIdSuggested&quot;: True or False, # Indicates if there was a suggested change to heading_id.
                    &quot;indentStartSuggested&quot;: True or False, # Indicates if there was a suggested change to indent_start.
                    &quot;keepWithNextSuggested&quot;: True or False, # Indicates if there was a suggested change to keep_with_next.
                    &quot;namedStyleTypeSuggested&quot;: True or False, # Indicates if there was a suggested change to named_style_type.
                    &quot;borderTopSuggested&quot;: True or False, # Indicates if there was a suggested change to border_top.
                    &quot;keepLinesTogetherSuggested&quot;: True or False, # Indicates if there was a suggested change to keep_lines_together.
                    &quot;avoidWidowAndOrphanSuggested&quot;: True or False, # Indicates if there was a suggested change to avoid_widow_and_orphan.
                    &quot;spaceBelowSuggested&quot;: True or False, # Indicates if there was a suggested change to space_below.
                    &quot;indentFirstLineSuggested&quot;: True or False, # Indicates if there was a suggested change to indent_first_line.
                    &quot;shadingSuggestionState&quot;: { # A mask that indicates which of the fields on the base Shading have been changed in this suggested change. For any field set to true, there is a new suggested value. # A mask that indicates which of the fields in shading have been changed in this suggestion.
                      &quot;backgroundColorSuggested&quot;: True or False, # Indicates if there was a suggested change to the Shading.
                    },
                    &quot;directionSuggested&quot;: True or False, # Indicates if there was a suggested change to direction.
                    &quot;borderBetweenSuggested&quot;: True or False, # Indicates if there was a suggested change to border_between.
                    &quot;spaceAboveSuggested&quot;: True or False, # Indicates if there was a suggested change to space_above.
                    &quot;borderLeftSuggested&quot;: True or False, # Indicates if there was a suggested change to border_left.
                    &quot;spacingModeSuggested&quot;: True or False, # Indicates if there was a suggested change to spacing_mode.
                    &quot;borderBottomSuggested&quot;: True or False, # Indicates if there was a suggested change to border_bottom.
                    &quot;alignmentSuggested&quot;: True or False, # Indicates if there was a suggested change to alignment.
                  },
                },
              },
              &quot;bullet&quot;: { # Describes the bullet of a paragraph. # The bullet for this paragraph. If not present, the paragraph does not belong to a list.
                &quot;textStyle&quot;: { # Represents the styling that can be applied to text. Inherited text styles are represented as unset fields in this message. A text style&#x27;s parent depends on where the text style is defined: * The TextStyle of text in a Paragraph inherits from the paragraph&#x27;s corresponding named style type. * The TextStyle on a named style inherits from the normal text named style. * The TextStyle of the normal text named style inherits from the default text style in the Docs editor. * The TextStyle on a Paragraph element that is contained in a table may inherit its text style from the table style. If the text style does not inherit from a parent, unsetting fields will revert the style to a value matching the defaults in the Docs editor. # The paragraph specific text style applied to this bullet.
                  &quot;italic&quot;: True or False, # Whether or not the text is italicized.
                  &quot;baselineOffset&quot;: &quot;A String&quot;, # The text&#x27;s vertical offset from its normal position. Text with `SUPERSCRIPT` or `SUBSCRIPT` baseline offsets is automatically rendered in a smaller font size, computed based on the `font_size` field. The `font_size` itself is not affected by changes in this field.
                  &quot;bold&quot;: True or False, # Whether or not the text is rendered as bold.
                  &quot;fontSize&quot;: { # A magnitude in a single direction in the specified units. # The size of the text&#x27;s font.
                    &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                    &quot;magnitude&quot;: 3.14, # The magnitude.
                  },
                  &quot;foregroundColor&quot;: { # A color that can either be fully opaque or fully transparent. # The foreground color of the text. If set, the color is either an RGB color or transparent, depending on the `color` field.
                    &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                      &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                        &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                        &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                        &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                      },
                    },
                  },
                  &quot;backgroundColor&quot;: { # A color that can either be fully opaque or fully transparent. # The background color of the text. If set, the color is either an RGB color or transparent, depending on the `color` field.
                    &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                      &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                        &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                        &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                        &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                      },
                    },
                  },
                  &quot;link&quot;: { # A reference to another portion of a document or an external URL resource. # The hyperlink destination of the text. If unset, there is no link. Links are not inherited from parent text. Changing the link in an update request causes some other changes to the text style of the range: * When setting a link, the text foreground color will be updated to the default link color and the text will be underlined. If these fields are modified in the same request, those values will be used instead of the link defaults. * Setting a link on a text range that overlaps with an existing link will also update the existing link to point to the new URL. * Links are not settable on newline characters. As a result, setting a link on a text range that crosses a paragraph boundary, such as `&quot;ABC\n123&quot;`, will separate the newline character(s) into their own text runs. The link will be applied separately to the runs before and after the newline. * Removing a link will update the text style of the range to match the style of the preceding text (or the default text styles if the preceding text is another link) unless different styles are being set in the same request.
                    &quot;bookmarkId&quot;: &quot;A String&quot;, # The ID of a bookmark in this document.
                    &quot;url&quot;: &quot;A String&quot;, # An external URL.
                    &quot;headingId&quot;: &quot;A String&quot;, # The ID of a heading in this document.
                  },
                  &quot;strikethrough&quot;: True or False, # Whether or not the text is struck through.
                  &quot;weightedFontFamily&quot;: { # Represents a font family and weight of text. # The font family and rendered weight of the text. If an update request specifies values for both `weighted_font_family` and `bold`, the `weighted_font_family` is applied first, then `bold`. If `weighted_font_family#weight` is not set, it defaults to `400`. If `weighted_font_family` is set, then `weighted_font_family#font_family` must also be set with a non-empty value. Otherwise, a 400 bad request error is returned.
                    &quot;fontFamily&quot;: &quot;A String&quot;, # The font family of the text. The font family can be any font from the Font menu in Docs or from [Google Fonts] (https://fonts.google.com/). If the font name is unrecognized, the text is rendered in `Arial`.
                    &quot;weight&quot;: 42, # The weight of the font. This field can have any value that is a multiple of `100` between `100` and `900`, inclusive. This range corresponds to the numerical values described in the CSS 2.1 Specification, [section 15.6](https://www.w3.org/TR/CSS21/fonts.html#font-boldness), with non-numerical values disallowed. The default value is `400` (&quot;normal&quot;). The font weight makes up just one component of the rendered font weight. The rendered weight is determined by a combination of the `weight` and the text style&#x27;s resolved `bold` value, after accounting for inheritance: * If the text is bold and the weight is less than `400`, the rendered weight is 400. * If the text is bold and the weight is greater than or equal to `400` but is less than `700`, the rendered weight is `700`. * If the weight is greater than or equal to `700`, the rendered weight is equal to the weight. * If the text is not bold, the rendered weight is equal to the weight.
                  },
                  &quot;underline&quot;: True or False, # Whether or not the text is underlined.
                  &quot;smallCaps&quot;: True or False, # Whether or not the text is in small capital letters.
                },
                &quot;nestingLevel&quot;: 42, # The nesting level of this paragraph in the list.
                &quot;listId&quot;: &quot;A String&quot;, # The ID of the list this paragraph belongs to.
              },
              &quot;suggestedBulletChanges&quot;: { # The suggested changes to this paragraph&#x27;s bullet.
                &quot;a_key&quot;: { # A suggested change to a Bullet.
                  &quot;bulletSuggestionState&quot;: { # A mask that indicates which of the fields on the base Bullet have been changed in this suggestion. For any field set to true, there is a new suggested value. # A mask that indicates which of the fields on the base Bullet have been changed in this suggestion.
                    &quot;nestingLevelSuggested&quot;: True or False, # Indicates if there was a suggested change to the nesting_level.
                    &quot;textStyleSuggestionState&quot;: { # A mask that indicates which of the fields on the base TextStyle have been changed in this suggestion. For any field set to true, there is a new suggested value. # A mask that indicates which of the fields in text style have been changed in this suggestion.
                      &quot;backgroundColorSuggested&quot;: True or False, # Indicates if there was a suggested change to background_color.
                      &quot;fontSizeSuggested&quot;: True or False, # Indicates if there was a suggested change to font_size.
                      &quot;boldSuggested&quot;: True or False, # Indicates if there was a suggested change to bold.
                      &quot;baselineOffsetSuggested&quot;: True or False, # Indicates if there was a suggested change to baseline_offset.
                      &quot;foregroundColorSuggested&quot;: True or False, # Indicates if there was a suggested change to foreground_color.
                      &quot;italicSuggested&quot;: True or False, # Indicates if there was a suggested change to italic.
                      &quot;linkSuggested&quot;: True or False, # Indicates if there was a suggested change to link.
                      &quot;underlineSuggested&quot;: True or False, # Indicates if there was a suggested change to underline.
                      &quot;weightedFontFamilySuggested&quot;: True or False, # Indicates if there was a suggested change to weighted_font_family.
                      &quot;smallCapsSuggested&quot;: True or False, # Indicates if there was a suggested change to small_caps.
                      &quot;strikethroughSuggested&quot;: True or False, # Indicates if there was a suggested change to strikethrough.
                    },
                    &quot;listIdSuggested&quot;: True or False, # Indicates if there was a suggested change to the list_id.
                  },
                  &quot;bullet&quot;: { # Describes the bullet of a paragraph. # A Bullet that only includes the changes made in this suggestion. This can be used along with the bullet_suggestion_state to see which fields have changed and their new values.
                    &quot;textStyle&quot;: { # Represents the styling that can be applied to text. Inherited text styles are represented as unset fields in this message. A text style&#x27;s parent depends on where the text style is defined: * The TextStyle of text in a Paragraph inherits from the paragraph&#x27;s corresponding named style type. * The TextStyle on a named style inherits from the normal text named style. * The TextStyle of the normal text named style inherits from the default text style in the Docs editor. * The TextStyle on a Paragraph element that is contained in a table may inherit its text style from the table style. If the text style does not inherit from a parent, unsetting fields will revert the style to a value matching the defaults in the Docs editor. # The paragraph specific text style applied to this bullet.
                      &quot;italic&quot;: True or False, # Whether or not the text is italicized.
                      &quot;baselineOffset&quot;: &quot;A String&quot;, # The text&#x27;s vertical offset from its normal position. Text with `SUPERSCRIPT` or `SUBSCRIPT` baseline offsets is automatically rendered in a smaller font size, computed based on the `font_size` field. The `font_size` itself is not affected by changes in this field.
                      &quot;bold&quot;: True or False, # Whether or not the text is rendered as bold.
                      &quot;fontSize&quot;: { # A magnitude in a single direction in the specified units. # The size of the text&#x27;s font.
                        &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                        &quot;magnitude&quot;: 3.14, # The magnitude.
                      },
                      &quot;foregroundColor&quot;: { # A color that can either be fully opaque or fully transparent. # The foreground color of the text. If set, the color is either an RGB color or transparent, depending on the `color` field.
                        &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                          &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                            &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                            &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                            &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                          },
                        },
                      },
                      &quot;backgroundColor&quot;: { # A color that can either be fully opaque or fully transparent. # The background color of the text. If set, the color is either an RGB color or transparent, depending on the `color` field.
                        &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                          &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                            &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                            &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                            &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                          },
                        },
                      },
                      &quot;link&quot;: { # A reference to another portion of a document or an external URL resource. # The hyperlink destination of the text. If unset, there is no link. Links are not inherited from parent text. Changing the link in an update request causes some other changes to the text style of the range: * When setting a link, the text foreground color will be updated to the default link color and the text will be underlined. If these fields are modified in the same request, those values will be used instead of the link defaults. * Setting a link on a text range that overlaps with an existing link will also update the existing link to point to the new URL. * Links are not settable on newline characters. As a result, setting a link on a text range that crosses a paragraph boundary, such as `&quot;ABC\n123&quot;`, will separate the newline character(s) into their own text runs. The link will be applied separately to the runs before and after the newline. * Removing a link will update the text style of the range to match the style of the preceding text (or the default text styles if the preceding text is another link) unless different styles are being set in the same request.
                        &quot;bookmarkId&quot;: &quot;A String&quot;, # The ID of a bookmark in this document.
                        &quot;url&quot;: &quot;A String&quot;, # An external URL.
                        &quot;headingId&quot;: &quot;A String&quot;, # The ID of a heading in this document.
                      },
                      &quot;strikethrough&quot;: True or False, # Whether or not the text is struck through.
                      &quot;weightedFontFamily&quot;: { # Represents a font family and weight of text. # The font family and rendered weight of the text. If an update request specifies values for both `weighted_font_family` and `bold`, the `weighted_font_family` is applied first, then `bold`. If `weighted_font_family#weight` is not set, it defaults to `400`. If `weighted_font_family` is set, then `weighted_font_family#font_family` must also be set with a non-empty value. Otherwise, a 400 bad request error is returned.
                        &quot;fontFamily&quot;: &quot;A String&quot;, # The font family of the text. The font family can be any font from the Font menu in Docs or from [Google Fonts] (https://fonts.google.com/). If the font name is unrecognized, the text is rendered in `Arial`.
                        &quot;weight&quot;: 42, # The weight of the font. This field can have any value that is a multiple of `100` between `100` and `900`, inclusive. This range corresponds to the numerical values described in the CSS 2.1 Specification, [section 15.6](https://www.w3.org/TR/CSS21/fonts.html#font-boldness), with non-numerical values disallowed. The default value is `400` (&quot;normal&quot;). The font weight makes up just one component of the rendered font weight. The rendered weight is determined by a combination of the `weight` and the text style&#x27;s resolved `bold` value, after accounting for inheritance: * If the text is bold and the weight is less than `400`, the rendered weight is 400. * If the text is bold and the weight is greater than or equal to `400` but is less than `700`, the rendered weight is `700`. * If the weight is greater than or equal to `700`, the rendered weight is equal to the weight. * If the text is not bold, the rendered weight is equal to the weight.
                      },
                      &quot;underline&quot;: True or False, # Whether or not the text is underlined.
                      &quot;smallCaps&quot;: True or False, # Whether or not the text is in small capital letters.
                    },
                    &quot;nestingLevel&quot;: 42, # The nesting level of this paragraph in the list.
                    &quot;listId&quot;: &quot;A String&quot;, # The ID of the list this paragraph belongs to.
                  },
                },
              },
              &quot;suggestedPositionedObjectIds&quot;: { # The IDs of the positioned objects that are suggested to be attached to this paragraph, keyed by suggestion ID.
                &quot;a_key&quot;: { # A collection of object IDs.
                  &quot;objectIds&quot;: [ # The object IDs.
                    &quot;A String&quot;,
                  ],
                },
              },
              &quot;elements&quot;: [ # The content of the paragraph broken down into its component parts.
                { # A ParagraphElement describes content within a Paragraph.
                  &quot;textRun&quot;: { # A ParagraphElement that represents a run of text that all has the same styling. # A text run paragraph element.
                    &quot;suggestedInsertionIds&quot;: [ # The suggested insertion IDs. A TextRun may have multiple insertion IDs if it is a nested suggested change. If empty, then this is not a suggested insertion.
                      &quot;A String&quot;,
                    ],
                    &quot;content&quot;: &quot;A String&quot;, # The text of this run. Any non-text elements in the run are replaced with the Unicode character U+E907.
                    &quot;textStyle&quot;: { # Represents the styling that can be applied to text. Inherited text styles are represented as unset fields in this message. A text style&#x27;s parent depends on where the text style is defined: * The TextStyle of text in a Paragraph inherits from the paragraph&#x27;s corresponding named style type. * The TextStyle on a named style inherits from the normal text named style. * The TextStyle of the normal text named style inherits from the default text style in the Docs editor. * The TextStyle on a Paragraph element that is contained in a table may inherit its text style from the table style. If the text style does not inherit from a parent, unsetting fields will revert the style to a value matching the defaults in the Docs editor. # The text style of this run.
                      &quot;italic&quot;: True or False, # Whether or not the text is italicized.
                      &quot;baselineOffset&quot;: &quot;A String&quot;, # The text&#x27;s vertical offset from its normal position. Text with `SUPERSCRIPT` or `SUBSCRIPT` baseline offsets is automatically rendered in a smaller font size, computed based on the `font_size` field. The `font_size` itself is not affected by changes in this field.
                      &quot;bold&quot;: True or False, # Whether or not the text is rendered as bold.
                      &quot;fontSize&quot;: { # A magnitude in a single direction in the specified units. # The size of the text&#x27;s font.
                        &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                        &quot;magnitude&quot;: 3.14, # The magnitude.
                      },
                      &quot;foregroundColor&quot;: { # A color that can either be fully opaque or fully transparent. # The foreground color of the text. If set, the color is either an RGB color or transparent, depending on the `color` field.
                        &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                          &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                            &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                            &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                            &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                          },
                        },
                      },
                      &quot;backgroundColor&quot;: { # A color that can either be fully opaque or fully transparent. # The background color of the text. If set, the color is either an RGB color or transparent, depending on the `color` field.
                        &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                          &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                            &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                            &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                            &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                          },
                        },
                      },
                      &quot;link&quot;: { # A reference to another portion of a document or an external URL resource. # The hyperlink destination of the text. If unset, there is no link. Links are not inherited from parent text. Changing the link in an update request causes some other changes to the text style of the range: * When setting a link, the text foreground color will be updated to the default link color and the text will be underlined. If these fields are modified in the same request, those values will be used instead of the link defaults. * Setting a link on a text range that overlaps with an existing link will also update the existing link to point to the new URL. * Links are not settable on newline characters. As a result, setting a link on a text range that crosses a paragraph boundary, such as `&quot;ABC\n123&quot;`, will separate the newline character(s) into their own text runs. The link will be applied separately to the runs before and after the newline. * Removing a link will update the text style of the range to match the style of the preceding text (or the default text styles if the preceding text is another link) unless different styles are being set in the same request.
                        &quot;bookmarkId&quot;: &quot;A String&quot;, # The ID of a bookmark in this document.
                        &quot;url&quot;: &quot;A String&quot;, # An external URL.
                        &quot;headingId&quot;: &quot;A String&quot;, # The ID of a heading in this document.
                      },
                      &quot;strikethrough&quot;: True or False, # Whether or not the text is struck through.
                      &quot;weightedFontFamily&quot;: { # Represents a font family and weight of text. # The font family and rendered weight of the text. If an update request specifies values for both `weighted_font_family` and `bold`, the `weighted_font_family` is applied first, then `bold`. If `weighted_font_family#weight` is not set, it defaults to `400`. If `weighted_font_family` is set, then `weighted_font_family#font_family` must also be set with a non-empty value. Otherwise, a 400 bad request error is returned.
                        &quot;fontFamily&quot;: &quot;A String&quot;, # The font family of the text. The font family can be any font from the Font menu in Docs or from [Google Fonts] (https://fonts.google.com/). If the font name is unrecognized, the text is rendered in `Arial`.
                        &quot;weight&quot;: 42, # The weight of the font. This field can have any value that is a multiple of `100` between `100` and `900`, inclusive. This range corresponds to the numerical values described in the CSS 2.1 Specification, [section 15.6](https://www.w3.org/TR/CSS21/fonts.html#font-boldness), with non-numerical values disallowed. The default value is `400` (&quot;normal&quot;). The font weight makes up just one component of the rendered font weight. The rendered weight is determined by a combination of the `weight` and the text style&#x27;s resolved `bold` value, after accounting for inheritance: * If the text is bold and the weight is less than `400`, the rendered weight is 400. * If the text is bold and the weight is greater than or equal to `400` but is less than `700`, the rendered weight is `700`. * If the weight is greater than or equal to `700`, the rendered weight is equal to the weight. * If the text is not bold, the rendered weight is equal to the weight.
                      },
                      &quot;underline&quot;: True or False, # Whether or not the text is underlined.
                      &quot;smallCaps&quot;: True or False, # Whether or not the text is in small capital letters.
                    },
                    &quot;suggestedTextStyleChanges&quot;: { # The suggested text style changes to this run, keyed by suggestion ID.
                      &quot;a_key&quot;: { # A suggested change to a TextStyle.
                        &quot;textStyleSuggestionState&quot;: { # A mask that indicates which of the fields on the base TextStyle have been changed in this suggestion. For any field set to true, there is a new suggested value. # A mask that indicates which of the fields on the base TextStyle have been changed in this suggestion.
                          &quot;backgroundColorSuggested&quot;: True or False, # Indicates if there was a suggested change to background_color.
                          &quot;fontSizeSuggested&quot;: True or False, # Indicates if there was a suggested change to font_size.
                          &quot;boldSuggested&quot;: True or False, # Indicates if there was a suggested change to bold.
                          &quot;baselineOffsetSuggested&quot;: True or False, # Indicates if there was a suggested change to baseline_offset.
                          &quot;foregroundColorSuggested&quot;: True or False, # Indicates if there was a suggested change to foreground_color.
                          &quot;italicSuggested&quot;: True or False, # Indicates if there was a suggested change to italic.
                          &quot;linkSuggested&quot;: True or False, # Indicates if there was a suggested change to link.
                          &quot;underlineSuggested&quot;: True or False, # Indicates if there was a suggested change to underline.
                          &quot;weightedFontFamilySuggested&quot;: True or False, # Indicates if there was a suggested change to weighted_font_family.
                          &quot;smallCapsSuggested&quot;: True or False, # Indicates if there was a suggested change to small_caps.
                          &quot;strikethroughSuggested&quot;: True or False, # Indicates if there was a suggested change to strikethrough.
                        },
                        &quot;textStyle&quot;: { # Represents the styling that can be applied to text. Inherited text styles are represented as unset fields in this message. A text style&#x27;s parent depends on where the text style is defined: * The TextStyle of text in a Paragraph inherits from the paragraph&#x27;s corresponding named style type. * The TextStyle on a named style inherits from the normal text named style. * The TextStyle of the normal text named style inherits from the default text style in the Docs editor. * The TextStyle on a Paragraph element that is contained in a table may inherit its text style from the table style. If the text style does not inherit from a parent, unsetting fields will revert the style to a value matching the defaults in the Docs editor. # A TextStyle that only includes the changes made in this suggestion. This can be used along with the text_style_suggestion_state to see which fields have changed and their new values.
                          &quot;italic&quot;: True or False, # Whether or not the text is italicized.
                          &quot;baselineOffset&quot;: &quot;A String&quot;, # The text&#x27;s vertical offset from its normal position. Text with `SUPERSCRIPT` or `SUBSCRIPT` baseline offsets is automatically rendered in a smaller font size, computed based on the `font_size` field. The `font_size` itself is not affected by changes in this field.
                          &quot;bold&quot;: True or False, # Whether or not the text is rendered as bold.
                          &quot;fontSize&quot;: { # A magnitude in a single direction in the specified units. # The size of the text&#x27;s font.
                            &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                            &quot;magnitude&quot;: 3.14, # The magnitude.
                          },
                          &quot;foregroundColor&quot;: { # A color that can either be fully opaque or fully transparent. # The foreground color of the text. If set, the color is either an RGB color or transparent, depending on the `color` field.
                            &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                              &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                                &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                                &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                                &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                              },
                            },
                          },
                          &quot;backgroundColor&quot;: { # A color that can either be fully opaque or fully transparent. # The background color of the text. If set, the color is either an RGB color or transparent, depending on the `color` field.
                            &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                              &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                                &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                                &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                                &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                              },
                            },
                          },
                          &quot;link&quot;: { # A reference to another portion of a document or an external URL resource. # The hyperlink destination of the text. If unset, there is no link. Links are not inherited from parent text. Changing the link in an update request causes some other changes to the text style of the range: * When setting a link, the text foreground color will be updated to the default link color and the text will be underlined. If these fields are modified in the same request, those values will be used instead of the link defaults. * Setting a link on a text range that overlaps with an existing link will also update the existing link to point to the new URL. * Links are not settable on newline characters. As a result, setting a link on a text range that crosses a paragraph boundary, such as `&quot;ABC\n123&quot;`, will separate the newline character(s) into their own text runs. The link will be applied separately to the runs before and after the newline. * Removing a link will update the text style of the range to match the style of the preceding text (or the default text styles if the preceding text is another link) unless different styles are being set in the same request.
                            &quot;bookmarkId&quot;: &quot;A String&quot;, # The ID of a bookmark in this document.
                            &quot;url&quot;: &quot;A String&quot;, # An external URL.
                            &quot;headingId&quot;: &quot;A String&quot;, # The ID of a heading in this document.
                          },
                          &quot;strikethrough&quot;: True or False, # Whether or not the text is struck through.
                          &quot;weightedFontFamily&quot;: { # Represents a font family and weight of text. # The font family and rendered weight of the text. If an update request specifies values for both `weighted_font_family` and `bold`, the `weighted_font_family` is applied first, then `bold`. If `weighted_font_family#weight` is not set, it defaults to `400`. If `weighted_font_family` is set, then `weighted_font_family#font_family` must also be set with a non-empty value. Otherwise, a 400 bad request error is returned.
                            &quot;fontFamily&quot;: &quot;A String&quot;, # The font family of the text. The font family can be any font from the Font menu in Docs or from [Google Fonts] (https://fonts.google.com/). If the font name is unrecognized, the text is rendered in `Arial`.
                            &quot;weight&quot;: 42, # The weight of the font. This field can have any value that is a multiple of `100` between `100` and `900`, inclusive. This range corresponds to the numerical values described in the CSS 2.1 Specification, [section 15.6](https://www.w3.org/TR/CSS21/fonts.html#font-boldness), with non-numerical values disallowed. The default value is `400` (&quot;normal&quot;). The font weight makes up just one component of the rendered font weight. The rendered weight is determined by a combination of the `weight` and the text style&#x27;s resolved `bold` value, after accounting for inheritance: * If the text is bold and the weight is less than `400`, the rendered weight is 400. * If the text is bold and the weight is greater than or equal to `400` but is less than `700`, the rendered weight is `700`. * If the weight is greater than or equal to `700`, the rendered weight is equal to the weight. * If the text is not bold, the rendered weight is equal to the weight.
                          },
                          &quot;underline&quot;: True or False, # Whether or not the text is underlined.
                          &quot;smallCaps&quot;: True or False, # Whether or not the text is in small capital letters.
                        },
                      },
                    },
                    &quot;suggestedDeletionIds&quot;: [ # The suggested deletion IDs. If empty, then there are no suggested deletions of this content.
                      &quot;A String&quot;,
                    ],
                  },
                  &quot;pageBreak&quot;: { # A ParagraphElement representing a page break. A page break makes the subsequent text start at the top of the next page. # A page break paragraph element.
                    &quot;suggestedInsertionIds&quot;: [ # The suggested insertion IDs. A PageBreak may have multiple insertion IDs if it is a nested suggested change. If empty, then this is not a suggested insertion.
                      &quot;A String&quot;,
                    ],
                    &quot;textStyle&quot;: { # Represents the styling that can be applied to text. Inherited text styles are represented as unset fields in this message. A text style&#x27;s parent depends on where the text style is defined: * The TextStyle of text in a Paragraph inherits from the paragraph&#x27;s corresponding named style type. * The TextStyle on a named style inherits from the normal text named style. * The TextStyle of the normal text named style inherits from the default text style in the Docs editor. * The TextStyle on a Paragraph element that is contained in a table may inherit its text style from the table style. If the text style does not inherit from a parent, unsetting fields will revert the style to a value matching the defaults in the Docs editor. # The text style of this PageBreak. Similar to text content, like text runs and footnote references, the text style of a page break can affect content layout as well as the styling of text inserted adjacent to it.
                      &quot;italic&quot;: True or False, # Whether or not the text is italicized.
                      &quot;baselineOffset&quot;: &quot;A String&quot;, # The text&#x27;s vertical offset from its normal position. Text with `SUPERSCRIPT` or `SUBSCRIPT` baseline offsets is automatically rendered in a smaller font size, computed based on the `font_size` field. The `font_size` itself is not affected by changes in this field.
                      &quot;bold&quot;: True or False, # Whether or not the text is rendered as bold.
                      &quot;fontSize&quot;: { # A magnitude in a single direction in the specified units. # The size of the text&#x27;s font.
                        &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                        &quot;magnitude&quot;: 3.14, # The magnitude.
                      },
                      &quot;foregroundColor&quot;: { # A color that can either be fully opaque or fully transparent. # The foreground color of the text. If set, the color is either an RGB color or transparent, depending on the `color` field.
                        &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                          &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                            &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                            &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                            &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                          },
                        },
                      },
                      &quot;backgroundColor&quot;: { # A color that can either be fully opaque or fully transparent. # The background color of the text. If set, the color is either an RGB color or transparent, depending on the `color` field.
                        &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                          &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                            &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                            &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                            &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                          },
                        },
                      },
                      &quot;link&quot;: { # A reference to another portion of a document or an external URL resource. # The hyperlink destination of the text. If unset, there is no link. Links are not inherited from parent text. Changing the link in an update request causes some other changes to the text style of the range: * When setting a link, the text foreground color will be updated to the default link color and the text will be underlined. If these fields are modified in the same request, those values will be used instead of the link defaults. * Setting a link on a text range that overlaps with an existing link will also update the existing link to point to the new URL. * Links are not settable on newline characters. As a result, setting a link on a text range that crosses a paragraph boundary, such as `&quot;ABC\n123&quot;`, will separate the newline character(s) into their own text runs. The link will be applied separately to the runs before and after the newline. * Removing a link will update the text style of the range to match the style of the preceding text (or the default text styles if the preceding text is another link) unless different styles are being set in the same request.
                        &quot;bookmarkId&quot;: &quot;A String&quot;, # The ID of a bookmark in this document.
                        &quot;url&quot;: &quot;A String&quot;, # An external URL.
                        &quot;headingId&quot;: &quot;A String&quot;, # The ID of a heading in this document.
                      },
                      &quot;strikethrough&quot;: True or False, # Whether or not the text is struck through.
                      &quot;weightedFontFamily&quot;: { # Represents a font family and weight of text. # The font family and rendered weight of the text. If an update request specifies values for both `weighted_font_family` and `bold`, the `weighted_font_family` is applied first, then `bold`. If `weighted_font_family#weight` is not set, it defaults to `400`. If `weighted_font_family` is set, then `weighted_font_family#font_family` must also be set with a non-empty value. Otherwise, a 400 bad request error is returned.
                        &quot;fontFamily&quot;: &quot;A String&quot;, # The font family of the text. The font family can be any font from the Font menu in Docs or from [Google Fonts] (https://fonts.google.com/). If the font name is unrecognized, the text is rendered in `Arial`.
                        &quot;weight&quot;: 42, # The weight of the font. This field can have any value that is a multiple of `100` between `100` and `900`, inclusive. This range corresponds to the numerical values described in the CSS 2.1 Specification, [section 15.6](https://www.w3.org/TR/CSS21/fonts.html#font-boldness), with non-numerical values disallowed. The default value is `400` (&quot;normal&quot;). The font weight makes up just one component of the rendered font weight. The rendered weight is determined by a combination of the `weight` and the text style&#x27;s resolved `bold` value, after accounting for inheritance: * If the text is bold and the weight is less than `400`, the rendered weight is 400. * If the text is bold and the weight is greater than or equal to `400` but is less than `700`, the rendered weight is `700`. * If the weight is greater than or equal to `700`, the rendered weight is equal to the weight. * If the text is not bold, the rendered weight is equal to the weight.
                      },
                      &quot;underline&quot;: True or False, # Whether or not the text is underlined.
                      &quot;smallCaps&quot;: True or False, # Whether or not the text is in small capital letters.
                    },
                    &quot;suggestedTextStyleChanges&quot;: { # The suggested text style changes to this PageBreak, keyed by suggestion ID.
                      &quot;a_key&quot;: { # A suggested change to a TextStyle.
                        &quot;textStyleSuggestionState&quot;: { # A mask that indicates which of the fields on the base TextStyle have been changed in this suggestion. For any field set to true, there is a new suggested value. # A mask that indicates which of the fields on the base TextStyle have been changed in this suggestion.
                          &quot;backgroundColorSuggested&quot;: True or False, # Indicates if there was a suggested change to background_color.
                          &quot;fontSizeSuggested&quot;: True or False, # Indicates if there was a suggested change to font_size.
                          &quot;boldSuggested&quot;: True or False, # Indicates if there was a suggested change to bold.
                          &quot;baselineOffsetSuggested&quot;: True or False, # Indicates if there was a suggested change to baseline_offset.
                          &quot;foregroundColorSuggested&quot;: True or False, # Indicates if there was a suggested change to foreground_color.
                          &quot;italicSuggested&quot;: True or False, # Indicates if there was a suggested change to italic.
                          &quot;linkSuggested&quot;: True or False, # Indicates if there was a suggested change to link.
                          &quot;underlineSuggested&quot;: True or False, # Indicates if there was a suggested change to underline.
                          &quot;weightedFontFamilySuggested&quot;: True or False, # Indicates if there was a suggested change to weighted_font_family.
                          &quot;smallCapsSuggested&quot;: True or False, # Indicates if there was a suggested change to small_caps.
                          &quot;strikethroughSuggested&quot;: True or False, # Indicates if there was a suggested change to strikethrough.
                        },
                        &quot;textStyle&quot;: { # Represents the styling that can be applied to text. Inherited text styles are represented as unset fields in this message. A text style&#x27;s parent depends on where the text style is defined: * The TextStyle of text in a Paragraph inherits from the paragraph&#x27;s corresponding named style type. * The TextStyle on a named style inherits from the normal text named style. * The TextStyle of the normal text named style inherits from the default text style in the Docs editor. * The TextStyle on a Paragraph element that is contained in a table may inherit its text style from the table style. If the text style does not inherit from a parent, unsetting fields will revert the style to a value matching the defaults in the Docs editor. # A TextStyle that only includes the changes made in this suggestion. This can be used along with the text_style_suggestion_state to see which fields have changed and their new values.
                          &quot;italic&quot;: True or False, # Whether or not the text is italicized.
                          &quot;baselineOffset&quot;: &quot;A String&quot;, # The text&#x27;s vertical offset from its normal position. Text with `SUPERSCRIPT` or `SUBSCRIPT` baseline offsets is automatically rendered in a smaller font size, computed based on the `font_size` field. The `font_size` itself is not affected by changes in this field.
                          &quot;bold&quot;: True or False, # Whether or not the text is rendered as bold.
                          &quot;fontSize&quot;: { # A magnitude in a single direction in the specified units. # The size of the text&#x27;s font.
                            &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                            &quot;magnitude&quot;: 3.14, # The magnitude.
                          },
                          &quot;foregroundColor&quot;: { # A color that can either be fully opaque or fully transparent. # The foreground color of the text. If set, the color is either an RGB color or transparent, depending on the `color` field.
                            &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                              &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                                &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                                &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                                &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                              },
                            },
                          },
                          &quot;backgroundColor&quot;: { # A color that can either be fully opaque or fully transparent. # The background color of the text. If set, the color is either an RGB color or transparent, depending on the `color` field.
                            &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                              &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                                &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                                &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                                &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                              },
                            },
                          },
                          &quot;link&quot;: { # A reference to another portion of a document or an external URL resource. # The hyperlink destination of the text. If unset, there is no link. Links are not inherited from parent text. Changing the link in an update request causes some other changes to the text style of the range: * When setting a link, the text foreground color will be updated to the default link color and the text will be underlined. If these fields are modified in the same request, those values will be used instead of the link defaults. * Setting a link on a text range that overlaps with an existing link will also update the existing link to point to the new URL. * Links are not settable on newline characters. As a result, setting a link on a text range that crosses a paragraph boundary, such as `&quot;ABC\n123&quot;`, will separate the newline character(s) into their own text runs. The link will be applied separately to the runs before and after the newline. * Removing a link will update the text style of the range to match the style of the preceding text (or the default text styles if the preceding text is another link) unless different styles are being set in the same request.
                            &quot;bookmarkId&quot;: &quot;A String&quot;, # The ID of a bookmark in this document.
                            &quot;url&quot;: &quot;A String&quot;, # An external URL.
                            &quot;headingId&quot;: &quot;A String&quot;, # The ID of a heading in this document.
                          },
                          &quot;strikethrough&quot;: True or False, # Whether or not the text is struck through.
                          &quot;weightedFontFamily&quot;: { # Represents a font family and weight of text. # The font family and rendered weight of the text. If an update request specifies values for both `weighted_font_family` and `bold`, the `weighted_font_family` is applied first, then `bold`. If `weighted_font_family#weight` is not set, it defaults to `400`. If `weighted_font_family` is set, then `weighted_font_family#font_family` must also be set with a non-empty value. Otherwise, a 400 bad request error is returned.
                            &quot;fontFamily&quot;: &quot;A String&quot;, # The font family of the text. The font family can be any font from the Font menu in Docs or from [Google Fonts] (https://fonts.google.com/). If the font name is unrecognized, the text is rendered in `Arial`.
                            &quot;weight&quot;: 42, # The weight of the font. This field can have any value that is a multiple of `100` between `100` and `900`, inclusive. This range corresponds to the numerical values described in the CSS 2.1 Specification, [section 15.6](https://www.w3.org/TR/CSS21/fonts.html#font-boldness), with non-numerical values disallowed. The default value is `400` (&quot;normal&quot;). The font weight makes up just one component of the rendered font weight. The rendered weight is determined by a combination of the `weight` and the text style&#x27;s resolved `bold` value, after accounting for inheritance: * If the text is bold and the weight is less than `400`, the rendered weight is 400. * If the text is bold and the weight is greater than or equal to `400` but is less than `700`, the rendered weight is `700`. * If the weight is greater than or equal to `700`, the rendered weight is equal to the weight. * If the text is not bold, the rendered weight is equal to the weight.
                          },
                          &quot;underline&quot;: True or False, # Whether or not the text is underlined.
                          &quot;smallCaps&quot;: True or False, # Whether or not the text is in small capital letters.
                        },
                      },
                    },
                    &quot;suggestedDeletionIds&quot;: [ # The suggested deletion IDs. If empty, then there are no suggested deletions of this content.
                      &quot;A String&quot;,
                    ],
                  },
                  &quot;horizontalRule&quot;: { # A ParagraphElement representing a horizontal line. # A horizontal rule paragraph element.
                    &quot;suggestedInsertionIds&quot;: [ # The suggested insertion IDs. A HorizontalRule may have multiple insertion IDs if it is a nested suggested change. If empty, then this is not a suggested insertion.
                      &quot;A String&quot;,
                    ],
                    &quot;suggestedTextStyleChanges&quot;: { # The suggested text style changes to this HorizontalRule, keyed by suggestion ID.
                      &quot;a_key&quot;: { # A suggested change to a TextStyle.
                        &quot;textStyleSuggestionState&quot;: { # A mask that indicates which of the fields on the base TextStyle have been changed in this suggestion. For any field set to true, there is a new suggested value. # A mask that indicates which of the fields on the base TextStyle have been changed in this suggestion.
                          &quot;backgroundColorSuggested&quot;: True or False, # Indicates if there was a suggested change to background_color.
                          &quot;fontSizeSuggested&quot;: True or False, # Indicates if there was a suggested change to font_size.
                          &quot;boldSuggested&quot;: True or False, # Indicates if there was a suggested change to bold.
                          &quot;baselineOffsetSuggested&quot;: True or False, # Indicates if there was a suggested change to baseline_offset.
                          &quot;foregroundColorSuggested&quot;: True or False, # Indicates if there was a suggested change to foreground_color.
                          &quot;italicSuggested&quot;: True or False, # Indicates if there was a suggested change to italic.
                          &quot;linkSuggested&quot;: True or False, # Indicates if there was a suggested change to link.
                          &quot;underlineSuggested&quot;: True or False, # Indicates if there was a suggested change to underline.
                          &quot;weightedFontFamilySuggested&quot;: True or False, # Indicates if there was a suggested change to weighted_font_family.
                          &quot;smallCapsSuggested&quot;: True or False, # Indicates if there was a suggested change to small_caps.
                          &quot;strikethroughSuggested&quot;: True or False, # Indicates if there was a suggested change to strikethrough.
                        },
                        &quot;textStyle&quot;: { # Represents the styling that can be applied to text. Inherited text styles are represented as unset fields in this message. A text style&#x27;s parent depends on where the text style is defined: * The TextStyle of text in a Paragraph inherits from the paragraph&#x27;s corresponding named style type. * The TextStyle on a named style inherits from the normal text named style. * The TextStyle of the normal text named style inherits from the default text style in the Docs editor. * The TextStyle on a Paragraph element that is contained in a table may inherit its text style from the table style. If the text style does not inherit from a parent, unsetting fields will revert the style to a value matching the defaults in the Docs editor. # A TextStyle that only includes the changes made in this suggestion. This can be used along with the text_style_suggestion_state to see which fields have changed and their new values.
                          &quot;italic&quot;: True or False, # Whether or not the text is italicized.
                          &quot;baselineOffset&quot;: &quot;A String&quot;, # The text&#x27;s vertical offset from its normal position. Text with `SUPERSCRIPT` or `SUBSCRIPT` baseline offsets is automatically rendered in a smaller font size, computed based on the `font_size` field. The `font_size` itself is not affected by changes in this field.
                          &quot;bold&quot;: True or False, # Whether or not the text is rendered as bold.
                          &quot;fontSize&quot;: { # A magnitude in a single direction in the specified units. # The size of the text&#x27;s font.
                            &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                            &quot;magnitude&quot;: 3.14, # The magnitude.
                          },
                          &quot;foregroundColor&quot;: { # A color that can either be fully opaque or fully transparent. # The foreground color of the text. If set, the color is either an RGB color or transparent, depending on the `color` field.
                            &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                              &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                                &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                                &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                                &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                              },
                            },
                          },
                          &quot;backgroundColor&quot;: { # A color that can either be fully opaque or fully transparent. # The background color of the text. If set, the color is either an RGB color or transparent, depending on the `color` field.
                            &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                              &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                                &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                                &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                                &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                              },
                            },
                          },
                          &quot;link&quot;: { # A reference to another portion of a document or an external URL resource. # The hyperlink destination of the text. If unset, there is no link. Links are not inherited from parent text. Changing the link in an update request causes some other changes to the text style of the range: * When setting a link, the text foreground color will be updated to the default link color and the text will be underlined. If these fields are modified in the same request, those values will be used instead of the link defaults. * Setting a link on a text range that overlaps with an existing link will also update the existing link to point to the new URL. * Links are not settable on newline characters. As a result, setting a link on a text range that crosses a paragraph boundary, such as `&quot;ABC\n123&quot;`, will separate the newline character(s) into their own text runs. The link will be applied separately to the runs before and after the newline. * Removing a link will update the text style of the range to match the style of the preceding text (or the default text styles if the preceding text is another link) unless different styles are being set in the same request.
                            &quot;bookmarkId&quot;: &quot;A String&quot;, # The ID of a bookmark in this document.
                            &quot;url&quot;: &quot;A String&quot;, # An external URL.
                            &quot;headingId&quot;: &quot;A String&quot;, # The ID of a heading in this document.
                          },
                          &quot;strikethrough&quot;: True or False, # Whether or not the text is struck through.
                          &quot;weightedFontFamily&quot;: { # Represents a font family and weight of text. # The font family and rendered weight of the text. If an update request specifies values for both `weighted_font_family` and `bold`, the `weighted_font_family` is applied first, then `bold`. If `weighted_font_family#weight` is not set, it defaults to `400`. If `weighted_font_family` is set, then `weighted_font_family#font_family` must also be set with a non-empty value. Otherwise, a 400 bad request error is returned.
                            &quot;fontFamily&quot;: &quot;A String&quot;, # The font family of the text. The font family can be any font from the Font menu in Docs or from [Google Fonts] (https://fonts.google.com/). If the font name is unrecognized, the text is rendered in `Arial`.
                            &quot;weight&quot;: 42, # The weight of the font. This field can have any value that is a multiple of `100` between `100` and `900`, inclusive. This range corresponds to the numerical values described in the CSS 2.1 Specification, [section 15.6](https://www.w3.org/TR/CSS21/fonts.html#font-boldness), with non-numerical values disallowed. The default value is `400` (&quot;normal&quot;). The font weight makes up just one component of the rendered font weight. The rendered weight is determined by a combination of the `weight` and the text style&#x27;s resolved `bold` value, after accounting for inheritance: * If the text is bold and the weight is less than `400`, the rendered weight is 400. * If the text is bold and the weight is greater than or equal to `400` but is less than `700`, the rendered weight is `700`. * If the weight is greater than or equal to `700`, the rendered weight is equal to the weight. * If the text is not bold, the rendered weight is equal to the weight.
                          },
                          &quot;underline&quot;: True or False, # Whether or not the text is underlined.
                          &quot;smallCaps&quot;: True or False, # Whether or not the text is in small capital letters.
                        },
                      },
                    },
                    &quot;suggestedDeletionIds&quot;: [ # The suggested deletion IDs. If empty, then there are no suggested deletions of this content.
                      &quot;A String&quot;,
                    ],
                    &quot;textStyle&quot;: { # Represents the styling that can be applied to text. Inherited text styles are represented as unset fields in this message. A text style&#x27;s parent depends on where the text style is defined: * The TextStyle of text in a Paragraph inherits from the paragraph&#x27;s corresponding named style type. * The TextStyle on a named style inherits from the normal text named style. * The TextStyle of the normal text named style inherits from the default text style in the Docs editor. * The TextStyle on a Paragraph element that is contained in a table may inherit its text style from the table style. If the text style does not inherit from a parent, unsetting fields will revert the style to a value matching the defaults in the Docs editor. # The text style of this HorizontalRule. Similar to text content, like text runs and footnote references, the text style of a horizontal rule can affect content layout as well as the styling of text inserted adjacent to it.
                      &quot;italic&quot;: True or False, # Whether or not the text is italicized.
                      &quot;baselineOffset&quot;: &quot;A String&quot;, # The text&#x27;s vertical offset from its normal position. Text with `SUPERSCRIPT` or `SUBSCRIPT` baseline offsets is automatically rendered in a smaller font size, computed based on the `font_size` field. The `font_size` itself is not affected by changes in this field.
                      &quot;bold&quot;: True or False, # Whether or not the text is rendered as bold.
                      &quot;fontSize&quot;: { # A magnitude in a single direction in the specified units. # The size of the text&#x27;s font.
                        &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                        &quot;magnitude&quot;: 3.14, # The magnitude.
                      },
                      &quot;foregroundColor&quot;: { # A color that can either be fully opaque or fully transparent. # The foreground color of the text. If set, the color is either an RGB color or transparent, depending on the `color` field.
                        &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                          &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                            &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                            &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                            &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                          },
                        },
                      },
                      &quot;backgroundColor&quot;: { # A color that can either be fully opaque or fully transparent. # The background color of the text. If set, the color is either an RGB color or transparent, depending on the `color` field.
                        &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                          &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                            &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                            &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                            &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                          },
                        },
                      },
                      &quot;link&quot;: { # A reference to another portion of a document or an external URL resource. # The hyperlink destination of the text. If unset, there is no link. Links are not inherited from parent text. Changing the link in an update request causes some other changes to the text style of the range: * When setting a link, the text foreground color will be updated to the default link color and the text will be underlined. If these fields are modified in the same request, those values will be used instead of the link defaults. * Setting a link on a text range that overlaps with an existing link will also update the existing link to point to the new URL. * Links are not settable on newline characters. As a result, setting a link on a text range that crosses a paragraph boundary, such as `&quot;ABC\n123&quot;`, will separate the newline character(s) into their own text runs. The link will be applied separately to the runs before and after the newline. * Removing a link will update the text style of the range to match the style of the preceding text (or the default text styles if the preceding text is another link) unless different styles are being set in the same request.
                        &quot;bookmarkId&quot;: &quot;A String&quot;, # The ID of a bookmark in this document.
                        &quot;url&quot;: &quot;A String&quot;, # An external URL.
                        &quot;headingId&quot;: &quot;A String&quot;, # The ID of a heading in this document.
                      },
                      &quot;strikethrough&quot;: True or False, # Whether or not the text is struck through.
                      &quot;weightedFontFamily&quot;: { # Represents a font family and weight of text. # The font family and rendered weight of the text. If an update request specifies values for both `weighted_font_family` and `bold`, the `weighted_font_family` is applied first, then `bold`. If `weighted_font_family#weight` is not set, it defaults to `400`. If `weighted_font_family` is set, then `weighted_font_family#font_family` must also be set with a non-empty value. Otherwise, a 400 bad request error is returned.
                        &quot;fontFamily&quot;: &quot;A String&quot;, # The font family of the text. The font family can be any font from the Font menu in Docs or from [Google Fonts] (https://fonts.google.com/). If the font name is unrecognized, the text is rendered in `Arial`.
                        &quot;weight&quot;: 42, # The weight of the font. This field can have any value that is a multiple of `100` between `100` and `900`, inclusive. This range corresponds to the numerical values described in the CSS 2.1 Specification, [section 15.6](https://www.w3.org/TR/CSS21/fonts.html#font-boldness), with non-numerical values disallowed. The default value is `400` (&quot;normal&quot;). The font weight makes up just one component of the rendered font weight. The rendered weight is determined by a combination of the `weight` and the text style&#x27;s resolved `bold` value, after accounting for inheritance: * If the text is bold and the weight is less than `400`, the rendered weight is 400. * If the text is bold and the weight is greater than or equal to `400` but is less than `700`, the rendered weight is `700`. * If the weight is greater than or equal to `700`, the rendered weight is equal to the weight. * If the text is not bold, the rendered weight is equal to the weight.
                      },
                      &quot;underline&quot;: True or False, # Whether or not the text is underlined.
                      &quot;smallCaps&quot;: True or False, # Whether or not the text is in small capital letters.
                    },
                  },
                  &quot;autoText&quot;: { # A ParagraphElement representing a spot in the text that is dynamically replaced with content that can change over time, like a page number. # An auto text paragraph element.
                    &quot;suggestedDeletionIds&quot;: [ # The suggested deletion IDs. If empty, then there are no suggested deletions of this content.
                      &quot;A String&quot;,
                    ],
                    &quot;suggestedInsertionIds&quot;: [ # The suggested insertion IDs. An AutoText may have multiple insertion IDs if it is a nested suggested change. If empty, then this is not a suggested insertion.
                      &quot;A String&quot;,
                    ],
                    &quot;suggestedTextStyleChanges&quot;: { # The suggested text style changes to this AutoText, keyed by suggestion ID.
                      &quot;a_key&quot;: { # A suggested change to a TextStyle.
                        &quot;textStyleSuggestionState&quot;: { # A mask that indicates which of the fields on the base TextStyle have been changed in this suggestion. For any field set to true, there is a new suggested value. # A mask that indicates which of the fields on the base TextStyle have been changed in this suggestion.
                          &quot;backgroundColorSuggested&quot;: True or False, # Indicates if there was a suggested change to background_color.
                          &quot;fontSizeSuggested&quot;: True or False, # Indicates if there was a suggested change to font_size.
                          &quot;boldSuggested&quot;: True or False, # Indicates if there was a suggested change to bold.
                          &quot;baselineOffsetSuggested&quot;: True or False, # Indicates if there was a suggested change to baseline_offset.
                          &quot;foregroundColorSuggested&quot;: True or False, # Indicates if there was a suggested change to foreground_color.
                          &quot;italicSuggested&quot;: True or False, # Indicates if there was a suggested change to italic.
                          &quot;linkSuggested&quot;: True or False, # Indicates if there was a suggested change to link.
                          &quot;underlineSuggested&quot;: True or False, # Indicates if there was a suggested change to underline.
                          &quot;weightedFontFamilySuggested&quot;: True or False, # Indicates if there was a suggested change to weighted_font_family.
                          &quot;smallCapsSuggested&quot;: True or False, # Indicates if there was a suggested change to small_caps.
                          &quot;strikethroughSuggested&quot;: True or False, # Indicates if there was a suggested change to strikethrough.
                        },
                        &quot;textStyle&quot;: { # Represents the styling that can be applied to text. Inherited text styles are represented as unset fields in this message. A text style&#x27;s parent depends on where the text style is defined: * The TextStyle of text in a Paragraph inherits from the paragraph&#x27;s corresponding named style type. * The TextStyle on a named style inherits from the normal text named style. * The TextStyle of the normal text named style inherits from the default text style in the Docs editor. * The TextStyle on a Paragraph element that is contained in a table may inherit its text style from the table style. If the text style does not inherit from a parent, unsetting fields will revert the style to a value matching the defaults in the Docs editor. # A TextStyle that only includes the changes made in this suggestion. This can be used along with the text_style_suggestion_state to see which fields have changed and their new values.
                          &quot;italic&quot;: True or False, # Whether or not the text is italicized.
                          &quot;baselineOffset&quot;: &quot;A String&quot;, # The text&#x27;s vertical offset from its normal position. Text with `SUPERSCRIPT` or `SUBSCRIPT` baseline offsets is automatically rendered in a smaller font size, computed based on the `font_size` field. The `font_size` itself is not affected by changes in this field.
                          &quot;bold&quot;: True or False, # Whether or not the text is rendered as bold.
                          &quot;fontSize&quot;: { # A magnitude in a single direction in the specified units. # The size of the text&#x27;s font.
                            &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                            &quot;magnitude&quot;: 3.14, # The magnitude.
                          },
                          &quot;foregroundColor&quot;: { # A color that can either be fully opaque or fully transparent. # The foreground color of the text. If set, the color is either an RGB color or transparent, depending on the `color` field.
                            &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                              &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                                &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                                &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                                &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                              },
                            },
                          },
                          &quot;backgroundColor&quot;: { # A color that can either be fully opaque or fully transparent. # The background color of the text. If set, the color is either an RGB color or transparent, depending on the `color` field.
                            &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                              &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                                &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                                &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                                &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                              },
                            },
                          },
                          &quot;link&quot;: { # A reference to another portion of a document or an external URL resource. # The hyperlink destination of the text. If unset, there is no link. Links are not inherited from parent text. Changing the link in an update request causes some other changes to the text style of the range: * When setting a link, the text foreground color will be updated to the default link color and the text will be underlined. If these fields are modified in the same request, those values will be used instead of the link defaults. * Setting a link on a text range that overlaps with an existing link will also update the existing link to point to the new URL. * Links are not settable on newline characters. As a result, setting a link on a text range that crosses a paragraph boundary, such as `&quot;ABC\n123&quot;`, will separate the newline character(s) into their own text runs. The link will be applied separately to the runs before and after the newline. * Removing a link will update the text style of the range to match the style of the preceding text (or the default text styles if the preceding text is another link) unless different styles are being set in the same request.
                            &quot;bookmarkId&quot;: &quot;A String&quot;, # The ID of a bookmark in this document.
                            &quot;url&quot;: &quot;A String&quot;, # An external URL.
                            &quot;headingId&quot;: &quot;A String&quot;, # The ID of a heading in this document.
                          },
                          &quot;strikethrough&quot;: True or False, # Whether or not the text is struck through.
                          &quot;weightedFontFamily&quot;: { # Represents a font family and weight of text. # The font family and rendered weight of the text. If an update request specifies values for both `weighted_font_family` and `bold`, the `weighted_font_family` is applied first, then `bold`. If `weighted_font_family#weight` is not set, it defaults to `400`. If `weighted_font_family` is set, then `weighted_font_family#font_family` must also be set with a non-empty value. Otherwise, a 400 bad request error is returned.
                            &quot;fontFamily&quot;: &quot;A String&quot;, # The font family of the text. The font family can be any font from the Font menu in Docs or from [Google Fonts] (https://fonts.google.com/). If the font name is unrecognized, the text is rendered in `Arial`.
                            &quot;weight&quot;: 42, # The weight of the font. This field can have any value that is a multiple of `100` between `100` and `900`, inclusive. This range corresponds to the numerical values described in the CSS 2.1 Specification, [section 15.6](https://www.w3.org/TR/CSS21/fonts.html#font-boldness), with non-numerical values disallowed. The default value is `400` (&quot;normal&quot;). The font weight makes up just one component of the rendered font weight. The rendered weight is determined by a combination of the `weight` and the text style&#x27;s resolved `bold` value, after accounting for inheritance: * If the text is bold and the weight is less than `400`, the rendered weight is 400. * If the text is bold and the weight is greater than or equal to `400` but is less than `700`, the rendered weight is `700`. * If the weight is greater than or equal to `700`, the rendered weight is equal to the weight. * If the text is not bold, the rendered weight is equal to the weight.
                          },
                          &quot;underline&quot;: True or False, # Whether or not the text is underlined.
                          &quot;smallCaps&quot;: True or False, # Whether or not the text is in small capital letters.
                        },
                      },
                    },
                    &quot;type&quot;: &quot;A String&quot;, # The type of this auto text.
                    &quot;textStyle&quot;: { # Represents the styling that can be applied to text. Inherited text styles are represented as unset fields in this message. A text style&#x27;s parent depends on where the text style is defined: * The TextStyle of text in a Paragraph inherits from the paragraph&#x27;s corresponding named style type. * The TextStyle on a named style inherits from the normal text named style. * The TextStyle of the normal text named style inherits from the default text style in the Docs editor. * The TextStyle on a Paragraph element that is contained in a table may inherit its text style from the table style. If the text style does not inherit from a parent, unsetting fields will revert the style to a value matching the defaults in the Docs editor. # The text style of this AutoText.
                      &quot;italic&quot;: True or False, # Whether or not the text is italicized.
                      &quot;baselineOffset&quot;: &quot;A String&quot;, # The text&#x27;s vertical offset from its normal position. Text with `SUPERSCRIPT` or `SUBSCRIPT` baseline offsets is automatically rendered in a smaller font size, computed based on the `font_size` field. The `font_size` itself is not affected by changes in this field.
                      &quot;bold&quot;: True or False, # Whether or not the text is rendered as bold.
                      &quot;fontSize&quot;: { # A magnitude in a single direction in the specified units. # The size of the text&#x27;s font.
                        &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                        &quot;magnitude&quot;: 3.14, # The magnitude.
                      },
                      &quot;foregroundColor&quot;: { # A color that can either be fully opaque or fully transparent. # The foreground color of the text. If set, the color is either an RGB color or transparent, depending on the `color` field.
                        &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                          &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                            &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                            &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                            &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                          },
                        },
                      },
                      &quot;backgroundColor&quot;: { # A color that can either be fully opaque or fully transparent. # The background color of the text. If set, the color is either an RGB color or transparent, depending on the `color` field.
                        &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                          &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                            &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                            &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                            &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                          },
                        },
                      },
                      &quot;link&quot;: { # A reference to another portion of a document or an external URL resource. # The hyperlink destination of the text. If unset, there is no link. Links are not inherited from parent text. Changing the link in an update request causes some other changes to the text style of the range: * When setting a link, the text foreground color will be updated to the default link color and the text will be underlined. If these fields are modified in the same request, those values will be used instead of the link defaults. * Setting a link on a text range that overlaps with an existing link will also update the existing link to point to the new URL. * Links are not settable on newline characters. As a result, setting a link on a text range that crosses a paragraph boundary, such as `&quot;ABC\n123&quot;`, will separate the newline character(s) into their own text runs. The link will be applied separately to the runs before and after the newline. * Removing a link will update the text style of the range to match the style of the preceding text (or the default text styles if the preceding text is another link) unless different styles are being set in the same request.
                        &quot;bookmarkId&quot;: &quot;A String&quot;, # The ID of a bookmark in this document.
                        &quot;url&quot;: &quot;A String&quot;, # An external URL.
                        &quot;headingId&quot;: &quot;A String&quot;, # The ID of a heading in this document.
                      },
                      &quot;strikethrough&quot;: True or False, # Whether or not the text is struck through.
                      &quot;weightedFontFamily&quot;: { # Represents a font family and weight of text. # The font family and rendered weight of the text. If an update request specifies values for both `weighted_font_family` and `bold`, the `weighted_font_family` is applied first, then `bold`. If `weighted_font_family#weight` is not set, it defaults to `400`. If `weighted_font_family` is set, then `weighted_font_family#font_family` must also be set with a non-empty value. Otherwise, a 400 bad request error is returned.
                        &quot;fontFamily&quot;: &quot;A String&quot;, # The font family of the text. The font family can be any font from the Font menu in Docs or from [Google Fonts] (https://fonts.google.com/). If the font name is unrecognized, the text is rendered in `Arial`.
                        &quot;weight&quot;: 42, # The weight of the font. This field can have any value that is a multiple of `100` between `100` and `900`, inclusive. This range corresponds to the numerical values described in the CSS 2.1 Specification, [section 15.6](https://www.w3.org/TR/CSS21/fonts.html#font-boldness), with non-numerical values disallowed. The default value is `400` (&quot;normal&quot;). The font weight makes up just one component of the rendered font weight. The rendered weight is determined by a combination of the `weight` and the text style&#x27;s resolved `bold` value, after accounting for inheritance: * If the text is bold and the weight is less than `400`, the rendered weight is 400. * If the text is bold and the weight is greater than or equal to `400` but is less than `700`, the rendered weight is `700`. * If the weight is greater than or equal to `700`, the rendered weight is equal to the weight. * If the text is not bold, the rendered weight is equal to the weight.
                      },
                      &quot;underline&quot;: True or False, # Whether or not the text is underlined.
                      &quot;smallCaps&quot;: True or False, # Whether or not the text is in small capital letters.
                    },
                  },
                  &quot;inlineObjectElement&quot;: { # A ParagraphElement that contains an InlineObject. # An inline object paragraph element.
                    &quot;suggestedDeletionIds&quot;: [ # The suggested deletion IDs. If empty, then there are no suggested deletions of this content.
                      &quot;A String&quot;,
                    ],
                    &quot;suggestedInsertionIds&quot;: [ # The suggested insertion IDs. An InlineObjectElement may have multiple insertion IDs if it is a nested suggested change. If empty, then this is not a suggested insertion.
                      &quot;A String&quot;,
                    ],
                    &quot;suggestedTextStyleChanges&quot;: { # The suggested text style changes to this InlineObject, keyed by suggestion ID.
                      &quot;a_key&quot;: { # A suggested change to a TextStyle.
                        &quot;textStyleSuggestionState&quot;: { # A mask that indicates which of the fields on the base TextStyle have been changed in this suggestion. For any field set to true, there is a new suggested value. # A mask that indicates which of the fields on the base TextStyle have been changed in this suggestion.
                          &quot;backgroundColorSuggested&quot;: True or False, # Indicates if there was a suggested change to background_color.
                          &quot;fontSizeSuggested&quot;: True or False, # Indicates if there was a suggested change to font_size.
                          &quot;boldSuggested&quot;: True or False, # Indicates if there was a suggested change to bold.
                          &quot;baselineOffsetSuggested&quot;: True or False, # Indicates if there was a suggested change to baseline_offset.
                          &quot;foregroundColorSuggested&quot;: True or False, # Indicates if there was a suggested change to foreground_color.
                          &quot;italicSuggested&quot;: True or False, # Indicates if there was a suggested change to italic.
                          &quot;linkSuggested&quot;: True or False, # Indicates if there was a suggested change to link.
                          &quot;underlineSuggested&quot;: True or False, # Indicates if there was a suggested change to underline.
                          &quot;weightedFontFamilySuggested&quot;: True or False, # Indicates if there was a suggested change to weighted_font_family.
                          &quot;smallCapsSuggested&quot;: True or False, # Indicates if there was a suggested change to small_caps.
                          &quot;strikethroughSuggested&quot;: True or False, # Indicates if there was a suggested change to strikethrough.
                        },
                        &quot;textStyle&quot;: { # Represents the styling that can be applied to text. Inherited text styles are represented as unset fields in this message. A text style&#x27;s parent depends on where the text style is defined: * The TextStyle of text in a Paragraph inherits from the paragraph&#x27;s corresponding named style type. * The TextStyle on a named style inherits from the normal text named style. * The TextStyle of the normal text named style inherits from the default text style in the Docs editor. * The TextStyle on a Paragraph element that is contained in a table may inherit its text style from the table style. If the text style does not inherit from a parent, unsetting fields will revert the style to a value matching the defaults in the Docs editor. # A TextStyle that only includes the changes made in this suggestion. This can be used along with the text_style_suggestion_state to see which fields have changed and their new values.
                          &quot;italic&quot;: True or False, # Whether or not the text is italicized.
                          &quot;baselineOffset&quot;: &quot;A String&quot;, # The text&#x27;s vertical offset from its normal position. Text with `SUPERSCRIPT` or `SUBSCRIPT` baseline offsets is automatically rendered in a smaller font size, computed based on the `font_size` field. The `font_size` itself is not affected by changes in this field.
                          &quot;bold&quot;: True or False, # Whether or not the text is rendered as bold.
                          &quot;fontSize&quot;: { # A magnitude in a single direction in the specified units. # The size of the text&#x27;s font.
                            &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                            &quot;magnitude&quot;: 3.14, # The magnitude.
                          },
                          &quot;foregroundColor&quot;: { # A color that can either be fully opaque or fully transparent. # The foreground color of the text. If set, the color is either an RGB color or transparent, depending on the `color` field.
                            &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                              &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                                &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                                &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                                &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                              },
                            },
                          },
                          &quot;backgroundColor&quot;: { # A color that can either be fully opaque or fully transparent. # The background color of the text. If set, the color is either an RGB color or transparent, depending on the `color` field.
                            &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                              &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                                &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                                &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                                &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                              },
                            },
                          },
                          &quot;link&quot;: { # A reference to another portion of a document or an external URL resource. # The hyperlink destination of the text. If unset, there is no link. Links are not inherited from parent text. Changing the link in an update request causes some other changes to the text style of the range: * When setting a link, the text foreground color will be updated to the default link color and the text will be underlined. If these fields are modified in the same request, those values will be used instead of the link defaults. * Setting a link on a text range that overlaps with an existing link will also update the existing link to point to the new URL. * Links are not settable on newline characters. As a result, setting a link on a text range that crosses a paragraph boundary, such as `&quot;ABC\n123&quot;`, will separate the newline character(s) into their own text runs. The link will be applied separately to the runs before and after the newline. * Removing a link will update the text style of the range to match the style of the preceding text (or the default text styles if the preceding text is another link) unless different styles are being set in the same request.
                            &quot;bookmarkId&quot;: &quot;A String&quot;, # The ID of a bookmark in this document.
                            &quot;url&quot;: &quot;A String&quot;, # An external URL.
                            &quot;headingId&quot;: &quot;A String&quot;, # The ID of a heading in this document.
                          },
                          &quot;strikethrough&quot;: True or False, # Whether or not the text is struck through.
                          &quot;weightedFontFamily&quot;: { # Represents a font family and weight of text. # The font family and rendered weight of the text. If an update request specifies values for both `weighted_font_family` and `bold`, the `weighted_font_family` is applied first, then `bold`. If `weighted_font_family#weight` is not set, it defaults to `400`. If `weighted_font_family` is set, then `weighted_font_family#font_family` must also be set with a non-empty value. Otherwise, a 400 bad request error is returned.
                            &quot;fontFamily&quot;: &quot;A String&quot;, # The font family of the text. The font family can be any font from the Font menu in Docs or from [Google Fonts] (https://fonts.google.com/). If the font name is unrecognized, the text is rendered in `Arial`.
                            &quot;weight&quot;: 42, # The weight of the font. This field can have any value that is a multiple of `100` between `100` and `900`, inclusive. This range corresponds to the numerical values described in the CSS 2.1 Specification, [section 15.6](https://www.w3.org/TR/CSS21/fonts.html#font-boldness), with non-numerical values disallowed. The default value is `400` (&quot;normal&quot;). The font weight makes up just one component of the rendered font weight. The rendered weight is determined by a combination of the `weight` and the text style&#x27;s resolved `bold` value, after accounting for inheritance: * If the text is bold and the weight is less than `400`, the rendered weight is 400. * If the text is bold and the weight is greater than or equal to `400` but is less than `700`, the rendered weight is `700`. * If the weight is greater than or equal to `700`, the rendered weight is equal to the weight. * If the text is not bold, the rendered weight is equal to the weight.
                          },
                          &quot;underline&quot;: True or False, # Whether or not the text is underlined.
                          &quot;smallCaps&quot;: True or False, # Whether or not the text is in small capital letters.
                        },
                      },
                    },
                    &quot;inlineObjectId&quot;: &quot;A String&quot;, # The ID of the InlineObject this element contains.
                    &quot;textStyle&quot;: { # Represents the styling that can be applied to text. Inherited text styles are represented as unset fields in this message. A text style&#x27;s parent depends on where the text style is defined: * The TextStyle of text in a Paragraph inherits from the paragraph&#x27;s corresponding named style type. * The TextStyle on a named style inherits from the normal text named style. * The TextStyle of the normal text named style inherits from the default text style in the Docs editor. * The TextStyle on a Paragraph element that is contained in a table may inherit its text style from the table style. If the text style does not inherit from a parent, unsetting fields will revert the style to a value matching the defaults in the Docs editor. # The text style of this InlineObjectElement. Similar to text content, like text runs and footnote references, the text style of an inline object element can affect content layout as well as the styling of text inserted adjacent to it.
                      &quot;italic&quot;: True or False, # Whether or not the text is italicized.
                      &quot;baselineOffset&quot;: &quot;A String&quot;, # The text&#x27;s vertical offset from its normal position. Text with `SUPERSCRIPT` or `SUBSCRIPT` baseline offsets is automatically rendered in a smaller font size, computed based on the `font_size` field. The `font_size` itself is not affected by changes in this field.
                      &quot;bold&quot;: True or False, # Whether or not the text is rendered as bold.
                      &quot;fontSize&quot;: { # A magnitude in a single direction in the specified units. # The size of the text&#x27;s font.
                        &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                        &quot;magnitude&quot;: 3.14, # The magnitude.
                      },
                      &quot;foregroundColor&quot;: { # A color that can either be fully opaque or fully transparent. # The foreground color of the text. If set, the color is either an RGB color or transparent, depending on the `color` field.
                        &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                          &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                            &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                            &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                            &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                          },
                        },
                      },
                      &quot;backgroundColor&quot;: { # A color that can either be fully opaque or fully transparent. # The background color of the text. If set, the color is either an RGB color or transparent, depending on the `color` field.
                        &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                          &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                            &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                            &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                            &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                          },
                        },
                      },
                      &quot;link&quot;: { # A reference to another portion of a document or an external URL resource. # The hyperlink destination of the text. If unset, there is no link. Links are not inherited from parent text. Changing the link in an update request causes some other changes to the text style of the range: * When setting a link, the text foreground color will be updated to the default link color and the text will be underlined. If these fields are modified in the same request, those values will be used instead of the link defaults. * Setting a link on a text range that overlaps with an existing link will also update the existing link to point to the new URL. * Links are not settable on newline characters. As a result, setting a link on a text range that crosses a paragraph boundary, such as `&quot;ABC\n123&quot;`, will separate the newline character(s) into their own text runs. The link will be applied separately to the runs before and after the newline. * Removing a link will update the text style of the range to match the style of the preceding text (or the default text styles if the preceding text is another link) unless different styles are being set in the same request.
                        &quot;bookmarkId&quot;: &quot;A String&quot;, # The ID of a bookmark in this document.
                        &quot;url&quot;: &quot;A String&quot;, # An external URL.
                        &quot;headingId&quot;: &quot;A String&quot;, # The ID of a heading in this document.
                      },
                      &quot;strikethrough&quot;: True or False, # Whether or not the text is struck through.
                      &quot;weightedFontFamily&quot;: { # Represents a font family and weight of text. # The font family and rendered weight of the text. If an update request specifies values for both `weighted_font_family` and `bold`, the `weighted_font_family` is applied first, then `bold`. If `weighted_font_family#weight` is not set, it defaults to `400`. If `weighted_font_family` is set, then `weighted_font_family#font_family` must also be set with a non-empty value. Otherwise, a 400 bad request error is returned.
                        &quot;fontFamily&quot;: &quot;A String&quot;, # The font family of the text. The font family can be any font from the Font menu in Docs or from [Google Fonts] (https://fonts.google.com/). If the font name is unrecognized, the text is rendered in `Arial`.
                        &quot;weight&quot;: 42, # The weight of the font. This field can have any value that is a multiple of `100` between `100` and `900`, inclusive. This range corresponds to the numerical values described in the CSS 2.1 Specification, [section 15.6](https://www.w3.org/TR/CSS21/fonts.html#font-boldness), with non-numerical values disallowed. The default value is `400` (&quot;normal&quot;). The font weight makes up just one component of the rendered font weight. The rendered weight is determined by a combination of the `weight` and the text style&#x27;s resolved `bold` value, after accounting for inheritance: * If the text is bold and the weight is less than `400`, the rendered weight is 400. * If the text is bold and the weight is greater than or equal to `400` but is less than `700`, the rendered weight is `700`. * If the weight is greater than or equal to `700`, the rendered weight is equal to the weight. * If the text is not bold, the rendered weight is equal to the weight.
                      },
                      &quot;underline&quot;: True or False, # Whether or not the text is underlined.
                      &quot;smallCaps&quot;: True or False, # Whether or not the text is in small capital letters.
                    },
                  },
                  &quot;footnoteReference&quot;: { # A ParagraphElement representing a footnote reference. A footnote reference is the inline content rendered with a number and is used to identify the footnote. # A footnote reference paragraph element.
                    &quot;footnoteId&quot;: &quot;A String&quot;, # The ID of the footnote that contains the content of this footnote reference.
                    &quot;suggestedInsertionIds&quot;: [ # The suggested insertion IDs. A FootnoteReference may have multiple insertion IDs if it is a nested suggested change. If empty, then this is not a suggested insertion.
                      &quot;A String&quot;,
                    ],
                    &quot;footnoteNumber&quot;: &quot;A String&quot;, # The rendered number of this footnote.
                    &quot;suggestedDeletionIds&quot;: [ # The suggested deletion IDs. If empty, then there are no suggested deletions of this content.
                      &quot;A String&quot;,
                    ],
                    &quot;suggestedTextStyleChanges&quot;: { # The suggested text style changes to this FootnoteReference, keyed by suggestion ID.
                      &quot;a_key&quot;: { # A suggested change to a TextStyle.
                        &quot;textStyleSuggestionState&quot;: { # A mask that indicates which of the fields on the base TextStyle have been changed in this suggestion. For any field set to true, there is a new suggested value. # A mask that indicates which of the fields on the base TextStyle have been changed in this suggestion.
                          &quot;backgroundColorSuggested&quot;: True or False, # Indicates if there was a suggested change to background_color.
                          &quot;fontSizeSuggested&quot;: True or False, # Indicates if there was a suggested change to font_size.
                          &quot;boldSuggested&quot;: True or False, # Indicates if there was a suggested change to bold.
                          &quot;baselineOffsetSuggested&quot;: True or False, # Indicates if there was a suggested change to baseline_offset.
                          &quot;foregroundColorSuggested&quot;: True or False, # Indicates if there was a suggested change to foreground_color.
                          &quot;italicSuggested&quot;: True or False, # Indicates if there was a suggested change to italic.
                          &quot;linkSuggested&quot;: True or False, # Indicates if there was a suggested change to link.
                          &quot;underlineSuggested&quot;: True or False, # Indicates if there was a suggested change to underline.
                          &quot;weightedFontFamilySuggested&quot;: True or False, # Indicates if there was a suggested change to weighted_font_family.
                          &quot;smallCapsSuggested&quot;: True or False, # Indicates if there was a suggested change to small_caps.
                          &quot;strikethroughSuggested&quot;: True or False, # Indicates if there was a suggested change to strikethrough.
                        },
                        &quot;textStyle&quot;: { # Represents the styling that can be applied to text. Inherited text styles are represented as unset fields in this message. A text style&#x27;s parent depends on where the text style is defined: * The TextStyle of text in a Paragraph inherits from the paragraph&#x27;s corresponding named style type. * The TextStyle on a named style inherits from the normal text named style. * The TextStyle of the normal text named style inherits from the default text style in the Docs editor. * The TextStyle on a Paragraph element that is contained in a table may inherit its text style from the table style. If the text style does not inherit from a parent, unsetting fields will revert the style to a value matching the defaults in the Docs editor. # A TextStyle that only includes the changes made in this suggestion. This can be used along with the text_style_suggestion_state to see which fields have changed and their new values.
                          &quot;italic&quot;: True or False, # Whether or not the text is italicized.
                          &quot;baselineOffset&quot;: &quot;A String&quot;, # The text&#x27;s vertical offset from its normal position. Text with `SUPERSCRIPT` or `SUBSCRIPT` baseline offsets is automatically rendered in a smaller font size, computed based on the `font_size` field. The `font_size` itself is not affected by changes in this field.
                          &quot;bold&quot;: True or False, # Whether or not the text is rendered as bold.
                          &quot;fontSize&quot;: { # A magnitude in a single direction in the specified units. # The size of the text&#x27;s font.
                            &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                            &quot;magnitude&quot;: 3.14, # The magnitude.
                          },
                          &quot;foregroundColor&quot;: { # A color that can either be fully opaque or fully transparent. # The foreground color of the text. If set, the color is either an RGB color or transparent, depending on the `color` field.
                            &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                              &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                                &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                                &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                                &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                              },
                            },
                          },
                          &quot;backgroundColor&quot;: { # A color that can either be fully opaque or fully transparent. # The background color of the text. If set, the color is either an RGB color or transparent, depending on the `color` field.
                            &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                              &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                                &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                                &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                                &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                              },
                            },
                          },
                          &quot;link&quot;: { # A reference to another portion of a document or an external URL resource. # The hyperlink destination of the text. If unset, there is no link. Links are not inherited from parent text. Changing the link in an update request causes some other changes to the text style of the range: * When setting a link, the text foreground color will be updated to the default link color and the text will be underlined. If these fields are modified in the same request, those values will be used instead of the link defaults. * Setting a link on a text range that overlaps with an existing link will also update the existing link to point to the new URL. * Links are not settable on newline characters. As a result, setting a link on a text range that crosses a paragraph boundary, such as `&quot;ABC\n123&quot;`, will separate the newline character(s) into their own text runs. The link will be applied separately to the runs before and after the newline. * Removing a link will update the text style of the range to match the style of the preceding text (or the default text styles if the preceding text is another link) unless different styles are being set in the same request.
                            &quot;bookmarkId&quot;: &quot;A String&quot;, # The ID of a bookmark in this document.
                            &quot;url&quot;: &quot;A String&quot;, # An external URL.
                            &quot;headingId&quot;: &quot;A String&quot;, # The ID of a heading in this document.
                          },
                          &quot;strikethrough&quot;: True or False, # Whether or not the text is struck through.
                          &quot;weightedFontFamily&quot;: { # Represents a font family and weight of text. # The font family and rendered weight of the text. If an update request specifies values for both `weighted_font_family` and `bold`, the `weighted_font_family` is applied first, then `bold`. If `weighted_font_family#weight` is not set, it defaults to `400`. If `weighted_font_family` is set, then `weighted_font_family#font_family` must also be set with a non-empty value. Otherwise, a 400 bad request error is returned.
                            &quot;fontFamily&quot;: &quot;A String&quot;, # The font family of the text. The font family can be any font from the Font menu in Docs or from [Google Fonts] (https://fonts.google.com/). If the font name is unrecognized, the text is rendered in `Arial`.
                            &quot;weight&quot;: 42, # The weight of the font. This field can have any value that is a multiple of `100` between `100` and `900`, inclusive. This range corresponds to the numerical values described in the CSS 2.1 Specification, [section 15.6](https://www.w3.org/TR/CSS21/fonts.html#font-boldness), with non-numerical values disallowed. The default value is `400` (&quot;normal&quot;). The font weight makes up just one component of the rendered font weight. The rendered weight is determined by a combination of the `weight` and the text style&#x27;s resolved `bold` value, after accounting for inheritance: * If the text is bold and the weight is less than `400`, the rendered weight is 400. * If the text is bold and the weight is greater than or equal to `400` but is less than `700`, the rendered weight is `700`. * If the weight is greater than or equal to `700`, the rendered weight is equal to the weight. * If the text is not bold, the rendered weight is equal to the weight.
                          },
                          &quot;underline&quot;: True or False, # Whether or not the text is underlined.
                          &quot;smallCaps&quot;: True or False, # Whether or not the text is in small capital letters.
                        },
                      },
                    },
                    &quot;textStyle&quot;: { # Represents the styling that can be applied to text. Inherited text styles are represented as unset fields in this message. A text style&#x27;s parent depends on where the text style is defined: * The TextStyle of text in a Paragraph inherits from the paragraph&#x27;s corresponding named style type. * The TextStyle on a named style inherits from the normal text named style. * The TextStyle of the normal text named style inherits from the default text style in the Docs editor. * The TextStyle on a Paragraph element that is contained in a table may inherit its text style from the table style. If the text style does not inherit from a parent, unsetting fields will revert the style to a value matching the defaults in the Docs editor. # The text style of this FootnoteReference.
                      &quot;italic&quot;: True or False, # Whether or not the text is italicized.
                      &quot;baselineOffset&quot;: &quot;A String&quot;, # The text&#x27;s vertical offset from its normal position. Text with `SUPERSCRIPT` or `SUBSCRIPT` baseline offsets is automatically rendered in a smaller font size, computed based on the `font_size` field. The `font_size` itself is not affected by changes in this field.
                      &quot;bold&quot;: True or False, # Whether or not the text is rendered as bold.
                      &quot;fontSize&quot;: { # A magnitude in a single direction in the specified units. # The size of the text&#x27;s font.
                        &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                        &quot;magnitude&quot;: 3.14, # The magnitude.
                      },
                      &quot;foregroundColor&quot;: { # A color that can either be fully opaque or fully transparent. # The foreground color of the text. If set, the color is either an RGB color or transparent, depending on the `color` field.
                        &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                          &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                            &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                            &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                            &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                          },
                        },
                      },
                      &quot;backgroundColor&quot;: { # A color that can either be fully opaque or fully transparent. # The background color of the text. If set, the color is either an RGB color or transparent, depending on the `color` field.
                        &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                          &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                            &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                            &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                            &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                          },
                        },
                      },
                      &quot;link&quot;: { # A reference to another portion of a document or an external URL resource. # The hyperlink destination of the text. If unset, there is no link. Links are not inherited from parent text. Changing the link in an update request causes some other changes to the text style of the range: * When setting a link, the text foreground color will be updated to the default link color and the text will be underlined. If these fields are modified in the same request, those values will be used instead of the link defaults. * Setting a link on a text range that overlaps with an existing link will also update the existing link to point to the new URL. * Links are not settable on newline characters. As a result, setting a link on a text range that crosses a paragraph boundary, such as `&quot;ABC\n123&quot;`, will separate the newline character(s) into their own text runs. The link will be applied separately to the runs before and after the newline. * Removing a link will update the text style of the range to match the style of the preceding text (or the default text styles if the preceding text is another link) unless different styles are being set in the same request.
                        &quot;bookmarkId&quot;: &quot;A String&quot;, # The ID of a bookmark in this document.
                        &quot;url&quot;: &quot;A String&quot;, # An external URL.
                        &quot;headingId&quot;: &quot;A String&quot;, # The ID of a heading in this document.
                      },
                      &quot;strikethrough&quot;: True or False, # Whether or not the text is struck through.
                      &quot;weightedFontFamily&quot;: { # Represents a font family and weight of text. # The font family and rendered weight of the text. If an update request specifies values for both `weighted_font_family` and `bold`, the `weighted_font_family` is applied first, then `bold`. If `weighted_font_family#weight` is not set, it defaults to `400`. If `weighted_font_family` is set, then `weighted_font_family#font_family` must also be set with a non-empty value. Otherwise, a 400 bad request error is returned.
                        &quot;fontFamily&quot;: &quot;A String&quot;, # The font family of the text. The font family can be any font from the Font menu in Docs or from [Google Fonts] (https://fonts.google.com/). If the font name is unrecognized, the text is rendered in `Arial`.
                        &quot;weight&quot;: 42, # The weight of the font. This field can have any value that is a multiple of `100` between `100` and `900`, inclusive. This range corresponds to the numerical values described in the CSS 2.1 Specification, [section 15.6](https://www.w3.org/TR/CSS21/fonts.html#font-boldness), with non-numerical values disallowed. The default value is `400` (&quot;normal&quot;). The font weight makes up just one component of the rendered font weight. The rendered weight is determined by a combination of the `weight` and the text style&#x27;s resolved `bold` value, after accounting for inheritance: * If the text is bold and the weight is less than `400`, the rendered weight is 400. * If the text is bold and the weight is greater than or equal to `400` but is less than `700`, the rendered weight is `700`. * If the weight is greater than or equal to `700`, the rendered weight is equal to the weight. * If the text is not bold, the rendered weight is equal to the weight.
                      },
                      &quot;underline&quot;: True or False, # Whether or not the text is underlined.
                      &quot;smallCaps&quot;: True or False, # Whether or not the text is in small capital letters.
                    },
                  },
                  &quot;startIndex&quot;: 42, # The zero-based start index of this paragraph element, in UTF-16 code units.
                  &quot;endIndex&quot;: 42, # The zero-base end index of this paragraph element, exclusive, in UTF-16 code units.
                  &quot;equation&quot;: { # A ParagraphElement representing an equation. # An equation paragraph element.
                    &quot;suggestedDeletionIds&quot;: [ # The suggested deletion IDs. If empty, then there are no suggested deletions of this content.
                      &quot;A String&quot;,
                    ],
                    &quot;suggestedInsertionIds&quot;: [ # The suggested insertion IDs. A Equation may have multiple insertion IDs if it is a nested suggested change. If empty, then this is not a suggested insertion.
                      &quot;A String&quot;,
                    ],
                  },
                  &quot;columnBreak&quot;: { # A ParagraphElement representing a column break. A column break makes the subsequent text start at the top of the next column. # A column break paragraph element.
                    &quot;suggestedTextStyleChanges&quot;: { # The suggested text style changes to this ColumnBreak, keyed by suggestion ID.
                      &quot;a_key&quot;: { # A suggested change to a TextStyle.
                        &quot;textStyleSuggestionState&quot;: { # A mask that indicates which of the fields on the base TextStyle have been changed in this suggestion. For any field set to true, there is a new suggested value. # A mask that indicates which of the fields on the base TextStyle have been changed in this suggestion.
                          &quot;backgroundColorSuggested&quot;: True or False, # Indicates if there was a suggested change to background_color.
                          &quot;fontSizeSuggested&quot;: True or False, # Indicates if there was a suggested change to font_size.
                          &quot;boldSuggested&quot;: True or False, # Indicates if there was a suggested change to bold.
                          &quot;baselineOffsetSuggested&quot;: True or False, # Indicates if there was a suggested change to baseline_offset.
                          &quot;foregroundColorSuggested&quot;: True or False, # Indicates if there was a suggested change to foreground_color.
                          &quot;italicSuggested&quot;: True or False, # Indicates if there was a suggested change to italic.
                          &quot;linkSuggested&quot;: True or False, # Indicates if there was a suggested change to link.
                          &quot;underlineSuggested&quot;: True or False, # Indicates if there was a suggested change to underline.
                          &quot;weightedFontFamilySuggested&quot;: True or False, # Indicates if there was a suggested change to weighted_font_family.
                          &quot;smallCapsSuggested&quot;: True or False, # Indicates if there was a suggested change to small_caps.
                          &quot;strikethroughSuggested&quot;: True or False, # Indicates if there was a suggested change to strikethrough.
                        },
                        &quot;textStyle&quot;: { # Represents the styling that can be applied to text. Inherited text styles are represented as unset fields in this message. A text style&#x27;s parent depends on where the text style is defined: * The TextStyle of text in a Paragraph inherits from the paragraph&#x27;s corresponding named style type. * The TextStyle on a named style inherits from the normal text named style. * The TextStyle of the normal text named style inherits from the default text style in the Docs editor. * The TextStyle on a Paragraph element that is contained in a table may inherit its text style from the table style. If the text style does not inherit from a parent, unsetting fields will revert the style to a value matching the defaults in the Docs editor. # A TextStyle that only includes the changes made in this suggestion. This can be used along with the text_style_suggestion_state to see which fields have changed and their new values.
                          &quot;italic&quot;: True or False, # Whether or not the text is italicized.
                          &quot;baselineOffset&quot;: &quot;A String&quot;, # The text&#x27;s vertical offset from its normal position. Text with `SUPERSCRIPT` or `SUBSCRIPT` baseline offsets is automatically rendered in a smaller font size, computed based on the `font_size` field. The `font_size` itself is not affected by changes in this field.
                          &quot;bold&quot;: True or False, # Whether or not the text is rendered as bold.
                          &quot;fontSize&quot;: { # A magnitude in a single direction in the specified units. # The size of the text&#x27;s font.
                            &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                            &quot;magnitude&quot;: 3.14, # The magnitude.
                          },
                          &quot;foregroundColor&quot;: { # A color that can either be fully opaque or fully transparent. # The foreground color of the text. If set, the color is either an RGB color or transparent, depending on the `color` field.
                            &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                              &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                                &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                                &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                                &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                              },
                            },
                          },
                          &quot;backgroundColor&quot;: { # A color that can either be fully opaque or fully transparent. # The background color of the text. If set, the color is either an RGB color or transparent, depending on the `color` field.
                            &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                              &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                                &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                                &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                                &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                              },
                            },
                          },
                          &quot;link&quot;: { # A reference to another portion of a document or an external URL resource. # The hyperlink destination of the text. If unset, there is no link. Links are not inherited from parent text. Changing the link in an update request causes some other changes to the text style of the range: * When setting a link, the text foreground color will be updated to the default link color and the text will be underlined. If these fields are modified in the same request, those values will be used instead of the link defaults. * Setting a link on a text range that overlaps with an existing link will also update the existing link to point to the new URL. * Links are not settable on newline characters. As a result, setting a link on a text range that crosses a paragraph boundary, such as `&quot;ABC\n123&quot;`, will separate the newline character(s) into their own text runs. The link will be applied separately to the runs before and after the newline. * Removing a link will update the text style of the range to match the style of the preceding text (or the default text styles if the preceding text is another link) unless different styles are being set in the same request.
                            &quot;bookmarkId&quot;: &quot;A String&quot;, # The ID of a bookmark in this document.
                            &quot;url&quot;: &quot;A String&quot;, # An external URL.
                            &quot;headingId&quot;: &quot;A String&quot;, # The ID of a heading in this document.
                          },
                          &quot;strikethrough&quot;: True or False, # Whether or not the text is struck through.
                          &quot;weightedFontFamily&quot;: { # Represents a font family and weight of text. # The font family and rendered weight of the text. If an update request specifies values for both `weighted_font_family` and `bold`, the `weighted_font_family` is applied first, then `bold`. If `weighted_font_family#weight` is not set, it defaults to `400`. If `weighted_font_family` is set, then `weighted_font_family#font_family` must also be set with a non-empty value. Otherwise, a 400 bad request error is returned.
                            &quot;fontFamily&quot;: &quot;A String&quot;, # The font family of the text. The font family can be any font from the Font menu in Docs or from [Google Fonts] (https://fonts.google.com/). If the font name is unrecognized, the text is rendered in `Arial`.
                            &quot;weight&quot;: 42, # The weight of the font. This field can have any value that is a multiple of `100` between `100` and `900`, inclusive. This range corresponds to the numerical values described in the CSS 2.1 Specification, [section 15.6](https://www.w3.org/TR/CSS21/fonts.html#font-boldness), with non-numerical values disallowed. The default value is `400` (&quot;normal&quot;). The font weight makes up just one component of the rendered font weight. The rendered weight is determined by a combination of the `weight` and the text style&#x27;s resolved `bold` value, after accounting for inheritance: * If the text is bold and the weight is less than `400`, the rendered weight is 400. * If the text is bold and the weight is greater than or equal to `400` but is less than `700`, the rendered weight is `700`. * If the weight is greater than or equal to `700`, the rendered weight is equal to the weight. * If the text is not bold, the rendered weight is equal to the weight.
                          },
                          &quot;underline&quot;: True or False, # Whether or not the text is underlined.
                          &quot;smallCaps&quot;: True or False, # Whether or not the text is in small capital letters.
                        },
                      },
                    },
                    &quot;suggestedDeletionIds&quot;: [ # The suggested deletion IDs. If empty, then there are no suggested deletions of this content.
                      &quot;A String&quot;,
                    ],
                    &quot;textStyle&quot;: { # Represents the styling that can be applied to text. Inherited text styles are represented as unset fields in this message. A text style&#x27;s parent depends on where the text style is defined: * The TextStyle of text in a Paragraph inherits from the paragraph&#x27;s corresponding named style type. * The TextStyle on a named style inherits from the normal text named style. * The TextStyle of the normal text named style inherits from the default text style in the Docs editor. * The TextStyle on a Paragraph element that is contained in a table may inherit its text style from the table style. If the text style does not inherit from a parent, unsetting fields will revert the style to a value matching the defaults in the Docs editor. # The text style of this ColumnBreak. Similar to text content, like text runs and footnote references, the text style of a column break can affect content layout as well as the styling of text inserted adjacent to it.
                      &quot;italic&quot;: True or False, # Whether or not the text is italicized.
                      &quot;baselineOffset&quot;: &quot;A String&quot;, # The text&#x27;s vertical offset from its normal position. Text with `SUPERSCRIPT` or `SUBSCRIPT` baseline offsets is automatically rendered in a smaller font size, computed based on the `font_size` field. The `font_size` itself is not affected by changes in this field.
                      &quot;bold&quot;: True or False, # Whether or not the text is rendered as bold.
                      &quot;fontSize&quot;: { # A magnitude in a single direction in the specified units. # The size of the text&#x27;s font.
                        &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                        &quot;magnitude&quot;: 3.14, # The magnitude.
                      },
                      &quot;foregroundColor&quot;: { # A color that can either be fully opaque or fully transparent. # The foreground color of the text. If set, the color is either an RGB color or transparent, depending on the `color` field.
                        &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                          &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                            &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                            &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                            &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                          },
                        },
                      },
                      &quot;backgroundColor&quot;: { # A color that can either be fully opaque or fully transparent. # The background color of the text. If set, the color is either an RGB color or transparent, depending on the `color` field.
                        &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                          &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                            &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                            &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                            &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                          },
                        },
                      },
                      &quot;link&quot;: { # A reference to another portion of a document or an external URL resource. # The hyperlink destination of the text. If unset, there is no link. Links are not inherited from parent text. Changing the link in an update request causes some other changes to the text style of the range: * When setting a link, the text foreground color will be updated to the default link color and the text will be underlined. If these fields are modified in the same request, those values will be used instead of the link defaults. * Setting a link on a text range that overlaps with an existing link will also update the existing link to point to the new URL. * Links are not settable on newline characters. As a result, setting a link on a text range that crosses a paragraph boundary, such as `&quot;ABC\n123&quot;`, will separate the newline character(s) into their own text runs. The link will be applied separately to the runs before and after the newline. * Removing a link will update the text style of the range to match the style of the preceding text (or the default text styles if the preceding text is another link) unless different styles are being set in the same request.
                        &quot;bookmarkId&quot;: &quot;A String&quot;, # The ID of a bookmark in this document.
                        &quot;url&quot;: &quot;A String&quot;, # An external URL.
                        &quot;headingId&quot;: &quot;A String&quot;, # The ID of a heading in this document.
                      },
                      &quot;strikethrough&quot;: True or False, # Whether or not the text is struck through.
                      &quot;weightedFontFamily&quot;: { # Represents a font family and weight of text. # The font family and rendered weight of the text. If an update request specifies values for both `weighted_font_family` and `bold`, the `weighted_font_family` is applied first, then `bold`. If `weighted_font_family#weight` is not set, it defaults to `400`. If `weighted_font_family` is set, then `weighted_font_family#font_family` must also be set with a non-empty value. Otherwise, a 400 bad request error is returned.
                        &quot;fontFamily&quot;: &quot;A String&quot;, # The font family of the text. The font family can be any font from the Font menu in Docs or from [Google Fonts] (https://fonts.google.com/). If the font name is unrecognized, the text is rendered in `Arial`.
                        &quot;weight&quot;: 42, # The weight of the font. This field can have any value that is a multiple of `100` between `100` and `900`, inclusive. This range corresponds to the numerical values described in the CSS 2.1 Specification, [section 15.6](https://www.w3.org/TR/CSS21/fonts.html#font-boldness), with non-numerical values disallowed. The default value is `400` (&quot;normal&quot;). The font weight makes up just one component of the rendered font weight. The rendered weight is determined by a combination of the `weight` and the text style&#x27;s resolved `bold` value, after accounting for inheritance: * If the text is bold and the weight is less than `400`, the rendered weight is 400. * If the text is bold and the weight is greater than or equal to `400` but is less than `700`, the rendered weight is `700`. * If the weight is greater than or equal to `700`, the rendered weight is equal to the weight. * If the text is not bold, the rendered weight is equal to the weight.
                      },
                      &quot;underline&quot;: True or False, # Whether or not the text is underlined.
                      &quot;smallCaps&quot;: True or False, # Whether or not the text is in small capital letters.
                    },
                    &quot;suggestedInsertionIds&quot;: [ # The suggested insertion IDs. A ColumnBreak may have multiple insertion IDs if it is a nested suggested change. If empty, then this is not a suggested insertion.
                      &quot;A String&quot;,
                    ],
                  },
                },
              ],
              &quot;positionedObjectIds&quot;: [ # The IDs of the positioned objects tethered to this paragraph.
                &quot;A String&quot;,
              ],
              &quot;paragraphStyle&quot;: { # Styles that apply to a whole paragraph. Inherited paragraph styles are represented as unset fields in this message. A paragraph style&#x27;s parent depends on where the paragraph style is defined: * The ParagraphStyle on a Paragraph inherits from the paragraph&#x27;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 is 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. # The style of this paragraph.
                &quot;borderRight&quot;: { # A border around a paragraph. # The border to the right of this paragraph. If unset, the value is inherited from the parent. Paragraph borders cannot be partially updated. When making changes to a paragraph border the new border must be specified in its entirety.
                  &quot;color&quot;: { # A color that can either be fully opaque or fully transparent. # The color of the border.
                    &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                      &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                        &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                        &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                        &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                      },
                    },
                  },
                  &quot;width&quot;: { # A magnitude in a single direction in the specified units. # The width of the border.
                    &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                    &quot;magnitude&quot;: 3.14, # The magnitude.
                  },
                  &quot;padding&quot;: { # A magnitude in a single direction in the specified units. # The padding of the border.
                    &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                    &quot;magnitude&quot;: 3.14, # The magnitude.
                  },
                  &quot;dashStyle&quot;: &quot;A String&quot;, # The dash style of the border.
                },
                &quot;indentFirstLine&quot;: { # A magnitude in a single direction in the specified units. # The amount of indentation for the first line of the paragraph. If unset, the value is inherited from the parent.
                  &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                  &quot;magnitude&quot;: 3.14, # The magnitude.
                },
                &quot;alignment&quot;: &quot;A String&quot;, # The text alignment for this paragraph.
                &quot;lineSpacing&quot;: 3.14, # The amount of space between lines, as a percentage of normal, where normal is represented as 100.0. If unset, the value is inherited from the parent.
                &quot;keepLinesTogether&quot;: True or False, # Whether all lines of the paragraph should be laid out on the same page or column if possible. If unset, the value is inherited from the parent.
                &quot;avoidWidowAndOrphan&quot;: True or False, # Whether to avoid widows and orphans for the paragraph. If unset, the value is inherited from the parent.
                &quot;spaceBelow&quot;: { # A magnitude in a single direction in the specified units. # The amount of extra space below the paragraph. If unset, the value is inherited from the parent.
                  &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                  &quot;magnitude&quot;: 3.14, # The magnitude.
                },
                &quot;borderBetween&quot;: { # A border around a paragraph. # 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 making changes to a paragraph border the new border must be specified in its entirety.
                  &quot;color&quot;: { # A color that can either be fully opaque or fully transparent. # The color of the border.
                    &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                      &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                        &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                        &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                        &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                      },
                    },
                  },
                  &quot;width&quot;: { # A magnitude in a single direction in the specified units. # The width of the border.
                    &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                    &quot;magnitude&quot;: 3.14, # The magnitude.
                  },
                  &quot;padding&quot;: { # A magnitude in a single direction in the specified units. # The padding of the border.
                    &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                    &quot;magnitude&quot;: 3.14, # The magnitude.
                  },
                  &quot;dashStyle&quot;: &quot;A String&quot;, # The dash style of the border.
                },
                &quot;headingId&quot;: &quot;A String&quot;, # The heading ID of the paragraph. If empty, then this paragraph is not a heading. This property is read-only.
                &quot;spaceAbove&quot;: { # A magnitude in a single direction in the specified units. # The amount of extra space above the paragraph. If unset, the value is inherited from the parent.
                  &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                  &quot;magnitude&quot;: 3.14, # The magnitude.
                },
                &quot;direction&quot;: &quot;A String&quot;, # The text direction of this paragraph. If unset, the value defaults to LEFT_TO_RIGHT since paragraph direction is not inherited.
                &quot;namedStyleType&quot;: &quot;A String&quot;, # The named style type of the paragraph. Since updating the named style type affects other properties within ParagraphStyle, the named style type is applied before the other properties are updated.
                &quot;tabStops&quot;: [ # A list of the tab stops for this paragraph. The list of tab stops is not inherited. This property is read-only.
                  { # A tab stop within a paragraph.
                    &quot;offset&quot;: { # A magnitude in a single direction in the specified units. # The offset between this tab stop and the start margin.
                      &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                      &quot;magnitude&quot;: 3.14, # The magnitude.
                    },
                    &quot;alignment&quot;: &quot;A String&quot;, # The alignment of this tab stop. If unset, the value defaults to START.
                  },
                ],
                &quot;indentStart&quot;: { # A magnitude in a single direction in the specified units. # The amount of indentation for the paragraph on the side that corresponds to the start of the text, based on the current paragraph direction. If unset, the value is inherited from the parent.
                  &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                  &quot;magnitude&quot;: 3.14, # The magnitude.
                },
                &quot;keepWithNext&quot;: True or False, # Whether at least a part of this paragraph should be laid out on the same page or column as the next paragraph if possible. If unset, the value is inherited from the parent.
                &quot;borderTop&quot;: { # A border around a paragraph. # 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 making changes to a paragraph border the new border must be specified in its entirety.
                  &quot;color&quot;: { # A color that can either be fully opaque or fully transparent. # The color of the border.
                    &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                      &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                        &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                        &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                        &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                      },
                    },
                  },
                  &quot;width&quot;: { # A magnitude in a single direction in the specified units. # The width of the border.
                    &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                    &quot;magnitude&quot;: 3.14, # The magnitude.
                  },
                  &quot;padding&quot;: { # A magnitude in a single direction in the specified units. # The padding of the border.
                    &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                    &quot;magnitude&quot;: 3.14, # The magnitude.
                  },
                  &quot;dashStyle&quot;: &quot;A String&quot;, # The dash style of the border.
                },
                &quot;borderLeft&quot;: { # A border around a paragraph. # The border to the left of this paragraph. If unset, the value is inherited from the parent. Paragraph borders cannot be partially updated. When making changes to a paragraph border the new border must be specified in its entirety.
                  &quot;color&quot;: { # A color that can either be fully opaque or fully transparent. # The color of the border.
                    &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                      &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                        &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                        &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                        &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                      },
                    },
                  },
                  &quot;width&quot;: { # A magnitude in a single direction in the specified units. # The width of the border.
                    &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                    &quot;magnitude&quot;: 3.14, # The magnitude.
                  },
                  &quot;padding&quot;: { # A magnitude in a single direction in the specified units. # The padding of the border.
                    &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                    &quot;magnitude&quot;: 3.14, # The magnitude.
                  },
                  &quot;dashStyle&quot;: &quot;A String&quot;, # The dash style of the border.
                },
                &quot;borderBottom&quot;: { # A border around a paragraph. # 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 making changes to a paragraph border the new border must be specified in its entirety.
                  &quot;color&quot;: { # A color that can either be fully opaque or fully transparent. # The color of the border.
                    &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                      &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                        &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                        &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                        &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                      },
                    },
                  },
                  &quot;width&quot;: { # A magnitude in a single direction in the specified units. # The width of the border.
                    &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                    &quot;magnitude&quot;: 3.14, # The magnitude.
                  },
                  &quot;padding&quot;: { # A magnitude in a single direction in the specified units. # The padding of the border.
                    &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                    &quot;magnitude&quot;: 3.14, # The magnitude.
                  },
                  &quot;dashStyle&quot;: &quot;A String&quot;, # The dash style of the border.
                },
                &quot;shading&quot;: { # The shading of a paragraph. # The shading of the paragraph. If unset, the value is inherited from the parent.
                  &quot;backgroundColor&quot;: { # A color that can either be fully opaque or fully transparent. # The background color of this paragraph shading.
                    &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                      &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                        &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                        &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                        &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                      },
                    },
                  },
                },
                &quot;indentEnd&quot;: { # A magnitude in a single direction in the specified units. # 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.
                  &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                  &quot;magnitude&quot;: 3.14, # The magnitude.
                },
                &quot;spacingMode&quot;: &quot;A String&quot;, # The spacing mode for the paragraph.
              },
            },
            &quot;startIndex&quot;: 42, # The zero-based start index of this structural element, in UTF-16 code units.
            &quot;endIndex&quot;: 42, # The zero-based end index of this structural element, exclusive, in UTF-16 code units.
            &quot;tableOfContents&quot;: { # A StructuralElement representing a table of contents. # A table of contents type of structural element.
              &quot;suggestedInsertionIds&quot;: [ # The suggested insertion IDs. A TableOfContents may have multiple insertion IDs if it is a nested suggested change. If empty, then this is not a suggested insertion.
                &quot;A String&quot;,
              ],
              &quot;content&quot;: [ # The content of the table of contents.
                # Object with schema name: StructuralElement
              ],
              &quot;suggestedDeletionIds&quot;: [ # The suggested deletion IDs. If empty, then there are no suggested deletions of this content.
                &quot;A String&quot;,
              ],
            },
            &quot;table&quot;: { # A StructuralElement representing a table. # A table type of structural element.
              &quot;tableStyle&quot;: { # Styles that apply to a table. # The style of the table.
                &quot;tableColumnProperties&quot;: [ # The properties of each column. Note that in Docs, tables contain rows and rows contain cells, similar to HTML. So the properties for a row can be found on the row&#x27;s table_row_style.
                  { # The properties of a column in a table.
                    &quot;widthType&quot;: &quot;A String&quot;, # The width type of the column.
                    &quot;width&quot;: { # A magnitude in a single direction in the specified units. # The width of the column. Set when the column&#x27;s `width_type` is FIXED_WIDTH.
                      &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                      &quot;magnitude&quot;: 3.14, # The magnitude.
                    },
                  },
                ],
              },
              &quot;suggestedInsertionIds&quot;: [ # The suggested insertion IDs. A Table may have multiple insertion IDs if it is a nested suggested change. If empty, then this is not a suggested insertion.
                &quot;A String&quot;,
              ],
              &quot;tableRows&quot;: [ # The contents and style of each row.
                { # The contents and style of a row in a Table.
                  &quot;suggestedDeletionIds&quot;: [ # The suggested deletion IDs. If empty, then there are no suggested deletions of this content.
                    &quot;A String&quot;,
                  ],
                  &quot;suggestedInsertionIds&quot;: [ # The suggested insertion IDs. A TableRow may have multiple insertion IDs if it is a nested suggested change. If empty, then this is not a suggested insertion.
                    &quot;A String&quot;,
                  ],
                  &quot;suggestedTableRowStyleChanges&quot;: { # The suggested style changes to this row, keyed by suggestion ID.
                    &quot;a_key&quot;: { # A suggested change to a TableRowStyle.
                      &quot;tableRowStyleSuggestionState&quot;: { # A mask that indicates which of the fields on the base TableRowStyle have been changed in this suggestion. For any field set to true, there is a new suggested value. # A mask that indicates which of the fields on the base TableRowStyle have been changed in this suggestion.
                        &quot;minRowHeightSuggested&quot;: True or False, # Indicates if there was a suggested change to min_row_height.
                      },
                      &quot;tableRowStyle&quot;: { # Styles that apply to a table row. # A TableRowStyle that only includes the changes made in this suggestion. This can be used along with the table_row_style_suggestion_state to see which fields have changed and their new values.
                        &quot;minRowHeight&quot;: { # A magnitude in a single direction in the specified units. # The minimum height of the row. The row will be rendered in the Docs editor at a height equal to or greater than this value in order to show all the content in the row&#x27;s cells.
                          &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                          &quot;magnitude&quot;: 3.14, # The magnitude.
                        },
                      },
                    },
                  },
                  &quot;startIndex&quot;: 42, # The zero-based start index of this row, in UTF-16 code units.
                  &quot;tableCells&quot;: [ # The contents and style of each cell in this row. It is possible for a table to be non-rectangular, so some rows may have a different number of cells than other rows in the same table.
                    { # The contents and style of a cell in a Table.
                      &quot;tableCellStyle&quot;: { # The style of a TableCell. Inherited table cell styles are represented as unset fields in this message. A table cell style can inherit from the table&#x27;s style. # The style of the cell.
                        &quot;borderTop&quot;: { # A border around a table cell. Table cell borders cannot be transparent. To hide a table cell border, make its width 0. # The top border of the cell.
                          &quot;width&quot;: { # A magnitude in a single direction in the specified units. # The width of the border.
                            &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                            &quot;magnitude&quot;: 3.14, # The magnitude.
                          },
                          &quot;dashStyle&quot;: &quot;A String&quot;, # The dash style of the border.
                          &quot;color&quot;: { # A color that can either be fully opaque or fully transparent. # The color of the border. This color cannot be transparent.
                            &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                              &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                                &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                                &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                                &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                              },
                            },
                          },
                        },
                        &quot;borderBottom&quot;: { # A border around a table cell. Table cell borders cannot be transparent. To hide a table cell border, make its width 0. # The bottom border of the cell.
                          &quot;width&quot;: { # A magnitude in a single direction in the specified units. # The width of the border.
                            &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                            &quot;magnitude&quot;: 3.14, # The magnitude.
                          },
                          &quot;dashStyle&quot;: &quot;A String&quot;, # The dash style of the border.
                          &quot;color&quot;: { # A color that can either be fully opaque or fully transparent. # The color of the border. This color cannot be transparent.
                            &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                              &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                                &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                                &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                                &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                              },
                            },
                          },
                        },
                        &quot;contentAlignment&quot;: &quot;A String&quot;, # The alignment of the content in the table cell. The default alignment matches the alignment for newly created table cells in the Docs editor.
                        &quot;paddingLeft&quot;: { # A magnitude in a single direction in the specified units. # The left padding of the cell.
                          &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                          &quot;magnitude&quot;: 3.14, # The magnitude.
                        },
                        &quot;backgroundColor&quot;: { # A color that can either be fully opaque or fully transparent. # The background color of the cell.
                          &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                            &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                              &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                              &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                              &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                            },
                          },
                        },
                        &quot;paddingTop&quot;: { # A magnitude in a single direction in the specified units. # The top padding of the cell.
                          &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                          &quot;magnitude&quot;: 3.14, # The magnitude.
                        },
                        &quot;rowSpan&quot;: 42, # The row span of the cell. This property is read-only.
                        &quot;paddingRight&quot;: { # A magnitude in a single direction in the specified units. # The right padding of the cell.
                          &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                          &quot;magnitude&quot;: 3.14, # The magnitude.
                        },
                        &quot;borderRight&quot;: { # A border around a table cell. Table cell borders cannot be transparent. To hide a table cell border, make its width 0. # The right border of the cell.
                          &quot;width&quot;: { # A magnitude in a single direction in the specified units. # The width of the border.
                            &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                            &quot;magnitude&quot;: 3.14, # The magnitude.
                          },
                          &quot;dashStyle&quot;: &quot;A String&quot;, # The dash style of the border.
                          &quot;color&quot;: { # A color that can either be fully opaque or fully transparent. # The color of the border. This color cannot be transparent.
                            &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                              &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                                &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                                &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                                &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                              },
                            },
                          },
                        },
                        &quot;borderLeft&quot;: { # A border around a table cell. Table cell borders cannot be transparent. To hide a table cell border, make its width 0. # The left border of the cell.
                          &quot;width&quot;: { # A magnitude in a single direction in the specified units. # The width of the border.
                            &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                            &quot;magnitude&quot;: 3.14, # The magnitude.
                          },
                          &quot;dashStyle&quot;: &quot;A String&quot;, # The dash style of the border.
                          &quot;color&quot;: { # A color that can either be fully opaque or fully transparent. # The color of the border. This color cannot be transparent.
                            &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                              &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                                &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                                &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                                &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                              },
                            },
                          },
                        },
                        &quot;columnSpan&quot;: 42, # The column span of the cell. This property is read-only.
                        &quot;paddingBottom&quot;: { # A magnitude in a single direction in the specified units. # The bottom padding of the cell.
                          &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                          &quot;magnitude&quot;: 3.14, # The magnitude.
                        },
                      },
                      &quot;content&quot;: [ # The content of the cell.
                        # Object with schema name: StructuralElement
                      ],
                      &quot;suggestedDeletionIds&quot;: [ # The suggested deletion IDs. If empty, then there are no suggested deletions of this content.
                        &quot;A String&quot;,
                      ],
                      &quot;startIndex&quot;: 42, # The zero-based start index of this cell, in UTF-16 code units.
                      &quot;suggestedInsertionIds&quot;: [ # The suggested insertion IDs. A TableCell may have multiple insertion IDs if it is a nested suggested change. If empty, then this is not a suggested insertion.
                        &quot;A String&quot;,
                      ],
                      &quot;suggestedTableCellStyleChanges&quot;: { # The suggested changes to the table cell style, keyed by suggestion ID.
                        &quot;a_key&quot;: { # A suggested change to a TableCellStyle.
                          &quot;tableCellStyle&quot;: { # The style of a TableCell. Inherited table cell styles are represented as unset fields in this message. A table cell style can inherit from the table&#x27;s style. # A TableCellStyle that only includes the changes made in this suggestion. This can be used along with the table_cell_style_suggestion_state to see which fields have changed and their new values.
                            &quot;borderTop&quot;: { # A border around a table cell. Table cell borders cannot be transparent. To hide a table cell border, make its width 0. # The top border of the cell.
                              &quot;width&quot;: { # A magnitude in a single direction in the specified units. # The width of the border.
                                &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                                &quot;magnitude&quot;: 3.14, # The magnitude.
                              },
                              &quot;dashStyle&quot;: &quot;A String&quot;, # The dash style of the border.
                              &quot;color&quot;: { # A color that can either be fully opaque or fully transparent. # The color of the border. This color cannot be transparent.
                                &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                                  &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                                    &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                                    &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                                    &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                                  },
                                },
                              },
                            },
                            &quot;borderBottom&quot;: { # A border around a table cell. Table cell borders cannot be transparent. To hide a table cell border, make its width 0. # The bottom border of the cell.
                              &quot;width&quot;: { # A magnitude in a single direction in the specified units. # The width of the border.
                                &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                                &quot;magnitude&quot;: 3.14, # The magnitude.
                              },
                              &quot;dashStyle&quot;: &quot;A String&quot;, # The dash style of the border.
                              &quot;color&quot;: { # A color that can either be fully opaque or fully transparent. # The color of the border. This color cannot be transparent.
                                &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                                  &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                                    &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                                    &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                                    &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                                  },
                                },
                              },
                            },
                            &quot;contentAlignment&quot;: &quot;A String&quot;, # The alignment of the content in the table cell. The default alignment matches the alignment for newly created table cells in the Docs editor.
                            &quot;paddingLeft&quot;: { # A magnitude in a single direction in the specified units. # The left padding of the cell.
                              &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                              &quot;magnitude&quot;: 3.14, # The magnitude.
                            },
                            &quot;backgroundColor&quot;: { # A color that can either be fully opaque or fully transparent. # The background color of the cell.
                              &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                                &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                                  &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                                  &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                                  &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                                },
                              },
                            },
                            &quot;paddingTop&quot;: { # A magnitude in a single direction in the specified units. # The top padding of the cell.
                              &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                              &quot;magnitude&quot;: 3.14, # The magnitude.
                            },
                            &quot;rowSpan&quot;: 42, # The row span of the cell. This property is read-only.
                            &quot;paddingRight&quot;: { # A magnitude in a single direction in the specified units. # The right padding of the cell.
                              &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                              &quot;magnitude&quot;: 3.14, # The magnitude.
                            },
                            &quot;borderRight&quot;: { # A border around a table cell. Table cell borders cannot be transparent. To hide a table cell border, make its width 0. # The right border of the cell.
                              &quot;width&quot;: { # A magnitude in a single direction in the specified units. # The width of the border.
                                &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                                &quot;magnitude&quot;: 3.14, # The magnitude.
                              },
                              &quot;dashStyle&quot;: &quot;A String&quot;, # The dash style of the border.
                              &quot;color&quot;: { # A color that can either be fully opaque or fully transparent. # The color of the border. This color cannot be transparent.
                                &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                                  &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                                    &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                                    &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                                    &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                                  },
                                },
                              },
                            },
                            &quot;borderLeft&quot;: { # A border around a table cell. Table cell borders cannot be transparent. To hide a table cell border, make its width 0. # The left border of the cell.
                              &quot;width&quot;: { # A magnitude in a single direction in the specified units. # The width of the border.
                                &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                                &quot;magnitude&quot;: 3.14, # The magnitude.
                              },
                              &quot;dashStyle&quot;: &quot;A String&quot;, # The dash style of the border.
                              &quot;color&quot;: { # A color that can either be fully opaque or fully transparent. # The color of the border. This color cannot be transparent.
                                &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                                  &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                                    &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                                    &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                                    &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                                  },
                                },
                              },
                            },
                            &quot;columnSpan&quot;: 42, # The column span of the cell. This property is read-only.
                            &quot;paddingBottom&quot;: { # A magnitude in a single direction in the specified units. # The bottom padding of the cell.
                              &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                              &quot;magnitude&quot;: 3.14, # The magnitude.
                            },
                          },
                          &quot;tableCellStyleSuggestionState&quot;: { # A mask that indicates which of the fields on the base TableCellStyle have been changed in this suggestion. For any field set to true, there is a new suggested value. # A mask that indicates which of the fields on the base TableCellStyle have been changed in this suggestion.
                            &quot;rowSpanSuggested&quot;: True or False, # Indicates if there was a suggested change to row_span.
                            &quot;columnSpanSuggested&quot;: True or False, # Indicates if there was a suggested change to column_span.
                            &quot;borderBottomSuggested&quot;: True or False, # Indicates if there was a suggested change to border_bottom.
                            &quot;borderLeftSuggested&quot;: True or False, # Indicates if there was a suggested change to border_left.
                            &quot;paddingLeftSuggested&quot;: True or False, # Indicates if there was a suggested change to padding_left.
                            &quot;paddingRightSuggested&quot;: True or False, # Indicates if there was a suggested change to padding_right.
                            &quot;paddingBottomSuggested&quot;: True or False, # Indicates if there was a suggested change to padding_bottom.
                            &quot;paddingTopSuggested&quot;: True or False, # Indicates if there was a suggested change to padding_top.
                            &quot;contentAlignmentSuggested&quot;: True or False, # Indicates if there was a suggested change to content_alignment.
                            &quot;borderRightSuggested&quot;: True or False, # Indicates if there was a suggested change to border_right.
                            &quot;backgroundColorSuggested&quot;: True or False, # Indicates if there was a suggested change to background_color.
                            &quot;borderTopSuggested&quot;: True or False, # Indicates if there was a suggested change to border_top.
                          },
                        },
                      },
                      &quot;endIndex&quot;: 42, # The zero-based end index of this cell, exclusive, in UTF-16 code units.
                    },
                  ],
                  &quot;endIndex&quot;: 42, # The zero-based end index of this row, exclusive, in UTF-16 code units.
                  &quot;tableRowStyle&quot;: { # Styles that apply to a table row. # The style of the table row.
                    &quot;minRowHeight&quot;: { # A magnitude in a single direction in the specified units. # The minimum height of the row. The row will be rendered in the Docs editor at a height equal to or greater than this value in order to show all the content in the row&#x27;s cells.
                      &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                      &quot;magnitude&quot;: 3.14, # The magnitude.
                    },
                  },
                },
              ],
              &quot;suggestedDeletionIds&quot;: [ # The suggested deletion IDs. If empty, then there are no suggested deletions of this content.
                &quot;A String&quot;,
              ],
              &quot;rows&quot;: 42, # Number of rows in the table.
              &quot;columns&quot;: 42, # Number of columns in the table. It is possible for a table to be non-rectangular, so some rows may have a different number of cells.
            },
            &quot;sectionBreak&quot;: { # A StructuralElement representing a section break. A section is a range of content which has the same SectionStyle. A section break represents the start of a new section, and the section style applies to the section after the section break. The document body always begins with a section break. # A section break type of structural element.
              &quot;suggestedInsertionIds&quot;: [ # The suggested insertion IDs. A SectionBreak may have multiple insertion IDs if it is a nested suggested change. If empty, then this is not a suggested insertion.
                &quot;A String&quot;,
              ],
              &quot;sectionStyle&quot;: { # The styling that applies to a section. # The style of the section after this section break.
                &quot;marginLeft&quot;: { # A magnitude in a single direction in the specified units. # The left page margin of the section. If unset, uses margin_left from DocumentStyle. Updating left margin causes columns in this section to resize. Since the margin affects column width, it is applied before column properties. When updating this property, setting a concrete value is required. Unsetting this property results in a 400 bad request error.
                  &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                  &quot;magnitude&quot;: 3.14, # The magnitude.
                },
                &quot;sectionType&quot;: &quot;A String&quot;, # Output only. The type of section.
                &quot;evenPageHeaderId&quot;: &quot;A String&quot;, # The ID of the header used only for even pages. If the value of DocumentStyle&#x27;s use_even_page_header_footer is true, this value is used for the headers on even pages in the section. If it is false, the headers on even pages uses the default_header_id. If unset, the value inherits from the previous SectionBreak&#x27;s SectionStyle. If the value is unset in the first SectionBreak, it inherits from DocumentStyle&#x27;s even_page_header_id. This property is read-only.
                &quot;useFirstPageHeaderFooter&quot;: True or False, # Indicates whether to use the first page header / footer IDs for the first page of the section. If unset, it inherits from DocumentStyle&#x27;s use_first_page_header_footer for the first section. If the value is unset for subsequent sectors, it should be interpreted as false. When updating this property, setting a concrete value is required. Unsetting this property results in a 400 bad request error.
                &quot;marginHeader&quot;: { # A magnitude in a single direction in the specified units. # The header margin of the section. If unset, uses margin_header from DocumentStyle. If updated, use_custom_header_footer_margins is set to true on DocumentStyle. The value of use_custom_header_footer_margins on DocumentStyle indicates if a header margin is being respected for this section. When updating this property, setting a concrete value is required. Unsetting this property results in a 400 bad request error.
                  &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                  &quot;magnitude&quot;: 3.14, # The magnitude.
                },
                &quot;firstPageFooterId&quot;: &quot;A String&quot;, # The ID of the footer used only for the first page of the section. If use_first_page_header_footer is true, this value is used for the footer on the first page of the section. If it is false, the footer on the first page of the section uses the default_footer_id. If unset, the value inherits from the previous SectionBreak&#x27;s SectionStyle. If the value is unset in the first SectionBreak, it inherits from DocumentStyle&#x27;s first_page_footer_id. This property is read-only.
                &quot;firstPageHeaderId&quot;: &quot;A String&quot;, # The ID of the header used only for the first page of the section. If use_first_page_header_footer is true, this value is used for the header on the first page of the section. If it is false, the header on the first page of the section uses the default_header_id. If unset, the value inherits from the previous SectionBreak&#x27;s SectionStyle. If the value is unset in the first SectionBreak, it inherits from DocumentStyle&#x27;s first_page_header_id. This property is read-only.
                &quot;columnSeparatorStyle&quot;: &quot;A String&quot;, # The style of column separators. This style can be set even when there is one column in the section. When updating this property, setting a concrete value is required. Unsetting this property results in a 400 bad request error.
                &quot;marginBottom&quot;: { # A magnitude in a single direction in the specified units. # The bottom page margin of the section. If unset, uses margin_bottom from DocumentStyle. When updating this property, setting a concrete value is required. Unsetting this property results in a 400 bad request error.
                  &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                  &quot;magnitude&quot;: 3.14, # The magnitude.
                },
                &quot;marginFooter&quot;: { # A magnitude in a single direction in the specified units. # The footer margin of the section. If unset, uses margin_footer from DocumentStyle. If updated, use_custom_header_footer_margins is set to true on DocumentStyle. The value of use_custom_header_footer_margins on DocumentStyle indicates if a footer margin is being respected for this section When updating this property, setting a concrete value is required. Unsetting this property results in a 400 bad request error.
                  &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                  &quot;magnitude&quot;: 3.14, # The magnitude.
                },
                &quot;defaultFooterId&quot;: &quot;A String&quot;, # The ID of the default footer. If unset, the value inherits from the previous SectionBreak&#x27;s SectionStyle. If the value is unset in the first SectionBreak, it inherits from DocumentStyle&#x27;s default_footer_id. This property is read-only.
                &quot;marginTop&quot;: { # A magnitude in a single direction in the specified units. # The top page margin of the section. If unset, uses margin_top from DocumentStyle. When updating this property, setting a concrete value is required. Unsetting this property results in a 400 bad request error.
                  &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                  &quot;magnitude&quot;: 3.14, # The magnitude.
                },
                &quot;contentDirection&quot;: &quot;A String&quot;, # The content direction of this section. If unset, the value defaults to LEFT_TO_RIGHT. When updating this property, setting a concrete value is required. Unsetting this property results in a 400 bad request error.
                &quot;evenPageFooterId&quot;: &quot;A String&quot;, # The ID of the footer used only for even pages. If the value of DocumentStyle&#x27;s use_even_page_header_footer is true, this value is used for the footers on even pages in the section. If it is false, the footers on even pages uses the default_footer_id. If unset, the value inherits from the previous SectionBreak&#x27;s SectionStyle. If the value is unset in the first SectionBreak, it inherits from DocumentStyle&#x27;s even_page_footer_id. This property is read-only.
                &quot;marginRight&quot;: { # A magnitude in a single direction in the specified units. # The right page margin of the section. If unset, uses margin_right from DocumentStyle. Updating right margin causes columns in this section to resize. Since the margin affects column width, it is applied before column properties. When updating this property, setting a concrete value is required. Unsetting this property results in a 400 bad request error.
                  &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                  &quot;magnitude&quot;: 3.14, # The magnitude.
                },
                &quot;defaultHeaderId&quot;: &quot;A String&quot;, # The ID of the default header. If unset, the value inherits from the previous SectionBreak&#x27;s SectionStyle. If the value is unset in the first SectionBreak, it inherits from DocumentStyle&#x27;s default_header_id. This property is read-only.
                &quot;pageNumberStart&quot;: 42, # The page number from which to start counting the number of pages for this section. If unset, page numbering continues from the previous section. If the value is unset in the first SectionBreak, refer to DocumentStyle&#x27;s page_number_start. When updating this property, setting a concrete value is required. Unsetting this property results in a 400 bad request error.
                &quot;columnProperties&quot;: [ # The section&#x27;s columns properties. If empty, the section contains one column with the default properties in the Docs editor. A section can be updated to have no more than three columns. When updating this property, setting a concrete value is required. Unsetting this property will result in a 400 bad request error.
                  { # Properties that apply to a section&#x27;s column.
                    &quot;paddingEnd&quot;: { # A magnitude in a single direction in the specified units. # The padding at the end of the column.
                      &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                      &quot;magnitude&quot;: 3.14, # The magnitude.
                    },
                    &quot;width&quot;: { # A magnitude in a single direction in the specified units. # Output only. The width of the column.
                      &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                      &quot;magnitude&quot;: 3.14, # The magnitude.
                    },
                  },
                ],
              },
              &quot;suggestedDeletionIds&quot;: [ # The suggested deletion IDs. If empty, then there are no suggested deletions of this content.
                &quot;A String&quot;,
              ],
            },
          },
        ],
        &quot;footerId&quot;: &quot;A String&quot;, # The ID of the footer.
      },
    },
    &quot;title&quot;: &quot;A String&quot;, # The title of the document.
    &quot;documentStyle&quot;: { # The style of the document. # Output only. The style of the document.
      &quot;useFirstPageHeaderFooter&quot;: True or False, # Indicates whether to use the first page header / footer IDs for the first page.
      &quot;marginBottom&quot;: { # A magnitude in a single direction in the specified units. # The bottom page margin. Updating the bottom page margin on the document style clears the bottom page margin on all section styles.
        &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
        &quot;magnitude&quot;: 3.14, # The magnitude.
      },
      &quot;pageSize&quot;: { # A width and height. # The size of a page in the document.
        &quot;width&quot;: { # A magnitude in a single direction in the specified units. # The width of the object.
          &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
          &quot;magnitude&quot;: 3.14, # The magnitude.
        },
        &quot;height&quot;: { # A magnitude in a single direction in the specified units. # The height of the object.
          &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
          &quot;magnitude&quot;: 3.14, # The magnitude.
        },
      },
      &quot;marginLeft&quot;: { # A magnitude in a single direction in the specified units. # 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.
        &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
        &quot;magnitude&quot;: 3.14, # The magnitude.
      },
      &quot;defaultFooterId&quot;: &quot;A String&quot;, # The ID of the default footer. If not set, there is no default footer. This property is read-only.
      &quot;marginHeader&quot;: { # A magnitude in a single direction in the specified units. # The amount of space between the top of the page and the contents of the header.
        &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
        &quot;magnitude&quot;: 3.14, # The magnitude.
      },
      &quot;marginFooter&quot;: { # A magnitude in a single direction in the specified units. # The amount of space between the bottom of the page and the contents of the footer.
        &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
        &quot;magnitude&quot;: 3.14, # The magnitude.
      },
      &quot;firstPageHeaderId&quot;: &quot;A String&quot;, # 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 is no first page header. This property is read-only.
      &quot;useCustomHeaderFooterMargins&quot;: True or False, # 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.
      &quot;defaultHeaderId&quot;: &quot;A String&quot;, # The ID of the default header. If not set, there is no default header. This property is read-only.
      &quot;evenPageFooterId&quot;: &quot;A String&quot;, # 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 is no even page footer. This property is read-only.
      &quot;evenPageHeaderId&quot;: &quot;A String&quot;, # 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 is no even page header. This property is read-only.
      &quot;marginTop&quot;: { # A magnitude in a single direction in the specified units. # The top page margin. Updating the top page margin on the document style clears the top page margin on all section styles.
        &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
        &quot;magnitude&quot;: 3.14, # The magnitude.
      },
      &quot;useEvenPageHeaderFooter&quot;: True or False, # Indicates whether to use the even page header / footer IDs for the even pages.
      &quot;pageNumberStart&quot;: 42, # The page number from which to start counting the number of pages.
      &quot;marginRight&quot;: { # A magnitude in a single direction in the specified units. # 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.
        &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
        &quot;magnitude&quot;: 3.14, # The magnitude.
      },
      &quot;firstPageFooterId&quot;: &quot;A String&quot;, # 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 is no first page footer. This property is read-only.
      &quot;background&quot;: { # Represents the background of a document. # The background of the document. Documents cannot have a transparent background color.
        &quot;color&quot;: { # A color that can either be fully opaque or fully transparent. # The background color.
          &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
            &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
              &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
              &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
              &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
            },
          },
        },
      },
    },
    &quot;revisionId&quot;: &quot;A String&quot;, # Output only. The revision ID of the document. Can be used in update requests to specify which revision of a document to apply updates to and how the request should behave if the document has been edited since that revision. Only populated if the user has edit access to the document. The format of the revision ID may change over time, so it should be treated opaquely. A returned revision ID is only guaranteed to be valid for 24 hours after it has been returned and cannot be shared across users. If the revision ID is unchanged between calls, then the document has not changed. Conversely, a changed ID (for the same document and user) usually means the document has been updated; however, a changed ID can also be due to internal factors such as ID format changes.
    &quot;lists&quot;: { # Output only. The lists in the document, keyed by list ID.
      &quot;a_key&quot;: { # A List represents the list attributes for a group of paragraphs that all belong to the same list. A paragraph that is part of a list has a reference to the list&#x27;s ID in its bullet.
        &quot;suggestedInsertionId&quot;: &quot;A String&quot;, # The suggested insertion ID. If empty, then this is not a suggested insertion.
        &quot;suggestedDeletionIds&quot;: [ # The suggested deletion IDs. If empty, then there are no suggested deletions of this list.
          &quot;A String&quot;,
        ],
        &quot;listProperties&quot;: { # The properties of a list which describe the look and feel of bullets belonging to paragraphs associated with a list. # The properties of the list.
          &quot;nestingLevels&quot;: [ # Describes the properties of the bullets at the associated level. A list has at most nine levels of nesting with nesting level 0 corresponding to the top-most level and nesting level 8 corresponding to the most nested level. The nesting levels are returned in ascending order with the least nested returned first.
            { # Contains properties describing the look and feel of a list bullet at a given level of nesting.
              &quot;textStyle&quot;: { # Represents the styling that can be applied to text. Inherited text styles are represented as unset fields in this message. A text style&#x27;s parent depends on where the text style is defined: * The TextStyle of text in a Paragraph inherits from the paragraph&#x27;s corresponding named style type. * The TextStyle on a named style inherits from the normal text named style. * The TextStyle of the normal text named style inherits from the default text style in the Docs editor. * The TextStyle on a Paragraph element that is contained in a table may inherit its text style from the table style. If the text style does not inherit from a parent, unsetting fields will revert the style to a value matching the defaults in the Docs editor. # The text style of bullets at this level of nesting.
                &quot;italic&quot;: True or False, # Whether or not the text is italicized.
                &quot;baselineOffset&quot;: &quot;A String&quot;, # The text&#x27;s vertical offset from its normal position. Text with `SUPERSCRIPT` or `SUBSCRIPT` baseline offsets is automatically rendered in a smaller font size, computed based on the `font_size` field. The `font_size` itself is not affected by changes in this field.
                &quot;bold&quot;: True or False, # Whether or not the text is rendered as bold.
                &quot;fontSize&quot;: { # A magnitude in a single direction in the specified units. # The size of the text&#x27;s font.
                  &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                  &quot;magnitude&quot;: 3.14, # The magnitude.
                },
                &quot;foregroundColor&quot;: { # A color that can either be fully opaque or fully transparent. # The foreground color of the text. If set, the color is either an RGB color or transparent, depending on the `color` field.
                  &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                    &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                      &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                      &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                      &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                    },
                  },
                },
                &quot;backgroundColor&quot;: { # A color that can either be fully opaque or fully transparent. # The background color of the text. If set, the color is either an RGB color or transparent, depending on the `color` field.
                  &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                    &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                      &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                      &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                      &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                    },
                  },
                },
                &quot;link&quot;: { # A reference to another portion of a document or an external URL resource. # The hyperlink destination of the text. If unset, there is no link. Links are not inherited from parent text. Changing the link in an update request causes some other changes to the text style of the range: * When setting a link, the text foreground color will be updated to the default link color and the text will be underlined. If these fields are modified in the same request, those values will be used instead of the link defaults. * Setting a link on a text range that overlaps with an existing link will also update the existing link to point to the new URL. * Links are not settable on newline characters. As a result, setting a link on a text range that crosses a paragraph boundary, such as `&quot;ABC\n123&quot;`, will separate the newline character(s) into their own text runs. The link will be applied separately to the runs before and after the newline. * Removing a link will update the text style of the range to match the style of the preceding text (or the default text styles if the preceding text is another link) unless different styles are being set in the same request.
                  &quot;bookmarkId&quot;: &quot;A String&quot;, # The ID of a bookmark in this document.
                  &quot;url&quot;: &quot;A String&quot;, # An external URL.
                  &quot;headingId&quot;: &quot;A String&quot;, # The ID of a heading in this document.
                },
                &quot;strikethrough&quot;: True or False, # Whether or not the text is struck through.
                &quot;weightedFontFamily&quot;: { # Represents a font family and weight of text. # The font family and rendered weight of the text. If an update request specifies values for both `weighted_font_family` and `bold`, the `weighted_font_family` is applied first, then `bold`. If `weighted_font_family#weight` is not set, it defaults to `400`. If `weighted_font_family` is set, then `weighted_font_family#font_family` must also be set with a non-empty value. Otherwise, a 400 bad request error is returned.
                  &quot;fontFamily&quot;: &quot;A String&quot;, # The font family of the text. The font family can be any font from the Font menu in Docs or from [Google Fonts] (https://fonts.google.com/). If the font name is unrecognized, the text is rendered in `Arial`.
                  &quot;weight&quot;: 42, # The weight of the font. This field can have any value that is a multiple of `100` between `100` and `900`, inclusive. This range corresponds to the numerical values described in the CSS 2.1 Specification, [section 15.6](https://www.w3.org/TR/CSS21/fonts.html#font-boldness), with non-numerical values disallowed. The default value is `400` (&quot;normal&quot;). The font weight makes up just one component of the rendered font weight. The rendered weight is determined by a combination of the `weight` and the text style&#x27;s resolved `bold` value, after accounting for inheritance: * If the text is bold and the weight is less than `400`, the rendered weight is 400. * If the text is bold and the weight is greater than or equal to `400` but is less than `700`, the rendered weight is `700`. * If the weight is greater than or equal to `700`, the rendered weight is equal to the weight. * If the text is not bold, the rendered weight is equal to the weight.
                },
                &quot;underline&quot;: True or False, # Whether or not the text is underlined.
                &quot;smallCaps&quot;: True or False, # Whether or not the text is in small capital letters.
              },
              &quot;glyphSymbol&quot;: &quot;A String&quot;, # A custom glyph symbol used by bullets when paragraphs at this level of nesting are unordered. The glyph symbol replaces placeholders within the glyph_format. For example, if the glyph_symbol is the solid circle corresponding to Unicode U+25cf code point and the glyph_format is `%0`, the rendered glyph would be the solid circle.
              &quot;startNumber&quot;: 42, # The number of the first list item at this nesting level. A value of 0 is treated as a value of 1 for lettered lists and roman numeraled lists, i.e. for values of both 0 and 1, lettered and roman numeraled lists will begin at `a` and `i` respectively. This value is ignored for nesting levels with unordered glyphs.
              &quot;bulletAlignment&quot;: &quot;A String&quot;, # The alignment of the bullet within the space allotted for rendering the bullet.
              &quot;indentFirstLine&quot;: { # A magnitude in a single direction in the specified units. # The amount of indentation for the first line of paragraphs at this level of nesting.
                &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                &quot;magnitude&quot;: 3.14, # The magnitude.
              },
              &quot;indentStart&quot;: { # A magnitude in a single direction in the specified units. # The amount of indentation for paragraphs at this level of nesting. Applied to the side that corresponds to the start of the text, based on the paragraph&#x27;s content direction.
                &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                &quot;magnitude&quot;: 3.14, # The magnitude.
              },
              &quot;glyphType&quot;: &quot;A String&quot;, # The type of glyph used by bullets when paragraphs at this level of nesting are ordered. The glyph type determines the type of glyph used to replace placeholders within the glyph_format when paragraphs at this level of nesting are ordered. For example, if the nesting level is 0, the glyph_format is `%0.` and the glyph type is DECIMAL, then the rendered glyph would replace the placeholder `%0` in the glyph format with a number corresponding to list item&#x27;s order within the list.
              &quot;glyphFormat&quot;: &quot;A String&quot;, # The format string used by bullets at this level of nesting. The glyph format contains one or more placeholders, and these placeholder are replaced with the appropriate values depending on the glyph_type or glyph_symbol. The placeholders follow the pattern `%[nesting_level]`. Furthermore, placeholders can have prefixes and suffixes. Thus, the glyph format follows the pattern `%[nesting_level]`. Note that the prefix and suffix are optional and can be arbitrary strings. For example, the glyph format `%0.` indicates that the rendered glyph will replace the placeholder with the corresponding glyph for nesting level 0 followed by a period as the suffix. So a list with a glyph type of UPPER_ALPHA and glyph format `%0.` at nesting level 0 will result in a list with rendered glyphs `A.` `B.` `C.` The glyph format can contain placeholders for the current nesting level as well as placeholders for parent nesting levels. For example, a list can have a glyph format of `%0.` at nesting level 0 and a glyph format of `%0.%1.` at nesting level 1. Assuming both nesting levels have DECIMAL glyph types, this would result in a list with rendered glyphs `1.` `2.` ` 2.1.` ` 2.2.` `3.` For nesting levels that are ordered, the string that replaces a placeholder in the glyph format for a particular paragraph depends on the paragraph&#x27;s order within the list.
            },
          ],
        },
        &quot;suggestedListPropertiesChanges&quot;: { # The suggested changes to the list properties, keyed by suggestion ID.
          &quot;a_key&quot;: { # A suggested change to ListProperties.
            &quot;listProperties&quot;: { # The properties of a list which describe the look and feel of bullets belonging to paragraphs associated with a list. # A ListProperties that only includes the changes made in this suggestion. This can be used along with the list_properties_suggestion_state to see which fields have changed and their new values.
              &quot;nestingLevels&quot;: [ # Describes the properties of the bullets at the associated level. A list has at most nine levels of nesting with nesting level 0 corresponding to the top-most level and nesting level 8 corresponding to the most nested level. The nesting levels are returned in ascending order with the least nested returned first.
                { # Contains properties describing the look and feel of a list bullet at a given level of nesting.
                  &quot;textStyle&quot;: { # Represents the styling that can be applied to text. Inherited text styles are represented as unset fields in this message. A text style&#x27;s parent depends on where the text style is defined: * The TextStyle of text in a Paragraph inherits from the paragraph&#x27;s corresponding named style type. * The TextStyle on a named style inherits from the normal text named style. * The TextStyle of the normal text named style inherits from the default text style in the Docs editor. * The TextStyle on a Paragraph element that is contained in a table may inherit its text style from the table style. If the text style does not inherit from a parent, unsetting fields will revert the style to a value matching the defaults in the Docs editor. # The text style of bullets at this level of nesting.
                    &quot;italic&quot;: True or False, # Whether or not the text is italicized.
                    &quot;baselineOffset&quot;: &quot;A String&quot;, # The text&#x27;s vertical offset from its normal position. Text with `SUPERSCRIPT` or `SUBSCRIPT` baseline offsets is automatically rendered in a smaller font size, computed based on the `font_size` field. The `font_size` itself is not affected by changes in this field.
                    &quot;bold&quot;: True or False, # Whether or not the text is rendered as bold.
                    &quot;fontSize&quot;: { # A magnitude in a single direction in the specified units. # The size of the text&#x27;s font.
                      &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                      &quot;magnitude&quot;: 3.14, # The magnitude.
                    },
                    &quot;foregroundColor&quot;: { # A color that can either be fully opaque or fully transparent. # The foreground color of the text. If set, the color is either an RGB color or transparent, depending on the `color` field.
                      &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                        &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                          &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                          &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                          &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                        },
                      },
                    },
                    &quot;backgroundColor&quot;: { # A color that can either be fully opaque or fully transparent. # The background color of the text. If set, the color is either an RGB color or transparent, depending on the `color` field.
                      &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                        &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                          &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                          &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                          &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                        },
                      },
                    },
                    &quot;link&quot;: { # A reference to another portion of a document or an external URL resource. # The hyperlink destination of the text. If unset, there is no link. Links are not inherited from parent text. Changing the link in an update request causes some other changes to the text style of the range: * When setting a link, the text foreground color will be updated to the default link color and the text will be underlined. If these fields are modified in the same request, those values will be used instead of the link defaults. * Setting a link on a text range that overlaps with an existing link will also update the existing link to point to the new URL. * Links are not settable on newline characters. As a result, setting a link on a text range that crosses a paragraph boundary, such as `&quot;ABC\n123&quot;`, will separate the newline character(s) into their own text runs. The link will be applied separately to the runs before and after the newline. * Removing a link will update the text style of the range to match the style of the preceding text (or the default text styles if the preceding text is another link) unless different styles are being set in the same request.
                      &quot;bookmarkId&quot;: &quot;A String&quot;, # The ID of a bookmark in this document.
                      &quot;url&quot;: &quot;A String&quot;, # An external URL.
                      &quot;headingId&quot;: &quot;A String&quot;, # The ID of a heading in this document.
                    },
                    &quot;strikethrough&quot;: True or False, # Whether or not the text is struck through.
                    &quot;weightedFontFamily&quot;: { # Represents a font family and weight of text. # The font family and rendered weight of the text. If an update request specifies values for both `weighted_font_family` and `bold`, the `weighted_font_family` is applied first, then `bold`. If `weighted_font_family#weight` is not set, it defaults to `400`. If `weighted_font_family` is set, then `weighted_font_family#font_family` must also be set with a non-empty value. Otherwise, a 400 bad request error is returned.
                      &quot;fontFamily&quot;: &quot;A String&quot;, # The font family of the text. The font family can be any font from the Font menu in Docs or from [Google Fonts] (https://fonts.google.com/). If the font name is unrecognized, the text is rendered in `Arial`.
                      &quot;weight&quot;: 42, # The weight of the font. This field can have any value that is a multiple of `100` between `100` and `900`, inclusive. This range corresponds to the numerical values described in the CSS 2.1 Specification, [section 15.6](https://www.w3.org/TR/CSS21/fonts.html#font-boldness), with non-numerical values disallowed. The default value is `400` (&quot;normal&quot;). The font weight makes up just one component of the rendered font weight. The rendered weight is determined by a combination of the `weight` and the text style&#x27;s resolved `bold` value, after accounting for inheritance: * If the text is bold and the weight is less than `400`, the rendered weight is 400. * If the text is bold and the weight is greater than or equal to `400` but is less than `700`, the rendered weight is `700`. * If the weight is greater than or equal to `700`, the rendered weight is equal to the weight. * If the text is not bold, the rendered weight is equal to the weight.
                    },
                    &quot;underline&quot;: True or False, # Whether or not the text is underlined.
                    &quot;smallCaps&quot;: True or False, # Whether or not the text is in small capital letters.
                  },
                  &quot;glyphSymbol&quot;: &quot;A String&quot;, # A custom glyph symbol used by bullets when paragraphs at this level of nesting are unordered. The glyph symbol replaces placeholders within the glyph_format. For example, if the glyph_symbol is the solid circle corresponding to Unicode U+25cf code point and the glyph_format is `%0`, the rendered glyph would be the solid circle.
                  &quot;startNumber&quot;: 42, # The number of the first list item at this nesting level. A value of 0 is treated as a value of 1 for lettered lists and roman numeraled lists, i.e. for values of both 0 and 1, lettered and roman numeraled lists will begin at `a` and `i` respectively. This value is ignored for nesting levels with unordered glyphs.
                  &quot;bulletAlignment&quot;: &quot;A String&quot;, # The alignment of the bullet within the space allotted for rendering the bullet.
                  &quot;indentFirstLine&quot;: { # A magnitude in a single direction in the specified units. # The amount of indentation for the first line of paragraphs at this level of nesting.
                    &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                    &quot;magnitude&quot;: 3.14, # The magnitude.
                  },
                  &quot;indentStart&quot;: { # A magnitude in a single direction in the specified units. # The amount of indentation for paragraphs at this level of nesting. Applied to the side that corresponds to the start of the text, based on the paragraph&#x27;s content direction.
                    &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                    &quot;magnitude&quot;: 3.14, # The magnitude.
                  },
                  &quot;glyphType&quot;: &quot;A String&quot;, # The type of glyph used by bullets when paragraphs at this level of nesting are ordered. The glyph type determines the type of glyph used to replace placeholders within the glyph_format when paragraphs at this level of nesting are ordered. For example, if the nesting level is 0, the glyph_format is `%0.` and the glyph type is DECIMAL, then the rendered glyph would replace the placeholder `%0` in the glyph format with a number corresponding to list item&#x27;s order within the list.
                  &quot;glyphFormat&quot;: &quot;A String&quot;, # The format string used by bullets at this level of nesting. The glyph format contains one or more placeholders, and these placeholder are replaced with the appropriate values depending on the glyph_type or glyph_symbol. The placeholders follow the pattern `%[nesting_level]`. Furthermore, placeholders can have prefixes and suffixes. Thus, the glyph format follows the pattern `%[nesting_level]`. Note that the prefix and suffix are optional and can be arbitrary strings. For example, the glyph format `%0.` indicates that the rendered glyph will replace the placeholder with the corresponding glyph for nesting level 0 followed by a period as the suffix. So a list with a glyph type of UPPER_ALPHA and glyph format `%0.` at nesting level 0 will result in a list with rendered glyphs `A.` `B.` `C.` The glyph format can contain placeholders for the current nesting level as well as placeholders for parent nesting levels. For example, a list can have a glyph format of `%0.` at nesting level 0 and a glyph format of `%0.%1.` at nesting level 1. Assuming both nesting levels have DECIMAL glyph types, this would result in a list with rendered glyphs `1.` `2.` ` 2.1.` ` 2.2.` `3.` For nesting levels that are ordered, the string that replaces a placeholder in the glyph format for a particular paragraph depends on the paragraph&#x27;s order within the list.
                },
              ],
            },
            &quot;listPropertiesSuggestionState&quot;: { # A mask that indicates which of the fields on the base ListProperties have been changed in this suggestion. For any field set to true, there is a new suggested value. # A mask that indicates which of the fields on the base ListProperties have been changed in this suggestion.
              &quot;nestingLevelsSuggestionStates&quot;: [ # A mask that indicates which of the fields on the corresponding NestingLevel in nesting_levels have been changed in this suggestion. The nesting level suggestion states are returned in ascending order of the nesting level with the least nested returned first.
                { # A mask that indicates which of the fields on the base NestingLevel have been changed in this suggestion. For any field set to true, there is a new suggested value.
                  &quot;glyphSymbolSuggested&quot;: True or False, # Indicates if there was a suggested change to glyph_symbol.
                  &quot;indentFirstLineSuggested&quot;: True or False, # Indicates if there was a suggested change to indent_first_line.
                  &quot;textStyleSuggestionState&quot;: { # A mask that indicates which of the fields on the base TextStyle have been changed in this suggestion. For any field set to true, there is a new suggested value. # A mask that indicates which of the fields in text style have been changed in this suggestion.
                    &quot;backgroundColorSuggested&quot;: True or False, # Indicates if there was a suggested change to background_color.
                    &quot;fontSizeSuggested&quot;: True or False, # Indicates if there was a suggested change to font_size.
                    &quot;boldSuggested&quot;: True or False, # Indicates if there was a suggested change to bold.
                    &quot;baselineOffsetSuggested&quot;: True or False, # Indicates if there was a suggested change to baseline_offset.
                    &quot;foregroundColorSuggested&quot;: True or False, # Indicates if there was a suggested change to foreground_color.
                    &quot;italicSuggested&quot;: True or False, # Indicates if there was a suggested change to italic.
                    &quot;linkSuggested&quot;: True or False, # Indicates if there was a suggested change to link.
                    &quot;underlineSuggested&quot;: True or False, # Indicates if there was a suggested change to underline.
                    &quot;weightedFontFamilySuggested&quot;: True or False, # Indicates if there was a suggested change to weighted_font_family.
                    &quot;smallCapsSuggested&quot;: True or False, # Indicates if there was a suggested change to small_caps.
                    &quot;strikethroughSuggested&quot;: True or False, # Indicates if there was a suggested change to strikethrough.
                  },
                  &quot;indentStartSuggested&quot;: True or False, # Indicates if there was a suggested change to indent_start.
                  &quot;glyphTypeSuggested&quot;: True or False, # Indicates if there was a suggested change to glyph_type.
                  &quot;startNumberSuggested&quot;: True or False, # Indicates if there was a suggested change to start_number.
                  &quot;bulletAlignmentSuggested&quot;: True or False, # Indicates if there was a suggested change to bullet_alignment.
                  &quot;glyphFormatSuggested&quot;: True or False, # Indicates if there was a suggested change to glyph_format.
                },
              ],
            },
          },
        },
      },
    },
    &quot;suggestedDocumentStyleChanges&quot;: { # Output only. The suggested changes to the style of the document, keyed by suggestion ID.
      &quot;a_key&quot;: { # A suggested change to the DocumentStyle.
        &quot;documentStyleSuggestionState&quot;: { # A mask that indicates which of the fields on the base DocumentStyle have been changed in this suggestion. For any field set to true, there is a new suggested value. # A mask that indicates which of the fields on the base DocumentStyle have been changed in this suggestion.
          &quot;defaultHeaderIdSuggested&quot;: True or False, # Indicates if there was a suggested change to default_header_id.
          &quot;pageSizeSuggestionState&quot;: { # A mask that indicates which of the fields on the base Size have been changed in this suggestion. For any field set to true, the Size has a new suggested value. # A mask that indicates which of the fields in size have been changed in this suggestion.
            &quot;heightSuggested&quot;: True or False, # Indicates if there was a suggested change to height.
            &quot;widthSuggested&quot;: True or False, # Indicates if there was a suggested change to width.
          },
          &quot;marginRightSuggested&quot;: True or False, # Indicates if there was a suggested change to margin_right.
          &quot;marginFooterSuggested&quot;: True or False, # Indicates if there was a suggested change to margin_footer.
          &quot;marginHeaderSuggested&quot;: True or False, # Indicates if there was a suggested change to margin_header.
          &quot;useEvenPageHeaderFooterSuggested&quot;: True or False, # Indicates if there was a suggested change to use_even_page_header_footer.
          &quot;backgroundSuggestionState&quot;: { # A mask that indicates which of the fields on the base Background have been changed in this suggestion. For any field set to true, the Backgound has a new suggested value. # A mask that indicates which of the fields in background have been changed in this suggestion.
            &quot;backgroundColorSuggested&quot;: True or False, # Indicates whether the current background color has been modified in this suggestion.
          },
          &quot;evenPageHeaderIdSuggested&quot;: True or False, # Indicates if there was a suggested change to even_page_header_id.
          &quot;marginLeftSuggested&quot;: True or False, # Indicates if there was a suggested change to margin_left.
          &quot;useFirstPageHeaderFooterSuggested&quot;: True or False, # Indicates if there was a suggested change to use_first_page_header_footer.
          &quot;evenPageFooterIdSuggested&quot;: True or False, # Indicates if there was a suggested change to even_page_footer_id.
          &quot;firstPageFooterIdSuggested&quot;: True or False, # Indicates if there was a suggested change to first_page_footer_id.
          &quot;useCustomHeaderFooterMarginsSuggested&quot;: True or False, # Indicates if there was a suggested change to use_custom_header_footer_margins.
          &quot;marginBottomSuggested&quot;: True or False, # Indicates if there was a suggested change to margin_bottom.
          &quot;marginTopSuggested&quot;: True or False, # Indicates if there was a suggested change to margin_top.
          &quot;defaultFooterIdSuggested&quot;: True or False, # Indicates if there was a suggested change to default_footer_id.
          &quot;pageNumberStartSuggested&quot;: True or False, # Indicates if there was a suggested change to page_number_start.
          &quot;firstPageHeaderIdSuggested&quot;: True or False, # Indicates if there was a suggested change to first_page_header_id.
        },
        &quot;documentStyle&quot;: { # The style of the document. # A DocumentStyle that only includes the changes made in this suggestion. This can be used along with the document_style_suggestion_state to see which fields have changed and their new values.
          &quot;useFirstPageHeaderFooter&quot;: True or False, # Indicates whether to use the first page header / footer IDs for the first page.
          &quot;marginBottom&quot;: { # A magnitude in a single direction in the specified units. # The bottom page margin. Updating the bottom page margin on the document style clears the bottom page margin on all section styles.
            &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
            &quot;magnitude&quot;: 3.14, # The magnitude.
          },
          &quot;pageSize&quot;: { # A width and height. # The size of a page in the document.
            &quot;width&quot;: { # A magnitude in a single direction in the specified units. # The width of the object.
              &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
              &quot;magnitude&quot;: 3.14, # The magnitude.
            },
            &quot;height&quot;: { # A magnitude in a single direction in the specified units. # The height of the object.
              &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
              &quot;magnitude&quot;: 3.14, # The magnitude.
            },
          },
          &quot;marginLeft&quot;: { # A magnitude in a single direction in the specified units. # 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.
            &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
            &quot;magnitude&quot;: 3.14, # The magnitude.
          },
          &quot;defaultFooterId&quot;: &quot;A String&quot;, # The ID of the default footer. If not set, there is no default footer. This property is read-only.
          &quot;marginHeader&quot;: { # A magnitude in a single direction in the specified units. # The amount of space between the top of the page and the contents of the header.
            &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
            &quot;magnitude&quot;: 3.14, # The magnitude.
          },
          &quot;marginFooter&quot;: { # A magnitude in a single direction in the specified units. # The amount of space between the bottom of the page and the contents of the footer.
            &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
            &quot;magnitude&quot;: 3.14, # The magnitude.
          },
          &quot;firstPageHeaderId&quot;: &quot;A String&quot;, # 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 is no first page header. This property is read-only.
          &quot;useCustomHeaderFooterMargins&quot;: True or False, # 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.
          &quot;defaultHeaderId&quot;: &quot;A String&quot;, # The ID of the default header. If not set, there is no default header. This property is read-only.
          &quot;evenPageFooterId&quot;: &quot;A String&quot;, # 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 is no even page footer. This property is read-only.
          &quot;evenPageHeaderId&quot;: &quot;A String&quot;, # 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 is no even page header. This property is read-only.
          &quot;marginTop&quot;: { # A magnitude in a single direction in the specified units. # The top page margin. Updating the top page margin on the document style clears the top page margin on all section styles.
            &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
            &quot;magnitude&quot;: 3.14, # The magnitude.
          },
          &quot;useEvenPageHeaderFooter&quot;: True or False, # Indicates whether to use the even page header / footer IDs for the even pages.
          &quot;pageNumberStart&quot;: 42, # The page number from which to start counting the number of pages.
          &quot;marginRight&quot;: { # A magnitude in a single direction in the specified units. # 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.
            &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
            &quot;magnitude&quot;: 3.14, # The magnitude.
          },
          &quot;firstPageFooterId&quot;: &quot;A String&quot;, # 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 is no first page footer. This property is read-only.
          &quot;background&quot;: { # Represents the background of a document. # The background of the document. Documents cannot have a transparent background color.
            &quot;color&quot;: { # A color that can either be fully opaque or fully transparent. # The background color.
              &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                  &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                  &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                  &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                },
              },
            },
          },
        },
      },
    },
    &quot;body&quot;: { # The document body. The body typically contains the full document contents except for headers, footers and footnotes. # Output only. The main body of the document.
      &quot;content&quot;: [ # The contents of the body. The indexes for the body&#x27;s content begin at zero.
        { # A StructuralElement describes content that provides structure to the document.
          &quot;paragraph&quot;: { # A StructuralElement representing a paragraph. A paragraph is a range of content that is terminated with a newline character. # A paragraph type of structural element.
            &quot;suggestedParagraphStyleChanges&quot;: { # The suggested paragraph style changes to this paragraph, keyed by suggestion ID.
              &quot;a_key&quot;: { # A suggested change to a ParagraphStyle.
                &quot;paragraphStyle&quot;: { # Styles that apply to a whole paragraph. Inherited paragraph styles are represented as unset fields in this message. A paragraph style&#x27;s parent depends on where the paragraph style is defined: * The ParagraphStyle on a Paragraph inherits from the paragraph&#x27;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 is 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. # A ParagraphStyle that only includes the changes made in this suggestion. This can be used along with the paragraph_suggestion_state to see which fields have changed and their new values.
                  &quot;borderRight&quot;: { # A border around a paragraph. # The border to the right of this paragraph. If unset, the value is inherited from the parent. Paragraph borders cannot be partially updated. When making changes to a paragraph border the new border must be specified in its entirety.
                    &quot;color&quot;: { # A color that can either be fully opaque or fully transparent. # The color of the border.
                      &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                        &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                          &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                          &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                          &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                        },
                      },
                    },
                    &quot;width&quot;: { # A magnitude in a single direction in the specified units. # The width of the border.
                      &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                      &quot;magnitude&quot;: 3.14, # The magnitude.
                    },
                    &quot;padding&quot;: { # A magnitude in a single direction in the specified units. # The padding of the border.
                      &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                      &quot;magnitude&quot;: 3.14, # The magnitude.
                    },
                    &quot;dashStyle&quot;: &quot;A String&quot;, # The dash style of the border.
                  },
                  &quot;indentFirstLine&quot;: { # A magnitude in a single direction in the specified units. # The amount of indentation for the first line of the paragraph. If unset, the value is inherited from the parent.
                    &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                    &quot;magnitude&quot;: 3.14, # The magnitude.
                  },
                  &quot;alignment&quot;: &quot;A String&quot;, # The text alignment for this paragraph.
                  &quot;lineSpacing&quot;: 3.14, # The amount of space between lines, as a percentage of normal, where normal is represented as 100.0. If unset, the value is inherited from the parent.
                  &quot;keepLinesTogether&quot;: True or False, # Whether all lines of the paragraph should be laid out on the same page or column if possible. If unset, the value is inherited from the parent.
                  &quot;avoidWidowAndOrphan&quot;: True or False, # Whether to avoid widows and orphans for the paragraph. If unset, the value is inherited from the parent.
                  &quot;spaceBelow&quot;: { # A magnitude in a single direction in the specified units. # The amount of extra space below the paragraph. If unset, the value is inherited from the parent.
                    &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                    &quot;magnitude&quot;: 3.14, # The magnitude.
                  },
                  &quot;borderBetween&quot;: { # A border around a paragraph. # 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 making changes to a paragraph border the new border must be specified in its entirety.
                    &quot;color&quot;: { # A color that can either be fully opaque or fully transparent. # The color of the border.
                      &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                        &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                          &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                          &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                          &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                        },
                      },
                    },
                    &quot;width&quot;: { # A magnitude in a single direction in the specified units. # The width of the border.
                      &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                      &quot;magnitude&quot;: 3.14, # The magnitude.
                    },
                    &quot;padding&quot;: { # A magnitude in a single direction in the specified units. # The padding of the border.
                      &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                      &quot;magnitude&quot;: 3.14, # The magnitude.
                    },
                    &quot;dashStyle&quot;: &quot;A String&quot;, # The dash style of the border.
                  },
                  &quot;headingId&quot;: &quot;A String&quot;, # The heading ID of the paragraph. If empty, then this paragraph is not a heading. This property is read-only.
                  &quot;spaceAbove&quot;: { # A magnitude in a single direction in the specified units. # The amount of extra space above the paragraph. If unset, the value is inherited from the parent.
                    &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                    &quot;magnitude&quot;: 3.14, # The magnitude.
                  },
                  &quot;direction&quot;: &quot;A String&quot;, # The text direction of this paragraph. If unset, the value defaults to LEFT_TO_RIGHT since paragraph direction is not inherited.
                  &quot;namedStyleType&quot;: &quot;A String&quot;, # The named style type of the paragraph. Since updating the named style type affects other properties within ParagraphStyle, the named style type is applied before the other properties are updated.
                  &quot;tabStops&quot;: [ # A list of the tab stops for this paragraph. The list of tab stops is not inherited. This property is read-only.
                    { # A tab stop within a paragraph.
                      &quot;offset&quot;: { # A magnitude in a single direction in the specified units. # The offset between this tab stop and the start margin.
                        &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                        &quot;magnitude&quot;: 3.14, # The magnitude.
                      },
                      &quot;alignment&quot;: &quot;A String&quot;, # The alignment of this tab stop. If unset, the value defaults to START.
                    },
                  ],
                  &quot;indentStart&quot;: { # A magnitude in a single direction in the specified units. # The amount of indentation for the paragraph on the side that corresponds to the start of the text, based on the current paragraph direction. If unset, the value is inherited from the parent.
                    &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                    &quot;magnitude&quot;: 3.14, # The magnitude.
                  },
                  &quot;keepWithNext&quot;: True or False, # Whether at least a part of this paragraph should be laid out on the same page or column as the next paragraph if possible. If unset, the value is inherited from the parent.
                  &quot;borderTop&quot;: { # A border around a paragraph. # 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 making changes to a paragraph border the new border must be specified in its entirety.
                    &quot;color&quot;: { # A color that can either be fully opaque or fully transparent. # The color of the border.
                      &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                        &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                          &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                          &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                          &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                        },
                      },
                    },
                    &quot;width&quot;: { # A magnitude in a single direction in the specified units. # The width of the border.
                      &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                      &quot;magnitude&quot;: 3.14, # The magnitude.
                    },
                    &quot;padding&quot;: { # A magnitude in a single direction in the specified units. # The padding of the border.
                      &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                      &quot;magnitude&quot;: 3.14, # The magnitude.
                    },
                    &quot;dashStyle&quot;: &quot;A String&quot;, # The dash style of the border.
                  },
                  &quot;borderLeft&quot;: { # A border around a paragraph. # The border to the left of this paragraph. If unset, the value is inherited from the parent. Paragraph borders cannot be partially updated. When making changes to a paragraph border the new border must be specified in its entirety.
                    &quot;color&quot;: { # A color that can either be fully opaque or fully transparent. # The color of the border.
                      &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                        &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                          &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                          &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                          &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                        },
                      },
                    },
                    &quot;width&quot;: { # A magnitude in a single direction in the specified units. # The width of the border.
                      &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                      &quot;magnitude&quot;: 3.14, # The magnitude.
                    },
                    &quot;padding&quot;: { # A magnitude in a single direction in the specified units. # The padding of the border.
                      &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                      &quot;magnitude&quot;: 3.14, # The magnitude.
                    },
                    &quot;dashStyle&quot;: &quot;A String&quot;, # The dash style of the border.
                  },
                  &quot;borderBottom&quot;: { # A border around a paragraph. # 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 making changes to a paragraph border the new border must be specified in its entirety.
                    &quot;color&quot;: { # A color that can either be fully opaque or fully transparent. # The color of the border.
                      &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                        &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                          &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                          &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                          &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                        },
                      },
                    },
                    &quot;width&quot;: { # A magnitude in a single direction in the specified units. # The width of the border.
                      &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                      &quot;magnitude&quot;: 3.14, # The magnitude.
                    },
                    &quot;padding&quot;: { # A magnitude in a single direction in the specified units. # The padding of the border.
                      &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                      &quot;magnitude&quot;: 3.14, # The magnitude.
                    },
                    &quot;dashStyle&quot;: &quot;A String&quot;, # The dash style of the border.
                  },
                  &quot;shading&quot;: { # The shading of a paragraph. # The shading of the paragraph. If unset, the value is inherited from the parent.
                    &quot;backgroundColor&quot;: { # A color that can either be fully opaque or fully transparent. # The background color of this paragraph shading.
                      &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                        &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                          &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                          &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                          &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                        },
                      },
                    },
                  },
                  &quot;indentEnd&quot;: { # A magnitude in a single direction in the specified units. # 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.
                    &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                    &quot;magnitude&quot;: 3.14, # The magnitude.
                  },
                  &quot;spacingMode&quot;: &quot;A String&quot;, # The spacing mode for the paragraph.
                },
                &quot;paragraphStyleSuggestionState&quot;: { # A mask that indicates which of the fields on the base ParagraphStyle have been changed in this suggestion. For any field set to true, there is a new suggested value. # A mask that indicates which of the fields on the base ParagraphStyle have been changed in this suggestion.
                  &quot;borderRightSuggested&quot;: True or False, # Indicates if there was a suggested change to border_right.
                  &quot;indentEndSuggested&quot;: True or False, # Indicates if there was a suggested change to indent_end.
                  &quot;lineSpacingSuggested&quot;: True or False, # Indicates if there was a suggested change to line_spacing.
                  &quot;headingIdSuggested&quot;: True or False, # Indicates if there was a suggested change to heading_id.
                  &quot;indentStartSuggested&quot;: True or False, # Indicates if there was a suggested change to indent_start.
                  &quot;keepWithNextSuggested&quot;: True or False, # Indicates if there was a suggested change to keep_with_next.
                  &quot;namedStyleTypeSuggested&quot;: True or False, # Indicates if there was a suggested change to named_style_type.
                  &quot;borderTopSuggested&quot;: True or False, # Indicates if there was a suggested change to border_top.
                  &quot;keepLinesTogetherSuggested&quot;: True or False, # Indicates if there was a suggested change to keep_lines_together.
                  &quot;avoidWidowAndOrphanSuggested&quot;: True or False, # Indicates if there was a suggested change to avoid_widow_and_orphan.
                  &quot;spaceBelowSuggested&quot;: True or False, # Indicates if there was a suggested change to space_below.
                  &quot;indentFirstLineSuggested&quot;: True or False, # Indicates if there was a suggested change to indent_first_line.
                  &quot;shadingSuggestionState&quot;: { # A mask that indicates which of the fields on the base Shading have been changed in this suggested change. For any field set to true, there is a new suggested value. # A mask that indicates which of the fields in shading have been changed in this suggestion.
                    &quot;backgroundColorSuggested&quot;: True or False, # Indicates if there was a suggested change to the Shading.
                  },
                  &quot;directionSuggested&quot;: True or False, # Indicates if there was a suggested change to direction.
                  &quot;borderBetweenSuggested&quot;: True or False, # Indicates if there was a suggested change to border_between.
                  &quot;spaceAboveSuggested&quot;: True or False, # Indicates if there was a suggested change to space_above.
                  &quot;borderLeftSuggested&quot;: True or False, # Indicates if there was a suggested change to border_left.
                  &quot;spacingModeSuggested&quot;: True or False, # Indicates if there was a suggested change to spacing_mode.
                  &quot;borderBottomSuggested&quot;: True or False, # Indicates if there was a suggested change to border_bottom.
                  &quot;alignmentSuggested&quot;: True or False, # Indicates if there was a suggested change to alignment.
                },
              },
            },
            &quot;bullet&quot;: { # Describes the bullet of a paragraph. # The bullet for this paragraph. If not present, the paragraph does not belong to a list.
              &quot;textStyle&quot;: { # Represents the styling that can be applied to text. Inherited text styles are represented as unset fields in this message. A text style&#x27;s parent depends on where the text style is defined: * The TextStyle of text in a Paragraph inherits from the paragraph&#x27;s corresponding named style type. * The TextStyle on a named style inherits from the normal text named style. * The TextStyle of the normal text named style inherits from the default text style in the Docs editor. * The TextStyle on a Paragraph element that is contained in a table may inherit its text style from the table style. If the text style does not inherit from a parent, unsetting fields will revert the style to a value matching the defaults in the Docs editor. # The paragraph specific text style applied to this bullet.
                &quot;italic&quot;: True or False, # Whether or not the text is italicized.
                &quot;baselineOffset&quot;: &quot;A String&quot;, # The text&#x27;s vertical offset from its normal position. Text with `SUPERSCRIPT` or `SUBSCRIPT` baseline offsets is automatically rendered in a smaller font size, computed based on the `font_size` field. The `font_size` itself is not affected by changes in this field.
                &quot;bold&quot;: True or False, # Whether or not the text is rendered as bold.
                &quot;fontSize&quot;: { # A magnitude in a single direction in the specified units. # The size of the text&#x27;s font.
                  &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                  &quot;magnitude&quot;: 3.14, # The magnitude.
                },
                &quot;foregroundColor&quot;: { # A color that can either be fully opaque or fully transparent. # The foreground color of the text. If set, the color is either an RGB color or transparent, depending on the `color` field.
                  &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                    &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                      &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                      &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                      &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                    },
                  },
                },
                &quot;backgroundColor&quot;: { # A color that can either be fully opaque or fully transparent. # The background color of the text. If set, the color is either an RGB color or transparent, depending on the `color` field.
                  &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                    &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                      &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                      &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                      &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                    },
                  },
                },
                &quot;link&quot;: { # A reference to another portion of a document or an external URL resource. # The hyperlink destination of the text. If unset, there is no link. Links are not inherited from parent text. Changing the link in an update request causes some other changes to the text style of the range: * When setting a link, the text foreground color will be updated to the default link color and the text will be underlined. If these fields are modified in the same request, those values will be used instead of the link defaults. * Setting a link on a text range that overlaps with an existing link will also update the existing link to point to the new URL. * Links are not settable on newline characters. As a result, setting a link on a text range that crosses a paragraph boundary, such as `&quot;ABC\n123&quot;`, will separate the newline character(s) into their own text runs. The link will be applied separately to the runs before and after the newline. * Removing a link will update the text style of the range to match the style of the preceding text (or the default text styles if the preceding text is another link) unless different styles are being set in the same request.
                  &quot;bookmarkId&quot;: &quot;A String&quot;, # The ID of a bookmark in this document.
                  &quot;url&quot;: &quot;A String&quot;, # An external URL.
                  &quot;headingId&quot;: &quot;A String&quot;, # The ID of a heading in this document.
                },
                &quot;strikethrough&quot;: True or False, # Whether or not the text is struck through.
                &quot;weightedFontFamily&quot;: { # Represents a font family and weight of text. # The font family and rendered weight of the text. If an update request specifies values for both `weighted_font_family` and `bold`, the `weighted_font_family` is applied first, then `bold`. If `weighted_font_family#weight` is not set, it defaults to `400`. If `weighted_font_family` is set, then `weighted_font_family#font_family` must also be set with a non-empty value. Otherwise, a 400 bad request error is returned.
                  &quot;fontFamily&quot;: &quot;A String&quot;, # The font family of the text. The font family can be any font from the Font menu in Docs or from [Google Fonts] (https://fonts.google.com/). If the font name is unrecognized, the text is rendered in `Arial`.
                  &quot;weight&quot;: 42, # The weight of the font. This field can have any value that is a multiple of `100` between `100` and `900`, inclusive. This range corresponds to the numerical values described in the CSS 2.1 Specification, [section 15.6](https://www.w3.org/TR/CSS21/fonts.html#font-boldness), with non-numerical values disallowed. The default value is `400` (&quot;normal&quot;). The font weight makes up just one component of the rendered font weight. The rendered weight is determined by a combination of the `weight` and the text style&#x27;s resolved `bold` value, after accounting for inheritance: * If the text is bold and the weight is less than `400`, the rendered weight is 400. * If the text is bold and the weight is greater than or equal to `400` but is less than `700`, the rendered weight is `700`. * If the weight is greater than or equal to `700`, the rendered weight is equal to the weight. * If the text is not bold, the rendered weight is equal to the weight.
                },
                &quot;underline&quot;: True or False, # Whether or not the text is underlined.
                &quot;smallCaps&quot;: True or False, # Whether or not the text is in small capital letters.
              },
              &quot;nestingLevel&quot;: 42, # The nesting level of this paragraph in the list.
              &quot;listId&quot;: &quot;A String&quot;, # The ID of the list this paragraph belongs to.
            },
            &quot;suggestedBulletChanges&quot;: { # The suggested changes to this paragraph&#x27;s bullet.
              &quot;a_key&quot;: { # A suggested change to a Bullet.
                &quot;bulletSuggestionState&quot;: { # A mask that indicates which of the fields on the base Bullet have been changed in this suggestion. For any field set to true, there is a new suggested value. # A mask that indicates which of the fields on the base Bullet have been changed in this suggestion.
                  &quot;nestingLevelSuggested&quot;: True or False, # Indicates if there was a suggested change to the nesting_level.
                  &quot;textStyleSuggestionState&quot;: { # A mask that indicates which of the fields on the base TextStyle have been changed in this suggestion. For any field set to true, there is a new suggested value. # A mask that indicates which of the fields in text style have been changed in this suggestion.
                    &quot;backgroundColorSuggested&quot;: True or False, # Indicates if there was a suggested change to background_color.
                    &quot;fontSizeSuggested&quot;: True or False, # Indicates if there was a suggested change to font_size.
                    &quot;boldSuggested&quot;: True or False, # Indicates if there was a suggested change to bold.
                    &quot;baselineOffsetSuggested&quot;: True or False, # Indicates if there was a suggested change to baseline_offset.
                    &quot;foregroundColorSuggested&quot;: True or False, # Indicates if there was a suggested change to foreground_color.
                    &quot;italicSuggested&quot;: True or False, # Indicates if there was a suggested change to italic.
                    &quot;linkSuggested&quot;: True or False, # Indicates if there was a suggested change to link.
                    &quot;underlineSuggested&quot;: True or False, # Indicates if there was a suggested change to underline.
                    &quot;weightedFontFamilySuggested&quot;: True or False, # Indicates if there was a suggested change to weighted_font_family.
                    &quot;smallCapsSuggested&quot;: True or False, # Indicates if there was a suggested change to small_caps.
                    &quot;strikethroughSuggested&quot;: True or False, # Indicates if there was a suggested change to strikethrough.
                  },
                  &quot;listIdSuggested&quot;: True or False, # Indicates if there was a suggested change to the list_id.
                },
                &quot;bullet&quot;: { # Describes the bullet of a paragraph. # A Bullet that only includes the changes made in this suggestion. This can be used along with the bullet_suggestion_state to see which fields have changed and their new values.
                  &quot;textStyle&quot;: { # Represents the styling that can be applied to text. Inherited text styles are represented as unset fields in this message. A text style&#x27;s parent depends on where the text style is defined: * The TextStyle of text in a Paragraph inherits from the paragraph&#x27;s corresponding named style type. * The TextStyle on a named style inherits from the normal text named style. * The TextStyle of the normal text named style inherits from the default text style in the Docs editor. * The TextStyle on a Paragraph element that is contained in a table may inherit its text style from the table style. If the text style does not inherit from a parent, unsetting fields will revert the style to a value matching the defaults in the Docs editor. # The paragraph specific text style applied to this bullet.
                    &quot;italic&quot;: True or False, # Whether or not the text is italicized.
                    &quot;baselineOffset&quot;: &quot;A String&quot;, # The text&#x27;s vertical offset from its normal position. Text with `SUPERSCRIPT` or `SUBSCRIPT` baseline offsets is automatically rendered in a smaller font size, computed based on the `font_size` field. The `font_size` itself is not affected by changes in this field.
                    &quot;bold&quot;: True or False, # Whether or not the text is rendered as bold.
                    &quot;fontSize&quot;: { # A magnitude in a single direction in the specified units. # The size of the text&#x27;s font.
                      &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                      &quot;magnitude&quot;: 3.14, # The magnitude.
                    },
                    &quot;foregroundColor&quot;: { # A color that can either be fully opaque or fully transparent. # The foreground color of the text. If set, the color is either an RGB color or transparent, depending on the `color` field.
                      &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                        &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                          &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                          &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                          &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                        },
                      },
                    },
                    &quot;backgroundColor&quot;: { # A color that can either be fully opaque or fully transparent. # The background color of the text. If set, the color is either an RGB color or transparent, depending on the `color` field.
                      &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                        &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                          &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                          &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                          &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                        },
                      },
                    },
                    &quot;link&quot;: { # A reference to another portion of a document or an external URL resource. # The hyperlink destination of the text. If unset, there is no link. Links are not inherited from parent text. Changing the link in an update request causes some other changes to the text style of the range: * When setting a link, the text foreground color will be updated to the default link color and the text will be underlined. If these fields are modified in the same request, those values will be used instead of the link defaults. * Setting a link on a text range that overlaps with an existing link will also update the existing link to point to the new URL. * Links are not settable on newline characters. As a result, setting a link on a text range that crosses a paragraph boundary, such as `&quot;ABC\n123&quot;`, will separate the newline character(s) into their own text runs. The link will be applied separately to the runs before and after the newline. * Removing a link will update the text style of the range to match the style of the preceding text (or the default text styles if the preceding text is another link) unless different styles are being set in the same request.
                      &quot;bookmarkId&quot;: &quot;A String&quot;, # The ID of a bookmark in this document.
                      &quot;url&quot;: &quot;A String&quot;, # An external URL.
                      &quot;headingId&quot;: &quot;A String&quot;, # The ID of a heading in this document.
                    },
                    &quot;strikethrough&quot;: True or False, # Whether or not the text is struck through.
                    &quot;weightedFontFamily&quot;: { # Represents a font family and weight of text. # The font family and rendered weight of the text. If an update request specifies values for both `weighted_font_family` and `bold`, the `weighted_font_family` is applied first, then `bold`. If `weighted_font_family#weight` is not set, it defaults to `400`. If `weighted_font_family` is set, then `weighted_font_family#font_family` must also be set with a non-empty value. Otherwise, a 400 bad request error is returned.
                      &quot;fontFamily&quot;: &quot;A String&quot;, # The font family of the text. The font family can be any font from the Font menu in Docs or from [Google Fonts] (https://fonts.google.com/). If the font name is unrecognized, the text is rendered in `Arial`.
                      &quot;weight&quot;: 42, # The weight of the font. This field can have any value that is a multiple of `100` between `100` and `900`, inclusive. This range corresponds to the numerical values described in the CSS 2.1 Specification, [section 15.6](https://www.w3.org/TR/CSS21/fonts.html#font-boldness), with non-numerical values disallowed. The default value is `400` (&quot;normal&quot;). The font weight makes up just one component of the rendered font weight. The rendered weight is determined by a combination of the `weight` and the text style&#x27;s resolved `bold` value, after accounting for inheritance: * If the text is bold and the weight is less than `400`, the rendered weight is 400. * If the text is bold and the weight is greater than or equal to `400` but is less than `700`, the rendered weight is `700`. * If the weight is greater than or equal to `700`, the rendered weight is equal to the weight. * If the text is not bold, the rendered weight is equal to the weight.
                    },
                    &quot;underline&quot;: True or False, # Whether or not the text is underlined.
                    &quot;smallCaps&quot;: True or False, # Whether or not the text is in small capital letters.
                  },
                  &quot;nestingLevel&quot;: 42, # The nesting level of this paragraph in the list.
                  &quot;listId&quot;: &quot;A String&quot;, # The ID of the list this paragraph belongs to.
                },
              },
            },
            &quot;suggestedPositionedObjectIds&quot;: { # The IDs of the positioned objects that are suggested to be attached to this paragraph, keyed by suggestion ID.
              &quot;a_key&quot;: { # A collection of object IDs.
                &quot;objectIds&quot;: [ # The object IDs.
                  &quot;A String&quot;,
                ],
              },
            },
            &quot;elements&quot;: [ # The content of the paragraph broken down into its component parts.
              { # A ParagraphElement describes content within a Paragraph.
                &quot;textRun&quot;: { # A ParagraphElement that represents a run of text that all has the same styling. # A text run paragraph element.
                  &quot;suggestedInsertionIds&quot;: [ # The suggested insertion IDs. A TextRun may have multiple insertion IDs if it is a nested suggested change. If empty, then this is not a suggested insertion.
                    &quot;A String&quot;,
                  ],
                  &quot;content&quot;: &quot;A String&quot;, # The text of this run. Any non-text elements in the run are replaced with the Unicode character U+E907.
                  &quot;textStyle&quot;: { # Represents the styling that can be applied to text. Inherited text styles are represented as unset fields in this message. A text style&#x27;s parent depends on where the text style is defined: * The TextStyle of text in a Paragraph inherits from the paragraph&#x27;s corresponding named style type. * The TextStyle on a named style inherits from the normal text named style. * The TextStyle of the normal text named style inherits from the default text style in the Docs editor. * The TextStyle on a Paragraph element that is contained in a table may inherit its text style from the table style. If the text style does not inherit from a parent, unsetting fields will revert the style to a value matching the defaults in the Docs editor. # The text style of this run.
                    &quot;italic&quot;: True or False, # Whether or not the text is italicized.
                    &quot;baselineOffset&quot;: &quot;A String&quot;, # The text&#x27;s vertical offset from its normal position. Text with `SUPERSCRIPT` or `SUBSCRIPT` baseline offsets is automatically rendered in a smaller font size, computed based on the `font_size` field. The `font_size` itself is not affected by changes in this field.
                    &quot;bold&quot;: True or False, # Whether or not the text is rendered as bold.
                    &quot;fontSize&quot;: { # A magnitude in a single direction in the specified units. # The size of the text&#x27;s font.
                      &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                      &quot;magnitude&quot;: 3.14, # The magnitude.
                    },
                    &quot;foregroundColor&quot;: { # A color that can either be fully opaque or fully transparent. # The foreground color of the text. If set, the color is either an RGB color or transparent, depending on the `color` field.
                      &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                        &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                          &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                          &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                          &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                        },
                      },
                    },
                    &quot;backgroundColor&quot;: { # A color that can either be fully opaque or fully transparent. # The background color of the text. If set, the color is either an RGB color or transparent, depending on the `color` field.
                      &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                        &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                          &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                          &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                          &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                        },
                      },
                    },
                    &quot;link&quot;: { # A reference to another portion of a document or an external URL resource. # The hyperlink destination of the text. If unset, there is no link. Links are not inherited from parent text. Changing the link in an update request causes some other changes to the text style of the range: * When setting a link, the text foreground color will be updated to the default link color and the text will be underlined. If these fields are modified in the same request, those values will be used instead of the link defaults. * Setting a link on a text range that overlaps with an existing link will also update the existing link to point to the new URL. * Links are not settable on newline characters. As a result, setting a link on a text range that crosses a paragraph boundary, such as `&quot;ABC\n123&quot;`, will separate the newline character(s) into their own text runs. The link will be applied separately to the runs before and after the newline. * Removing a link will update the text style of the range to match the style of the preceding text (or the default text styles if the preceding text is another link) unless different styles are being set in the same request.
                      &quot;bookmarkId&quot;: &quot;A String&quot;, # The ID of a bookmark in this document.
                      &quot;url&quot;: &quot;A String&quot;, # An external URL.
                      &quot;headingId&quot;: &quot;A String&quot;, # The ID of a heading in this document.
                    },
                    &quot;strikethrough&quot;: True or False, # Whether or not the text is struck through.
                    &quot;weightedFontFamily&quot;: { # Represents a font family and weight of text. # The font family and rendered weight of the text. If an update request specifies values for both `weighted_font_family` and `bold`, the `weighted_font_family` is applied first, then `bold`. If `weighted_font_family#weight` is not set, it defaults to `400`. If `weighted_font_family` is set, then `weighted_font_family#font_family` must also be set with a non-empty value. Otherwise, a 400 bad request error is returned.
                      &quot;fontFamily&quot;: &quot;A String&quot;, # The font family of the text. The font family can be any font from the Font menu in Docs or from [Google Fonts] (https://fonts.google.com/). If the font name is unrecognized, the text is rendered in `Arial`.
                      &quot;weight&quot;: 42, # The weight of the font. This field can have any value that is a multiple of `100` between `100` and `900`, inclusive. This range corresponds to the numerical values described in the CSS 2.1 Specification, [section 15.6](https://www.w3.org/TR/CSS21/fonts.html#font-boldness), with non-numerical values disallowed. The default value is `400` (&quot;normal&quot;). The font weight makes up just one component of the rendered font weight. The rendered weight is determined by a combination of the `weight` and the text style&#x27;s resolved `bold` value, after accounting for inheritance: * If the text is bold and the weight is less than `400`, the rendered weight is 400. * If the text is bold and the weight is greater than or equal to `400` but is less than `700`, the rendered weight is `700`. * If the weight is greater than or equal to `700`, the rendered weight is equal to the weight. * If the text is not bold, the rendered weight is equal to the weight.
                    },
                    &quot;underline&quot;: True or False, # Whether or not the text is underlined.
                    &quot;smallCaps&quot;: True or False, # Whether or not the text is in small capital letters.
                  },
                  &quot;suggestedTextStyleChanges&quot;: { # The suggested text style changes to this run, keyed by suggestion ID.
                    &quot;a_key&quot;: { # A suggested change to a TextStyle.
                      &quot;textStyleSuggestionState&quot;: { # A mask that indicates which of the fields on the base TextStyle have been changed in this suggestion. For any field set to true, there is a new suggested value. # A mask that indicates which of the fields on the base TextStyle have been changed in this suggestion.
                        &quot;backgroundColorSuggested&quot;: True or False, # Indicates if there was a suggested change to background_color.
                        &quot;fontSizeSuggested&quot;: True or False, # Indicates if there was a suggested change to font_size.
                        &quot;boldSuggested&quot;: True or False, # Indicates if there was a suggested change to bold.
                        &quot;baselineOffsetSuggested&quot;: True or False, # Indicates if there was a suggested change to baseline_offset.
                        &quot;foregroundColorSuggested&quot;: True or False, # Indicates if there was a suggested change to foreground_color.
                        &quot;italicSuggested&quot;: True or False, # Indicates if there was a suggested change to italic.
                        &quot;linkSuggested&quot;: True or False, # Indicates if there was a suggested change to link.
                        &quot;underlineSuggested&quot;: True or False, # Indicates if there was a suggested change to underline.
                        &quot;weightedFontFamilySuggested&quot;: True or False, # Indicates if there was a suggested change to weighted_font_family.
                        &quot;smallCapsSuggested&quot;: True or False, # Indicates if there was a suggested change to small_caps.
                        &quot;strikethroughSuggested&quot;: True or False, # Indicates if there was a suggested change to strikethrough.
                      },
                      &quot;textStyle&quot;: { # Represents the styling that can be applied to text. Inherited text styles are represented as unset fields in this message. A text style&#x27;s parent depends on where the text style is defined: * The TextStyle of text in a Paragraph inherits from the paragraph&#x27;s corresponding named style type. * The TextStyle on a named style inherits from the normal text named style. * The TextStyle of the normal text named style inherits from the default text style in the Docs editor. * The TextStyle on a Paragraph element that is contained in a table may inherit its text style from the table style. If the text style does not inherit from a parent, unsetting fields will revert the style to a value matching the defaults in the Docs editor. # A TextStyle that only includes the changes made in this suggestion. This can be used along with the text_style_suggestion_state to see which fields have changed and their new values.
                        &quot;italic&quot;: True or False, # Whether or not the text is italicized.
                        &quot;baselineOffset&quot;: &quot;A String&quot;, # The text&#x27;s vertical offset from its normal position. Text with `SUPERSCRIPT` or `SUBSCRIPT` baseline offsets is automatically rendered in a smaller font size, computed based on the `font_size` field. The `font_size` itself is not affected by changes in this field.
                        &quot;bold&quot;: True or False, # Whether or not the text is rendered as bold.
                        &quot;fontSize&quot;: { # A magnitude in a single direction in the specified units. # The size of the text&#x27;s font.
                          &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                          &quot;magnitude&quot;: 3.14, # The magnitude.
                        },
                        &quot;foregroundColor&quot;: { # A color that can either be fully opaque or fully transparent. # The foreground color of the text. If set, the color is either an RGB color or transparent, depending on the `color` field.
                          &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                            &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                              &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                              &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                              &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                            },
                          },
                        },
                        &quot;backgroundColor&quot;: { # A color that can either be fully opaque or fully transparent. # The background color of the text. If set, the color is either an RGB color or transparent, depending on the `color` field.
                          &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                            &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                              &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                              &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                              &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                            },
                          },
                        },
                        &quot;link&quot;: { # A reference to another portion of a document or an external URL resource. # The hyperlink destination of the text. If unset, there is no link. Links are not inherited from parent text. Changing the link in an update request causes some other changes to the text style of the range: * When setting a link, the text foreground color will be updated to the default link color and the text will be underlined. If these fields are modified in the same request, those values will be used instead of the link defaults. * Setting a link on a text range that overlaps with an existing link will also update the existing link to point to the new URL. * Links are not settable on newline characters. As a result, setting a link on a text range that crosses a paragraph boundary, such as `&quot;ABC\n123&quot;`, will separate the newline character(s) into their own text runs. The link will be applied separately to the runs before and after the newline. * Removing a link will update the text style of the range to match the style of the preceding text (or the default text styles if the preceding text is another link) unless different styles are being set in the same request.
                          &quot;bookmarkId&quot;: &quot;A String&quot;, # The ID of a bookmark in this document.
                          &quot;url&quot;: &quot;A String&quot;, # An external URL.
                          &quot;headingId&quot;: &quot;A String&quot;, # The ID of a heading in this document.
                        },
                        &quot;strikethrough&quot;: True or False, # Whether or not the text is struck through.
                        &quot;weightedFontFamily&quot;: { # Represents a font family and weight of text. # The font family and rendered weight of the text. If an update request specifies values for both `weighted_font_family` and `bold`, the `weighted_font_family` is applied first, then `bold`. If `weighted_font_family#weight` is not set, it defaults to `400`. If `weighted_font_family` is set, then `weighted_font_family#font_family` must also be set with a non-empty value. Otherwise, a 400 bad request error is returned.
                          &quot;fontFamily&quot;: &quot;A String&quot;, # The font family of the text. The font family can be any font from the Font menu in Docs or from [Google Fonts] (https://fonts.google.com/). If the font name is unrecognized, the text is rendered in `Arial`.
                          &quot;weight&quot;: 42, # The weight of the font. This field can have any value that is a multiple of `100` between `100` and `900`, inclusive. This range corresponds to the numerical values described in the CSS 2.1 Specification, [section 15.6](https://www.w3.org/TR/CSS21/fonts.html#font-boldness), with non-numerical values disallowed. The default value is `400` (&quot;normal&quot;). The font weight makes up just one component of the rendered font weight. The rendered weight is determined by a combination of the `weight` and the text style&#x27;s resolved `bold` value, after accounting for inheritance: * If the text is bold and the weight is less than `400`, the rendered weight is 400. * If the text is bold and the weight is greater than or equal to `400` but is less than `700`, the rendered weight is `700`. * If the weight is greater than or equal to `700`, the rendered weight is equal to the weight. * If the text is not bold, the rendered weight is equal to the weight.
                        },
                        &quot;underline&quot;: True or False, # Whether or not the text is underlined.
                        &quot;smallCaps&quot;: True or False, # Whether or not the text is in small capital letters.
                      },
                    },
                  },
                  &quot;suggestedDeletionIds&quot;: [ # The suggested deletion IDs. If empty, then there are no suggested deletions of this content.
                    &quot;A String&quot;,
                  ],
                },
                &quot;pageBreak&quot;: { # A ParagraphElement representing a page break. A page break makes the subsequent text start at the top of the next page. # A page break paragraph element.
                  &quot;suggestedInsertionIds&quot;: [ # The suggested insertion IDs. A PageBreak may have multiple insertion IDs if it is a nested suggested change. If empty, then this is not a suggested insertion.
                    &quot;A String&quot;,
                  ],
                  &quot;textStyle&quot;: { # Represents the styling that can be applied to text. Inherited text styles are represented as unset fields in this message. A text style&#x27;s parent depends on where the text style is defined: * The TextStyle of text in a Paragraph inherits from the paragraph&#x27;s corresponding named style type. * The TextStyle on a named style inherits from the normal text named style. * The TextStyle of the normal text named style inherits from the default text style in the Docs editor. * The TextStyle on a Paragraph element that is contained in a table may inherit its text style from the table style. If the text style does not inherit from a parent, unsetting fields will revert the style to a value matching the defaults in the Docs editor. # The text style of this PageBreak. Similar to text content, like text runs and footnote references, the text style of a page break can affect content layout as well as the styling of text inserted adjacent to it.
                    &quot;italic&quot;: True or False, # Whether or not the text is italicized.
                    &quot;baselineOffset&quot;: &quot;A String&quot;, # The text&#x27;s vertical offset from its normal position. Text with `SUPERSCRIPT` or `SUBSCRIPT` baseline offsets is automatically rendered in a smaller font size, computed based on the `font_size` field. The `font_size` itself is not affected by changes in this field.
                    &quot;bold&quot;: True or False, # Whether or not the text is rendered as bold.
                    &quot;fontSize&quot;: { # A magnitude in a single direction in the specified units. # The size of the text&#x27;s font.
                      &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                      &quot;magnitude&quot;: 3.14, # The magnitude.
                    },
                    &quot;foregroundColor&quot;: { # A color that can either be fully opaque or fully transparent. # The foreground color of the text. If set, the color is either an RGB color or transparent, depending on the `color` field.
                      &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                        &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                          &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                          &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                          &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                        },
                      },
                    },
                    &quot;backgroundColor&quot;: { # A color that can either be fully opaque or fully transparent. # The background color of the text. If set, the color is either an RGB color or transparent, depending on the `color` field.
                      &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                        &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                          &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                          &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                          &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                        },
                      },
                    },
                    &quot;link&quot;: { # A reference to another portion of a document or an external URL resource. # The hyperlink destination of the text. If unset, there is no link. Links are not inherited from parent text. Changing the link in an update request causes some other changes to the text style of the range: * When setting a link, the text foreground color will be updated to the default link color and the text will be underlined. If these fields are modified in the same request, those values will be used instead of the link defaults. * Setting a link on a text range that overlaps with an existing link will also update the existing link to point to the new URL. * Links are not settable on newline characters. As a result, setting a link on a text range that crosses a paragraph boundary, such as `&quot;ABC\n123&quot;`, will separate the newline character(s) into their own text runs. The link will be applied separately to the runs before and after the newline. * Removing a link will update the text style of the range to match the style of the preceding text (or the default text styles if the preceding text is another link) unless different styles are being set in the same request.
                      &quot;bookmarkId&quot;: &quot;A String&quot;, # The ID of a bookmark in this document.
                      &quot;url&quot;: &quot;A String&quot;, # An external URL.
                      &quot;headingId&quot;: &quot;A String&quot;, # The ID of a heading in this document.
                    },
                    &quot;strikethrough&quot;: True or False, # Whether or not the text is struck through.
                    &quot;weightedFontFamily&quot;: { # Represents a font family and weight of text. # The font family and rendered weight of the text. If an update request specifies values for both `weighted_font_family` and `bold`, the `weighted_font_family` is applied first, then `bold`. If `weighted_font_family#weight` is not set, it defaults to `400`. If `weighted_font_family` is set, then `weighted_font_family#font_family` must also be set with a non-empty value. Otherwise, a 400 bad request error is returned.
                      &quot;fontFamily&quot;: &quot;A String&quot;, # The font family of the text. The font family can be any font from the Font menu in Docs or from [Google Fonts] (https://fonts.google.com/). If the font name is unrecognized, the text is rendered in `Arial`.
                      &quot;weight&quot;: 42, # The weight of the font. This field can have any value that is a multiple of `100` between `100` and `900`, inclusive. This range corresponds to the numerical values described in the CSS 2.1 Specification, [section 15.6](https://www.w3.org/TR/CSS21/fonts.html#font-boldness), with non-numerical values disallowed. The default value is `400` (&quot;normal&quot;). The font weight makes up just one component of the rendered font weight. The rendered weight is determined by a combination of the `weight` and the text style&#x27;s resolved `bold` value, after accounting for inheritance: * If the text is bold and the weight is less than `400`, the rendered weight is 400. * If the text is bold and the weight is greater than or equal to `400` but is less than `700`, the rendered weight is `700`. * If the weight is greater than or equal to `700`, the rendered weight is equal to the weight. * If the text is not bold, the rendered weight is equal to the weight.
                    },
                    &quot;underline&quot;: True or False, # Whether or not the text is underlined.
                    &quot;smallCaps&quot;: True or False, # Whether or not the text is in small capital letters.
                  },
                  &quot;suggestedTextStyleChanges&quot;: { # The suggested text style changes to this PageBreak, keyed by suggestion ID.
                    &quot;a_key&quot;: { # A suggested change to a TextStyle.
                      &quot;textStyleSuggestionState&quot;: { # A mask that indicates which of the fields on the base TextStyle have been changed in this suggestion. For any field set to true, there is a new suggested value. # A mask that indicates which of the fields on the base TextStyle have been changed in this suggestion.
                        &quot;backgroundColorSuggested&quot;: True or False, # Indicates if there was a suggested change to background_color.
                        &quot;fontSizeSuggested&quot;: True or False, # Indicates if there was a suggested change to font_size.
                        &quot;boldSuggested&quot;: True or False, # Indicates if there was a suggested change to bold.
                        &quot;baselineOffsetSuggested&quot;: True or False, # Indicates if there was a suggested change to baseline_offset.
                        &quot;foregroundColorSuggested&quot;: True or False, # Indicates if there was a suggested change to foreground_color.
                        &quot;italicSuggested&quot;: True or False, # Indicates if there was a suggested change to italic.
                        &quot;linkSuggested&quot;: True or False, # Indicates if there was a suggested change to link.
                        &quot;underlineSuggested&quot;: True or False, # Indicates if there was a suggested change to underline.
                        &quot;weightedFontFamilySuggested&quot;: True or False, # Indicates if there was a suggested change to weighted_font_family.
                        &quot;smallCapsSuggested&quot;: True or False, # Indicates if there was a suggested change to small_caps.
                        &quot;strikethroughSuggested&quot;: True or False, # Indicates if there was a suggested change to strikethrough.
                      },
                      &quot;textStyle&quot;: { # Represents the styling that can be applied to text. Inherited text styles are represented as unset fields in this message. A text style&#x27;s parent depends on where the text style is defined: * The TextStyle of text in a Paragraph inherits from the paragraph&#x27;s corresponding named style type. * The TextStyle on a named style inherits from the normal text named style. * The TextStyle of the normal text named style inherits from the default text style in the Docs editor. * The TextStyle on a Paragraph element that is contained in a table may inherit its text style from the table style. If the text style does not inherit from a parent, unsetting fields will revert the style to a value matching the defaults in the Docs editor. # A TextStyle that only includes the changes made in this suggestion. This can be used along with the text_style_suggestion_state to see which fields have changed and their new values.
                        &quot;italic&quot;: True or False, # Whether or not the text is italicized.
                        &quot;baselineOffset&quot;: &quot;A String&quot;, # The text&#x27;s vertical offset from its normal position. Text with `SUPERSCRIPT` or `SUBSCRIPT` baseline offsets is automatically rendered in a smaller font size, computed based on the `font_size` field. The `font_size` itself is not affected by changes in this field.
                        &quot;bold&quot;: True or False, # Whether or not the text is rendered as bold.
                        &quot;fontSize&quot;: { # A magnitude in a single direction in the specified units. # The size of the text&#x27;s font.
                          &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                          &quot;magnitude&quot;: 3.14, # The magnitude.
                        },
                        &quot;foregroundColor&quot;: { # A color that can either be fully opaque or fully transparent. # The foreground color of the text. If set, the color is either an RGB color or transparent, depending on the `color` field.
                          &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                            &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                              &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                              &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                              &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                            },
                          },
                        },
                        &quot;backgroundColor&quot;: { # A color that can either be fully opaque or fully transparent. # The background color of the text. If set, the color is either an RGB color or transparent, depending on the `color` field.
                          &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                            &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                              &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                              &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                              &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                            },
                          },
                        },
                        &quot;link&quot;: { # A reference to another portion of a document or an external URL resource. # The hyperlink destination of the text. If unset, there is no link. Links are not inherited from parent text. Changing the link in an update request causes some other changes to the text style of the range: * When setting a link, the text foreground color will be updated to the default link color and the text will be underlined. If these fields are modified in the same request, those values will be used instead of the link defaults. * Setting a link on a text range that overlaps with an existing link will also update the existing link to point to the new URL. * Links are not settable on newline characters. As a result, setting a link on a text range that crosses a paragraph boundary, such as `&quot;ABC\n123&quot;`, will separate the newline character(s) into their own text runs. The link will be applied separately to the runs before and after the newline. * Removing a link will update the text style of the range to match the style of the preceding text (or the default text styles if the preceding text is another link) unless different styles are being set in the same request.
                          &quot;bookmarkId&quot;: &quot;A String&quot;, # The ID of a bookmark in this document.
                          &quot;url&quot;: &quot;A String&quot;, # An external URL.
                          &quot;headingId&quot;: &quot;A String&quot;, # The ID of a heading in this document.
                        },
                        &quot;strikethrough&quot;: True or False, # Whether or not the text is struck through.
                        &quot;weightedFontFamily&quot;: { # Represents a font family and weight of text. # The font family and rendered weight of the text. If an update request specifies values for both `weighted_font_family` and `bold`, the `weighted_font_family` is applied first, then `bold`. If `weighted_font_family#weight` is not set, it defaults to `400`. If `weighted_font_family` is set, then `weighted_font_family#font_family` must also be set with a non-empty value. Otherwise, a 400 bad request error is returned.
                          &quot;fontFamily&quot;: &quot;A String&quot;, # The font family of the text. The font family can be any font from the Font menu in Docs or from [Google Fonts] (https://fonts.google.com/). If the font name is unrecognized, the text is rendered in `Arial`.
                          &quot;weight&quot;: 42, # The weight of the font. This field can have any value that is a multiple of `100` between `100` and `900`, inclusive. This range corresponds to the numerical values described in the CSS 2.1 Specification, [section 15.6](https://www.w3.org/TR/CSS21/fonts.html#font-boldness), with non-numerical values disallowed. The default value is `400` (&quot;normal&quot;). The font weight makes up just one component of the rendered font weight. The rendered weight is determined by a combination of the `weight` and the text style&#x27;s resolved `bold` value, after accounting for inheritance: * If the text is bold and the weight is less than `400`, the rendered weight is 400. * If the text is bold and the weight is greater than or equal to `400` but is less than `700`, the rendered weight is `700`. * If the weight is greater than or equal to `700`, the rendered weight is equal to the weight. * If the text is not bold, the rendered weight is equal to the weight.
                        },
                        &quot;underline&quot;: True or False, # Whether or not the text is underlined.
                        &quot;smallCaps&quot;: True or False, # Whether or not the text is in small capital letters.
                      },
                    },
                  },
                  &quot;suggestedDeletionIds&quot;: [ # The suggested deletion IDs. If empty, then there are no suggested deletions of this content.
                    &quot;A String&quot;,
                  ],
                },
                &quot;horizontalRule&quot;: { # A ParagraphElement representing a horizontal line. # A horizontal rule paragraph element.
                  &quot;suggestedInsertionIds&quot;: [ # The suggested insertion IDs. A HorizontalRule may have multiple insertion IDs if it is a nested suggested change. If empty, then this is not a suggested insertion.
                    &quot;A String&quot;,
                  ],
                  &quot;suggestedTextStyleChanges&quot;: { # The suggested text style changes to this HorizontalRule, keyed by suggestion ID.
                    &quot;a_key&quot;: { # A suggested change to a TextStyle.
                      &quot;textStyleSuggestionState&quot;: { # A mask that indicates which of the fields on the base TextStyle have been changed in this suggestion. For any field set to true, there is a new suggested value. # A mask that indicates which of the fields on the base TextStyle have been changed in this suggestion.
                        &quot;backgroundColorSuggested&quot;: True or False, # Indicates if there was a suggested change to background_color.
                        &quot;fontSizeSuggested&quot;: True or False, # Indicates if there was a suggested change to font_size.
                        &quot;boldSuggested&quot;: True or False, # Indicates if there was a suggested change to bold.
                        &quot;baselineOffsetSuggested&quot;: True or False, # Indicates if there was a suggested change to baseline_offset.
                        &quot;foregroundColorSuggested&quot;: True or False, # Indicates if there was a suggested change to foreground_color.
                        &quot;italicSuggested&quot;: True or False, # Indicates if there was a suggested change to italic.
                        &quot;linkSuggested&quot;: True or False, # Indicates if there was a suggested change to link.
                        &quot;underlineSuggested&quot;: True or False, # Indicates if there was a suggested change to underline.
                        &quot;weightedFontFamilySuggested&quot;: True or False, # Indicates if there was a suggested change to weighted_font_family.
                        &quot;smallCapsSuggested&quot;: True or False, # Indicates if there was a suggested change to small_caps.
                        &quot;strikethroughSuggested&quot;: True or False, # Indicates if there was a suggested change to strikethrough.
                      },
                      &quot;textStyle&quot;: { # Represents the styling that can be applied to text. Inherited text styles are represented as unset fields in this message. A text style&#x27;s parent depends on where the text style is defined: * The TextStyle of text in a Paragraph inherits from the paragraph&#x27;s corresponding named style type. * The TextStyle on a named style inherits from the normal text named style. * The TextStyle of the normal text named style inherits from the default text style in the Docs editor. * The TextStyle on a Paragraph element that is contained in a table may inherit its text style from the table style. If the text style does not inherit from a parent, unsetting fields will revert the style to a value matching the defaults in the Docs editor. # A TextStyle that only includes the changes made in this suggestion. This can be used along with the text_style_suggestion_state to see which fields have changed and their new values.
                        &quot;italic&quot;: True or False, # Whether or not the text is italicized.
                        &quot;baselineOffset&quot;: &quot;A String&quot;, # The text&#x27;s vertical offset from its normal position. Text with `SUPERSCRIPT` or `SUBSCRIPT` baseline offsets is automatically rendered in a smaller font size, computed based on the `font_size` field. The `font_size` itself is not affected by changes in this field.
                        &quot;bold&quot;: True or False, # Whether or not the text is rendered as bold.
                        &quot;fontSize&quot;: { # A magnitude in a single direction in the specified units. # The size of the text&#x27;s font.
                          &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                          &quot;magnitude&quot;: 3.14, # The magnitude.
                        },
                        &quot;foregroundColor&quot;: { # A color that can either be fully opaque or fully transparent. # The foreground color of the text. If set, the color is either an RGB color or transparent, depending on the `color` field.
                          &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                            &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                              &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                              &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                              &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                            },
                          },
                        },
                        &quot;backgroundColor&quot;: { # A color that can either be fully opaque or fully transparent. # The background color of the text. If set, the color is either an RGB color or transparent, depending on the `color` field.
                          &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                            &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                              &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                              &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                              &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                            },
                          },
                        },
                        &quot;link&quot;: { # A reference to another portion of a document or an external URL resource. # The hyperlink destination of the text. If unset, there is no link. Links are not inherited from parent text. Changing the link in an update request causes some other changes to the text style of the range: * When setting a link, the text foreground color will be updated to the default link color and the text will be underlined. If these fields are modified in the same request, those values will be used instead of the link defaults. * Setting a link on a text range that overlaps with an existing link will also update the existing link to point to the new URL. * Links are not settable on newline characters. As a result, setting a link on a text range that crosses a paragraph boundary, such as `&quot;ABC\n123&quot;`, will separate the newline character(s) into their own text runs. The link will be applied separately to the runs before and after the newline. * Removing a link will update the text style of the range to match the style of the preceding text (or the default text styles if the preceding text is another link) unless different styles are being set in the same request.
                          &quot;bookmarkId&quot;: &quot;A String&quot;, # The ID of a bookmark in this document.
                          &quot;url&quot;: &quot;A String&quot;, # An external URL.
                          &quot;headingId&quot;: &quot;A String&quot;, # The ID of a heading in this document.
                        },
                        &quot;strikethrough&quot;: True or False, # Whether or not the text is struck through.
                        &quot;weightedFontFamily&quot;: { # Represents a font family and weight of text. # The font family and rendered weight of the text. If an update request specifies values for both `weighted_font_family` and `bold`, the `weighted_font_family` is applied first, then `bold`. If `weighted_font_family#weight` is not set, it defaults to `400`. If `weighted_font_family` is set, then `weighted_font_family#font_family` must also be set with a non-empty value. Otherwise, a 400 bad request error is returned.
                          &quot;fontFamily&quot;: &quot;A String&quot;, # The font family of the text. The font family can be any font from the Font menu in Docs or from [Google Fonts] (https://fonts.google.com/). If the font name is unrecognized, the text is rendered in `Arial`.
                          &quot;weight&quot;: 42, # The weight of the font. This field can have any value that is a multiple of `100` between `100` and `900`, inclusive. This range corresponds to the numerical values described in the CSS 2.1 Specification, [section 15.6](https://www.w3.org/TR/CSS21/fonts.html#font-boldness), with non-numerical values disallowed. The default value is `400` (&quot;normal&quot;). The font weight makes up just one component of the rendered font weight. The rendered weight is determined by a combination of the `weight` and the text style&#x27;s resolved `bold` value, after accounting for inheritance: * If the text is bold and the weight is less than `400`, the rendered weight is 400. * If the text is bold and the weight is greater than or equal to `400` but is less than `700`, the rendered weight is `700`. * If the weight is greater than or equal to `700`, the rendered weight is equal to the weight. * If the text is not bold, the rendered weight is equal to the weight.
                        },
                        &quot;underline&quot;: True or False, # Whether or not the text is underlined.
                        &quot;smallCaps&quot;: True or False, # Whether or not the text is in small capital letters.
                      },
                    },
                  },
                  &quot;suggestedDeletionIds&quot;: [ # The suggested deletion IDs. If empty, then there are no suggested deletions of this content.
                    &quot;A String&quot;,
                  ],
                  &quot;textStyle&quot;: { # Represents the styling that can be applied to text. Inherited text styles are represented as unset fields in this message. A text style&#x27;s parent depends on where the text style is defined: * The TextStyle of text in a Paragraph inherits from the paragraph&#x27;s corresponding named style type. * The TextStyle on a named style inherits from the normal text named style. * The TextStyle of the normal text named style inherits from the default text style in the Docs editor. * The TextStyle on a Paragraph element that is contained in a table may inherit its text style from the table style. If the text style does not inherit from a parent, unsetting fields will revert the style to a value matching the defaults in the Docs editor. # The text style of this HorizontalRule. Similar to text content, like text runs and footnote references, the text style of a horizontal rule can affect content layout as well as the styling of text inserted adjacent to it.
                    &quot;italic&quot;: True or False, # Whether or not the text is italicized.
                    &quot;baselineOffset&quot;: &quot;A String&quot;, # The text&#x27;s vertical offset from its normal position. Text with `SUPERSCRIPT` or `SUBSCRIPT` baseline offsets is automatically rendered in a smaller font size, computed based on the `font_size` field. The `font_size` itself is not affected by changes in this field.
                    &quot;bold&quot;: True or False, # Whether or not the text is rendered as bold.
                    &quot;fontSize&quot;: { # A magnitude in a single direction in the specified units. # The size of the text&#x27;s font.
                      &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                      &quot;magnitude&quot;: 3.14, # The magnitude.
                    },
                    &quot;foregroundColor&quot;: { # A color that can either be fully opaque or fully transparent. # The foreground color of the text. If set, the color is either an RGB color or transparent, depending on the `color` field.
                      &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                        &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                          &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                          &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                          &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                        },
                      },
                    },
                    &quot;backgroundColor&quot;: { # A color that can either be fully opaque or fully transparent. # The background color of the text. If set, the color is either an RGB color or transparent, depending on the `color` field.
                      &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                        &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                          &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                          &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                          &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                        },
                      },
                    },
                    &quot;link&quot;: { # A reference to another portion of a document or an external URL resource. # The hyperlink destination of the text. If unset, there is no link. Links are not inherited from parent text. Changing the link in an update request causes some other changes to the text style of the range: * When setting a link, the text foreground color will be updated to the default link color and the text will be underlined. If these fields are modified in the same request, those values will be used instead of the link defaults. * Setting a link on a text range that overlaps with an existing link will also update the existing link to point to the new URL. * Links are not settable on newline characters. As a result, setting a link on a text range that crosses a paragraph boundary, such as `&quot;ABC\n123&quot;`, will separate the newline character(s) into their own text runs. The link will be applied separately to the runs before and after the newline. * Removing a link will update the text style of the range to match the style of the preceding text (or the default text styles if the preceding text is another link) unless different styles are being set in the same request.
                      &quot;bookmarkId&quot;: &quot;A String&quot;, # The ID of a bookmark in this document.
                      &quot;url&quot;: &quot;A String&quot;, # An external URL.
                      &quot;headingId&quot;: &quot;A String&quot;, # The ID of a heading in this document.
                    },
                    &quot;strikethrough&quot;: True or False, # Whether or not the text is struck through.
                    &quot;weightedFontFamily&quot;: { # Represents a font family and weight of text. # The font family and rendered weight of the text. If an update request specifies values for both `weighted_font_family` and `bold`, the `weighted_font_family` is applied first, then `bold`. If `weighted_font_family#weight` is not set, it defaults to `400`. If `weighted_font_family` is set, then `weighted_font_family#font_family` must also be set with a non-empty value. Otherwise, a 400 bad request error is returned.
                      &quot;fontFamily&quot;: &quot;A String&quot;, # The font family of the text. The font family can be any font from the Font menu in Docs or from [Google Fonts] (https://fonts.google.com/). If the font name is unrecognized, the text is rendered in `Arial`.
                      &quot;weight&quot;: 42, # The weight of the font. This field can have any value that is a multiple of `100` between `100` and `900`, inclusive. This range corresponds to the numerical values described in the CSS 2.1 Specification, [section 15.6](https://www.w3.org/TR/CSS21/fonts.html#font-boldness), with non-numerical values disallowed. The default value is `400` (&quot;normal&quot;). The font weight makes up just one component of the rendered font weight. The rendered weight is determined by a combination of the `weight` and the text style&#x27;s resolved `bold` value, after accounting for inheritance: * If the text is bold and the weight is less than `400`, the rendered weight is 400. * If the text is bold and the weight is greater than or equal to `400` but is less than `700`, the rendered weight is `700`. * If the weight is greater than or equal to `700`, the rendered weight is equal to the weight. * If the text is not bold, the rendered weight is equal to the weight.
                    },
                    &quot;underline&quot;: True or False, # Whether or not the text is underlined.
                    &quot;smallCaps&quot;: True or False, # Whether or not the text is in small capital letters.
                  },
                },
                &quot;autoText&quot;: { # A ParagraphElement representing a spot in the text that is dynamically replaced with content that can change over time, like a page number. # An auto text paragraph element.
                  &quot;suggestedDeletionIds&quot;: [ # The suggested deletion IDs. If empty, then there are no suggested deletions of this content.
                    &quot;A String&quot;,
                  ],
                  &quot;suggestedInsertionIds&quot;: [ # The suggested insertion IDs. An AutoText may have multiple insertion IDs if it is a nested suggested change. If empty, then this is not a suggested insertion.
                    &quot;A String&quot;,
                  ],
                  &quot;suggestedTextStyleChanges&quot;: { # The suggested text style changes to this AutoText, keyed by suggestion ID.
                    &quot;a_key&quot;: { # A suggested change to a TextStyle.
                      &quot;textStyleSuggestionState&quot;: { # A mask that indicates which of the fields on the base TextStyle have been changed in this suggestion. For any field set to true, there is a new suggested value. # A mask that indicates which of the fields on the base TextStyle have been changed in this suggestion.
                        &quot;backgroundColorSuggested&quot;: True or False, # Indicates if there was a suggested change to background_color.
                        &quot;fontSizeSuggested&quot;: True or False, # Indicates if there was a suggested change to font_size.
                        &quot;boldSuggested&quot;: True or False, # Indicates if there was a suggested change to bold.
                        &quot;baselineOffsetSuggested&quot;: True or False, # Indicates if there was a suggested change to baseline_offset.
                        &quot;foregroundColorSuggested&quot;: True or False, # Indicates if there was a suggested change to foreground_color.
                        &quot;italicSuggested&quot;: True or False, # Indicates if there was a suggested change to italic.
                        &quot;linkSuggested&quot;: True or False, # Indicates if there was a suggested change to link.
                        &quot;underlineSuggested&quot;: True or False, # Indicates if there was a suggested change to underline.
                        &quot;weightedFontFamilySuggested&quot;: True or False, # Indicates if there was a suggested change to weighted_font_family.
                        &quot;smallCapsSuggested&quot;: True or False, # Indicates if there was a suggested change to small_caps.
                        &quot;strikethroughSuggested&quot;: True or False, # Indicates if there was a suggested change to strikethrough.
                      },
                      &quot;textStyle&quot;: { # Represents the styling that can be applied to text. Inherited text styles are represented as unset fields in this message. A text style&#x27;s parent depends on where the text style is defined: * The TextStyle of text in a Paragraph inherits from the paragraph&#x27;s corresponding named style type. * The TextStyle on a named style inherits from the normal text named style. * The TextStyle of the normal text named style inherits from the default text style in the Docs editor. * The TextStyle on a Paragraph element that is contained in a table may inherit its text style from the table style. If the text style does not inherit from a parent, unsetting fields will revert the style to a value matching the defaults in the Docs editor. # A TextStyle that only includes the changes made in this suggestion. This can be used along with the text_style_suggestion_state to see which fields have changed and their new values.
                        &quot;italic&quot;: True or False, # Whether or not the text is italicized.
                        &quot;baselineOffset&quot;: &quot;A String&quot;, # The text&#x27;s vertical offset from its normal position. Text with `SUPERSCRIPT` or `SUBSCRIPT` baseline offsets is automatically rendered in a smaller font size, computed based on the `font_size` field. The `font_size` itself is not affected by changes in this field.
                        &quot;bold&quot;: True or False, # Whether or not the text is rendered as bold.
                        &quot;fontSize&quot;: { # A magnitude in a single direction in the specified units. # The size of the text&#x27;s font.
                          &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                          &quot;magnitude&quot;: 3.14, # The magnitude.
                        },
                        &quot;foregroundColor&quot;: { # A color that can either be fully opaque or fully transparent. # The foreground color of the text. If set, the color is either an RGB color or transparent, depending on the `color` field.
                          &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                            &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                              &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                              &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                              &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                            },
                          },
                        },
                        &quot;backgroundColor&quot;: { # A color that can either be fully opaque or fully transparent. # The background color of the text. If set, the color is either an RGB color or transparent, depending on the `color` field.
                          &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                            &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                              &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                              &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                              &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                            },
                          },
                        },
                        &quot;link&quot;: { # A reference to another portion of a document or an external URL resource. # The hyperlink destination of the text. If unset, there is no link. Links are not inherited from parent text. Changing the link in an update request causes some other changes to the text style of the range: * When setting a link, the text foreground color will be updated to the default link color and the text will be underlined. If these fields are modified in the same request, those values will be used instead of the link defaults. * Setting a link on a text range that overlaps with an existing link will also update the existing link to point to the new URL. * Links are not settable on newline characters. As a result, setting a link on a text range that crosses a paragraph boundary, such as `&quot;ABC\n123&quot;`, will separate the newline character(s) into their own text runs. The link will be applied separately to the runs before and after the newline. * Removing a link will update the text style of the range to match the style of the preceding text (or the default text styles if the preceding text is another link) unless different styles are being set in the same request.
                          &quot;bookmarkId&quot;: &quot;A String&quot;, # The ID of a bookmark in this document.
                          &quot;url&quot;: &quot;A String&quot;, # An external URL.
                          &quot;headingId&quot;: &quot;A String&quot;, # The ID of a heading in this document.
                        },
                        &quot;strikethrough&quot;: True or False, # Whether or not the text is struck through.
                        &quot;weightedFontFamily&quot;: { # Represents a font family and weight of text. # The font family and rendered weight of the text. If an update request specifies values for both `weighted_font_family` and `bold`, the `weighted_font_family` is applied first, then `bold`. If `weighted_font_family#weight` is not set, it defaults to `400`. If `weighted_font_family` is set, then `weighted_font_family#font_family` must also be set with a non-empty value. Otherwise, a 400 bad request error is returned.
                          &quot;fontFamily&quot;: &quot;A String&quot;, # The font family of the text. The font family can be any font from the Font menu in Docs or from [Google Fonts] (https://fonts.google.com/). If the font name is unrecognized, the text is rendered in `Arial`.
                          &quot;weight&quot;: 42, # The weight of the font. This field can have any value that is a multiple of `100` between `100` and `900`, inclusive. This range corresponds to the numerical values described in the CSS 2.1 Specification, [section 15.6](https://www.w3.org/TR/CSS21/fonts.html#font-boldness), with non-numerical values disallowed. The default value is `400` (&quot;normal&quot;). The font weight makes up just one component of the rendered font weight. The rendered weight is determined by a combination of the `weight` and the text style&#x27;s resolved `bold` value, after accounting for inheritance: * If the text is bold and the weight is less than `400`, the rendered weight is 400. * If the text is bold and the weight is greater than or equal to `400` but is less than `700`, the rendered weight is `700`. * If the weight is greater than or equal to `700`, the rendered weight is equal to the weight. * If the text is not bold, the rendered weight is equal to the weight.
                        },
                        &quot;underline&quot;: True or False, # Whether or not the text is underlined.
                        &quot;smallCaps&quot;: True or False, # Whether or not the text is in small capital letters.
                      },
                    },
                  },
                  &quot;type&quot;: &quot;A String&quot;, # The type of this auto text.
                  &quot;textStyle&quot;: { # Represents the styling that can be applied to text. Inherited text styles are represented as unset fields in this message. A text style&#x27;s parent depends on where the text style is defined: * The TextStyle of text in a Paragraph inherits from the paragraph&#x27;s corresponding named style type. * The TextStyle on a named style inherits from the normal text named style. * The TextStyle of the normal text named style inherits from the default text style in the Docs editor. * The TextStyle on a Paragraph element that is contained in a table may inherit its text style from the table style. If the text style does not inherit from a parent, unsetting fields will revert the style to a value matching the defaults in the Docs editor. # The text style of this AutoText.
                    &quot;italic&quot;: True or False, # Whether or not the text is italicized.
                    &quot;baselineOffset&quot;: &quot;A String&quot;, # The text&#x27;s vertical offset from its normal position. Text with `SUPERSCRIPT` or `SUBSCRIPT` baseline offsets is automatically rendered in a smaller font size, computed based on the `font_size` field. The `font_size` itself is not affected by changes in this field.
                    &quot;bold&quot;: True or False, # Whether or not the text is rendered as bold.
                    &quot;fontSize&quot;: { # A magnitude in a single direction in the specified units. # The size of the text&#x27;s font.
                      &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                      &quot;magnitude&quot;: 3.14, # The magnitude.
                    },
                    &quot;foregroundColor&quot;: { # A color that can either be fully opaque or fully transparent. # The foreground color of the text. If set, the color is either an RGB color or transparent, depending on the `color` field.
                      &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                        &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                          &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                          &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                          &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                        },
                      },
                    },
                    &quot;backgroundColor&quot;: { # A color that can either be fully opaque or fully transparent. # The background color of the text. If set, the color is either an RGB color or transparent, depending on the `color` field.
                      &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                        &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                          &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                          &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                          &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                        },
                      },
                    },
                    &quot;link&quot;: { # A reference to another portion of a document or an external URL resource. # The hyperlink destination of the text. If unset, there is no link. Links are not inherited from parent text. Changing the link in an update request causes some other changes to the text style of the range: * When setting a link, the text foreground color will be updated to the default link color and the text will be underlined. If these fields are modified in the same request, those values will be used instead of the link defaults. * Setting a link on a text range that overlaps with an existing link will also update the existing link to point to the new URL. * Links are not settable on newline characters. As a result, setting a link on a text range that crosses a paragraph boundary, such as `&quot;ABC\n123&quot;`, will separate the newline character(s) into their own text runs. The link will be applied separately to the runs before and after the newline. * Removing a link will update the text style of the range to match the style of the preceding text (or the default text styles if the preceding text is another link) unless different styles are being set in the same request.
                      &quot;bookmarkId&quot;: &quot;A String&quot;, # The ID of a bookmark in this document.
                      &quot;url&quot;: &quot;A String&quot;, # An external URL.
                      &quot;headingId&quot;: &quot;A String&quot;, # The ID of a heading in this document.
                    },
                    &quot;strikethrough&quot;: True or False, # Whether or not the text is struck through.
                    &quot;weightedFontFamily&quot;: { # Represents a font family and weight of text. # The font family and rendered weight of the text. If an update request specifies values for both `weighted_font_family` and `bold`, the `weighted_font_family` is applied first, then `bold`. If `weighted_font_family#weight` is not set, it defaults to `400`. If `weighted_font_family` is set, then `weighted_font_family#font_family` must also be set with a non-empty value. Otherwise, a 400 bad request error is returned.
                      &quot;fontFamily&quot;: &quot;A String&quot;, # The font family of the text. The font family can be any font from the Font menu in Docs or from [Google Fonts] (https://fonts.google.com/). If the font name is unrecognized, the text is rendered in `Arial`.
                      &quot;weight&quot;: 42, # The weight of the font. This field can have any value that is a multiple of `100` between `100` and `900`, inclusive. This range corresponds to the numerical values described in the CSS 2.1 Specification, [section 15.6](https://www.w3.org/TR/CSS21/fonts.html#font-boldness), with non-numerical values disallowed. The default value is `400` (&quot;normal&quot;). The font weight makes up just one component of the rendered font weight. The rendered weight is determined by a combination of the `weight` and the text style&#x27;s resolved `bold` value, after accounting for inheritance: * If the text is bold and the weight is less than `400`, the rendered weight is 400. * If the text is bold and the weight is greater than or equal to `400` but is less than `700`, the rendered weight is `700`. * If the weight is greater than or equal to `700`, the rendered weight is equal to the weight. * If the text is not bold, the rendered weight is equal to the weight.
                    },
                    &quot;underline&quot;: True or False, # Whether or not the text is underlined.
                    &quot;smallCaps&quot;: True or False, # Whether or not the text is in small capital letters.
                  },
                },
                &quot;inlineObjectElement&quot;: { # A ParagraphElement that contains an InlineObject. # An inline object paragraph element.
                  &quot;suggestedDeletionIds&quot;: [ # The suggested deletion IDs. If empty, then there are no suggested deletions of this content.
                    &quot;A String&quot;,
                  ],
                  &quot;suggestedInsertionIds&quot;: [ # The suggested insertion IDs. An InlineObjectElement may have multiple insertion IDs if it is a nested suggested change. If empty, then this is not a suggested insertion.
                    &quot;A String&quot;,
                  ],
                  &quot;suggestedTextStyleChanges&quot;: { # The suggested text style changes to this InlineObject, keyed by suggestion ID.
                    &quot;a_key&quot;: { # A suggested change to a TextStyle.
                      &quot;textStyleSuggestionState&quot;: { # A mask that indicates which of the fields on the base TextStyle have been changed in this suggestion. For any field set to true, there is a new suggested value. # A mask that indicates which of the fields on the base TextStyle have been changed in this suggestion.
                        &quot;backgroundColorSuggested&quot;: True or False, # Indicates if there was a suggested change to background_color.
                        &quot;fontSizeSuggested&quot;: True or False, # Indicates if there was a suggested change to font_size.
                        &quot;boldSuggested&quot;: True or False, # Indicates if there was a suggested change to bold.
                        &quot;baselineOffsetSuggested&quot;: True or False, # Indicates if there was a suggested change to baseline_offset.
                        &quot;foregroundColorSuggested&quot;: True or False, # Indicates if there was a suggested change to foreground_color.
                        &quot;italicSuggested&quot;: True or False, # Indicates if there was a suggested change to italic.
                        &quot;linkSuggested&quot;: True or False, # Indicates if there was a suggested change to link.
                        &quot;underlineSuggested&quot;: True or False, # Indicates if there was a suggested change to underline.
                        &quot;weightedFontFamilySuggested&quot;: True or False, # Indicates if there was a suggested change to weighted_font_family.
                        &quot;smallCapsSuggested&quot;: True or False, # Indicates if there was a suggested change to small_caps.
                        &quot;strikethroughSuggested&quot;: True or False, # Indicates if there was a suggested change to strikethrough.
                      },
                      &quot;textStyle&quot;: { # Represents the styling that can be applied to text. Inherited text styles are represented as unset fields in this message. A text style&#x27;s parent depends on where the text style is defined: * The TextStyle of text in a Paragraph inherits from the paragraph&#x27;s corresponding named style type. * The TextStyle on a named style inherits from the normal text named style. * The TextStyle of the normal text named style inherits from the default text style in the Docs editor. * The TextStyle on a Paragraph element that is contained in a table may inherit its text style from the table style. If the text style does not inherit from a parent, unsetting fields will revert the style to a value matching the defaults in the Docs editor. # A TextStyle that only includes the changes made in this suggestion. This can be used along with the text_style_suggestion_state to see which fields have changed and their new values.
                        &quot;italic&quot;: True or False, # Whether or not the text is italicized.
                        &quot;baselineOffset&quot;: &quot;A String&quot;, # The text&#x27;s vertical offset from its normal position. Text with `SUPERSCRIPT` or `SUBSCRIPT` baseline offsets is automatically rendered in a smaller font size, computed based on the `font_size` field. The `font_size` itself is not affected by changes in this field.
                        &quot;bold&quot;: True or False, # Whether or not the text is rendered as bold.
                        &quot;fontSize&quot;: { # A magnitude in a single direction in the specified units. # The size of the text&#x27;s font.
                          &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                          &quot;magnitude&quot;: 3.14, # The magnitude.
                        },
                        &quot;foregroundColor&quot;: { # A color that can either be fully opaque or fully transparent. # The foreground color of the text. If set, the color is either an RGB color or transparent, depending on the `color` field.
                          &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                            &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                              &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                              &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                              &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                            },
                          },
                        },
                        &quot;backgroundColor&quot;: { # A color that can either be fully opaque or fully transparent. # The background color of the text. If set, the color is either an RGB color or transparent, depending on the `color` field.
                          &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                            &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                              &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                              &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                              &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                            },
                          },
                        },
                        &quot;link&quot;: { # A reference to another portion of a document or an external URL resource. # The hyperlink destination of the text. If unset, there is no link. Links are not inherited from parent text. Changing the link in an update request causes some other changes to the text style of the range: * When setting a link, the text foreground color will be updated to the default link color and the text will be underlined. If these fields are modified in the same request, those values will be used instead of the link defaults. * Setting a link on a text range that overlaps with an existing link will also update the existing link to point to the new URL. * Links are not settable on newline characters. As a result, setting a link on a text range that crosses a paragraph boundary, such as `&quot;ABC\n123&quot;`, will separate the newline character(s) into their own text runs. The link will be applied separately to the runs before and after the newline. * Removing a link will update the text style of the range to match the style of the preceding text (or the default text styles if the preceding text is another link) unless different styles are being set in the same request.
                          &quot;bookmarkId&quot;: &quot;A String&quot;, # The ID of a bookmark in this document.
                          &quot;url&quot;: &quot;A String&quot;, # An external URL.
                          &quot;headingId&quot;: &quot;A String&quot;, # The ID of a heading in this document.
                        },
                        &quot;strikethrough&quot;: True or False, # Whether or not the text is struck through.
                        &quot;weightedFontFamily&quot;: { # Represents a font family and weight of text. # The font family and rendered weight of the text. If an update request specifies values for both `weighted_font_family` and `bold`, the `weighted_font_family` is applied first, then `bold`. If `weighted_font_family#weight` is not set, it defaults to `400`. If `weighted_font_family` is set, then `weighted_font_family#font_family` must also be set with a non-empty value. Otherwise, a 400 bad request error is returned.
                          &quot;fontFamily&quot;: &quot;A String&quot;, # The font family of the text. The font family can be any font from the Font menu in Docs or from [Google Fonts] (https://fonts.google.com/). If the font name is unrecognized, the text is rendered in `Arial`.
                          &quot;weight&quot;: 42, # The weight of the font. This field can have any value that is a multiple of `100` between `100` and `900`, inclusive. This range corresponds to the numerical values described in the CSS 2.1 Specification, [section 15.6](https://www.w3.org/TR/CSS21/fonts.html#font-boldness), with non-numerical values disallowed. The default value is `400` (&quot;normal&quot;). The font weight makes up just one component of the rendered font weight. The rendered weight is determined by a combination of the `weight` and the text style&#x27;s resolved `bold` value, after accounting for inheritance: * If the text is bold and the weight is less than `400`, the rendered weight is 400. * If the text is bold and the weight is greater than or equal to `400` but is less than `700`, the rendered weight is `700`. * If the weight is greater than or equal to `700`, the rendered weight is equal to the weight. * If the text is not bold, the rendered weight is equal to the weight.
                        },
                        &quot;underline&quot;: True or False, # Whether or not the text is underlined.
                        &quot;smallCaps&quot;: True or False, # Whether or not the text is in small capital letters.
                      },
                    },
                  },
                  &quot;inlineObjectId&quot;: &quot;A String&quot;, # The ID of the InlineObject this element contains.
                  &quot;textStyle&quot;: { # Represents the styling that can be applied to text. Inherited text styles are represented as unset fields in this message. A text style&#x27;s parent depends on where the text style is defined: * The TextStyle of text in a Paragraph inherits from the paragraph&#x27;s corresponding named style type. * The TextStyle on a named style inherits from the normal text named style. * The TextStyle of the normal text named style inherits from the default text style in the Docs editor. * The TextStyle on a Paragraph element that is contained in a table may inherit its text style from the table style. If the text style does not inherit from a parent, unsetting fields will revert the style to a value matching the defaults in the Docs editor. # The text style of this InlineObjectElement. Similar to text content, like text runs and footnote references, the text style of an inline object element can affect content layout as well as the styling of text inserted adjacent to it.
                    &quot;italic&quot;: True or False, # Whether or not the text is italicized.
                    &quot;baselineOffset&quot;: &quot;A String&quot;, # The text&#x27;s vertical offset from its normal position. Text with `SUPERSCRIPT` or `SUBSCRIPT` baseline offsets is automatically rendered in a smaller font size, computed based on the `font_size` field. The `font_size` itself is not affected by changes in this field.
                    &quot;bold&quot;: True or False, # Whether or not the text is rendered as bold.
                    &quot;fontSize&quot;: { # A magnitude in a single direction in the specified units. # The size of the text&#x27;s font.
                      &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                      &quot;magnitude&quot;: 3.14, # The magnitude.
                    },
                    &quot;foregroundColor&quot;: { # A color that can either be fully opaque or fully transparent. # The foreground color of the text. If set, the color is either an RGB color or transparent, depending on the `color` field.
                      &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                        &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                          &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                          &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                          &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                        },
                      },
                    },
                    &quot;backgroundColor&quot;: { # A color that can either be fully opaque or fully transparent. # The background color of the text. If set, the color is either an RGB color or transparent, depending on the `color` field.
                      &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                        &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                          &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                          &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                          &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                        },
                      },
                    },
                    &quot;link&quot;: { # A reference to another portion of a document or an external URL resource. # The hyperlink destination of the text. If unset, there is no link. Links are not inherited from parent text. Changing the link in an update request causes some other changes to the text style of the range: * When setting a link, the text foreground color will be updated to the default link color and the text will be underlined. If these fields are modified in the same request, those values will be used instead of the link defaults. * Setting a link on a text range that overlaps with an existing link will also update the existing link to point to the new URL. * Links are not settable on newline characters. As a result, setting a link on a text range that crosses a paragraph boundary, such as `&quot;ABC\n123&quot;`, will separate the newline character(s) into their own text runs. The link will be applied separately to the runs before and after the newline. * Removing a link will update the text style of the range to match the style of the preceding text (or the default text styles if the preceding text is another link) unless different styles are being set in the same request.
                      &quot;bookmarkId&quot;: &quot;A String&quot;, # The ID of a bookmark in this document.
                      &quot;url&quot;: &quot;A String&quot;, # An external URL.
                      &quot;headingId&quot;: &quot;A String&quot;, # The ID of a heading in this document.
                    },
                    &quot;strikethrough&quot;: True or False, # Whether or not the text is struck through.
                    &quot;weightedFontFamily&quot;: { # Represents a font family and weight of text. # The font family and rendered weight of the text. If an update request specifies values for both `weighted_font_family` and `bold`, the `weighted_font_family` is applied first, then `bold`. If `weighted_font_family#weight` is not set, it defaults to `400`. If `weighted_font_family` is set, then `weighted_font_family#font_family` must also be set with a non-empty value. Otherwise, a 400 bad request error is returned.
                      &quot;fontFamily&quot;: &quot;A String&quot;, # The font family of the text. The font family can be any font from the Font menu in Docs or from [Google Fonts] (https://fonts.google.com/). If the font name is unrecognized, the text is rendered in `Arial`.
                      &quot;weight&quot;: 42, # The weight of the font. This field can have any value that is a multiple of `100` between `100` and `900`, inclusive. This range corresponds to the numerical values described in the CSS 2.1 Specification, [section 15.6](https://www.w3.org/TR/CSS21/fonts.html#font-boldness), with non-numerical values disallowed. The default value is `400` (&quot;normal&quot;). The font weight makes up just one component of the rendered font weight. The rendered weight is determined by a combination of the `weight` and the text style&#x27;s resolved `bold` value, after accounting for inheritance: * If the text is bold and the weight is less than `400`, the rendered weight is 400. * If the text is bold and the weight is greater than or equal to `400` but is less than `700`, the rendered weight is `700`. * If the weight is greater than or equal to `700`, the rendered weight is equal to the weight. * If the text is not bold, the rendered weight is equal to the weight.
                    },
                    &quot;underline&quot;: True or False, # Whether or not the text is underlined.
                    &quot;smallCaps&quot;: True or False, # Whether or not the text is in small capital letters.
                  },
                },
                &quot;footnoteReference&quot;: { # A ParagraphElement representing a footnote reference. A footnote reference is the inline content rendered with a number and is used to identify the footnote. # A footnote reference paragraph element.
                  &quot;footnoteId&quot;: &quot;A String&quot;, # The ID of the footnote that contains the content of this footnote reference.
                  &quot;suggestedInsertionIds&quot;: [ # The suggested insertion IDs. A FootnoteReference may have multiple insertion IDs if it is a nested suggested change. If empty, then this is not a suggested insertion.
                    &quot;A String&quot;,
                  ],
                  &quot;footnoteNumber&quot;: &quot;A String&quot;, # The rendered number of this footnote.
                  &quot;suggestedDeletionIds&quot;: [ # The suggested deletion IDs. If empty, then there are no suggested deletions of this content.
                    &quot;A String&quot;,
                  ],
                  &quot;suggestedTextStyleChanges&quot;: { # The suggested text style changes to this FootnoteReference, keyed by suggestion ID.
                    &quot;a_key&quot;: { # A suggested change to a TextStyle.
                      &quot;textStyleSuggestionState&quot;: { # A mask that indicates which of the fields on the base TextStyle have been changed in this suggestion. For any field set to true, there is a new suggested value. # A mask that indicates which of the fields on the base TextStyle have been changed in this suggestion.
                        &quot;backgroundColorSuggested&quot;: True or False, # Indicates if there was a suggested change to background_color.
                        &quot;fontSizeSuggested&quot;: True or False, # Indicates if there was a suggested change to font_size.
                        &quot;boldSuggested&quot;: True or False, # Indicates if there was a suggested change to bold.
                        &quot;baselineOffsetSuggested&quot;: True or False, # Indicates if there was a suggested change to baseline_offset.
                        &quot;foregroundColorSuggested&quot;: True or False, # Indicates if there was a suggested change to foreground_color.
                        &quot;italicSuggested&quot;: True or False, # Indicates if there was a suggested change to italic.
                        &quot;linkSuggested&quot;: True or False, # Indicates if there was a suggested change to link.
                        &quot;underlineSuggested&quot;: True or False, # Indicates if there was a suggested change to underline.
                        &quot;weightedFontFamilySuggested&quot;: True or False, # Indicates if there was a suggested change to weighted_font_family.
                        &quot;smallCapsSuggested&quot;: True or False, # Indicates if there was a suggested change to small_caps.
                        &quot;strikethroughSuggested&quot;: True or False, # Indicates if there was a suggested change to strikethrough.
                      },
                      &quot;textStyle&quot;: { # Represents the styling that can be applied to text. Inherited text styles are represented as unset fields in this message. A text style&#x27;s parent depends on where the text style is defined: * The TextStyle of text in a Paragraph inherits from the paragraph&#x27;s corresponding named style type. * The TextStyle on a named style inherits from the normal text named style. * The TextStyle of the normal text named style inherits from the default text style in the Docs editor. * The TextStyle on a Paragraph element that is contained in a table may inherit its text style from the table style. If the text style does not inherit from a parent, unsetting fields will revert the style to a value matching the defaults in the Docs editor. # A TextStyle that only includes the changes made in this suggestion. This can be used along with the text_style_suggestion_state to see which fields have changed and their new values.
                        &quot;italic&quot;: True or False, # Whether or not the text is italicized.
                        &quot;baselineOffset&quot;: &quot;A String&quot;, # The text&#x27;s vertical offset from its normal position. Text with `SUPERSCRIPT` or `SUBSCRIPT` baseline offsets is automatically rendered in a smaller font size, computed based on the `font_size` field. The `font_size` itself is not affected by changes in this field.
                        &quot;bold&quot;: True or False, # Whether or not the text is rendered as bold.
                        &quot;fontSize&quot;: { # A magnitude in a single direction in the specified units. # The size of the text&#x27;s font.
                          &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                          &quot;magnitude&quot;: 3.14, # The magnitude.
                        },
                        &quot;foregroundColor&quot;: { # A color that can either be fully opaque or fully transparent. # The foreground color of the text. If set, the color is either an RGB color or transparent, depending on the `color` field.
                          &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                            &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                              &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                              &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                              &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                            },
                          },
                        },
                        &quot;backgroundColor&quot;: { # A color that can either be fully opaque or fully transparent. # The background color of the text. If set, the color is either an RGB color or transparent, depending on the `color` field.
                          &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                            &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                              &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                              &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                              &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                            },
                          },
                        },
                        &quot;link&quot;: { # A reference to another portion of a document or an external URL resource. # The hyperlink destination of the text. If unset, there is no link. Links are not inherited from parent text. Changing the link in an update request causes some other changes to the text style of the range: * When setting a link, the text foreground color will be updated to the default link color and the text will be underlined. If these fields are modified in the same request, those values will be used instead of the link defaults. * Setting a link on a text range that overlaps with an existing link will also update the existing link to point to the new URL. * Links are not settable on newline characters. As a result, setting a link on a text range that crosses a paragraph boundary, such as `&quot;ABC\n123&quot;`, will separate the newline character(s) into their own text runs. The link will be applied separately to the runs before and after the newline. * Removing a link will update the text style of the range to match the style of the preceding text (or the default text styles if the preceding text is another link) unless different styles are being set in the same request.
                          &quot;bookmarkId&quot;: &quot;A String&quot;, # The ID of a bookmark in this document.
                          &quot;url&quot;: &quot;A String&quot;, # An external URL.
                          &quot;headingId&quot;: &quot;A String&quot;, # The ID of a heading in this document.
                        },
                        &quot;strikethrough&quot;: True or False, # Whether or not the text is struck through.
                        &quot;weightedFontFamily&quot;: { # Represents a font family and weight of text. # The font family and rendered weight of the text. If an update request specifies values for both `weighted_font_family` and `bold`, the `weighted_font_family` is applied first, then `bold`. If `weighted_font_family#weight` is not set, it defaults to `400`. If `weighted_font_family` is set, then `weighted_font_family#font_family` must also be set with a non-empty value. Otherwise, a 400 bad request error is returned.
                          &quot;fontFamily&quot;: &quot;A String&quot;, # The font family of the text. The font family can be any font from the Font menu in Docs or from [Google Fonts] (https://fonts.google.com/). If the font name is unrecognized, the text is rendered in `Arial`.
                          &quot;weight&quot;: 42, # The weight of the font. This field can have any value that is a multiple of `100` between `100` and `900`, inclusive. This range corresponds to the numerical values described in the CSS 2.1 Specification, [section 15.6](https://www.w3.org/TR/CSS21/fonts.html#font-boldness), with non-numerical values disallowed. The default value is `400` (&quot;normal&quot;). The font weight makes up just one component of the rendered font weight. The rendered weight is determined by a combination of the `weight` and the text style&#x27;s resolved `bold` value, after accounting for inheritance: * If the text is bold and the weight is less than `400`, the rendered weight is 400. * If the text is bold and the weight is greater than or equal to `400` but is less than `700`, the rendered weight is `700`. * If the weight is greater than or equal to `700`, the rendered weight is equal to the weight. * If the text is not bold, the rendered weight is equal to the weight.
                        },
                        &quot;underline&quot;: True or False, # Whether or not the text is underlined.
                        &quot;smallCaps&quot;: True or False, # Whether or not the text is in small capital letters.
                      },
                    },
                  },
                  &quot;textStyle&quot;: { # Represents the styling that can be applied to text. Inherited text styles are represented as unset fields in this message. A text style&#x27;s parent depends on where the text style is defined: * The TextStyle of text in a Paragraph inherits from the paragraph&#x27;s corresponding named style type. * The TextStyle on a named style inherits from the normal text named style. * The TextStyle of the normal text named style inherits from the default text style in the Docs editor. * The TextStyle on a Paragraph element that is contained in a table may inherit its text style from the table style. If the text style does not inherit from a parent, unsetting fields will revert the style to a value matching the defaults in the Docs editor. # The text style of this FootnoteReference.
                    &quot;italic&quot;: True or False, # Whether or not the text is italicized.
                    &quot;baselineOffset&quot;: &quot;A String&quot;, # The text&#x27;s vertical offset from its normal position. Text with `SUPERSCRIPT` or `SUBSCRIPT` baseline offsets is automatically rendered in a smaller font size, computed based on the `font_size` field. The `font_size` itself is not affected by changes in this field.
                    &quot;bold&quot;: True or False, # Whether or not the text is rendered as bold.
                    &quot;fontSize&quot;: { # A magnitude in a single direction in the specified units. # The size of the text&#x27;s font.
                      &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                      &quot;magnitude&quot;: 3.14, # The magnitude.
                    },
                    &quot;foregroundColor&quot;: { # A color that can either be fully opaque or fully transparent. # The foreground color of the text. If set, the color is either an RGB color or transparent, depending on the `color` field.
                      &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                        &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                          &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                          &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                          &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                        },
                      },
                    },
                    &quot;backgroundColor&quot;: { # A color that can either be fully opaque or fully transparent. # The background color of the text. If set, the color is either an RGB color or transparent, depending on the `color` field.
                      &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                        &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                          &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                          &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                          &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                        },
                      },
                    },
                    &quot;link&quot;: { # A reference to another portion of a document or an external URL resource. # The hyperlink destination of the text. If unset, there is no link. Links are not inherited from parent text. Changing the link in an update request causes some other changes to the text style of the range: * When setting a link, the text foreground color will be updated to the default link color and the text will be underlined. If these fields are modified in the same request, those values will be used instead of the link defaults. * Setting a link on a text range that overlaps with an existing link will also update the existing link to point to the new URL. * Links are not settable on newline characters. As a result, setting a link on a text range that crosses a paragraph boundary, such as `&quot;ABC\n123&quot;`, will separate the newline character(s) into their own text runs. The link will be applied separately to the runs before and after the newline. * Removing a link will update the text style of the range to match the style of the preceding text (or the default text styles if the preceding text is another link) unless different styles are being set in the same request.
                      &quot;bookmarkId&quot;: &quot;A String&quot;, # The ID of a bookmark in this document.
                      &quot;url&quot;: &quot;A String&quot;, # An external URL.
                      &quot;headingId&quot;: &quot;A String&quot;, # The ID of a heading in this document.
                    },
                    &quot;strikethrough&quot;: True or False, # Whether or not the text is struck through.
                    &quot;weightedFontFamily&quot;: { # Represents a font family and weight of text. # The font family and rendered weight of the text. If an update request specifies values for both `weighted_font_family` and `bold`, the `weighted_font_family` is applied first, then `bold`. If `weighted_font_family#weight` is not set, it defaults to `400`. If `weighted_font_family` is set, then `weighted_font_family#font_family` must also be set with a non-empty value. Otherwise, a 400 bad request error is returned.
                      &quot;fontFamily&quot;: &quot;A String&quot;, # The font family of the text. The font family can be any font from the Font menu in Docs or from [Google Fonts] (https://fonts.google.com/). If the font name is unrecognized, the text is rendered in `Arial`.
                      &quot;weight&quot;: 42, # The weight of the font. This field can have any value that is a multiple of `100` between `100` and `900`, inclusive. This range corresponds to the numerical values described in the CSS 2.1 Specification, [section 15.6](https://www.w3.org/TR/CSS21/fonts.html#font-boldness), with non-numerical values disallowed. The default value is `400` (&quot;normal&quot;). The font weight makes up just one component of the rendered font weight. The rendered weight is determined by a combination of the `weight` and the text style&#x27;s resolved `bold` value, after accounting for inheritance: * If the text is bold and the weight is less than `400`, the rendered weight is 400. * If the text is bold and the weight is greater than or equal to `400` but is less than `700`, the rendered weight is `700`. * If the weight is greater than or equal to `700`, the rendered weight is equal to the weight. * If the text is not bold, the rendered weight is equal to the weight.
                    },
                    &quot;underline&quot;: True or False, # Whether or not the text is underlined.
                    &quot;smallCaps&quot;: True or False, # Whether or not the text is in small capital letters.
                  },
                },
                &quot;startIndex&quot;: 42, # The zero-based start index of this paragraph element, in UTF-16 code units.
                &quot;endIndex&quot;: 42, # The zero-base end index of this paragraph element, exclusive, in UTF-16 code units.
                &quot;equation&quot;: { # A ParagraphElement representing an equation. # An equation paragraph element.
                  &quot;suggestedDeletionIds&quot;: [ # The suggested deletion IDs. If empty, then there are no suggested deletions of this content.
                    &quot;A String&quot;,
                  ],
                  &quot;suggestedInsertionIds&quot;: [ # The suggested insertion IDs. A Equation may have multiple insertion IDs if it is a nested suggested change. If empty, then this is not a suggested insertion.
                    &quot;A String&quot;,
                  ],
                },
                &quot;columnBreak&quot;: { # A ParagraphElement representing a column break. A column break makes the subsequent text start at the top of the next column. # A column break paragraph element.
                  &quot;suggestedTextStyleChanges&quot;: { # The suggested text style changes to this ColumnBreak, keyed by suggestion ID.
                    &quot;a_key&quot;: { # A suggested change to a TextStyle.
                      &quot;textStyleSuggestionState&quot;: { # A mask that indicates which of the fields on the base TextStyle have been changed in this suggestion. For any field set to true, there is a new suggested value. # A mask that indicates which of the fields on the base TextStyle have been changed in this suggestion.
                        &quot;backgroundColorSuggested&quot;: True or False, # Indicates if there was a suggested change to background_color.
                        &quot;fontSizeSuggested&quot;: True or False, # Indicates if there was a suggested change to font_size.
                        &quot;boldSuggested&quot;: True or False, # Indicates if there was a suggested change to bold.
                        &quot;baselineOffsetSuggested&quot;: True or False, # Indicates if there was a suggested change to baseline_offset.
                        &quot;foregroundColorSuggested&quot;: True or False, # Indicates if there was a suggested change to foreground_color.
                        &quot;italicSuggested&quot;: True or False, # Indicates if there was a suggested change to italic.
                        &quot;linkSuggested&quot;: True or False, # Indicates if there was a suggested change to link.
                        &quot;underlineSuggested&quot;: True or False, # Indicates if there was a suggested change to underline.
                        &quot;weightedFontFamilySuggested&quot;: True or False, # Indicates if there was a suggested change to weighted_font_family.
                        &quot;smallCapsSuggested&quot;: True or False, # Indicates if there was a suggested change to small_caps.
                        &quot;strikethroughSuggested&quot;: True or False, # Indicates if there was a suggested change to strikethrough.
                      },
                      &quot;textStyle&quot;: { # Represents the styling that can be applied to text. Inherited text styles are represented as unset fields in this message. A text style&#x27;s parent depends on where the text style is defined: * The TextStyle of text in a Paragraph inherits from the paragraph&#x27;s corresponding named style type. * The TextStyle on a named style inherits from the normal text named style. * The TextStyle of the normal text named style inherits from the default text style in the Docs editor. * The TextStyle on a Paragraph element that is contained in a table may inherit its text style from the table style. If the text style does not inherit from a parent, unsetting fields will revert the style to a value matching the defaults in the Docs editor. # A TextStyle that only includes the changes made in this suggestion. This can be used along with the text_style_suggestion_state to see which fields have changed and their new values.
                        &quot;italic&quot;: True or False, # Whether or not the text is italicized.
                        &quot;baselineOffset&quot;: &quot;A String&quot;, # The text&#x27;s vertical offset from its normal position. Text with `SUPERSCRIPT` or `SUBSCRIPT` baseline offsets is automatically rendered in a smaller font size, computed based on the `font_size` field. The `font_size` itself is not affected by changes in this field.
                        &quot;bold&quot;: True or False, # Whether or not the text is rendered as bold.
                        &quot;fontSize&quot;: { # A magnitude in a single direction in the specified units. # The size of the text&#x27;s font.
                          &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                          &quot;magnitude&quot;: 3.14, # The magnitude.
                        },
                        &quot;foregroundColor&quot;: { # A color that can either be fully opaque or fully transparent. # The foreground color of the text. If set, the color is either an RGB color or transparent, depending on the `color` field.
                          &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                            &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                              &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                              &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                              &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                            },
                          },
                        },
                        &quot;backgroundColor&quot;: { # A color that can either be fully opaque or fully transparent. # The background color of the text. If set, the color is either an RGB color or transparent, depending on the `color` field.
                          &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                            &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                              &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                              &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                              &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                            },
                          },
                        },
                        &quot;link&quot;: { # A reference to another portion of a document or an external URL resource. # The hyperlink destination of the text. If unset, there is no link. Links are not inherited from parent text. Changing the link in an update request causes some other changes to the text style of the range: * When setting a link, the text foreground color will be updated to the default link color and the text will be underlined. If these fields are modified in the same request, those values will be used instead of the link defaults. * Setting a link on a text range that overlaps with an existing link will also update the existing link to point to the new URL. * Links are not settable on newline characters. As a result, setting a link on a text range that crosses a paragraph boundary, such as `&quot;ABC\n123&quot;`, will separate the newline character(s) into their own text runs. The link will be applied separately to the runs before and after the newline. * Removing a link will update the text style of the range to match the style of the preceding text (or the default text styles if the preceding text is another link) unless different styles are being set in the same request.
                          &quot;bookmarkId&quot;: &quot;A String&quot;, # The ID of a bookmark in this document.
                          &quot;url&quot;: &quot;A String&quot;, # An external URL.
                          &quot;headingId&quot;: &quot;A String&quot;, # The ID of a heading in this document.
                        },
                        &quot;strikethrough&quot;: True or False, # Whether or not the text is struck through.
                        &quot;weightedFontFamily&quot;: { # Represents a font family and weight of text. # The font family and rendered weight of the text. If an update request specifies values for both `weighted_font_family` and `bold`, the `weighted_font_family` is applied first, then `bold`. If `weighted_font_family#weight` is not set, it defaults to `400`. If `weighted_font_family` is set, then `weighted_font_family#font_family` must also be set with a non-empty value. Otherwise, a 400 bad request error is returned.
                          &quot;fontFamily&quot;: &quot;A String&quot;, # The font family of the text. The font family can be any font from the Font menu in Docs or from [Google Fonts] (https://fonts.google.com/). If the font name is unrecognized, the text is rendered in `Arial`.
                          &quot;weight&quot;: 42, # The weight of the font. This field can have any value that is a multiple of `100` between `100` and `900`, inclusive. This range corresponds to the numerical values described in the CSS 2.1 Specification, [section 15.6](https://www.w3.org/TR/CSS21/fonts.html#font-boldness), with non-numerical values disallowed. The default value is `400` (&quot;normal&quot;). The font weight makes up just one component of the rendered font weight. The rendered weight is determined by a combination of the `weight` and the text style&#x27;s resolved `bold` value, after accounting for inheritance: * If the text is bold and the weight is less than `400`, the rendered weight is 400. * If the text is bold and the weight is greater than or equal to `400` but is less than `700`, the rendered weight is `700`. * If the weight is greater than or equal to `700`, the rendered weight is equal to the weight. * If the text is not bold, the rendered weight is equal to the weight.
                        },
                        &quot;underline&quot;: True or False, # Whether or not the text is underlined.
                        &quot;smallCaps&quot;: True or False, # Whether or not the text is in small capital letters.
                      },
                    },
                  },
                  &quot;suggestedDeletionIds&quot;: [ # The suggested deletion IDs. If empty, then there are no suggested deletions of this content.
                    &quot;A String&quot;,
                  ],
                  &quot;textStyle&quot;: { # Represents the styling that can be applied to text. Inherited text styles are represented as unset fields in this message. A text style&#x27;s parent depends on where the text style is defined: * The TextStyle of text in a Paragraph inherits from the paragraph&#x27;s corresponding named style type. * The TextStyle on a named style inherits from the normal text named style. * The TextStyle of the normal text named style inherits from the default text style in the Docs editor. * The TextStyle on a Paragraph element that is contained in a table may inherit its text style from the table style. If the text style does not inherit from a parent, unsetting fields will revert the style to a value matching the defaults in the Docs editor. # The text style of this ColumnBreak. Similar to text content, like text runs and footnote references, the text style of a column break can affect content layout as well as the styling of text inserted adjacent to it.
                    &quot;italic&quot;: True or False, # Whether or not the text is italicized.
                    &quot;baselineOffset&quot;: &quot;A String&quot;, # The text&#x27;s vertical offset from its normal position. Text with `SUPERSCRIPT` or `SUBSCRIPT` baseline offsets is automatically rendered in a smaller font size, computed based on the `font_size` field. The `font_size` itself is not affected by changes in this field.
                    &quot;bold&quot;: True or False, # Whether or not the text is rendered as bold.
                    &quot;fontSize&quot;: { # A magnitude in a single direction in the specified units. # The size of the text&#x27;s font.
                      &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                      &quot;magnitude&quot;: 3.14, # The magnitude.
                    },
                    &quot;foregroundColor&quot;: { # A color that can either be fully opaque or fully transparent. # The foreground color of the text. If set, the color is either an RGB color or transparent, depending on the `color` field.
                      &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                        &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                          &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                          &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                          &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                        },
                      },
                    },
                    &quot;backgroundColor&quot;: { # A color that can either be fully opaque or fully transparent. # The background color of the text. If set, the color is either an RGB color or transparent, depending on the `color` field.
                      &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                        &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                          &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                          &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                          &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                        },
                      },
                    },
                    &quot;link&quot;: { # A reference to another portion of a document or an external URL resource. # The hyperlink destination of the text. If unset, there is no link. Links are not inherited from parent text. Changing the link in an update request causes some other changes to the text style of the range: * When setting a link, the text foreground color will be updated to the default link color and the text will be underlined. If these fields are modified in the same request, those values will be used instead of the link defaults. * Setting a link on a text range that overlaps with an existing link will also update the existing link to point to the new URL. * Links are not settable on newline characters. As a result, setting a link on a text range that crosses a paragraph boundary, such as `&quot;ABC\n123&quot;`, will separate the newline character(s) into their own text runs. The link will be applied separately to the runs before and after the newline. * Removing a link will update the text style of the range to match the style of the preceding text (or the default text styles if the preceding text is another link) unless different styles are being set in the same request.
                      &quot;bookmarkId&quot;: &quot;A String&quot;, # The ID of a bookmark in this document.
                      &quot;url&quot;: &quot;A String&quot;, # An external URL.
                      &quot;headingId&quot;: &quot;A String&quot;, # The ID of a heading in this document.
                    },
                    &quot;strikethrough&quot;: True or False, # Whether or not the text is struck through.
                    &quot;weightedFontFamily&quot;: { # Represents a font family and weight of text. # The font family and rendered weight of the text. If an update request specifies values for both `weighted_font_family` and `bold`, the `weighted_font_family` is applied first, then `bold`. If `weighted_font_family#weight` is not set, it defaults to `400`. If `weighted_font_family` is set, then `weighted_font_family#font_family` must also be set with a non-empty value. Otherwise, a 400 bad request error is returned.
                      &quot;fontFamily&quot;: &quot;A String&quot;, # The font family of the text. The font family can be any font from the Font menu in Docs or from [Google Fonts] (https://fonts.google.com/). If the font name is unrecognized, the text is rendered in `Arial`.
                      &quot;weight&quot;: 42, # The weight of the font. This field can have any value that is a multiple of `100` between `100` and `900`, inclusive. This range corresponds to the numerical values described in the CSS 2.1 Specification, [section 15.6](https://www.w3.org/TR/CSS21/fonts.html#font-boldness), with non-numerical values disallowed. The default value is `400` (&quot;normal&quot;). The font weight makes up just one component of the rendered font weight. The rendered weight is determined by a combination of the `weight` and the text style&#x27;s resolved `bold` value, after accounting for inheritance: * If the text is bold and the weight is less than `400`, the rendered weight is 400. * If the text is bold and the weight is greater than or equal to `400` but is less than `700`, the rendered weight is `700`. * If the weight is greater than or equal to `700`, the rendered weight is equal to the weight. * If the text is not bold, the rendered weight is equal to the weight.
                    },
                    &quot;underline&quot;: True or False, # Whether or not the text is underlined.
                    &quot;smallCaps&quot;: True or False, # Whether or not the text is in small capital letters.
                  },
                  &quot;suggestedInsertionIds&quot;: [ # The suggested insertion IDs. A ColumnBreak may have multiple insertion IDs if it is a nested suggested change. If empty, then this is not a suggested insertion.
                    &quot;A String&quot;,
                  ],
                },
              },
            ],
            &quot;positionedObjectIds&quot;: [ # The IDs of the positioned objects tethered to this paragraph.
              &quot;A String&quot;,
            ],
            &quot;paragraphStyle&quot;: { # Styles that apply to a whole paragraph. Inherited paragraph styles are represented as unset fields in this message. A paragraph style&#x27;s parent depends on where the paragraph style is defined: * The ParagraphStyle on a Paragraph inherits from the paragraph&#x27;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 is 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. # The style of this paragraph.
              &quot;borderRight&quot;: { # A border around a paragraph. # The border to the right of this paragraph. If unset, the value is inherited from the parent. Paragraph borders cannot be partially updated. When making changes to a paragraph border the new border must be specified in its entirety.
                &quot;color&quot;: { # A color that can either be fully opaque or fully transparent. # The color of the border.
                  &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                    &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                      &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                      &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                      &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                    },
                  },
                },
                &quot;width&quot;: { # A magnitude in a single direction in the specified units. # The width of the border.
                  &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                  &quot;magnitude&quot;: 3.14, # The magnitude.
                },
                &quot;padding&quot;: { # A magnitude in a single direction in the specified units. # The padding of the border.
                  &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                  &quot;magnitude&quot;: 3.14, # The magnitude.
                },
                &quot;dashStyle&quot;: &quot;A String&quot;, # The dash style of the border.
              },
              &quot;indentFirstLine&quot;: { # A magnitude in a single direction in the specified units. # The amount of indentation for the first line of the paragraph. If unset, the value is inherited from the parent.
                &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                &quot;magnitude&quot;: 3.14, # The magnitude.
              },
              &quot;alignment&quot;: &quot;A String&quot;, # The text alignment for this paragraph.
              &quot;lineSpacing&quot;: 3.14, # The amount of space between lines, as a percentage of normal, where normal is represented as 100.0. If unset, the value is inherited from the parent.
              &quot;keepLinesTogether&quot;: True or False, # Whether all lines of the paragraph should be laid out on the same page or column if possible. If unset, the value is inherited from the parent.
              &quot;avoidWidowAndOrphan&quot;: True or False, # Whether to avoid widows and orphans for the paragraph. If unset, the value is inherited from the parent.
              &quot;spaceBelow&quot;: { # A magnitude in a single direction in the specified units. # The amount of extra space below the paragraph. If unset, the value is inherited from the parent.
                &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                &quot;magnitude&quot;: 3.14, # The magnitude.
              },
              &quot;borderBetween&quot;: { # A border around a paragraph. # 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 making changes to a paragraph border the new border must be specified in its entirety.
                &quot;color&quot;: { # A color that can either be fully opaque or fully transparent. # The color of the border.
                  &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                    &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                      &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                      &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                      &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                    },
                  },
                },
                &quot;width&quot;: { # A magnitude in a single direction in the specified units. # The width of the border.
                  &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                  &quot;magnitude&quot;: 3.14, # The magnitude.
                },
                &quot;padding&quot;: { # A magnitude in a single direction in the specified units. # The padding of the border.
                  &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                  &quot;magnitude&quot;: 3.14, # The magnitude.
                },
                &quot;dashStyle&quot;: &quot;A String&quot;, # The dash style of the border.
              },
              &quot;headingId&quot;: &quot;A String&quot;, # The heading ID of the paragraph. If empty, then this paragraph is not a heading. This property is read-only.
              &quot;spaceAbove&quot;: { # A magnitude in a single direction in the specified units. # The amount of extra space above the paragraph. If unset, the value is inherited from the parent.
                &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                &quot;magnitude&quot;: 3.14, # The magnitude.
              },
              &quot;direction&quot;: &quot;A String&quot;, # The text direction of this paragraph. If unset, the value defaults to LEFT_TO_RIGHT since paragraph direction is not inherited.
              &quot;namedStyleType&quot;: &quot;A String&quot;, # The named style type of the paragraph. Since updating the named style type affects other properties within ParagraphStyle, the named style type is applied before the other properties are updated.
              &quot;tabStops&quot;: [ # A list of the tab stops for this paragraph. The list of tab stops is not inherited. This property is read-only.
                { # A tab stop within a paragraph.
                  &quot;offset&quot;: { # A magnitude in a single direction in the specified units. # The offset between this tab stop and the start margin.
                    &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                    &quot;magnitude&quot;: 3.14, # The magnitude.
                  },
                  &quot;alignment&quot;: &quot;A String&quot;, # The alignment of this tab stop. If unset, the value defaults to START.
                },
              ],
              &quot;indentStart&quot;: { # A magnitude in a single direction in the specified units. # The amount of indentation for the paragraph on the side that corresponds to the start of the text, based on the current paragraph direction. If unset, the value is inherited from the parent.
                &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                &quot;magnitude&quot;: 3.14, # The magnitude.
              },
              &quot;keepWithNext&quot;: True or False, # Whether at least a part of this paragraph should be laid out on the same page or column as the next paragraph if possible. If unset, the value is inherited from the parent.
              &quot;borderTop&quot;: { # A border around a paragraph. # 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 making changes to a paragraph border the new border must be specified in its entirety.
                &quot;color&quot;: { # A color that can either be fully opaque or fully transparent. # The color of the border.
                  &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                    &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                      &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                      &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                      &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                    },
                  },
                },
                &quot;width&quot;: { # A magnitude in a single direction in the specified units. # The width of the border.
                  &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                  &quot;magnitude&quot;: 3.14, # The magnitude.
                },
                &quot;padding&quot;: { # A magnitude in a single direction in the specified units. # The padding of the border.
                  &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                  &quot;magnitude&quot;: 3.14, # The magnitude.
                },
                &quot;dashStyle&quot;: &quot;A String&quot;, # The dash style of the border.
              },
              &quot;borderLeft&quot;: { # A border around a paragraph. # The border to the left of this paragraph. If unset, the value is inherited from the parent. Paragraph borders cannot be partially updated. When making changes to a paragraph border the new border must be specified in its entirety.
                &quot;color&quot;: { # A color that can either be fully opaque or fully transparent. # The color of the border.
                  &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                    &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                      &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                      &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                      &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                    },
                  },
                },
                &quot;width&quot;: { # A magnitude in a single direction in the specified units. # The width of the border.
                  &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                  &quot;magnitude&quot;: 3.14, # The magnitude.
                },
                &quot;padding&quot;: { # A magnitude in a single direction in the specified units. # The padding of the border.
                  &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                  &quot;magnitude&quot;: 3.14, # The magnitude.
                },
                &quot;dashStyle&quot;: &quot;A String&quot;, # The dash style of the border.
              },
              &quot;borderBottom&quot;: { # A border around a paragraph. # 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 making changes to a paragraph border the new border must be specified in its entirety.
                &quot;color&quot;: { # A color that can either be fully opaque or fully transparent. # The color of the border.
                  &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                    &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                      &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                      &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                      &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                    },
                  },
                },
                &quot;width&quot;: { # A magnitude in a single direction in the specified units. # The width of the border.
                  &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                  &quot;magnitude&quot;: 3.14, # The magnitude.
                },
                &quot;padding&quot;: { # A magnitude in a single direction in the specified units. # The padding of the border.
                  &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                  &quot;magnitude&quot;: 3.14, # The magnitude.
                },
                &quot;dashStyle&quot;: &quot;A String&quot;, # The dash style of the border.
              },
              &quot;shading&quot;: { # The shading of a paragraph. # The shading of the paragraph. If unset, the value is inherited from the parent.
                &quot;backgroundColor&quot;: { # A color that can either be fully opaque or fully transparent. # The background color of this paragraph shading.
                  &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                    &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                      &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                      &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                      &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                    },
                  },
                },
              },
              &quot;indentEnd&quot;: { # A magnitude in a single direction in the specified units. # 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.
                &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                &quot;magnitude&quot;: 3.14, # The magnitude.
              },
              &quot;spacingMode&quot;: &quot;A String&quot;, # The spacing mode for the paragraph.
            },
          },
          &quot;startIndex&quot;: 42, # The zero-based start index of this structural element, in UTF-16 code units.
          &quot;endIndex&quot;: 42, # The zero-based end index of this structural element, exclusive, in UTF-16 code units.
          &quot;tableOfContents&quot;: { # A StructuralElement representing a table of contents. # A table of contents type of structural element.
            &quot;suggestedInsertionIds&quot;: [ # The suggested insertion IDs. A TableOfContents may have multiple insertion IDs if it is a nested suggested change. If empty, then this is not a suggested insertion.
              &quot;A String&quot;,
            ],
            &quot;content&quot;: [ # The content of the table of contents.
              # Object with schema name: StructuralElement
            ],
            &quot;suggestedDeletionIds&quot;: [ # The suggested deletion IDs. If empty, then there are no suggested deletions of this content.
              &quot;A String&quot;,
            ],
          },
          &quot;table&quot;: { # A StructuralElement representing a table. # A table type of structural element.
            &quot;tableStyle&quot;: { # Styles that apply to a table. # The style of the table.
              &quot;tableColumnProperties&quot;: [ # The properties of each column. Note that in Docs, tables contain rows and rows contain cells, similar to HTML. So the properties for a row can be found on the row&#x27;s table_row_style.
                { # The properties of a column in a table.
                  &quot;widthType&quot;: &quot;A String&quot;, # The width type of the column.
                  &quot;width&quot;: { # A magnitude in a single direction in the specified units. # The width of the column. Set when the column&#x27;s `width_type` is FIXED_WIDTH.
                    &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                    &quot;magnitude&quot;: 3.14, # The magnitude.
                  },
                },
              ],
            },
            &quot;suggestedInsertionIds&quot;: [ # The suggested insertion IDs. A Table may have multiple insertion IDs if it is a nested suggested change. If empty, then this is not a suggested insertion.
              &quot;A String&quot;,
            ],
            &quot;tableRows&quot;: [ # The contents and style of each row.
              { # The contents and style of a row in a Table.
                &quot;suggestedDeletionIds&quot;: [ # The suggested deletion IDs. If empty, then there are no suggested deletions of this content.
                  &quot;A String&quot;,
                ],
                &quot;suggestedInsertionIds&quot;: [ # The suggested insertion IDs. A TableRow may have multiple insertion IDs if it is a nested suggested change. If empty, then this is not a suggested insertion.
                  &quot;A String&quot;,
                ],
                &quot;suggestedTableRowStyleChanges&quot;: { # The suggested style changes to this row, keyed by suggestion ID.
                  &quot;a_key&quot;: { # A suggested change to a TableRowStyle.
                    &quot;tableRowStyleSuggestionState&quot;: { # A mask that indicates which of the fields on the base TableRowStyle have been changed in this suggestion. For any field set to true, there is a new suggested value. # A mask that indicates which of the fields on the base TableRowStyle have been changed in this suggestion.
                      &quot;minRowHeightSuggested&quot;: True or False, # Indicates if there was a suggested change to min_row_height.
                    },
                    &quot;tableRowStyle&quot;: { # Styles that apply to a table row. # A TableRowStyle that only includes the changes made in this suggestion. This can be used along with the table_row_style_suggestion_state to see which fields have changed and their new values.
                      &quot;minRowHeight&quot;: { # A magnitude in a single direction in the specified units. # The minimum height of the row. The row will be rendered in the Docs editor at a height equal to or greater than this value in order to show all the content in the row&#x27;s cells.
                        &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                        &quot;magnitude&quot;: 3.14, # The magnitude.
                      },
                    },
                  },
                },
                &quot;startIndex&quot;: 42, # The zero-based start index of this row, in UTF-16 code units.
                &quot;tableCells&quot;: [ # The contents and style of each cell in this row. It is possible for a table to be non-rectangular, so some rows may have a different number of cells than other rows in the same table.
                  { # The contents and style of a cell in a Table.
                    &quot;tableCellStyle&quot;: { # The style of a TableCell. Inherited table cell styles are represented as unset fields in this message. A table cell style can inherit from the table&#x27;s style. # The style of the cell.
                      &quot;borderTop&quot;: { # A border around a table cell. Table cell borders cannot be transparent. To hide a table cell border, make its width 0. # The top border of the cell.
                        &quot;width&quot;: { # A magnitude in a single direction in the specified units. # The width of the border.
                          &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                          &quot;magnitude&quot;: 3.14, # The magnitude.
                        },
                        &quot;dashStyle&quot;: &quot;A String&quot;, # The dash style of the border.
                        &quot;color&quot;: { # A color that can either be fully opaque or fully transparent. # The color of the border. This color cannot be transparent.
                          &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                            &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                              &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                              &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                              &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                            },
                          },
                        },
                      },
                      &quot;borderBottom&quot;: { # A border around a table cell. Table cell borders cannot be transparent. To hide a table cell border, make its width 0. # The bottom border of the cell.
                        &quot;width&quot;: { # A magnitude in a single direction in the specified units. # The width of the border.
                          &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                          &quot;magnitude&quot;: 3.14, # The magnitude.
                        },
                        &quot;dashStyle&quot;: &quot;A String&quot;, # The dash style of the border.
                        &quot;color&quot;: { # A color that can either be fully opaque or fully transparent. # The color of the border. This color cannot be transparent.
                          &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                            &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                              &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                              &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                              &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                            },
                          },
                        },
                      },
                      &quot;contentAlignment&quot;: &quot;A String&quot;, # The alignment of the content in the table cell. The default alignment matches the alignment for newly created table cells in the Docs editor.
                      &quot;paddingLeft&quot;: { # A magnitude in a single direction in the specified units. # The left padding of the cell.
                        &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                        &quot;magnitude&quot;: 3.14, # The magnitude.
                      },
                      &quot;backgroundColor&quot;: { # A color that can either be fully opaque or fully transparent. # The background color of the cell.
                        &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                          &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                            &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                            &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                            &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                          },
                        },
                      },
                      &quot;paddingTop&quot;: { # A magnitude in a single direction in the specified units. # The top padding of the cell.
                        &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                        &quot;magnitude&quot;: 3.14, # The magnitude.
                      },
                      &quot;rowSpan&quot;: 42, # The row span of the cell. This property is read-only.
                      &quot;paddingRight&quot;: { # A magnitude in a single direction in the specified units. # The right padding of the cell.
                        &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                        &quot;magnitude&quot;: 3.14, # The magnitude.
                      },
                      &quot;borderRight&quot;: { # A border around a table cell. Table cell borders cannot be transparent. To hide a table cell border, make its width 0. # The right border of the cell.
                        &quot;width&quot;: { # A magnitude in a single direction in the specified units. # The width of the border.
                          &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                          &quot;magnitude&quot;: 3.14, # The magnitude.
                        },
                        &quot;dashStyle&quot;: &quot;A String&quot;, # The dash style of the border.
                        &quot;color&quot;: { # A color that can either be fully opaque or fully transparent. # The color of the border. This color cannot be transparent.
                          &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                            &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                              &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                              &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                              &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                            },
                          },
                        },
                      },
                      &quot;borderLeft&quot;: { # A border around a table cell. Table cell borders cannot be transparent. To hide a table cell border, make its width 0. # The left border of the cell.
                        &quot;width&quot;: { # A magnitude in a single direction in the specified units. # The width of the border.
                          &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                          &quot;magnitude&quot;: 3.14, # The magnitude.
                        },
                        &quot;dashStyle&quot;: &quot;A String&quot;, # The dash style of the border.
                        &quot;color&quot;: { # A color that can either be fully opaque or fully transparent. # The color of the border. This color cannot be transparent.
                          &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                            &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                              &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                              &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                              &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                            },
                          },
                        },
                      },
                      &quot;columnSpan&quot;: 42, # The column span of the cell. This property is read-only.
                      &quot;paddingBottom&quot;: { # A magnitude in a single direction in the specified units. # The bottom padding of the cell.
                        &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                        &quot;magnitude&quot;: 3.14, # The magnitude.
                      },
                    },
                    &quot;content&quot;: [ # The content of the cell.
                      # Object with schema name: StructuralElement
                    ],
                    &quot;suggestedDeletionIds&quot;: [ # The suggested deletion IDs. If empty, then there are no suggested deletions of this content.
                      &quot;A String&quot;,
                    ],
                    &quot;startIndex&quot;: 42, # The zero-based start index of this cell, in UTF-16 code units.
                    &quot;suggestedInsertionIds&quot;: [ # The suggested insertion IDs. A TableCell may have multiple insertion IDs if it is a nested suggested change. If empty, then this is not a suggested insertion.
                      &quot;A String&quot;,
                    ],
                    &quot;suggestedTableCellStyleChanges&quot;: { # The suggested changes to the table cell style, keyed by suggestion ID.
                      &quot;a_key&quot;: { # A suggested change to a TableCellStyle.
                        &quot;tableCellStyle&quot;: { # The style of a TableCell. Inherited table cell styles are represented as unset fields in this message. A table cell style can inherit from the table&#x27;s style. # A TableCellStyle that only includes the changes made in this suggestion. This can be used along with the table_cell_style_suggestion_state to see which fields have changed and their new values.
                          &quot;borderTop&quot;: { # A border around a table cell. Table cell borders cannot be transparent. To hide a table cell border, make its width 0. # The top border of the cell.
                            &quot;width&quot;: { # A magnitude in a single direction in the specified units. # The width of the border.
                              &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                              &quot;magnitude&quot;: 3.14, # The magnitude.
                            },
                            &quot;dashStyle&quot;: &quot;A String&quot;, # The dash style of the border.
                            &quot;color&quot;: { # A color that can either be fully opaque or fully transparent. # The color of the border. This color cannot be transparent.
                              &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                                &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                                  &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                                  &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                                  &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                                },
                              },
                            },
                          },
                          &quot;borderBottom&quot;: { # A border around a table cell. Table cell borders cannot be transparent. To hide a table cell border, make its width 0. # The bottom border of the cell.
                            &quot;width&quot;: { # A magnitude in a single direction in the specified units. # The width of the border.
                              &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                              &quot;magnitude&quot;: 3.14, # The magnitude.
                            },
                            &quot;dashStyle&quot;: &quot;A String&quot;, # The dash style of the border.
                            &quot;color&quot;: { # A color that can either be fully opaque or fully transparent. # The color of the border. This color cannot be transparent.
                              &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                                &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                                  &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                                  &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                                  &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                                },
                              },
                            },
                          },
                          &quot;contentAlignment&quot;: &quot;A String&quot;, # The alignment of the content in the table cell. The default alignment matches the alignment for newly created table cells in the Docs editor.
                          &quot;paddingLeft&quot;: { # A magnitude in a single direction in the specified units. # The left padding of the cell.
                            &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                            &quot;magnitude&quot;: 3.14, # The magnitude.
                          },
                          &quot;backgroundColor&quot;: { # A color that can either be fully opaque or fully transparent. # The background color of the cell.
                            &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                              &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                                &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                                &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                                &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                              },
                            },
                          },
                          &quot;paddingTop&quot;: { # A magnitude in a single direction in the specified units. # The top padding of the cell.
                            &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                            &quot;magnitude&quot;: 3.14, # The magnitude.
                          },
                          &quot;rowSpan&quot;: 42, # The row span of the cell. This property is read-only.
                          &quot;paddingRight&quot;: { # A magnitude in a single direction in the specified units. # The right padding of the cell.
                            &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                            &quot;magnitude&quot;: 3.14, # The magnitude.
                          },
                          &quot;borderRight&quot;: { # A border around a table cell. Table cell borders cannot be transparent. To hide a table cell border, make its width 0. # The right border of the cell.
                            &quot;width&quot;: { # A magnitude in a single direction in the specified units. # The width of the border.
                              &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                              &quot;magnitude&quot;: 3.14, # The magnitude.
                            },
                            &quot;dashStyle&quot;: &quot;A String&quot;, # The dash style of the border.
                            &quot;color&quot;: { # A color that can either be fully opaque or fully transparent. # The color of the border. This color cannot be transparent.
                              &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                                &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                                  &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                                  &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                                  &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                                },
                              },
                            },
                          },
                          &quot;borderLeft&quot;: { # A border around a table cell. Table cell borders cannot be transparent. To hide a table cell border, make its width 0. # The left border of the cell.
                            &quot;width&quot;: { # A magnitude in a single direction in the specified units. # The width of the border.
                              &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                              &quot;magnitude&quot;: 3.14, # The magnitude.
                            },
                            &quot;dashStyle&quot;: &quot;A String&quot;, # The dash style of the border.
                            &quot;color&quot;: { # A color that can either be fully opaque or fully transparent. # The color of the border. This color cannot be transparent.
                              &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                                &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                                  &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                                  &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                                  &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                                },
                              },
                            },
                          },
                          &quot;columnSpan&quot;: 42, # The column span of the cell. This property is read-only.
                          &quot;paddingBottom&quot;: { # A magnitude in a single direction in the specified units. # The bottom padding of the cell.
                            &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                            &quot;magnitude&quot;: 3.14, # The magnitude.
                          },
                        },
                        &quot;tableCellStyleSuggestionState&quot;: { # A mask that indicates which of the fields on the base TableCellStyle have been changed in this suggestion. For any field set to true, there is a new suggested value. # A mask that indicates which of the fields on the base TableCellStyle have been changed in this suggestion.
                          &quot;rowSpanSuggested&quot;: True or False, # Indicates if there was a suggested change to row_span.
                          &quot;columnSpanSuggested&quot;: True or False, # Indicates if there was a suggested change to column_span.
                          &quot;borderBottomSuggested&quot;: True or False, # Indicates if there was a suggested change to border_bottom.
                          &quot;borderLeftSuggested&quot;: True or False, # Indicates if there was a suggested change to border_left.
                          &quot;paddingLeftSuggested&quot;: True or False, # Indicates if there was a suggested change to padding_left.
                          &quot;paddingRightSuggested&quot;: True or False, # Indicates if there was a suggested change to padding_right.
                          &quot;paddingBottomSuggested&quot;: True or False, # Indicates if there was a suggested change to padding_bottom.
                          &quot;paddingTopSuggested&quot;: True or False, # Indicates if there was a suggested change to padding_top.
                          &quot;contentAlignmentSuggested&quot;: True or False, # Indicates if there was a suggested change to content_alignment.
                          &quot;borderRightSuggested&quot;: True or False, # Indicates if there was a suggested change to border_right.
                          &quot;backgroundColorSuggested&quot;: True or False, # Indicates if there was a suggested change to background_color.
                          &quot;borderTopSuggested&quot;: True or False, # Indicates if there was a suggested change to border_top.
                        },
                      },
                    },
                    &quot;endIndex&quot;: 42, # The zero-based end index of this cell, exclusive, in UTF-16 code units.
                  },
                ],
                &quot;endIndex&quot;: 42, # The zero-based end index of this row, exclusive, in UTF-16 code units.
                &quot;tableRowStyle&quot;: { # Styles that apply to a table row. # The style of the table row.
                  &quot;minRowHeight&quot;: { # A magnitude in a single direction in the specified units. # The minimum height of the row. The row will be rendered in the Docs editor at a height equal to or greater than this value in order to show all the content in the row&#x27;s cells.
                    &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                    &quot;magnitude&quot;: 3.14, # The magnitude.
                  },
                },
              },
            ],
            &quot;suggestedDeletionIds&quot;: [ # The suggested deletion IDs. If empty, then there are no suggested deletions of this content.
              &quot;A String&quot;,
            ],
            &quot;rows&quot;: 42, # Number of rows in the table.
            &quot;columns&quot;: 42, # Number of columns in the table. It is possible for a table to be non-rectangular, so some rows may have a different number of cells.
          },
          &quot;sectionBreak&quot;: { # A StructuralElement representing a section break. A section is a range of content which has the same SectionStyle. A section break represents the start of a new section, and the section style applies to the section after the section break. The document body always begins with a section break. # A section break type of structural element.
            &quot;suggestedInsertionIds&quot;: [ # The suggested insertion IDs. A SectionBreak may have multiple insertion IDs if it is a nested suggested change. If empty, then this is not a suggested insertion.
              &quot;A String&quot;,
            ],
            &quot;sectionStyle&quot;: { # The styling that applies to a section. # The style of the section after this section break.
              &quot;marginLeft&quot;: { # A magnitude in a single direction in the specified units. # The left page margin of the section. If unset, uses margin_left from DocumentStyle. Updating left margin causes columns in this section to resize. Since the margin affects column width, it is applied before column properties. When updating this property, setting a concrete value is required. Unsetting this property results in a 400 bad request error.
                &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                &quot;magnitude&quot;: 3.14, # The magnitude.
              },
              &quot;sectionType&quot;: &quot;A String&quot;, # Output only. The type of section.
              &quot;evenPageHeaderId&quot;: &quot;A String&quot;, # The ID of the header used only for even pages. If the value of DocumentStyle&#x27;s use_even_page_header_footer is true, this value is used for the headers on even pages in the section. If it is false, the headers on even pages uses the default_header_id. If unset, the value inherits from the previous SectionBreak&#x27;s SectionStyle. If the value is unset in the first SectionBreak, it inherits from DocumentStyle&#x27;s even_page_header_id. This property is read-only.
              &quot;useFirstPageHeaderFooter&quot;: True or False, # Indicates whether to use the first page header / footer IDs for the first page of the section. If unset, it inherits from DocumentStyle&#x27;s use_first_page_header_footer for the first section. If the value is unset for subsequent sectors, it should be interpreted as false. When updating this property, setting a concrete value is required. Unsetting this property results in a 400 bad request error.
              &quot;marginHeader&quot;: { # A magnitude in a single direction in the specified units. # The header margin of the section. If unset, uses margin_header from DocumentStyle. If updated, use_custom_header_footer_margins is set to true on DocumentStyle. The value of use_custom_header_footer_margins on DocumentStyle indicates if a header margin is being respected for this section. When updating this property, setting a concrete value is required. Unsetting this property results in a 400 bad request error.
                &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                &quot;magnitude&quot;: 3.14, # The magnitude.
              },
              &quot;firstPageFooterId&quot;: &quot;A String&quot;, # The ID of the footer used only for the first page of the section. If use_first_page_header_footer is true, this value is used for the footer on the first page of the section. If it is false, the footer on the first page of the section uses the default_footer_id. If unset, the value inherits from the previous SectionBreak&#x27;s SectionStyle. If the value is unset in the first SectionBreak, it inherits from DocumentStyle&#x27;s first_page_footer_id. This property is read-only.
              &quot;firstPageHeaderId&quot;: &quot;A String&quot;, # The ID of the header used only for the first page of the section. If use_first_page_header_footer is true, this value is used for the header on the first page of the section. If it is false, the header on the first page of the section uses the default_header_id. If unset, the value inherits from the previous SectionBreak&#x27;s SectionStyle. If the value is unset in the first SectionBreak, it inherits from DocumentStyle&#x27;s first_page_header_id. This property is read-only.
              &quot;columnSeparatorStyle&quot;: &quot;A String&quot;, # The style of column separators. This style can be set even when there is one column in the section. When updating this property, setting a concrete value is required. Unsetting this property results in a 400 bad request error.
              &quot;marginBottom&quot;: { # A magnitude in a single direction in the specified units. # The bottom page margin of the section. If unset, uses margin_bottom from DocumentStyle. When updating this property, setting a concrete value is required. Unsetting this property results in a 400 bad request error.
                &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                &quot;magnitude&quot;: 3.14, # The magnitude.
              },
              &quot;marginFooter&quot;: { # A magnitude in a single direction in the specified units. # The footer margin of the section. If unset, uses margin_footer from DocumentStyle. If updated, use_custom_header_footer_margins is set to true on DocumentStyle. The value of use_custom_header_footer_margins on DocumentStyle indicates if a footer margin is being respected for this section When updating this property, setting a concrete value is required. Unsetting this property results in a 400 bad request error.
                &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                &quot;magnitude&quot;: 3.14, # The magnitude.
              },
              &quot;defaultFooterId&quot;: &quot;A String&quot;, # The ID of the default footer. If unset, the value inherits from the previous SectionBreak&#x27;s SectionStyle. If the value is unset in the first SectionBreak, it inherits from DocumentStyle&#x27;s default_footer_id. This property is read-only.
              &quot;marginTop&quot;: { # A magnitude in a single direction in the specified units. # The top page margin of the section. If unset, uses margin_top from DocumentStyle. When updating this property, setting a concrete value is required. Unsetting this property results in a 400 bad request error.
                &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                &quot;magnitude&quot;: 3.14, # The magnitude.
              },
              &quot;contentDirection&quot;: &quot;A String&quot;, # The content direction of this section. If unset, the value defaults to LEFT_TO_RIGHT. When updating this property, setting a concrete value is required. Unsetting this property results in a 400 bad request error.
              &quot;evenPageFooterId&quot;: &quot;A String&quot;, # The ID of the footer used only for even pages. If the value of DocumentStyle&#x27;s use_even_page_header_footer is true, this value is used for the footers on even pages in the section. If it is false, the footers on even pages uses the default_footer_id. If unset, the value inherits from the previous SectionBreak&#x27;s SectionStyle. If the value is unset in the first SectionBreak, it inherits from DocumentStyle&#x27;s even_page_footer_id. This property is read-only.
              &quot;marginRight&quot;: { # A magnitude in a single direction in the specified units. # The right page margin of the section. If unset, uses margin_right from DocumentStyle. Updating right margin causes columns in this section to resize. Since the margin affects column width, it is applied before column properties. When updating this property, setting a concrete value is required. Unsetting this property results in a 400 bad request error.
                &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                &quot;magnitude&quot;: 3.14, # The magnitude.
              },
              &quot;defaultHeaderId&quot;: &quot;A String&quot;, # The ID of the default header. If unset, the value inherits from the previous SectionBreak&#x27;s SectionStyle. If the value is unset in the first SectionBreak, it inherits from DocumentStyle&#x27;s default_header_id. This property is read-only.
              &quot;pageNumberStart&quot;: 42, # The page number from which to start counting the number of pages for this section. If unset, page numbering continues from the previous section. If the value is unset in the first SectionBreak, refer to DocumentStyle&#x27;s page_number_start. When updating this property, setting a concrete value is required. Unsetting this property results in a 400 bad request error.
              &quot;columnProperties&quot;: [ # The section&#x27;s columns properties. If empty, the section contains one column with the default properties in the Docs editor. A section can be updated to have no more than three columns. When updating this property, setting a concrete value is required. Unsetting this property will result in a 400 bad request error.
                { # Properties that apply to a section&#x27;s column.
                  &quot;paddingEnd&quot;: { # A magnitude in a single direction in the specified units. # The padding at the end of the column.
                    &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                    &quot;magnitude&quot;: 3.14, # The magnitude.
                  },
                  &quot;width&quot;: { # A magnitude in a single direction in the specified units. # Output only. The width of the column.
                    &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                    &quot;magnitude&quot;: 3.14, # The magnitude.
                  },
                },
              ],
            },
            &quot;suggestedDeletionIds&quot;: [ # The suggested deletion IDs. If empty, then there are no suggested deletions of this content.
              &quot;A String&quot;,
            ],
          },
        },
      ],
    },
    &quot;footnotes&quot;: { # Output only. The footnotes in the document, keyed by footnote ID.
      &quot;a_key&quot;: { # A document footnote.
        &quot;content&quot;: [ # The contents of the footnote. The indexes for a footnote&#x27;s content begin at zero.
          { # A StructuralElement describes content that provides structure to the document.
            &quot;paragraph&quot;: { # A StructuralElement representing a paragraph. A paragraph is a range of content that is terminated with a newline character. # A paragraph type of structural element.
              &quot;suggestedParagraphStyleChanges&quot;: { # The suggested paragraph style changes to this paragraph, keyed by suggestion ID.
                &quot;a_key&quot;: { # A suggested change to a ParagraphStyle.
                  &quot;paragraphStyle&quot;: { # Styles that apply to a whole paragraph. Inherited paragraph styles are represented as unset fields in this message. A paragraph style&#x27;s parent depends on where the paragraph style is defined: * The ParagraphStyle on a Paragraph inherits from the paragraph&#x27;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 is 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. # A ParagraphStyle that only includes the changes made in this suggestion. This can be used along with the paragraph_suggestion_state to see which fields have changed and their new values.
                    &quot;borderRight&quot;: { # A border around a paragraph. # The border to the right of this paragraph. If unset, the value is inherited from the parent. Paragraph borders cannot be partially updated. When making changes to a paragraph border the new border must be specified in its entirety.
                      &quot;color&quot;: { # A color that can either be fully opaque or fully transparent. # The color of the border.
                        &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                          &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                            &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                            &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                            &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                          },
                        },
                      },
                      &quot;width&quot;: { # A magnitude in a single direction in the specified units. # The width of the border.
                        &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                        &quot;magnitude&quot;: 3.14, # The magnitude.
                      },
                      &quot;padding&quot;: { # A magnitude in a single direction in the specified units. # The padding of the border.
                        &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                        &quot;magnitude&quot;: 3.14, # The magnitude.
                      },
                      &quot;dashStyle&quot;: &quot;A String&quot;, # The dash style of the border.
                    },
                    &quot;indentFirstLine&quot;: { # A magnitude in a single direction in the specified units. # The amount of indentation for the first line of the paragraph. If unset, the value is inherited from the parent.
                      &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                      &quot;magnitude&quot;: 3.14, # The magnitude.
                    },
                    &quot;alignment&quot;: &quot;A String&quot;, # The text alignment for this paragraph.
                    &quot;lineSpacing&quot;: 3.14, # The amount of space between lines, as a percentage of normal, where normal is represented as 100.0. If unset, the value is inherited from the parent.
                    &quot;keepLinesTogether&quot;: True or False, # Whether all lines of the paragraph should be laid out on the same page or column if possible. If unset, the value is inherited from the parent.
                    &quot;avoidWidowAndOrphan&quot;: True or False, # Whether to avoid widows and orphans for the paragraph. If unset, the value is inherited from the parent.
                    &quot;spaceBelow&quot;: { # A magnitude in a single direction in the specified units. # The amount of extra space below the paragraph. If unset, the value is inherited from the parent.
                      &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                      &quot;magnitude&quot;: 3.14, # The magnitude.
                    },
                    &quot;borderBetween&quot;: { # A border around a paragraph. # 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 making changes to a paragraph border the new border must be specified in its entirety.
                      &quot;color&quot;: { # A color that can either be fully opaque or fully transparent. # The color of the border.
                        &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                          &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                            &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                            &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                            &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                          },
                        },
                      },
                      &quot;width&quot;: { # A magnitude in a single direction in the specified units. # The width of the border.
                        &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                        &quot;magnitude&quot;: 3.14, # The magnitude.
                      },
                      &quot;padding&quot;: { # A magnitude in a single direction in the specified units. # The padding of the border.
                        &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                        &quot;magnitude&quot;: 3.14, # The magnitude.
                      },
                      &quot;dashStyle&quot;: &quot;A String&quot;, # The dash style of the border.
                    },
                    &quot;headingId&quot;: &quot;A String&quot;, # The heading ID of the paragraph. If empty, then this paragraph is not a heading. This property is read-only.
                    &quot;spaceAbove&quot;: { # A magnitude in a single direction in the specified units. # The amount of extra space above the paragraph. If unset, the value is inherited from the parent.
                      &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                      &quot;magnitude&quot;: 3.14, # The magnitude.
                    },
                    &quot;direction&quot;: &quot;A String&quot;, # The text direction of this paragraph. If unset, the value defaults to LEFT_TO_RIGHT since paragraph direction is not inherited.
                    &quot;namedStyleType&quot;: &quot;A String&quot;, # The named style type of the paragraph. Since updating the named style type affects other properties within ParagraphStyle, the named style type is applied before the other properties are updated.
                    &quot;tabStops&quot;: [ # A list of the tab stops for this paragraph. The list of tab stops is not inherited. This property is read-only.
                      { # A tab stop within a paragraph.
                        &quot;offset&quot;: { # A magnitude in a single direction in the specified units. # The offset between this tab stop and the start margin.
                          &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                          &quot;magnitude&quot;: 3.14, # The magnitude.
                        },
                        &quot;alignment&quot;: &quot;A String&quot;, # The alignment of this tab stop. If unset, the value defaults to START.
                      },
                    ],
                    &quot;indentStart&quot;: { # A magnitude in a single direction in the specified units. # The amount of indentation for the paragraph on the side that corresponds to the start of the text, based on the current paragraph direction. If unset, the value is inherited from the parent.
                      &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                      &quot;magnitude&quot;: 3.14, # The magnitude.
                    },
                    &quot;keepWithNext&quot;: True or False, # Whether at least a part of this paragraph should be laid out on the same page or column as the next paragraph if possible. If unset, the value is inherited from the parent.
                    &quot;borderTop&quot;: { # A border around a paragraph. # 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 making changes to a paragraph border the new border must be specified in its entirety.
                      &quot;color&quot;: { # A color that can either be fully opaque or fully transparent. # The color of the border.
                        &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                          &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                            &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                            &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                            &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                          },
                        },
                      },
                      &quot;width&quot;: { # A magnitude in a single direction in the specified units. # The width of the border.
                        &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                        &quot;magnitude&quot;: 3.14, # The magnitude.
                      },
                      &quot;padding&quot;: { # A magnitude in a single direction in the specified units. # The padding of the border.
                        &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                        &quot;magnitude&quot;: 3.14, # The magnitude.
                      },
                      &quot;dashStyle&quot;: &quot;A String&quot;, # The dash style of the border.
                    },
                    &quot;borderLeft&quot;: { # A border around a paragraph. # The border to the left of this paragraph. If unset, the value is inherited from the parent. Paragraph borders cannot be partially updated. When making changes to a paragraph border the new border must be specified in its entirety.
                      &quot;color&quot;: { # A color that can either be fully opaque or fully transparent. # The color of the border.
                        &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                          &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                            &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                            &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                            &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                          },
                        },
                      },
                      &quot;width&quot;: { # A magnitude in a single direction in the specified units. # The width of the border.
                        &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                        &quot;magnitude&quot;: 3.14, # The magnitude.
                      },
                      &quot;padding&quot;: { # A magnitude in a single direction in the specified units. # The padding of the border.
                        &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                        &quot;magnitude&quot;: 3.14, # The magnitude.
                      },
                      &quot;dashStyle&quot;: &quot;A String&quot;, # The dash style of the border.
                    },
                    &quot;borderBottom&quot;: { # A border around a paragraph. # 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 making changes to a paragraph border the new border must be specified in its entirety.
                      &quot;color&quot;: { # A color that can either be fully opaque or fully transparent. # The color of the border.
                        &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                          &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                            &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                            &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                            &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                          },
                        },
                      },
                      &quot;width&quot;: { # A magnitude in a single direction in the specified units. # The width of the border.
                        &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                        &quot;magnitude&quot;: 3.14, # The magnitude.
                      },
                      &quot;padding&quot;: { # A magnitude in a single direction in the specified units. # The padding of the border.
                        &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                        &quot;magnitude&quot;: 3.14, # The magnitude.
                      },
                      &quot;dashStyle&quot;: &quot;A String&quot;, # The dash style of the border.
                    },
                    &quot;shading&quot;: { # The shading of a paragraph. # The shading of the paragraph. If unset, the value is inherited from the parent.
                      &quot;backgroundColor&quot;: { # A color that can either be fully opaque or fully transparent. # The background color of this paragraph shading.
                        &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                          &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                            &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                            &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                            &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                          },
                        },
                      },
                    },
                    &quot;indentEnd&quot;: { # A magnitude in a single direction in the specified units. # 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.
                      &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                      &quot;magnitude&quot;: 3.14, # The magnitude.
                    },
                    &quot;spacingMode&quot;: &quot;A String&quot;, # The spacing mode for the paragraph.
                  },
                  &quot;paragraphStyleSuggestionState&quot;: { # A mask that indicates which of the fields on the base ParagraphStyle have been changed in this suggestion. For any field set to true, there is a new suggested value. # A mask that indicates which of the fields on the base ParagraphStyle have been changed in this suggestion.
                    &quot;borderRightSuggested&quot;: True or False, # Indicates if there was a suggested change to border_right.
                    &quot;indentEndSuggested&quot;: True or False, # Indicates if there was a suggested change to indent_end.
                    &quot;lineSpacingSuggested&quot;: True or False, # Indicates if there was a suggested change to line_spacing.
                    &quot;headingIdSuggested&quot;: True or False, # Indicates if there was a suggested change to heading_id.
                    &quot;indentStartSuggested&quot;: True or False, # Indicates if there was a suggested change to indent_start.
                    &quot;keepWithNextSuggested&quot;: True or False, # Indicates if there was a suggested change to keep_with_next.
                    &quot;namedStyleTypeSuggested&quot;: True or False, # Indicates if there was a suggested change to named_style_type.
                    &quot;borderTopSuggested&quot;: True or False, # Indicates if there was a suggested change to border_top.
                    &quot;keepLinesTogetherSuggested&quot;: True or False, # Indicates if there was a suggested change to keep_lines_together.
                    &quot;avoidWidowAndOrphanSuggested&quot;: True or False, # Indicates if there was a suggested change to avoid_widow_and_orphan.
                    &quot;spaceBelowSuggested&quot;: True or False, # Indicates if there was a suggested change to space_below.
                    &quot;indentFirstLineSuggested&quot;: True or False, # Indicates if there was a suggested change to indent_first_line.
                    &quot;shadingSuggestionState&quot;: { # A mask that indicates which of the fields on the base Shading have been changed in this suggested change. For any field set to true, there is a new suggested value. # A mask that indicates which of the fields in shading have been changed in this suggestion.
                      &quot;backgroundColorSuggested&quot;: True or False, # Indicates if there was a suggested change to the Shading.
                    },
                    &quot;directionSuggested&quot;: True or False, # Indicates if there was a suggested change to direction.
                    &quot;borderBetweenSuggested&quot;: True or False, # Indicates if there was a suggested change to border_between.
                    &quot;spaceAboveSuggested&quot;: True or False, # Indicates if there was a suggested change to space_above.
                    &quot;borderLeftSuggested&quot;: True or False, # Indicates if there was a suggested change to border_left.
                    &quot;spacingModeSuggested&quot;: True or False, # Indicates if there was a suggested change to spacing_mode.
                    &quot;borderBottomSuggested&quot;: True or False, # Indicates if there was a suggested change to border_bottom.
                    &quot;alignmentSuggested&quot;: True or False, # Indicates if there was a suggested change to alignment.
                  },
                },
              },
              &quot;bullet&quot;: { # Describes the bullet of a paragraph. # The bullet for this paragraph. If not present, the paragraph does not belong to a list.
                &quot;textStyle&quot;: { # Represents the styling that can be applied to text. Inherited text styles are represented as unset fields in this message. A text style&#x27;s parent depends on where the text style is defined: * The TextStyle of text in a Paragraph inherits from the paragraph&#x27;s corresponding named style type. * The TextStyle on a named style inherits from the normal text named style. * The TextStyle of the normal text named style inherits from the default text style in the Docs editor. * The TextStyle on a Paragraph element that is contained in a table may inherit its text style from the table style. If the text style does not inherit from a parent, unsetting fields will revert the style to a value matching the defaults in the Docs editor. # The paragraph specific text style applied to this bullet.
                  &quot;italic&quot;: True or False, # Whether or not the text is italicized.
                  &quot;baselineOffset&quot;: &quot;A String&quot;, # The text&#x27;s vertical offset from its normal position. Text with `SUPERSCRIPT` or `SUBSCRIPT` baseline offsets is automatically rendered in a smaller font size, computed based on the `font_size` field. The `font_size` itself is not affected by changes in this field.
                  &quot;bold&quot;: True or False, # Whether or not the text is rendered as bold.
                  &quot;fontSize&quot;: { # A magnitude in a single direction in the specified units. # The size of the text&#x27;s font.
                    &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                    &quot;magnitude&quot;: 3.14, # The magnitude.
                  },
                  &quot;foregroundColor&quot;: { # A color that can either be fully opaque or fully transparent. # The foreground color of the text. If set, the color is either an RGB color or transparent, depending on the `color` field.
                    &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                      &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                        &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                        &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                        &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                      },
                    },
                  },
                  &quot;backgroundColor&quot;: { # A color that can either be fully opaque or fully transparent. # The background color of the text. If set, the color is either an RGB color or transparent, depending on the `color` field.
                    &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                      &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                        &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                        &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                        &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                      },
                    },
                  },
                  &quot;link&quot;: { # A reference to another portion of a document or an external URL resource. # The hyperlink destination of the text. If unset, there is no link. Links are not inherited from parent text. Changing the link in an update request causes some other changes to the text style of the range: * When setting a link, the text foreground color will be updated to the default link color and the text will be underlined. If these fields are modified in the same request, those values will be used instead of the link defaults. * Setting a link on a text range that overlaps with an existing link will also update the existing link to point to the new URL. * Links are not settable on newline characters. As a result, setting a link on a text range that crosses a paragraph boundary, such as `&quot;ABC\n123&quot;`, will separate the newline character(s) into their own text runs. The link will be applied separately to the runs before and after the newline. * Removing a link will update the text style of the range to match the style of the preceding text (or the default text styles if the preceding text is another link) unless different styles are being set in the same request.
                    &quot;bookmarkId&quot;: &quot;A String&quot;, # The ID of a bookmark in this document.
                    &quot;url&quot;: &quot;A String&quot;, # An external URL.
                    &quot;headingId&quot;: &quot;A String&quot;, # The ID of a heading in this document.
                  },
                  &quot;strikethrough&quot;: True or False, # Whether or not the text is struck through.
                  &quot;weightedFontFamily&quot;: { # Represents a font family and weight of text. # The font family and rendered weight of the text. If an update request specifies values for both `weighted_font_family` and `bold`, the `weighted_font_family` is applied first, then `bold`. If `weighted_font_family#weight` is not set, it defaults to `400`. If `weighted_font_family` is set, then `weighted_font_family#font_family` must also be set with a non-empty value. Otherwise, a 400 bad request error is returned.
                    &quot;fontFamily&quot;: &quot;A String&quot;, # The font family of the text. The font family can be any font from the Font menu in Docs or from [Google Fonts] (https://fonts.google.com/). If the font name is unrecognized, the text is rendered in `Arial`.
                    &quot;weight&quot;: 42, # The weight of the font. This field can have any value that is a multiple of `100` between `100` and `900`, inclusive. This range corresponds to the numerical values described in the CSS 2.1 Specification, [section 15.6](https://www.w3.org/TR/CSS21/fonts.html#font-boldness), with non-numerical values disallowed. The default value is `400` (&quot;normal&quot;). The font weight makes up just one component of the rendered font weight. The rendered weight is determined by a combination of the `weight` and the text style&#x27;s resolved `bold` value, after accounting for inheritance: * If the text is bold and the weight is less than `400`, the rendered weight is 400. * If the text is bold and the weight is greater than or equal to `400` but is less than `700`, the rendered weight is `700`. * If the weight is greater than or equal to `700`, the rendered weight is equal to the weight. * If the text is not bold, the rendered weight is equal to the weight.
                  },
                  &quot;underline&quot;: True or False, # Whether or not the text is underlined.
                  &quot;smallCaps&quot;: True or False, # Whether or not the text is in small capital letters.
                },
                &quot;nestingLevel&quot;: 42, # The nesting level of this paragraph in the list.
                &quot;listId&quot;: &quot;A String&quot;, # The ID of the list this paragraph belongs to.
              },
              &quot;suggestedBulletChanges&quot;: { # The suggested changes to this paragraph&#x27;s bullet.
                &quot;a_key&quot;: { # A suggested change to a Bullet.
                  &quot;bulletSuggestionState&quot;: { # A mask that indicates which of the fields on the base Bullet have been changed in this suggestion. For any field set to true, there is a new suggested value. # A mask that indicates which of the fields on the base Bullet have been changed in this suggestion.
                    &quot;nestingLevelSuggested&quot;: True or False, # Indicates if there was a suggested change to the nesting_level.
                    &quot;textStyleSuggestionState&quot;: { # A mask that indicates which of the fields on the base TextStyle have been changed in this suggestion. For any field set to true, there is a new suggested value. # A mask that indicates which of the fields in text style have been changed in this suggestion.
                      &quot;backgroundColorSuggested&quot;: True or False, # Indicates if there was a suggested change to background_color.
                      &quot;fontSizeSuggested&quot;: True or False, # Indicates if there was a suggested change to font_size.
                      &quot;boldSuggested&quot;: True or False, # Indicates if there was a suggested change to bold.
                      &quot;baselineOffsetSuggested&quot;: True or False, # Indicates if there was a suggested change to baseline_offset.
                      &quot;foregroundColorSuggested&quot;: True or False, # Indicates if there was a suggested change to foreground_color.
                      &quot;italicSuggested&quot;: True or False, # Indicates if there was a suggested change to italic.
                      &quot;linkSuggested&quot;: True or False, # Indicates if there was a suggested change to link.
                      &quot;underlineSuggested&quot;: True or False, # Indicates if there was a suggested change to underline.
                      &quot;weightedFontFamilySuggested&quot;: True or False, # Indicates if there was a suggested change to weighted_font_family.
                      &quot;smallCapsSuggested&quot;: True or False, # Indicates if there was a suggested change to small_caps.
                      &quot;strikethroughSuggested&quot;: True or False, # Indicates if there was a suggested change to strikethrough.
                    },
                    &quot;listIdSuggested&quot;: True or False, # Indicates if there was a suggested change to the list_id.
                  },
                  &quot;bullet&quot;: { # Describes the bullet of a paragraph. # A Bullet that only includes the changes made in this suggestion. This can be used along with the bullet_suggestion_state to see which fields have changed and their new values.
                    &quot;textStyle&quot;: { # Represents the styling that can be applied to text. Inherited text styles are represented as unset fields in this message. A text style&#x27;s parent depends on where the text style is defined: * The TextStyle of text in a Paragraph inherits from the paragraph&#x27;s corresponding named style type. * The TextStyle on a named style inherits from the normal text named style. * The TextStyle of the normal text named style inherits from the default text style in the Docs editor. * The TextStyle on a Paragraph element that is contained in a table may inherit its text style from the table style. If the text style does not inherit from a parent, unsetting fields will revert the style to a value matching the defaults in the Docs editor. # The paragraph specific text style applied to this bullet.
                      &quot;italic&quot;: True or False, # Whether or not the text is italicized.
                      &quot;baselineOffset&quot;: &quot;A String&quot;, # The text&#x27;s vertical offset from its normal position. Text with `SUPERSCRIPT` or `SUBSCRIPT` baseline offsets is automatically rendered in a smaller font size, computed based on the `font_size` field. The `font_size` itself is not affected by changes in this field.
                      &quot;bold&quot;: True or False, # Whether or not the text is rendered as bold.
                      &quot;fontSize&quot;: { # A magnitude in a single direction in the specified units. # The size of the text&#x27;s font.
                        &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                        &quot;magnitude&quot;: 3.14, # The magnitude.
                      },
                      &quot;foregroundColor&quot;: { # A color that can either be fully opaque or fully transparent. # The foreground color of the text. If set, the color is either an RGB color or transparent, depending on the `color` field.
                        &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                          &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                            &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                            &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                            &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                          },
                        },
                      },
                      &quot;backgroundColor&quot;: { # A color that can either be fully opaque or fully transparent. # The background color of the text. If set, the color is either an RGB color or transparent, depending on the `color` field.
                        &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                          &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                            &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                            &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                            &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                          },
                        },
                      },
                      &quot;link&quot;: { # A reference to another portion of a document or an external URL resource. # The hyperlink destination of the text. If unset, there is no link. Links are not inherited from parent text. Changing the link in an update request causes some other changes to the text style of the range: * When setting a link, the text foreground color will be updated to the default link color and the text will be underlined. If these fields are modified in the same request, those values will be used instead of the link defaults. * Setting a link on a text range that overlaps with an existing link will also update the existing link to point to the new URL. * Links are not settable on newline characters. As a result, setting a link on a text range that crosses a paragraph boundary, such as `&quot;ABC\n123&quot;`, will separate the newline character(s) into their own text runs. The link will be applied separately to the runs before and after the newline. * Removing a link will update the text style of the range to match the style of the preceding text (or the default text styles if the preceding text is another link) unless different styles are being set in the same request.
                        &quot;bookmarkId&quot;: &quot;A String&quot;, # The ID of a bookmark in this document.
                        &quot;url&quot;: &quot;A String&quot;, # An external URL.
                        &quot;headingId&quot;: &quot;A String&quot;, # The ID of a heading in this document.
                      },
                      &quot;strikethrough&quot;: True or False, # Whether or not the text is struck through.
                      &quot;weightedFontFamily&quot;: { # Represents a font family and weight of text. # The font family and rendered weight of the text. If an update request specifies values for both `weighted_font_family` and `bold`, the `weighted_font_family` is applied first, then `bold`. If `weighted_font_family#weight` is not set, it defaults to `400`. If `weighted_font_family` is set, then `weighted_font_family#font_family` must also be set with a non-empty value. Otherwise, a 400 bad request error is returned.
                        &quot;fontFamily&quot;: &quot;A String&quot;, # The font family of the text. The font family can be any font from the Font menu in Docs or from [Google Fonts] (https://fonts.google.com/). If the font name is unrecognized, the text is rendered in `Arial`.
                        &quot;weight&quot;: 42, # The weight of the font. This field can have any value that is a multiple of `100` between `100` and `900`, inclusive. This range corresponds to the numerical values described in the CSS 2.1 Specification, [section 15.6](https://www.w3.org/TR/CSS21/fonts.html#font-boldness), with non-numerical values disallowed. The default value is `400` (&quot;normal&quot;). The font weight makes up just one component of the rendered font weight. The rendered weight is determined by a combination of the `weight` and the text style&#x27;s resolved `bold` value, after accounting for inheritance: * If the text is bold and the weight is less than `400`, the rendered weight is 400. * If the text is bold and the weight is greater than or equal to `400` but is less than `700`, the rendered weight is `700`. * If the weight is greater than or equal to `700`, the rendered weight is equal to the weight. * If the text is not bold, the rendered weight is equal to the weight.
                      },
                      &quot;underline&quot;: True or False, # Whether or not the text is underlined.
                      &quot;smallCaps&quot;: True or False, # Whether or not the text is in small capital letters.
                    },
                    &quot;nestingLevel&quot;: 42, # The nesting level of this paragraph in the list.
                    &quot;listId&quot;: &quot;A String&quot;, # The ID of the list this paragraph belongs to.
                  },
                },
              },
              &quot;suggestedPositionedObjectIds&quot;: { # The IDs of the positioned objects that are suggested to be attached to this paragraph, keyed by suggestion ID.
                &quot;a_key&quot;: { # A collection of object IDs.
                  &quot;objectIds&quot;: [ # The object IDs.
                    &quot;A String&quot;,
                  ],
                },
              },
              &quot;elements&quot;: [ # The content of the paragraph broken down into its component parts.
                { # A ParagraphElement describes content within a Paragraph.
                  &quot;textRun&quot;: { # A ParagraphElement that represents a run of text that all has the same styling. # A text run paragraph element.
                    &quot;suggestedInsertionIds&quot;: [ # The suggested insertion IDs. A TextRun may have multiple insertion IDs if it is a nested suggested change. If empty, then this is not a suggested insertion.
                      &quot;A String&quot;,
                    ],
                    &quot;content&quot;: &quot;A String&quot;, # The text of this run. Any non-text elements in the run are replaced with the Unicode character U+E907.
                    &quot;textStyle&quot;: { # Represents the styling that can be applied to text. Inherited text styles are represented as unset fields in this message. A text style&#x27;s parent depends on where the text style is defined: * The TextStyle of text in a Paragraph inherits from the paragraph&#x27;s corresponding named style type. * The TextStyle on a named style inherits from the normal text named style. * The TextStyle of the normal text named style inherits from the default text style in the Docs editor. * The TextStyle on a Paragraph element that is contained in a table may inherit its text style from the table style. If the text style does not inherit from a parent, unsetting fields will revert the style to a value matching the defaults in the Docs editor. # The text style of this run.
                      &quot;italic&quot;: True or False, # Whether or not the text is italicized.
                      &quot;baselineOffset&quot;: &quot;A String&quot;, # The text&#x27;s vertical offset from its normal position. Text with `SUPERSCRIPT` or `SUBSCRIPT` baseline offsets is automatically rendered in a smaller font size, computed based on the `font_size` field. The `font_size` itself is not affected by changes in this field.
                      &quot;bold&quot;: True or False, # Whether or not the text is rendered as bold.
                      &quot;fontSize&quot;: { # A magnitude in a single direction in the specified units. # The size of the text&#x27;s font.
                        &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                        &quot;magnitude&quot;: 3.14, # The magnitude.
                      },
                      &quot;foregroundColor&quot;: { # A color that can either be fully opaque or fully transparent. # The foreground color of the text. If set, the color is either an RGB color or transparent, depending on the `color` field.
                        &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                          &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                            &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                            &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                            &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                          },
                        },
                      },
                      &quot;backgroundColor&quot;: { # A color that can either be fully opaque or fully transparent. # The background color of the text. If set, the color is either an RGB color or transparent, depending on the `color` field.
                        &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                          &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                            &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                            &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                            &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                          },
                        },
                      },
                      &quot;link&quot;: { # A reference to another portion of a document or an external URL resource. # The hyperlink destination of the text. If unset, there is no link. Links are not inherited from parent text. Changing the link in an update request causes some other changes to the text style of the range: * When setting a link, the text foreground color will be updated to the default link color and the text will be underlined. If these fields are modified in the same request, those values will be used instead of the link defaults. * Setting a link on a text range that overlaps with an existing link will also update the existing link to point to the new URL. * Links are not settable on newline characters. As a result, setting a link on a text range that crosses a paragraph boundary, such as `&quot;ABC\n123&quot;`, will separate the newline character(s) into their own text runs. The link will be applied separately to the runs before and after the newline. * Removing a link will update the text style of the range to match the style of the preceding text (or the default text styles if the preceding text is another link) unless different styles are being set in the same request.
                        &quot;bookmarkId&quot;: &quot;A String&quot;, # The ID of a bookmark in this document.
                        &quot;url&quot;: &quot;A String&quot;, # An external URL.
                        &quot;headingId&quot;: &quot;A String&quot;, # The ID of a heading in this document.
                      },
                      &quot;strikethrough&quot;: True or False, # Whether or not the text is struck through.
                      &quot;weightedFontFamily&quot;: { # Represents a font family and weight of text. # The font family and rendered weight of the text. If an update request specifies values for both `weighted_font_family` and `bold`, the `weighted_font_family` is applied first, then `bold`. If `weighted_font_family#weight` is not set, it defaults to `400`. If `weighted_font_family` is set, then `weighted_font_family#font_family` must also be set with a non-empty value. Otherwise, a 400 bad request error is returned.
                        &quot;fontFamily&quot;: &quot;A String&quot;, # The font family of the text. The font family can be any font from the Font menu in Docs or from [Google Fonts] (https://fonts.google.com/). If the font name is unrecognized, the text is rendered in `Arial`.
                        &quot;weight&quot;: 42, # The weight of the font. This field can have any value that is a multiple of `100` between `100` and `900`, inclusive. This range corresponds to the numerical values described in the CSS 2.1 Specification, [section 15.6](https://www.w3.org/TR/CSS21/fonts.html#font-boldness), with non-numerical values disallowed. The default value is `400` (&quot;normal&quot;). The font weight makes up just one component of the rendered font weight. The rendered weight is determined by a combination of the `weight` and the text style&#x27;s resolved `bold` value, after accounting for inheritance: * If the text is bold and the weight is less than `400`, the rendered weight is 400. * If the text is bold and the weight is greater than or equal to `400` but is less than `700`, the rendered weight is `700`. * If the weight is greater than or equal to `700`, the rendered weight is equal to the weight. * If the text is not bold, the rendered weight is equal to the weight.
                      },
                      &quot;underline&quot;: True or False, # Whether or not the text is underlined.
                      &quot;smallCaps&quot;: True or False, # Whether or not the text is in small capital letters.
                    },
                    &quot;suggestedTextStyleChanges&quot;: { # The suggested text style changes to this run, keyed by suggestion ID.
                      &quot;a_key&quot;: { # A suggested change to a TextStyle.
                        &quot;textStyleSuggestionState&quot;: { # A mask that indicates which of the fields on the base TextStyle have been changed in this suggestion. For any field set to true, there is a new suggested value. # A mask that indicates which of the fields on the base TextStyle have been changed in this suggestion.
                          &quot;backgroundColorSuggested&quot;: True or False, # Indicates if there was a suggested change to background_color.
                          &quot;fontSizeSuggested&quot;: True or False, # Indicates if there was a suggested change to font_size.
                          &quot;boldSuggested&quot;: True or False, # Indicates if there was a suggested change to bold.
                          &quot;baselineOffsetSuggested&quot;: True or False, # Indicates if there was a suggested change to baseline_offset.
                          &quot;foregroundColorSuggested&quot;: True or False, # Indicates if there was a suggested change to foreground_color.
                          &quot;italicSuggested&quot;: True or False, # Indicates if there was a suggested change to italic.
                          &quot;linkSuggested&quot;: True or False, # Indicates if there was a suggested change to link.
                          &quot;underlineSuggested&quot;: True or False, # Indicates if there was a suggested change to underline.
                          &quot;weightedFontFamilySuggested&quot;: True or False, # Indicates if there was a suggested change to weighted_font_family.
                          &quot;smallCapsSuggested&quot;: True or False, # Indicates if there was a suggested change to small_caps.
                          &quot;strikethroughSuggested&quot;: True or False, # Indicates if there was a suggested change to strikethrough.
                        },
                        &quot;textStyle&quot;: { # Represents the styling that can be applied to text. Inherited text styles are represented as unset fields in this message. A text style&#x27;s parent depends on where the text style is defined: * The TextStyle of text in a Paragraph inherits from the paragraph&#x27;s corresponding named style type. * The TextStyle on a named style inherits from the normal text named style. * The TextStyle of the normal text named style inherits from the default text style in the Docs editor. * The TextStyle on a Paragraph element that is contained in a table may inherit its text style from the table style. If the text style does not inherit from a parent, unsetting fields will revert the style to a value matching the defaults in the Docs editor. # A TextStyle that only includes the changes made in this suggestion. This can be used along with the text_style_suggestion_state to see which fields have changed and their new values.
                          &quot;italic&quot;: True or False, # Whether or not the text is italicized.
                          &quot;baselineOffset&quot;: &quot;A String&quot;, # The text&#x27;s vertical offset from its normal position. Text with `SUPERSCRIPT` or `SUBSCRIPT` baseline offsets is automatically rendered in a smaller font size, computed based on the `font_size` field. The `font_size` itself is not affected by changes in this field.
                          &quot;bold&quot;: True or False, # Whether or not the text is rendered as bold.
                          &quot;fontSize&quot;: { # A magnitude in a single direction in the specified units. # The size of the text&#x27;s font.
                            &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                            &quot;magnitude&quot;: 3.14, # The magnitude.
                          },
                          &quot;foregroundColor&quot;: { # A color that can either be fully opaque or fully transparent. # The foreground color of the text. If set, the color is either an RGB color or transparent, depending on the `color` field.
                            &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                              &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                                &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                                &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                                &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                              },
                            },
                          },
                          &quot;backgroundColor&quot;: { # A color that can either be fully opaque or fully transparent. # The background color of the text. If set, the color is either an RGB color or transparent, depending on the `color` field.
                            &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                              &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                                &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                                &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                                &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                              },
                            },
                          },
                          &quot;link&quot;: { # A reference to another portion of a document or an external URL resource. # The hyperlink destination of the text. If unset, there is no link. Links are not inherited from parent text. Changing the link in an update request causes some other changes to the text style of the range: * When setting a link, the text foreground color will be updated to the default link color and the text will be underlined. If these fields are modified in the same request, those values will be used instead of the link defaults. * Setting a link on a text range that overlaps with an existing link will also update the existing link to point to the new URL. * Links are not settable on newline characters. As a result, setting a link on a text range that crosses a paragraph boundary, such as `&quot;ABC\n123&quot;`, will separate the newline character(s) into their own text runs. The link will be applied separately to the runs before and after the newline. * Removing a link will update the text style of the range to match the style of the preceding text (or the default text styles if the preceding text is another link) unless different styles are being set in the same request.
                            &quot;bookmarkId&quot;: &quot;A String&quot;, # The ID of a bookmark in this document.
                            &quot;url&quot;: &quot;A String&quot;, # An external URL.
                            &quot;headingId&quot;: &quot;A String&quot;, # The ID of a heading in this document.
                          },
                          &quot;strikethrough&quot;: True or False, # Whether or not the text is struck through.
                          &quot;weightedFontFamily&quot;: { # Represents a font family and weight of text. # The font family and rendered weight of the text. If an update request specifies values for both `weighted_font_family` and `bold`, the `weighted_font_family` is applied first, then `bold`. If `weighted_font_family#weight` is not set, it defaults to `400`. If `weighted_font_family` is set, then `weighted_font_family#font_family` must also be set with a non-empty value. Otherwise, a 400 bad request error is returned.
                            &quot;fontFamily&quot;: &quot;A String&quot;, # The font family of the text. The font family can be any font from the Font menu in Docs or from [Google Fonts] (https://fonts.google.com/). If the font name is unrecognized, the text is rendered in `Arial`.
                            &quot;weight&quot;: 42, # The weight of the font. This field can have any value that is a multiple of `100` between `100` and `900`, inclusive. This range corresponds to the numerical values described in the CSS 2.1 Specification, [section 15.6](https://www.w3.org/TR/CSS21/fonts.html#font-boldness), with non-numerical values disallowed. The default value is `400` (&quot;normal&quot;). The font weight makes up just one component of the rendered font weight. The rendered weight is determined by a combination of the `weight` and the text style&#x27;s resolved `bold` value, after accounting for inheritance: * If the text is bold and the weight is less than `400`, the rendered weight is 400. * If the text is bold and the weight is greater than or equal to `400` but is less than `700`, the rendered weight is `700`. * If the weight is greater than or equal to `700`, the rendered weight is equal to the weight. * If the text is not bold, the rendered weight is equal to the weight.
                          },
                          &quot;underline&quot;: True or False, # Whether or not the text is underlined.
                          &quot;smallCaps&quot;: True or False, # Whether or not the text is in small capital letters.
                        },
                      },
                    },
                    &quot;suggestedDeletionIds&quot;: [ # The suggested deletion IDs. If empty, then there are no suggested deletions of this content.
                      &quot;A String&quot;,
                    ],
                  },
                  &quot;pageBreak&quot;: { # A ParagraphElement representing a page break. A page break makes the subsequent text start at the top of the next page. # A page break paragraph element.
                    &quot;suggestedInsertionIds&quot;: [ # The suggested insertion IDs. A PageBreak may have multiple insertion IDs if it is a nested suggested change. If empty, then this is not a suggested insertion.
                      &quot;A String&quot;,
                    ],
                    &quot;textStyle&quot;: { # Represents the styling that can be applied to text. Inherited text styles are represented as unset fields in this message. A text style&#x27;s parent depends on where the text style is defined: * The TextStyle of text in a Paragraph inherits from the paragraph&#x27;s corresponding named style type. * The TextStyle on a named style inherits from the normal text named style. * The TextStyle of the normal text named style inherits from the default text style in the Docs editor. * The TextStyle on a Paragraph element that is contained in a table may inherit its text style from the table style. If the text style does not inherit from a parent, unsetting fields will revert the style to a value matching the defaults in the Docs editor. # The text style of this PageBreak. Similar to text content, like text runs and footnote references, the text style of a page break can affect content layout as well as the styling of text inserted adjacent to it.
                      &quot;italic&quot;: True or False, # Whether or not the text is italicized.
                      &quot;baselineOffset&quot;: &quot;A String&quot;, # The text&#x27;s vertical offset from its normal position. Text with `SUPERSCRIPT` or `SUBSCRIPT` baseline offsets is automatically rendered in a smaller font size, computed based on the `font_size` field. The `font_size` itself is not affected by changes in this field.
                      &quot;bold&quot;: True or False, # Whether or not the text is rendered as bold.
                      &quot;fontSize&quot;: { # A magnitude in a single direction in the specified units. # The size of the text&#x27;s font.
                        &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                        &quot;magnitude&quot;: 3.14, # The magnitude.
                      },
                      &quot;foregroundColor&quot;: { # A color that can either be fully opaque or fully transparent. # The foreground color of the text. If set, the color is either an RGB color or transparent, depending on the `color` field.
                        &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                          &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                            &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                            &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                            &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                          },
                        },
                      },
                      &quot;backgroundColor&quot;: { # A color that can either be fully opaque or fully transparent. # The background color of the text. If set, the color is either an RGB color or transparent, depending on the `color` field.
                        &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                          &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                            &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                            &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                            &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                          },
                        },
                      },
                      &quot;link&quot;: { # A reference to another portion of a document or an external URL resource. # The hyperlink destination of the text. If unset, there is no link. Links are not inherited from parent text. Changing the link in an update request causes some other changes to the text style of the range: * When setting a link, the text foreground color will be updated to the default link color and the text will be underlined. If these fields are modified in the same request, those values will be used instead of the link defaults. * Setting a link on a text range that overlaps with an existing link will also update the existing link to point to the new URL. * Links are not settable on newline characters. As a result, setting a link on a text range that crosses a paragraph boundary, such as `&quot;ABC\n123&quot;`, will separate the newline character(s) into their own text runs. The link will be applied separately to the runs before and after the newline. * Removing a link will update the text style of the range to match the style of the preceding text (or the default text styles if the preceding text is another link) unless different styles are being set in the same request.
                        &quot;bookmarkId&quot;: &quot;A String&quot;, # The ID of a bookmark in this document.
                        &quot;url&quot;: &quot;A String&quot;, # An external URL.
                        &quot;headingId&quot;: &quot;A String&quot;, # The ID of a heading in this document.
                      },
                      &quot;strikethrough&quot;: True or False, # Whether or not the text is struck through.
                      &quot;weightedFontFamily&quot;: { # Represents a font family and weight of text. # The font family and rendered weight of the text. If an update request specifies values for both `weighted_font_family` and `bold`, the `weighted_font_family` is applied first, then `bold`. If `weighted_font_family#weight` is not set, it defaults to `400`. If `weighted_font_family` is set, then `weighted_font_family#font_family` must also be set with a non-empty value. Otherwise, a 400 bad request error is returned.
                        &quot;fontFamily&quot;: &quot;A String&quot;, # The font family of the text. The font family can be any font from the Font menu in Docs or from [Google Fonts] (https://fonts.google.com/). If the font name is unrecognized, the text is rendered in `Arial`.
                        &quot;weight&quot;: 42, # The weight of the font. This field can have any value that is a multiple of `100` between `100` and `900`, inclusive. This range corresponds to the numerical values described in the CSS 2.1 Specification, [section 15.6](https://www.w3.org/TR/CSS21/fonts.html#font-boldness), with non-numerical values disallowed. The default value is `400` (&quot;normal&quot;). The font weight makes up just one component of the rendered font weight. The rendered weight is determined by a combination of the `weight` and the text style&#x27;s resolved `bold` value, after accounting for inheritance: * If the text is bold and the weight is less than `400`, the rendered weight is 400. * If the text is bold and the weight is greater than or equal to `400` but is less than `700`, the rendered weight is `700`. * If the weight is greater than or equal to `700`, the rendered weight is equal to the weight. * If the text is not bold, the rendered weight is equal to the weight.
                      },
                      &quot;underline&quot;: True or False, # Whether or not the text is underlined.
                      &quot;smallCaps&quot;: True or False, # Whether or not the text is in small capital letters.
                    },
                    &quot;suggestedTextStyleChanges&quot;: { # The suggested text style changes to this PageBreak, keyed by suggestion ID.
                      &quot;a_key&quot;: { # A suggested change to a TextStyle.
                        &quot;textStyleSuggestionState&quot;: { # A mask that indicates which of the fields on the base TextStyle have been changed in this suggestion. For any field set to true, there is a new suggested value. # A mask that indicates which of the fields on the base TextStyle have been changed in this suggestion.
                          &quot;backgroundColorSuggested&quot;: True or False, # Indicates if there was a suggested change to background_color.
                          &quot;fontSizeSuggested&quot;: True or False, # Indicates if there was a suggested change to font_size.
                          &quot;boldSuggested&quot;: True or False, # Indicates if there was a suggested change to bold.
                          &quot;baselineOffsetSuggested&quot;: True or False, # Indicates if there was a suggested change to baseline_offset.
                          &quot;foregroundColorSuggested&quot;: True or False, # Indicates if there was a suggested change to foreground_color.
                          &quot;italicSuggested&quot;: True or False, # Indicates if there was a suggested change to italic.
                          &quot;linkSuggested&quot;: True or False, # Indicates if there was a suggested change to link.
                          &quot;underlineSuggested&quot;: True or False, # Indicates if there was a suggested change to underline.
                          &quot;weightedFontFamilySuggested&quot;: True or False, # Indicates if there was a suggested change to weighted_font_family.
                          &quot;smallCapsSuggested&quot;: True or False, # Indicates if there was a suggested change to small_caps.
                          &quot;strikethroughSuggested&quot;: True or False, # Indicates if there was a suggested change to strikethrough.
                        },
                        &quot;textStyle&quot;: { # Represents the styling that can be applied to text. Inherited text styles are represented as unset fields in this message. A text style&#x27;s parent depends on where the text style is defined: * The TextStyle of text in a Paragraph inherits from the paragraph&#x27;s corresponding named style type. * The TextStyle on a named style inherits from the normal text named style. * The TextStyle of the normal text named style inherits from the default text style in the Docs editor. * The TextStyle on a Paragraph element that is contained in a table may inherit its text style from the table style. If the text style does not inherit from a parent, unsetting fields will revert the style to a value matching the defaults in the Docs editor. # A TextStyle that only includes the changes made in this suggestion. This can be used along with the text_style_suggestion_state to see which fields have changed and their new values.
                          &quot;italic&quot;: True or False, # Whether or not the text is italicized.
                          &quot;baselineOffset&quot;: &quot;A String&quot;, # The text&#x27;s vertical offset from its normal position. Text with `SUPERSCRIPT` or `SUBSCRIPT` baseline offsets is automatically rendered in a smaller font size, computed based on the `font_size` field. The `font_size` itself is not affected by changes in this field.
                          &quot;bold&quot;: True or False, # Whether or not the text is rendered as bold.
                          &quot;fontSize&quot;: { # A magnitude in a single direction in the specified units. # The size of the text&#x27;s font.
                            &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                            &quot;magnitude&quot;: 3.14, # The magnitude.
                          },
                          &quot;foregroundColor&quot;: { # A color that can either be fully opaque or fully transparent. # The foreground color of the text. If set, the color is either an RGB color or transparent, depending on the `color` field.
                            &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                              &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                                &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                                &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                                &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                              },
                            },
                          },
                          &quot;backgroundColor&quot;: { # A color that can either be fully opaque or fully transparent. # The background color of the text. If set, the color is either an RGB color or transparent, depending on the `color` field.
                            &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                              &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                                &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                                &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                                &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                              },
                            },
                          },
                          &quot;link&quot;: { # A reference to another portion of a document or an external URL resource. # The hyperlink destination of the text. If unset, there is no link. Links are not inherited from parent text. Changing the link in an update request causes some other changes to the text style of the range: * When setting a link, the text foreground color will be updated to the default link color and the text will be underlined. If these fields are modified in the same request, those values will be used instead of the link defaults. * Setting a link on a text range that overlaps with an existing link will also update the existing link to point to the new URL. * Links are not settable on newline characters. As a result, setting a link on a text range that crosses a paragraph boundary, such as `&quot;ABC\n123&quot;`, will separate the newline character(s) into their own text runs. The link will be applied separately to the runs before and after the newline. * Removing a link will update the text style of the range to match the style of the preceding text (or the default text styles if the preceding text is another link) unless different styles are being set in the same request.
                            &quot;bookmarkId&quot;: &quot;A String&quot;, # The ID of a bookmark in this document.
                            &quot;url&quot;: &quot;A String&quot;, # An external URL.
                            &quot;headingId&quot;: &quot;A String&quot;, # The ID of a heading in this document.
                          },
                          &quot;strikethrough&quot;: True or False, # Whether or not the text is struck through.
                          &quot;weightedFontFamily&quot;: { # Represents a font family and weight of text. # The font family and rendered weight of the text. If an update request specifies values for both `weighted_font_family` and `bold`, the `weighted_font_family` is applied first, then `bold`. If `weighted_font_family#weight` is not set, it defaults to `400`. If `weighted_font_family` is set, then `weighted_font_family#font_family` must also be set with a non-empty value. Otherwise, a 400 bad request error is returned.
                            &quot;fontFamily&quot;: &quot;A String&quot;, # The font family of the text. The font family can be any font from the Font menu in Docs or from [Google Fonts] (https://fonts.google.com/). If the font name is unrecognized, the text is rendered in `Arial`.
                            &quot;weight&quot;: 42, # The weight of the font. This field can have any value that is a multiple of `100` between `100` and `900`, inclusive. This range corresponds to the numerical values described in the CSS 2.1 Specification, [section 15.6](https://www.w3.org/TR/CSS21/fonts.html#font-boldness), with non-numerical values disallowed. The default value is `400` (&quot;normal&quot;). The font weight makes up just one component of the rendered font weight. The rendered weight is determined by a combination of the `weight` and the text style&#x27;s resolved `bold` value, after accounting for inheritance: * If the text is bold and the weight is less than `400`, the rendered weight is 400. * If the text is bold and the weight is greater than or equal to `400` but is less than `700`, the rendered weight is `700`. * If the weight is greater than or equal to `700`, the rendered weight is equal to the weight. * If the text is not bold, the rendered weight is equal to the weight.
                          },
                          &quot;underline&quot;: True or False, # Whether or not the text is underlined.
                          &quot;smallCaps&quot;: True or False, # Whether or not the text is in small capital letters.
                        },
                      },
                    },
                    &quot;suggestedDeletionIds&quot;: [ # The suggested deletion IDs. If empty, then there are no suggested deletions of this content.
                      &quot;A String&quot;,
                    ],
                  },
                  &quot;horizontalRule&quot;: { # A ParagraphElement representing a horizontal line. # A horizontal rule paragraph element.
                    &quot;suggestedInsertionIds&quot;: [ # The suggested insertion IDs. A HorizontalRule may have multiple insertion IDs if it is a nested suggested change. If empty, then this is not a suggested insertion.
                      &quot;A String&quot;,
                    ],
                    &quot;suggestedTextStyleChanges&quot;: { # The suggested text style changes to this HorizontalRule, keyed by suggestion ID.
                      &quot;a_key&quot;: { # A suggested change to a TextStyle.
                        &quot;textStyleSuggestionState&quot;: { # A mask that indicates which of the fields on the base TextStyle have been changed in this suggestion. For any field set to true, there is a new suggested value. # A mask that indicates which of the fields on the base TextStyle have been changed in this suggestion.
                          &quot;backgroundColorSuggested&quot;: True or False, # Indicates if there was a suggested change to background_color.
                          &quot;fontSizeSuggested&quot;: True or False, # Indicates if there was a suggested change to font_size.
                          &quot;boldSuggested&quot;: True or False, # Indicates if there was a suggested change to bold.
                          &quot;baselineOffsetSuggested&quot;: True or False, # Indicates if there was a suggested change to baseline_offset.
                          &quot;foregroundColorSuggested&quot;: True or False, # Indicates if there was a suggested change to foreground_color.
                          &quot;italicSuggested&quot;: True or False, # Indicates if there was a suggested change to italic.
                          &quot;linkSuggested&quot;: True or False, # Indicates if there was a suggested change to link.
                          &quot;underlineSuggested&quot;: True or False, # Indicates if there was a suggested change to underline.
                          &quot;weightedFontFamilySuggested&quot;: True or False, # Indicates if there was a suggested change to weighted_font_family.
                          &quot;smallCapsSuggested&quot;: True or False, # Indicates if there was a suggested change to small_caps.
                          &quot;strikethroughSuggested&quot;: True or False, # Indicates if there was a suggested change to strikethrough.
                        },
                        &quot;textStyle&quot;: { # Represents the styling that can be applied to text. Inherited text styles are represented as unset fields in this message. A text style&#x27;s parent depends on where the text style is defined: * The TextStyle of text in a Paragraph inherits from the paragraph&#x27;s corresponding named style type. * The TextStyle on a named style inherits from the normal text named style. * The TextStyle of the normal text named style inherits from the default text style in the Docs editor. * The TextStyle on a Paragraph element that is contained in a table may inherit its text style from the table style. If the text style does not inherit from a parent, unsetting fields will revert the style to a value matching the defaults in the Docs editor. # A TextStyle that only includes the changes made in this suggestion. This can be used along with the text_style_suggestion_state to see which fields have changed and their new values.
                          &quot;italic&quot;: True or False, # Whether or not the text is italicized.
                          &quot;baselineOffset&quot;: &quot;A String&quot;, # The text&#x27;s vertical offset from its normal position. Text with `SUPERSCRIPT` or `SUBSCRIPT` baseline offsets is automatically rendered in a smaller font size, computed based on the `font_size` field. The `font_size` itself is not affected by changes in this field.
                          &quot;bold&quot;: True or False, # Whether or not the text is rendered as bold.
                          &quot;fontSize&quot;: { # A magnitude in a single direction in the specified units. # The size of the text&#x27;s font.
                            &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                            &quot;magnitude&quot;: 3.14, # The magnitude.
                          },
                          &quot;foregroundColor&quot;: { # A color that can either be fully opaque or fully transparent. # The foreground color of the text. If set, the color is either an RGB color or transparent, depending on the `color` field.
                            &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                              &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                                &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                                &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                                &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                              },
                            },
                          },
                          &quot;backgroundColor&quot;: { # A color that can either be fully opaque or fully transparent. # The background color of the text. If set, the color is either an RGB color or transparent, depending on the `color` field.
                            &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                              &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                                &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                                &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                                &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                              },
                            },
                          },
                          &quot;link&quot;: { # A reference to another portion of a document or an external URL resource. # The hyperlink destination of the text. If unset, there is no link. Links are not inherited from parent text. Changing the link in an update request causes some other changes to the text style of the range: * When setting a link, the text foreground color will be updated to the default link color and the text will be underlined. If these fields are modified in the same request, those values will be used instead of the link defaults. * Setting a link on a text range that overlaps with an existing link will also update the existing link to point to the new URL. * Links are not settable on newline characters. As a result, setting a link on a text range that crosses a paragraph boundary, such as `&quot;ABC\n123&quot;`, will separate the newline character(s) into their own text runs. The link will be applied separately to the runs before and after the newline. * Removing a link will update the text style of the range to match the style of the preceding text (or the default text styles if the preceding text is another link) unless different styles are being set in the same request.
                            &quot;bookmarkId&quot;: &quot;A String&quot;, # The ID of a bookmark in this document.
                            &quot;url&quot;: &quot;A String&quot;, # An external URL.
                            &quot;headingId&quot;: &quot;A String&quot;, # The ID of a heading in this document.
                          },
                          &quot;strikethrough&quot;: True or False, # Whether or not the text is struck through.
                          &quot;weightedFontFamily&quot;: { # Represents a font family and weight of text. # The font family and rendered weight of the text. If an update request specifies values for both `weighted_font_family` and `bold`, the `weighted_font_family` is applied first, then `bold`. If `weighted_font_family#weight` is not set, it defaults to `400`. If `weighted_font_family` is set, then `weighted_font_family#font_family` must also be set with a non-empty value. Otherwise, a 400 bad request error is returned.
                            &quot;fontFamily&quot;: &quot;A String&quot;, # The font family of the text. The font family can be any font from the Font menu in Docs or from [Google Fonts] (https://fonts.google.com/). If the font name is unrecognized, the text is rendered in `Arial`.
                            &quot;weight&quot;: 42, # The weight of the font. This field can have any value that is a multiple of `100` between `100` and `900`, inclusive. This range corresponds to the numerical values described in the CSS 2.1 Specification, [section 15.6](https://www.w3.org/TR/CSS21/fonts.html#font-boldness), with non-numerical values disallowed. The default value is `400` (&quot;normal&quot;). The font weight makes up just one component of the rendered font weight. The rendered weight is determined by a combination of the `weight` and the text style&#x27;s resolved `bold` value, after accounting for inheritance: * If the text is bold and the weight is less than `400`, the rendered weight is 400. * If the text is bold and the weight is greater than or equal to `400` but is less than `700`, the rendered weight is `700`. * If the weight is greater than or equal to `700`, the rendered weight is equal to the weight. * If the text is not bold, the rendered weight is equal to the weight.
                          },
                          &quot;underline&quot;: True or False, # Whether or not the text is underlined.
                          &quot;smallCaps&quot;: True or False, # Whether or not the text is in small capital letters.
                        },
                      },
                    },
                    &quot;suggestedDeletionIds&quot;: [ # The suggested deletion IDs. If empty, then there are no suggested deletions of this content.
                      &quot;A String&quot;,
                    ],
                    &quot;textStyle&quot;: { # Represents the styling that can be applied to text. Inherited text styles are represented as unset fields in this message. A text style&#x27;s parent depends on where the text style is defined: * The TextStyle of text in a Paragraph inherits from the paragraph&#x27;s corresponding named style type. * The TextStyle on a named style inherits from the normal text named style. * The TextStyle of the normal text named style inherits from the default text style in the Docs editor. * The TextStyle on a Paragraph element that is contained in a table may inherit its text style from the table style. If the text style does not inherit from a parent, unsetting fields will revert the style to a value matching the defaults in the Docs editor. # The text style of this HorizontalRule. Similar to text content, like text runs and footnote references, the text style of a horizontal rule can affect content layout as well as the styling of text inserted adjacent to it.
                      &quot;italic&quot;: True or False, # Whether or not the text is italicized.
                      &quot;baselineOffset&quot;: &quot;A String&quot;, # The text&#x27;s vertical offset from its normal position. Text with `SUPERSCRIPT` or `SUBSCRIPT` baseline offsets is automatically rendered in a smaller font size, computed based on the `font_size` field. The `font_size` itself is not affected by changes in this field.
                      &quot;bold&quot;: True or False, # Whether or not the text is rendered as bold.
                      &quot;fontSize&quot;: { # A magnitude in a single direction in the specified units. # The size of the text&#x27;s font.
                        &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                        &quot;magnitude&quot;: 3.14, # The magnitude.
                      },
                      &quot;foregroundColor&quot;: { # A color that can either be fully opaque or fully transparent. # The foreground color of the text. If set, the color is either an RGB color or transparent, depending on the `color` field.
                        &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                          &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                            &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                            &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                            &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                          },
                        },
                      },
                      &quot;backgroundColor&quot;: { # A color that can either be fully opaque or fully transparent. # The background color of the text. If set, the color is either an RGB color or transparent, depending on the `color` field.
                        &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                          &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                            &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                            &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                            &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                          },
                        },
                      },
                      &quot;link&quot;: { # A reference to another portion of a document or an external URL resource. # The hyperlink destination of the text. If unset, there is no link. Links are not inherited from parent text. Changing the link in an update request causes some other changes to the text style of the range: * When setting a link, the text foreground color will be updated to the default link color and the text will be underlined. If these fields are modified in the same request, those values will be used instead of the link defaults. * Setting a link on a text range that overlaps with an existing link will also update the existing link to point to the new URL. * Links are not settable on newline characters. As a result, setting a link on a text range that crosses a paragraph boundary, such as `&quot;ABC\n123&quot;`, will separate the newline character(s) into their own text runs. The link will be applied separately to the runs before and after the newline. * Removing a link will update the text style of the range to match the style of the preceding text (or the default text styles if the preceding text is another link) unless different styles are being set in the same request.
                        &quot;bookmarkId&quot;: &quot;A String&quot;, # The ID of a bookmark in this document.
                        &quot;url&quot;: &quot;A String&quot;, # An external URL.
                        &quot;headingId&quot;: &quot;A String&quot;, # The ID of a heading in this document.
                      },
                      &quot;strikethrough&quot;: True or False, # Whether or not the text is struck through.
                      &quot;weightedFontFamily&quot;: { # Represents a font family and weight of text. # The font family and rendered weight of the text. If an update request specifies values for both `weighted_font_family` and `bold`, the `weighted_font_family` is applied first, then `bold`. If `weighted_font_family#weight` is not set, it defaults to `400`. If `weighted_font_family` is set, then `weighted_font_family#font_family` must also be set with a non-empty value. Otherwise, a 400 bad request error is returned.
                        &quot;fontFamily&quot;: &quot;A String&quot;, # The font family of the text. The font family can be any font from the Font menu in Docs or from [Google Fonts] (https://fonts.google.com/). If the font name is unrecognized, the text is rendered in `Arial`.
                        &quot;weight&quot;: 42, # The weight of the font. This field can have any value that is a multiple of `100` between `100` and `900`, inclusive. This range corresponds to the numerical values described in the CSS 2.1 Specification, [section 15.6](https://www.w3.org/TR/CSS21/fonts.html#font-boldness), with non-numerical values disallowed. The default value is `400` (&quot;normal&quot;). The font weight makes up just one component of the rendered font weight. The rendered weight is determined by a combination of the `weight` and the text style&#x27;s resolved `bold` value, after accounting for inheritance: * If the text is bold and the weight is less than `400`, the rendered weight is 400. * If the text is bold and the weight is greater than or equal to `400` but is less than `700`, the rendered weight is `700`. * If the weight is greater than or equal to `700`, the rendered weight is equal to the weight. * If the text is not bold, the rendered weight is equal to the weight.
                      },
                      &quot;underline&quot;: True or False, # Whether or not the text is underlined.
                      &quot;smallCaps&quot;: True or False, # Whether or not the text is in small capital letters.
                    },
                  },
                  &quot;autoText&quot;: { # A ParagraphElement representing a spot in the text that is dynamically replaced with content that can change over time, like a page number. # An auto text paragraph element.
                    &quot;suggestedDeletionIds&quot;: [ # The suggested deletion IDs. If empty, then there are no suggested deletions of this content.
                      &quot;A String&quot;,
                    ],
                    &quot;suggestedInsertionIds&quot;: [ # The suggested insertion IDs. An AutoText may have multiple insertion IDs if it is a nested suggested change. If empty, then this is not a suggested insertion.
                      &quot;A String&quot;,
                    ],
                    &quot;suggestedTextStyleChanges&quot;: { # The suggested text style changes to this AutoText, keyed by suggestion ID.
                      &quot;a_key&quot;: { # A suggested change to a TextStyle.
                        &quot;textStyleSuggestionState&quot;: { # A mask that indicates which of the fields on the base TextStyle have been changed in this suggestion. For any field set to true, there is a new suggested value. # A mask that indicates which of the fields on the base TextStyle have been changed in this suggestion.
                          &quot;backgroundColorSuggested&quot;: True or False, # Indicates if there was a suggested change to background_color.
                          &quot;fontSizeSuggested&quot;: True or False, # Indicates if there was a suggested change to font_size.
                          &quot;boldSuggested&quot;: True or False, # Indicates if there was a suggested change to bold.
                          &quot;baselineOffsetSuggested&quot;: True or False, # Indicates if there was a suggested change to baseline_offset.
                          &quot;foregroundColorSuggested&quot;: True or False, # Indicates if there was a suggested change to foreground_color.
                          &quot;italicSuggested&quot;: True or False, # Indicates if there was a suggested change to italic.
                          &quot;linkSuggested&quot;: True or False, # Indicates if there was a suggested change to link.
                          &quot;underlineSuggested&quot;: True or False, # Indicates if there was a suggested change to underline.
                          &quot;weightedFontFamilySuggested&quot;: True or False, # Indicates if there was a suggested change to weighted_font_family.
                          &quot;smallCapsSuggested&quot;: True or False, # Indicates if there was a suggested change to small_caps.
                          &quot;strikethroughSuggested&quot;: True or False, # Indicates if there was a suggested change to strikethrough.
                        },
                        &quot;textStyle&quot;: { # Represents the styling that can be applied to text. Inherited text styles are represented as unset fields in this message. A text style&#x27;s parent depends on where the text style is defined: * The TextStyle of text in a Paragraph inherits from the paragraph&#x27;s corresponding named style type. * The TextStyle on a named style inherits from the normal text named style. * The TextStyle of the normal text named style inherits from the default text style in the Docs editor. * The TextStyle on a Paragraph element that is contained in a table may inherit its text style from the table style. If the text style does not inherit from a parent, unsetting fields will revert the style to a value matching the defaults in the Docs editor. # A TextStyle that only includes the changes made in this suggestion. This can be used along with the text_style_suggestion_state to see which fields have changed and their new values.
                          &quot;italic&quot;: True or False, # Whether or not the text is italicized.
                          &quot;baselineOffset&quot;: &quot;A String&quot;, # The text&#x27;s vertical offset from its normal position. Text with `SUPERSCRIPT` or `SUBSCRIPT` baseline offsets is automatically rendered in a smaller font size, computed based on the `font_size` field. The `font_size` itself is not affected by changes in this field.
                          &quot;bold&quot;: True or False, # Whether or not the text is rendered as bold.
                          &quot;fontSize&quot;: { # A magnitude in a single direction in the specified units. # The size of the text&#x27;s font.
                            &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                            &quot;magnitude&quot;: 3.14, # The magnitude.
                          },
                          &quot;foregroundColor&quot;: { # A color that can either be fully opaque or fully transparent. # The foreground color of the text. If set, the color is either an RGB color or transparent, depending on the `color` field.
                            &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                              &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                                &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                                &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                                &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                              },
                            },
                          },
                          &quot;backgroundColor&quot;: { # A color that can either be fully opaque or fully transparent. # The background color of the text. If set, the color is either an RGB color or transparent, depending on the `color` field.
                            &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                              &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                                &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                                &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                                &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                              },
                            },
                          },
                          &quot;link&quot;: { # A reference to another portion of a document or an external URL resource. # The hyperlink destination of the text. If unset, there is no link. Links are not inherited from parent text. Changing the link in an update request causes some other changes to the text style of the range: * When setting a link, the text foreground color will be updated to the default link color and the text will be underlined. If these fields are modified in the same request, those values will be used instead of the link defaults. * Setting a link on a text range that overlaps with an existing link will also update the existing link to point to the new URL. * Links are not settable on newline characters. As a result, setting a link on a text range that crosses a paragraph boundary, such as `&quot;ABC\n123&quot;`, will separate the newline character(s) into their own text runs. The link will be applied separately to the runs before and after the newline. * Removing a link will update the text style of the range to match the style of the preceding text (or the default text styles if the preceding text is another link) unless different styles are being set in the same request.
                            &quot;bookmarkId&quot;: &quot;A String&quot;, # The ID of a bookmark in this document.
                            &quot;url&quot;: &quot;A String&quot;, # An external URL.
                            &quot;headingId&quot;: &quot;A String&quot;, # The ID of a heading in this document.
                          },
                          &quot;strikethrough&quot;: True or False, # Whether or not the text is struck through.
                          &quot;weightedFontFamily&quot;: { # Represents a font family and weight of text. # The font family and rendered weight of the text. If an update request specifies values for both `weighted_font_family` and `bold`, the `weighted_font_family` is applied first, then `bold`. If `weighted_font_family#weight` is not set, it defaults to `400`. If `weighted_font_family` is set, then `weighted_font_family#font_family` must also be set with a non-empty value. Otherwise, a 400 bad request error is returned.
                            &quot;fontFamily&quot;: &quot;A String&quot;, # The font family of the text. The font family can be any font from the Font menu in Docs or from [Google Fonts] (https://fonts.google.com/). If the font name is unrecognized, the text is rendered in `Arial`.
                            &quot;weight&quot;: 42, # The weight of the font. This field can have any value that is a multiple of `100` between `100` and `900`, inclusive. This range corresponds to the numerical values described in the CSS 2.1 Specification, [section 15.6](https://www.w3.org/TR/CSS21/fonts.html#font-boldness), with non-numerical values disallowed. The default value is `400` (&quot;normal&quot;). The font weight makes up just one component of the rendered font weight. The rendered weight is determined by a combination of the `weight` and the text style&#x27;s resolved `bold` value, after accounting for inheritance: * If the text is bold and the weight is less than `400`, the rendered weight is 400. * If the text is bold and the weight is greater than or equal to `400` but is less than `700`, the rendered weight is `700`. * If the weight is greater than or equal to `700`, the rendered weight is equal to the weight. * If the text is not bold, the rendered weight is equal to the weight.
                          },
                          &quot;underline&quot;: True or False, # Whether or not the text is underlined.
                          &quot;smallCaps&quot;: True or False, # Whether or not the text is in small capital letters.
                        },
                      },
                    },
                    &quot;type&quot;: &quot;A String&quot;, # The type of this auto text.
                    &quot;textStyle&quot;: { # Represents the styling that can be applied to text. Inherited text styles are represented as unset fields in this message. A text style&#x27;s parent depends on where the text style is defined: * The TextStyle of text in a Paragraph inherits from the paragraph&#x27;s corresponding named style type. * The TextStyle on a named style inherits from the normal text named style. * The TextStyle of the normal text named style inherits from the default text style in the Docs editor. * The TextStyle on a Paragraph element that is contained in a table may inherit its text style from the table style. If the text style does not inherit from a parent, unsetting fields will revert the style to a value matching the defaults in the Docs editor. # The text style of this AutoText.
                      &quot;italic&quot;: True or False, # Whether or not the text is italicized.
                      &quot;baselineOffset&quot;: &quot;A String&quot;, # The text&#x27;s vertical offset from its normal position. Text with `SUPERSCRIPT` or `SUBSCRIPT` baseline offsets is automatically rendered in a smaller font size, computed based on the `font_size` field. The `font_size` itself is not affected by changes in this field.
                      &quot;bold&quot;: True or False, # Whether or not the text is rendered as bold.
                      &quot;fontSize&quot;: { # A magnitude in a single direction in the specified units. # The size of the text&#x27;s font.
                        &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                        &quot;magnitude&quot;: 3.14, # The magnitude.
                      },
                      &quot;foregroundColor&quot;: { # A color that can either be fully opaque or fully transparent. # The foreground color of the text. If set, the color is either an RGB color or transparent, depending on the `color` field.
                        &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                          &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                            &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                            &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                            &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                          },
                        },
                      },
                      &quot;backgroundColor&quot;: { # A color that can either be fully opaque or fully transparent. # The background color of the text. If set, the color is either an RGB color or transparent, depending on the `color` field.
                        &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                          &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                            &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                            &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                            &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                          },
                        },
                      },
                      &quot;link&quot;: { # A reference to another portion of a document or an external URL resource. # The hyperlink destination of the text. If unset, there is no link. Links are not inherited from parent text. Changing the link in an update request causes some other changes to the text style of the range: * When setting a link, the text foreground color will be updated to the default link color and the text will be underlined. If these fields are modified in the same request, those values will be used instead of the link defaults. * Setting a link on a text range that overlaps with an existing link will also update the existing link to point to the new URL. * Links are not settable on newline characters. As a result, setting a link on a text range that crosses a paragraph boundary, such as `&quot;ABC\n123&quot;`, will separate the newline character(s) into their own text runs. The link will be applied separately to the runs before and after the newline. * Removing a link will update the text style of the range to match the style of the preceding text (or the default text styles if the preceding text is another link) unless different styles are being set in the same request.
                        &quot;bookmarkId&quot;: &quot;A String&quot;, # The ID of a bookmark in this document.
                        &quot;url&quot;: &quot;A String&quot;, # An external URL.
                        &quot;headingId&quot;: &quot;A String&quot;, # The ID of a heading in this document.
                      },
                      &quot;strikethrough&quot;: True or False, # Whether or not the text is struck through.
                      &quot;weightedFontFamily&quot;: { # Represents a font family and weight of text. # The font family and rendered weight of the text. If an update request specifies values for both `weighted_font_family` and `bold`, the `weighted_font_family` is applied first, then `bold`. If `weighted_font_family#weight` is not set, it defaults to `400`. If `weighted_font_family` is set, then `weighted_font_family#font_family` must also be set with a non-empty value. Otherwise, a 400 bad request error is returned.
                        &quot;fontFamily&quot;: &quot;A String&quot;, # The font family of the text. The font family can be any font from the Font menu in Docs or from [Google Fonts] (https://fonts.google.com/). If the font name is unrecognized, the text is rendered in `Arial`.
                        &quot;weight&quot;: 42, # The weight of the font. This field can have any value that is a multiple of `100` between `100` and `900`, inclusive. This range corresponds to the numerical values described in the CSS 2.1 Specification, [section 15.6](https://www.w3.org/TR/CSS21/fonts.html#font-boldness), with non-numerical values disallowed. The default value is `400` (&quot;normal&quot;). The font weight makes up just one component of the rendered font weight. The rendered weight is determined by a combination of the `weight` and the text style&#x27;s resolved `bold` value, after accounting for inheritance: * If the text is bold and the weight is less than `400`, the rendered weight is 400. * If the text is bold and the weight is greater than or equal to `400` but is less than `700`, the rendered weight is `700`. * If the weight is greater than or equal to `700`, the rendered weight is equal to the weight. * If the text is not bold, the rendered weight is equal to the weight.
                      },
                      &quot;underline&quot;: True or False, # Whether or not the text is underlined.
                      &quot;smallCaps&quot;: True or False, # Whether or not the text is in small capital letters.
                    },
                  },
                  &quot;inlineObjectElement&quot;: { # A ParagraphElement that contains an InlineObject. # An inline object paragraph element.
                    &quot;suggestedDeletionIds&quot;: [ # The suggested deletion IDs. If empty, then there are no suggested deletions of this content.
                      &quot;A String&quot;,
                    ],
                    &quot;suggestedInsertionIds&quot;: [ # The suggested insertion IDs. An InlineObjectElement may have multiple insertion IDs if it is a nested suggested change. If empty, then this is not a suggested insertion.
                      &quot;A String&quot;,
                    ],
                    &quot;suggestedTextStyleChanges&quot;: { # The suggested text style changes to this InlineObject, keyed by suggestion ID.
                      &quot;a_key&quot;: { # A suggested change to a TextStyle.
                        &quot;textStyleSuggestionState&quot;: { # A mask that indicates which of the fields on the base TextStyle have been changed in this suggestion. For any field set to true, there is a new suggested value. # A mask that indicates which of the fields on the base TextStyle have been changed in this suggestion.
                          &quot;backgroundColorSuggested&quot;: True or False, # Indicates if there was a suggested change to background_color.
                          &quot;fontSizeSuggested&quot;: True or False, # Indicates if there was a suggested change to font_size.
                          &quot;boldSuggested&quot;: True or False, # Indicates if there was a suggested change to bold.
                          &quot;baselineOffsetSuggested&quot;: True or False, # Indicates if there was a suggested change to baseline_offset.
                          &quot;foregroundColorSuggested&quot;: True or False, # Indicates if there was a suggested change to foreground_color.
                          &quot;italicSuggested&quot;: True or False, # Indicates if there was a suggested change to italic.
                          &quot;linkSuggested&quot;: True or False, # Indicates if there was a suggested change to link.
                          &quot;underlineSuggested&quot;: True or False, # Indicates if there was a suggested change to underline.
                          &quot;weightedFontFamilySuggested&quot;: True or False, # Indicates if there was a suggested change to weighted_font_family.
                          &quot;smallCapsSuggested&quot;: True or False, # Indicates if there was a suggested change to small_caps.
                          &quot;strikethroughSuggested&quot;: True or False, # Indicates if there was a suggested change to strikethrough.
                        },
                        &quot;textStyle&quot;: { # Represents the styling that can be applied to text. Inherited text styles are represented as unset fields in this message. A text style&#x27;s parent depends on where the text style is defined: * The TextStyle of text in a Paragraph inherits from the paragraph&#x27;s corresponding named style type. * The TextStyle on a named style inherits from the normal text named style. * The TextStyle of the normal text named style inherits from the default text style in the Docs editor. * The TextStyle on a Paragraph element that is contained in a table may inherit its text style from the table style. If the text style does not inherit from a parent, unsetting fields will revert the style to a value matching the defaults in the Docs editor. # A TextStyle that only includes the changes made in this suggestion. This can be used along with the text_style_suggestion_state to see which fields have changed and their new values.
                          &quot;italic&quot;: True or False, # Whether or not the text is italicized.
                          &quot;baselineOffset&quot;: &quot;A String&quot;, # The text&#x27;s vertical offset from its normal position. Text with `SUPERSCRIPT` or `SUBSCRIPT` baseline offsets is automatically rendered in a smaller font size, computed based on the `font_size` field. The `font_size` itself is not affected by changes in this field.
                          &quot;bold&quot;: True or False, # Whether or not the text is rendered as bold.
                          &quot;fontSize&quot;: { # A magnitude in a single direction in the specified units. # The size of the text&#x27;s font.
                            &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                            &quot;magnitude&quot;: 3.14, # The magnitude.
                          },
                          &quot;foregroundColor&quot;: { # A color that can either be fully opaque or fully transparent. # The foreground color of the text. If set, the color is either an RGB color or transparent, depending on the `color` field.
                            &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                              &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                                &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                                &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                                &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                              },
                            },
                          },
                          &quot;backgroundColor&quot;: { # A color that can either be fully opaque or fully transparent. # The background color of the text. If set, the color is either an RGB color or transparent, depending on the `color` field.
                            &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                              &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                                &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                                &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                                &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                              },
                            },
                          },
                          &quot;link&quot;: { # A reference to another portion of a document or an external URL resource. # The hyperlink destination of the text. If unset, there is no link. Links are not inherited from parent text. Changing the link in an update request causes some other changes to the text style of the range: * When setting a link, the text foreground color will be updated to the default link color and the text will be underlined. If these fields are modified in the same request, those values will be used instead of the link defaults. * Setting a link on a text range that overlaps with an existing link will also update the existing link to point to the new URL. * Links are not settable on newline characters. As a result, setting a link on a text range that crosses a paragraph boundary, such as `&quot;ABC\n123&quot;`, will separate the newline character(s) into their own text runs. The link will be applied separately to the runs before and after the newline. * Removing a link will update the text style of the range to match the style of the preceding text (or the default text styles if the preceding text is another link) unless different styles are being set in the same request.
                            &quot;bookmarkId&quot;: &quot;A String&quot;, # The ID of a bookmark in this document.
                            &quot;url&quot;: &quot;A String&quot;, # An external URL.
                            &quot;headingId&quot;: &quot;A String&quot;, # The ID of a heading in this document.
                          },
                          &quot;strikethrough&quot;: True or False, # Whether or not the text is struck through.
                          &quot;weightedFontFamily&quot;: { # Represents a font family and weight of text. # The font family and rendered weight of the text. If an update request specifies values for both `weighted_font_family` and `bold`, the `weighted_font_family` is applied first, then `bold`. If `weighted_font_family#weight` is not set, it defaults to `400`. If `weighted_font_family` is set, then `weighted_font_family#font_family` must also be set with a non-empty value. Otherwise, a 400 bad request error is returned.
                            &quot;fontFamily&quot;: &quot;A String&quot;, # The font family of the text. The font family can be any font from the Font menu in Docs or from [Google Fonts] (https://fonts.google.com/). If the font name is unrecognized, the text is rendered in `Arial`.
                            &quot;weight&quot;: 42, # The weight of the font. This field can have any value that is a multiple of `100` between `100` and `900`, inclusive. This range corresponds to the numerical values described in the CSS 2.1 Specification, [section 15.6](https://www.w3.org/TR/CSS21/fonts.html#font-boldness), with non-numerical values disallowed. The default value is `400` (&quot;normal&quot;). The font weight makes up just one component of the rendered font weight. The rendered weight is determined by a combination of the `weight` and the text style&#x27;s resolved `bold` value, after accounting for inheritance: * If the text is bold and the weight is less than `400`, the rendered weight is 400. * If the text is bold and the weight is greater than or equal to `400` but is less than `700`, the rendered weight is `700`. * If the weight is greater than or equal to `700`, the rendered weight is equal to the weight. * If the text is not bold, the rendered weight is equal to the weight.
                          },
                          &quot;underline&quot;: True or False, # Whether or not the text is underlined.
                          &quot;smallCaps&quot;: True or False, # Whether or not the text is in small capital letters.
                        },
                      },
                    },
                    &quot;inlineObjectId&quot;: &quot;A String&quot;, # The ID of the InlineObject this element contains.
                    &quot;textStyle&quot;: { # Represents the styling that can be applied to text. Inherited text styles are represented as unset fields in this message. A text style&#x27;s parent depends on where the text style is defined: * The TextStyle of text in a Paragraph inherits from the paragraph&#x27;s corresponding named style type. * The TextStyle on a named style inherits from the normal text named style. * The TextStyle of the normal text named style inherits from the default text style in the Docs editor. * The TextStyle on a Paragraph element that is contained in a table may inherit its text style from the table style. If the text style does not inherit from a parent, unsetting fields will revert the style to a value matching the defaults in the Docs editor. # The text style of this InlineObjectElement. Similar to text content, like text runs and footnote references, the text style of an inline object element can affect content layout as well as the styling of text inserted adjacent to it.
                      &quot;italic&quot;: True or False, # Whether or not the text is italicized.
                      &quot;baselineOffset&quot;: &quot;A String&quot;, # The text&#x27;s vertical offset from its normal position. Text with `SUPERSCRIPT` or `SUBSCRIPT` baseline offsets is automatically rendered in a smaller font size, computed based on the `font_size` field. The `font_size` itself is not affected by changes in this field.
                      &quot;bold&quot;: True or False, # Whether or not the text is rendered as bold.
                      &quot;fontSize&quot;: { # A magnitude in a single direction in the specified units. # The size of the text&#x27;s font.
                        &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                        &quot;magnitude&quot;: 3.14, # The magnitude.
                      },
                      &quot;foregroundColor&quot;: { # A color that can either be fully opaque or fully transparent. # The foreground color of the text. If set, the color is either an RGB color or transparent, depending on the `color` field.
                        &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                          &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                            &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                            &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                            &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                          },
                        },
                      },
                      &quot;backgroundColor&quot;: { # A color that can either be fully opaque or fully transparent. # The background color of the text. If set, the color is either an RGB color or transparent, depending on the `color` field.
                        &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                          &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                            &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                            &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                            &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                          },
                        },
                      },
                      &quot;link&quot;: { # A reference to another portion of a document or an external URL resource. # The hyperlink destination of the text. If unset, there is no link. Links are not inherited from parent text. Changing the link in an update request causes some other changes to the text style of the range: * When setting a link, the text foreground color will be updated to the default link color and the text will be underlined. If these fields are modified in the same request, those values will be used instead of the link defaults. * Setting a link on a text range that overlaps with an existing link will also update the existing link to point to the new URL. * Links are not settable on newline characters. As a result, setting a link on a text range that crosses a paragraph boundary, such as `&quot;ABC\n123&quot;`, will separate the newline character(s) into their own text runs. The link will be applied separately to the runs before and after the newline. * Removing a link will update the text style of the range to match the style of the preceding text (or the default text styles if the preceding text is another link) unless different styles are being set in the same request.
                        &quot;bookmarkId&quot;: &quot;A String&quot;, # The ID of a bookmark in this document.
                        &quot;url&quot;: &quot;A String&quot;, # An external URL.
                        &quot;headingId&quot;: &quot;A String&quot;, # The ID of a heading in this document.
                      },
                      &quot;strikethrough&quot;: True or False, # Whether or not the text is struck through.
                      &quot;weightedFontFamily&quot;: { # Represents a font family and weight of text. # The font family and rendered weight of the text. If an update request specifies values for both `weighted_font_family` and `bold`, the `weighted_font_family` is applied first, then `bold`. If `weighted_font_family#weight` is not set, it defaults to `400`. If `weighted_font_family` is set, then `weighted_font_family#font_family` must also be set with a non-empty value. Otherwise, a 400 bad request error is returned.
                        &quot;fontFamily&quot;: &quot;A String&quot;, # The font family of the text. The font family can be any font from the Font menu in Docs or from [Google Fonts] (https://fonts.google.com/). If the font name is unrecognized, the text is rendered in `Arial`.
                        &quot;weight&quot;: 42, # The weight of the font. This field can have any value that is a multiple of `100` between `100` and `900`, inclusive. This range corresponds to the numerical values described in the CSS 2.1 Specification, [section 15.6](https://www.w3.org/TR/CSS21/fonts.html#font-boldness), with non-numerical values disallowed. The default value is `400` (&quot;normal&quot;). The font weight makes up just one component of the rendered font weight. The rendered weight is determined by a combination of the `weight` and the text style&#x27;s resolved `bold` value, after accounting for inheritance: * If the text is bold and the weight is less than `400`, the rendered weight is 400. * If the text is bold and the weight is greater than or equal to `400` but is less than `700`, the rendered weight is `700`. * If the weight is greater than or equal to `700`, the rendered weight is equal to the weight. * If the text is not bold, the rendered weight is equal to the weight.
                      },
                      &quot;underline&quot;: True or False, # Whether or not the text is underlined.
                      &quot;smallCaps&quot;: True or False, # Whether or not the text is in small capital letters.
                    },
                  },
                  &quot;footnoteReference&quot;: { # A ParagraphElement representing a footnote reference. A footnote reference is the inline content rendered with a number and is used to identify the footnote. # A footnote reference paragraph element.
                    &quot;footnoteId&quot;: &quot;A String&quot;, # The ID of the footnote that contains the content of this footnote reference.
                    &quot;suggestedInsertionIds&quot;: [ # The suggested insertion IDs. A FootnoteReference may have multiple insertion IDs if it is a nested suggested change. If empty, then this is not a suggested insertion.
                      &quot;A String&quot;,
                    ],
                    &quot;footnoteNumber&quot;: &quot;A String&quot;, # The rendered number of this footnote.
                    &quot;suggestedDeletionIds&quot;: [ # The suggested deletion IDs. If empty, then there are no suggested deletions of this content.
                      &quot;A String&quot;,
                    ],
                    &quot;suggestedTextStyleChanges&quot;: { # The suggested text style changes to this FootnoteReference, keyed by suggestion ID.
                      &quot;a_key&quot;: { # A suggested change to a TextStyle.
                        &quot;textStyleSuggestionState&quot;: { # A mask that indicates which of the fields on the base TextStyle have been changed in this suggestion. For any field set to true, there is a new suggested value. # A mask that indicates which of the fields on the base TextStyle have been changed in this suggestion.
                          &quot;backgroundColorSuggested&quot;: True or False, # Indicates if there was a suggested change to background_color.
                          &quot;fontSizeSuggested&quot;: True or False, # Indicates if there was a suggested change to font_size.
                          &quot;boldSuggested&quot;: True or False, # Indicates if there was a suggested change to bold.
                          &quot;baselineOffsetSuggested&quot;: True or False, # Indicates if there was a suggested change to baseline_offset.
                          &quot;foregroundColorSuggested&quot;: True or False, # Indicates if there was a suggested change to foreground_color.
                          &quot;italicSuggested&quot;: True or False, # Indicates if there was a suggested change to italic.
                          &quot;linkSuggested&quot;: True or False, # Indicates if there was a suggested change to link.
                          &quot;underlineSuggested&quot;: True or False, # Indicates if there was a suggested change to underline.
                          &quot;weightedFontFamilySuggested&quot;: True or False, # Indicates if there was a suggested change to weighted_font_family.
                          &quot;smallCapsSuggested&quot;: True or False, # Indicates if there was a suggested change to small_caps.
                          &quot;strikethroughSuggested&quot;: True or False, # Indicates if there was a suggested change to strikethrough.
                        },
                        &quot;textStyle&quot;: { # Represents the styling that can be applied to text. Inherited text styles are represented as unset fields in this message. A text style&#x27;s parent depends on where the text style is defined: * The TextStyle of text in a Paragraph inherits from the paragraph&#x27;s corresponding named style type. * The TextStyle on a named style inherits from the normal text named style. * The TextStyle of the normal text named style inherits from the default text style in the Docs editor. * The TextStyle on a Paragraph element that is contained in a table may inherit its text style from the table style. If the text style does not inherit from a parent, unsetting fields will revert the style to a value matching the defaults in the Docs editor. # A TextStyle that only includes the changes made in this suggestion. This can be used along with the text_style_suggestion_state to see which fields have changed and their new values.
                          &quot;italic&quot;: True or False, # Whether or not the text is italicized.
                          &quot;baselineOffset&quot;: &quot;A String&quot;, # The text&#x27;s vertical offset from its normal position. Text with `SUPERSCRIPT` or `SUBSCRIPT` baseline offsets is automatically rendered in a smaller font size, computed based on the `font_size` field. The `font_size` itself is not affected by changes in this field.
                          &quot;bold&quot;: True or False, # Whether or not the text is rendered as bold.
                          &quot;fontSize&quot;: { # A magnitude in a single direction in the specified units. # The size of the text&#x27;s font.
                            &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                            &quot;magnitude&quot;: 3.14, # The magnitude.
                          },
                          &quot;foregroundColor&quot;: { # A color that can either be fully opaque or fully transparent. # The foreground color of the text. If set, the color is either an RGB color or transparent, depending on the `color` field.
                            &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                              &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                                &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                                &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                                &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                              },
                            },
                          },
                          &quot;backgroundColor&quot;: { # A color that can either be fully opaque or fully transparent. # The background color of the text. If set, the color is either an RGB color or transparent, depending on the `color` field.
                            &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                              &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                                &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                                &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                                &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                              },
                            },
                          },
                          &quot;link&quot;: { # A reference to another portion of a document or an external URL resource. # The hyperlink destination of the text. If unset, there is no link. Links are not inherited from parent text. Changing the link in an update request causes some other changes to the text style of the range: * When setting a link, the text foreground color will be updated to the default link color and the text will be underlined. If these fields are modified in the same request, those values will be used instead of the link defaults. * Setting a link on a text range that overlaps with an existing link will also update the existing link to point to the new URL. * Links are not settable on newline characters. As a result, setting a link on a text range that crosses a paragraph boundary, such as `&quot;ABC\n123&quot;`, will separate the newline character(s) into their own text runs. The link will be applied separately to the runs before and after the newline. * Removing a link will update the text style of the range to match the style of the preceding text (or the default text styles if the preceding text is another link) unless different styles are being set in the same request.
                            &quot;bookmarkId&quot;: &quot;A String&quot;, # The ID of a bookmark in this document.
                            &quot;url&quot;: &quot;A String&quot;, # An external URL.
                            &quot;headingId&quot;: &quot;A String&quot;, # The ID of a heading in this document.
                          },
                          &quot;strikethrough&quot;: True or False, # Whether or not the text is struck through.
                          &quot;weightedFontFamily&quot;: { # Represents a font family and weight of text. # The font family and rendered weight of the text. If an update request specifies values for both `weighted_font_family` and `bold`, the `weighted_font_family` is applied first, then `bold`. If `weighted_font_family#weight` is not set, it defaults to `400`. If `weighted_font_family` is set, then `weighted_font_family#font_family` must also be set with a non-empty value. Otherwise, a 400 bad request error is returned.
                            &quot;fontFamily&quot;: &quot;A String&quot;, # The font family of the text. The font family can be any font from the Font menu in Docs or from [Google Fonts] (https://fonts.google.com/). If the font name is unrecognized, the text is rendered in `Arial`.
                            &quot;weight&quot;: 42, # The weight of the font. This field can have any value that is a multiple of `100` between `100` and `900`, inclusive. This range corresponds to the numerical values described in the CSS 2.1 Specification, [section 15.6](https://www.w3.org/TR/CSS21/fonts.html#font-boldness), with non-numerical values disallowed. The default value is `400` (&quot;normal&quot;). The font weight makes up just one component of the rendered font weight. The rendered weight is determined by a combination of the `weight` and the text style&#x27;s resolved `bold` value, after accounting for inheritance: * If the text is bold and the weight is less than `400`, the rendered weight is 400. * If the text is bold and the weight is greater than or equal to `400` but is less than `700`, the rendered weight is `700`. * If the weight is greater than or equal to `700`, the rendered weight is equal to the weight. * If the text is not bold, the rendered weight is equal to the weight.
                          },
                          &quot;underline&quot;: True or False, # Whether or not the text is underlined.
                          &quot;smallCaps&quot;: True or False, # Whether or not the text is in small capital letters.
                        },
                      },
                    },
                    &quot;textStyle&quot;: { # Represents the styling that can be applied to text. Inherited text styles are represented as unset fields in this message. A text style&#x27;s parent depends on where the text style is defined: * The TextStyle of text in a Paragraph inherits from the paragraph&#x27;s corresponding named style type. * The TextStyle on a named style inherits from the normal text named style. * The TextStyle of the normal text named style inherits from the default text style in the Docs editor. * The TextStyle on a Paragraph element that is contained in a table may inherit its text style from the table style. If the text style does not inherit from a parent, unsetting fields will revert the style to a value matching the defaults in the Docs editor. # The text style of this FootnoteReference.
                      &quot;italic&quot;: True or False, # Whether or not the text is italicized.
                      &quot;baselineOffset&quot;: &quot;A String&quot;, # The text&#x27;s vertical offset from its normal position. Text with `SUPERSCRIPT` or `SUBSCRIPT` baseline offsets is automatically rendered in a smaller font size, computed based on the `font_size` field. The `font_size` itself is not affected by changes in this field.
                      &quot;bold&quot;: True or False, # Whether or not the text is rendered as bold.
                      &quot;fontSize&quot;: { # A magnitude in a single direction in the specified units. # The size of the text&#x27;s font.
                        &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                        &quot;magnitude&quot;: 3.14, # The magnitude.
                      },
                      &quot;foregroundColor&quot;: { # A color that can either be fully opaque or fully transparent. # The foreground color of the text. If set, the color is either an RGB color or transparent, depending on the `color` field.
                        &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                          &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                            &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                            &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                            &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                          },
                        },
                      },
                      &quot;backgroundColor&quot;: { # A color that can either be fully opaque or fully transparent. # The background color of the text. If set, the color is either an RGB color or transparent, depending on the `color` field.
                        &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                          &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                            &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                            &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                            &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                          },
                        },
                      },
                      &quot;link&quot;: { # A reference to another portion of a document or an external URL resource. # The hyperlink destination of the text. If unset, there is no link. Links are not inherited from parent text. Changing the link in an update request causes some other changes to the text style of the range: * When setting a link, the text foreground color will be updated to the default link color and the text will be underlined. If these fields are modified in the same request, those values will be used instead of the link defaults. * Setting a link on a text range that overlaps with an existing link will also update the existing link to point to the new URL. * Links are not settable on newline characters. As a result, setting a link on a text range that crosses a paragraph boundary, such as `&quot;ABC\n123&quot;`, will separate the newline character(s) into their own text runs. The link will be applied separately to the runs before and after the newline. * Removing a link will update the text style of the range to match the style of the preceding text (or the default text styles if the preceding text is another link) unless different styles are being set in the same request.
                        &quot;bookmarkId&quot;: &quot;A String&quot;, # The ID of a bookmark in this document.
                        &quot;url&quot;: &quot;A String&quot;, # An external URL.
                        &quot;headingId&quot;: &quot;A String&quot;, # The ID of a heading in this document.
                      },
                      &quot;strikethrough&quot;: True or False, # Whether or not the text is struck through.
                      &quot;weightedFontFamily&quot;: { # Represents a font family and weight of text. # The font family and rendered weight of the text. If an update request specifies values for both `weighted_font_family` and `bold`, the `weighted_font_family` is applied first, then `bold`. If `weighted_font_family#weight` is not set, it defaults to `400`. If `weighted_font_family` is set, then `weighted_font_family#font_family` must also be set with a non-empty value. Otherwise, a 400 bad request error is returned.
                        &quot;fontFamily&quot;: &quot;A String&quot;, # The font family of the text. The font family can be any font from the Font menu in Docs or from [Google Fonts] (https://fonts.google.com/). If the font name is unrecognized, the text is rendered in `Arial`.
                        &quot;weight&quot;: 42, # The weight of the font. This field can have any value that is a multiple of `100` between `100` and `900`, inclusive. This range corresponds to the numerical values described in the CSS 2.1 Specification, [section 15.6](https://www.w3.org/TR/CSS21/fonts.html#font-boldness), with non-numerical values disallowed. The default value is `400` (&quot;normal&quot;). The font weight makes up just one component of the rendered font weight. The rendered weight is determined by a combination of the `weight` and the text style&#x27;s resolved `bold` value, after accounting for inheritance: * If the text is bold and the weight is less than `400`, the rendered weight is 400. * If the text is bold and the weight is greater than or equal to `400` but is less than `700`, the rendered weight is `700`. * If the weight is greater than or equal to `700`, the rendered weight is equal to the weight. * If the text is not bold, the rendered weight is equal to the weight.
                      },
                      &quot;underline&quot;: True or False, # Whether or not the text is underlined.
                      &quot;smallCaps&quot;: True or False, # Whether or not the text is in small capital letters.
                    },
                  },
                  &quot;startIndex&quot;: 42, # The zero-based start index of this paragraph element, in UTF-16 code units.
                  &quot;endIndex&quot;: 42, # The zero-base end index of this paragraph element, exclusive, in UTF-16 code units.
                  &quot;equation&quot;: { # A ParagraphElement representing an equation. # An equation paragraph element.
                    &quot;suggestedDeletionIds&quot;: [ # The suggested deletion IDs. If empty, then there are no suggested deletions of this content.
                      &quot;A String&quot;,
                    ],
                    &quot;suggestedInsertionIds&quot;: [ # The suggested insertion IDs. A Equation may have multiple insertion IDs if it is a nested suggested change. If empty, then this is not a suggested insertion.
                      &quot;A String&quot;,
                    ],
                  },
                  &quot;columnBreak&quot;: { # A ParagraphElement representing a column break. A column break makes the subsequent text start at the top of the next column. # A column break paragraph element.
                    &quot;suggestedTextStyleChanges&quot;: { # The suggested text style changes to this ColumnBreak, keyed by suggestion ID.
                      &quot;a_key&quot;: { # A suggested change to a TextStyle.
                        &quot;textStyleSuggestionState&quot;: { # A mask that indicates which of the fields on the base TextStyle have been changed in this suggestion. For any field set to true, there is a new suggested value. # A mask that indicates which of the fields on the base TextStyle have been changed in this suggestion.
                          &quot;backgroundColorSuggested&quot;: True or False, # Indicates if there was a suggested change to background_color.
                          &quot;fontSizeSuggested&quot;: True or False, # Indicates if there was a suggested change to font_size.
                          &quot;boldSuggested&quot;: True or False, # Indicates if there was a suggested change to bold.
                          &quot;baselineOffsetSuggested&quot;: True or False, # Indicates if there was a suggested change to baseline_offset.
                          &quot;foregroundColorSuggested&quot;: True or False, # Indicates if there was a suggested change to foreground_color.
                          &quot;italicSuggested&quot;: True or False, # Indicates if there was a suggested change to italic.
                          &quot;linkSuggested&quot;: True or False, # Indicates if there was a suggested change to link.
                          &quot;underlineSuggested&quot;: True or False, # Indicates if there was a suggested change to underline.
                          &quot;weightedFontFamilySuggested&quot;: True or False, # Indicates if there was a suggested change to weighted_font_family.
                          &quot;smallCapsSuggested&quot;: True or False, # Indicates if there was a suggested change to small_caps.
                          &quot;strikethroughSuggested&quot;: True or False, # Indicates if there was a suggested change to strikethrough.
                        },
                        &quot;textStyle&quot;: { # Represents the styling that can be applied to text. Inherited text styles are represented as unset fields in this message. A text style&#x27;s parent depends on where the text style is defined: * The TextStyle of text in a Paragraph inherits from the paragraph&#x27;s corresponding named style type. * The TextStyle on a named style inherits from the normal text named style. * The TextStyle of the normal text named style inherits from the default text style in the Docs editor. * The TextStyle on a Paragraph element that is contained in a table may inherit its text style from the table style. If the text style does not inherit from a parent, unsetting fields will revert the style to a value matching the defaults in the Docs editor. # A TextStyle that only includes the changes made in this suggestion. This can be used along with the text_style_suggestion_state to see which fields have changed and their new values.
                          &quot;italic&quot;: True or False, # Whether or not the text is italicized.
                          &quot;baselineOffset&quot;: &quot;A String&quot;, # The text&#x27;s vertical offset from its normal position. Text with `SUPERSCRIPT` or `SUBSCRIPT` baseline offsets is automatically rendered in a smaller font size, computed based on the `font_size` field. The `font_size` itself is not affected by changes in this field.
                          &quot;bold&quot;: True or False, # Whether or not the text is rendered as bold.
                          &quot;fontSize&quot;: { # A magnitude in a single direction in the specified units. # The size of the text&#x27;s font.
                            &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                            &quot;magnitude&quot;: 3.14, # The magnitude.
                          },
                          &quot;foregroundColor&quot;: { # A color that can either be fully opaque or fully transparent. # The foreground color of the text. If set, the color is either an RGB color or transparent, depending on the `color` field.
                            &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                              &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                                &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                                &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                                &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                              },
                            },
                          },
                          &quot;backgroundColor&quot;: { # A color that can either be fully opaque or fully transparent. # The background color of the text. If set, the color is either an RGB color or transparent, depending on the `color` field.
                            &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                              &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                                &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                                &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                                &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                              },
                            },
                          },
                          &quot;link&quot;: { # A reference to another portion of a document or an external URL resource. # The hyperlink destination of the text. If unset, there is no link. Links are not inherited from parent text. Changing the link in an update request causes some other changes to the text style of the range: * When setting a link, the text foreground color will be updated to the default link color and the text will be underlined. If these fields are modified in the same request, those values will be used instead of the link defaults. * Setting a link on a text range that overlaps with an existing link will also update the existing link to point to the new URL. * Links are not settable on newline characters. As a result, setting a link on a text range that crosses a paragraph boundary, such as `&quot;ABC\n123&quot;`, will separate the newline character(s) into their own text runs. The link will be applied separately to the runs before and after the newline. * Removing a link will update the text style of the range to match the style of the preceding text (or the default text styles if the preceding text is another link) unless different styles are being set in the same request.
                            &quot;bookmarkId&quot;: &quot;A String&quot;, # The ID of a bookmark in this document.
                            &quot;url&quot;: &quot;A String&quot;, # An external URL.
                            &quot;headingId&quot;: &quot;A String&quot;, # The ID of a heading in this document.
                          },
                          &quot;strikethrough&quot;: True or False, # Whether or not the text is struck through.
                          &quot;weightedFontFamily&quot;: { # Represents a font family and weight of text. # The font family and rendered weight of the text. If an update request specifies values for both `weighted_font_family` and `bold`, the `weighted_font_family` is applied first, then `bold`. If `weighted_font_family#weight` is not set, it defaults to `400`. If `weighted_font_family` is set, then `weighted_font_family#font_family` must also be set with a non-empty value. Otherwise, a 400 bad request error is returned.
                            &quot;fontFamily&quot;: &quot;A String&quot;, # The font family of the text. The font family can be any font from the Font menu in Docs or from [Google Fonts] (https://fonts.google.com/). If the font name is unrecognized, the text is rendered in `Arial`.
                            &quot;weight&quot;: 42, # The weight of the font. This field can have any value that is a multiple of `100` between `100` and `900`, inclusive. This range corresponds to the numerical values described in the CSS 2.1 Specification, [section 15.6](https://www.w3.org/TR/CSS21/fonts.html#font-boldness), with non-numerical values disallowed. The default value is `400` (&quot;normal&quot;). The font weight makes up just one component of the rendered font weight. The rendered weight is determined by a combination of the `weight` and the text style&#x27;s resolved `bold` value, after accounting for inheritance: * If the text is bold and the weight is less than `400`, the rendered weight is 400. * If the text is bold and the weight is greater than or equal to `400` but is less than `700`, the rendered weight is `700`. * If the weight is greater than or equal to `700`, the rendered weight is equal to the weight. * If the text is not bold, the rendered weight is equal to the weight.
                          },
                          &quot;underline&quot;: True or False, # Whether or not the text is underlined.
                          &quot;smallCaps&quot;: True or False, # Whether or not the text is in small capital letters.
                        },
                      },
                    },
                    &quot;suggestedDeletionIds&quot;: [ # The suggested deletion IDs. If empty, then there are no suggested deletions of this content.
                      &quot;A String&quot;,
                    ],
                    &quot;textStyle&quot;: { # Represents the styling that can be applied to text. Inherited text styles are represented as unset fields in this message. A text style&#x27;s parent depends on where the text style is defined: * The TextStyle of text in a Paragraph inherits from the paragraph&#x27;s corresponding named style type. * The TextStyle on a named style inherits from the normal text named style. * The TextStyle of the normal text named style inherits from the default text style in the Docs editor. * The TextStyle on a Paragraph element that is contained in a table may inherit its text style from the table style. If the text style does not inherit from a parent, unsetting fields will revert the style to a value matching the defaults in the Docs editor. # The text style of this ColumnBreak. Similar to text content, like text runs and footnote references, the text style of a column break can affect content layout as well as the styling of text inserted adjacent to it.
                      &quot;italic&quot;: True or False, # Whether or not the text is italicized.
                      &quot;baselineOffset&quot;: &quot;A String&quot;, # The text&#x27;s vertical offset from its normal position. Text with `SUPERSCRIPT` or `SUBSCRIPT` baseline offsets is automatically rendered in a smaller font size, computed based on the `font_size` field. The `font_size` itself is not affected by changes in this field.
                      &quot;bold&quot;: True or False, # Whether or not the text is rendered as bold.
                      &quot;fontSize&quot;: { # A magnitude in a single direction in the specified units. # The size of the text&#x27;s font.
                        &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                        &quot;magnitude&quot;: 3.14, # The magnitude.
                      },
                      &quot;foregroundColor&quot;: { # A color that can either be fully opaque or fully transparent. # The foreground color of the text. If set, the color is either an RGB color or transparent, depending on the `color` field.
                        &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                          &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                            &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                            &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                            &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                          },
                        },
                      },
                      &quot;backgroundColor&quot;: { # A color that can either be fully opaque or fully transparent. # The background color of the text. If set, the color is either an RGB color or transparent, depending on the `color` field.
                        &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                          &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                            &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                            &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                            &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                          },
                        },
                      },
                      &quot;link&quot;: { # A reference to another portion of a document or an external URL resource. # The hyperlink destination of the text. If unset, there is no link. Links are not inherited from parent text. Changing the link in an update request causes some other changes to the text style of the range: * When setting a link, the text foreground color will be updated to the default link color and the text will be underlined. If these fields are modified in the same request, those values will be used instead of the link defaults. * Setting a link on a text range that overlaps with an existing link will also update the existing link to point to the new URL. * Links are not settable on newline characters. As a result, setting a link on a text range that crosses a paragraph boundary, such as `&quot;ABC\n123&quot;`, will separate the newline character(s) into their own text runs. The link will be applied separately to the runs before and after the newline. * Removing a link will update the text style of the range to match the style of the preceding text (or the default text styles if the preceding text is another link) unless different styles are being set in the same request.
                        &quot;bookmarkId&quot;: &quot;A String&quot;, # The ID of a bookmark in this document.
                        &quot;url&quot;: &quot;A String&quot;, # An external URL.
                        &quot;headingId&quot;: &quot;A String&quot;, # The ID of a heading in this document.
                      },
                      &quot;strikethrough&quot;: True or False, # Whether or not the text is struck through.
                      &quot;weightedFontFamily&quot;: { # Represents a font family and weight of text. # The font family and rendered weight of the text. If an update request specifies values for both `weighted_font_family` and `bold`, the `weighted_font_family` is applied first, then `bold`. If `weighted_font_family#weight` is not set, it defaults to `400`. If `weighted_font_family` is set, then `weighted_font_family#font_family` must also be set with a non-empty value. Otherwise, a 400 bad request error is returned.
                        &quot;fontFamily&quot;: &quot;A String&quot;, # The font family of the text. The font family can be any font from the Font menu in Docs or from [Google Fonts] (https://fonts.google.com/). If the font name is unrecognized, the text is rendered in `Arial`.
                        &quot;weight&quot;: 42, # The weight of the font. This field can have any value that is a multiple of `100` between `100` and `900`, inclusive. This range corresponds to the numerical values described in the CSS 2.1 Specification, [section 15.6](https://www.w3.org/TR/CSS21/fonts.html#font-boldness), with non-numerical values disallowed. The default value is `400` (&quot;normal&quot;). The font weight makes up just one component of the rendered font weight. The rendered weight is determined by a combination of the `weight` and the text style&#x27;s resolved `bold` value, after accounting for inheritance: * If the text is bold and the weight is less than `400`, the rendered weight is 400. * If the text is bold and the weight is greater than or equal to `400` but is less than `700`, the rendered weight is `700`. * If the weight is greater than or equal to `700`, the rendered weight is equal to the weight. * If the text is not bold, the rendered weight is equal to the weight.
                      },
                      &quot;underline&quot;: True or False, # Whether or not the text is underlined.
                      &quot;smallCaps&quot;: True or False, # Whether or not the text is in small capital letters.
                    },
                    &quot;suggestedInsertionIds&quot;: [ # The suggested insertion IDs. A ColumnBreak may have multiple insertion IDs if it is a nested suggested change. If empty, then this is not a suggested insertion.
                      &quot;A String&quot;,
                    ],
                  },
                },
              ],
              &quot;positionedObjectIds&quot;: [ # The IDs of the positioned objects tethered to this paragraph.
                &quot;A String&quot;,
              ],
              &quot;paragraphStyle&quot;: { # Styles that apply to a whole paragraph. Inherited paragraph styles are represented as unset fields in this message. A paragraph style&#x27;s parent depends on where the paragraph style is defined: * The ParagraphStyle on a Paragraph inherits from the paragraph&#x27;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 is 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. # The style of this paragraph.
                &quot;borderRight&quot;: { # A border around a paragraph. # The border to the right of this paragraph. If unset, the value is inherited from the parent. Paragraph borders cannot be partially updated. When making changes to a paragraph border the new border must be specified in its entirety.
                  &quot;color&quot;: { # A color that can either be fully opaque or fully transparent. # The color of the border.
                    &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                      &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                        &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                        &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                        &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                      },
                    },
                  },
                  &quot;width&quot;: { # A magnitude in a single direction in the specified units. # The width of the border.
                    &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                    &quot;magnitude&quot;: 3.14, # The magnitude.
                  },
                  &quot;padding&quot;: { # A magnitude in a single direction in the specified units. # The padding of the border.
                    &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                    &quot;magnitude&quot;: 3.14, # The magnitude.
                  },
                  &quot;dashStyle&quot;: &quot;A String&quot;, # The dash style of the border.
                },
                &quot;indentFirstLine&quot;: { # A magnitude in a single direction in the specified units. # The amount of indentation for the first line of the paragraph. If unset, the value is inherited from the parent.
                  &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                  &quot;magnitude&quot;: 3.14, # The magnitude.
                },
                &quot;alignment&quot;: &quot;A String&quot;, # The text alignment for this paragraph.
                &quot;lineSpacing&quot;: 3.14, # The amount of space between lines, as a percentage of normal, where normal is represented as 100.0. If unset, the value is inherited from the parent.
                &quot;keepLinesTogether&quot;: True or False, # Whether all lines of the paragraph should be laid out on the same page or column if possible. If unset, the value is inherited from the parent.
                &quot;avoidWidowAndOrphan&quot;: True or False, # Whether to avoid widows and orphans for the paragraph. If unset, the value is inherited from the parent.
                &quot;spaceBelow&quot;: { # A magnitude in a single direction in the specified units. # The amount of extra space below the paragraph. If unset, the value is inherited from the parent.
                  &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                  &quot;magnitude&quot;: 3.14, # The magnitude.
                },
                &quot;borderBetween&quot;: { # A border around a paragraph. # 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 making changes to a paragraph border the new border must be specified in its entirety.
                  &quot;color&quot;: { # A color that can either be fully opaque or fully transparent. # The color of the border.
                    &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                      &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                        &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                        &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                        &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                      },
                    },
                  },
                  &quot;width&quot;: { # A magnitude in a single direction in the specified units. # The width of the border.
                    &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                    &quot;magnitude&quot;: 3.14, # The magnitude.
                  },
                  &quot;padding&quot;: { # A magnitude in a single direction in the specified units. # The padding of the border.
                    &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                    &quot;magnitude&quot;: 3.14, # The magnitude.
                  },
                  &quot;dashStyle&quot;: &quot;A String&quot;, # The dash style of the border.
                },
                &quot;headingId&quot;: &quot;A String&quot;, # The heading ID of the paragraph. If empty, then this paragraph is not a heading. This property is read-only.
                &quot;spaceAbove&quot;: { # A magnitude in a single direction in the specified units. # The amount of extra space above the paragraph. If unset, the value is inherited from the parent.
                  &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                  &quot;magnitude&quot;: 3.14, # The magnitude.
                },
                &quot;direction&quot;: &quot;A String&quot;, # The text direction of this paragraph. If unset, the value defaults to LEFT_TO_RIGHT since paragraph direction is not inherited.
                &quot;namedStyleType&quot;: &quot;A String&quot;, # The named style type of the paragraph. Since updating the named style type affects other properties within ParagraphStyle, the named style type is applied before the other properties are updated.
                &quot;tabStops&quot;: [ # A list of the tab stops for this paragraph. The list of tab stops is not inherited. This property is read-only.
                  { # A tab stop within a paragraph.
                    &quot;offset&quot;: { # A magnitude in a single direction in the specified units. # The offset between this tab stop and the start margin.
                      &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                      &quot;magnitude&quot;: 3.14, # The magnitude.
                    },
                    &quot;alignment&quot;: &quot;A String&quot;, # The alignment of this tab stop. If unset, the value defaults to START.
                  },
                ],
                &quot;indentStart&quot;: { # A magnitude in a single direction in the specified units. # The amount of indentation for the paragraph on the side that corresponds to the start of the text, based on the current paragraph direction. If unset, the value is inherited from the parent.
                  &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                  &quot;magnitude&quot;: 3.14, # The magnitude.
                },
                &quot;keepWithNext&quot;: True or False, # Whether at least a part of this paragraph should be laid out on the same page or column as the next paragraph if possible. If unset, the value is inherited from the parent.
                &quot;borderTop&quot;: { # A border around a paragraph. # 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 making changes to a paragraph border the new border must be specified in its entirety.
                  &quot;color&quot;: { # A color that can either be fully opaque or fully transparent. # The color of the border.
                    &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                      &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                        &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                        &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                        &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                      },
                    },
                  },
                  &quot;width&quot;: { # A magnitude in a single direction in the specified units. # The width of the border.
                    &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                    &quot;magnitude&quot;: 3.14, # The magnitude.
                  },
                  &quot;padding&quot;: { # A magnitude in a single direction in the specified units. # The padding of the border.
                    &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                    &quot;magnitude&quot;: 3.14, # The magnitude.
                  },
                  &quot;dashStyle&quot;: &quot;A String&quot;, # The dash style of the border.
                },
                &quot;borderLeft&quot;: { # A border around a paragraph. # The border to the left of this paragraph. If unset, the value is inherited from the parent. Paragraph borders cannot be partially updated. When making changes to a paragraph border the new border must be specified in its entirety.
                  &quot;color&quot;: { # A color that can either be fully opaque or fully transparent. # The color of the border.
                    &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                      &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                        &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                        &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                        &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                      },
                    },
                  },
                  &quot;width&quot;: { # A magnitude in a single direction in the specified units. # The width of the border.
                    &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                    &quot;magnitude&quot;: 3.14, # The magnitude.
                  },
                  &quot;padding&quot;: { # A magnitude in a single direction in the specified units. # The padding of the border.
                    &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                    &quot;magnitude&quot;: 3.14, # The magnitude.
                  },
                  &quot;dashStyle&quot;: &quot;A String&quot;, # The dash style of the border.
                },
                &quot;borderBottom&quot;: { # A border around a paragraph. # 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 making changes to a paragraph border the new border must be specified in its entirety.
                  &quot;color&quot;: { # A color that can either be fully opaque or fully transparent. # The color of the border.
                    &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                      &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                        &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                        &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                        &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                      },
                    },
                  },
                  &quot;width&quot;: { # A magnitude in a single direction in the specified units. # The width of the border.
                    &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                    &quot;magnitude&quot;: 3.14, # The magnitude.
                  },
                  &quot;padding&quot;: { # A magnitude in a single direction in the specified units. # The padding of the border.
                    &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                    &quot;magnitude&quot;: 3.14, # The magnitude.
                  },
                  &quot;dashStyle&quot;: &quot;A String&quot;, # The dash style of the border.
                },
                &quot;shading&quot;: { # The shading of a paragraph. # The shading of the paragraph. If unset, the value is inherited from the parent.
                  &quot;backgroundColor&quot;: { # A color that can either be fully opaque or fully transparent. # The background color of this paragraph shading.
                    &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                      &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                        &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                        &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                        &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                      },
                    },
                  },
                },
                &quot;indentEnd&quot;: { # A magnitude in a single direction in the specified units. # 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.
                  &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                  &quot;magnitude&quot;: 3.14, # The magnitude.
                },
                &quot;spacingMode&quot;: &quot;A String&quot;, # The spacing mode for the paragraph.
              },
            },
            &quot;startIndex&quot;: 42, # The zero-based start index of this structural element, in UTF-16 code units.
            &quot;endIndex&quot;: 42, # The zero-based end index of this structural element, exclusive, in UTF-16 code units.
            &quot;tableOfContents&quot;: { # A StructuralElement representing a table of contents. # A table of contents type of structural element.
              &quot;suggestedInsertionIds&quot;: [ # The suggested insertion IDs. A TableOfContents may have multiple insertion IDs if it is a nested suggested change. If empty, then this is not a suggested insertion.
                &quot;A String&quot;,
              ],
              &quot;content&quot;: [ # The content of the table of contents.
                # Object with schema name: StructuralElement
              ],
              &quot;suggestedDeletionIds&quot;: [ # The suggested deletion IDs. If empty, then there are no suggested deletions of this content.
                &quot;A String&quot;,
              ],
            },
            &quot;table&quot;: { # A StructuralElement representing a table. # A table type of structural element.
              &quot;tableStyle&quot;: { # Styles that apply to a table. # The style of the table.
                &quot;tableColumnProperties&quot;: [ # The properties of each column. Note that in Docs, tables contain rows and rows contain cells, similar to HTML. So the properties for a row can be found on the row&#x27;s table_row_style.
                  { # The properties of a column in a table.
                    &quot;widthType&quot;: &quot;A String&quot;, # The width type of the column.
                    &quot;width&quot;: { # A magnitude in a single direction in the specified units. # The width of the column. Set when the column&#x27;s `width_type` is FIXED_WIDTH.
                      &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                      &quot;magnitude&quot;: 3.14, # The magnitude.
                    },
                  },
                ],
              },
              &quot;suggestedInsertionIds&quot;: [ # The suggested insertion IDs. A Table may have multiple insertion IDs if it is a nested suggested change. If empty, then this is not a suggested insertion.
                &quot;A String&quot;,
              ],
              &quot;tableRows&quot;: [ # The contents and style of each row.
                { # The contents and style of a row in a Table.
                  &quot;suggestedDeletionIds&quot;: [ # The suggested deletion IDs. If empty, then there are no suggested deletions of this content.
                    &quot;A String&quot;,
                  ],
                  &quot;suggestedInsertionIds&quot;: [ # The suggested insertion IDs. A TableRow may have multiple insertion IDs if it is a nested suggested change. If empty, then this is not a suggested insertion.
                    &quot;A String&quot;,
                  ],
                  &quot;suggestedTableRowStyleChanges&quot;: { # The suggested style changes to this row, keyed by suggestion ID.
                    &quot;a_key&quot;: { # A suggested change to a TableRowStyle.
                      &quot;tableRowStyleSuggestionState&quot;: { # A mask that indicates which of the fields on the base TableRowStyle have been changed in this suggestion. For any field set to true, there is a new suggested value. # A mask that indicates which of the fields on the base TableRowStyle have been changed in this suggestion.
                        &quot;minRowHeightSuggested&quot;: True or False, # Indicates if there was a suggested change to min_row_height.
                      },
                      &quot;tableRowStyle&quot;: { # Styles that apply to a table row. # A TableRowStyle that only includes the changes made in this suggestion. This can be used along with the table_row_style_suggestion_state to see which fields have changed and their new values.
                        &quot;minRowHeight&quot;: { # A magnitude in a single direction in the specified units. # The minimum height of the row. The row will be rendered in the Docs editor at a height equal to or greater than this value in order to show all the content in the row&#x27;s cells.
                          &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                          &quot;magnitude&quot;: 3.14, # The magnitude.
                        },
                      },
                    },
                  },
                  &quot;startIndex&quot;: 42, # The zero-based start index of this row, in UTF-16 code units.
                  &quot;tableCells&quot;: [ # The contents and style of each cell in this row. It is possible for a table to be non-rectangular, so some rows may have a different number of cells than other rows in the same table.
                    { # The contents and style of a cell in a Table.
                      &quot;tableCellStyle&quot;: { # The style of a TableCell. Inherited table cell styles are represented as unset fields in this message. A table cell style can inherit from the table&#x27;s style. # The style of the cell.
                        &quot;borderTop&quot;: { # A border around a table cell. Table cell borders cannot be transparent. To hide a table cell border, make its width 0. # The top border of the cell.
                          &quot;width&quot;: { # A magnitude in a single direction in the specified units. # The width of the border.
                            &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                            &quot;magnitude&quot;: 3.14, # The magnitude.
                          },
                          &quot;dashStyle&quot;: &quot;A String&quot;, # The dash style of the border.
                          &quot;color&quot;: { # A color that can either be fully opaque or fully transparent. # The color of the border. This color cannot be transparent.
                            &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                              &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                                &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                                &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                                &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                              },
                            },
                          },
                        },
                        &quot;borderBottom&quot;: { # A border around a table cell. Table cell borders cannot be transparent. To hide a table cell border, make its width 0. # The bottom border of the cell.
                          &quot;width&quot;: { # A magnitude in a single direction in the specified units. # The width of the border.
                            &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                            &quot;magnitude&quot;: 3.14, # The magnitude.
                          },
                          &quot;dashStyle&quot;: &quot;A String&quot;, # The dash style of the border.
                          &quot;color&quot;: { # A color that can either be fully opaque or fully transparent. # The color of the border. This color cannot be transparent.
                            &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                              &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                                &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                                &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                                &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                              },
                            },
                          },
                        },
                        &quot;contentAlignment&quot;: &quot;A String&quot;, # The alignment of the content in the table cell. The default alignment matches the alignment for newly created table cells in the Docs editor.
                        &quot;paddingLeft&quot;: { # A magnitude in a single direction in the specified units. # The left padding of the cell.
                          &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                          &quot;magnitude&quot;: 3.14, # The magnitude.
                        },
                        &quot;backgroundColor&quot;: { # A color that can either be fully opaque or fully transparent. # The background color of the cell.
                          &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                            &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                              &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                              &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                              &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                            },
                          },
                        },
                        &quot;paddingTop&quot;: { # A magnitude in a single direction in the specified units. # The top padding of the cell.
                          &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                          &quot;magnitude&quot;: 3.14, # The magnitude.
                        },
                        &quot;rowSpan&quot;: 42, # The row span of the cell. This property is read-only.
                        &quot;paddingRight&quot;: { # A magnitude in a single direction in the specified units. # The right padding of the cell.
                          &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                          &quot;magnitude&quot;: 3.14, # The magnitude.
                        },
                        &quot;borderRight&quot;: { # A border around a table cell. Table cell borders cannot be transparent. To hide a table cell border, make its width 0. # The right border of the cell.
                          &quot;width&quot;: { # A magnitude in a single direction in the specified units. # The width of the border.
                            &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                            &quot;magnitude&quot;: 3.14, # The magnitude.
                          },
                          &quot;dashStyle&quot;: &quot;A String&quot;, # The dash style of the border.
                          &quot;color&quot;: { # A color that can either be fully opaque or fully transparent. # The color of the border. This color cannot be transparent.
                            &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                              &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                                &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                                &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                                &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                              },
                            },
                          },
                        },
                        &quot;borderLeft&quot;: { # A border around a table cell. Table cell borders cannot be transparent. To hide a table cell border, make its width 0. # The left border of the cell.
                          &quot;width&quot;: { # A magnitude in a single direction in the specified units. # The width of the border.
                            &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                            &quot;magnitude&quot;: 3.14, # The magnitude.
                          },
                          &quot;dashStyle&quot;: &quot;A String&quot;, # The dash style of the border.
                          &quot;color&quot;: { # A color that can either be fully opaque or fully transparent. # The color of the border. This color cannot be transparent.
                            &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                              &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                                &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                                &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                                &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                              },
                            },
                          },
                        },
                        &quot;columnSpan&quot;: 42, # The column span of the cell. This property is read-only.
                        &quot;paddingBottom&quot;: { # A magnitude in a single direction in the specified units. # The bottom padding of the cell.
                          &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                          &quot;magnitude&quot;: 3.14, # The magnitude.
                        },
                      },
                      &quot;content&quot;: [ # The content of the cell.
                        # Object with schema name: StructuralElement
                      ],
                      &quot;suggestedDeletionIds&quot;: [ # The suggested deletion IDs. If empty, then there are no suggested deletions of this content.
                        &quot;A String&quot;,
                      ],
                      &quot;startIndex&quot;: 42, # The zero-based start index of this cell, in UTF-16 code units.
                      &quot;suggestedInsertionIds&quot;: [ # The suggested insertion IDs. A TableCell may have multiple insertion IDs if it is a nested suggested change. If empty, then this is not a suggested insertion.
                        &quot;A String&quot;,
                      ],
                      &quot;suggestedTableCellStyleChanges&quot;: { # The suggested changes to the table cell style, keyed by suggestion ID.
                        &quot;a_key&quot;: { # A suggested change to a TableCellStyle.
                          &quot;tableCellStyle&quot;: { # The style of a TableCell. Inherited table cell styles are represented as unset fields in this message. A table cell style can inherit from the table&#x27;s style. # A TableCellStyle that only includes the changes made in this suggestion. This can be used along with the table_cell_style_suggestion_state to see which fields have changed and their new values.
                            &quot;borderTop&quot;: { # A border around a table cell. Table cell borders cannot be transparent. To hide a table cell border, make its width 0. # The top border of the cell.
                              &quot;width&quot;: { # A magnitude in a single direction in the specified units. # The width of the border.
                                &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                                &quot;magnitude&quot;: 3.14, # The magnitude.
                              },
                              &quot;dashStyle&quot;: &quot;A String&quot;, # The dash style of the border.
                              &quot;color&quot;: { # A color that can either be fully opaque or fully transparent. # The color of the border. This color cannot be transparent.
                                &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                                  &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                                    &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                                    &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                                    &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                                  },
                                },
                              },
                            },
                            &quot;borderBottom&quot;: { # A border around a table cell. Table cell borders cannot be transparent. To hide a table cell border, make its width 0. # The bottom border of the cell.
                              &quot;width&quot;: { # A magnitude in a single direction in the specified units. # The width of the border.
                                &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                                &quot;magnitude&quot;: 3.14, # The magnitude.
                              },
                              &quot;dashStyle&quot;: &quot;A String&quot;, # The dash style of the border.
                              &quot;color&quot;: { # A color that can either be fully opaque or fully transparent. # The color of the border. This color cannot be transparent.
                                &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                                  &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                                    &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                                    &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                                    &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                                  },
                                },
                              },
                            },
                            &quot;contentAlignment&quot;: &quot;A String&quot;, # The alignment of the content in the table cell. The default alignment matches the alignment for newly created table cells in the Docs editor.
                            &quot;paddingLeft&quot;: { # A magnitude in a single direction in the specified units. # The left padding of the cell.
                              &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                              &quot;magnitude&quot;: 3.14, # The magnitude.
                            },
                            &quot;backgroundColor&quot;: { # A color that can either be fully opaque or fully transparent. # The background color of the cell.
                              &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                                &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                                  &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                                  &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                                  &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                                },
                              },
                            },
                            &quot;paddingTop&quot;: { # A magnitude in a single direction in the specified units. # The top padding of the cell.
                              &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                              &quot;magnitude&quot;: 3.14, # The magnitude.
                            },
                            &quot;rowSpan&quot;: 42, # The row span of the cell. This property is read-only.
                            &quot;paddingRight&quot;: { # A magnitude in a single direction in the specified units. # The right padding of the cell.
                              &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                              &quot;magnitude&quot;: 3.14, # The magnitude.
                            },
                            &quot;borderRight&quot;: { # A border around a table cell. Table cell borders cannot be transparent. To hide a table cell border, make its width 0. # The right border of the cell.
                              &quot;width&quot;: { # A magnitude in a single direction in the specified units. # The width of the border.
                                &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                                &quot;magnitude&quot;: 3.14, # The magnitude.
                              },
                              &quot;dashStyle&quot;: &quot;A String&quot;, # The dash style of the border.
                              &quot;color&quot;: { # A color that can either be fully opaque or fully transparent. # The color of the border. This color cannot be transparent.
                                &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                                  &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                                    &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                                    &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                                    &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                                  },
                                },
                              },
                            },
                            &quot;borderLeft&quot;: { # A border around a table cell. Table cell borders cannot be transparent. To hide a table cell border, make its width 0. # The left border of the cell.
                              &quot;width&quot;: { # A magnitude in a single direction in the specified units. # The width of the border.
                                &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                                &quot;magnitude&quot;: 3.14, # The magnitude.
                              },
                              &quot;dashStyle&quot;: &quot;A String&quot;, # The dash style of the border.
                              &quot;color&quot;: { # A color that can either be fully opaque or fully transparent. # The color of the border. This color cannot be transparent.
                                &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                                  &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                                    &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                                    &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                                    &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                                  },
                                },
                              },
                            },
                            &quot;columnSpan&quot;: 42, # The column span of the cell. This property is read-only.
                            &quot;paddingBottom&quot;: { # A magnitude in a single direction in the specified units. # The bottom padding of the cell.
                              &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                              &quot;magnitude&quot;: 3.14, # The magnitude.
                            },
                          },
                          &quot;tableCellStyleSuggestionState&quot;: { # A mask that indicates which of the fields on the base TableCellStyle have been changed in this suggestion. For any field set to true, there is a new suggested value. # A mask that indicates which of the fields on the base TableCellStyle have been changed in this suggestion.
                            &quot;rowSpanSuggested&quot;: True or False, # Indicates if there was a suggested change to row_span.
                            &quot;columnSpanSuggested&quot;: True or False, # Indicates if there was a suggested change to column_span.
                            &quot;borderBottomSuggested&quot;: True or False, # Indicates if there was a suggested change to border_bottom.
                            &quot;borderLeftSuggested&quot;: True or False, # Indicates if there was a suggested change to border_left.
                            &quot;paddingLeftSuggested&quot;: True or False, # Indicates if there was a suggested change to padding_left.
                            &quot;paddingRightSuggested&quot;: True or False, # Indicates if there was a suggested change to padding_right.
                            &quot;paddingBottomSuggested&quot;: True or False, # Indicates if there was a suggested change to padding_bottom.
                            &quot;paddingTopSuggested&quot;: True or False, # Indicates if there was a suggested change to padding_top.
                            &quot;contentAlignmentSuggested&quot;: True or False, # Indicates if there was a suggested change to content_alignment.
                            &quot;borderRightSuggested&quot;: True or False, # Indicates if there was a suggested change to border_right.
                            &quot;backgroundColorSuggested&quot;: True or False, # Indicates if there was a suggested change to background_color.
                            &quot;borderTopSuggested&quot;: True or False, # Indicates if there was a suggested change to border_top.
                          },
                        },
                      },
                      &quot;endIndex&quot;: 42, # The zero-based end index of this cell, exclusive, in UTF-16 code units.
                    },
                  ],
                  &quot;endIndex&quot;: 42, # The zero-based end index of this row, exclusive, in UTF-16 code units.
                  &quot;tableRowStyle&quot;: { # Styles that apply to a table row. # The style of the table row.
                    &quot;minRowHeight&quot;: { # A magnitude in a single direction in the specified units. # The minimum height of the row. The row will be rendered in the Docs editor at a height equal to or greater than this value in order to show all the content in the row&#x27;s cells.
                      &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                      &quot;magnitude&quot;: 3.14, # The magnitude.
                    },
                  },
                },
              ],
              &quot;suggestedDeletionIds&quot;: [ # The suggested deletion IDs. If empty, then there are no suggested deletions of this content.
                &quot;A String&quot;,
              ],
              &quot;rows&quot;: 42, # Number of rows in the table.
              &quot;columns&quot;: 42, # Number of columns in the table. It is possible for a table to be non-rectangular, so some rows may have a different number of cells.
            },
            &quot;sectionBreak&quot;: { # A StructuralElement representing a section break. A section is a range of content which has the same SectionStyle. A section break represents the start of a new section, and the section style applies to the section after the section break. The document body always begins with a section break. # A section break type of structural element.
              &quot;suggestedInsertionIds&quot;: [ # The suggested insertion IDs. A SectionBreak may have multiple insertion IDs if it is a nested suggested change. If empty, then this is not a suggested insertion.
                &quot;A String&quot;,
              ],
              &quot;sectionStyle&quot;: { # The styling that applies to a section. # The style of the section after this section break.
                &quot;marginLeft&quot;: { # A magnitude in a single direction in the specified units. # The left page margin of the section. If unset, uses margin_left from DocumentStyle. Updating left margin causes columns in this section to resize. Since the margin affects column width, it is applied before column properties. When updating this property, setting a concrete value is required. Unsetting this property results in a 400 bad request error.
                  &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                  &quot;magnitude&quot;: 3.14, # The magnitude.
                },
                &quot;sectionType&quot;: &quot;A String&quot;, # Output only. The type of section.
                &quot;evenPageHeaderId&quot;: &quot;A String&quot;, # The ID of the header used only for even pages. If the value of DocumentStyle&#x27;s use_even_page_header_footer is true, this value is used for the headers on even pages in the section. If it is false, the headers on even pages uses the default_header_id. If unset, the value inherits from the previous SectionBreak&#x27;s SectionStyle. If the value is unset in the first SectionBreak, it inherits from DocumentStyle&#x27;s even_page_header_id. This property is read-only.
                &quot;useFirstPageHeaderFooter&quot;: True or False, # Indicates whether to use the first page header / footer IDs for the first page of the section. If unset, it inherits from DocumentStyle&#x27;s use_first_page_header_footer for the first section. If the value is unset for subsequent sectors, it should be interpreted as false. When updating this property, setting a concrete value is required. Unsetting this property results in a 400 bad request error.
                &quot;marginHeader&quot;: { # A magnitude in a single direction in the specified units. # The header margin of the section. If unset, uses margin_header from DocumentStyle. If updated, use_custom_header_footer_margins is set to true on DocumentStyle. The value of use_custom_header_footer_margins on DocumentStyle indicates if a header margin is being respected for this section. When updating this property, setting a concrete value is required. Unsetting this property results in a 400 bad request error.
                  &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                  &quot;magnitude&quot;: 3.14, # The magnitude.
                },
                &quot;firstPageFooterId&quot;: &quot;A String&quot;, # The ID of the footer used only for the first page of the section. If use_first_page_header_footer is true, this value is used for the footer on the first page of the section. If it is false, the footer on the first page of the section uses the default_footer_id. If unset, the value inherits from the previous SectionBreak&#x27;s SectionStyle. If the value is unset in the first SectionBreak, it inherits from DocumentStyle&#x27;s first_page_footer_id. This property is read-only.
                &quot;firstPageHeaderId&quot;: &quot;A String&quot;, # The ID of the header used only for the first page of the section. If use_first_page_header_footer is true, this value is used for the header on the first page of the section. If it is false, the header on the first page of the section uses the default_header_id. If unset, the value inherits from the previous SectionBreak&#x27;s SectionStyle. If the value is unset in the first SectionBreak, it inherits from DocumentStyle&#x27;s first_page_header_id. This property is read-only.
                &quot;columnSeparatorStyle&quot;: &quot;A String&quot;, # The style of column separators. This style can be set even when there is one column in the section. When updating this property, setting a concrete value is required. Unsetting this property results in a 400 bad request error.
                &quot;marginBottom&quot;: { # A magnitude in a single direction in the specified units. # The bottom page margin of the section. If unset, uses margin_bottom from DocumentStyle. When updating this property, setting a concrete value is required. Unsetting this property results in a 400 bad request error.
                  &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                  &quot;magnitude&quot;: 3.14, # The magnitude.
                },
                &quot;marginFooter&quot;: { # A magnitude in a single direction in the specified units. # The footer margin of the section. If unset, uses margin_footer from DocumentStyle. If updated, use_custom_header_footer_margins is set to true on DocumentStyle. The value of use_custom_header_footer_margins on DocumentStyle indicates if a footer margin is being respected for this section When updating this property, setting a concrete value is required. Unsetting this property results in a 400 bad request error.
                  &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                  &quot;magnitude&quot;: 3.14, # The magnitude.
                },
                &quot;defaultFooterId&quot;: &quot;A String&quot;, # The ID of the default footer. If unset, the value inherits from the previous SectionBreak&#x27;s SectionStyle. If the value is unset in the first SectionBreak, it inherits from DocumentStyle&#x27;s default_footer_id. This property is read-only.
                &quot;marginTop&quot;: { # A magnitude in a single direction in the specified units. # The top page margin of the section. If unset, uses margin_top from DocumentStyle. When updating this property, setting a concrete value is required. Unsetting this property results in a 400 bad request error.
                  &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                  &quot;magnitude&quot;: 3.14, # The magnitude.
                },
                &quot;contentDirection&quot;: &quot;A String&quot;, # The content direction of this section. If unset, the value defaults to LEFT_TO_RIGHT. When updating this property, setting a concrete value is required. Unsetting this property results in a 400 bad request error.
                &quot;evenPageFooterId&quot;: &quot;A String&quot;, # The ID of the footer used only for even pages. If the value of DocumentStyle&#x27;s use_even_page_header_footer is true, this value is used for the footers on even pages in the section. If it is false, the footers on even pages uses the default_footer_id. If unset, the value inherits from the previous SectionBreak&#x27;s SectionStyle. If the value is unset in the first SectionBreak, it inherits from DocumentStyle&#x27;s even_page_footer_id. This property is read-only.
                &quot;marginRight&quot;: { # A magnitude in a single direction in the specified units. # The right page margin of the section. If unset, uses margin_right from DocumentStyle. Updating right margin causes columns in this section to resize. Since the margin affects column width, it is applied before column properties. When updating this property, setting a concrete value is required. Unsetting this property results in a 400 bad request error.
                  &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                  &quot;magnitude&quot;: 3.14, # The magnitude.
                },
                &quot;defaultHeaderId&quot;: &quot;A String&quot;, # The ID of the default header. If unset, the value inherits from the previous SectionBreak&#x27;s SectionStyle. If the value is unset in the first SectionBreak, it inherits from DocumentStyle&#x27;s default_header_id. This property is read-only.
                &quot;pageNumberStart&quot;: 42, # The page number from which to start counting the number of pages for this section. If unset, page numbering continues from the previous section. If the value is unset in the first SectionBreak, refer to DocumentStyle&#x27;s page_number_start. When updating this property, setting a concrete value is required. Unsetting this property results in a 400 bad request error.
                &quot;columnProperties&quot;: [ # The section&#x27;s columns properties. If empty, the section contains one column with the default properties in the Docs editor. A section can be updated to have no more than three columns. When updating this property, setting a concrete value is required. Unsetting this property will result in a 400 bad request error.
                  { # Properties that apply to a section&#x27;s column.
                    &quot;paddingEnd&quot;: { # A magnitude in a single direction in the specified units. # The padding at the end of the column.
                      &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                      &quot;magnitude&quot;: 3.14, # The magnitude.
                    },
                    &quot;width&quot;: { # A magnitude in a single direction in the specified units. # Output only. The width of the column.
                      &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                      &quot;magnitude&quot;: 3.14, # The magnitude.
                    },
                  },
                ],
              },
              &quot;suggestedDeletionIds&quot;: [ # The suggested deletion IDs. If empty, then there are no suggested deletions of this content.
                &quot;A String&quot;,
              ],
            },
          },
        ],
        &quot;footnoteId&quot;: &quot;A String&quot;, # The ID of the footnote.
      },
    },
    &quot;headers&quot;: { # Output only. The headers in the document, keyed by header ID.
      &quot;a_key&quot;: { # A document header.
        &quot;content&quot;: [ # The contents of the header. The indexes for a header&#x27;s content begin at zero.
          { # A StructuralElement describes content that provides structure to the document.
            &quot;paragraph&quot;: { # A StructuralElement representing a paragraph. A paragraph is a range of content that is terminated with a newline character. # A paragraph type of structural element.
              &quot;suggestedParagraphStyleChanges&quot;: { # The suggested paragraph style changes to this paragraph, keyed by suggestion ID.
                &quot;a_key&quot;: { # A suggested change to a ParagraphStyle.
                  &quot;paragraphStyle&quot;: { # Styles that apply to a whole paragraph. Inherited paragraph styles are represented as unset fields in this message. A paragraph style&#x27;s parent depends on where the paragraph style is defined: * The ParagraphStyle on a Paragraph inherits from the paragraph&#x27;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 is 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. # A ParagraphStyle that only includes the changes made in this suggestion. This can be used along with the paragraph_suggestion_state to see which fields have changed and their new values.
                    &quot;borderRight&quot;: { # A border around a paragraph. # The border to the right of this paragraph. If unset, the value is inherited from the parent. Paragraph borders cannot be partially updated. When making changes to a paragraph border the new border must be specified in its entirety.
                      &quot;color&quot;: { # A color that can either be fully opaque or fully transparent. # The color of the border.
                        &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                          &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                            &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                            &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                            &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                          },
                        },
                      },
                      &quot;width&quot;: { # A magnitude in a single direction in the specified units. # The width of the border.
                        &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                        &quot;magnitude&quot;: 3.14, # The magnitude.
                      },
                      &quot;padding&quot;: { # A magnitude in a single direction in the specified units. # The padding of the border.
                        &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                        &quot;magnitude&quot;: 3.14, # The magnitude.
                      },
                      &quot;dashStyle&quot;: &quot;A String&quot;, # The dash style of the border.
                    },
                    &quot;indentFirstLine&quot;: { # A magnitude in a single direction in the specified units. # The amount of indentation for the first line of the paragraph. If unset, the value is inherited from the parent.
                      &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                      &quot;magnitude&quot;: 3.14, # The magnitude.
                    },
                    &quot;alignment&quot;: &quot;A String&quot;, # The text alignment for this paragraph.
                    &quot;lineSpacing&quot;: 3.14, # The amount of space between lines, as a percentage of normal, where normal is represented as 100.0. If unset, the value is inherited from the parent.
                    &quot;keepLinesTogether&quot;: True or False, # Whether all lines of the paragraph should be laid out on the same page or column if possible. If unset, the value is inherited from the parent.
                    &quot;avoidWidowAndOrphan&quot;: True or False, # Whether to avoid widows and orphans for the paragraph. If unset, the value is inherited from the parent.
                    &quot;spaceBelow&quot;: { # A magnitude in a single direction in the specified units. # The amount of extra space below the paragraph. If unset, the value is inherited from the parent.
                      &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                      &quot;magnitude&quot;: 3.14, # The magnitude.
                    },
                    &quot;borderBetween&quot;: { # A border around a paragraph. # 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 making changes to a paragraph border the new border must be specified in its entirety.
                      &quot;color&quot;: { # A color that can either be fully opaque or fully transparent. # The color of the border.
                        &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                          &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                            &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                            &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                            &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                          },
                        },
                      },
                      &quot;width&quot;: { # A magnitude in a single direction in the specified units. # The width of the border.
                        &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                        &quot;magnitude&quot;: 3.14, # The magnitude.
                      },
                      &quot;padding&quot;: { # A magnitude in a single direction in the specified units. # The padding of the border.
                        &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                        &quot;magnitude&quot;: 3.14, # The magnitude.
                      },
                      &quot;dashStyle&quot;: &quot;A String&quot;, # The dash style of the border.
                    },
                    &quot;headingId&quot;: &quot;A String&quot;, # The heading ID of the paragraph. If empty, then this paragraph is not a heading. This property is read-only.
                    &quot;spaceAbove&quot;: { # A magnitude in a single direction in the specified units. # The amount of extra space above the paragraph. If unset, the value is inherited from the parent.
                      &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                      &quot;magnitude&quot;: 3.14, # The magnitude.
                    },
                    &quot;direction&quot;: &quot;A String&quot;, # The text direction of this paragraph. If unset, the value defaults to LEFT_TO_RIGHT since paragraph direction is not inherited.
                    &quot;namedStyleType&quot;: &quot;A String&quot;, # The named style type of the paragraph. Since updating the named style type affects other properties within ParagraphStyle, the named style type is applied before the other properties are updated.
                    &quot;tabStops&quot;: [ # A list of the tab stops for this paragraph. The list of tab stops is not inherited. This property is read-only.
                      { # A tab stop within a paragraph.
                        &quot;offset&quot;: { # A magnitude in a single direction in the specified units. # The offset between this tab stop and the start margin.
                          &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                          &quot;magnitude&quot;: 3.14, # The magnitude.
                        },
                        &quot;alignment&quot;: &quot;A String&quot;, # The alignment of this tab stop. If unset, the value defaults to START.
                      },
                    ],
                    &quot;indentStart&quot;: { # A magnitude in a single direction in the specified units. # The amount of indentation for the paragraph on the side that corresponds to the start of the text, based on the current paragraph direction. If unset, the value is inherited from the parent.
                      &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                      &quot;magnitude&quot;: 3.14, # The magnitude.
                    },
                    &quot;keepWithNext&quot;: True or False, # Whether at least a part of this paragraph should be laid out on the same page or column as the next paragraph if possible. If unset, the value is inherited from the parent.
                    &quot;borderTop&quot;: { # A border around a paragraph. # 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 making changes to a paragraph border the new border must be specified in its entirety.
                      &quot;color&quot;: { # A color that can either be fully opaque or fully transparent. # The color of the border.
                        &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                          &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                            &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                            &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                            &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                          },
                        },
                      },
                      &quot;width&quot;: { # A magnitude in a single direction in the specified units. # The width of the border.
                        &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                        &quot;magnitude&quot;: 3.14, # The magnitude.
                      },
                      &quot;padding&quot;: { # A magnitude in a single direction in the specified units. # The padding of the border.
                        &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                        &quot;magnitude&quot;: 3.14, # The magnitude.
                      },
                      &quot;dashStyle&quot;: &quot;A String&quot;, # The dash style of the border.
                    },
                    &quot;borderLeft&quot;: { # A border around a paragraph. # The border to the left of this paragraph. If unset, the value is inherited from the parent. Paragraph borders cannot be partially updated. When making changes to a paragraph border the new border must be specified in its entirety.
                      &quot;color&quot;: { # A color that can either be fully opaque or fully transparent. # The color of the border.
                        &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                          &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                            &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                            &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                            &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                          },
                        },
                      },
                      &quot;width&quot;: { # A magnitude in a single direction in the specified units. # The width of the border.
                        &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                        &quot;magnitude&quot;: 3.14, # The magnitude.
                      },
                      &quot;padding&quot;: { # A magnitude in a single direction in the specified units. # The padding of the border.
                        &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                        &quot;magnitude&quot;: 3.14, # The magnitude.
                      },
                      &quot;dashStyle&quot;: &quot;A String&quot;, # The dash style of the border.
                    },
                    &quot;borderBottom&quot;: { # A border around a paragraph. # 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 making changes to a paragraph border the new border must be specified in its entirety.
                      &quot;color&quot;: { # A color that can either be fully opaque or fully transparent. # The color of the border.
                        &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                          &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                            &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                            &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                            &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                          },
                        },
                      },
                      &quot;width&quot;: { # A magnitude in a single direction in the specified units. # The width of the border.
                        &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                        &quot;magnitude&quot;: 3.14, # The magnitude.
                      },
                      &quot;padding&quot;: { # A magnitude in a single direction in the specified units. # The padding of the border.
                        &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                        &quot;magnitude&quot;: 3.14, # The magnitude.
                      },
                      &quot;dashStyle&quot;: &quot;A String&quot;, # The dash style of the border.
                    },
                    &quot;shading&quot;: { # The shading of a paragraph. # The shading of the paragraph. If unset, the value is inherited from the parent.
                      &quot;backgroundColor&quot;: { # A color that can either be fully opaque or fully transparent. # The background color of this paragraph shading.
                        &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                          &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                            &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                            &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                            &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                          },
                        },
                      },
                    },
                    &quot;indentEnd&quot;: { # A magnitude in a single direction in the specified units. # 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.
                      &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                      &quot;magnitude&quot;: 3.14, # The magnitude.
                    },
                    &quot;spacingMode&quot;: &quot;A String&quot;, # The spacing mode for the paragraph.
                  },
                  &quot;paragraphStyleSuggestionState&quot;: { # A mask that indicates which of the fields on the base ParagraphStyle have been changed in this suggestion. For any field set to true, there is a new suggested value. # A mask that indicates which of the fields on the base ParagraphStyle have been changed in this suggestion.
                    &quot;borderRightSuggested&quot;: True or False, # Indicates if there was a suggested change to border_right.
                    &quot;indentEndSuggested&quot;: True or False, # Indicates if there was a suggested change to indent_end.
                    &quot;lineSpacingSuggested&quot;: True or False, # Indicates if there was a suggested change to line_spacing.
                    &quot;headingIdSuggested&quot;: True or False, # Indicates if there was a suggested change to heading_id.
                    &quot;indentStartSuggested&quot;: True or False, # Indicates if there was a suggested change to indent_start.
                    &quot;keepWithNextSuggested&quot;: True or False, # Indicates if there was a suggested change to keep_with_next.
                    &quot;namedStyleTypeSuggested&quot;: True or False, # Indicates if there was a suggested change to named_style_type.
                    &quot;borderTopSuggested&quot;: True or False, # Indicates if there was a suggested change to border_top.
                    &quot;keepLinesTogetherSuggested&quot;: True or False, # Indicates if there was a suggested change to keep_lines_together.
                    &quot;avoidWidowAndOrphanSuggested&quot;: True or False, # Indicates if there was a suggested change to avoid_widow_and_orphan.
                    &quot;spaceBelowSuggested&quot;: True or False, # Indicates if there was a suggested change to space_below.
                    &quot;indentFirstLineSuggested&quot;: True or False, # Indicates if there was a suggested change to indent_first_line.
                    &quot;shadingSuggestionState&quot;: { # A mask that indicates which of the fields on the base Shading have been changed in this suggested change. For any field set to true, there is a new suggested value. # A mask that indicates which of the fields in shading have been changed in this suggestion.
                      &quot;backgroundColorSuggested&quot;: True or False, # Indicates if there was a suggested change to the Shading.
                    },
                    &quot;directionSuggested&quot;: True or False, # Indicates if there was a suggested change to direction.
                    &quot;borderBetweenSuggested&quot;: True or False, # Indicates if there was a suggested change to border_between.
                    &quot;spaceAboveSuggested&quot;: True or False, # Indicates if there was a suggested change to space_above.
                    &quot;borderLeftSuggested&quot;: True or False, # Indicates if there was a suggested change to border_left.
                    &quot;spacingModeSuggested&quot;: True or False, # Indicates if there was a suggested change to spacing_mode.
                    &quot;borderBottomSuggested&quot;: True or False, # Indicates if there was a suggested change to border_bottom.
                    &quot;alignmentSuggested&quot;: True or False, # Indicates if there was a suggested change to alignment.
                  },
                },
              },
              &quot;bullet&quot;: { # Describes the bullet of a paragraph. # The bullet for this paragraph. If not present, the paragraph does not belong to a list.
                &quot;textStyle&quot;: { # Represents the styling that can be applied to text. Inherited text styles are represented as unset fields in this message. A text style&#x27;s parent depends on where the text style is defined: * The TextStyle of text in a Paragraph inherits from the paragraph&#x27;s corresponding named style type. * The TextStyle on a named style inherits from the normal text named style. * The TextStyle of the normal text named style inherits from the default text style in the Docs editor. * The TextStyle on a Paragraph element that is contained in a table may inherit its text style from the table style. If the text style does not inherit from a parent, unsetting fields will revert the style to a value matching the defaults in the Docs editor. # The paragraph specific text style applied to this bullet.
                  &quot;italic&quot;: True or False, # Whether or not the text is italicized.
                  &quot;baselineOffset&quot;: &quot;A String&quot;, # The text&#x27;s vertical offset from its normal position. Text with `SUPERSCRIPT` or `SUBSCRIPT` baseline offsets is automatically rendered in a smaller font size, computed based on the `font_size` field. The `font_size` itself is not affected by changes in this field.
                  &quot;bold&quot;: True or False, # Whether or not the text is rendered as bold.
                  &quot;fontSize&quot;: { # A magnitude in a single direction in the specified units. # The size of the text&#x27;s font.
                    &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                    &quot;magnitude&quot;: 3.14, # The magnitude.
                  },
                  &quot;foregroundColor&quot;: { # A color that can either be fully opaque or fully transparent. # The foreground color of the text. If set, the color is either an RGB color or transparent, depending on the `color` field.
                    &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                      &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                        &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                        &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                        &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                      },
                    },
                  },
                  &quot;backgroundColor&quot;: { # A color that can either be fully opaque or fully transparent. # The background color of the text. If set, the color is either an RGB color or transparent, depending on the `color` field.
                    &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                      &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                        &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                        &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                        &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                      },
                    },
                  },
                  &quot;link&quot;: { # A reference to another portion of a document or an external URL resource. # The hyperlink destination of the text. If unset, there is no link. Links are not inherited from parent text. Changing the link in an update request causes some other changes to the text style of the range: * When setting a link, the text foreground color will be updated to the default link color and the text will be underlined. If these fields are modified in the same request, those values will be used instead of the link defaults. * Setting a link on a text range that overlaps with an existing link will also update the existing link to point to the new URL. * Links are not settable on newline characters. As a result, setting a link on a text range that crosses a paragraph boundary, such as `&quot;ABC\n123&quot;`, will separate the newline character(s) into their own text runs. The link will be applied separately to the runs before and after the newline. * Removing a link will update the text style of the range to match the style of the preceding text (or the default text styles if the preceding text is another link) unless different styles are being set in the same request.
                    &quot;bookmarkId&quot;: &quot;A String&quot;, # The ID of a bookmark in this document.
                    &quot;url&quot;: &quot;A String&quot;, # An external URL.
                    &quot;headingId&quot;: &quot;A String&quot;, # The ID of a heading in this document.
                  },
                  &quot;strikethrough&quot;: True or False, # Whether or not the text is struck through.
                  &quot;weightedFontFamily&quot;: { # Represents a font family and weight of text. # The font family and rendered weight of the text. If an update request specifies values for both `weighted_font_family` and `bold`, the `weighted_font_family` is applied first, then `bold`. If `weighted_font_family#weight` is not set, it defaults to `400`. If `weighted_font_family` is set, then `weighted_font_family#font_family` must also be set with a non-empty value. Otherwise, a 400 bad request error is returned.
                    &quot;fontFamily&quot;: &quot;A String&quot;, # The font family of the text. The font family can be any font from the Font menu in Docs or from [Google Fonts] (https://fonts.google.com/). If the font name is unrecognized, the text is rendered in `Arial`.
                    &quot;weight&quot;: 42, # The weight of the font. This field can have any value that is a multiple of `100` between `100` and `900`, inclusive. This range corresponds to the numerical values described in the CSS 2.1 Specification, [section 15.6](https://www.w3.org/TR/CSS21/fonts.html#font-boldness), with non-numerical values disallowed. The default value is `400` (&quot;normal&quot;). The font weight makes up just one component of the rendered font weight. The rendered weight is determined by a combination of the `weight` and the text style&#x27;s resolved `bold` value, after accounting for inheritance: * If the text is bold and the weight is less than `400`, the rendered weight is 400. * If the text is bold and the weight is greater than or equal to `400` but is less than `700`, the rendered weight is `700`. * If the weight is greater than or equal to `700`, the rendered weight is equal to the weight. * If the text is not bold, the rendered weight is equal to the weight.
                  },
                  &quot;underline&quot;: True or False, # Whether or not the text is underlined.
                  &quot;smallCaps&quot;: True or False, # Whether or not the text is in small capital letters.
                },
                &quot;nestingLevel&quot;: 42, # The nesting level of this paragraph in the list.
                &quot;listId&quot;: &quot;A String&quot;, # The ID of the list this paragraph belongs to.
              },
              &quot;suggestedBulletChanges&quot;: { # The suggested changes to this paragraph&#x27;s bullet.
                &quot;a_key&quot;: { # A suggested change to a Bullet.
                  &quot;bulletSuggestionState&quot;: { # A mask that indicates which of the fields on the base Bullet have been changed in this suggestion. For any field set to true, there is a new suggested value. # A mask that indicates which of the fields on the base Bullet have been changed in this suggestion.
                    &quot;nestingLevelSuggested&quot;: True or False, # Indicates if there was a suggested change to the nesting_level.
                    &quot;textStyleSuggestionState&quot;: { # A mask that indicates which of the fields on the base TextStyle have been changed in this suggestion. For any field set to true, there is a new suggested value. # A mask that indicates which of the fields in text style have been changed in this suggestion.
                      &quot;backgroundColorSuggested&quot;: True or False, # Indicates if there was a suggested change to background_color.
                      &quot;fontSizeSuggested&quot;: True or False, # Indicates if there was a suggested change to font_size.
                      &quot;boldSuggested&quot;: True or False, # Indicates if there was a suggested change to bold.
                      &quot;baselineOffsetSuggested&quot;: True or False, # Indicates if there was a suggested change to baseline_offset.
                      &quot;foregroundColorSuggested&quot;: True or False, # Indicates if there was a suggested change to foreground_color.
                      &quot;italicSuggested&quot;: True or False, # Indicates if there was a suggested change to italic.
                      &quot;linkSuggested&quot;: True or False, # Indicates if there was a suggested change to link.
                      &quot;underlineSuggested&quot;: True or False, # Indicates if there was a suggested change to underline.
                      &quot;weightedFontFamilySuggested&quot;: True or False, # Indicates if there was a suggested change to weighted_font_family.
                      &quot;smallCapsSuggested&quot;: True or False, # Indicates if there was a suggested change to small_caps.
                      &quot;strikethroughSuggested&quot;: True or False, # Indicates if there was a suggested change to strikethrough.
                    },
                    &quot;listIdSuggested&quot;: True or False, # Indicates if there was a suggested change to the list_id.
                  },
                  &quot;bullet&quot;: { # Describes the bullet of a paragraph. # A Bullet that only includes the changes made in this suggestion. This can be used along with the bullet_suggestion_state to see which fields have changed and their new values.
                    &quot;textStyle&quot;: { # Represents the styling that can be applied to text. Inherited text styles are represented as unset fields in this message. A text style&#x27;s parent depends on where the text style is defined: * The TextStyle of text in a Paragraph inherits from the paragraph&#x27;s corresponding named style type. * The TextStyle on a named style inherits from the normal text named style. * The TextStyle of the normal text named style inherits from the default text style in the Docs editor. * The TextStyle on a Paragraph element that is contained in a table may inherit its text style from the table style. If the text style does not inherit from a parent, unsetting fields will revert the style to a value matching the defaults in the Docs editor. # The paragraph specific text style applied to this bullet.
                      &quot;italic&quot;: True or False, # Whether or not the text is italicized.
                      &quot;baselineOffset&quot;: &quot;A String&quot;, # The text&#x27;s vertical offset from its normal position. Text with `SUPERSCRIPT` or `SUBSCRIPT` baseline offsets is automatically rendered in a smaller font size, computed based on the `font_size` field. The `font_size` itself is not affected by changes in this field.
                      &quot;bold&quot;: True or False, # Whether or not the text is rendered as bold.
                      &quot;fontSize&quot;: { # A magnitude in a single direction in the specified units. # The size of the text&#x27;s font.
                        &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                        &quot;magnitude&quot;: 3.14, # The magnitude.
                      },
                      &quot;foregroundColor&quot;: { # A color that can either be fully opaque or fully transparent. # The foreground color of the text. If set, the color is either an RGB color or transparent, depending on the `color` field.
                        &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                          &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                            &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                            &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                            &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                          },
                        },
                      },
                      &quot;backgroundColor&quot;: { # A color that can either be fully opaque or fully transparent. # The background color of the text. If set, the color is either an RGB color or transparent, depending on the `color` field.
                        &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                          &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                            &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                            &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                            &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                          },
                        },
                      },
                      &quot;link&quot;: { # A reference to another portion of a document or an external URL resource. # The hyperlink destination of the text. If unset, there is no link. Links are not inherited from parent text. Changing the link in an update request causes some other changes to the text style of the range: * When setting a link, the text foreground color will be updated to the default link color and the text will be underlined. If these fields are modified in the same request, those values will be used instead of the link defaults. * Setting a link on a text range that overlaps with an existing link will also update the existing link to point to the new URL. * Links are not settable on newline characters. As a result, setting a link on a text range that crosses a paragraph boundary, such as `&quot;ABC\n123&quot;`, will separate the newline character(s) into their own text runs. The link will be applied separately to the runs before and after the newline. * Removing a link will update the text style of the range to match the style of the preceding text (or the default text styles if the preceding text is another link) unless different styles are being set in the same request.
                        &quot;bookmarkId&quot;: &quot;A String&quot;, # The ID of a bookmark in this document.
                        &quot;url&quot;: &quot;A String&quot;, # An external URL.
                        &quot;headingId&quot;: &quot;A String&quot;, # The ID of a heading in this document.
                      },
                      &quot;strikethrough&quot;: True or False, # Whether or not the text is struck through.
                      &quot;weightedFontFamily&quot;: { # Represents a font family and weight of text. # The font family and rendered weight of the text. If an update request specifies values for both `weighted_font_family` and `bold`, the `weighted_font_family` is applied first, then `bold`. If `weighted_font_family#weight` is not set, it defaults to `400`. If `weighted_font_family` is set, then `weighted_font_family#font_family` must also be set with a non-empty value. Otherwise, a 400 bad request error is returned.
                        &quot;fontFamily&quot;: &quot;A String&quot;, # The font family of the text. The font family can be any font from the Font menu in Docs or from [Google Fonts] (https://fonts.google.com/). If the font name is unrecognized, the text is rendered in `Arial`.
                        &quot;weight&quot;: 42, # The weight of the font. This field can have any value that is a multiple of `100` between `100` and `900`, inclusive. This range corresponds to the numerical values described in the CSS 2.1 Specification, [section 15.6](https://www.w3.org/TR/CSS21/fonts.html#font-boldness), with non-numerical values disallowed. The default value is `400` (&quot;normal&quot;). The font weight makes up just one component of the rendered font weight. The rendered weight is determined by a combination of the `weight` and the text style&#x27;s resolved `bold` value, after accounting for inheritance: * If the text is bold and the weight is less than `400`, the rendered weight is 400. * If the text is bold and the weight is greater than or equal to `400` but is less than `700`, the rendered weight is `700`. * If the weight is greater than or equal to `700`, the rendered weight is equal to the weight. * If the text is not bold, the rendered weight is equal to the weight.
                      },
                      &quot;underline&quot;: True or False, # Whether or not the text is underlined.
                      &quot;smallCaps&quot;: True or False, # Whether or not the text is in small capital letters.
                    },
                    &quot;nestingLevel&quot;: 42, # The nesting level of this paragraph in the list.
                    &quot;listId&quot;: &quot;A String&quot;, # The ID of the list this paragraph belongs to.
                  },
                },
              },
              &quot;suggestedPositionedObjectIds&quot;: { # The IDs of the positioned objects that are suggested to be attached to this paragraph, keyed by suggestion ID.
                &quot;a_key&quot;: { # A collection of object IDs.
                  &quot;objectIds&quot;: [ # The object IDs.
                    &quot;A String&quot;,
                  ],
                },
              },
              &quot;elements&quot;: [ # The content of the paragraph broken down into its component parts.
                { # A ParagraphElement describes content within a Paragraph.
                  &quot;textRun&quot;: { # A ParagraphElement that represents a run of text that all has the same styling. # A text run paragraph element.
                    &quot;suggestedInsertionIds&quot;: [ # The suggested insertion IDs. A TextRun may have multiple insertion IDs if it is a nested suggested change. If empty, then this is not a suggested insertion.
                      &quot;A String&quot;,
                    ],
                    &quot;content&quot;: &quot;A String&quot;, # The text of this run. Any non-text elements in the run are replaced with the Unicode character U+E907.
                    &quot;textStyle&quot;: { # Represents the styling that can be applied to text. Inherited text styles are represented as unset fields in this message. A text style&#x27;s parent depends on where the text style is defined: * The TextStyle of text in a Paragraph inherits from the paragraph&#x27;s corresponding named style type. * The TextStyle on a named style inherits from the normal text named style. * The TextStyle of the normal text named style inherits from the default text style in the Docs editor. * The TextStyle on a Paragraph element that is contained in a table may inherit its text style from the table style. If the text style does not inherit from a parent, unsetting fields will revert the style to a value matching the defaults in the Docs editor. # The text style of this run.
                      &quot;italic&quot;: True or False, # Whether or not the text is italicized.
                      &quot;baselineOffset&quot;: &quot;A String&quot;, # The text&#x27;s vertical offset from its normal position. Text with `SUPERSCRIPT` or `SUBSCRIPT` baseline offsets is automatically rendered in a smaller font size, computed based on the `font_size` field. The `font_size` itself is not affected by changes in this field.
                      &quot;bold&quot;: True or False, # Whether or not the text is rendered as bold.
                      &quot;fontSize&quot;: { # A magnitude in a single direction in the specified units. # The size of the text&#x27;s font.
                        &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                        &quot;magnitude&quot;: 3.14, # The magnitude.
                      },
                      &quot;foregroundColor&quot;: { # A color that can either be fully opaque or fully transparent. # The foreground color of the text. If set, the color is either an RGB color or transparent, depending on the `color` field.
                        &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                          &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                            &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                            &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                            &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                          },
                        },
                      },
                      &quot;backgroundColor&quot;: { # A color that can either be fully opaque or fully transparent. # The background color of the text. If set, the color is either an RGB color or transparent, depending on the `color` field.
                        &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                          &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                            &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                            &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                            &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                          },
                        },
                      },
                      &quot;link&quot;: { # A reference to another portion of a document or an external URL resource. # The hyperlink destination of the text. If unset, there is no link. Links are not inherited from parent text. Changing the link in an update request causes some other changes to the text style of the range: * When setting a link, the text foreground color will be updated to the default link color and the text will be underlined. If these fields are modified in the same request, those values will be used instead of the link defaults. * Setting a link on a text range that overlaps with an existing link will also update the existing link to point to the new URL. * Links are not settable on newline characters. As a result, setting a link on a text range that crosses a paragraph boundary, such as `&quot;ABC\n123&quot;`, will separate the newline character(s) into their own text runs. The link will be applied separately to the runs before and after the newline. * Removing a link will update the text style of the range to match the style of the preceding text (or the default text styles if the preceding text is another link) unless different styles are being set in the same request.
                        &quot;bookmarkId&quot;: &quot;A String&quot;, # The ID of a bookmark in this document.
                        &quot;url&quot;: &quot;A String&quot;, # An external URL.
                        &quot;headingId&quot;: &quot;A String&quot;, # The ID of a heading in this document.
                      },
                      &quot;strikethrough&quot;: True or False, # Whether or not the text is struck through.
                      &quot;weightedFontFamily&quot;: { # Represents a font family and weight of text. # The font family and rendered weight of the text. If an update request specifies values for both `weighted_font_family` and `bold`, the `weighted_font_family` is applied first, then `bold`. If `weighted_font_family#weight` is not set, it defaults to `400`. If `weighted_font_family` is set, then `weighted_font_family#font_family` must also be set with a non-empty value. Otherwise, a 400 bad request error is returned.
                        &quot;fontFamily&quot;: &quot;A String&quot;, # The font family of the text. The font family can be any font from the Font menu in Docs or from [Google Fonts] (https://fonts.google.com/). If the font name is unrecognized, the text is rendered in `Arial`.
                        &quot;weight&quot;: 42, # The weight of the font. This field can have any value that is a multiple of `100` between `100` and `900`, inclusive. This range corresponds to the numerical values described in the CSS 2.1 Specification, [section 15.6](https://www.w3.org/TR/CSS21/fonts.html#font-boldness), with non-numerical values disallowed. The default value is `400` (&quot;normal&quot;). The font weight makes up just one component of the rendered font weight. The rendered weight is determined by a combination of the `weight` and the text style&#x27;s resolved `bold` value, after accounting for inheritance: * If the text is bold and the weight is less than `400`, the rendered weight is 400. * If the text is bold and the weight is greater than or equal to `400` but is less than `700`, the rendered weight is `700`. * If the weight is greater than or equal to `700`, the rendered weight is equal to the weight. * If the text is not bold, the rendered weight is equal to the weight.
                      },
                      &quot;underline&quot;: True or False, # Whether or not the text is underlined.
                      &quot;smallCaps&quot;: True or False, # Whether or not the text is in small capital letters.
                    },
                    &quot;suggestedTextStyleChanges&quot;: { # The suggested text style changes to this run, keyed by suggestion ID.
                      &quot;a_key&quot;: { # A suggested change to a TextStyle.
                        &quot;textStyleSuggestionState&quot;: { # A mask that indicates which of the fields on the base TextStyle have been changed in this suggestion. For any field set to true, there is a new suggested value. # A mask that indicates which of the fields on the base TextStyle have been changed in this suggestion.
                          &quot;backgroundColorSuggested&quot;: True or False, # Indicates if there was a suggested change to background_color.
                          &quot;fontSizeSuggested&quot;: True or False, # Indicates if there was a suggested change to font_size.
                          &quot;boldSuggested&quot;: True or False, # Indicates if there was a suggested change to bold.
                          &quot;baselineOffsetSuggested&quot;: True or False, # Indicates if there was a suggested change to baseline_offset.
                          &quot;foregroundColorSuggested&quot;: True or False, # Indicates if there was a suggested change to foreground_color.
                          &quot;italicSuggested&quot;: True or False, # Indicates if there was a suggested change to italic.
                          &quot;linkSuggested&quot;: True or False, # Indicates if there was a suggested change to link.
                          &quot;underlineSuggested&quot;: True or False, # Indicates if there was a suggested change to underline.
                          &quot;weightedFontFamilySuggested&quot;: True or False, # Indicates if there was a suggested change to weighted_font_family.
                          &quot;smallCapsSuggested&quot;: True or False, # Indicates if there was a suggested change to small_caps.
                          &quot;strikethroughSuggested&quot;: True or False, # Indicates if there was a suggested change to strikethrough.
                        },
                        &quot;textStyle&quot;: { # Represents the styling that can be applied to text. Inherited text styles are represented as unset fields in this message. A text style&#x27;s parent depends on where the text style is defined: * The TextStyle of text in a Paragraph inherits from the paragraph&#x27;s corresponding named style type. * The TextStyle on a named style inherits from the normal text named style. * The TextStyle of the normal text named style inherits from the default text style in the Docs editor. * The TextStyle on a Paragraph element that is contained in a table may inherit its text style from the table style. If the text style does not inherit from a parent, unsetting fields will revert the style to a value matching the defaults in the Docs editor. # A TextStyle that only includes the changes made in this suggestion. This can be used along with the text_style_suggestion_state to see which fields have changed and their new values.
                          &quot;italic&quot;: True or False, # Whether or not the text is italicized.
                          &quot;baselineOffset&quot;: &quot;A String&quot;, # The text&#x27;s vertical offset from its normal position. Text with `SUPERSCRIPT` or `SUBSCRIPT` baseline offsets is automatically rendered in a smaller font size, computed based on the `font_size` field. The `font_size` itself is not affected by changes in this field.
                          &quot;bold&quot;: True or False, # Whether or not the text is rendered as bold.
                          &quot;fontSize&quot;: { # A magnitude in a single direction in the specified units. # The size of the text&#x27;s font.
                            &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                            &quot;magnitude&quot;: 3.14, # The magnitude.
                          },
                          &quot;foregroundColor&quot;: { # A color that can either be fully opaque or fully transparent. # The foreground color of the text. If set, the color is either an RGB color or transparent, depending on the `color` field.
                            &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                              &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                                &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                                &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                                &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                              },
                            },
                          },
                          &quot;backgroundColor&quot;: { # A color that can either be fully opaque or fully transparent. # The background color of the text. If set, the color is either an RGB color or transparent, depending on the `color` field.
                            &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                              &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                                &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                                &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                                &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                              },
                            },
                          },
                          &quot;link&quot;: { # A reference to another portion of a document or an external URL resource. # The hyperlink destination of the text. If unset, there is no link. Links are not inherited from parent text. Changing the link in an update request causes some other changes to the text style of the range: * When setting a link, the text foreground color will be updated to the default link color and the text will be underlined. If these fields are modified in the same request, those values will be used instead of the link defaults. * Setting a link on a text range that overlaps with an existing link will also update the existing link to point to the new URL. * Links are not settable on newline characters. As a result, setting a link on a text range that crosses a paragraph boundary, such as `&quot;ABC\n123&quot;`, will separate the newline character(s) into their own text runs. The link will be applied separately to the runs before and after the newline. * Removing a link will update the text style of the range to match the style of the preceding text (or the default text styles if the preceding text is another link) unless different styles are being set in the same request.
                            &quot;bookmarkId&quot;: &quot;A String&quot;, # The ID of a bookmark in this document.
                            &quot;url&quot;: &quot;A String&quot;, # An external URL.
                            &quot;headingId&quot;: &quot;A String&quot;, # The ID of a heading in this document.
                          },
                          &quot;strikethrough&quot;: True or False, # Whether or not the text is struck through.
                          &quot;weightedFontFamily&quot;: { # Represents a font family and weight of text. # The font family and rendered weight of the text. If an update request specifies values for both `weighted_font_family` and `bold`, the `weighted_font_family` is applied first, then `bold`. If `weighted_font_family#weight` is not set, it defaults to `400`. If `weighted_font_family` is set, then `weighted_font_family#font_family` must also be set with a non-empty value. Otherwise, a 400 bad request error is returned.
                            &quot;fontFamily&quot;: &quot;A String&quot;, # The font family of the text. The font family can be any font from the Font menu in Docs or from [Google Fonts] (https://fonts.google.com/). If the font name is unrecognized, the text is rendered in `Arial`.
                            &quot;weight&quot;: 42, # The weight of the font. This field can have any value that is a multiple of `100` between `100` and `900`, inclusive. This range corresponds to the numerical values described in the CSS 2.1 Specification, [section 15.6](https://www.w3.org/TR/CSS21/fonts.html#font-boldness), with non-numerical values disallowed. The default value is `400` (&quot;normal&quot;). The font weight makes up just one component of the rendered font weight. The rendered weight is determined by a combination of the `weight` and the text style&#x27;s resolved `bold` value, after accounting for inheritance: * If the text is bold and the weight is less than `400`, the rendered weight is 400. * If the text is bold and the weight is greater than or equal to `400` but is less than `700`, the rendered weight is `700`. * If the weight is greater than or equal to `700`, the rendered weight is equal to the weight. * If the text is not bold, the rendered weight is equal to the weight.
                          },
                          &quot;underline&quot;: True or False, # Whether or not the text is underlined.
                          &quot;smallCaps&quot;: True or False, # Whether or not the text is in small capital letters.
                        },
                      },
                    },
                    &quot;suggestedDeletionIds&quot;: [ # The suggested deletion IDs. If empty, then there are no suggested deletions of this content.
                      &quot;A String&quot;,
                    ],
                  },
                  &quot;pageBreak&quot;: { # A ParagraphElement representing a page break. A page break makes the subsequent text start at the top of the next page. # A page break paragraph element.
                    &quot;suggestedInsertionIds&quot;: [ # The suggested insertion IDs. A PageBreak may have multiple insertion IDs if it is a nested suggested change. If empty, then this is not a suggested insertion.
                      &quot;A String&quot;,
                    ],
                    &quot;textStyle&quot;: { # Represents the styling that can be applied to text. Inherited text styles are represented as unset fields in this message. A text style&#x27;s parent depends on where the text style is defined: * The TextStyle of text in a Paragraph inherits from the paragraph&#x27;s corresponding named style type. * The TextStyle on a named style inherits from the normal text named style. * The TextStyle of the normal text named style inherits from the default text style in the Docs editor. * The TextStyle on a Paragraph element that is contained in a table may inherit its text style from the table style. If the text style does not inherit from a parent, unsetting fields will revert the style to a value matching the defaults in the Docs editor. # The text style of this PageBreak. Similar to text content, like text runs and footnote references, the text style of a page break can affect content layout as well as the styling of text inserted adjacent to it.
                      &quot;italic&quot;: True or False, # Whether or not the text is italicized.
                      &quot;baselineOffset&quot;: &quot;A String&quot;, # The text&#x27;s vertical offset from its normal position. Text with `SUPERSCRIPT` or `SUBSCRIPT` baseline offsets is automatically rendered in a smaller font size, computed based on the `font_size` field. The `font_size` itself is not affected by changes in this field.
                      &quot;bold&quot;: True or False, # Whether or not the text is rendered as bold.
                      &quot;fontSize&quot;: { # A magnitude in a single direction in the specified units. # The size of the text&#x27;s font.
                        &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                        &quot;magnitude&quot;: 3.14, # The magnitude.
                      },
                      &quot;foregroundColor&quot;: { # A color that can either be fully opaque or fully transparent. # The foreground color of the text. If set, the color is either an RGB color or transparent, depending on the `color` field.
                        &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                          &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                            &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                            &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                            &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                          },
                        },
                      },
                      &quot;backgroundColor&quot;: { # A color that can either be fully opaque or fully transparent. # The background color of the text. If set, the color is either an RGB color or transparent, depending on the `color` field.
                        &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                          &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                            &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                            &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                            &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                          },
                        },
                      },
                      &quot;link&quot;: { # A reference to another portion of a document or an external URL resource. # The hyperlink destination of the text. If unset, there is no link. Links are not inherited from parent text. Changing the link in an update request causes some other changes to the text style of the range: * When setting a link, the text foreground color will be updated to the default link color and the text will be underlined. If these fields are modified in the same request, those values will be used instead of the link defaults. * Setting a link on a text range that overlaps with an existing link will also update the existing link to point to the new URL. * Links are not settable on newline characters. As a result, setting a link on a text range that crosses a paragraph boundary, such as `&quot;ABC\n123&quot;`, will separate the newline character(s) into their own text runs. The link will be applied separately to the runs before and after the newline. * Removing a link will update the text style of the range to match the style of the preceding text (or the default text styles if the preceding text is another link) unless different styles are being set in the same request.
                        &quot;bookmarkId&quot;: &quot;A String&quot;, # The ID of a bookmark in this document.
                        &quot;url&quot;: &quot;A String&quot;, # An external URL.
                        &quot;headingId&quot;: &quot;A String&quot;, # The ID of a heading in this document.
                      },
                      &quot;strikethrough&quot;: True or False, # Whether or not the text is struck through.
                      &quot;weightedFontFamily&quot;: { # Represents a font family and weight of text. # The font family and rendered weight of the text. If an update request specifies values for both `weighted_font_family` and `bold`, the `weighted_font_family` is applied first, then `bold`. If `weighted_font_family#weight` is not set, it defaults to `400`. If `weighted_font_family` is set, then `weighted_font_family#font_family` must also be set with a non-empty value. Otherwise, a 400 bad request error is returned.
                        &quot;fontFamily&quot;: &quot;A String&quot;, # The font family of the text. The font family can be any font from the Font menu in Docs or from [Google Fonts] (https://fonts.google.com/). If the font name is unrecognized, the text is rendered in `Arial`.
                        &quot;weight&quot;: 42, # The weight of the font. This field can have any value that is a multiple of `100` between `100` and `900`, inclusive. This range corresponds to the numerical values described in the CSS 2.1 Specification, [section 15.6](https://www.w3.org/TR/CSS21/fonts.html#font-boldness), with non-numerical values disallowed. The default value is `400` (&quot;normal&quot;). The font weight makes up just one component of the rendered font weight. The rendered weight is determined by a combination of the `weight` and the text style&#x27;s resolved `bold` value, after accounting for inheritance: * If the text is bold and the weight is less than `400`, the rendered weight is 400. * If the text is bold and the weight is greater than or equal to `400` but is less than `700`, the rendered weight is `700`. * If the weight is greater than or equal to `700`, the rendered weight is equal to the weight. * If the text is not bold, the rendered weight is equal to the weight.
                      },
                      &quot;underline&quot;: True or False, # Whether or not the text is underlined.
                      &quot;smallCaps&quot;: True or False, # Whether or not the text is in small capital letters.
                    },
                    &quot;suggestedTextStyleChanges&quot;: { # The suggested text style changes to this PageBreak, keyed by suggestion ID.
                      &quot;a_key&quot;: { # A suggested change to a TextStyle.
                        &quot;textStyleSuggestionState&quot;: { # A mask that indicates which of the fields on the base TextStyle have been changed in this suggestion. For any field set to true, there is a new suggested value. # A mask that indicates which of the fields on the base TextStyle have been changed in this suggestion.
                          &quot;backgroundColorSuggested&quot;: True or False, # Indicates if there was a suggested change to background_color.
                          &quot;fontSizeSuggested&quot;: True or False, # Indicates if there was a suggested change to font_size.
                          &quot;boldSuggested&quot;: True or False, # Indicates if there was a suggested change to bold.
                          &quot;baselineOffsetSuggested&quot;: True or False, # Indicates if there was a suggested change to baseline_offset.
                          &quot;foregroundColorSuggested&quot;: True or False, # Indicates if there was a suggested change to foreground_color.
                          &quot;italicSuggested&quot;: True or False, # Indicates if there was a suggested change to italic.
                          &quot;linkSuggested&quot;: True or False, # Indicates if there was a suggested change to link.
                          &quot;underlineSuggested&quot;: True or False, # Indicates if there was a suggested change to underline.
                          &quot;weightedFontFamilySuggested&quot;: True or False, # Indicates if there was a suggested change to weighted_font_family.
                          &quot;smallCapsSuggested&quot;: True or False, # Indicates if there was a suggested change to small_caps.
                          &quot;strikethroughSuggested&quot;: True or False, # Indicates if there was a suggested change to strikethrough.
                        },
                        &quot;textStyle&quot;: { # Represents the styling that can be applied to text. Inherited text styles are represented as unset fields in this message. A text style&#x27;s parent depends on where the text style is defined: * The TextStyle of text in a Paragraph inherits from the paragraph&#x27;s corresponding named style type. * The TextStyle on a named style inherits from the normal text named style. * The TextStyle of the normal text named style inherits from the default text style in the Docs editor. * The TextStyle on a Paragraph element that is contained in a table may inherit its text style from the table style. If the text style does not inherit from a parent, unsetting fields will revert the style to a value matching the defaults in the Docs editor. # A TextStyle that only includes the changes made in this suggestion. This can be used along with the text_style_suggestion_state to see which fields have changed and their new values.
                          &quot;italic&quot;: True or False, # Whether or not the text is italicized.
                          &quot;baselineOffset&quot;: &quot;A String&quot;, # The text&#x27;s vertical offset from its normal position. Text with `SUPERSCRIPT` or `SUBSCRIPT` baseline offsets is automatically rendered in a smaller font size, computed based on the `font_size` field. The `font_size` itself is not affected by changes in this field.
                          &quot;bold&quot;: True or False, # Whether or not the text is rendered as bold.
                          &quot;fontSize&quot;: { # A magnitude in a single direction in the specified units. # The size of the text&#x27;s font.
                            &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                            &quot;magnitude&quot;: 3.14, # The magnitude.
                          },
                          &quot;foregroundColor&quot;: { # A color that can either be fully opaque or fully transparent. # The foreground color of the text. If set, the color is either an RGB color or transparent, depending on the `color` field.
                            &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                              &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                                &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                                &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                                &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                              },
                            },
                          },
                          &quot;backgroundColor&quot;: { # A color that can either be fully opaque or fully transparent. # The background color of the text. If set, the color is either an RGB color or transparent, depending on the `color` field.
                            &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                              &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                                &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                                &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                                &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                              },
                            },
                          },
                          &quot;link&quot;: { # A reference to another portion of a document or an external URL resource. # The hyperlink destination of the text. If unset, there is no link. Links are not inherited from parent text. Changing the link in an update request causes some other changes to the text style of the range: * When setting a link, the text foreground color will be updated to the default link color and the text will be underlined. If these fields are modified in the same request, those values will be used instead of the link defaults. * Setting a link on a text range that overlaps with an existing link will also update the existing link to point to the new URL. * Links are not settable on newline characters. As a result, setting a link on a text range that crosses a paragraph boundary, such as `&quot;ABC\n123&quot;`, will separate the newline character(s) into their own text runs. The link will be applied separately to the runs before and after the newline. * Removing a link will update the text style of the range to match the style of the preceding text (or the default text styles if the preceding text is another link) unless different styles are being set in the same request.
                            &quot;bookmarkId&quot;: &quot;A String&quot;, # The ID of a bookmark in this document.
                            &quot;url&quot;: &quot;A String&quot;, # An external URL.
                            &quot;headingId&quot;: &quot;A String&quot;, # The ID of a heading in this document.
                          },
                          &quot;strikethrough&quot;: True or False, # Whether or not the text is struck through.
                          &quot;weightedFontFamily&quot;: { # Represents a font family and weight of text. # The font family and rendered weight of the text. If an update request specifies values for both `weighted_font_family` and `bold`, the `weighted_font_family` is applied first, then `bold`. If `weighted_font_family#weight` is not set, it defaults to `400`. If `weighted_font_family` is set, then `weighted_font_family#font_family` must also be set with a non-empty value. Otherwise, a 400 bad request error is returned.
                            &quot;fontFamily&quot;: &quot;A String&quot;, # The font family of the text. The font family can be any font from the Font menu in Docs or from [Google Fonts] (https://fonts.google.com/). If the font name is unrecognized, the text is rendered in `Arial`.
                            &quot;weight&quot;: 42, # The weight of the font. This field can have any value that is a multiple of `100` between `100` and `900`, inclusive. This range corresponds to the numerical values described in the CSS 2.1 Specification, [section 15.6](https://www.w3.org/TR/CSS21/fonts.html#font-boldness), with non-numerical values disallowed. The default value is `400` (&quot;normal&quot;). The font weight makes up just one component of the rendered font weight. The rendered weight is determined by a combination of the `weight` and the text style&#x27;s resolved `bold` value, after accounting for inheritance: * If the text is bold and the weight is less than `400`, the rendered weight is 400. * If the text is bold and the weight is greater than or equal to `400` but is less than `700`, the rendered weight is `700`. * If the weight is greater than or equal to `700`, the rendered weight is equal to the weight. * If the text is not bold, the rendered weight is equal to the weight.
                          },
                          &quot;underline&quot;: True or False, # Whether or not the text is underlined.
                          &quot;smallCaps&quot;: True or False, # Whether or not the text is in small capital letters.
                        },
                      },
                    },
                    &quot;suggestedDeletionIds&quot;: [ # The suggested deletion IDs. If empty, then there are no suggested deletions of this content.
                      &quot;A String&quot;,
                    ],
                  },
                  &quot;horizontalRule&quot;: { # A ParagraphElement representing a horizontal line. # A horizontal rule paragraph element.
                    &quot;suggestedInsertionIds&quot;: [ # The suggested insertion IDs. A HorizontalRule may have multiple insertion IDs if it is a nested suggested change. If empty, then this is not a suggested insertion.
                      &quot;A String&quot;,
                    ],
                    &quot;suggestedTextStyleChanges&quot;: { # The suggested text style changes to this HorizontalRule, keyed by suggestion ID.
                      &quot;a_key&quot;: { # A suggested change to a TextStyle.
                        &quot;textStyleSuggestionState&quot;: { # A mask that indicates which of the fields on the base TextStyle have been changed in this suggestion. For any field set to true, there is a new suggested value. # A mask that indicates which of the fields on the base TextStyle have been changed in this suggestion.
                          &quot;backgroundColorSuggested&quot;: True or False, # Indicates if there was a suggested change to background_color.
                          &quot;fontSizeSuggested&quot;: True or False, # Indicates if there was a suggested change to font_size.
                          &quot;boldSuggested&quot;: True or False, # Indicates if there was a suggested change to bold.
                          &quot;baselineOffsetSuggested&quot;: True or False, # Indicates if there was a suggested change to baseline_offset.
                          &quot;foregroundColorSuggested&quot;: True or False, # Indicates if there was a suggested change to foreground_color.
                          &quot;italicSuggested&quot;: True or False, # Indicates if there was a suggested change to italic.
                          &quot;linkSuggested&quot;: True or False, # Indicates if there was a suggested change to link.
                          &quot;underlineSuggested&quot;: True or False, # Indicates if there was a suggested change to underline.
                          &quot;weightedFontFamilySuggested&quot;: True or False, # Indicates if there was a suggested change to weighted_font_family.
                          &quot;smallCapsSuggested&quot;: True or False, # Indicates if there was a suggested change to small_caps.
                          &quot;strikethroughSuggested&quot;: True or False, # Indicates if there was a suggested change to strikethrough.
                        },
                        &quot;textStyle&quot;: { # Represents the styling that can be applied to text. Inherited text styles are represented as unset fields in this message. A text style&#x27;s parent depends on where the text style is defined: * The TextStyle of text in a Paragraph inherits from the paragraph&#x27;s corresponding named style type. * The TextStyle on a named style inherits from the normal text named style. * The TextStyle of the normal text named style inherits from the default text style in the Docs editor. * The TextStyle on a Paragraph element that is contained in a table may inherit its text style from the table style. If the text style does not inherit from a parent, unsetting fields will revert the style to a value matching the defaults in the Docs editor. # A TextStyle that only includes the changes made in this suggestion. This can be used along with the text_style_suggestion_state to see which fields have changed and their new values.
                          &quot;italic&quot;: True or False, # Whether or not the text is italicized.
                          &quot;baselineOffset&quot;: &quot;A String&quot;, # The text&#x27;s vertical offset from its normal position. Text with `SUPERSCRIPT` or `SUBSCRIPT` baseline offsets is automatically rendered in a smaller font size, computed based on the `font_size` field. The `font_size` itself is not affected by changes in this field.
                          &quot;bold&quot;: True or False, # Whether or not the text is rendered as bold.
                          &quot;fontSize&quot;: { # A magnitude in a single direction in the specified units. # The size of the text&#x27;s font.
                            &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                            &quot;magnitude&quot;: 3.14, # The magnitude.
                          },
                          &quot;foregroundColor&quot;: { # A color that can either be fully opaque or fully transparent. # The foreground color of the text. If set, the color is either an RGB color or transparent, depending on the `color` field.
                            &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                              &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                                &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                                &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                                &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                              },
                            },
                          },
                          &quot;backgroundColor&quot;: { # A color that can either be fully opaque or fully transparent. # The background color of the text. If set, the color is either an RGB color or transparent, depending on the `color` field.
                            &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                              &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                                &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                                &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                                &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                              },
                            },
                          },
                          &quot;link&quot;: { # A reference to another portion of a document or an external URL resource. # The hyperlink destination of the text. If unset, there is no link. Links are not inherited from parent text. Changing the link in an update request causes some other changes to the text style of the range: * When setting a link, the text foreground color will be updated to the default link color and the text will be underlined. If these fields are modified in the same request, those values will be used instead of the link defaults. * Setting a link on a text range that overlaps with an existing link will also update the existing link to point to the new URL. * Links are not settable on newline characters. As a result, setting a link on a text range that crosses a paragraph boundary, such as `&quot;ABC\n123&quot;`, will separate the newline character(s) into their own text runs. The link will be applied separately to the runs before and after the newline. * Removing a link will update the text style of the range to match the style of the preceding text (or the default text styles if the preceding text is another link) unless different styles are being set in the same request.
                            &quot;bookmarkId&quot;: &quot;A String&quot;, # The ID of a bookmark in this document.
                            &quot;url&quot;: &quot;A String&quot;, # An external URL.
                            &quot;headingId&quot;: &quot;A String&quot;, # The ID of a heading in this document.
                          },
                          &quot;strikethrough&quot;: True or False, # Whether or not the text is struck through.
                          &quot;weightedFontFamily&quot;: { # Represents a font family and weight of text. # The font family and rendered weight of the text. If an update request specifies values for both `weighted_font_family` and `bold`, the `weighted_font_family` is applied first, then `bold`. If `weighted_font_family#weight` is not set, it defaults to `400`. If `weighted_font_family` is set, then `weighted_font_family#font_family` must also be set with a non-empty value. Otherwise, a 400 bad request error is returned.
                            &quot;fontFamily&quot;: &quot;A String&quot;, # The font family of the text. The font family can be any font from the Font menu in Docs or from [Google Fonts] (https://fonts.google.com/). If the font name is unrecognized, the text is rendered in `Arial`.
                            &quot;weight&quot;: 42, # The weight of the font. This field can have any value that is a multiple of `100` between `100` and `900`, inclusive. This range corresponds to the numerical values described in the CSS 2.1 Specification, [section 15.6](https://www.w3.org/TR/CSS21/fonts.html#font-boldness), with non-numerical values disallowed. The default value is `400` (&quot;normal&quot;). The font weight makes up just one component of the rendered font weight. The rendered weight is determined by a combination of the `weight` and the text style&#x27;s resolved `bold` value, after accounting for inheritance: * If the text is bold and the weight is less than `400`, the rendered weight is 400. * If the text is bold and the weight is greater than or equal to `400` but is less than `700`, the rendered weight is `700`. * If the weight is greater than or equal to `700`, the rendered weight is equal to the weight. * If the text is not bold, the rendered weight is equal to the weight.
                          },
                          &quot;underline&quot;: True or False, # Whether or not the text is underlined.
                          &quot;smallCaps&quot;: True or False, # Whether or not the text is in small capital letters.
                        },
                      },
                    },
                    &quot;suggestedDeletionIds&quot;: [ # The suggested deletion IDs. If empty, then there are no suggested deletions of this content.
                      &quot;A String&quot;,
                    ],
                    &quot;textStyle&quot;: { # Represents the styling that can be applied to text. Inherited text styles are represented as unset fields in this message. A text style&#x27;s parent depends on where the text style is defined: * The TextStyle of text in a Paragraph inherits from the paragraph&#x27;s corresponding named style type. * The TextStyle on a named style inherits from the normal text named style. * The TextStyle of the normal text named style inherits from the default text style in the Docs editor. * The TextStyle on a Paragraph element that is contained in a table may inherit its text style from the table style. If the text style does not inherit from a parent, unsetting fields will revert the style to a value matching the defaults in the Docs editor. # The text style of this HorizontalRule. Similar to text content, like text runs and footnote references, the text style of a horizontal rule can affect content layout as well as the styling of text inserted adjacent to it.
                      &quot;italic&quot;: True or False, # Whether or not the text is italicized.
                      &quot;baselineOffset&quot;: &quot;A String&quot;, # The text&#x27;s vertical offset from its normal position. Text with `SUPERSCRIPT` or `SUBSCRIPT` baseline offsets is automatically rendered in a smaller font size, computed based on the `font_size` field. The `font_size` itself is not affected by changes in this field.
                      &quot;bold&quot;: True or False, # Whether or not the text is rendered as bold.
                      &quot;fontSize&quot;: { # A magnitude in a single direction in the specified units. # The size of the text&#x27;s font.
                        &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                        &quot;magnitude&quot;: 3.14, # The magnitude.
                      },
                      &quot;foregroundColor&quot;: { # A color that can either be fully opaque or fully transparent. # The foreground color of the text. If set, the color is either an RGB color or transparent, depending on the `color` field.
                        &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                          &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                            &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                            &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                            &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                          },
                        },
                      },
                      &quot;backgroundColor&quot;: { # A color that can either be fully opaque or fully transparent. # The background color of the text. If set, the color is either an RGB color or transparent, depending on the `color` field.
                        &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                          &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                            &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                            &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                            &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                          },
                        },
                      },
                      &quot;link&quot;: { # A reference to another portion of a document or an external URL resource. # The hyperlink destination of the text. If unset, there is no link. Links are not inherited from parent text. Changing the link in an update request causes some other changes to the text style of the range: * When setting a link, the text foreground color will be updated to the default link color and the text will be underlined. If these fields are modified in the same request, those values will be used instead of the link defaults. * Setting a link on a text range that overlaps with an existing link will also update the existing link to point to the new URL. * Links are not settable on newline characters. As a result, setting a link on a text range that crosses a paragraph boundary, such as `&quot;ABC\n123&quot;`, will separate the newline character(s) into their own text runs. The link will be applied separately to the runs before and after the newline. * Removing a link will update the text style of the range to match the style of the preceding text (or the default text styles if the preceding text is another link) unless different styles are being set in the same request.
                        &quot;bookmarkId&quot;: &quot;A String&quot;, # The ID of a bookmark in this document.
                        &quot;url&quot;: &quot;A String&quot;, # An external URL.
                        &quot;headingId&quot;: &quot;A String&quot;, # The ID of a heading in this document.
                      },
                      &quot;strikethrough&quot;: True or False, # Whether or not the text is struck through.
                      &quot;weightedFontFamily&quot;: { # Represents a font family and weight of text. # The font family and rendered weight of the text. If an update request specifies values for both `weighted_font_family` and `bold`, the `weighted_font_family` is applied first, then `bold`. If `weighted_font_family#weight` is not set, it defaults to `400`. If `weighted_font_family` is set, then `weighted_font_family#font_family` must also be set with a non-empty value. Otherwise, a 400 bad request error is returned.
                        &quot;fontFamily&quot;: &quot;A String&quot;, # The font family of the text. The font family can be any font from the Font menu in Docs or from [Google Fonts] (https://fonts.google.com/). If the font name is unrecognized, the text is rendered in `Arial`.
                        &quot;weight&quot;: 42, # The weight of the font. This field can have any value that is a multiple of `100` between `100` and `900`, inclusive. This range corresponds to the numerical values described in the CSS 2.1 Specification, [section 15.6](https://www.w3.org/TR/CSS21/fonts.html#font-boldness), with non-numerical values disallowed. The default value is `400` (&quot;normal&quot;). The font weight makes up just one component of the rendered font weight. The rendered weight is determined by a combination of the `weight` and the text style&#x27;s resolved `bold` value, after accounting for inheritance: * If the text is bold and the weight is less than `400`, the rendered weight is 400. * If the text is bold and the weight is greater than or equal to `400` but is less than `700`, the rendered weight is `700`. * If the weight is greater than or equal to `700`, the rendered weight is equal to the weight. * If the text is not bold, the rendered weight is equal to the weight.
                      },
                      &quot;underline&quot;: True or False, # Whether or not the text is underlined.
                      &quot;smallCaps&quot;: True or False, # Whether or not the text is in small capital letters.
                    },
                  },
                  &quot;autoText&quot;: { # A ParagraphElement representing a spot in the text that is dynamically replaced with content that can change over time, like a page number. # An auto text paragraph element.
                    &quot;suggestedDeletionIds&quot;: [ # The suggested deletion IDs. If empty, then there are no suggested deletions of this content.
                      &quot;A String&quot;,
                    ],
                    &quot;suggestedInsertionIds&quot;: [ # The suggested insertion IDs. An AutoText may have multiple insertion IDs if it is a nested suggested change. If empty, then this is not a suggested insertion.
                      &quot;A String&quot;,
                    ],
                    &quot;suggestedTextStyleChanges&quot;: { # The suggested text style changes to this AutoText, keyed by suggestion ID.
                      &quot;a_key&quot;: { # A suggested change to a TextStyle.
                        &quot;textStyleSuggestionState&quot;: { # A mask that indicates which of the fields on the base TextStyle have been changed in this suggestion. For any field set to true, there is a new suggested value. # A mask that indicates which of the fields on the base TextStyle have been changed in this suggestion.
                          &quot;backgroundColorSuggested&quot;: True or False, # Indicates if there was a suggested change to background_color.
                          &quot;fontSizeSuggested&quot;: True or False, # Indicates if there was a suggested change to font_size.
                          &quot;boldSuggested&quot;: True or False, # Indicates if there was a suggested change to bold.
                          &quot;baselineOffsetSuggested&quot;: True or False, # Indicates if there was a suggested change to baseline_offset.
                          &quot;foregroundColorSuggested&quot;: True or False, # Indicates if there was a suggested change to foreground_color.
                          &quot;italicSuggested&quot;: True or False, # Indicates if there was a suggested change to italic.
                          &quot;linkSuggested&quot;: True or False, # Indicates if there was a suggested change to link.
                          &quot;underlineSuggested&quot;: True or False, # Indicates if there was a suggested change to underline.
                          &quot;weightedFontFamilySuggested&quot;: True or False, # Indicates if there was a suggested change to weighted_font_family.
                          &quot;smallCapsSuggested&quot;: True or False, # Indicates if there was a suggested change to small_caps.
                          &quot;strikethroughSuggested&quot;: True or False, # Indicates if there was a suggested change to strikethrough.
                        },
                        &quot;textStyle&quot;: { # Represents the styling that can be applied to text. Inherited text styles are represented as unset fields in this message. A text style&#x27;s parent depends on where the text style is defined: * The TextStyle of text in a Paragraph inherits from the paragraph&#x27;s corresponding named style type. * The TextStyle on a named style inherits from the normal text named style. * The TextStyle of the normal text named style inherits from the default text style in the Docs editor. * The TextStyle on a Paragraph element that is contained in a table may inherit its text style from the table style. If the text style does not inherit from a parent, unsetting fields will revert the style to a value matching the defaults in the Docs editor. # A TextStyle that only includes the changes made in this suggestion. This can be used along with the text_style_suggestion_state to see which fields have changed and their new values.
                          &quot;italic&quot;: True or False, # Whether or not the text is italicized.
                          &quot;baselineOffset&quot;: &quot;A String&quot;, # The text&#x27;s vertical offset from its normal position. Text with `SUPERSCRIPT` or `SUBSCRIPT` baseline offsets is automatically rendered in a smaller font size, computed based on the `font_size` field. The `font_size` itself is not affected by changes in this field.
                          &quot;bold&quot;: True or False, # Whether or not the text is rendered as bold.
                          &quot;fontSize&quot;: { # A magnitude in a single direction in the specified units. # The size of the text&#x27;s font.
                            &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                            &quot;magnitude&quot;: 3.14, # The magnitude.
                          },
                          &quot;foregroundColor&quot;: { # A color that can either be fully opaque or fully transparent. # The foreground color of the text. If set, the color is either an RGB color or transparent, depending on the `color` field.
                            &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                              &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                                &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                                &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                                &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                              },
                            },
                          },
                          &quot;backgroundColor&quot;: { # A color that can either be fully opaque or fully transparent. # The background color of the text. If set, the color is either an RGB color or transparent, depending on the `color` field.
                            &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                              &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                                &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                                &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                                &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                              },
                            },
                          },
                          &quot;link&quot;: { # A reference to another portion of a document or an external URL resource. # The hyperlink destination of the text. If unset, there is no link. Links are not inherited from parent text. Changing the link in an update request causes some other changes to the text style of the range: * When setting a link, the text foreground color will be updated to the default link color and the text will be underlined. If these fields are modified in the same request, those values will be used instead of the link defaults. * Setting a link on a text range that overlaps with an existing link will also update the existing link to point to the new URL. * Links are not settable on newline characters. As a result, setting a link on a text range that crosses a paragraph boundary, such as `&quot;ABC\n123&quot;`, will separate the newline character(s) into their own text runs. The link will be applied separately to the runs before and after the newline. * Removing a link will update the text style of the range to match the style of the preceding text (or the default text styles if the preceding text is another link) unless different styles are being set in the same request.
                            &quot;bookmarkId&quot;: &quot;A String&quot;, # The ID of a bookmark in this document.
                            &quot;url&quot;: &quot;A String&quot;, # An external URL.
                            &quot;headingId&quot;: &quot;A String&quot;, # The ID of a heading in this document.
                          },
                          &quot;strikethrough&quot;: True or False, # Whether or not the text is struck through.
                          &quot;weightedFontFamily&quot;: { # Represents a font family and weight of text. # The font family and rendered weight of the text. If an update request specifies values for both `weighted_font_family` and `bold`, the `weighted_font_family` is applied first, then `bold`. If `weighted_font_family#weight` is not set, it defaults to `400`. If `weighted_font_family` is set, then `weighted_font_family#font_family` must also be set with a non-empty value. Otherwise, a 400 bad request error is returned.
                            &quot;fontFamily&quot;: &quot;A String&quot;, # The font family of the text. The font family can be any font from the Font menu in Docs or from [Google Fonts] (https://fonts.google.com/). If the font name is unrecognized, the text is rendered in `Arial`.
                            &quot;weight&quot;: 42, # The weight of the font. This field can have any value that is a multiple of `100` between `100` and `900`, inclusive. This range corresponds to the numerical values described in the CSS 2.1 Specification, [section 15.6](https://www.w3.org/TR/CSS21/fonts.html#font-boldness), with non-numerical values disallowed. The default value is `400` (&quot;normal&quot;). The font weight makes up just one component of the rendered font weight. The rendered weight is determined by a combination of the `weight` and the text style&#x27;s resolved `bold` value, after accounting for inheritance: * If the text is bold and the weight is less than `400`, the rendered weight is 400. * If the text is bold and the weight is greater than or equal to `400` but is less than `700`, the rendered weight is `700`. * If the weight is greater than or equal to `700`, the rendered weight is equal to the weight. * If the text is not bold, the rendered weight is equal to the weight.
                          },
                          &quot;underline&quot;: True or False, # Whether or not the text is underlined.
                          &quot;smallCaps&quot;: True or False, # Whether or not the text is in small capital letters.
                        },
                      },
                    },
                    &quot;type&quot;: &quot;A String&quot;, # The type of this auto text.
                    &quot;textStyle&quot;: { # Represents the styling that can be applied to text. Inherited text styles are represented as unset fields in this message. A text style&#x27;s parent depends on where the text style is defined: * The TextStyle of text in a Paragraph inherits from the paragraph&#x27;s corresponding named style type. * The TextStyle on a named style inherits from the normal text named style. * The TextStyle of the normal text named style inherits from the default text style in the Docs editor. * The TextStyle on a Paragraph element that is contained in a table may inherit its text style from the table style. If the text style does not inherit from a parent, unsetting fields will revert the style to a value matching the defaults in the Docs editor. # The text style of this AutoText.
                      &quot;italic&quot;: True or False, # Whether or not the text is italicized.
                      &quot;baselineOffset&quot;: &quot;A String&quot;, # The text&#x27;s vertical offset from its normal position. Text with `SUPERSCRIPT` or `SUBSCRIPT` baseline offsets is automatically rendered in a smaller font size, computed based on the `font_size` field. The `font_size` itself is not affected by changes in this field.
                      &quot;bold&quot;: True or False, # Whether or not the text is rendered as bold.
                      &quot;fontSize&quot;: { # A magnitude in a single direction in the specified units. # The size of the text&#x27;s font.
                        &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                        &quot;magnitude&quot;: 3.14, # The magnitude.
                      },
                      &quot;foregroundColor&quot;: { # A color that can either be fully opaque or fully transparent. # The foreground color of the text. If set, the color is either an RGB color or transparent, depending on the `color` field.
                        &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                          &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                            &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                            &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                            &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                          },
                        },
                      },
                      &quot;backgroundColor&quot;: { # A color that can either be fully opaque or fully transparent. # The background color of the text. If set, the color is either an RGB color or transparent, depending on the `color` field.
                        &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                          &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                            &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                            &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                            &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                          },
                        },
                      },
                      &quot;link&quot;: { # A reference to another portion of a document or an external URL resource. # The hyperlink destination of the text. If unset, there is no link. Links are not inherited from parent text. Changing the link in an update request causes some other changes to the text style of the range: * When setting a link, the text foreground color will be updated to the default link color and the text will be underlined. If these fields are modified in the same request, those values will be used instead of the link defaults. * Setting a link on a text range that overlaps with an existing link will also update the existing link to point to the new URL. * Links are not settable on newline characters. As a result, setting a link on a text range that crosses a paragraph boundary, such as `&quot;ABC\n123&quot;`, will separate the newline character(s) into their own text runs. The link will be applied separately to the runs before and after the newline. * Removing a link will update the text style of the range to match the style of the preceding text (or the default text styles if the preceding text is another link) unless different styles are being set in the same request.
                        &quot;bookmarkId&quot;: &quot;A String&quot;, # The ID of a bookmark in this document.
                        &quot;url&quot;: &quot;A String&quot;, # An external URL.
                        &quot;headingId&quot;: &quot;A String&quot;, # The ID of a heading in this document.
                      },
                      &quot;strikethrough&quot;: True or False, # Whether or not the text is struck through.
                      &quot;weightedFontFamily&quot;: { # Represents a font family and weight of text. # The font family and rendered weight of the text. If an update request specifies values for both `weighted_font_family` and `bold`, the `weighted_font_family` is applied first, then `bold`. If `weighted_font_family#weight` is not set, it defaults to `400`. If `weighted_font_family` is set, then `weighted_font_family#font_family` must also be set with a non-empty value. Otherwise, a 400 bad request error is returned.
                        &quot;fontFamily&quot;: &quot;A String&quot;, # The font family of the text. The font family can be any font from the Font menu in Docs or from [Google Fonts] (https://fonts.google.com/). If the font name is unrecognized, the text is rendered in `Arial`.
                        &quot;weight&quot;: 42, # The weight of the font. This field can have any value that is a multiple of `100` between `100` and `900`, inclusive. This range corresponds to the numerical values described in the CSS 2.1 Specification, [section 15.6](https://www.w3.org/TR/CSS21/fonts.html#font-boldness), with non-numerical values disallowed. The default value is `400` (&quot;normal&quot;). The font weight makes up just one component of the rendered font weight. The rendered weight is determined by a combination of the `weight` and the text style&#x27;s resolved `bold` value, after accounting for inheritance: * If the text is bold and the weight is less than `400`, the rendered weight is 400. * If the text is bold and the weight is greater than or equal to `400` but is less than `700`, the rendered weight is `700`. * If the weight is greater than or equal to `700`, the rendered weight is equal to the weight. * If the text is not bold, the rendered weight is equal to the weight.
                      },
                      &quot;underline&quot;: True or False, # Whether or not the text is underlined.
                      &quot;smallCaps&quot;: True or False, # Whether or not the text is in small capital letters.
                    },
                  },
                  &quot;inlineObjectElement&quot;: { # A ParagraphElement that contains an InlineObject. # An inline object paragraph element.
                    &quot;suggestedDeletionIds&quot;: [ # The suggested deletion IDs. If empty, then there are no suggested deletions of this content.
                      &quot;A String&quot;,
                    ],
                    &quot;suggestedInsertionIds&quot;: [ # The suggested insertion IDs. An InlineObjectElement may have multiple insertion IDs if it is a nested suggested change. If empty, then this is not a suggested insertion.
                      &quot;A String&quot;,
                    ],
                    &quot;suggestedTextStyleChanges&quot;: { # The suggested text style changes to this InlineObject, keyed by suggestion ID.
                      &quot;a_key&quot;: { # A suggested change to a TextStyle.
                        &quot;textStyleSuggestionState&quot;: { # A mask that indicates which of the fields on the base TextStyle have been changed in this suggestion. For any field set to true, there is a new suggested value. # A mask that indicates which of the fields on the base TextStyle have been changed in this suggestion.
                          &quot;backgroundColorSuggested&quot;: True or False, # Indicates if there was a suggested change to background_color.
                          &quot;fontSizeSuggested&quot;: True or False, # Indicates if there was a suggested change to font_size.
                          &quot;boldSuggested&quot;: True or False, # Indicates if there was a suggested change to bold.
                          &quot;baselineOffsetSuggested&quot;: True or False, # Indicates if there was a suggested change to baseline_offset.
                          &quot;foregroundColorSuggested&quot;: True or False, # Indicates if there was a suggested change to foreground_color.
                          &quot;italicSuggested&quot;: True or False, # Indicates if there was a suggested change to italic.
                          &quot;linkSuggested&quot;: True or False, # Indicates if there was a suggested change to link.
                          &quot;underlineSuggested&quot;: True or False, # Indicates if there was a suggested change to underline.
                          &quot;weightedFontFamilySuggested&quot;: True or False, # Indicates if there was a suggested change to weighted_font_family.
                          &quot;smallCapsSuggested&quot;: True or False, # Indicates if there was a suggested change to small_caps.
                          &quot;strikethroughSuggested&quot;: True or False, # Indicates if there was a suggested change to strikethrough.
                        },
                        &quot;textStyle&quot;: { # Represents the styling that can be applied to text. Inherited text styles are represented as unset fields in this message. A text style&#x27;s parent depends on where the text style is defined: * The TextStyle of text in a Paragraph inherits from the paragraph&#x27;s corresponding named style type. * The TextStyle on a named style inherits from the normal text named style. * The TextStyle of the normal text named style inherits from the default text style in the Docs editor. * The TextStyle on a Paragraph element that is contained in a table may inherit its text style from the table style. If the text style does not inherit from a parent, unsetting fields will revert the style to a value matching the defaults in the Docs editor. # A TextStyle that only includes the changes made in this suggestion. This can be used along with the text_style_suggestion_state to see which fields have changed and their new values.
                          &quot;italic&quot;: True or False, # Whether or not the text is italicized.
                          &quot;baselineOffset&quot;: &quot;A String&quot;, # The text&#x27;s vertical offset from its normal position. Text with `SUPERSCRIPT` or `SUBSCRIPT` baseline offsets is automatically rendered in a smaller font size, computed based on the `font_size` field. The `font_size` itself is not affected by changes in this field.
                          &quot;bold&quot;: True or False, # Whether or not the text is rendered as bold.
                          &quot;fontSize&quot;: { # A magnitude in a single direction in the specified units. # The size of the text&#x27;s font.
                            &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                            &quot;magnitude&quot;: 3.14, # The magnitude.
                          },
                          &quot;foregroundColor&quot;: { # A color that can either be fully opaque or fully transparent. # The foreground color of the text. If set, the color is either an RGB color or transparent, depending on the `color` field.
                            &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                              &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                                &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                                &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                                &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                              },
                            },
                          },
                          &quot;backgroundColor&quot;: { # A color that can either be fully opaque or fully transparent. # The background color of the text. If set, the color is either an RGB color or transparent, depending on the `color` field.
                            &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                              &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                                &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                                &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                                &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                              },
                            },
                          },
                          &quot;link&quot;: { # A reference to another portion of a document or an external URL resource. # The hyperlink destination of the text. If unset, there is no link. Links are not inherited from parent text. Changing the link in an update request causes some other changes to the text style of the range: * When setting a link, the text foreground color will be updated to the default link color and the text will be underlined. If these fields are modified in the same request, those values will be used instead of the link defaults. * Setting a link on a text range that overlaps with an existing link will also update the existing link to point to the new URL. * Links are not settable on newline characters. As a result, setting a link on a text range that crosses a paragraph boundary, such as `&quot;ABC\n123&quot;`, will separate the newline character(s) into their own text runs. The link will be applied separately to the runs before and after the newline. * Removing a link will update the text style of the range to match the style of the preceding text (or the default text styles if the preceding text is another link) unless different styles are being set in the same request.
                            &quot;bookmarkId&quot;: &quot;A String&quot;, # The ID of a bookmark in this document.
                            &quot;url&quot;: &quot;A String&quot;, # An external URL.
                            &quot;headingId&quot;: &quot;A String&quot;, # The ID of a heading in this document.
                          },
                          &quot;strikethrough&quot;: True or False, # Whether or not the text is struck through.
                          &quot;weightedFontFamily&quot;: { # Represents a font family and weight of text. # The font family and rendered weight of the text. If an update request specifies values for both `weighted_font_family` and `bold`, the `weighted_font_family` is applied first, then `bold`. If `weighted_font_family#weight` is not set, it defaults to `400`. If `weighted_font_family` is set, then `weighted_font_family#font_family` must also be set with a non-empty value. Otherwise, a 400 bad request error is returned.
                            &quot;fontFamily&quot;: &quot;A String&quot;, # The font family of the text. The font family can be any font from the Font menu in Docs or from [Google Fonts] (https://fonts.google.com/). If the font name is unrecognized, the text is rendered in `Arial`.
                            &quot;weight&quot;: 42, # The weight of the font. This field can have any value that is a multiple of `100` between `100` and `900`, inclusive. This range corresponds to the numerical values described in the CSS 2.1 Specification, [section 15.6](https://www.w3.org/TR/CSS21/fonts.html#font-boldness), with non-numerical values disallowed. The default value is `400` (&quot;normal&quot;). The font weight makes up just one component of the rendered font weight. The rendered weight is determined by a combination of the `weight` and the text style&#x27;s resolved `bold` value, after accounting for inheritance: * If the text is bold and the weight is less than `400`, the rendered weight is 400. * If the text is bold and the weight is greater than or equal to `400` but is less than `700`, the rendered weight is `700`. * If the weight is greater than or equal to `700`, the rendered weight is equal to the weight. * If the text is not bold, the rendered weight is equal to the weight.
                          },
                          &quot;underline&quot;: True or False, # Whether or not the text is underlined.
                          &quot;smallCaps&quot;: True or False, # Whether or not the text is in small capital letters.
                        },
                      },
                    },
                    &quot;inlineObjectId&quot;: &quot;A String&quot;, # The ID of the InlineObject this element contains.
                    &quot;textStyle&quot;: { # Represents the styling that can be applied to text. Inherited text styles are represented as unset fields in this message. A text style&#x27;s parent depends on where the text style is defined: * The TextStyle of text in a Paragraph inherits from the paragraph&#x27;s corresponding named style type. * The TextStyle on a named style inherits from the normal text named style. * The TextStyle of the normal text named style inherits from the default text style in the Docs editor. * The TextStyle on a Paragraph element that is contained in a table may inherit its text style from the table style. If the text style does not inherit from a parent, unsetting fields will revert the style to a value matching the defaults in the Docs editor. # The text style of this InlineObjectElement. Similar to text content, like text runs and footnote references, the text style of an inline object element can affect content layout as well as the styling of text inserted adjacent to it.
                      &quot;italic&quot;: True or False, # Whether or not the text is italicized.
                      &quot;baselineOffset&quot;: &quot;A String&quot;, # The text&#x27;s vertical offset from its normal position. Text with `SUPERSCRIPT` or `SUBSCRIPT` baseline offsets is automatically rendered in a smaller font size, computed based on the `font_size` field. The `font_size` itself is not affected by changes in this field.
                      &quot;bold&quot;: True or False, # Whether or not the text is rendered as bold.
                      &quot;fontSize&quot;: { # A magnitude in a single direction in the specified units. # The size of the text&#x27;s font.
                        &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                        &quot;magnitude&quot;: 3.14, # The magnitude.
                      },
                      &quot;foregroundColor&quot;: { # A color that can either be fully opaque or fully transparent. # The foreground color of the text. If set, the color is either an RGB color or transparent, depending on the `color` field.
                        &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                          &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                            &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                            &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                            &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                          },
                        },
                      },
                      &quot;backgroundColor&quot;: { # A color that can either be fully opaque or fully transparent. # The background color of the text. If set, the color is either an RGB color or transparent, depending on the `color` field.
                        &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                          &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                            &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                            &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                            &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                          },
                        },
                      },
                      &quot;link&quot;: { # A reference to another portion of a document or an external URL resource. # The hyperlink destination of the text. If unset, there is no link. Links are not inherited from parent text. Changing the link in an update request causes some other changes to the text style of the range: * When setting a link, the text foreground color will be updated to the default link color and the text will be underlined. If these fields are modified in the same request, those values will be used instead of the link defaults. * Setting a link on a text range that overlaps with an existing link will also update the existing link to point to the new URL. * Links are not settable on newline characters. As a result, setting a link on a text range that crosses a paragraph boundary, such as `&quot;ABC\n123&quot;`, will separate the newline character(s) into their own text runs. The link will be applied separately to the runs before and after the newline. * Removing a link will update the text style of the range to match the style of the preceding text (or the default text styles if the preceding text is another link) unless different styles are being set in the same request.
                        &quot;bookmarkId&quot;: &quot;A String&quot;, # The ID of a bookmark in this document.
                        &quot;url&quot;: &quot;A String&quot;, # An external URL.
                        &quot;headingId&quot;: &quot;A String&quot;, # The ID of a heading in this document.
                      },
                      &quot;strikethrough&quot;: True or False, # Whether or not the text is struck through.
                      &quot;weightedFontFamily&quot;: { # Represents a font family and weight of text. # The font family and rendered weight of the text. If an update request specifies values for both `weighted_font_family` and `bold`, the `weighted_font_family` is applied first, then `bold`. If `weighted_font_family#weight` is not set, it defaults to `400`. If `weighted_font_family` is set, then `weighted_font_family#font_family` must also be set with a non-empty value. Otherwise, a 400 bad request error is returned.
                        &quot;fontFamily&quot;: &quot;A String&quot;, # The font family of the text. The font family can be any font from the Font menu in Docs or from [Google Fonts] (https://fonts.google.com/). If the font name is unrecognized, the text is rendered in `Arial`.
                        &quot;weight&quot;: 42, # The weight of the font. This field can have any value that is a multiple of `100` between `100` and `900`, inclusive. This range corresponds to the numerical values described in the CSS 2.1 Specification, [section 15.6](https://www.w3.org/TR/CSS21/fonts.html#font-boldness), with non-numerical values disallowed. The default value is `400` (&quot;normal&quot;). The font weight makes up just one component of the rendered font weight. The rendered weight is determined by a combination of the `weight` and the text style&#x27;s resolved `bold` value, after accounting for inheritance: * If the text is bold and the weight is less than `400`, the rendered weight is 400. * If the text is bold and the weight is greater than or equal to `400` but is less than `700`, the rendered weight is `700`. * If the weight is greater than or equal to `700`, the rendered weight is equal to the weight. * If the text is not bold, the rendered weight is equal to the weight.
                      },
                      &quot;underline&quot;: True or False, # Whether or not the text is underlined.
                      &quot;smallCaps&quot;: True or False, # Whether or not the text is in small capital letters.
                    },
                  },
                  &quot;footnoteReference&quot;: { # A ParagraphElement representing a footnote reference. A footnote reference is the inline content rendered with a number and is used to identify the footnote. # A footnote reference paragraph element.
                    &quot;footnoteId&quot;: &quot;A String&quot;, # The ID of the footnote that contains the content of this footnote reference.
                    &quot;suggestedInsertionIds&quot;: [ # The suggested insertion IDs. A FootnoteReference may have multiple insertion IDs if it is a nested suggested change. If empty, then this is not a suggested insertion.
                      &quot;A String&quot;,
                    ],
                    &quot;footnoteNumber&quot;: &quot;A String&quot;, # The rendered number of this footnote.
                    &quot;suggestedDeletionIds&quot;: [ # The suggested deletion IDs. If empty, then there are no suggested deletions of this content.
                      &quot;A String&quot;,
                    ],
                    &quot;suggestedTextStyleChanges&quot;: { # The suggested text style changes to this FootnoteReference, keyed by suggestion ID.
                      &quot;a_key&quot;: { # A suggested change to a TextStyle.
                        &quot;textStyleSuggestionState&quot;: { # A mask that indicates which of the fields on the base TextStyle have been changed in this suggestion. For any field set to true, there is a new suggested value. # A mask that indicates which of the fields on the base TextStyle have been changed in this suggestion.
                          &quot;backgroundColorSuggested&quot;: True or False, # Indicates if there was a suggested change to background_color.
                          &quot;fontSizeSuggested&quot;: True or False, # Indicates if there was a suggested change to font_size.
                          &quot;boldSuggested&quot;: True or False, # Indicates if there was a suggested change to bold.
                          &quot;baselineOffsetSuggested&quot;: True or False, # Indicates if there was a suggested change to baseline_offset.
                          &quot;foregroundColorSuggested&quot;: True or False, # Indicates if there was a suggested change to foreground_color.
                          &quot;italicSuggested&quot;: True or False, # Indicates if there was a suggested change to italic.
                          &quot;linkSuggested&quot;: True or False, # Indicates if there was a suggested change to link.
                          &quot;underlineSuggested&quot;: True or False, # Indicates if there was a suggested change to underline.
                          &quot;weightedFontFamilySuggested&quot;: True or False, # Indicates if there was a suggested change to weighted_font_family.
                          &quot;smallCapsSuggested&quot;: True or False, # Indicates if there was a suggested change to small_caps.
                          &quot;strikethroughSuggested&quot;: True or False, # Indicates if there was a suggested change to strikethrough.
                        },
                        &quot;textStyle&quot;: { # Represents the styling that can be applied to text. Inherited text styles are represented as unset fields in this message. A text style&#x27;s parent depends on where the text style is defined: * The TextStyle of text in a Paragraph inherits from the paragraph&#x27;s corresponding named style type. * The TextStyle on a named style inherits from the normal text named style. * The TextStyle of the normal text named style inherits from the default text style in the Docs editor. * The TextStyle on a Paragraph element that is contained in a table may inherit its text style from the table style. If the text style does not inherit from a parent, unsetting fields will revert the style to a value matching the defaults in the Docs editor. # A TextStyle that only includes the changes made in this suggestion. This can be used along with the text_style_suggestion_state to see which fields have changed and their new values.
                          &quot;italic&quot;: True or False, # Whether or not the text is italicized.
                          &quot;baselineOffset&quot;: &quot;A String&quot;, # The text&#x27;s vertical offset from its normal position. Text with `SUPERSCRIPT` or `SUBSCRIPT` baseline offsets is automatically rendered in a smaller font size, computed based on the `font_size` field. The `font_size` itself is not affected by changes in this field.
                          &quot;bold&quot;: True or False, # Whether or not the text is rendered as bold.
                          &quot;fontSize&quot;: { # A magnitude in a single direction in the specified units. # The size of the text&#x27;s font.
                            &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                            &quot;magnitude&quot;: 3.14, # The magnitude.
                          },
                          &quot;foregroundColor&quot;: { # A color that can either be fully opaque or fully transparent. # The foreground color of the text. If set, the color is either an RGB color or transparent, depending on the `color` field.
                            &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                              &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                                &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                                &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                                &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                              },
                            },
                          },
                          &quot;backgroundColor&quot;: { # A color that can either be fully opaque or fully transparent. # The background color of the text. If set, the color is either an RGB color or transparent, depending on the `color` field.
                            &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                              &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                                &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                                &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                                &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                              },
                            },
                          },
                          &quot;link&quot;: { # A reference to another portion of a document or an external URL resource. # The hyperlink destination of the text. If unset, there is no link. Links are not inherited from parent text. Changing the link in an update request causes some other changes to the text style of the range: * When setting a link, the text foreground color will be updated to the default link color and the text will be underlined. If these fields are modified in the same request, those values will be used instead of the link defaults. * Setting a link on a text range that overlaps with an existing link will also update the existing link to point to the new URL. * Links are not settable on newline characters. As a result, setting a link on a text range that crosses a paragraph boundary, such as `&quot;ABC\n123&quot;`, will separate the newline character(s) into their own text runs. The link will be applied separately to the runs before and after the newline. * Removing a link will update the text style of the range to match the style of the preceding text (or the default text styles if the preceding text is another link) unless different styles are being set in the same request.
                            &quot;bookmarkId&quot;: &quot;A String&quot;, # The ID of a bookmark in this document.
                            &quot;url&quot;: &quot;A String&quot;, # An external URL.
                            &quot;headingId&quot;: &quot;A String&quot;, # The ID of a heading in this document.
                          },
                          &quot;strikethrough&quot;: True or False, # Whether or not the text is struck through.
                          &quot;weightedFontFamily&quot;: { # Represents a font family and weight of text. # The font family and rendered weight of the text. If an update request specifies values for both `weighted_font_family` and `bold`, the `weighted_font_family` is applied first, then `bold`. If `weighted_font_family#weight` is not set, it defaults to `400`. If `weighted_font_family` is set, then `weighted_font_family#font_family` must also be set with a non-empty value. Otherwise, a 400 bad request error is returned.
                            &quot;fontFamily&quot;: &quot;A String&quot;, # The font family of the text. The font family can be any font from the Font menu in Docs or from [Google Fonts] (https://fonts.google.com/). If the font name is unrecognized, the text is rendered in `Arial`.
                            &quot;weight&quot;: 42, # The weight of the font. This field can have any value that is a multiple of `100` between `100` and `900`, inclusive. This range corresponds to the numerical values described in the CSS 2.1 Specification, [section 15.6](https://www.w3.org/TR/CSS21/fonts.html#font-boldness), with non-numerical values disallowed. The default value is `400` (&quot;normal&quot;). The font weight makes up just one component of the rendered font weight. The rendered weight is determined by a combination of the `weight` and the text style&#x27;s resolved `bold` value, after accounting for inheritance: * If the text is bold and the weight is less than `400`, the rendered weight is 400. * If the text is bold and the weight is greater than or equal to `400` but is less than `700`, the rendered weight is `700`. * If the weight is greater than or equal to `700`, the rendered weight is equal to the weight. * If the text is not bold, the rendered weight is equal to the weight.
                          },
                          &quot;underline&quot;: True or False, # Whether or not the text is underlined.
                          &quot;smallCaps&quot;: True or False, # Whether or not the text is in small capital letters.
                        },
                      },
                    },
                    &quot;textStyle&quot;: { # Represents the styling that can be applied to text. Inherited text styles are represented as unset fields in this message. A text style&#x27;s parent depends on where the text style is defined: * The TextStyle of text in a Paragraph inherits from the paragraph&#x27;s corresponding named style type. * The TextStyle on a named style inherits from the normal text named style. * The TextStyle of the normal text named style inherits from the default text style in the Docs editor. * The TextStyle on a Paragraph element that is contained in a table may inherit its text style from the table style. If the text style does not inherit from a parent, unsetting fields will revert the style to a value matching the defaults in the Docs editor. # The text style of this FootnoteReference.
                      &quot;italic&quot;: True or False, # Whether or not the text is italicized.
                      &quot;baselineOffset&quot;: &quot;A String&quot;, # The text&#x27;s vertical offset from its normal position. Text with `SUPERSCRIPT` or `SUBSCRIPT` baseline offsets is automatically rendered in a smaller font size, computed based on the `font_size` field. The `font_size` itself is not affected by changes in this field.
                      &quot;bold&quot;: True or False, # Whether or not the text is rendered as bold.
                      &quot;fontSize&quot;: { # A magnitude in a single direction in the specified units. # The size of the text&#x27;s font.
                        &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                        &quot;magnitude&quot;: 3.14, # The magnitude.
                      },
                      &quot;foregroundColor&quot;: { # A color that can either be fully opaque or fully transparent. # The foreground color of the text. If set, the color is either an RGB color or transparent, depending on the `color` field.
                        &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                          &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                            &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                            &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                            &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                          },
                        },
                      },
                      &quot;backgroundColor&quot;: { # A color that can either be fully opaque or fully transparent. # The background color of the text. If set, the color is either an RGB color or transparent, depending on the `color` field.
                        &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                          &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                            &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                            &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                            &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                          },
                        },
                      },
                      &quot;link&quot;: { # A reference to another portion of a document or an external URL resource. # The hyperlink destination of the text. If unset, there is no link. Links are not inherited from parent text. Changing the link in an update request causes some other changes to the text style of the range: * When setting a link, the text foreground color will be updated to the default link color and the text will be underlined. If these fields are modified in the same request, those values will be used instead of the link defaults. * Setting a link on a text range that overlaps with an existing link will also update the existing link to point to the new URL. * Links are not settable on newline characters. As a result, setting a link on a text range that crosses a paragraph boundary, such as `&quot;ABC\n123&quot;`, will separate the newline character(s) into their own text runs. The link will be applied separately to the runs before and after the newline. * Removing a link will update the text style of the range to match the style of the preceding text (or the default text styles if the preceding text is another link) unless different styles are being set in the same request.
                        &quot;bookmarkId&quot;: &quot;A String&quot;, # The ID of a bookmark in this document.
                        &quot;url&quot;: &quot;A String&quot;, # An external URL.
                        &quot;headingId&quot;: &quot;A String&quot;, # The ID of a heading in this document.
                      },
                      &quot;strikethrough&quot;: True or False, # Whether or not the text is struck through.
                      &quot;weightedFontFamily&quot;: { # Represents a font family and weight of text. # The font family and rendered weight of the text. If an update request specifies values for both `weighted_font_family` and `bold`, the `weighted_font_family` is applied first, then `bold`. If `weighted_font_family#weight` is not set, it defaults to `400`. If `weighted_font_family` is set, then `weighted_font_family#font_family` must also be set with a non-empty value. Otherwise, a 400 bad request error is returned.
                        &quot;fontFamily&quot;: &quot;A String&quot;, # The font family of the text. The font family can be any font from the Font menu in Docs or from [Google Fonts] (https://fonts.google.com/). If the font name is unrecognized, the text is rendered in `Arial`.
                        &quot;weight&quot;: 42, # The weight of the font. This field can have any value that is a multiple of `100` between `100` and `900`, inclusive. This range corresponds to the numerical values described in the CSS 2.1 Specification, [section 15.6](https://www.w3.org/TR/CSS21/fonts.html#font-boldness), with non-numerical values disallowed. The default value is `400` (&quot;normal&quot;). The font weight makes up just one component of the rendered font weight. The rendered weight is determined by a combination of the `weight` and the text style&#x27;s resolved `bold` value, after accounting for inheritance: * If the text is bold and the weight is less than `400`, the rendered weight is 400. * If the text is bold and the weight is greater than or equal to `400` but is less than `700`, the rendered weight is `700`. * If the weight is greater than or equal to `700`, the rendered weight is equal to the weight. * If the text is not bold, the rendered weight is equal to the weight.
                      },
                      &quot;underline&quot;: True or False, # Whether or not the text is underlined.
                      &quot;smallCaps&quot;: True or False, # Whether or not the text is in small capital letters.
                    },
                  },
                  &quot;startIndex&quot;: 42, # The zero-based start index of this paragraph element, in UTF-16 code units.
                  &quot;endIndex&quot;: 42, # The zero-base end index of this paragraph element, exclusive, in UTF-16 code units.
                  &quot;equation&quot;: { # A ParagraphElement representing an equation. # An equation paragraph element.
                    &quot;suggestedDeletionIds&quot;: [ # The suggested deletion IDs. If empty, then there are no suggested deletions of this content.
                      &quot;A String&quot;,
                    ],
                    &quot;suggestedInsertionIds&quot;: [ # The suggested insertion IDs. A Equation may have multiple insertion IDs if it is a nested suggested change. If empty, then this is not a suggested insertion.
                      &quot;A String&quot;,
                    ],
                  },
                  &quot;columnBreak&quot;: { # A ParagraphElement representing a column break. A column break makes the subsequent text start at the top of the next column. # A column break paragraph element.
                    &quot;suggestedTextStyleChanges&quot;: { # The suggested text style changes to this ColumnBreak, keyed by suggestion ID.
                      &quot;a_key&quot;: { # A suggested change to a TextStyle.
                        &quot;textStyleSuggestionState&quot;: { # A mask that indicates which of the fields on the base TextStyle have been changed in this suggestion. For any field set to true, there is a new suggested value. # A mask that indicates which of the fields on the base TextStyle have been changed in this suggestion.
                          &quot;backgroundColorSuggested&quot;: True or False, # Indicates if there was a suggested change to background_color.
                          &quot;fontSizeSuggested&quot;: True or False, # Indicates if there was a suggested change to font_size.
                          &quot;boldSuggested&quot;: True or False, # Indicates if there was a suggested change to bold.
                          &quot;baselineOffsetSuggested&quot;: True or False, # Indicates if there was a suggested change to baseline_offset.
                          &quot;foregroundColorSuggested&quot;: True or False, # Indicates if there was a suggested change to foreground_color.
                          &quot;italicSuggested&quot;: True or False, # Indicates if there was a suggested change to italic.
                          &quot;linkSuggested&quot;: True or False, # Indicates if there was a suggested change to link.
                          &quot;underlineSuggested&quot;: True or False, # Indicates if there was a suggested change to underline.
                          &quot;weightedFontFamilySuggested&quot;: True or False, # Indicates if there was a suggested change to weighted_font_family.
                          &quot;smallCapsSuggested&quot;: True or False, # Indicates if there was a suggested change to small_caps.
                          &quot;strikethroughSuggested&quot;: True or False, # Indicates if there was a suggested change to strikethrough.
                        },
                        &quot;textStyle&quot;: { # Represents the styling that can be applied to text. Inherited text styles are represented as unset fields in this message. A text style&#x27;s parent depends on where the text style is defined: * The TextStyle of text in a Paragraph inherits from the paragraph&#x27;s corresponding named style type. * The TextStyle on a named style inherits from the normal text named style. * The TextStyle of the normal text named style inherits from the default text style in the Docs editor. * The TextStyle on a Paragraph element that is contained in a table may inherit its text style from the table style. If the text style does not inherit from a parent, unsetting fields will revert the style to a value matching the defaults in the Docs editor. # A TextStyle that only includes the changes made in this suggestion. This can be used along with the text_style_suggestion_state to see which fields have changed and their new values.
                          &quot;italic&quot;: True or False, # Whether or not the text is italicized.
                          &quot;baselineOffset&quot;: &quot;A String&quot;, # The text&#x27;s vertical offset from its normal position. Text with `SUPERSCRIPT` or `SUBSCRIPT` baseline offsets is automatically rendered in a smaller font size, computed based on the `font_size` field. The `font_size` itself is not affected by changes in this field.
                          &quot;bold&quot;: True or False, # Whether or not the text is rendered as bold.
                          &quot;fontSize&quot;: { # A magnitude in a single direction in the specified units. # The size of the text&#x27;s font.
                            &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                            &quot;magnitude&quot;: 3.14, # The magnitude.
                          },
                          &quot;foregroundColor&quot;: { # A color that can either be fully opaque or fully transparent. # The foreground color of the text. If set, the color is either an RGB color or transparent, depending on the `color` field.
                            &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                              &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                                &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                                &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                                &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                              },
                            },
                          },
                          &quot;backgroundColor&quot;: { # A color that can either be fully opaque or fully transparent. # The background color of the text. If set, the color is either an RGB color or transparent, depending on the `color` field.
                            &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                              &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                                &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                                &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                                &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                              },
                            },
                          },
                          &quot;link&quot;: { # A reference to another portion of a document or an external URL resource. # The hyperlink destination of the text. If unset, there is no link. Links are not inherited from parent text. Changing the link in an update request causes some other changes to the text style of the range: * When setting a link, the text foreground color will be updated to the default link color and the text will be underlined. If these fields are modified in the same request, those values will be used instead of the link defaults. * Setting a link on a text range that overlaps with an existing link will also update the existing link to point to the new URL. * Links are not settable on newline characters. As a result, setting a link on a text range that crosses a paragraph boundary, such as `&quot;ABC\n123&quot;`, will separate the newline character(s) into their own text runs. The link will be applied separately to the runs before and after the newline. * Removing a link will update the text style of the range to match the style of the preceding text (or the default text styles if the preceding text is another link) unless different styles are being set in the same request.
                            &quot;bookmarkId&quot;: &quot;A String&quot;, # The ID of a bookmark in this document.
                            &quot;url&quot;: &quot;A String&quot;, # An external URL.
                            &quot;headingId&quot;: &quot;A String&quot;, # The ID of a heading in this document.
                          },
                          &quot;strikethrough&quot;: True or False, # Whether or not the text is struck through.
                          &quot;weightedFontFamily&quot;: { # Represents a font family and weight of text. # The font family and rendered weight of the text. If an update request specifies values for both `weighted_font_family` and `bold`, the `weighted_font_family` is applied first, then `bold`. If `weighted_font_family#weight` is not set, it defaults to `400`. If `weighted_font_family` is set, then `weighted_font_family#font_family` must also be set with a non-empty value. Otherwise, a 400 bad request error is returned.
                            &quot;fontFamily&quot;: &quot;A String&quot;, # The font family of the text. The font family can be any font from the Font menu in Docs or from [Google Fonts] (https://fonts.google.com/). If the font name is unrecognized, the text is rendered in `Arial`.
                            &quot;weight&quot;: 42, # The weight of the font. This field can have any value that is a multiple of `100` between `100` and `900`, inclusive. This range corresponds to the numerical values described in the CSS 2.1 Specification, [section 15.6](https://www.w3.org/TR/CSS21/fonts.html#font-boldness), with non-numerical values disallowed. The default value is `400` (&quot;normal&quot;). The font weight makes up just one component of the rendered font weight. The rendered weight is determined by a combination of the `weight` and the text style&#x27;s resolved `bold` value, after accounting for inheritance: * If the text is bold and the weight is less than `400`, the rendered weight is 400. * If the text is bold and the weight is greater than or equal to `400` but is less than `700`, the rendered weight is `700`. * If the weight is greater than or equal to `700`, the rendered weight is equal to the weight. * If the text is not bold, the rendered weight is equal to the weight.
                          },
                          &quot;underline&quot;: True or False, # Whether or not the text is underlined.
                          &quot;smallCaps&quot;: True or False, # Whether or not the text is in small capital letters.
                        },
                      },
                    },
                    &quot;suggestedDeletionIds&quot;: [ # The suggested deletion IDs. If empty, then there are no suggested deletions of this content.
                      &quot;A String&quot;,
                    ],
                    &quot;textStyle&quot;: { # Represents the styling that can be applied to text. Inherited text styles are represented as unset fields in this message. A text style&#x27;s parent depends on where the text style is defined: * The TextStyle of text in a Paragraph inherits from the paragraph&#x27;s corresponding named style type. * The TextStyle on a named style inherits from the normal text named style. * The TextStyle of the normal text named style inherits from the default text style in the Docs editor. * The TextStyle on a Paragraph element that is contained in a table may inherit its text style from the table style. If the text style does not inherit from a parent, unsetting fields will revert the style to a value matching the defaults in the Docs editor. # The text style of this ColumnBreak. Similar to text content, like text runs and footnote references, the text style of a column break can affect content layout as well as the styling of text inserted adjacent to it.
                      &quot;italic&quot;: True or False, # Whether or not the text is italicized.
                      &quot;baselineOffset&quot;: &quot;A String&quot;, # The text&#x27;s vertical offset from its normal position. Text with `SUPERSCRIPT` or `SUBSCRIPT` baseline offsets is automatically rendered in a smaller font size, computed based on the `font_size` field. The `font_size` itself is not affected by changes in this field.
                      &quot;bold&quot;: True or False, # Whether or not the text is rendered as bold.
                      &quot;fontSize&quot;: { # A magnitude in a single direction in the specified units. # The size of the text&#x27;s font.
                        &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                        &quot;magnitude&quot;: 3.14, # The magnitude.
                      },
                      &quot;foregroundColor&quot;: { # A color that can either be fully opaque or fully transparent. # The foreground color of the text. If set, the color is either an RGB color or transparent, depending on the `color` field.
                        &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                          &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                            &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                            &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                            &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                          },
                        },
                      },
                      &quot;backgroundColor&quot;: { # A color that can either be fully opaque or fully transparent. # The background color of the text. If set, the color is either an RGB color or transparent, depending on the `color` field.
                        &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                          &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                            &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                            &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                            &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                          },
                        },
                      },
                      &quot;link&quot;: { # A reference to another portion of a document or an external URL resource. # The hyperlink destination of the text. If unset, there is no link. Links are not inherited from parent text. Changing the link in an update request causes some other changes to the text style of the range: * When setting a link, the text foreground color will be updated to the default link color and the text will be underlined. If these fields are modified in the same request, those values will be used instead of the link defaults. * Setting a link on a text range that overlaps with an existing link will also update the existing link to point to the new URL. * Links are not settable on newline characters. As a result, setting a link on a text range that crosses a paragraph boundary, such as `&quot;ABC\n123&quot;`, will separate the newline character(s) into their own text runs. The link will be applied separately to the runs before and after the newline. * Removing a link will update the text style of the range to match the style of the preceding text (or the default text styles if the preceding text is another link) unless different styles are being set in the same request.
                        &quot;bookmarkId&quot;: &quot;A String&quot;, # The ID of a bookmark in this document.
                        &quot;url&quot;: &quot;A String&quot;, # An external URL.
                        &quot;headingId&quot;: &quot;A String&quot;, # The ID of a heading in this document.
                      },
                      &quot;strikethrough&quot;: True or False, # Whether or not the text is struck through.
                      &quot;weightedFontFamily&quot;: { # Represents a font family and weight of text. # The font family and rendered weight of the text. If an update request specifies values for both `weighted_font_family` and `bold`, the `weighted_font_family` is applied first, then `bold`. If `weighted_font_family#weight` is not set, it defaults to `400`. If `weighted_font_family` is set, then `weighted_font_family#font_family` must also be set with a non-empty value. Otherwise, a 400 bad request error is returned.
                        &quot;fontFamily&quot;: &quot;A String&quot;, # The font family of the text. The font family can be any font from the Font menu in Docs or from [Google Fonts] (https://fonts.google.com/). If the font name is unrecognized, the text is rendered in `Arial`.
                        &quot;weight&quot;: 42, # The weight of the font. This field can have any value that is a multiple of `100` between `100` and `900`, inclusive. This range corresponds to the numerical values described in the CSS 2.1 Specification, [section 15.6](https://www.w3.org/TR/CSS21/fonts.html#font-boldness), with non-numerical values disallowed. The default value is `400` (&quot;normal&quot;). The font weight makes up just one component of the rendered font weight. The rendered weight is determined by a combination of the `weight` and the text style&#x27;s resolved `bold` value, after accounting for inheritance: * If the text is bold and the weight is less than `400`, the rendered weight is 400. * If the text is bold and the weight is greater than or equal to `400` but is less than `700`, the rendered weight is `700`. * If the weight is greater than or equal to `700`, the rendered weight is equal to the weight. * If the text is not bold, the rendered weight is equal to the weight.
                      },
                      &quot;underline&quot;: True or False, # Whether or not the text is underlined.
                      &quot;smallCaps&quot;: True or False, # Whether or not the text is in small capital letters.
                    },
                    &quot;suggestedInsertionIds&quot;: [ # The suggested insertion IDs. A ColumnBreak may have multiple insertion IDs if it is a nested suggested change. If empty, then this is not a suggested insertion.
                      &quot;A String&quot;,
                    ],
                  },
                },
              ],
              &quot;positionedObjectIds&quot;: [ # The IDs of the positioned objects tethered to this paragraph.
                &quot;A String&quot;,
              ],
              &quot;paragraphStyle&quot;: { # Styles that apply to a whole paragraph. Inherited paragraph styles are represented as unset fields in this message. A paragraph style&#x27;s parent depends on where the paragraph style is defined: * The ParagraphStyle on a Paragraph inherits from the paragraph&#x27;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 is 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. # The style of this paragraph.
                &quot;borderRight&quot;: { # A border around a paragraph. # The border to the right of this paragraph. If unset, the value is inherited from the parent. Paragraph borders cannot be partially updated. When making changes to a paragraph border the new border must be specified in its entirety.
                  &quot;color&quot;: { # A color that can either be fully opaque or fully transparent. # The color of the border.
                    &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                      &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                        &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                        &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                        &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                      },
                    },
                  },
                  &quot;width&quot;: { # A magnitude in a single direction in the specified units. # The width of the border.
                    &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                    &quot;magnitude&quot;: 3.14, # The magnitude.
                  },
                  &quot;padding&quot;: { # A magnitude in a single direction in the specified units. # The padding of the border.
                    &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                    &quot;magnitude&quot;: 3.14, # The magnitude.
                  },
                  &quot;dashStyle&quot;: &quot;A String&quot;, # The dash style of the border.
                },
                &quot;indentFirstLine&quot;: { # A magnitude in a single direction in the specified units. # The amount of indentation for the first line of the paragraph. If unset, the value is inherited from the parent.
                  &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                  &quot;magnitude&quot;: 3.14, # The magnitude.
                },
                &quot;alignment&quot;: &quot;A String&quot;, # The text alignment for this paragraph.
                &quot;lineSpacing&quot;: 3.14, # The amount of space between lines, as a percentage of normal, where normal is represented as 100.0. If unset, the value is inherited from the parent.
                &quot;keepLinesTogether&quot;: True or False, # Whether all lines of the paragraph should be laid out on the same page or column if possible. If unset, the value is inherited from the parent.
                &quot;avoidWidowAndOrphan&quot;: True or False, # Whether to avoid widows and orphans for the paragraph. If unset, the value is inherited from the parent.
                &quot;spaceBelow&quot;: { # A magnitude in a single direction in the specified units. # The amount of extra space below the paragraph. If unset, the value is inherited from the parent.
                  &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                  &quot;magnitude&quot;: 3.14, # The magnitude.
                },
                &quot;borderBetween&quot;: { # A border around a paragraph. # 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 making changes to a paragraph border the new border must be specified in its entirety.
                  &quot;color&quot;: { # A color that can either be fully opaque or fully transparent. # The color of the border.
                    &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                      &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                        &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                        &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                        &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                      },
                    },
                  },
                  &quot;width&quot;: { # A magnitude in a single direction in the specified units. # The width of the border.
                    &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                    &quot;magnitude&quot;: 3.14, # The magnitude.
                  },
                  &quot;padding&quot;: { # A magnitude in a single direction in the specified units. # The padding of the border.
                    &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                    &quot;magnitude&quot;: 3.14, # The magnitude.
                  },
                  &quot;dashStyle&quot;: &quot;A String&quot;, # The dash style of the border.
                },
                &quot;headingId&quot;: &quot;A String&quot;, # The heading ID of the paragraph. If empty, then this paragraph is not a heading. This property is read-only.
                &quot;spaceAbove&quot;: { # A magnitude in a single direction in the specified units. # The amount of extra space above the paragraph. If unset, the value is inherited from the parent.
                  &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                  &quot;magnitude&quot;: 3.14, # The magnitude.
                },
                &quot;direction&quot;: &quot;A String&quot;, # The text direction of this paragraph. If unset, the value defaults to LEFT_TO_RIGHT since paragraph direction is not inherited.
                &quot;namedStyleType&quot;: &quot;A String&quot;, # The named style type of the paragraph. Since updating the named style type affects other properties within ParagraphStyle, the named style type is applied before the other properties are updated.
                &quot;tabStops&quot;: [ # A list of the tab stops for this paragraph. The list of tab stops is not inherited. This property is read-only.
                  { # A tab stop within a paragraph.
                    &quot;offset&quot;: { # A magnitude in a single direction in the specified units. # The offset between this tab stop and the start margin.
                      &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                      &quot;magnitude&quot;: 3.14, # The magnitude.
                    },
                    &quot;alignment&quot;: &quot;A String&quot;, # The alignment of this tab stop. If unset, the value defaults to START.
                  },
                ],
                &quot;indentStart&quot;: { # A magnitude in a single direction in the specified units. # The amount of indentation for the paragraph on the side that corresponds to the start of the text, based on the current paragraph direction. If unset, the value is inherited from the parent.
                  &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                  &quot;magnitude&quot;: 3.14, # The magnitude.
                },
                &quot;keepWithNext&quot;: True or False, # Whether at least a part of this paragraph should be laid out on the same page or column as the next paragraph if possible. If unset, the value is inherited from the parent.
                &quot;borderTop&quot;: { # A border around a paragraph. # 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 making changes to a paragraph border the new border must be specified in its entirety.
                  &quot;color&quot;: { # A color that can either be fully opaque or fully transparent. # The color of the border.
                    &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                      &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                        &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                        &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                        &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                      },
                    },
                  },
                  &quot;width&quot;: { # A magnitude in a single direction in the specified units. # The width of the border.
                    &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                    &quot;magnitude&quot;: 3.14, # The magnitude.
                  },
                  &quot;padding&quot;: { # A magnitude in a single direction in the specified units. # The padding of the border.
                    &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                    &quot;magnitude&quot;: 3.14, # The magnitude.
                  },
                  &quot;dashStyle&quot;: &quot;A String&quot;, # The dash style of the border.
                },
                &quot;borderLeft&quot;: { # A border around a paragraph. # The border to the left of this paragraph. If unset, the value is inherited from the parent. Paragraph borders cannot be partially updated. When making changes to a paragraph border the new border must be specified in its entirety.
                  &quot;color&quot;: { # A color that can either be fully opaque or fully transparent. # The color of the border.
                    &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                      &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                        &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                        &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                        &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                      },
                    },
                  },
                  &quot;width&quot;: { # A magnitude in a single direction in the specified units. # The width of the border.
                    &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                    &quot;magnitude&quot;: 3.14, # The magnitude.
                  },
                  &quot;padding&quot;: { # A magnitude in a single direction in the specified units. # The padding of the border.
                    &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                    &quot;magnitude&quot;: 3.14, # The magnitude.
                  },
                  &quot;dashStyle&quot;: &quot;A String&quot;, # The dash style of the border.
                },
                &quot;borderBottom&quot;: { # A border around a paragraph. # 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 making changes to a paragraph border the new border must be specified in its entirety.
                  &quot;color&quot;: { # A color that can either be fully opaque or fully transparent. # The color of the border.
                    &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                      &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                        &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                        &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                        &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                      },
                    },
                  },
                  &quot;width&quot;: { # A magnitude in a single direction in the specified units. # The width of the border.
                    &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                    &quot;magnitude&quot;: 3.14, # The magnitude.
                  },
                  &quot;padding&quot;: { # A magnitude in a single direction in the specified units. # The padding of the border.
                    &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                    &quot;magnitude&quot;: 3.14, # The magnitude.
                  },
                  &quot;dashStyle&quot;: &quot;A String&quot;, # The dash style of the border.
                },
                &quot;shading&quot;: { # The shading of a paragraph. # The shading of the paragraph. If unset, the value is inherited from the parent.
                  &quot;backgroundColor&quot;: { # A color that can either be fully opaque or fully transparent. # The background color of this paragraph shading.
                    &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                      &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                        &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                        &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                        &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                      },
                    },
                  },
                },
                &quot;indentEnd&quot;: { # A magnitude in a single direction in the specified units. # 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.
                  &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                  &quot;magnitude&quot;: 3.14, # The magnitude.
                },
                &quot;spacingMode&quot;: &quot;A String&quot;, # The spacing mode for the paragraph.
              },
            },
            &quot;startIndex&quot;: 42, # The zero-based start index of this structural element, in UTF-16 code units.
            &quot;endIndex&quot;: 42, # The zero-based end index of this structural element, exclusive, in UTF-16 code units.
            &quot;tableOfContents&quot;: { # A StructuralElement representing a table of contents. # A table of contents type of structural element.
              &quot;suggestedInsertionIds&quot;: [ # The suggested insertion IDs. A TableOfContents may have multiple insertion IDs if it is a nested suggested change. If empty, then this is not a suggested insertion.
                &quot;A String&quot;,
              ],
              &quot;content&quot;: [ # The content of the table of contents.
                # Object with schema name: StructuralElement
              ],
              &quot;suggestedDeletionIds&quot;: [ # The suggested deletion IDs. If empty, then there are no suggested deletions of this content.
                &quot;A String&quot;,
              ],
            },
            &quot;table&quot;: { # A StructuralElement representing a table. # A table type of structural element.
              &quot;tableStyle&quot;: { # Styles that apply to a table. # The style of the table.
                &quot;tableColumnProperties&quot;: [ # The properties of each column. Note that in Docs, tables contain rows and rows contain cells, similar to HTML. So the properties for a row can be found on the row&#x27;s table_row_style.
                  { # The properties of a column in a table.
                    &quot;widthType&quot;: &quot;A String&quot;, # The width type of the column.
                    &quot;width&quot;: { # A magnitude in a single direction in the specified units. # The width of the column. Set when the column&#x27;s `width_type` is FIXED_WIDTH.
                      &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                      &quot;magnitude&quot;: 3.14, # The magnitude.
                    },
                  },
                ],
              },
              &quot;suggestedInsertionIds&quot;: [ # The suggested insertion IDs. A Table may have multiple insertion IDs if it is a nested suggested change. If empty, then this is not a suggested insertion.
                &quot;A String&quot;,
              ],
              &quot;tableRows&quot;: [ # The contents and style of each row.
                { # The contents and style of a row in a Table.
                  &quot;suggestedDeletionIds&quot;: [ # The suggested deletion IDs. If empty, then there are no suggested deletions of this content.
                    &quot;A String&quot;,
                  ],
                  &quot;suggestedInsertionIds&quot;: [ # The suggested insertion IDs. A TableRow may have multiple insertion IDs if it is a nested suggested change. If empty, then this is not a suggested insertion.
                    &quot;A String&quot;,
                  ],
                  &quot;suggestedTableRowStyleChanges&quot;: { # The suggested style changes to this row, keyed by suggestion ID.
                    &quot;a_key&quot;: { # A suggested change to a TableRowStyle.
                      &quot;tableRowStyleSuggestionState&quot;: { # A mask that indicates which of the fields on the base TableRowStyle have been changed in this suggestion. For any field set to true, there is a new suggested value. # A mask that indicates which of the fields on the base TableRowStyle have been changed in this suggestion.
                        &quot;minRowHeightSuggested&quot;: True or False, # Indicates if there was a suggested change to min_row_height.
                      },
                      &quot;tableRowStyle&quot;: { # Styles that apply to a table row. # A TableRowStyle that only includes the changes made in this suggestion. This can be used along with the table_row_style_suggestion_state to see which fields have changed and their new values.
                        &quot;minRowHeight&quot;: { # A magnitude in a single direction in the specified units. # The minimum height of the row. The row will be rendered in the Docs editor at a height equal to or greater than this value in order to show all the content in the row&#x27;s cells.
                          &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                          &quot;magnitude&quot;: 3.14, # The magnitude.
                        },
                      },
                    },
                  },
                  &quot;startIndex&quot;: 42, # The zero-based start index of this row, in UTF-16 code units.
                  &quot;tableCells&quot;: [ # The contents and style of each cell in this row. It is possible for a table to be non-rectangular, so some rows may have a different number of cells than other rows in the same table.
                    { # The contents and style of a cell in a Table.
                      &quot;tableCellStyle&quot;: { # The style of a TableCell. Inherited table cell styles are represented as unset fields in this message. A table cell style can inherit from the table&#x27;s style. # The style of the cell.
                        &quot;borderTop&quot;: { # A border around a table cell. Table cell borders cannot be transparent. To hide a table cell border, make its width 0. # The top border of the cell.
                          &quot;width&quot;: { # A magnitude in a single direction in the specified units. # The width of the border.
                            &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                            &quot;magnitude&quot;: 3.14, # The magnitude.
                          },
                          &quot;dashStyle&quot;: &quot;A String&quot;, # The dash style of the border.
                          &quot;color&quot;: { # A color that can either be fully opaque or fully transparent. # The color of the border. This color cannot be transparent.
                            &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                              &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                                &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                                &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                                &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                              },
                            },
                          },
                        },
                        &quot;borderBottom&quot;: { # A border around a table cell. Table cell borders cannot be transparent. To hide a table cell border, make its width 0. # The bottom border of the cell.
                          &quot;width&quot;: { # A magnitude in a single direction in the specified units. # The width of the border.
                            &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                            &quot;magnitude&quot;: 3.14, # The magnitude.
                          },
                          &quot;dashStyle&quot;: &quot;A String&quot;, # The dash style of the border.
                          &quot;color&quot;: { # A color that can either be fully opaque or fully transparent. # The color of the border. This color cannot be transparent.
                            &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                              &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                                &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                                &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                                &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                              },
                            },
                          },
                        },
                        &quot;contentAlignment&quot;: &quot;A String&quot;, # The alignment of the content in the table cell. The default alignment matches the alignment for newly created table cells in the Docs editor.
                        &quot;paddingLeft&quot;: { # A magnitude in a single direction in the specified units. # The left padding of the cell.
                          &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                          &quot;magnitude&quot;: 3.14, # The magnitude.
                        },
                        &quot;backgroundColor&quot;: { # A color that can either be fully opaque or fully transparent. # The background color of the cell.
                          &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                            &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                              &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                              &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                              &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                            },
                          },
                        },
                        &quot;paddingTop&quot;: { # A magnitude in a single direction in the specified units. # The top padding of the cell.
                          &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                          &quot;magnitude&quot;: 3.14, # The magnitude.
                        },
                        &quot;rowSpan&quot;: 42, # The row span of the cell. This property is read-only.
                        &quot;paddingRight&quot;: { # A magnitude in a single direction in the specified units. # The right padding of the cell.
                          &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                          &quot;magnitude&quot;: 3.14, # The magnitude.
                        },
                        &quot;borderRight&quot;: { # A border around a table cell. Table cell borders cannot be transparent. To hide a table cell border, make its width 0. # The right border of the cell.
                          &quot;width&quot;: { # A magnitude in a single direction in the specified units. # The width of the border.
                            &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                            &quot;magnitude&quot;: 3.14, # The magnitude.
                          },
                          &quot;dashStyle&quot;: &quot;A String&quot;, # The dash style of the border.
                          &quot;color&quot;: { # A color that can either be fully opaque or fully transparent. # The color of the border. This color cannot be transparent.
                            &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                              &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                                &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                                &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                                &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                              },
                            },
                          },
                        },
                        &quot;borderLeft&quot;: { # A border around a table cell. Table cell borders cannot be transparent. To hide a table cell border, make its width 0. # The left border of the cell.
                          &quot;width&quot;: { # A magnitude in a single direction in the specified units. # The width of the border.
                            &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                            &quot;magnitude&quot;: 3.14, # The magnitude.
                          },
                          &quot;dashStyle&quot;: &quot;A String&quot;, # The dash style of the border.
                          &quot;color&quot;: { # A color that can either be fully opaque or fully transparent. # The color of the border. This color cannot be transparent.
                            &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                              &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                                &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                                &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                                &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                              },
                            },
                          },
                        },
                        &quot;columnSpan&quot;: 42, # The column span of the cell. This property is read-only.
                        &quot;paddingBottom&quot;: { # A magnitude in a single direction in the specified units. # The bottom padding of the cell.
                          &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                          &quot;magnitude&quot;: 3.14, # The magnitude.
                        },
                      },
                      &quot;content&quot;: [ # The content of the cell.
                        # Object with schema name: StructuralElement
                      ],
                      &quot;suggestedDeletionIds&quot;: [ # The suggested deletion IDs. If empty, then there are no suggested deletions of this content.
                        &quot;A String&quot;,
                      ],
                      &quot;startIndex&quot;: 42, # The zero-based start index of this cell, in UTF-16 code units.
                      &quot;suggestedInsertionIds&quot;: [ # The suggested insertion IDs. A TableCell may have multiple insertion IDs if it is a nested suggested change. If empty, then this is not a suggested insertion.
                        &quot;A String&quot;,
                      ],
                      &quot;suggestedTableCellStyleChanges&quot;: { # The suggested changes to the table cell style, keyed by suggestion ID.
                        &quot;a_key&quot;: { # A suggested change to a TableCellStyle.
                          &quot;tableCellStyle&quot;: { # The style of a TableCell. Inherited table cell styles are represented as unset fields in this message. A table cell style can inherit from the table&#x27;s style. # A TableCellStyle that only includes the changes made in this suggestion. This can be used along with the table_cell_style_suggestion_state to see which fields have changed and their new values.
                            &quot;borderTop&quot;: { # A border around a table cell. Table cell borders cannot be transparent. To hide a table cell border, make its width 0. # The top border of the cell.
                              &quot;width&quot;: { # A magnitude in a single direction in the specified units. # The width of the border.
                                &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                                &quot;magnitude&quot;: 3.14, # The magnitude.
                              },
                              &quot;dashStyle&quot;: &quot;A String&quot;, # The dash style of the border.
                              &quot;color&quot;: { # A color that can either be fully opaque or fully transparent. # The color of the border. This color cannot be transparent.
                                &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                                  &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                                    &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                                    &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                                    &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                                  },
                                },
                              },
                            },
                            &quot;borderBottom&quot;: { # A border around a table cell. Table cell borders cannot be transparent. To hide a table cell border, make its width 0. # The bottom border of the cell.
                              &quot;width&quot;: { # A magnitude in a single direction in the specified units. # The width of the border.
                                &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                                &quot;magnitude&quot;: 3.14, # The magnitude.
                              },
                              &quot;dashStyle&quot;: &quot;A String&quot;, # The dash style of the border.
                              &quot;color&quot;: { # A color that can either be fully opaque or fully transparent. # The color of the border. This color cannot be transparent.
                                &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                                  &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                                    &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                                    &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                                    &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                                  },
                                },
                              },
                            },
                            &quot;contentAlignment&quot;: &quot;A String&quot;, # The alignment of the content in the table cell. The default alignment matches the alignment for newly created table cells in the Docs editor.
                            &quot;paddingLeft&quot;: { # A magnitude in a single direction in the specified units. # The left padding of the cell.
                              &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                              &quot;magnitude&quot;: 3.14, # The magnitude.
                            },
                            &quot;backgroundColor&quot;: { # A color that can either be fully opaque or fully transparent. # The background color of the cell.
                              &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                                &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                                  &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                                  &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                                  &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                                },
                              },
                            },
                            &quot;paddingTop&quot;: { # A magnitude in a single direction in the specified units. # The top padding of the cell.
                              &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                              &quot;magnitude&quot;: 3.14, # The magnitude.
                            },
                            &quot;rowSpan&quot;: 42, # The row span of the cell. This property is read-only.
                            &quot;paddingRight&quot;: { # A magnitude in a single direction in the specified units. # The right padding of the cell.
                              &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                              &quot;magnitude&quot;: 3.14, # The magnitude.
                            },
                            &quot;borderRight&quot;: { # A border around a table cell. Table cell borders cannot be transparent. To hide a table cell border, make its width 0. # The right border of the cell.
                              &quot;width&quot;: { # A magnitude in a single direction in the specified units. # The width of the border.
                                &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                                &quot;magnitude&quot;: 3.14, # The magnitude.
                              },
                              &quot;dashStyle&quot;: &quot;A String&quot;, # The dash style of the border.
                              &quot;color&quot;: { # A color that can either be fully opaque or fully transparent. # The color of the border. This color cannot be transparent.
                                &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                                  &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                                    &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                                    &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                                    &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                                  },
                                },
                              },
                            },
                            &quot;borderLeft&quot;: { # A border around a table cell. Table cell borders cannot be transparent. To hide a table cell border, make its width 0. # The left border of the cell.
                              &quot;width&quot;: { # A magnitude in a single direction in the specified units. # The width of the border.
                                &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                                &quot;magnitude&quot;: 3.14, # The magnitude.
                              },
                              &quot;dashStyle&quot;: &quot;A String&quot;, # The dash style of the border.
                              &quot;color&quot;: { # A color that can either be fully opaque or fully transparent. # The color of the border. This color cannot be transparent.
                                &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                                  &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                                    &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                                    &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                                    &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                                  },
                                },
                              },
                            },
                            &quot;columnSpan&quot;: 42, # The column span of the cell. This property is read-only.
                            &quot;paddingBottom&quot;: { # A magnitude in a single direction in the specified units. # The bottom padding of the cell.
                              &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                              &quot;magnitude&quot;: 3.14, # The magnitude.
                            },
                          },
                          &quot;tableCellStyleSuggestionState&quot;: { # A mask that indicates which of the fields on the base TableCellStyle have been changed in this suggestion. For any field set to true, there is a new suggested value. # A mask that indicates which of the fields on the base TableCellStyle have been changed in this suggestion.
                            &quot;rowSpanSuggested&quot;: True or False, # Indicates if there was a suggested change to row_span.
                            &quot;columnSpanSuggested&quot;: True or False, # Indicates if there was a suggested change to column_span.
                            &quot;borderBottomSuggested&quot;: True or False, # Indicates if there was a suggested change to border_bottom.
                            &quot;borderLeftSuggested&quot;: True or False, # Indicates if there was a suggested change to border_left.
                            &quot;paddingLeftSuggested&quot;: True or False, # Indicates if there was a suggested change to padding_left.
                            &quot;paddingRightSuggested&quot;: True or False, # Indicates if there was a suggested change to padding_right.
                            &quot;paddingBottomSuggested&quot;: True or False, # Indicates if there was a suggested change to padding_bottom.
                            &quot;paddingTopSuggested&quot;: True or False, # Indicates if there was a suggested change to padding_top.
                            &quot;contentAlignmentSuggested&quot;: True or False, # Indicates if there was a suggested change to content_alignment.
                            &quot;borderRightSuggested&quot;: True or False, # Indicates if there was a suggested change to border_right.
                            &quot;backgroundColorSuggested&quot;: True or False, # Indicates if there was a suggested change to background_color.
                            &quot;borderTopSuggested&quot;: True or False, # Indicates if there was a suggested change to border_top.
                          },
                        },
                      },
                      &quot;endIndex&quot;: 42, # The zero-based end index of this cell, exclusive, in UTF-16 code units.
                    },
                  ],
                  &quot;endIndex&quot;: 42, # The zero-based end index of this row, exclusive, in UTF-16 code units.
                  &quot;tableRowStyle&quot;: { # Styles that apply to a table row. # The style of the table row.
                    &quot;minRowHeight&quot;: { # A magnitude in a single direction in the specified units. # The minimum height of the row. The row will be rendered in the Docs editor at a height equal to or greater than this value in order to show all the content in the row&#x27;s cells.
                      &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                      &quot;magnitude&quot;: 3.14, # The magnitude.
                    },
                  },
                },
              ],
              &quot;suggestedDeletionIds&quot;: [ # The suggested deletion IDs. If empty, then there are no suggested deletions of this content.
                &quot;A String&quot;,
              ],
              &quot;rows&quot;: 42, # Number of rows in the table.
              &quot;columns&quot;: 42, # Number of columns in the table. It is possible for a table to be non-rectangular, so some rows may have a different number of cells.
            },
            &quot;sectionBreak&quot;: { # A StructuralElement representing a section break. A section is a range of content which has the same SectionStyle. A section break represents the start of a new section, and the section style applies to the section after the section break. The document body always begins with a section break. # A section break type of structural element.
              &quot;suggestedInsertionIds&quot;: [ # The suggested insertion IDs. A SectionBreak may have multiple insertion IDs if it is a nested suggested change. If empty, then this is not a suggested insertion.
                &quot;A String&quot;,
              ],
              &quot;sectionStyle&quot;: { # The styling that applies to a section. # The style of the section after this section break.
                &quot;marginLeft&quot;: { # A magnitude in a single direction in the specified units. # The left page margin of the section. If unset, uses margin_left from DocumentStyle. Updating left margin causes columns in this section to resize. Since the margin affects column width, it is applied before column properties. When updating this property, setting a concrete value is required. Unsetting this property results in a 400 bad request error.
                  &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                  &quot;magnitude&quot;: 3.14, # The magnitude.
                },
                &quot;sectionType&quot;: &quot;A String&quot;, # Output only. The type of section.
                &quot;evenPageHeaderId&quot;: &quot;A String&quot;, # The ID of the header used only for even pages. If the value of DocumentStyle&#x27;s use_even_page_header_footer is true, this value is used for the headers on even pages in the section. If it is false, the headers on even pages uses the default_header_id. If unset, the value inherits from the previous SectionBreak&#x27;s SectionStyle. If the value is unset in the first SectionBreak, it inherits from DocumentStyle&#x27;s even_page_header_id. This property is read-only.
                &quot;useFirstPageHeaderFooter&quot;: True or False, # Indicates whether to use the first page header / footer IDs for the first page of the section. If unset, it inherits from DocumentStyle&#x27;s use_first_page_header_footer for the first section. If the value is unset for subsequent sectors, it should be interpreted as false. When updating this property, setting a concrete value is required. Unsetting this property results in a 400 bad request error.
                &quot;marginHeader&quot;: { # A magnitude in a single direction in the specified units. # The header margin of the section. If unset, uses margin_header from DocumentStyle. If updated, use_custom_header_footer_margins is set to true on DocumentStyle. The value of use_custom_header_footer_margins on DocumentStyle indicates if a header margin is being respected for this section. When updating this property, setting a concrete value is required. Unsetting this property results in a 400 bad request error.
                  &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                  &quot;magnitude&quot;: 3.14, # The magnitude.
                },
                &quot;firstPageFooterId&quot;: &quot;A String&quot;, # The ID of the footer used only for the first page of the section. If use_first_page_header_footer is true, this value is used for the footer on the first page of the section. If it is false, the footer on the first page of the section uses the default_footer_id. If unset, the value inherits from the previous SectionBreak&#x27;s SectionStyle. If the value is unset in the first SectionBreak, it inherits from DocumentStyle&#x27;s first_page_footer_id. This property is read-only.
                &quot;firstPageHeaderId&quot;: &quot;A String&quot;, # The ID of the header used only for the first page of the section. If use_first_page_header_footer is true, this value is used for the header on the first page of the section. If it is false, the header on the first page of the section uses the default_header_id. If unset, the value inherits from the previous SectionBreak&#x27;s SectionStyle. If the value is unset in the first SectionBreak, it inherits from DocumentStyle&#x27;s first_page_header_id. This property is read-only.
                &quot;columnSeparatorStyle&quot;: &quot;A String&quot;, # The style of column separators. This style can be set even when there is one column in the section. When updating this property, setting a concrete value is required. Unsetting this property results in a 400 bad request error.
                &quot;marginBottom&quot;: { # A magnitude in a single direction in the specified units. # The bottom page margin of the section. If unset, uses margin_bottom from DocumentStyle. When updating this property, setting a concrete value is required. Unsetting this property results in a 400 bad request error.
                  &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                  &quot;magnitude&quot;: 3.14, # The magnitude.
                },
                &quot;marginFooter&quot;: { # A magnitude in a single direction in the specified units. # The footer margin of the section. If unset, uses margin_footer from DocumentStyle. If updated, use_custom_header_footer_margins is set to true on DocumentStyle. The value of use_custom_header_footer_margins on DocumentStyle indicates if a footer margin is being respected for this section When updating this property, setting a concrete value is required. Unsetting this property results in a 400 bad request error.
                  &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                  &quot;magnitude&quot;: 3.14, # The magnitude.
                },
                &quot;defaultFooterId&quot;: &quot;A String&quot;, # The ID of the default footer. If unset, the value inherits from the previous SectionBreak&#x27;s SectionStyle. If the value is unset in the first SectionBreak, it inherits from DocumentStyle&#x27;s default_footer_id. This property is read-only.
                &quot;marginTop&quot;: { # A magnitude in a single direction in the specified units. # The top page margin of the section. If unset, uses margin_top from DocumentStyle. When updating this property, setting a concrete value is required. Unsetting this property results in a 400 bad request error.
                  &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                  &quot;magnitude&quot;: 3.14, # The magnitude.
                },
                &quot;contentDirection&quot;: &quot;A String&quot;, # The content direction of this section. If unset, the value defaults to LEFT_TO_RIGHT. When updating this property, setting a concrete value is required. Unsetting this property results in a 400 bad request error.
                &quot;evenPageFooterId&quot;: &quot;A String&quot;, # The ID of the footer used only for even pages. If the value of DocumentStyle&#x27;s use_even_page_header_footer is true, this value is used for the footers on even pages in the section. If it is false, the footers on even pages uses the default_footer_id. If unset, the value inherits from the previous SectionBreak&#x27;s SectionStyle. If the value is unset in the first SectionBreak, it inherits from DocumentStyle&#x27;s even_page_footer_id. This property is read-only.
                &quot;marginRight&quot;: { # A magnitude in a single direction in the specified units. # The right page margin of the section. If unset, uses margin_right from DocumentStyle. Updating right margin causes columns in this section to resize. Since the margin affects column width, it is applied before column properties. When updating this property, setting a concrete value is required. Unsetting this property results in a 400 bad request error.
                  &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                  &quot;magnitude&quot;: 3.14, # The magnitude.
                },
                &quot;defaultHeaderId&quot;: &quot;A String&quot;, # The ID of the default header. If unset, the value inherits from the previous SectionBreak&#x27;s SectionStyle. If the value is unset in the first SectionBreak, it inherits from DocumentStyle&#x27;s default_header_id. This property is read-only.
                &quot;pageNumberStart&quot;: 42, # The page number from which to start counting the number of pages for this section. If unset, page numbering continues from the previous section. If the value is unset in the first SectionBreak, refer to DocumentStyle&#x27;s page_number_start. When updating this property, setting a concrete value is required. Unsetting this property results in a 400 bad request error.
                &quot;columnProperties&quot;: [ # The section&#x27;s columns properties. If empty, the section contains one column with the default properties in the Docs editor. A section can be updated to have no more than three columns. When updating this property, setting a concrete value is required. Unsetting this property will result in a 400 bad request error.
                  { # Properties that apply to a section&#x27;s column.
                    &quot;paddingEnd&quot;: { # A magnitude in a single direction in the specified units. # The padding at the end of the column.
                      &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                      &quot;magnitude&quot;: 3.14, # The magnitude.
                    },
                    &quot;width&quot;: { # A magnitude in a single direction in the specified units. # Output only. The width of the column.
                      &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                      &quot;magnitude&quot;: 3.14, # The magnitude.
                    },
                  },
                ],
              },
              &quot;suggestedDeletionIds&quot;: [ # The suggested deletion IDs. If empty, then there are no suggested deletions of this content.
                &quot;A String&quot;,
              ],
            },
          },
        ],
        &quot;headerId&quot;: &quot;A String&quot;, # The ID of the header.
      },
    },
    &quot;namedRanges&quot;: { # Output only. The named ranges in the document, keyed by name.
      &quot;a_key&quot;: { # A collection of all the NamedRanges in the document that share a given name.
        &quot;namedRanges&quot;: [ # The NamedRanges that share the same name.
          { # A collection of Ranges with the same named range ID. Named ranges allow developers to associate parts of a document with an arbitrary user-defined label so their contents can be programmatically read or edited at a later time. A document can contain multiple named ranges with the same name, but every named range has a unique ID. A named range is created with a single Range, and content inserted inside a named range generally expands that range. However, certain document changes can cause the range to be split into multiple ranges. Named ranges are not private. All applications and collaborators that have access to the document can see its named ranges.
            &quot;namedRangeId&quot;: &quot;A String&quot;, # The ID of the named range.
            &quot;name&quot;: &quot;A String&quot;, # The name of the named range.
            &quot;ranges&quot;: [ # The ranges that belong to this named range.
              { # Specifies a contiguous range of text.
                &quot;segmentId&quot;: &quot;A String&quot;, # The ID of the header, footer or footnote that this range is contained in. An empty segment ID signifies the document&#x27;s body.
                &quot;startIndex&quot;: 42, # The zero-based start index of this range, in UTF-16 code units. In all current uses, a start index must be provided. This field is an Int32Value in order to accommodate future use cases with open-ended ranges.
                &quot;endIndex&quot;: 42, # The zero-based end index of this range, exclusive, in UTF-16 code units. In all current uses, an end index must be provided. This field is an Int32Value in order to accommodate future use cases with open-ended ranges.
              },
            ],
          },
        ],
        &quot;name&quot;: &quot;A String&quot;, # The name that all the named ranges share.
      },
    },
  }</pre>
</div>

<div class="method">
    <code class="details" id="get">get(documentId, suggestionsViewMode=None, x__xgafv=None)</code>
  <pre>Gets the latest version of the specified document.

Args:
  documentId: string, The ID of the document to retrieve. (required)
  suggestionsViewMode: string, The suggestions view mode to apply to the document. This allows viewing the document with all suggestions inline, accepted or rejected. If one is not specified, DEFAULT_FOR_CURRENT_ACCESS is used.
    Allowed values
      DEFAULT_FOR_CURRENT_ACCESS - The SuggestionsViewMode applied to the returned document depends on the user&#x27;s current access level. If the user only has view access, PREVIEW_WITHOUT_SUGGESTIONS is applied. Otherwise, SUGGESTIONS_INLINE is applied. This is the default suggestions view mode.
      SUGGESTIONS_INLINE - The returned document has suggestions inline. Suggested changes will be differentiated from base content within the document. Requests to retrieve a document using this mode will return a 403 error if the user does not have permission to view suggested changes.
      PREVIEW_SUGGESTIONS_ACCEPTED - The returned document is a preview with all suggested changes accepted. Requests to retrieve a document using this mode will return a 403 error if the user does not have permission to view suggested changes.
      PREVIEW_WITHOUT_SUGGESTIONS - The returned document is a preview with all suggested changes rejected if there are any suggestions in the document.
  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    { # A Google Docs document.
    &quot;suggestionsViewMode&quot;: &quot;A String&quot;, # Output only. The suggestions view mode applied to the document. Note: When editing a document, changes must be based on a document with SUGGESTIONS_INLINE.
    &quot;documentId&quot;: &quot;A String&quot;, # Output only. The ID of the document.
    &quot;suggestedNamedStylesChanges&quot;: { # Output only. The suggested changes to the named styles of the document, keyed by suggestion ID.
      &quot;a_key&quot;: { # A suggested change to the NamedStyles.
        &quot;namedStyles&quot;: { # The named styles. Paragraphs in the document can inherit their TextStyle and ParagraphStyle from these named styles. # A NamedStyles that only includes the changes made in this suggestion. This can be used along with the named_styles_suggestion_state to see which fields have changed and their new values.
          &quot;styles&quot;: [ # The named styles. There is an entry for each of the possible named style types.
            { # A named style. Paragraphs in the document can inherit their TextStyle and ParagraphStyle from this named style when they have the same named style type.
              &quot;namedStyleType&quot;: &quot;A String&quot;, # The type of this named style.
              &quot;textStyle&quot;: { # Represents the styling that can be applied to text. Inherited text styles are represented as unset fields in this message. A text style&#x27;s parent depends on where the text style is defined: * The TextStyle of text in a Paragraph inherits from the paragraph&#x27;s corresponding named style type. * The TextStyle on a named style inherits from the normal text named style. * The TextStyle of the normal text named style inherits from the default text style in the Docs editor. * The TextStyle on a Paragraph element that is contained in a table may inherit its text style from the table style. If the text style does not inherit from a parent, unsetting fields will revert the style to a value matching the defaults in the Docs editor. # The text style of this named style.
                &quot;italic&quot;: True or False, # Whether or not the text is italicized.
                &quot;baselineOffset&quot;: &quot;A String&quot;, # The text&#x27;s vertical offset from its normal position. Text with `SUPERSCRIPT` or `SUBSCRIPT` baseline offsets is automatically rendered in a smaller font size, computed based on the `font_size` field. The `font_size` itself is not affected by changes in this field.
                &quot;bold&quot;: True or False, # Whether or not the text is rendered as bold.
                &quot;fontSize&quot;: { # A magnitude in a single direction in the specified units. # The size of the text&#x27;s font.
                  &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                  &quot;magnitude&quot;: 3.14, # The magnitude.
                },
                &quot;foregroundColor&quot;: { # A color that can either be fully opaque or fully transparent. # The foreground color of the text. If set, the color is either an RGB color or transparent, depending on the `color` field.
                  &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                    &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                      &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                      &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                      &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                    },
                  },
                },
                &quot;backgroundColor&quot;: { # A color that can either be fully opaque or fully transparent. # The background color of the text. If set, the color is either an RGB color or transparent, depending on the `color` field.
                  &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                    &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                      &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                      &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                      &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                    },
                  },
                },
                &quot;link&quot;: { # A reference to another portion of a document or an external URL resource. # The hyperlink destination of the text. If unset, there is no link. Links are not inherited from parent text. Changing the link in an update request causes some other changes to the text style of the range: * When setting a link, the text foreground color will be updated to the default link color and the text will be underlined. If these fields are modified in the same request, those values will be used instead of the link defaults. * Setting a link on a text range that overlaps with an existing link will also update the existing link to point to the new URL. * Links are not settable on newline characters. As a result, setting a link on a text range that crosses a paragraph boundary, such as `&quot;ABC\n123&quot;`, will separate the newline character(s) into their own text runs. The link will be applied separately to the runs before and after the newline. * Removing a link will update the text style of the range to match the style of the preceding text (or the default text styles if the preceding text is another link) unless different styles are being set in the same request.
                  &quot;bookmarkId&quot;: &quot;A String&quot;, # The ID of a bookmark in this document.
                  &quot;url&quot;: &quot;A String&quot;, # An external URL.
                  &quot;headingId&quot;: &quot;A String&quot;, # The ID of a heading in this document.
                },
                &quot;strikethrough&quot;: True or False, # Whether or not the text is struck through.
                &quot;weightedFontFamily&quot;: { # Represents a font family and weight of text. # The font family and rendered weight of the text. If an update request specifies values for both `weighted_font_family` and `bold`, the `weighted_font_family` is applied first, then `bold`. If `weighted_font_family#weight` is not set, it defaults to `400`. If `weighted_font_family` is set, then `weighted_font_family#font_family` must also be set with a non-empty value. Otherwise, a 400 bad request error is returned.
                  &quot;fontFamily&quot;: &quot;A String&quot;, # The font family of the text. The font family can be any font from the Font menu in Docs or from [Google Fonts] (https://fonts.google.com/). If the font name is unrecognized, the text is rendered in `Arial`.
                  &quot;weight&quot;: 42, # The weight of the font. This field can have any value that is a multiple of `100` between `100` and `900`, inclusive. This range corresponds to the numerical values described in the CSS 2.1 Specification, [section 15.6](https://www.w3.org/TR/CSS21/fonts.html#font-boldness), with non-numerical values disallowed. The default value is `400` (&quot;normal&quot;). The font weight makes up just one component of the rendered font weight. The rendered weight is determined by a combination of the `weight` and the text style&#x27;s resolved `bold` value, after accounting for inheritance: * If the text is bold and the weight is less than `400`, the rendered weight is 400. * If the text is bold and the weight is greater than or equal to `400` but is less than `700`, the rendered weight is `700`. * If the weight is greater than or equal to `700`, the rendered weight is equal to the weight. * If the text is not bold, the rendered weight is equal to the weight.
                },
                &quot;underline&quot;: True or False, # Whether or not the text is underlined.
                &quot;smallCaps&quot;: True or False, # Whether or not the text is in small capital letters.
              },
              &quot;paragraphStyle&quot;: { # Styles that apply to a whole paragraph. Inherited paragraph styles are represented as unset fields in this message. A paragraph style&#x27;s parent depends on where the paragraph style is defined: * The ParagraphStyle on a Paragraph inherits from the paragraph&#x27;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 is 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. # The paragraph style of this named style.
                &quot;borderRight&quot;: { # A border around a paragraph. # The border to the right of this paragraph. If unset, the value is inherited from the parent. Paragraph borders cannot be partially updated. When making changes to a paragraph border the new border must be specified in its entirety.
                  &quot;color&quot;: { # A color that can either be fully opaque or fully transparent. # The color of the border.
                    &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                      &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                        &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                        &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                        &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                      },
                    },
                  },
                  &quot;width&quot;: { # A magnitude in a single direction in the specified units. # The width of the border.
                    &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                    &quot;magnitude&quot;: 3.14, # The magnitude.
                  },
                  &quot;padding&quot;: { # A magnitude in a single direction in the specified units. # The padding of the border.
                    &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                    &quot;magnitude&quot;: 3.14, # The magnitude.
                  },
                  &quot;dashStyle&quot;: &quot;A String&quot;, # The dash style of the border.
                },
                &quot;indentFirstLine&quot;: { # A magnitude in a single direction in the specified units. # The amount of indentation for the first line of the paragraph. If unset, the value is inherited from the parent.
                  &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                  &quot;magnitude&quot;: 3.14, # The magnitude.
                },
                &quot;alignment&quot;: &quot;A String&quot;, # The text alignment for this paragraph.
                &quot;lineSpacing&quot;: 3.14, # The amount of space between lines, as a percentage of normal, where normal is represented as 100.0. If unset, the value is inherited from the parent.
                &quot;keepLinesTogether&quot;: True or False, # Whether all lines of the paragraph should be laid out on the same page or column if possible. If unset, the value is inherited from the parent.
                &quot;avoidWidowAndOrphan&quot;: True or False, # Whether to avoid widows and orphans for the paragraph. If unset, the value is inherited from the parent.
                &quot;spaceBelow&quot;: { # A magnitude in a single direction in the specified units. # The amount of extra space below the paragraph. If unset, the value is inherited from the parent.
                  &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                  &quot;magnitude&quot;: 3.14, # The magnitude.
                },
                &quot;borderBetween&quot;: { # A border around a paragraph. # 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 making changes to a paragraph border the new border must be specified in its entirety.
                  &quot;color&quot;: { # A color that can either be fully opaque or fully transparent. # The color of the border.
                    &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                      &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                        &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                        &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                        &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                      },
                    },
                  },
                  &quot;width&quot;: { # A magnitude in a single direction in the specified units. # The width of the border.
                    &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                    &quot;magnitude&quot;: 3.14, # The magnitude.
                  },
                  &quot;padding&quot;: { # A magnitude in a single direction in the specified units. # The padding of the border.
                    &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                    &quot;magnitude&quot;: 3.14, # The magnitude.
                  },
                  &quot;dashStyle&quot;: &quot;A String&quot;, # The dash style of the border.
                },
                &quot;headingId&quot;: &quot;A String&quot;, # The heading ID of the paragraph. If empty, then this paragraph is not a heading. This property is read-only.
                &quot;spaceAbove&quot;: { # A magnitude in a single direction in the specified units. # The amount of extra space above the paragraph. If unset, the value is inherited from the parent.
                  &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                  &quot;magnitude&quot;: 3.14, # The magnitude.
                },
                &quot;direction&quot;: &quot;A String&quot;, # The text direction of this paragraph. If unset, the value defaults to LEFT_TO_RIGHT since paragraph direction is not inherited.
                &quot;namedStyleType&quot;: &quot;A String&quot;, # The named style type of the paragraph. Since updating the named style type affects other properties within ParagraphStyle, the named style type is applied before the other properties are updated.
                &quot;tabStops&quot;: [ # A list of the tab stops for this paragraph. The list of tab stops is not inherited. This property is read-only.
                  { # A tab stop within a paragraph.
                    &quot;offset&quot;: { # A magnitude in a single direction in the specified units. # The offset between this tab stop and the start margin.
                      &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                      &quot;magnitude&quot;: 3.14, # The magnitude.
                    },
                    &quot;alignment&quot;: &quot;A String&quot;, # The alignment of this tab stop. If unset, the value defaults to START.
                  },
                ],
                &quot;indentStart&quot;: { # A magnitude in a single direction in the specified units. # The amount of indentation for the paragraph on the side that corresponds to the start of the text, based on the current paragraph direction. If unset, the value is inherited from the parent.
                  &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                  &quot;magnitude&quot;: 3.14, # The magnitude.
                },
                &quot;keepWithNext&quot;: True or False, # Whether at least a part of this paragraph should be laid out on the same page or column as the next paragraph if possible. If unset, the value is inherited from the parent.
                &quot;borderTop&quot;: { # A border around a paragraph. # 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 making changes to a paragraph border the new border must be specified in its entirety.
                  &quot;color&quot;: { # A color that can either be fully opaque or fully transparent. # The color of the border.
                    &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                      &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                        &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                        &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                        &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                      },
                    },
                  },
                  &quot;width&quot;: { # A magnitude in a single direction in the specified units. # The width of the border.
                    &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                    &quot;magnitude&quot;: 3.14, # The magnitude.
                  },
                  &quot;padding&quot;: { # A magnitude in a single direction in the specified units. # The padding of the border.
                    &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                    &quot;magnitude&quot;: 3.14, # The magnitude.
                  },
                  &quot;dashStyle&quot;: &quot;A String&quot;, # The dash style of the border.
                },
                &quot;borderLeft&quot;: { # A border around a paragraph. # The border to the left of this paragraph. If unset, the value is inherited from the parent. Paragraph borders cannot be partially updated. When making changes to a paragraph border the new border must be specified in its entirety.
                  &quot;color&quot;: { # A color that can either be fully opaque or fully transparent. # The color of the border.
                    &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                      &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                        &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                        &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                        &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                      },
                    },
                  },
                  &quot;width&quot;: { # A magnitude in a single direction in the specified units. # The width of the border.
                    &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                    &quot;magnitude&quot;: 3.14, # The magnitude.
                  },
                  &quot;padding&quot;: { # A magnitude in a single direction in the specified units. # The padding of the border.
                    &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                    &quot;magnitude&quot;: 3.14, # The magnitude.
                  },
                  &quot;dashStyle&quot;: &quot;A String&quot;, # The dash style of the border.
                },
                &quot;borderBottom&quot;: { # A border around a paragraph. # 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 making changes to a paragraph border the new border must be specified in its entirety.
                  &quot;color&quot;: { # A color that can either be fully opaque or fully transparent. # The color of the border.
                    &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                      &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                        &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                        &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                        &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                      },
                    },
                  },
                  &quot;width&quot;: { # A magnitude in a single direction in the specified units. # The width of the border.
                    &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                    &quot;magnitude&quot;: 3.14, # The magnitude.
                  },
                  &quot;padding&quot;: { # A magnitude in a single direction in the specified units. # The padding of the border.
                    &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                    &quot;magnitude&quot;: 3.14, # The magnitude.
                  },
                  &quot;dashStyle&quot;: &quot;A String&quot;, # The dash style of the border.
                },
                &quot;shading&quot;: { # The shading of a paragraph. # The shading of the paragraph. If unset, the value is inherited from the parent.
                  &quot;backgroundColor&quot;: { # A color that can either be fully opaque or fully transparent. # The background color of this paragraph shading.
                    &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                      &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                        &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                        &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                        &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                      },
                    },
                  },
                },
                &quot;indentEnd&quot;: { # A magnitude in a single direction in the specified units. # 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.
                  &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                  &quot;magnitude&quot;: 3.14, # The magnitude.
                },
                &quot;spacingMode&quot;: &quot;A String&quot;, # The spacing mode for the paragraph.
              },
            },
          ],
        },
        &quot;namedStylesSuggestionState&quot;: { # The suggestion state of a NamedStyles message. # A mask that indicates which of the fields on the base NamedStyles have been changed in this suggestion.
          &quot;stylesSuggestionStates&quot;: [ # A mask that indicates which of the fields on the corresponding NamedStyle in styles have been changed in this suggestion. The order of these named style suggestion states match the order of the corresponding named style within the named styles suggestion.
            { # A suggestion state of a NamedStyle message.
              &quot;paragraphStyleSuggestionState&quot;: { # A mask that indicates which of the fields on the base ParagraphStyle have been changed in this suggestion. For any field set to true, there is a new suggested value. # A mask that indicates which of the fields in paragraph style have been changed in this suggestion.
                &quot;borderRightSuggested&quot;: True or False, # Indicates if there was a suggested change to border_right.
                &quot;indentEndSuggested&quot;: True or False, # Indicates if there was a suggested change to indent_end.
                &quot;lineSpacingSuggested&quot;: True or False, # Indicates if there was a suggested change to line_spacing.
                &quot;headingIdSuggested&quot;: True or False, # Indicates if there was a suggested change to heading_id.
                &quot;indentStartSuggested&quot;: True or False, # Indicates if there was a suggested change to indent_start.
                &quot;keepWithNextSuggested&quot;: True or False, # Indicates if there was a suggested change to keep_with_next.
                &quot;namedStyleTypeSuggested&quot;: True or False, # Indicates if there was a suggested change to named_style_type.
                &quot;borderTopSuggested&quot;: True or False, # Indicates if there was a suggested change to border_top.
                &quot;keepLinesTogetherSuggested&quot;: True or False, # Indicates if there was a suggested change to keep_lines_together.
                &quot;avoidWidowAndOrphanSuggested&quot;: True or False, # Indicates if there was a suggested change to avoid_widow_and_orphan.
                &quot;spaceBelowSuggested&quot;: True or False, # Indicates if there was a suggested change to space_below.
                &quot;indentFirstLineSuggested&quot;: True or False, # Indicates if there was a suggested change to indent_first_line.
                &quot;shadingSuggestionState&quot;: { # A mask that indicates which of the fields on the base Shading have been changed in this suggested change. For any field set to true, there is a new suggested value. # A mask that indicates which of the fields in shading have been changed in this suggestion.
                  &quot;backgroundColorSuggested&quot;: True or False, # Indicates if there was a suggested change to the Shading.
                },
                &quot;directionSuggested&quot;: True or False, # Indicates if there was a suggested change to direction.
                &quot;borderBetweenSuggested&quot;: True or False, # Indicates if there was a suggested change to border_between.
                &quot;spaceAboveSuggested&quot;: True or False, # Indicates if there was a suggested change to space_above.
                &quot;borderLeftSuggested&quot;: True or False, # Indicates if there was a suggested change to border_left.
                &quot;spacingModeSuggested&quot;: True or False, # Indicates if there was a suggested change to spacing_mode.
                &quot;borderBottomSuggested&quot;: True or False, # Indicates if there was a suggested change to border_bottom.
                &quot;alignmentSuggested&quot;: True or False, # Indicates if there was a suggested change to alignment.
              },
              &quot;textStyleSuggestionState&quot;: { # A mask that indicates which of the fields on the base TextStyle have been changed in this suggestion. For any field set to true, there is a new suggested value. # A mask that indicates which of the fields in text style have been changed in this suggestion.
                &quot;backgroundColorSuggested&quot;: True or False, # Indicates if there was a suggested change to background_color.
                &quot;fontSizeSuggested&quot;: True or False, # Indicates if there was a suggested change to font_size.
                &quot;boldSuggested&quot;: True or False, # Indicates if there was a suggested change to bold.
                &quot;baselineOffsetSuggested&quot;: True or False, # Indicates if there was a suggested change to baseline_offset.
                &quot;foregroundColorSuggested&quot;: True or False, # Indicates if there was a suggested change to foreground_color.
                &quot;italicSuggested&quot;: True or False, # Indicates if there was a suggested change to italic.
                &quot;linkSuggested&quot;: True or False, # Indicates if there was a suggested change to link.
                &quot;underlineSuggested&quot;: True or False, # Indicates if there was a suggested change to underline.
                &quot;weightedFontFamilySuggested&quot;: True or False, # Indicates if there was a suggested change to weighted_font_family.
                &quot;smallCapsSuggested&quot;: True or False, # Indicates if there was a suggested change to small_caps.
                &quot;strikethroughSuggested&quot;: True or False, # Indicates if there was a suggested change to strikethrough.
              },
              &quot;namedStyleType&quot;: &quot;A String&quot;, # The named style type that this suggestion state corresponds to. This field is provided as a convenience for matching the NamedStyleSuggestionState with its corresponding NamedStyle.
            },
          ],
        },
      },
    },
    &quot;namedStyles&quot;: { # The named styles. Paragraphs in the document can inherit their TextStyle and ParagraphStyle from these named styles. # Output only. The named styles of the document.
      &quot;styles&quot;: [ # The named styles. There is an entry for each of the possible named style types.
        { # A named style. Paragraphs in the document can inherit their TextStyle and ParagraphStyle from this named style when they have the same named style type.
          &quot;namedStyleType&quot;: &quot;A String&quot;, # The type of this named style.
          &quot;textStyle&quot;: { # Represents the styling that can be applied to text. Inherited text styles are represented as unset fields in this message. A text style&#x27;s parent depends on where the text style is defined: * The TextStyle of text in a Paragraph inherits from the paragraph&#x27;s corresponding named style type. * The TextStyle on a named style inherits from the normal text named style. * The TextStyle of the normal text named style inherits from the default text style in the Docs editor. * The TextStyle on a Paragraph element that is contained in a table may inherit its text style from the table style. If the text style does not inherit from a parent, unsetting fields will revert the style to a value matching the defaults in the Docs editor. # The text style of this named style.
            &quot;italic&quot;: True or False, # Whether or not the text is italicized.
            &quot;baselineOffset&quot;: &quot;A String&quot;, # The text&#x27;s vertical offset from its normal position. Text with `SUPERSCRIPT` or `SUBSCRIPT` baseline offsets is automatically rendered in a smaller font size, computed based on the `font_size` field. The `font_size` itself is not affected by changes in this field.
            &quot;bold&quot;: True or False, # Whether or not the text is rendered as bold.
            &quot;fontSize&quot;: { # A magnitude in a single direction in the specified units. # The size of the text&#x27;s font.
              &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
              &quot;magnitude&quot;: 3.14, # The magnitude.
            },
            &quot;foregroundColor&quot;: { # A color that can either be fully opaque or fully transparent. # The foreground color of the text. If set, the color is either an RGB color or transparent, depending on the `color` field.
              &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                  &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                  &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                  &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                },
              },
            },
            &quot;backgroundColor&quot;: { # A color that can either be fully opaque or fully transparent. # The background color of the text. If set, the color is either an RGB color or transparent, depending on the `color` field.
              &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                  &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                  &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                  &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                },
              },
            },
            &quot;link&quot;: { # A reference to another portion of a document or an external URL resource. # The hyperlink destination of the text. If unset, there is no link. Links are not inherited from parent text. Changing the link in an update request causes some other changes to the text style of the range: * When setting a link, the text foreground color will be updated to the default link color and the text will be underlined. If these fields are modified in the same request, those values will be used instead of the link defaults. * Setting a link on a text range that overlaps with an existing link will also update the existing link to point to the new URL. * Links are not settable on newline characters. As a result, setting a link on a text range that crosses a paragraph boundary, such as `&quot;ABC\n123&quot;`, will separate the newline character(s) into their own text runs. The link will be applied separately to the runs before and after the newline. * Removing a link will update the text style of the range to match the style of the preceding text (or the default text styles if the preceding text is another link) unless different styles are being set in the same request.
              &quot;bookmarkId&quot;: &quot;A String&quot;, # The ID of a bookmark in this document.
              &quot;url&quot;: &quot;A String&quot;, # An external URL.
              &quot;headingId&quot;: &quot;A String&quot;, # The ID of a heading in this document.
            },
            &quot;strikethrough&quot;: True or False, # Whether or not the text is struck through.
            &quot;weightedFontFamily&quot;: { # Represents a font family and weight of text. # The font family and rendered weight of the text. If an update request specifies values for both `weighted_font_family` and `bold`, the `weighted_font_family` is applied first, then `bold`. If `weighted_font_family#weight` is not set, it defaults to `400`. If `weighted_font_family` is set, then `weighted_font_family#font_family` must also be set with a non-empty value. Otherwise, a 400 bad request error is returned.
              &quot;fontFamily&quot;: &quot;A String&quot;, # The font family of the text. The font family can be any font from the Font menu in Docs or from [Google Fonts] (https://fonts.google.com/). If the font name is unrecognized, the text is rendered in `Arial`.
              &quot;weight&quot;: 42, # The weight of the font. This field can have any value that is a multiple of `100` between `100` and `900`, inclusive. This range corresponds to the numerical values described in the CSS 2.1 Specification, [section 15.6](https://www.w3.org/TR/CSS21/fonts.html#font-boldness), with non-numerical values disallowed. The default value is `400` (&quot;normal&quot;). The font weight makes up just one component of the rendered font weight. The rendered weight is determined by a combination of the `weight` and the text style&#x27;s resolved `bold` value, after accounting for inheritance: * If the text is bold and the weight is less than `400`, the rendered weight is 400. * If the text is bold and the weight is greater than or equal to `400` but is less than `700`, the rendered weight is `700`. * If the weight is greater than or equal to `700`, the rendered weight is equal to the weight. * If the text is not bold, the rendered weight is equal to the weight.
            },
            &quot;underline&quot;: True or False, # Whether or not the text is underlined.
            &quot;smallCaps&quot;: True or False, # Whether or not the text is in small capital letters.
          },
          &quot;paragraphStyle&quot;: { # Styles that apply to a whole paragraph. Inherited paragraph styles are represented as unset fields in this message. A paragraph style&#x27;s parent depends on where the paragraph style is defined: * The ParagraphStyle on a Paragraph inherits from the paragraph&#x27;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 is 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. # The paragraph style of this named style.
            &quot;borderRight&quot;: { # A border around a paragraph. # The border to the right of this paragraph. If unset, the value is inherited from the parent. Paragraph borders cannot be partially updated. When making changes to a paragraph border the new border must be specified in its entirety.
              &quot;color&quot;: { # A color that can either be fully opaque or fully transparent. # The color of the border.
                &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                  &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                    &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                    &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                    &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                  },
                },
              },
              &quot;width&quot;: { # A magnitude in a single direction in the specified units. # The width of the border.
                &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                &quot;magnitude&quot;: 3.14, # The magnitude.
              },
              &quot;padding&quot;: { # A magnitude in a single direction in the specified units. # The padding of the border.
                &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                &quot;magnitude&quot;: 3.14, # The magnitude.
              },
              &quot;dashStyle&quot;: &quot;A String&quot;, # The dash style of the border.
            },
            &quot;indentFirstLine&quot;: { # A magnitude in a single direction in the specified units. # The amount of indentation for the first line of the paragraph. If unset, the value is inherited from the parent.
              &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
              &quot;magnitude&quot;: 3.14, # The magnitude.
            },
            &quot;alignment&quot;: &quot;A String&quot;, # The text alignment for this paragraph.
            &quot;lineSpacing&quot;: 3.14, # The amount of space between lines, as a percentage of normal, where normal is represented as 100.0. If unset, the value is inherited from the parent.
            &quot;keepLinesTogether&quot;: True or False, # Whether all lines of the paragraph should be laid out on the same page or column if possible. If unset, the value is inherited from the parent.
            &quot;avoidWidowAndOrphan&quot;: True or False, # Whether to avoid widows and orphans for the paragraph. If unset, the value is inherited from the parent.
            &quot;spaceBelow&quot;: { # A magnitude in a single direction in the specified units. # The amount of extra space below the paragraph. If unset, the value is inherited from the parent.
              &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
              &quot;magnitude&quot;: 3.14, # The magnitude.
            },
            &quot;borderBetween&quot;: { # A border around a paragraph. # 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 making changes to a paragraph border the new border must be specified in its entirety.
              &quot;color&quot;: { # A color that can either be fully opaque or fully transparent. # The color of the border.
                &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                  &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                    &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                    &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                    &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                  },
                },
              },
              &quot;width&quot;: { # A magnitude in a single direction in the specified units. # The width of the border.
                &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                &quot;magnitude&quot;: 3.14, # The magnitude.
              },
              &quot;padding&quot;: { # A magnitude in a single direction in the specified units. # The padding of the border.
                &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                &quot;magnitude&quot;: 3.14, # The magnitude.
              },
              &quot;dashStyle&quot;: &quot;A String&quot;, # The dash style of the border.
            },
            &quot;headingId&quot;: &quot;A String&quot;, # The heading ID of the paragraph. If empty, then this paragraph is not a heading. This property is read-only.
            &quot;spaceAbove&quot;: { # A magnitude in a single direction in the specified units. # The amount of extra space above the paragraph. If unset, the value is inherited from the parent.
              &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
              &quot;magnitude&quot;: 3.14, # The magnitude.
            },
            &quot;direction&quot;: &quot;A String&quot;, # The text direction of this paragraph. If unset, the value defaults to LEFT_TO_RIGHT since paragraph direction is not inherited.
            &quot;namedStyleType&quot;: &quot;A String&quot;, # The named style type of the paragraph. Since updating the named style type affects other properties within ParagraphStyle, the named style type is applied before the other properties are updated.
            &quot;tabStops&quot;: [ # A list of the tab stops for this paragraph. The list of tab stops is not inherited. This property is read-only.
              { # A tab stop within a paragraph.
                &quot;offset&quot;: { # A magnitude in a single direction in the specified units. # The offset between this tab stop and the start margin.
                  &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                  &quot;magnitude&quot;: 3.14, # The magnitude.
                },
                &quot;alignment&quot;: &quot;A String&quot;, # The alignment of this tab stop. If unset, the value defaults to START.
              },
            ],
            &quot;indentStart&quot;: { # A magnitude in a single direction in the specified units. # The amount of indentation for the paragraph on the side that corresponds to the start of the text, based on the current paragraph direction. If unset, the value is inherited from the parent.
              &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
              &quot;magnitude&quot;: 3.14, # The magnitude.
            },
            &quot;keepWithNext&quot;: True or False, # Whether at least a part of this paragraph should be laid out on the same page or column as the next paragraph if possible. If unset, the value is inherited from the parent.
            &quot;borderTop&quot;: { # A border around a paragraph. # 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 making changes to a paragraph border the new border must be specified in its entirety.
              &quot;color&quot;: { # A color that can either be fully opaque or fully transparent. # The color of the border.
                &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                  &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                    &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                    &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                    &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                  },
                },
              },
              &quot;width&quot;: { # A magnitude in a single direction in the specified units. # The width of the border.
                &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                &quot;magnitude&quot;: 3.14, # The magnitude.
              },
              &quot;padding&quot;: { # A magnitude in a single direction in the specified units. # The padding of the border.
                &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                &quot;magnitude&quot;: 3.14, # The magnitude.
              },
              &quot;dashStyle&quot;: &quot;A String&quot;, # The dash style of the border.
            },
            &quot;borderLeft&quot;: { # A border around a paragraph. # The border to the left of this paragraph. If unset, the value is inherited from the parent. Paragraph borders cannot be partially updated. When making changes to a paragraph border the new border must be specified in its entirety.
              &quot;color&quot;: { # A color that can either be fully opaque or fully transparent. # The color of the border.
                &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                  &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                    &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                    &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                    &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                  },
                },
              },
              &quot;width&quot;: { # A magnitude in a single direction in the specified units. # The width of the border.
                &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                &quot;magnitude&quot;: 3.14, # The magnitude.
              },
              &quot;padding&quot;: { # A magnitude in a single direction in the specified units. # The padding of the border.
                &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                &quot;magnitude&quot;: 3.14, # The magnitude.
              },
              &quot;dashStyle&quot;: &quot;A String&quot;, # The dash style of the border.
            },
            &quot;borderBottom&quot;: { # A border around a paragraph. # 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 making changes to a paragraph border the new border must be specified in its entirety.
              &quot;color&quot;: { # A color that can either be fully opaque or fully transparent. # The color of the border.
                &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                  &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                    &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                    &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                    &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                  },
                },
              },
              &quot;width&quot;: { # A magnitude in a single direction in the specified units. # The width of the border.
                &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                &quot;magnitude&quot;: 3.14, # The magnitude.
              },
              &quot;padding&quot;: { # A magnitude in a single direction in the specified units. # The padding of the border.
                &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                &quot;magnitude&quot;: 3.14, # The magnitude.
              },
              &quot;dashStyle&quot;: &quot;A String&quot;, # The dash style of the border.
            },
            &quot;shading&quot;: { # The shading of a paragraph. # The shading of the paragraph. If unset, the value is inherited from the parent.
              &quot;backgroundColor&quot;: { # A color that can either be fully opaque or fully transparent. # The background color of this paragraph shading.
                &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                  &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                    &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                    &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                    &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                  },
                },
              },
            },
            &quot;indentEnd&quot;: { # A magnitude in a single direction in the specified units. # 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.
              &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
              &quot;magnitude&quot;: 3.14, # The magnitude.
            },
            &quot;spacingMode&quot;: &quot;A String&quot;, # The spacing mode for the paragraph.
          },
        },
      ],
    },
    &quot;positionedObjects&quot;: { # Output only. The positioned objects in the document, keyed by object ID.
      &quot;a_key&quot;: { # An object that is tethered to a Paragraph and positioned relative to the beginning of the paragraph. A PositionedObject contains an EmbeddedObject such as an image.
        &quot;suggestedInsertionId&quot;: &quot;A String&quot;, # The suggested insertion ID. If empty, then this is not a suggested insertion.
        &quot;suggestedPositionedObjectPropertiesChanges&quot;: { # The suggested changes to the positioned object properties, keyed by suggestion ID.
          &quot;a_key&quot;: { # A suggested change to PositionedObjectProperties.
            &quot;positionedObjectPropertiesSuggestionState&quot;: { # A mask that indicates which of the fields on the base PositionedObjectProperties have been changed in this suggestion. For any field set to true, there is a new suggested value. # A mask that indicates which of the fields on the base PositionedObjectProperties have been changed in this suggestion.
              &quot;embeddedObjectSuggestionState&quot;: { # A mask that indicates which of the fields on the base EmbeddedObject have been changed in this suggestion. For any field set to true, there is a new suggested value. # A mask that indicates which of the fields in embedded_object have been changed in this suggestion.
                &quot;marginBottomSuggested&quot;: True or False, # Indicates if there was a suggested change to margin_bottom.
                &quot;titleSuggested&quot;: True or False, # Indicates if there was a suggested change to title.
                &quot;imagePropertiesSuggestionState&quot;: { # A mask that indicates which of the fields on the base ImageProperties have been changed in this suggestion. For any field set to true, there is a new suggested value. # A mask that indicates which of the fields in image_properties have been changed in this suggestion.
                  &quot;contentUriSuggested&quot;: True or False, # Indicates if there was a suggested change to content_uri.
                  &quot;angleSuggested&quot;: True or False, # Indicates if there was a suggested change to angle.
                  &quot;transparencySuggested&quot;: True or False, # Indicates if there was a suggested change to transparency.
                  &quot;brightnessSuggested&quot;: True or False, # Indicates if there was a suggested change to brightness.
                  &quot;contrastSuggested&quot;: True or False, # Indicates if there was a suggested change to contrast.
                  &quot;cropPropertiesSuggestionState&quot;: { # A mask that indicates which of the fields on the base CropProperties have been changed in this suggestion. For any field set to true, there is a new suggested value. # A mask that indicates which of the fields in crop_properties have been changed in this suggestion.
                    &quot;offsetRightSuggested&quot;: True or False, # Indicates if there was a suggested change to offset_right.
                    &quot;offsetLeftSuggested&quot;: True or False, # Indicates if there was a suggested change to offset_left.
                    &quot;offsetTopSuggested&quot;: True or False, # Indicates if there was a suggested change to offset_top.
                    &quot;angleSuggested&quot;: True or False, # Indicates if there was a suggested change to angle.
                    &quot;offsetBottomSuggested&quot;: True or False, # Indicates if there was a suggested change to offset_bottom.
                  },
                  &quot;sourceUriSuggested&quot;: True or False, # Indicates if there was a suggested change to source_uri.
                },
                &quot;marginTopSuggested&quot;: True or False, # Indicates if there was a suggested change to margin_top.
                &quot;embeddedObjectBorderSuggestionState&quot;: { # A mask that indicates which of the fields on the base EmbeddedObjectBorder have been changed in this suggestion. For any field set to true, there is a new suggested value. # A mask that indicates which of the fields in embedded_object_border have been changed in this suggestion.
                  &quot;colorSuggested&quot;: True or False, # Indicates if there was a suggested change to color.
                  &quot;dashStyleSuggested&quot;: True or False, # Indicates if there was a suggested change to dash_style.
                  &quot;propertyStateSuggested&quot;: True or False, # Indicates if there was a suggested change to property_state.
                  &quot;widthSuggested&quot;: True or False, # Indicates if there was a suggested change to width.
                },
                &quot;descriptionSuggested&quot;: True or False, # Indicates if there was a suggested change to description.
                &quot;linkedContentReferenceSuggestionState&quot;: { # A mask that indicates which of the fields on the base LinkedContentReference have been changed in this suggestion. For any field set to true, there is a new suggested value. # A mask that indicates which of the fields in linked_content_reference have been changed in this suggestion.
                  &quot;sheetsChartReferenceSuggestionState&quot;: { # A mask that indicates which of the fields on the base SheetsChartReference have been changed in this suggestion. For any field set to true, there is a new suggested value. # A mask that indicates which of the fields in sheets_chart_reference have been changed in this suggestion.
                    &quot;chartIdSuggested&quot;: True or False, # Indicates if there was a suggested change to chart_id.
                    &quot;spreadsheetIdSuggested&quot;: True or False, # Indicates if there was a suggested change to spreadsheet_id.
                  },
                },
                &quot;sizeSuggestionState&quot;: { # A mask that indicates which of the fields on the base Size have been changed in this suggestion. For any field set to true, the Size has a new suggested value. # A mask that indicates which of the fields in size have been changed in this suggestion.
                  &quot;heightSuggested&quot;: True or False, # Indicates if there was a suggested change to height.
                  &quot;widthSuggested&quot;: True or False, # Indicates if there was a suggested change to width.
                },
                &quot;embeddedDrawingPropertiesSuggestionState&quot;: { # A mask that indicates which of the fields on the base EmbeddedDrawingProperties have been changed in this suggestion. For any field set to true, there is a new suggested value. # A mask that indicates which of the fields in embedded_drawing_properties have been changed in this suggestion.
                },
                &quot;marginRightSuggested&quot;: True or False, # Indicates if there was a suggested change to margin_right.
                &quot;marginLeftSuggested&quot;: True or False, # Indicates if there was a suggested change to margin_left.
              },
              &quot;positioningSuggestionState&quot;: { # A mask that indicates which of the fields on the base PositionedObjectPositioning have been changed in this suggestion. For any field set to true, there is a new suggested value. # A mask that indicates which of the fields in positioning have been changed in this suggestion.
                &quot;layoutSuggested&quot;: True or False, # Indicates if there was a suggested change to layout.
                &quot;topOffsetSuggested&quot;: True or False, # Indicates if there was a suggested change to top_offset.
                &quot;leftOffsetSuggested&quot;: True or False, # Indicates if there was a suggested change to left_offset.
              },
            },
            &quot;positionedObjectProperties&quot;: { # Properties of a PositionedObject. # A PositionedObjectProperties that only includes the changes made in this suggestion. This can be used along with the positioned_object_properties_suggestion_state to see which fields have changed and their new values.
              &quot;embeddedObject&quot;: { # An embedded object in the document. # The embedded object of this positioned object.
                &quot;linkedContentReference&quot;: { # A reference to the external linked source content. # A reference to the external linked source content. For example, it contains a reference to the source Sheets chart when the embedded object is a linked chart. If unset, then the embedded object is not linked.
                  &quot;sheetsChartReference&quot;: { # A reference to a linked chart embedded from Google Sheets. # A reference to the linked chart.
                    &quot;chartId&quot;: 42, # The ID of the specific chart in the Google Sheets spreadsheet that is embedded.
                    &quot;spreadsheetId&quot;: &quot;A String&quot;, # The ID of the Google Sheets spreadsheet that contains the source chart.
                  },
                },
                &quot;imageProperties&quot;: { # The properties of an image. # The properties of an image.
                  &quot;transparency&quot;: 3.14, # The transparency effect of the image. The value should be in the interval [0.0, 1.0], where 0 means no effect and 1 means completely transparent.
                  &quot;angle&quot;: 3.14, # The clockwise rotation angle of the image, in radians.
                  &quot;contrast&quot;: 3.14, # The contrast effect of the image. The value should be in the interval [-1.0, 1.0], where 0 means no effect.
                  &quot;brightness&quot;: 3.14, # The brightness effect of the image. The value should be in the interval [-1.0, 1.0], where 0 means no effect.
                  &quot;cropProperties&quot;: { # The crop properties of an image. The crop rectangle is represented using fractional offsets from the original content&#x27;s four edges. - If the offset is in the interval (0, 1), the corresponding edge of crop rectangle is positioned inside of the image&#x27;s original bounding rectangle. - If the offset is negative or greater than 1, the corresponding edge of crop rectangle is positioned outside of the image&#x27;s original bounding rectangle. - If all offsets and rotation angle are 0, the image is not cropped. # The crop properties of the image.
                    &quot;offsetRight&quot;: 3.14, # The offset specifies how far inwards the right edge of the crop rectangle is from the right edge of the original content as a fraction of the original content&#x27;s width.
                    &quot;angle&quot;: 3.14, # The clockwise rotation angle of the crop rectangle around its center, in radians. Rotation is applied after the offsets.
                    &quot;offsetBottom&quot;: 3.14, # The offset specifies how far inwards the bottom edge of the crop rectangle is from the bottom edge of the original content as a fraction of the original content&#x27;s height.
                    &quot;offsetTop&quot;: 3.14, # The offset specifies how far inwards the top edge of the crop rectangle is from the top edge of the original content as a fraction of the original content&#x27;s height.
                    &quot;offsetLeft&quot;: 3.14, # The offset specifies how far inwards the left edge of the crop rectangle is from the left edge of the original content as a fraction of the original content&#x27;s width.
                  },
                  &quot;contentUri&quot;: &quot;A String&quot;, # A URI to the image with a default lifetime of 30 minutes. This URI is tagged with the account of the requester. Anyone with the URI effectively accesses the image as the original requester. Access to the image may be lost if the document&#x27;s sharing settings change.
                  &quot;sourceUri&quot;: &quot;A String&quot;, # The source URI is the URI used to insert the image. The source URI can be empty.
                },
                &quot;marginRight&quot;: { # A magnitude in a single direction in the specified units. # The right margin of the embedded object.
                  &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                  &quot;magnitude&quot;: 3.14, # The magnitude.
                },
                &quot;title&quot;: &quot;A String&quot;, # The title of the embedded object. The `title` and `description` are both combined to display alt text.
                &quot;embeddedDrawingProperties&quot;: { # The properties of an embedded drawing. # The properties of an embedded drawing.
                },
                &quot;marginTop&quot;: { # A magnitude in a single direction in the specified units. # The top margin of the embedded object.
                  &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                  &quot;magnitude&quot;: 3.14, # The magnitude.
                },
                &quot;description&quot;: &quot;A String&quot;, # The description of the embedded object. The `title` and `description` are both combined to display alt text.
                &quot;marginLeft&quot;: { # A magnitude in a single direction in the specified units. # The left margin of the embedded object.
                  &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                  &quot;magnitude&quot;: 3.14, # The magnitude.
                },
                &quot;size&quot;: { # A width and height. # The visible size of the image after cropping.
                  &quot;width&quot;: { # A magnitude in a single direction in the specified units. # The width of the object.
                    &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                    &quot;magnitude&quot;: 3.14, # The magnitude.
                  },
                  &quot;height&quot;: { # A magnitude in a single direction in the specified units. # The height of the object.
                    &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                    &quot;magnitude&quot;: 3.14, # The magnitude.
                  },
                },
                &quot;embeddedObjectBorder&quot;: { # A border around an EmbeddedObject. # The border of the embedded object.
                  &quot;color&quot;: { # A color that can either be fully opaque or fully transparent. # The color of the border.
                    &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                      &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                        &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                        &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                        &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                      },
                    },
                  },
                  &quot;width&quot;: { # A magnitude in a single direction in the specified units. # The width of the border.
                    &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                    &quot;magnitude&quot;: 3.14, # The magnitude.
                  },
                  &quot;dashStyle&quot;: &quot;A String&quot;, # The dash style of the border.
                  &quot;propertyState&quot;: &quot;A String&quot;, # The property state of the border property.
                },
                &quot;marginBottom&quot;: { # A magnitude in a single direction in the specified units. # The bottom margin of the embedded object.
                  &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                  &quot;magnitude&quot;: 3.14, # The magnitude.
                },
              },
              &quot;positioning&quot;: { # The positioning of a PositionedObject. The positioned object is positioned relative to the beginning of the Paragraph it is tethered to. # The positioning of this positioned object relative to the newline of the Paragraph that references this positioned object.
                &quot;topOffset&quot;: { # A magnitude in a single direction in the specified units. # The offset of the top edge of the positioned object relative to the beginning of the Paragraph it is tethered to. The exact positioning of the object can depend on other content in the document and the document&#x27;s styling.
                  &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                  &quot;magnitude&quot;: 3.14, # The magnitude.
                },
                &quot;leftOffset&quot;: { # A magnitude in a single direction in the specified units. # The offset of the left edge of the positioned object relative to the beginning of the Paragraph it is tethered to. The exact positioning of the object can depend on other content in the document and the document&#x27;s styling.
                  &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                  &quot;magnitude&quot;: 3.14, # The magnitude.
                },
                &quot;layout&quot;: &quot;A String&quot;, # The layout of this positioned object.
              },
            },
          },
        },
        &quot;objectId&quot;: &quot;A String&quot;, # The ID of this positioned object.
        &quot;positionedObjectProperties&quot;: { # Properties of a PositionedObject. # The properties of this positioned object.
          &quot;embeddedObject&quot;: { # An embedded object in the document. # The embedded object of this positioned object.
            &quot;linkedContentReference&quot;: { # A reference to the external linked source content. # A reference to the external linked source content. For example, it contains a reference to the source Sheets chart when the embedded object is a linked chart. If unset, then the embedded object is not linked.
              &quot;sheetsChartReference&quot;: { # A reference to a linked chart embedded from Google Sheets. # A reference to the linked chart.
                &quot;chartId&quot;: 42, # The ID of the specific chart in the Google Sheets spreadsheet that is embedded.
                &quot;spreadsheetId&quot;: &quot;A String&quot;, # The ID of the Google Sheets spreadsheet that contains the source chart.
              },
            },
            &quot;imageProperties&quot;: { # The properties of an image. # The properties of an image.
              &quot;transparency&quot;: 3.14, # The transparency effect of the image. The value should be in the interval [0.0, 1.0], where 0 means no effect and 1 means completely transparent.
              &quot;angle&quot;: 3.14, # The clockwise rotation angle of the image, in radians.
              &quot;contrast&quot;: 3.14, # The contrast effect of the image. The value should be in the interval [-1.0, 1.0], where 0 means no effect.
              &quot;brightness&quot;: 3.14, # The brightness effect of the image. The value should be in the interval [-1.0, 1.0], where 0 means no effect.
              &quot;cropProperties&quot;: { # The crop properties of an image. The crop rectangle is represented using fractional offsets from the original content&#x27;s four edges. - If the offset is in the interval (0, 1), the corresponding edge of crop rectangle is positioned inside of the image&#x27;s original bounding rectangle. - If the offset is negative or greater than 1, the corresponding edge of crop rectangle is positioned outside of the image&#x27;s original bounding rectangle. - If all offsets and rotation angle are 0, the image is not cropped. # The crop properties of the image.
                &quot;offsetRight&quot;: 3.14, # The offset specifies how far inwards the right edge of the crop rectangle is from the right edge of the original content as a fraction of the original content&#x27;s width.
                &quot;angle&quot;: 3.14, # The clockwise rotation angle of the crop rectangle around its center, in radians. Rotation is applied after the offsets.
                &quot;offsetBottom&quot;: 3.14, # The offset specifies how far inwards the bottom edge of the crop rectangle is from the bottom edge of the original content as a fraction of the original content&#x27;s height.
                &quot;offsetTop&quot;: 3.14, # The offset specifies how far inwards the top edge of the crop rectangle is from the top edge of the original content as a fraction of the original content&#x27;s height.
                &quot;offsetLeft&quot;: 3.14, # The offset specifies how far inwards the left edge of the crop rectangle is from the left edge of the original content as a fraction of the original content&#x27;s width.
              },
              &quot;contentUri&quot;: &quot;A String&quot;, # A URI to the image with a default lifetime of 30 minutes. This URI is tagged with the account of the requester. Anyone with the URI effectively accesses the image as the original requester. Access to the image may be lost if the document&#x27;s sharing settings change.
              &quot;sourceUri&quot;: &quot;A String&quot;, # The source URI is the URI used to insert the image. The source URI can be empty.
            },
            &quot;marginRight&quot;: { # A magnitude in a single direction in the specified units. # The right margin of the embedded object.
              &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
              &quot;magnitude&quot;: 3.14, # The magnitude.
            },
            &quot;title&quot;: &quot;A String&quot;, # The title of the embedded object. The `title` and `description` are both combined to display alt text.
            &quot;embeddedDrawingProperties&quot;: { # The properties of an embedded drawing. # The properties of an embedded drawing.
            },
            &quot;marginTop&quot;: { # A magnitude in a single direction in the specified units. # The top margin of the embedded object.
              &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
              &quot;magnitude&quot;: 3.14, # The magnitude.
            },
            &quot;description&quot;: &quot;A String&quot;, # The description of the embedded object. The `title` and `description` are both combined to display alt text.
            &quot;marginLeft&quot;: { # A magnitude in a single direction in the specified units. # The left margin of the embedded object.
              &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
              &quot;magnitude&quot;: 3.14, # The magnitude.
            },
            &quot;size&quot;: { # A width and height. # The visible size of the image after cropping.
              &quot;width&quot;: { # A magnitude in a single direction in the specified units. # The width of the object.
                &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                &quot;magnitude&quot;: 3.14, # The magnitude.
              },
              &quot;height&quot;: { # A magnitude in a single direction in the specified units. # The height of the object.
                &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                &quot;magnitude&quot;: 3.14, # The magnitude.
              },
            },
            &quot;embeddedObjectBorder&quot;: { # A border around an EmbeddedObject. # The border of the embedded object.
              &quot;color&quot;: { # A color that can either be fully opaque or fully transparent. # The color of the border.
                &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                  &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                    &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                    &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                    &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                  },
                },
              },
              &quot;width&quot;: { # A magnitude in a single direction in the specified units. # The width of the border.
                &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                &quot;magnitude&quot;: 3.14, # The magnitude.
              },
              &quot;dashStyle&quot;: &quot;A String&quot;, # The dash style of the border.
              &quot;propertyState&quot;: &quot;A String&quot;, # The property state of the border property.
            },
            &quot;marginBottom&quot;: { # A magnitude in a single direction in the specified units. # The bottom margin of the embedded object.
              &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
              &quot;magnitude&quot;: 3.14, # The magnitude.
            },
          },
          &quot;positioning&quot;: { # The positioning of a PositionedObject. The positioned object is positioned relative to the beginning of the Paragraph it is tethered to. # The positioning of this positioned object relative to the newline of the Paragraph that references this positioned object.
            &quot;topOffset&quot;: { # A magnitude in a single direction in the specified units. # The offset of the top edge of the positioned object relative to the beginning of the Paragraph it is tethered to. The exact positioning of the object can depend on other content in the document and the document&#x27;s styling.
              &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
              &quot;magnitude&quot;: 3.14, # The magnitude.
            },
            &quot;leftOffset&quot;: { # A magnitude in a single direction in the specified units. # The offset of the left edge of the positioned object relative to the beginning of the Paragraph it is tethered to. The exact positioning of the object can depend on other content in the document and the document&#x27;s styling.
              &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
              &quot;magnitude&quot;: 3.14, # The magnitude.
            },
            &quot;layout&quot;: &quot;A String&quot;, # The layout of this positioned object.
          },
        },
        &quot;suggestedDeletionIds&quot;: [ # The suggested deletion IDs. If empty, then there are no suggested deletions of this content.
          &quot;A String&quot;,
        ],
      },
    },
    &quot;inlineObjects&quot;: { # Output only. The inline objects in the document, keyed by object ID.
      &quot;a_key&quot;: { # An object that appears inline with text. An InlineObject contains an EmbeddedObject such as an image.
        &quot;suggestedInlineObjectPropertiesChanges&quot;: { # The suggested changes to the inline object properties, keyed by suggestion ID.
          &quot;a_key&quot;: { # A suggested change to InlineObjectProperties.
            &quot;inlineObjectProperties&quot;: { # Properties of an InlineObject. # An InlineObjectProperties that only includes the changes made in this suggestion. This can be used along with the inline_object_properties_suggestion_state to see which fields have changed and their new values.
              &quot;embeddedObject&quot;: { # An embedded object in the document. # The embedded object of this inline object.
                &quot;linkedContentReference&quot;: { # A reference to the external linked source content. # A reference to the external linked source content. For example, it contains a reference to the source Sheets chart when the embedded object is a linked chart. If unset, then the embedded object is not linked.
                  &quot;sheetsChartReference&quot;: { # A reference to a linked chart embedded from Google Sheets. # A reference to the linked chart.
                    &quot;chartId&quot;: 42, # The ID of the specific chart in the Google Sheets spreadsheet that is embedded.
                    &quot;spreadsheetId&quot;: &quot;A String&quot;, # The ID of the Google Sheets spreadsheet that contains the source chart.
                  },
                },
                &quot;imageProperties&quot;: { # The properties of an image. # The properties of an image.
                  &quot;transparency&quot;: 3.14, # The transparency effect of the image. The value should be in the interval [0.0, 1.0], where 0 means no effect and 1 means completely transparent.
                  &quot;angle&quot;: 3.14, # The clockwise rotation angle of the image, in radians.
                  &quot;contrast&quot;: 3.14, # The contrast effect of the image. The value should be in the interval [-1.0, 1.0], where 0 means no effect.
                  &quot;brightness&quot;: 3.14, # The brightness effect of the image. The value should be in the interval [-1.0, 1.0], where 0 means no effect.
                  &quot;cropProperties&quot;: { # The crop properties of an image. The crop rectangle is represented using fractional offsets from the original content&#x27;s four edges. - If the offset is in the interval (0, 1), the corresponding edge of crop rectangle is positioned inside of the image&#x27;s original bounding rectangle. - If the offset is negative or greater than 1, the corresponding edge of crop rectangle is positioned outside of the image&#x27;s original bounding rectangle. - If all offsets and rotation angle are 0, the image is not cropped. # The crop properties of the image.
                    &quot;offsetRight&quot;: 3.14, # The offset specifies how far inwards the right edge of the crop rectangle is from the right edge of the original content as a fraction of the original content&#x27;s width.
                    &quot;angle&quot;: 3.14, # The clockwise rotation angle of the crop rectangle around its center, in radians. Rotation is applied after the offsets.
                    &quot;offsetBottom&quot;: 3.14, # The offset specifies how far inwards the bottom edge of the crop rectangle is from the bottom edge of the original content as a fraction of the original content&#x27;s height.
                    &quot;offsetTop&quot;: 3.14, # The offset specifies how far inwards the top edge of the crop rectangle is from the top edge of the original content as a fraction of the original content&#x27;s height.
                    &quot;offsetLeft&quot;: 3.14, # The offset specifies how far inwards the left edge of the crop rectangle is from the left edge of the original content as a fraction of the original content&#x27;s width.
                  },
                  &quot;contentUri&quot;: &quot;A String&quot;, # A URI to the image with a default lifetime of 30 minutes. This URI is tagged with the account of the requester. Anyone with the URI effectively accesses the image as the original requester. Access to the image may be lost if the document&#x27;s sharing settings change.
                  &quot;sourceUri&quot;: &quot;A String&quot;, # The source URI is the URI used to insert the image. The source URI can be empty.
                },
                &quot;marginRight&quot;: { # A magnitude in a single direction in the specified units. # The right margin of the embedded object.
                  &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                  &quot;magnitude&quot;: 3.14, # The magnitude.
                },
                &quot;title&quot;: &quot;A String&quot;, # The title of the embedded object. The `title` and `description` are both combined to display alt text.
                &quot;embeddedDrawingProperties&quot;: { # The properties of an embedded drawing. # The properties of an embedded drawing.
                },
                &quot;marginTop&quot;: { # A magnitude in a single direction in the specified units. # The top margin of the embedded object.
                  &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                  &quot;magnitude&quot;: 3.14, # The magnitude.
                },
                &quot;description&quot;: &quot;A String&quot;, # The description of the embedded object. The `title` and `description` are both combined to display alt text.
                &quot;marginLeft&quot;: { # A magnitude in a single direction in the specified units. # The left margin of the embedded object.
                  &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                  &quot;magnitude&quot;: 3.14, # The magnitude.
                },
                &quot;size&quot;: { # A width and height. # The visible size of the image after cropping.
                  &quot;width&quot;: { # A magnitude in a single direction in the specified units. # The width of the object.
                    &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                    &quot;magnitude&quot;: 3.14, # The magnitude.
                  },
                  &quot;height&quot;: { # A magnitude in a single direction in the specified units. # The height of the object.
                    &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                    &quot;magnitude&quot;: 3.14, # The magnitude.
                  },
                },
                &quot;embeddedObjectBorder&quot;: { # A border around an EmbeddedObject. # The border of the embedded object.
                  &quot;color&quot;: { # A color that can either be fully opaque or fully transparent. # The color of the border.
                    &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                      &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                        &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                        &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                        &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                      },
                    },
                  },
                  &quot;width&quot;: { # A magnitude in a single direction in the specified units. # The width of the border.
                    &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                    &quot;magnitude&quot;: 3.14, # The magnitude.
                  },
                  &quot;dashStyle&quot;: &quot;A String&quot;, # The dash style of the border.
                  &quot;propertyState&quot;: &quot;A String&quot;, # The property state of the border property.
                },
                &quot;marginBottom&quot;: { # A magnitude in a single direction in the specified units. # The bottom margin of the embedded object.
                  &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                  &quot;magnitude&quot;: 3.14, # The magnitude.
                },
              },
            },
            &quot;inlineObjectPropertiesSuggestionState&quot;: { # A mask that indicates which of the fields on the base InlineObjectProperties have been changed in this suggestion. For any field set to true, there is a new suggested value. # A mask that indicates which of the fields on the base InlineObjectProperties have been changed in this suggestion.
              &quot;embeddedObjectSuggestionState&quot;: { # A mask that indicates which of the fields on the base EmbeddedObject have been changed in this suggestion. For any field set to true, there is a new suggested value. # A mask that indicates which of the fields in embedded_object have been changed in this suggestion.
                &quot;marginBottomSuggested&quot;: True or False, # Indicates if there was a suggested change to margin_bottom.
                &quot;titleSuggested&quot;: True or False, # Indicates if there was a suggested change to title.
                &quot;imagePropertiesSuggestionState&quot;: { # A mask that indicates which of the fields on the base ImageProperties have been changed in this suggestion. For any field set to true, there is a new suggested value. # A mask that indicates which of the fields in image_properties have been changed in this suggestion.
                  &quot;contentUriSuggested&quot;: True or False, # Indicates if there was a suggested change to content_uri.
                  &quot;angleSuggested&quot;: True or False, # Indicates if there was a suggested change to angle.
                  &quot;transparencySuggested&quot;: True or False, # Indicates if there was a suggested change to transparency.
                  &quot;brightnessSuggested&quot;: True or False, # Indicates if there was a suggested change to brightness.
                  &quot;contrastSuggested&quot;: True or False, # Indicates if there was a suggested change to contrast.
                  &quot;cropPropertiesSuggestionState&quot;: { # A mask that indicates which of the fields on the base CropProperties have been changed in this suggestion. For any field set to true, there is a new suggested value. # A mask that indicates which of the fields in crop_properties have been changed in this suggestion.
                    &quot;offsetRightSuggested&quot;: True or False, # Indicates if there was a suggested change to offset_right.
                    &quot;offsetLeftSuggested&quot;: True or False, # Indicates if there was a suggested change to offset_left.
                    &quot;offsetTopSuggested&quot;: True or False, # Indicates if there was a suggested change to offset_top.
                    &quot;angleSuggested&quot;: True or False, # Indicates if there was a suggested change to angle.
                    &quot;offsetBottomSuggested&quot;: True or False, # Indicates if there was a suggested change to offset_bottom.
                  },
                  &quot;sourceUriSuggested&quot;: True or False, # Indicates if there was a suggested change to source_uri.
                },
                &quot;marginTopSuggested&quot;: True or False, # Indicates if there was a suggested change to margin_top.
                &quot;embeddedObjectBorderSuggestionState&quot;: { # A mask that indicates which of the fields on the base EmbeddedObjectBorder have been changed in this suggestion. For any field set to true, there is a new suggested value. # A mask that indicates which of the fields in embedded_object_border have been changed in this suggestion.
                  &quot;colorSuggested&quot;: True or False, # Indicates if there was a suggested change to color.
                  &quot;dashStyleSuggested&quot;: True or False, # Indicates if there was a suggested change to dash_style.
                  &quot;propertyStateSuggested&quot;: True or False, # Indicates if there was a suggested change to property_state.
                  &quot;widthSuggested&quot;: True or False, # Indicates if there was a suggested change to width.
                },
                &quot;descriptionSuggested&quot;: True or False, # Indicates if there was a suggested change to description.
                &quot;linkedContentReferenceSuggestionState&quot;: { # A mask that indicates which of the fields on the base LinkedContentReference have been changed in this suggestion. For any field set to true, there is a new suggested value. # A mask that indicates which of the fields in linked_content_reference have been changed in this suggestion.
                  &quot;sheetsChartReferenceSuggestionState&quot;: { # A mask that indicates which of the fields on the base SheetsChartReference have been changed in this suggestion. For any field set to true, there is a new suggested value. # A mask that indicates which of the fields in sheets_chart_reference have been changed in this suggestion.
                    &quot;chartIdSuggested&quot;: True or False, # Indicates if there was a suggested change to chart_id.
                    &quot;spreadsheetIdSuggested&quot;: True or False, # Indicates if there was a suggested change to spreadsheet_id.
                  },
                },
                &quot;sizeSuggestionState&quot;: { # A mask that indicates which of the fields on the base Size have been changed in this suggestion. For any field set to true, the Size has a new suggested value. # A mask that indicates which of the fields in size have been changed in this suggestion.
                  &quot;heightSuggested&quot;: True or False, # Indicates if there was a suggested change to height.
                  &quot;widthSuggested&quot;: True or False, # Indicates if there was a suggested change to width.
                },
                &quot;embeddedDrawingPropertiesSuggestionState&quot;: { # A mask that indicates which of the fields on the base EmbeddedDrawingProperties have been changed in this suggestion. For any field set to true, there is a new suggested value. # A mask that indicates which of the fields in embedded_drawing_properties have been changed in this suggestion.
                },
                &quot;marginRightSuggested&quot;: True or False, # Indicates if there was a suggested change to margin_right.
                &quot;marginLeftSuggested&quot;: True or False, # Indicates if there was a suggested change to margin_left.
              },
            },
          },
        },
        &quot;inlineObjectProperties&quot;: { # Properties of an InlineObject. # The properties of this inline object.
          &quot;embeddedObject&quot;: { # An embedded object in the document. # The embedded object of this inline object.
            &quot;linkedContentReference&quot;: { # A reference to the external linked source content. # A reference to the external linked source content. For example, it contains a reference to the source Sheets chart when the embedded object is a linked chart. If unset, then the embedded object is not linked.
              &quot;sheetsChartReference&quot;: { # A reference to a linked chart embedded from Google Sheets. # A reference to the linked chart.
                &quot;chartId&quot;: 42, # The ID of the specific chart in the Google Sheets spreadsheet that is embedded.
                &quot;spreadsheetId&quot;: &quot;A String&quot;, # The ID of the Google Sheets spreadsheet that contains the source chart.
              },
            },
            &quot;imageProperties&quot;: { # The properties of an image. # The properties of an image.
              &quot;transparency&quot;: 3.14, # The transparency effect of the image. The value should be in the interval [0.0, 1.0], where 0 means no effect and 1 means completely transparent.
              &quot;angle&quot;: 3.14, # The clockwise rotation angle of the image, in radians.
              &quot;contrast&quot;: 3.14, # The contrast effect of the image. The value should be in the interval [-1.0, 1.0], where 0 means no effect.
              &quot;brightness&quot;: 3.14, # The brightness effect of the image. The value should be in the interval [-1.0, 1.0], where 0 means no effect.
              &quot;cropProperties&quot;: { # The crop properties of an image. The crop rectangle is represented using fractional offsets from the original content&#x27;s four edges. - If the offset is in the interval (0, 1), the corresponding edge of crop rectangle is positioned inside of the image&#x27;s original bounding rectangle. - If the offset is negative or greater than 1, the corresponding edge of crop rectangle is positioned outside of the image&#x27;s original bounding rectangle. - If all offsets and rotation angle are 0, the image is not cropped. # The crop properties of the image.
                &quot;offsetRight&quot;: 3.14, # The offset specifies how far inwards the right edge of the crop rectangle is from the right edge of the original content as a fraction of the original content&#x27;s width.
                &quot;angle&quot;: 3.14, # The clockwise rotation angle of the crop rectangle around its center, in radians. Rotation is applied after the offsets.
                &quot;offsetBottom&quot;: 3.14, # The offset specifies how far inwards the bottom edge of the crop rectangle is from the bottom edge of the original content as a fraction of the original content&#x27;s height.
                &quot;offsetTop&quot;: 3.14, # The offset specifies how far inwards the top edge of the crop rectangle is from the top edge of the original content as a fraction of the original content&#x27;s height.
                &quot;offsetLeft&quot;: 3.14, # The offset specifies how far inwards the left edge of the crop rectangle is from the left edge of the original content as a fraction of the original content&#x27;s width.
              },
              &quot;contentUri&quot;: &quot;A String&quot;, # A URI to the image with a default lifetime of 30 minutes. This URI is tagged with the account of the requester. Anyone with the URI effectively accesses the image as the original requester. Access to the image may be lost if the document&#x27;s sharing settings change.
              &quot;sourceUri&quot;: &quot;A String&quot;, # The source URI is the URI used to insert the image. The source URI can be empty.
            },
            &quot;marginRight&quot;: { # A magnitude in a single direction in the specified units. # The right margin of the embedded object.
              &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
              &quot;magnitude&quot;: 3.14, # The magnitude.
            },
            &quot;title&quot;: &quot;A String&quot;, # The title of the embedded object. The `title` and `description` are both combined to display alt text.
            &quot;embeddedDrawingProperties&quot;: { # The properties of an embedded drawing. # The properties of an embedded drawing.
            },
            &quot;marginTop&quot;: { # A magnitude in a single direction in the specified units. # The top margin of the embedded object.
              &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
              &quot;magnitude&quot;: 3.14, # The magnitude.
            },
            &quot;description&quot;: &quot;A String&quot;, # The description of the embedded object. The `title` and `description` are both combined to display alt text.
            &quot;marginLeft&quot;: { # A magnitude in a single direction in the specified units. # The left margin of the embedded object.
              &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
              &quot;magnitude&quot;: 3.14, # The magnitude.
            },
            &quot;size&quot;: { # A width and height. # The visible size of the image after cropping.
              &quot;width&quot;: { # A magnitude in a single direction in the specified units. # The width of the object.
                &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                &quot;magnitude&quot;: 3.14, # The magnitude.
              },
              &quot;height&quot;: { # A magnitude in a single direction in the specified units. # The height of the object.
                &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                &quot;magnitude&quot;: 3.14, # The magnitude.
              },
            },
            &quot;embeddedObjectBorder&quot;: { # A border around an EmbeddedObject. # The border of the embedded object.
              &quot;color&quot;: { # A color that can either be fully opaque or fully transparent. # The color of the border.
                &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                  &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                    &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                    &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                    &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                  },
                },
              },
              &quot;width&quot;: { # A magnitude in a single direction in the specified units. # The width of the border.
                &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                &quot;magnitude&quot;: 3.14, # The magnitude.
              },
              &quot;dashStyle&quot;: &quot;A String&quot;, # The dash style of the border.
              &quot;propertyState&quot;: &quot;A String&quot;, # The property state of the border property.
            },
            &quot;marginBottom&quot;: { # A magnitude in a single direction in the specified units. # The bottom margin of the embedded object.
              &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
              &quot;magnitude&quot;: 3.14, # The magnitude.
            },
          },
        },
        &quot;objectId&quot;: &quot;A String&quot;, # The ID of this inline object.
        &quot;suggestedInsertionId&quot;: &quot;A String&quot;, # The suggested insertion ID. If empty, then this is not a suggested insertion.
        &quot;suggestedDeletionIds&quot;: [ # The suggested deletion IDs. If empty, then there are no suggested deletions of this content.
          &quot;A String&quot;,
        ],
      },
    },
    &quot;footers&quot;: { # Output only. The footers in the document, keyed by footer ID.
      &quot;a_key&quot;: { # A document footer.
        &quot;content&quot;: [ # The contents of the footer. The indexes for a footer&#x27;s content begin at zero.
          { # A StructuralElement describes content that provides structure to the document.
            &quot;paragraph&quot;: { # A StructuralElement representing a paragraph. A paragraph is a range of content that is terminated with a newline character. # A paragraph type of structural element.
              &quot;suggestedParagraphStyleChanges&quot;: { # The suggested paragraph style changes to this paragraph, keyed by suggestion ID.
                &quot;a_key&quot;: { # A suggested change to a ParagraphStyle.
                  &quot;paragraphStyle&quot;: { # Styles that apply to a whole paragraph. Inherited paragraph styles are represented as unset fields in this message. A paragraph style&#x27;s parent depends on where the paragraph style is defined: * The ParagraphStyle on a Paragraph inherits from the paragraph&#x27;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 is 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. # A ParagraphStyle that only includes the changes made in this suggestion. This can be used along with the paragraph_suggestion_state to see which fields have changed and their new values.
                    &quot;borderRight&quot;: { # A border around a paragraph. # The border to the right of this paragraph. If unset, the value is inherited from the parent. Paragraph borders cannot be partially updated. When making changes to a paragraph border the new border must be specified in its entirety.
                      &quot;color&quot;: { # A color that can either be fully opaque or fully transparent. # The color of the border.
                        &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                          &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                            &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                            &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                            &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                          },
                        },
                      },
                      &quot;width&quot;: { # A magnitude in a single direction in the specified units. # The width of the border.
                        &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                        &quot;magnitude&quot;: 3.14, # The magnitude.
                      },
                      &quot;padding&quot;: { # A magnitude in a single direction in the specified units. # The padding of the border.
                        &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                        &quot;magnitude&quot;: 3.14, # The magnitude.
                      },
                      &quot;dashStyle&quot;: &quot;A String&quot;, # The dash style of the border.
                    },
                    &quot;indentFirstLine&quot;: { # A magnitude in a single direction in the specified units. # The amount of indentation for the first line of the paragraph. If unset, the value is inherited from the parent.
                      &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                      &quot;magnitude&quot;: 3.14, # The magnitude.
                    },
                    &quot;alignment&quot;: &quot;A String&quot;, # The text alignment for this paragraph.
                    &quot;lineSpacing&quot;: 3.14, # The amount of space between lines, as a percentage of normal, where normal is represented as 100.0. If unset, the value is inherited from the parent.
                    &quot;keepLinesTogether&quot;: True or False, # Whether all lines of the paragraph should be laid out on the same page or column if possible. If unset, the value is inherited from the parent.
                    &quot;avoidWidowAndOrphan&quot;: True or False, # Whether to avoid widows and orphans for the paragraph. If unset, the value is inherited from the parent.
                    &quot;spaceBelow&quot;: { # A magnitude in a single direction in the specified units. # The amount of extra space below the paragraph. If unset, the value is inherited from the parent.
                      &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                      &quot;magnitude&quot;: 3.14, # The magnitude.
                    },
                    &quot;borderBetween&quot;: { # A border around a paragraph. # 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 making changes to a paragraph border the new border must be specified in its entirety.
                      &quot;color&quot;: { # A color that can either be fully opaque or fully transparent. # The color of the border.
                        &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                          &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                            &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                            &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                            &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                          },
                        },
                      },
                      &quot;width&quot;: { # A magnitude in a single direction in the specified units. # The width of the border.
                        &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                        &quot;magnitude&quot;: 3.14, # The magnitude.
                      },
                      &quot;padding&quot;: { # A magnitude in a single direction in the specified units. # The padding of the border.
                        &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                        &quot;magnitude&quot;: 3.14, # The magnitude.
                      },
                      &quot;dashStyle&quot;: &quot;A String&quot;, # The dash style of the border.
                    },
                    &quot;headingId&quot;: &quot;A String&quot;, # The heading ID of the paragraph. If empty, then this paragraph is not a heading. This property is read-only.
                    &quot;spaceAbove&quot;: { # A magnitude in a single direction in the specified units. # The amount of extra space above the paragraph. If unset, the value is inherited from the parent.
                      &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                      &quot;magnitude&quot;: 3.14, # The magnitude.
                    },
                    &quot;direction&quot;: &quot;A String&quot;, # The text direction of this paragraph. If unset, the value defaults to LEFT_TO_RIGHT since paragraph direction is not inherited.
                    &quot;namedStyleType&quot;: &quot;A String&quot;, # The named style type of the paragraph. Since updating the named style type affects other properties within ParagraphStyle, the named style type is applied before the other properties are updated.
                    &quot;tabStops&quot;: [ # A list of the tab stops for this paragraph. The list of tab stops is not inherited. This property is read-only.
                      { # A tab stop within a paragraph.
                        &quot;offset&quot;: { # A magnitude in a single direction in the specified units. # The offset between this tab stop and the start margin.
                          &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                          &quot;magnitude&quot;: 3.14, # The magnitude.
                        },
                        &quot;alignment&quot;: &quot;A String&quot;, # The alignment of this tab stop. If unset, the value defaults to START.
                      },
                    ],
                    &quot;indentStart&quot;: { # A magnitude in a single direction in the specified units. # The amount of indentation for the paragraph on the side that corresponds to the start of the text, based on the current paragraph direction. If unset, the value is inherited from the parent.
                      &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                      &quot;magnitude&quot;: 3.14, # The magnitude.
                    },
                    &quot;keepWithNext&quot;: True or False, # Whether at least a part of this paragraph should be laid out on the same page or column as the next paragraph if possible. If unset, the value is inherited from the parent.
                    &quot;borderTop&quot;: { # A border around a paragraph. # 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 making changes to a paragraph border the new border must be specified in its entirety.
                      &quot;color&quot;: { # A color that can either be fully opaque or fully transparent. # The color of the border.
                        &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                          &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                            &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                            &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                            &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                          },
                        },
                      },
                      &quot;width&quot;: { # A magnitude in a single direction in the specified units. # The width of the border.
                        &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                        &quot;magnitude&quot;: 3.14, # The magnitude.
                      },
                      &quot;padding&quot;: { # A magnitude in a single direction in the specified units. # The padding of the border.
                        &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                        &quot;magnitude&quot;: 3.14, # The magnitude.
                      },
                      &quot;dashStyle&quot;: &quot;A String&quot;, # The dash style of the border.
                    },
                    &quot;borderLeft&quot;: { # A border around a paragraph. # The border to the left of this paragraph. If unset, the value is inherited from the parent. Paragraph borders cannot be partially updated. When making changes to a paragraph border the new border must be specified in its entirety.
                      &quot;color&quot;: { # A color that can either be fully opaque or fully transparent. # The color of the border.
                        &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                          &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                            &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                            &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                            &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                          },
                        },
                      },
                      &quot;width&quot;: { # A magnitude in a single direction in the specified units. # The width of the border.
                        &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                        &quot;magnitude&quot;: 3.14, # The magnitude.
                      },
                      &quot;padding&quot;: { # A magnitude in a single direction in the specified units. # The padding of the border.
                        &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                        &quot;magnitude&quot;: 3.14, # The magnitude.
                      },
                      &quot;dashStyle&quot;: &quot;A String&quot;, # The dash style of the border.
                    },
                    &quot;borderBottom&quot;: { # A border around a paragraph. # 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 making changes to a paragraph border the new border must be specified in its entirety.
                      &quot;color&quot;: { # A color that can either be fully opaque or fully transparent. # The color of the border.
                        &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                          &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                            &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                            &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                            &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                          },
                        },
                      },
                      &quot;width&quot;: { # A magnitude in a single direction in the specified units. # The width of the border.
                        &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                        &quot;magnitude&quot;: 3.14, # The magnitude.
                      },
                      &quot;padding&quot;: { # A magnitude in a single direction in the specified units. # The padding of the border.
                        &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                        &quot;magnitude&quot;: 3.14, # The magnitude.
                      },
                      &quot;dashStyle&quot;: &quot;A String&quot;, # The dash style of the border.
                    },
                    &quot;shading&quot;: { # The shading of a paragraph. # The shading of the paragraph. If unset, the value is inherited from the parent.
                      &quot;backgroundColor&quot;: { # A color that can either be fully opaque or fully transparent. # The background color of this paragraph shading.
                        &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                          &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                            &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                            &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                            &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                          },
                        },
                      },
                    },
                    &quot;indentEnd&quot;: { # A magnitude in a single direction in the specified units. # 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.
                      &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                      &quot;magnitude&quot;: 3.14, # The magnitude.
                    },
                    &quot;spacingMode&quot;: &quot;A String&quot;, # The spacing mode for the paragraph.
                  },
                  &quot;paragraphStyleSuggestionState&quot;: { # A mask that indicates which of the fields on the base ParagraphStyle have been changed in this suggestion. For any field set to true, there is a new suggested value. # A mask that indicates which of the fields on the base ParagraphStyle have been changed in this suggestion.
                    &quot;borderRightSuggested&quot;: True or False, # Indicates if there was a suggested change to border_right.
                    &quot;indentEndSuggested&quot;: True or False, # Indicates if there was a suggested change to indent_end.
                    &quot;lineSpacingSuggested&quot;: True or False, # Indicates if there was a suggested change to line_spacing.
                    &quot;headingIdSuggested&quot;: True or False, # Indicates if there was a suggested change to heading_id.
                    &quot;indentStartSuggested&quot;: True or False, # Indicates if there was a suggested change to indent_start.
                    &quot;keepWithNextSuggested&quot;: True or False, # Indicates if there was a suggested change to keep_with_next.
                    &quot;namedStyleTypeSuggested&quot;: True or False, # Indicates if there was a suggested change to named_style_type.
                    &quot;borderTopSuggested&quot;: True or False, # Indicates if there was a suggested change to border_top.
                    &quot;keepLinesTogetherSuggested&quot;: True or False, # Indicates if there was a suggested change to keep_lines_together.
                    &quot;avoidWidowAndOrphanSuggested&quot;: True or False, # Indicates if there was a suggested change to avoid_widow_and_orphan.
                    &quot;spaceBelowSuggested&quot;: True or False, # Indicates if there was a suggested change to space_below.
                    &quot;indentFirstLineSuggested&quot;: True or False, # Indicates if there was a suggested change to indent_first_line.
                    &quot;shadingSuggestionState&quot;: { # A mask that indicates which of the fields on the base Shading have been changed in this suggested change. For any field set to true, there is a new suggested value. # A mask that indicates which of the fields in shading have been changed in this suggestion.
                      &quot;backgroundColorSuggested&quot;: True or False, # Indicates if there was a suggested change to the Shading.
                    },
                    &quot;directionSuggested&quot;: True or False, # Indicates if there was a suggested change to direction.
                    &quot;borderBetweenSuggested&quot;: True or False, # Indicates if there was a suggested change to border_between.
                    &quot;spaceAboveSuggested&quot;: True or False, # Indicates if there was a suggested change to space_above.
                    &quot;borderLeftSuggested&quot;: True or False, # Indicates if there was a suggested change to border_left.
                    &quot;spacingModeSuggested&quot;: True or False, # Indicates if there was a suggested change to spacing_mode.
                    &quot;borderBottomSuggested&quot;: True or False, # Indicates if there was a suggested change to border_bottom.
                    &quot;alignmentSuggested&quot;: True or False, # Indicates if there was a suggested change to alignment.
                  },
                },
              },
              &quot;bullet&quot;: { # Describes the bullet of a paragraph. # The bullet for this paragraph. If not present, the paragraph does not belong to a list.
                &quot;textStyle&quot;: { # Represents the styling that can be applied to text. Inherited text styles are represented as unset fields in this message. A text style&#x27;s parent depends on where the text style is defined: * The TextStyle of text in a Paragraph inherits from the paragraph&#x27;s corresponding named style type. * The TextStyle on a named style inherits from the normal text named style. * The TextStyle of the normal text named style inherits from the default text style in the Docs editor. * The TextStyle on a Paragraph element that is contained in a table may inherit its text style from the table style. If the text style does not inherit from a parent, unsetting fields will revert the style to a value matching the defaults in the Docs editor. # The paragraph specific text style applied to this bullet.
                  &quot;italic&quot;: True or False, # Whether or not the text is italicized.
                  &quot;baselineOffset&quot;: &quot;A String&quot;, # The text&#x27;s vertical offset from its normal position. Text with `SUPERSCRIPT` or `SUBSCRIPT` baseline offsets is automatically rendered in a smaller font size, computed based on the `font_size` field. The `font_size` itself is not affected by changes in this field.
                  &quot;bold&quot;: True or False, # Whether or not the text is rendered as bold.
                  &quot;fontSize&quot;: { # A magnitude in a single direction in the specified units. # The size of the text&#x27;s font.
                    &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                    &quot;magnitude&quot;: 3.14, # The magnitude.
                  },
                  &quot;foregroundColor&quot;: { # A color that can either be fully opaque or fully transparent. # The foreground color of the text. If set, the color is either an RGB color or transparent, depending on the `color` field.
                    &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                      &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                        &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                        &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                        &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                      },
                    },
                  },
                  &quot;backgroundColor&quot;: { # A color that can either be fully opaque or fully transparent. # The background color of the text. If set, the color is either an RGB color or transparent, depending on the `color` field.
                    &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                      &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                        &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                        &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                        &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                      },
                    },
                  },
                  &quot;link&quot;: { # A reference to another portion of a document or an external URL resource. # The hyperlink destination of the text. If unset, there is no link. Links are not inherited from parent text. Changing the link in an update request causes some other changes to the text style of the range: * When setting a link, the text foreground color will be updated to the default link color and the text will be underlined. If these fields are modified in the same request, those values will be used instead of the link defaults. * Setting a link on a text range that overlaps with an existing link will also update the existing link to point to the new URL. * Links are not settable on newline characters. As a result, setting a link on a text range that crosses a paragraph boundary, such as `&quot;ABC\n123&quot;`, will separate the newline character(s) into their own text runs. The link will be applied separately to the runs before and after the newline. * Removing a link will update the text style of the range to match the style of the preceding text (or the default text styles if the preceding text is another link) unless different styles are being set in the same request.
                    &quot;bookmarkId&quot;: &quot;A String&quot;, # The ID of a bookmark in this document.
                    &quot;url&quot;: &quot;A String&quot;, # An external URL.
                    &quot;headingId&quot;: &quot;A String&quot;, # The ID of a heading in this document.
                  },
                  &quot;strikethrough&quot;: True or False, # Whether or not the text is struck through.
                  &quot;weightedFontFamily&quot;: { # Represents a font family and weight of text. # The font family and rendered weight of the text. If an update request specifies values for both `weighted_font_family` and `bold`, the `weighted_font_family` is applied first, then `bold`. If `weighted_font_family#weight` is not set, it defaults to `400`. If `weighted_font_family` is set, then `weighted_font_family#font_family` must also be set with a non-empty value. Otherwise, a 400 bad request error is returned.
                    &quot;fontFamily&quot;: &quot;A String&quot;, # The font family of the text. The font family can be any font from the Font menu in Docs or from [Google Fonts] (https://fonts.google.com/). If the font name is unrecognized, the text is rendered in `Arial`.
                    &quot;weight&quot;: 42, # The weight of the font. This field can have any value that is a multiple of `100` between `100` and `900`, inclusive. This range corresponds to the numerical values described in the CSS 2.1 Specification, [section 15.6](https://www.w3.org/TR/CSS21/fonts.html#font-boldness), with non-numerical values disallowed. The default value is `400` (&quot;normal&quot;). The font weight makes up just one component of the rendered font weight. The rendered weight is determined by a combination of the `weight` and the text style&#x27;s resolved `bold` value, after accounting for inheritance: * If the text is bold and the weight is less than `400`, the rendered weight is 400. * If the text is bold and the weight is greater than or equal to `400` but is less than `700`, the rendered weight is `700`. * If the weight is greater than or equal to `700`, the rendered weight is equal to the weight. * If the text is not bold, the rendered weight is equal to the weight.
                  },
                  &quot;underline&quot;: True or False, # Whether or not the text is underlined.
                  &quot;smallCaps&quot;: True or False, # Whether or not the text is in small capital letters.
                },
                &quot;nestingLevel&quot;: 42, # The nesting level of this paragraph in the list.
                &quot;listId&quot;: &quot;A String&quot;, # The ID of the list this paragraph belongs to.
              },
              &quot;suggestedBulletChanges&quot;: { # The suggested changes to this paragraph&#x27;s bullet.
                &quot;a_key&quot;: { # A suggested change to a Bullet.
                  &quot;bulletSuggestionState&quot;: { # A mask that indicates which of the fields on the base Bullet have been changed in this suggestion. For any field set to true, there is a new suggested value. # A mask that indicates which of the fields on the base Bullet have been changed in this suggestion.
                    &quot;nestingLevelSuggested&quot;: True or False, # Indicates if there was a suggested change to the nesting_level.
                    &quot;textStyleSuggestionState&quot;: { # A mask that indicates which of the fields on the base TextStyle have been changed in this suggestion. For any field set to true, there is a new suggested value. # A mask that indicates which of the fields in text style have been changed in this suggestion.
                      &quot;backgroundColorSuggested&quot;: True or False, # Indicates if there was a suggested change to background_color.
                      &quot;fontSizeSuggested&quot;: True or False, # Indicates if there was a suggested change to font_size.
                      &quot;boldSuggested&quot;: True or False, # Indicates if there was a suggested change to bold.
                      &quot;baselineOffsetSuggested&quot;: True or False, # Indicates if there was a suggested change to baseline_offset.
                      &quot;foregroundColorSuggested&quot;: True or False, # Indicates if there was a suggested change to foreground_color.
                      &quot;italicSuggested&quot;: True or False, # Indicates if there was a suggested change to italic.
                      &quot;linkSuggested&quot;: True or False, # Indicates if there was a suggested change to link.
                      &quot;underlineSuggested&quot;: True or False, # Indicates if there was a suggested change to underline.
                      &quot;weightedFontFamilySuggested&quot;: True or False, # Indicates if there was a suggested change to weighted_font_family.
                      &quot;smallCapsSuggested&quot;: True or False, # Indicates if there was a suggested change to small_caps.
                      &quot;strikethroughSuggested&quot;: True or False, # Indicates if there was a suggested change to strikethrough.
                    },
                    &quot;listIdSuggested&quot;: True or False, # Indicates if there was a suggested change to the list_id.
                  },
                  &quot;bullet&quot;: { # Describes the bullet of a paragraph. # A Bullet that only includes the changes made in this suggestion. This can be used along with the bullet_suggestion_state to see which fields have changed and their new values.
                    &quot;textStyle&quot;: { # Represents the styling that can be applied to text. Inherited text styles are represented as unset fields in this message. A text style&#x27;s parent depends on where the text style is defined: * The TextStyle of text in a Paragraph inherits from the paragraph&#x27;s corresponding named style type. * The TextStyle on a named style inherits from the normal text named style. * The TextStyle of the normal text named style inherits from the default text style in the Docs editor. * The TextStyle on a Paragraph element that is contained in a table may inherit its text style from the table style. If the text style does not inherit from a parent, unsetting fields will revert the style to a value matching the defaults in the Docs editor. # The paragraph specific text style applied to this bullet.
                      &quot;italic&quot;: True or False, # Whether or not the text is italicized.
                      &quot;baselineOffset&quot;: &quot;A String&quot;, # The text&#x27;s vertical offset from its normal position. Text with `SUPERSCRIPT` or `SUBSCRIPT` baseline offsets is automatically rendered in a smaller font size, computed based on the `font_size` field. The `font_size` itself is not affected by changes in this field.
                      &quot;bold&quot;: True or False, # Whether or not the text is rendered as bold.
                      &quot;fontSize&quot;: { # A magnitude in a single direction in the specified units. # The size of the text&#x27;s font.
                        &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                        &quot;magnitude&quot;: 3.14, # The magnitude.
                      },
                      &quot;foregroundColor&quot;: { # A color that can either be fully opaque or fully transparent. # The foreground color of the text. If set, the color is either an RGB color or transparent, depending on the `color` field.
                        &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                          &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                            &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                            &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                            &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                          },
                        },
                      },
                      &quot;backgroundColor&quot;: { # A color that can either be fully opaque or fully transparent. # The background color of the text. If set, the color is either an RGB color or transparent, depending on the `color` field.
                        &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                          &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                            &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                            &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                            &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                          },
                        },
                      },
                      &quot;link&quot;: { # A reference to another portion of a document or an external URL resource. # The hyperlink destination of the text. If unset, there is no link. Links are not inherited from parent text. Changing the link in an update request causes some other changes to the text style of the range: * When setting a link, the text foreground color will be updated to the default link color and the text will be underlined. If these fields are modified in the same request, those values will be used instead of the link defaults. * Setting a link on a text range that overlaps with an existing link will also update the existing link to point to the new URL. * Links are not settable on newline characters. As a result, setting a link on a text range that crosses a paragraph boundary, such as `&quot;ABC\n123&quot;`, will separate the newline character(s) into their own text runs. The link will be applied separately to the runs before and after the newline. * Removing a link will update the text style of the range to match the style of the preceding text (or the default text styles if the preceding text is another link) unless different styles are being set in the same request.
                        &quot;bookmarkId&quot;: &quot;A String&quot;, # The ID of a bookmark in this document.
                        &quot;url&quot;: &quot;A String&quot;, # An external URL.
                        &quot;headingId&quot;: &quot;A String&quot;, # The ID of a heading in this document.
                      },
                      &quot;strikethrough&quot;: True or False, # Whether or not the text is struck through.
                      &quot;weightedFontFamily&quot;: { # Represents a font family and weight of text. # The font family and rendered weight of the text. If an update request specifies values for both `weighted_font_family` and `bold`, the `weighted_font_family` is applied first, then `bold`. If `weighted_font_family#weight` is not set, it defaults to `400`. If `weighted_font_family` is set, then `weighted_font_family#font_family` must also be set with a non-empty value. Otherwise, a 400 bad request error is returned.
                        &quot;fontFamily&quot;: &quot;A String&quot;, # The font family of the text. The font family can be any font from the Font menu in Docs or from [Google Fonts] (https://fonts.google.com/). If the font name is unrecognized, the text is rendered in `Arial`.
                        &quot;weight&quot;: 42, # The weight of the font. This field can have any value that is a multiple of `100` between `100` and `900`, inclusive. This range corresponds to the numerical values described in the CSS 2.1 Specification, [section 15.6](https://www.w3.org/TR/CSS21/fonts.html#font-boldness), with non-numerical values disallowed. The default value is `400` (&quot;normal&quot;). The font weight makes up just one component of the rendered font weight. The rendered weight is determined by a combination of the `weight` and the text style&#x27;s resolved `bold` value, after accounting for inheritance: * If the text is bold and the weight is less than `400`, the rendered weight is 400. * If the text is bold and the weight is greater than or equal to `400` but is less than `700`, the rendered weight is `700`. * If the weight is greater than or equal to `700`, the rendered weight is equal to the weight. * If the text is not bold, the rendered weight is equal to the weight.
                      },
                      &quot;underline&quot;: True or False, # Whether or not the text is underlined.
                      &quot;smallCaps&quot;: True or False, # Whether or not the text is in small capital letters.
                    },
                    &quot;nestingLevel&quot;: 42, # The nesting level of this paragraph in the list.
                    &quot;listId&quot;: &quot;A String&quot;, # The ID of the list this paragraph belongs to.
                  },
                },
              },
              &quot;suggestedPositionedObjectIds&quot;: { # The IDs of the positioned objects that are suggested to be attached to this paragraph, keyed by suggestion ID.
                &quot;a_key&quot;: { # A collection of object IDs.
                  &quot;objectIds&quot;: [ # The object IDs.
                    &quot;A String&quot;,
                  ],
                },
              },
              &quot;elements&quot;: [ # The content of the paragraph broken down into its component parts.
                { # A ParagraphElement describes content within a Paragraph.
                  &quot;textRun&quot;: { # A ParagraphElement that represents a run of text that all has the same styling. # A text run paragraph element.
                    &quot;suggestedInsertionIds&quot;: [ # The suggested insertion IDs. A TextRun may have multiple insertion IDs if it is a nested suggested change. If empty, then this is not a suggested insertion.
                      &quot;A String&quot;,
                    ],
                    &quot;content&quot;: &quot;A String&quot;, # The text of this run. Any non-text elements in the run are replaced with the Unicode character U+E907.
                    &quot;textStyle&quot;: { # Represents the styling that can be applied to text. Inherited text styles are represented as unset fields in this message. A text style&#x27;s parent depends on where the text style is defined: * The TextStyle of text in a Paragraph inherits from the paragraph&#x27;s corresponding named style type. * The TextStyle on a named style inherits from the normal text named style. * The TextStyle of the normal text named style inherits from the default text style in the Docs editor. * The TextStyle on a Paragraph element that is contained in a table may inherit its text style from the table style. If the text style does not inherit from a parent, unsetting fields will revert the style to a value matching the defaults in the Docs editor. # The text style of this run.
                      &quot;italic&quot;: True or False, # Whether or not the text is italicized.
                      &quot;baselineOffset&quot;: &quot;A String&quot;, # The text&#x27;s vertical offset from its normal position. Text with `SUPERSCRIPT` or `SUBSCRIPT` baseline offsets is automatically rendered in a smaller font size, computed based on the `font_size` field. The `font_size` itself is not affected by changes in this field.
                      &quot;bold&quot;: True or False, # Whether or not the text is rendered as bold.
                      &quot;fontSize&quot;: { # A magnitude in a single direction in the specified units. # The size of the text&#x27;s font.
                        &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                        &quot;magnitude&quot;: 3.14, # The magnitude.
                      },
                      &quot;foregroundColor&quot;: { # A color that can either be fully opaque or fully transparent. # The foreground color of the text. If set, the color is either an RGB color or transparent, depending on the `color` field.
                        &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                          &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                            &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                            &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                            &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                          },
                        },
                      },
                      &quot;backgroundColor&quot;: { # A color that can either be fully opaque or fully transparent. # The background color of the text. If set, the color is either an RGB color or transparent, depending on the `color` field.
                        &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                          &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                            &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                            &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                            &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                          },
                        },
                      },
                      &quot;link&quot;: { # A reference to another portion of a document or an external URL resource. # The hyperlink destination of the text. If unset, there is no link. Links are not inherited from parent text. Changing the link in an update request causes some other changes to the text style of the range: * When setting a link, the text foreground color will be updated to the default link color and the text will be underlined. If these fields are modified in the same request, those values will be used instead of the link defaults. * Setting a link on a text range that overlaps with an existing link will also update the existing link to point to the new URL. * Links are not settable on newline characters. As a result, setting a link on a text range that crosses a paragraph boundary, such as `&quot;ABC\n123&quot;`, will separate the newline character(s) into their own text runs. The link will be applied separately to the runs before and after the newline. * Removing a link will update the text style of the range to match the style of the preceding text (or the default text styles if the preceding text is another link) unless different styles are being set in the same request.
                        &quot;bookmarkId&quot;: &quot;A String&quot;, # The ID of a bookmark in this document.
                        &quot;url&quot;: &quot;A String&quot;, # An external URL.
                        &quot;headingId&quot;: &quot;A String&quot;, # The ID of a heading in this document.
                      },
                      &quot;strikethrough&quot;: True or False, # Whether or not the text is struck through.
                      &quot;weightedFontFamily&quot;: { # Represents a font family and weight of text. # The font family and rendered weight of the text. If an update request specifies values for both `weighted_font_family` and `bold`, the `weighted_font_family` is applied first, then `bold`. If `weighted_font_family#weight` is not set, it defaults to `400`. If `weighted_font_family` is set, then `weighted_font_family#font_family` must also be set with a non-empty value. Otherwise, a 400 bad request error is returned.
                        &quot;fontFamily&quot;: &quot;A String&quot;, # The font family of the text. The font family can be any font from the Font menu in Docs or from [Google Fonts] (https://fonts.google.com/). If the font name is unrecognized, the text is rendered in `Arial`.
                        &quot;weight&quot;: 42, # The weight of the font. This field can have any value that is a multiple of `100` between `100` and `900`, inclusive. This range corresponds to the numerical values described in the CSS 2.1 Specification, [section 15.6](https://www.w3.org/TR/CSS21/fonts.html#font-boldness), with non-numerical values disallowed. The default value is `400` (&quot;normal&quot;). The font weight makes up just one component of the rendered font weight. The rendered weight is determined by a combination of the `weight` and the text style&#x27;s resolved `bold` value, after accounting for inheritance: * If the text is bold and the weight is less than `400`, the rendered weight is 400. * If the text is bold and the weight is greater than or equal to `400` but is less than `700`, the rendered weight is `700`. * If the weight is greater than or equal to `700`, the rendered weight is equal to the weight. * If the text is not bold, the rendered weight is equal to the weight.
                      },
                      &quot;underline&quot;: True or False, # Whether or not the text is underlined.
                      &quot;smallCaps&quot;: True or False, # Whether or not the text is in small capital letters.
                    },
                    &quot;suggestedTextStyleChanges&quot;: { # The suggested text style changes to this run, keyed by suggestion ID.
                      &quot;a_key&quot;: { # A suggested change to a TextStyle.
                        &quot;textStyleSuggestionState&quot;: { # A mask that indicates which of the fields on the base TextStyle have been changed in this suggestion. For any field set to true, there is a new suggested value. # A mask that indicates which of the fields on the base TextStyle have been changed in this suggestion.
                          &quot;backgroundColorSuggested&quot;: True or False, # Indicates if there was a suggested change to background_color.
                          &quot;fontSizeSuggested&quot;: True or False, # Indicates if there was a suggested change to font_size.
                          &quot;boldSuggested&quot;: True or False, # Indicates if there was a suggested change to bold.
                          &quot;baselineOffsetSuggested&quot;: True or False, # Indicates if there was a suggested change to baseline_offset.
                          &quot;foregroundColorSuggested&quot;: True or False, # Indicates if there was a suggested change to foreground_color.
                          &quot;italicSuggested&quot;: True or False, # Indicates if there was a suggested change to italic.
                          &quot;linkSuggested&quot;: True or False, # Indicates if there was a suggested change to link.
                          &quot;underlineSuggested&quot;: True or False, # Indicates if there was a suggested change to underline.
                          &quot;weightedFontFamilySuggested&quot;: True or False, # Indicates if there was a suggested change to weighted_font_family.
                          &quot;smallCapsSuggested&quot;: True or False, # Indicates if there was a suggested change to small_caps.
                          &quot;strikethroughSuggested&quot;: True or False, # Indicates if there was a suggested change to strikethrough.
                        },
                        &quot;textStyle&quot;: { # Represents the styling that can be applied to text. Inherited text styles are represented as unset fields in this message. A text style&#x27;s parent depends on where the text style is defined: * The TextStyle of text in a Paragraph inherits from the paragraph&#x27;s corresponding named style type. * The TextStyle on a named style inherits from the normal text named style. * The TextStyle of the normal text named style inherits from the default text style in the Docs editor. * The TextStyle on a Paragraph element that is contained in a table may inherit its text style from the table style. If the text style does not inherit from a parent, unsetting fields will revert the style to a value matching the defaults in the Docs editor. # A TextStyle that only includes the changes made in this suggestion. This can be used along with the text_style_suggestion_state to see which fields have changed and their new values.
                          &quot;italic&quot;: True or False, # Whether or not the text is italicized.
                          &quot;baselineOffset&quot;: &quot;A String&quot;, # The text&#x27;s vertical offset from its normal position. Text with `SUPERSCRIPT` or `SUBSCRIPT` baseline offsets is automatically rendered in a smaller font size, computed based on the `font_size` field. The `font_size` itself is not affected by changes in this field.
                          &quot;bold&quot;: True or False, # Whether or not the text is rendered as bold.
                          &quot;fontSize&quot;: { # A magnitude in a single direction in the specified units. # The size of the text&#x27;s font.
                            &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                            &quot;magnitude&quot;: 3.14, # The magnitude.
                          },
                          &quot;foregroundColor&quot;: { # A color that can either be fully opaque or fully transparent. # The foreground color of the text. If set, the color is either an RGB color or transparent, depending on the `color` field.
                            &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                              &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                                &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                                &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                                &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                              },
                            },
                          },
                          &quot;backgroundColor&quot;: { # A color that can either be fully opaque or fully transparent. # The background color of the text. If set, the color is either an RGB color or transparent, depending on the `color` field.
                            &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                              &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                                &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                                &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                                &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                              },
                            },
                          },
                          &quot;link&quot;: { # A reference to another portion of a document or an external URL resource. # The hyperlink destination of the text. If unset, there is no link. Links are not inherited from parent text. Changing the link in an update request causes some other changes to the text style of the range: * When setting a link, the text foreground color will be updated to the default link color and the text will be underlined. If these fields are modified in the same request, those values will be used instead of the link defaults. * Setting a link on a text range that overlaps with an existing link will also update the existing link to point to the new URL. * Links are not settable on newline characters. As a result, setting a link on a text range that crosses a paragraph boundary, such as `&quot;ABC\n123&quot;`, will separate the newline character(s) into their own text runs. The link will be applied separately to the runs before and after the newline. * Removing a link will update the text style of the range to match the style of the preceding text (or the default text styles if the preceding text is another link) unless different styles are being set in the same request.
                            &quot;bookmarkId&quot;: &quot;A String&quot;, # The ID of a bookmark in this document.
                            &quot;url&quot;: &quot;A String&quot;, # An external URL.
                            &quot;headingId&quot;: &quot;A String&quot;, # The ID of a heading in this document.
                          },
                          &quot;strikethrough&quot;: True or False, # Whether or not the text is struck through.
                          &quot;weightedFontFamily&quot;: { # Represents a font family and weight of text. # The font family and rendered weight of the text. If an update request specifies values for both `weighted_font_family` and `bold`, the `weighted_font_family` is applied first, then `bold`. If `weighted_font_family#weight` is not set, it defaults to `400`. If `weighted_font_family` is set, then `weighted_font_family#font_family` must also be set with a non-empty value. Otherwise, a 400 bad request error is returned.
                            &quot;fontFamily&quot;: &quot;A String&quot;, # The font family of the text. The font family can be any font from the Font menu in Docs or from [Google Fonts] (https://fonts.google.com/). If the font name is unrecognized, the text is rendered in `Arial`.
                            &quot;weight&quot;: 42, # The weight of the font. This field can have any value that is a multiple of `100` between `100` and `900`, inclusive. This range corresponds to the numerical values described in the CSS 2.1 Specification, [section 15.6](https://www.w3.org/TR/CSS21/fonts.html#font-boldness), with non-numerical values disallowed. The default value is `400` (&quot;normal&quot;). The font weight makes up just one component of the rendered font weight. The rendered weight is determined by a combination of the `weight` and the text style&#x27;s resolved `bold` value, after accounting for inheritance: * If the text is bold and the weight is less than `400`, the rendered weight is 400. * If the text is bold and the weight is greater than or equal to `400` but is less than `700`, the rendered weight is `700`. * If the weight is greater than or equal to `700`, the rendered weight is equal to the weight. * If the text is not bold, the rendered weight is equal to the weight.
                          },
                          &quot;underline&quot;: True or False, # Whether or not the text is underlined.
                          &quot;smallCaps&quot;: True or False, # Whether or not the text is in small capital letters.
                        },
                      },
                    },
                    &quot;suggestedDeletionIds&quot;: [ # The suggested deletion IDs. If empty, then there are no suggested deletions of this content.
                      &quot;A String&quot;,
                    ],
                  },
                  &quot;pageBreak&quot;: { # A ParagraphElement representing a page break. A page break makes the subsequent text start at the top of the next page. # A page break paragraph element.
                    &quot;suggestedInsertionIds&quot;: [ # The suggested insertion IDs. A PageBreak may have multiple insertion IDs if it is a nested suggested change. If empty, then this is not a suggested insertion.
                      &quot;A String&quot;,
                    ],
                    &quot;textStyle&quot;: { # Represents the styling that can be applied to text. Inherited text styles are represented as unset fields in this message. A text style&#x27;s parent depends on where the text style is defined: * The TextStyle of text in a Paragraph inherits from the paragraph&#x27;s corresponding named style type. * The TextStyle on a named style inherits from the normal text named style. * The TextStyle of the normal text named style inherits from the default text style in the Docs editor. * The TextStyle on a Paragraph element that is contained in a table may inherit its text style from the table style. If the text style does not inherit from a parent, unsetting fields will revert the style to a value matching the defaults in the Docs editor. # The text style of this PageBreak. Similar to text content, like text runs and footnote references, the text style of a page break can affect content layout as well as the styling of text inserted adjacent to it.
                      &quot;italic&quot;: True or False, # Whether or not the text is italicized.
                      &quot;baselineOffset&quot;: &quot;A String&quot;, # The text&#x27;s vertical offset from its normal position. Text with `SUPERSCRIPT` or `SUBSCRIPT` baseline offsets is automatically rendered in a smaller font size, computed based on the `font_size` field. The `font_size` itself is not affected by changes in this field.
                      &quot;bold&quot;: True or False, # Whether or not the text is rendered as bold.
                      &quot;fontSize&quot;: { # A magnitude in a single direction in the specified units. # The size of the text&#x27;s font.
                        &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                        &quot;magnitude&quot;: 3.14, # The magnitude.
                      },
                      &quot;foregroundColor&quot;: { # A color that can either be fully opaque or fully transparent. # The foreground color of the text. If set, the color is either an RGB color or transparent, depending on the `color` field.
                        &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                          &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                            &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                            &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                            &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                          },
                        },
                      },
                      &quot;backgroundColor&quot;: { # A color that can either be fully opaque or fully transparent. # The background color of the text. If set, the color is either an RGB color or transparent, depending on the `color` field.
                        &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                          &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                            &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                            &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                            &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                          },
                        },
                      },
                      &quot;link&quot;: { # A reference to another portion of a document or an external URL resource. # The hyperlink destination of the text. If unset, there is no link. Links are not inherited from parent text. Changing the link in an update request causes some other changes to the text style of the range: * When setting a link, the text foreground color will be updated to the default link color and the text will be underlined. If these fields are modified in the same request, those values will be used instead of the link defaults. * Setting a link on a text range that overlaps with an existing link will also update the existing link to point to the new URL. * Links are not settable on newline characters. As a result, setting a link on a text range that crosses a paragraph boundary, such as `&quot;ABC\n123&quot;`, will separate the newline character(s) into their own text runs. The link will be applied separately to the runs before and after the newline. * Removing a link will update the text style of the range to match the style of the preceding text (or the default text styles if the preceding text is another link) unless different styles are being set in the same request.
                        &quot;bookmarkId&quot;: &quot;A String&quot;, # The ID of a bookmark in this document.
                        &quot;url&quot;: &quot;A String&quot;, # An external URL.
                        &quot;headingId&quot;: &quot;A String&quot;, # The ID of a heading in this document.
                      },
                      &quot;strikethrough&quot;: True or False, # Whether or not the text is struck through.
                      &quot;weightedFontFamily&quot;: { # Represents a font family and weight of text. # The font family and rendered weight of the text. If an update request specifies values for both `weighted_font_family` and `bold`, the `weighted_font_family` is applied first, then `bold`. If `weighted_font_family#weight` is not set, it defaults to `400`. If `weighted_font_family` is set, then `weighted_font_family#font_family` must also be set with a non-empty value. Otherwise, a 400 bad request error is returned.
                        &quot;fontFamily&quot;: &quot;A String&quot;, # The font family of the text. The font family can be any font from the Font menu in Docs or from [Google Fonts] (https://fonts.google.com/). If the font name is unrecognized, the text is rendered in `Arial`.
                        &quot;weight&quot;: 42, # The weight of the font. This field can have any value that is a multiple of `100` between `100` and `900`, inclusive. This range corresponds to the numerical values described in the CSS 2.1 Specification, [section 15.6](https://www.w3.org/TR/CSS21/fonts.html#font-boldness), with non-numerical values disallowed. The default value is `400` (&quot;normal&quot;). The font weight makes up just one component of the rendered font weight. The rendered weight is determined by a combination of the `weight` and the text style&#x27;s resolved `bold` value, after accounting for inheritance: * If the text is bold and the weight is less than `400`, the rendered weight is 400. * If the text is bold and the weight is greater than or equal to `400` but is less than `700`, the rendered weight is `700`. * If the weight is greater than or equal to `700`, the rendered weight is equal to the weight. * If the text is not bold, the rendered weight is equal to the weight.
                      },
                      &quot;underline&quot;: True or False, # Whether or not the text is underlined.
                      &quot;smallCaps&quot;: True or False, # Whether or not the text is in small capital letters.
                    },
                    &quot;suggestedTextStyleChanges&quot;: { # The suggested text style changes to this PageBreak, keyed by suggestion ID.
                      &quot;a_key&quot;: { # A suggested change to a TextStyle.
                        &quot;textStyleSuggestionState&quot;: { # A mask that indicates which of the fields on the base TextStyle have been changed in this suggestion. For any field set to true, there is a new suggested value. # A mask that indicates which of the fields on the base TextStyle have been changed in this suggestion.
                          &quot;backgroundColorSuggested&quot;: True or False, # Indicates if there was a suggested change to background_color.
                          &quot;fontSizeSuggested&quot;: True or False, # Indicates if there was a suggested change to font_size.
                          &quot;boldSuggested&quot;: True or False, # Indicates if there was a suggested change to bold.
                          &quot;baselineOffsetSuggested&quot;: True or False, # Indicates if there was a suggested change to baseline_offset.
                          &quot;foregroundColorSuggested&quot;: True or False, # Indicates if there was a suggested change to foreground_color.
                          &quot;italicSuggested&quot;: True or False, # Indicates if there was a suggested change to italic.
                          &quot;linkSuggested&quot;: True or False, # Indicates if there was a suggested change to link.
                          &quot;underlineSuggested&quot;: True or False, # Indicates if there was a suggested change to underline.
                          &quot;weightedFontFamilySuggested&quot;: True or False, # Indicates if there was a suggested change to weighted_font_family.
                          &quot;smallCapsSuggested&quot;: True or False, # Indicates if there was a suggested change to small_caps.
                          &quot;strikethroughSuggested&quot;: True or False, # Indicates if there was a suggested change to strikethrough.
                        },
                        &quot;textStyle&quot;: { # Represents the styling that can be applied to text. Inherited text styles are represented as unset fields in this message. A text style&#x27;s parent depends on where the text style is defined: * The TextStyle of text in a Paragraph inherits from the paragraph&#x27;s corresponding named style type. * The TextStyle on a named style inherits from the normal text named style. * The TextStyle of the normal text named style inherits from the default text style in the Docs editor. * The TextStyle on a Paragraph element that is contained in a table may inherit its text style from the table style. If the text style does not inherit from a parent, unsetting fields will revert the style to a value matching the defaults in the Docs editor. # A TextStyle that only includes the changes made in this suggestion. This can be used along with the text_style_suggestion_state to see which fields have changed and their new values.
                          &quot;italic&quot;: True or False, # Whether or not the text is italicized.
                          &quot;baselineOffset&quot;: &quot;A String&quot;, # The text&#x27;s vertical offset from its normal position. Text with `SUPERSCRIPT` or `SUBSCRIPT` baseline offsets is automatically rendered in a smaller font size, computed based on the `font_size` field. The `font_size` itself is not affected by changes in this field.
                          &quot;bold&quot;: True or False, # Whether or not the text is rendered as bold.
                          &quot;fontSize&quot;: { # A magnitude in a single direction in the specified units. # The size of the text&#x27;s font.
                            &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                            &quot;magnitude&quot;: 3.14, # The magnitude.
                          },
                          &quot;foregroundColor&quot;: { # A color that can either be fully opaque or fully transparent. # The foreground color of the text. If set, the color is either an RGB color or transparent, depending on the `color` field.
                            &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                              &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                                &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                                &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                                &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                              },
                            },
                          },
                          &quot;backgroundColor&quot;: { # A color that can either be fully opaque or fully transparent. # The background color of the text. If set, the color is either an RGB color or transparent, depending on the `color` field.
                            &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                              &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                                &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                                &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                                &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                              },
                            },
                          },
                          &quot;link&quot;: { # A reference to another portion of a document or an external URL resource. # The hyperlink destination of the text. If unset, there is no link. Links are not inherited from parent text. Changing the link in an update request causes some other changes to the text style of the range: * When setting a link, the text foreground color will be updated to the default link color and the text will be underlined. If these fields are modified in the same request, those values will be used instead of the link defaults. * Setting a link on a text range that overlaps with an existing link will also update the existing link to point to the new URL. * Links are not settable on newline characters. As a result, setting a link on a text range that crosses a paragraph boundary, such as `&quot;ABC\n123&quot;`, will separate the newline character(s) into their own text runs. The link will be applied separately to the runs before and after the newline. * Removing a link will update the text style of the range to match the style of the preceding text (or the default text styles if the preceding text is another link) unless different styles are being set in the same request.
                            &quot;bookmarkId&quot;: &quot;A String&quot;, # The ID of a bookmark in this document.
                            &quot;url&quot;: &quot;A String&quot;, # An external URL.
                            &quot;headingId&quot;: &quot;A String&quot;, # The ID of a heading in this document.
                          },
                          &quot;strikethrough&quot;: True or False, # Whether or not the text is struck through.
                          &quot;weightedFontFamily&quot;: { # Represents a font family and weight of text. # The font family and rendered weight of the text. If an update request specifies values for both `weighted_font_family` and `bold`, the `weighted_font_family` is applied first, then `bold`. If `weighted_font_family#weight` is not set, it defaults to `400`. If `weighted_font_family` is set, then `weighted_font_family#font_family` must also be set with a non-empty value. Otherwise, a 400 bad request error is returned.
                            &quot;fontFamily&quot;: &quot;A String&quot;, # The font family of the text. The font family can be any font from the Font menu in Docs or from [Google Fonts] (https://fonts.google.com/). If the font name is unrecognized, the text is rendered in `Arial`.
                            &quot;weight&quot;: 42, # The weight of the font. This field can have any value that is a multiple of `100` between `100` and `900`, inclusive. This range corresponds to the numerical values described in the CSS 2.1 Specification, [section 15.6](https://www.w3.org/TR/CSS21/fonts.html#font-boldness), with non-numerical values disallowed. The default value is `400` (&quot;normal&quot;). The font weight makes up just one component of the rendered font weight. The rendered weight is determined by a combination of the `weight` and the text style&#x27;s resolved `bold` value, after accounting for inheritance: * If the text is bold and the weight is less than `400`, the rendered weight is 400. * If the text is bold and the weight is greater than or equal to `400` but is less than `700`, the rendered weight is `700`. * If the weight is greater than or equal to `700`, the rendered weight is equal to the weight. * If the text is not bold, the rendered weight is equal to the weight.
                          },
                          &quot;underline&quot;: True or False, # Whether or not the text is underlined.
                          &quot;smallCaps&quot;: True or False, # Whether or not the text is in small capital letters.
                        },
                      },
                    },
                    &quot;suggestedDeletionIds&quot;: [ # The suggested deletion IDs. If empty, then there are no suggested deletions of this content.
                      &quot;A String&quot;,
                    ],
                  },
                  &quot;horizontalRule&quot;: { # A ParagraphElement representing a horizontal line. # A horizontal rule paragraph element.
                    &quot;suggestedInsertionIds&quot;: [ # The suggested insertion IDs. A HorizontalRule may have multiple insertion IDs if it is a nested suggested change. If empty, then this is not a suggested insertion.
                      &quot;A String&quot;,
                    ],
                    &quot;suggestedTextStyleChanges&quot;: { # The suggested text style changes to this HorizontalRule, keyed by suggestion ID.
                      &quot;a_key&quot;: { # A suggested change to a TextStyle.
                        &quot;textStyleSuggestionState&quot;: { # A mask that indicates which of the fields on the base TextStyle have been changed in this suggestion. For any field set to true, there is a new suggested value. # A mask that indicates which of the fields on the base TextStyle have been changed in this suggestion.
                          &quot;backgroundColorSuggested&quot;: True or False, # Indicates if there was a suggested change to background_color.
                          &quot;fontSizeSuggested&quot;: True or False, # Indicates if there was a suggested change to font_size.
                          &quot;boldSuggested&quot;: True or False, # Indicates if there was a suggested change to bold.
                          &quot;baselineOffsetSuggested&quot;: True or False, # Indicates if there was a suggested change to baseline_offset.
                          &quot;foregroundColorSuggested&quot;: True or False, # Indicates if there was a suggested change to foreground_color.
                          &quot;italicSuggested&quot;: True or False, # Indicates if there was a suggested change to italic.
                          &quot;linkSuggested&quot;: True or False, # Indicates if there was a suggested change to link.
                          &quot;underlineSuggested&quot;: True or False, # Indicates if there was a suggested change to underline.
                          &quot;weightedFontFamilySuggested&quot;: True or False, # Indicates if there was a suggested change to weighted_font_family.
                          &quot;smallCapsSuggested&quot;: True or False, # Indicates if there was a suggested change to small_caps.
                          &quot;strikethroughSuggested&quot;: True or False, # Indicates if there was a suggested change to strikethrough.
                        },
                        &quot;textStyle&quot;: { # Represents the styling that can be applied to text. Inherited text styles are represented as unset fields in this message. A text style&#x27;s parent depends on where the text style is defined: * The TextStyle of text in a Paragraph inherits from the paragraph&#x27;s corresponding named style type. * The TextStyle on a named style inherits from the normal text named style. * The TextStyle of the normal text named style inherits from the default text style in the Docs editor. * The TextStyle on a Paragraph element that is contained in a table may inherit its text style from the table style. If the text style does not inherit from a parent, unsetting fields will revert the style to a value matching the defaults in the Docs editor. # A TextStyle that only includes the changes made in this suggestion. This can be used along with the text_style_suggestion_state to see which fields have changed and their new values.
                          &quot;italic&quot;: True or False, # Whether or not the text is italicized.
                          &quot;baselineOffset&quot;: &quot;A String&quot;, # The text&#x27;s vertical offset from its normal position. Text with `SUPERSCRIPT` or `SUBSCRIPT` baseline offsets is automatically rendered in a smaller font size, computed based on the `font_size` field. The `font_size` itself is not affected by changes in this field.
                          &quot;bold&quot;: True or False, # Whether or not the text is rendered as bold.
                          &quot;fontSize&quot;: { # A magnitude in a single direction in the specified units. # The size of the text&#x27;s font.
                            &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                            &quot;magnitude&quot;: 3.14, # The magnitude.
                          },
                          &quot;foregroundColor&quot;: { # A color that can either be fully opaque or fully transparent. # The foreground color of the text. If set, the color is either an RGB color or transparent, depending on the `color` field.
                            &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                              &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                                &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                                &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                                &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                              },
                            },
                          },
                          &quot;backgroundColor&quot;: { # A color that can either be fully opaque or fully transparent. # The background color of the text. If set, the color is either an RGB color or transparent, depending on the `color` field.
                            &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                              &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                                &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                                &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                                &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                              },
                            },
                          },
                          &quot;link&quot;: { # A reference to another portion of a document or an external URL resource. # The hyperlink destination of the text. If unset, there is no link. Links are not inherited from parent text. Changing the link in an update request causes some other changes to the text style of the range: * When setting a link, the text foreground color will be updated to the default link color and the text will be underlined. If these fields are modified in the same request, those values will be used instead of the link defaults. * Setting a link on a text range that overlaps with an existing link will also update the existing link to point to the new URL. * Links are not settable on newline characters. As a result, setting a link on a text range that crosses a paragraph boundary, such as `&quot;ABC\n123&quot;`, will separate the newline character(s) into their own text runs. The link will be applied separately to the runs before and after the newline. * Removing a link will update the text style of the range to match the style of the preceding text (or the default text styles if the preceding text is another link) unless different styles are being set in the same request.
                            &quot;bookmarkId&quot;: &quot;A String&quot;, # The ID of a bookmark in this document.
                            &quot;url&quot;: &quot;A String&quot;, # An external URL.
                            &quot;headingId&quot;: &quot;A String&quot;, # The ID of a heading in this document.
                          },
                          &quot;strikethrough&quot;: True or False, # Whether or not the text is struck through.
                          &quot;weightedFontFamily&quot;: { # Represents a font family and weight of text. # The font family and rendered weight of the text. If an update request specifies values for both `weighted_font_family` and `bold`, the `weighted_font_family` is applied first, then `bold`. If `weighted_font_family#weight` is not set, it defaults to `400`. If `weighted_font_family` is set, then `weighted_font_family#font_family` must also be set with a non-empty value. Otherwise, a 400 bad request error is returned.
                            &quot;fontFamily&quot;: &quot;A String&quot;, # The font family of the text. The font family can be any font from the Font menu in Docs or from [Google Fonts] (https://fonts.google.com/). If the font name is unrecognized, the text is rendered in `Arial`.
                            &quot;weight&quot;: 42, # The weight of the font. This field can have any value that is a multiple of `100` between `100` and `900`, inclusive. This range corresponds to the numerical values described in the CSS 2.1 Specification, [section 15.6](https://www.w3.org/TR/CSS21/fonts.html#font-boldness), with non-numerical values disallowed. The default value is `400` (&quot;normal&quot;). The font weight makes up just one component of the rendered font weight. The rendered weight is determined by a combination of the `weight` and the text style&#x27;s resolved `bold` value, after accounting for inheritance: * If the text is bold and the weight is less than `400`, the rendered weight is 400. * If the text is bold and the weight is greater than or equal to `400` but is less than `700`, the rendered weight is `700`. * If the weight is greater than or equal to `700`, the rendered weight is equal to the weight. * If the text is not bold, the rendered weight is equal to the weight.
                          },
                          &quot;underline&quot;: True or False, # Whether or not the text is underlined.
                          &quot;smallCaps&quot;: True or False, # Whether or not the text is in small capital letters.
                        },
                      },
                    },
                    &quot;suggestedDeletionIds&quot;: [ # The suggested deletion IDs. If empty, then there are no suggested deletions of this content.
                      &quot;A String&quot;,
                    ],
                    &quot;textStyle&quot;: { # Represents the styling that can be applied to text. Inherited text styles are represented as unset fields in this message. A text style&#x27;s parent depends on where the text style is defined: * The TextStyle of text in a Paragraph inherits from the paragraph&#x27;s corresponding named style type. * The TextStyle on a named style inherits from the normal text named style. * The TextStyle of the normal text named style inherits from the default text style in the Docs editor. * The TextStyle on a Paragraph element that is contained in a table may inherit its text style from the table style. If the text style does not inherit from a parent, unsetting fields will revert the style to a value matching the defaults in the Docs editor. # The text style of this HorizontalRule. Similar to text content, like text runs and footnote references, the text style of a horizontal rule can affect content layout as well as the styling of text inserted adjacent to it.
                      &quot;italic&quot;: True or False, # Whether or not the text is italicized.
                      &quot;baselineOffset&quot;: &quot;A String&quot;, # The text&#x27;s vertical offset from its normal position. Text with `SUPERSCRIPT` or `SUBSCRIPT` baseline offsets is automatically rendered in a smaller font size, computed based on the `font_size` field. The `font_size` itself is not affected by changes in this field.
                      &quot;bold&quot;: True or False, # Whether or not the text is rendered as bold.
                      &quot;fontSize&quot;: { # A magnitude in a single direction in the specified units. # The size of the text&#x27;s font.
                        &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                        &quot;magnitude&quot;: 3.14, # The magnitude.
                      },
                      &quot;foregroundColor&quot;: { # A color that can either be fully opaque or fully transparent. # The foreground color of the text. If set, the color is either an RGB color or transparent, depending on the `color` field.
                        &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                          &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                            &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                            &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                            &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                          },
                        },
                      },
                      &quot;backgroundColor&quot;: { # A color that can either be fully opaque or fully transparent. # The background color of the text. If set, the color is either an RGB color or transparent, depending on the `color` field.
                        &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                          &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                            &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                            &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                            &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                          },
                        },
                      },
                      &quot;link&quot;: { # A reference to another portion of a document or an external URL resource. # The hyperlink destination of the text. If unset, there is no link. Links are not inherited from parent text. Changing the link in an update request causes some other changes to the text style of the range: * When setting a link, the text foreground color will be updated to the default link color and the text will be underlined. If these fields are modified in the same request, those values will be used instead of the link defaults. * Setting a link on a text range that overlaps with an existing link will also update the existing link to point to the new URL. * Links are not settable on newline characters. As a result, setting a link on a text range that crosses a paragraph boundary, such as `&quot;ABC\n123&quot;`, will separate the newline character(s) into their own text runs. The link will be applied separately to the runs before and after the newline. * Removing a link will update the text style of the range to match the style of the preceding text (or the default text styles if the preceding text is another link) unless different styles are being set in the same request.
                        &quot;bookmarkId&quot;: &quot;A String&quot;, # The ID of a bookmark in this document.
                        &quot;url&quot;: &quot;A String&quot;, # An external URL.
                        &quot;headingId&quot;: &quot;A String&quot;, # The ID of a heading in this document.
                      },
                      &quot;strikethrough&quot;: True or False, # Whether or not the text is struck through.
                      &quot;weightedFontFamily&quot;: { # Represents a font family and weight of text. # The font family and rendered weight of the text. If an update request specifies values for both `weighted_font_family` and `bold`, the `weighted_font_family` is applied first, then `bold`. If `weighted_font_family#weight` is not set, it defaults to `400`. If `weighted_font_family` is set, then `weighted_font_family#font_family` must also be set with a non-empty value. Otherwise, a 400 bad request error is returned.
                        &quot;fontFamily&quot;: &quot;A String&quot;, # The font family of the text. The font family can be any font from the Font menu in Docs or from [Google Fonts] (https://fonts.google.com/). If the font name is unrecognized, the text is rendered in `Arial`.
                        &quot;weight&quot;: 42, # The weight of the font. This field can have any value that is a multiple of `100` between `100` and `900`, inclusive. This range corresponds to the numerical values described in the CSS 2.1 Specification, [section 15.6](https://www.w3.org/TR/CSS21/fonts.html#font-boldness), with non-numerical values disallowed. The default value is `400` (&quot;normal&quot;). The font weight makes up just one component of the rendered font weight. The rendered weight is determined by a combination of the `weight` and the text style&#x27;s resolved `bold` value, after accounting for inheritance: * If the text is bold and the weight is less than `400`, the rendered weight is 400. * If the text is bold and the weight is greater than or equal to `400` but is less than `700`, the rendered weight is `700`. * If the weight is greater than or equal to `700`, the rendered weight is equal to the weight. * If the text is not bold, the rendered weight is equal to the weight.
                      },
                      &quot;underline&quot;: True or False, # Whether or not the text is underlined.
                      &quot;smallCaps&quot;: True or False, # Whether or not the text is in small capital letters.
                    },
                  },
                  &quot;autoText&quot;: { # A ParagraphElement representing a spot in the text that is dynamically replaced with content that can change over time, like a page number. # An auto text paragraph element.
                    &quot;suggestedDeletionIds&quot;: [ # The suggested deletion IDs. If empty, then there are no suggested deletions of this content.
                      &quot;A String&quot;,
                    ],
                    &quot;suggestedInsertionIds&quot;: [ # The suggested insertion IDs. An AutoText may have multiple insertion IDs if it is a nested suggested change. If empty, then this is not a suggested insertion.
                      &quot;A String&quot;,
                    ],
                    &quot;suggestedTextStyleChanges&quot;: { # The suggested text style changes to this AutoText, keyed by suggestion ID.
                      &quot;a_key&quot;: { # A suggested change to a TextStyle.
                        &quot;textStyleSuggestionState&quot;: { # A mask that indicates which of the fields on the base TextStyle have been changed in this suggestion. For any field set to true, there is a new suggested value. # A mask that indicates which of the fields on the base TextStyle have been changed in this suggestion.
                          &quot;backgroundColorSuggested&quot;: True or False, # Indicates if there was a suggested change to background_color.
                          &quot;fontSizeSuggested&quot;: True or False, # Indicates if there was a suggested change to font_size.
                          &quot;boldSuggested&quot;: True or False, # Indicates if there was a suggested change to bold.
                          &quot;baselineOffsetSuggested&quot;: True or False, # Indicates if there was a suggested change to baseline_offset.
                          &quot;foregroundColorSuggested&quot;: True or False, # Indicates if there was a suggested change to foreground_color.
                          &quot;italicSuggested&quot;: True or False, # Indicates if there was a suggested change to italic.
                          &quot;linkSuggested&quot;: True or False, # Indicates if there was a suggested change to link.
                          &quot;underlineSuggested&quot;: True or False, # Indicates if there was a suggested change to underline.
                          &quot;weightedFontFamilySuggested&quot;: True or False, # Indicates if there was a suggested change to weighted_font_family.
                          &quot;smallCapsSuggested&quot;: True or False, # Indicates if there was a suggested change to small_caps.
                          &quot;strikethroughSuggested&quot;: True or False, # Indicates if there was a suggested change to strikethrough.
                        },
                        &quot;textStyle&quot;: { # Represents the styling that can be applied to text. Inherited text styles are represented as unset fields in this message. A text style&#x27;s parent depends on where the text style is defined: * The TextStyle of text in a Paragraph inherits from the paragraph&#x27;s corresponding named style type. * The TextStyle on a named style inherits from the normal text named style. * The TextStyle of the normal text named style inherits from the default text style in the Docs editor. * The TextStyle on a Paragraph element that is contained in a table may inherit its text style from the table style. If the text style does not inherit from a parent, unsetting fields will revert the style to a value matching the defaults in the Docs editor. # A TextStyle that only includes the changes made in this suggestion. This can be used along with the text_style_suggestion_state to see which fields have changed and their new values.
                          &quot;italic&quot;: True or False, # Whether or not the text is italicized.
                          &quot;baselineOffset&quot;: &quot;A String&quot;, # The text&#x27;s vertical offset from its normal position. Text with `SUPERSCRIPT` or `SUBSCRIPT` baseline offsets is automatically rendered in a smaller font size, computed based on the `font_size` field. The `font_size` itself is not affected by changes in this field.
                          &quot;bold&quot;: True or False, # Whether or not the text is rendered as bold.
                          &quot;fontSize&quot;: { # A magnitude in a single direction in the specified units. # The size of the text&#x27;s font.
                            &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                            &quot;magnitude&quot;: 3.14, # The magnitude.
                          },
                          &quot;foregroundColor&quot;: { # A color that can either be fully opaque or fully transparent. # The foreground color of the text. If set, the color is either an RGB color or transparent, depending on the `color` field.
                            &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                              &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                                &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                                &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                                &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                              },
                            },
                          },
                          &quot;backgroundColor&quot;: { # A color that can either be fully opaque or fully transparent. # The background color of the text. If set, the color is either an RGB color or transparent, depending on the `color` field.
                            &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                              &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                                &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                                &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                                &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                              },
                            },
                          },
                          &quot;link&quot;: { # A reference to another portion of a document or an external URL resource. # The hyperlink destination of the text. If unset, there is no link. Links are not inherited from parent text. Changing the link in an update request causes some other changes to the text style of the range: * When setting a link, the text foreground color will be updated to the default link color and the text will be underlined. If these fields are modified in the same request, those values will be used instead of the link defaults. * Setting a link on a text range that overlaps with an existing link will also update the existing link to point to the new URL. * Links are not settable on newline characters. As a result, setting a link on a text range that crosses a paragraph boundary, such as `&quot;ABC\n123&quot;`, will separate the newline character(s) into their own text runs. The link will be applied separately to the runs before and after the newline. * Removing a link will update the text style of the range to match the style of the preceding text (or the default text styles if the preceding text is another link) unless different styles are being set in the same request.
                            &quot;bookmarkId&quot;: &quot;A String&quot;, # The ID of a bookmark in this document.
                            &quot;url&quot;: &quot;A String&quot;, # An external URL.
                            &quot;headingId&quot;: &quot;A String&quot;, # The ID of a heading in this document.
                          },
                          &quot;strikethrough&quot;: True or False, # Whether or not the text is struck through.
                          &quot;weightedFontFamily&quot;: { # Represents a font family and weight of text. # The font family and rendered weight of the text. If an update request specifies values for both `weighted_font_family` and `bold`, the `weighted_font_family` is applied first, then `bold`. If `weighted_font_family#weight` is not set, it defaults to `400`. If `weighted_font_family` is set, then `weighted_font_family#font_family` must also be set with a non-empty value. Otherwise, a 400 bad request error is returned.
                            &quot;fontFamily&quot;: &quot;A String&quot;, # The font family of the text. The font family can be any font from the Font menu in Docs or from [Google Fonts] (https://fonts.google.com/). If the font name is unrecognized, the text is rendered in `Arial`.
                            &quot;weight&quot;: 42, # The weight of the font. This field can have any value that is a multiple of `100` between `100` and `900`, inclusive. This range corresponds to the numerical values described in the CSS 2.1 Specification, [section 15.6](https://www.w3.org/TR/CSS21/fonts.html#font-boldness), with non-numerical values disallowed. The default value is `400` (&quot;normal&quot;). The font weight makes up just one component of the rendered font weight. The rendered weight is determined by a combination of the `weight` and the text style&#x27;s resolved `bold` value, after accounting for inheritance: * If the text is bold and the weight is less than `400`, the rendered weight is 400. * If the text is bold and the weight is greater than or equal to `400` but is less than `700`, the rendered weight is `700`. * If the weight is greater than or equal to `700`, the rendered weight is equal to the weight. * If the text is not bold, the rendered weight is equal to the weight.
                          },
                          &quot;underline&quot;: True or False, # Whether or not the text is underlined.
                          &quot;smallCaps&quot;: True or False, # Whether or not the text is in small capital letters.
                        },
                      },
                    },
                    &quot;type&quot;: &quot;A String&quot;, # The type of this auto text.
                    &quot;textStyle&quot;: { # Represents the styling that can be applied to text. Inherited text styles are represented as unset fields in this message. A text style&#x27;s parent depends on where the text style is defined: * The TextStyle of text in a Paragraph inherits from the paragraph&#x27;s corresponding named style type. * The TextStyle on a named style inherits from the normal text named style. * The TextStyle of the normal text named style inherits from the default text style in the Docs editor. * The TextStyle on a Paragraph element that is contained in a table may inherit its text style from the table style. If the text style does not inherit from a parent, unsetting fields will revert the style to a value matching the defaults in the Docs editor. # The text style of this AutoText.
                      &quot;italic&quot;: True or False, # Whether or not the text is italicized.
                      &quot;baselineOffset&quot;: &quot;A String&quot;, # The text&#x27;s vertical offset from its normal position. Text with `SUPERSCRIPT` or `SUBSCRIPT` baseline offsets is automatically rendered in a smaller font size, computed based on the `font_size` field. The `font_size` itself is not affected by changes in this field.
                      &quot;bold&quot;: True or False, # Whether or not the text is rendered as bold.
                      &quot;fontSize&quot;: { # A magnitude in a single direction in the specified units. # The size of the text&#x27;s font.
                        &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                        &quot;magnitude&quot;: 3.14, # The magnitude.
                      },
                      &quot;foregroundColor&quot;: { # A color that can either be fully opaque or fully transparent. # The foreground color of the text. If set, the color is either an RGB color or transparent, depending on the `color` field.
                        &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                          &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                            &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                            &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                            &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                          },
                        },
                      },
                      &quot;backgroundColor&quot;: { # A color that can either be fully opaque or fully transparent. # The background color of the text. If set, the color is either an RGB color or transparent, depending on the `color` field.
                        &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                          &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                            &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                            &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                            &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                          },
                        },
                      },
                      &quot;link&quot;: { # A reference to another portion of a document or an external URL resource. # The hyperlink destination of the text. If unset, there is no link. Links are not inherited from parent text. Changing the link in an update request causes some other changes to the text style of the range: * When setting a link, the text foreground color will be updated to the default link color and the text will be underlined. If these fields are modified in the same request, those values will be used instead of the link defaults. * Setting a link on a text range that overlaps with an existing link will also update the existing link to point to the new URL. * Links are not settable on newline characters. As a result, setting a link on a text range that crosses a paragraph boundary, such as `&quot;ABC\n123&quot;`, will separate the newline character(s) into their own text runs. The link will be applied separately to the runs before and after the newline. * Removing a link will update the text style of the range to match the style of the preceding text (or the default text styles if the preceding text is another link) unless different styles are being set in the same request.
                        &quot;bookmarkId&quot;: &quot;A String&quot;, # The ID of a bookmark in this document.
                        &quot;url&quot;: &quot;A String&quot;, # An external URL.
                        &quot;headingId&quot;: &quot;A String&quot;, # The ID of a heading in this document.
                      },
                      &quot;strikethrough&quot;: True or False, # Whether or not the text is struck through.
                      &quot;weightedFontFamily&quot;: { # Represents a font family and weight of text. # The font family and rendered weight of the text. If an update request specifies values for both `weighted_font_family` and `bold`, the `weighted_font_family` is applied first, then `bold`. If `weighted_font_family#weight` is not set, it defaults to `400`. If `weighted_font_family` is set, then `weighted_font_family#font_family` must also be set with a non-empty value. Otherwise, a 400 bad request error is returned.
                        &quot;fontFamily&quot;: &quot;A String&quot;, # The font family of the text. The font family can be any font from the Font menu in Docs or from [Google Fonts] (https://fonts.google.com/). If the font name is unrecognized, the text is rendered in `Arial`.
                        &quot;weight&quot;: 42, # The weight of the font. This field can have any value that is a multiple of `100` between `100` and `900`, inclusive. This range corresponds to the numerical values described in the CSS 2.1 Specification, [section 15.6](https://www.w3.org/TR/CSS21/fonts.html#font-boldness), with non-numerical values disallowed. The default value is `400` (&quot;normal&quot;). The font weight makes up just one component of the rendered font weight. The rendered weight is determined by a combination of the `weight` and the text style&#x27;s resolved `bold` value, after accounting for inheritance: * If the text is bold and the weight is less than `400`, the rendered weight is 400. * If the text is bold and the weight is greater than or equal to `400` but is less than `700`, the rendered weight is `700`. * If the weight is greater than or equal to `700`, the rendered weight is equal to the weight. * If the text is not bold, the rendered weight is equal to the weight.
                      },
                      &quot;underline&quot;: True or False, # Whether or not the text is underlined.
                      &quot;smallCaps&quot;: True or False, # Whether or not the text is in small capital letters.
                    },
                  },
                  &quot;inlineObjectElement&quot;: { # A ParagraphElement that contains an InlineObject. # An inline object paragraph element.
                    &quot;suggestedDeletionIds&quot;: [ # The suggested deletion IDs. If empty, then there are no suggested deletions of this content.
                      &quot;A String&quot;,
                    ],
                    &quot;suggestedInsertionIds&quot;: [ # The suggested insertion IDs. An InlineObjectElement may have multiple insertion IDs if it is a nested suggested change. If empty, then this is not a suggested insertion.
                      &quot;A String&quot;,
                    ],
                    &quot;suggestedTextStyleChanges&quot;: { # The suggested text style changes to this InlineObject, keyed by suggestion ID.
                      &quot;a_key&quot;: { # A suggested change to a TextStyle.
                        &quot;textStyleSuggestionState&quot;: { # A mask that indicates which of the fields on the base TextStyle have been changed in this suggestion. For any field set to true, there is a new suggested value. # A mask that indicates which of the fields on the base TextStyle have been changed in this suggestion.
                          &quot;backgroundColorSuggested&quot;: True or False, # Indicates if there was a suggested change to background_color.
                          &quot;fontSizeSuggested&quot;: True or False, # Indicates if there was a suggested change to font_size.
                          &quot;boldSuggested&quot;: True or False, # Indicates if there was a suggested change to bold.
                          &quot;baselineOffsetSuggested&quot;: True or False, # Indicates if there was a suggested change to baseline_offset.
                          &quot;foregroundColorSuggested&quot;: True or False, # Indicates if there was a suggested change to foreground_color.
                          &quot;italicSuggested&quot;: True or False, # Indicates if there was a suggested change to italic.
                          &quot;linkSuggested&quot;: True or False, # Indicates if there was a suggested change to link.
                          &quot;underlineSuggested&quot;: True or False, # Indicates if there was a suggested change to underline.
                          &quot;weightedFontFamilySuggested&quot;: True or False, # Indicates if there was a suggested change to weighted_font_family.
                          &quot;smallCapsSuggested&quot;: True or False, # Indicates if there was a suggested change to small_caps.
                          &quot;strikethroughSuggested&quot;: True or False, # Indicates if there was a suggested change to strikethrough.
                        },
                        &quot;textStyle&quot;: { # Represents the styling that can be applied to text. Inherited text styles are represented as unset fields in this message. A text style&#x27;s parent depends on where the text style is defined: * The TextStyle of text in a Paragraph inherits from the paragraph&#x27;s corresponding named style type. * The TextStyle on a named style inherits from the normal text named style. * The TextStyle of the normal text named style inherits from the default text style in the Docs editor. * The TextStyle on a Paragraph element that is contained in a table may inherit its text style from the table style. If the text style does not inherit from a parent, unsetting fields will revert the style to a value matching the defaults in the Docs editor. # A TextStyle that only includes the changes made in this suggestion. This can be used along with the text_style_suggestion_state to see which fields have changed and their new values.
                          &quot;italic&quot;: True or False, # Whether or not the text is italicized.
                          &quot;baselineOffset&quot;: &quot;A String&quot;, # The text&#x27;s vertical offset from its normal position. Text with `SUPERSCRIPT` or `SUBSCRIPT` baseline offsets is automatically rendered in a smaller font size, computed based on the `font_size` field. The `font_size` itself is not affected by changes in this field.
                          &quot;bold&quot;: True or False, # Whether or not the text is rendered as bold.
                          &quot;fontSize&quot;: { # A magnitude in a single direction in the specified units. # The size of the text&#x27;s font.
                            &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                            &quot;magnitude&quot;: 3.14, # The magnitude.
                          },
                          &quot;foregroundColor&quot;: { # A color that can either be fully opaque or fully transparent. # The foreground color of the text. If set, the color is either an RGB color or transparent, depending on the `color` field.
                            &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                              &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                                &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                                &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                                &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                              },
                            },
                          },
                          &quot;backgroundColor&quot;: { # A color that can either be fully opaque or fully transparent. # The background color of the text. If set, the color is either an RGB color or transparent, depending on the `color` field.
                            &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                              &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                                &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                                &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                                &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                              },
                            },
                          },
                          &quot;link&quot;: { # A reference to another portion of a document or an external URL resource. # The hyperlink destination of the text. If unset, there is no link. Links are not inherited from parent text. Changing the link in an update request causes some other changes to the text style of the range: * When setting a link, the text foreground color will be updated to the default link color and the text will be underlined. If these fields are modified in the same request, those values will be used instead of the link defaults. * Setting a link on a text range that overlaps with an existing link will also update the existing link to point to the new URL. * Links are not settable on newline characters. As a result, setting a link on a text range that crosses a paragraph boundary, such as `&quot;ABC\n123&quot;`, will separate the newline character(s) into their own text runs. The link will be applied separately to the runs before and after the newline. * Removing a link will update the text style of the range to match the style of the preceding text (or the default text styles if the preceding text is another link) unless different styles are being set in the same request.
                            &quot;bookmarkId&quot;: &quot;A String&quot;, # The ID of a bookmark in this document.
                            &quot;url&quot;: &quot;A String&quot;, # An external URL.
                            &quot;headingId&quot;: &quot;A String&quot;, # The ID of a heading in this document.
                          },
                          &quot;strikethrough&quot;: True or False, # Whether or not the text is struck through.
                          &quot;weightedFontFamily&quot;: { # Represents a font family and weight of text. # The font family and rendered weight of the text. If an update request specifies values for both `weighted_font_family` and `bold`, the `weighted_font_family` is applied first, then `bold`. If `weighted_font_family#weight` is not set, it defaults to `400`. If `weighted_font_family` is set, then `weighted_font_family#font_family` must also be set with a non-empty value. Otherwise, a 400 bad request error is returned.
                            &quot;fontFamily&quot;: &quot;A String&quot;, # The font family of the text. The font family can be any font from the Font menu in Docs or from [Google Fonts] (https://fonts.google.com/). If the font name is unrecognized, the text is rendered in `Arial`.
                            &quot;weight&quot;: 42, # The weight of the font. This field can have any value that is a multiple of `100` between `100` and `900`, inclusive. This range corresponds to the numerical values described in the CSS 2.1 Specification, [section 15.6](https://www.w3.org/TR/CSS21/fonts.html#font-boldness), with non-numerical values disallowed. The default value is `400` (&quot;normal&quot;). The font weight makes up just one component of the rendered font weight. The rendered weight is determined by a combination of the `weight` and the text style&#x27;s resolved `bold` value, after accounting for inheritance: * If the text is bold and the weight is less than `400`, the rendered weight is 400. * If the text is bold and the weight is greater than or equal to `400` but is less than `700`, the rendered weight is `700`. * If the weight is greater than or equal to `700`, the rendered weight is equal to the weight. * If the text is not bold, the rendered weight is equal to the weight.
                          },
                          &quot;underline&quot;: True or False, # Whether or not the text is underlined.
                          &quot;smallCaps&quot;: True or False, # Whether or not the text is in small capital letters.
                        },
                      },
                    },
                    &quot;inlineObjectId&quot;: &quot;A String&quot;, # The ID of the InlineObject this element contains.
                    &quot;textStyle&quot;: { # Represents the styling that can be applied to text. Inherited text styles are represented as unset fields in this message. A text style&#x27;s parent depends on where the text style is defined: * The TextStyle of text in a Paragraph inherits from the paragraph&#x27;s corresponding named style type. * The TextStyle on a named style inherits from the normal text named style. * The TextStyle of the normal text named style inherits from the default text style in the Docs editor. * The TextStyle on a Paragraph element that is contained in a table may inherit its text style from the table style. If the text style does not inherit from a parent, unsetting fields will revert the style to a value matching the defaults in the Docs editor. # The text style of this InlineObjectElement. Similar to text content, like text runs and footnote references, the text style of an inline object element can affect content layout as well as the styling of text inserted adjacent to it.
                      &quot;italic&quot;: True or False, # Whether or not the text is italicized.
                      &quot;baselineOffset&quot;: &quot;A String&quot;, # The text&#x27;s vertical offset from its normal position. Text with `SUPERSCRIPT` or `SUBSCRIPT` baseline offsets is automatically rendered in a smaller font size, computed based on the `font_size` field. The `font_size` itself is not affected by changes in this field.
                      &quot;bold&quot;: True or False, # Whether or not the text is rendered as bold.
                      &quot;fontSize&quot;: { # A magnitude in a single direction in the specified units. # The size of the text&#x27;s font.
                        &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                        &quot;magnitude&quot;: 3.14, # The magnitude.
                      },
                      &quot;foregroundColor&quot;: { # A color that can either be fully opaque or fully transparent. # The foreground color of the text. If set, the color is either an RGB color or transparent, depending on the `color` field.
                        &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                          &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                            &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                            &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                            &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                          },
                        },
                      },
                      &quot;backgroundColor&quot;: { # A color that can either be fully opaque or fully transparent. # The background color of the text. If set, the color is either an RGB color or transparent, depending on the `color` field.
                        &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                          &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                            &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                            &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                            &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                          },
                        },
                      },
                      &quot;link&quot;: { # A reference to another portion of a document or an external URL resource. # The hyperlink destination of the text. If unset, there is no link. Links are not inherited from parent text. Changing the link in an update request causes some other changes to the text style of the range: * When setting a link, the text foreground color will be updated to the default link color and the text will be underlined. If these fields are modified in the same request, those values will be used instead of the link defaults. * Setting a link on a text range that overlaps with an existing link will also update the existing link to point to the new URL. * Links are not settable on newline characters. As a result, setting a link on a text range that crosses a paragraph boundary, such as `&quot;ABC\n123&quot;`, will separate the newline character(s) into their own text runs. The link will be applied separately to the runs before and after the newline. * Removing a link will update the text style of the range to match the style of the preceding text (or the default text styles if the preceding text is another link) unless different styles are being set in the same request.
                        &quot;bookmarkId&quot;: &quot;A String&quot;, # The ID of a bookmark in this document.
                        &quot;url&quot;: &quot;A String&quot;, # An external URL.
                        &quot;headingId&quot;: &quot;A String&quot;, # The ID of a heading in this document.
                      },
                      &quot;strikethrough&quot;: True or False, # Whether or not the text is struck through.
                      &quot;weightedFontFamily&quot;: { # Represents a font family and weight of text. # The font family and rendered weight of the text. If an update request specifies values for both `weighted_font_family` and `bold`, the `weighted_font_family` is applied first, then `bold`. If `weighted_font_family#weight` is not set, it defaults to `400`. If `weighted_font_family` is set, then `weighted_font_family#font_family` must also be set with a non-empty value. Otherwise, a 400 bad request error is returned.
                        &quot;fontFamily&quot;: &quot;A String&quot;, # The font family of the text. The font family can be any font from the Font menu in Docs or from [Google Fonts] (https://fonts.google.com/). If the font name is unrecognized, the text is rendered in `Arial`.
                        &quot;weight&quot;: 42, # The weight of the font. This field can have any value that is a multiple of `100` between `100` and `900`, inclusive. This range corresponds to the numerical values described in the CSS 2.1 Specification, [section 15.6](https://www.w3.org/TR/CSS21/fonts.html#font-boldness), with non-numerical values disallowed. The default value is `400` (&quot;normal&quot;). The font weight makes up just one component of the rendered font weight. The rendered weight is determined by a combination of the `weight` and the text style&#x27;s resolved `bold` value, after accounting for inheritance: * If the text is bold and the weight is less than `400`, the rendered weight is 400. * If the text is bold and the weight is greater than or equal to `400` but is less than `700`, the rendered weight is `700`. * If the weight is greater than or equal to `700`, the rendered weight is equal to the weight. * If the text is not bold, the rendered weight is equal to the weight.
                      },
                      &quot;underline&quot;: True or False, # Whether or not the text is underlined.
                      &quot;smallCaps&quot;: True or False, # Whether or not the text is in small capital letters.
                    },
                  },
                  &quot;footnoteReference&quot;: { # A ParagraphElement representing a footnote reference. A footnote reference is the inline content rendered with a number and is used to identify the footnote. # A footnote reference paragraph element.
                    &quot;footnoteId&quot;: &quot;A String&quot;, # The ID of the footnote that contains the content of this footnote reference.
                    &quot;suggestedInsertionIds&quot;: [ # The suggested insertion IDs. A FootnoteReference may have multiple insertion IDs if it is a nested suggested change. If empty, then this is not a suggested insertion.
                      &quot;A String&quot;,
                    ],
                    &quot;footnoteNumber&quot;: &quot;A String&quot;, # The rendered number of this footnote.
                    &quot;suggestedDeletionIds&quot;: [ # The suggested deletion IDs. If empty, then there are no suggested deletions of this content.
                      &quot;A String&quot;,
                    ],
                    &quot;suggestedTextStyleChanges&quot;: { # The suggested text style changes to this FootnoteReference, keyed by suggestion ID.
                      &quot;a_key&quot;: { # A suggested change to a TextStyle.
                        &quot;textStyleSuggestionState&quot;: { # A mask that indicates which of the fields on the base TextStyle have been changed in this suggestion. For any field set to true, there is a new suggested value. # A mask that indicates which of the fields on the base TextStyle have been changed in this suggestion.
                          &quot;backgroundColorSuggested&quot;: True or False, # Indicates if there was a suggested change to background_color.
                          &quot;fontSizeSuggested&quot;: True or False, # Indicates if there was a suggested change to font_size.
                          &quot;boldSuggested&quot;: True or False, # Indicates if there was a suggested change to bold.
                          &quot;baselineOffsetSuggested&quot;: True or False, # Indicates if there was a suggested change to baseline_offset.
                          &quot;foregroundColorSuggested&quot;: True or False, # Indicates if there was a suggested change to foreground_color.
                          &quot;italicSuggested&quot;: True or False, # Indicates if there was a suggested change to italic.
                          &quot;linkSuggested&quot;: True or False, # Indicates if there was a suggested change to link.
                          &quot;underlineSuggested&quot;: True or False, # Indicates if there was a suggested change to underline.
                          &quot;weightedFontFamilySuggested&quot;: True or False, # Indicates if there was a suggested change to weighted_font_family.
                          &quot;smallCapsSuggested&quot;: True or False, # Indicates if there was a suggested change to small_caps.
                          &quot;strikethroughSuggested&quot;: True or False, # Indicates if there was a suggested change to strikethrough.
                        },
                        &quot;textStyle&quot;: { # Represents the styling that can be applied to text. Inherited text styles are represented as unset fields in this message. A text style&#x27;s parent depends on where the text style is defined: * The TextStyle of text in a Paragraph inherits from the paragraph&#x27;s corresponding named style type. * The TextStyle on a named style inherits from the normal text named style. * The TextStyle of the normal text named style inherits from the default text style in the Docs editor. * The TextStyle on a Paragraph element that is contained in a table may inherit its text style from the table style. If the text style does not inherit from a parent, unsetting fields will revert the style to a value matching the defaults in the Docs editor. # A TextStyle that only includes the changes made in this suggestion. This can be used along with the text_style_suggestion_state to see which fields have changed and their new values.
                          &quot;italic&quot;: True or False, # Whether or not the text is italicized.
                          &quot;baselineOffset&quot;: &quot;A String&quot;, # The text&#x27;s vertical offset from its normal position. Text with `SUPERSCRIPT` or `SUBSCRIPT` baseline offsets is automatically rendered in a smaller font size, computed based on the `font_size` field. The `font_size` itself is not affected by changes in this field.
                          &quot;bold&quot;: True or False, # Whether or not the text is rendered as bold.
                          &quot;fontSize&quot;: { # A magnitude in a single direction in the specified units. # The size of the text&#x27;s font.
                            &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                            &quot;magnitude&quot;: 3.14, # The magnitude.
                          },
                          &quot;foregroundColor&quot;: { # A color that can either be fully opaque or fully transparent. # The foreground color of the text. If set, the color is either an RGB color or transparent, depending on the `color` field.
                            &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                              &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                                &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                                &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                                &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                              },
                            },
                          },
                          &quot;backgroundColor&quot;: { # A color that can either be fully opaque or fully transparent. # The background color of the text. If set, the color is either an RGB color or transparent, depending on the `color` field.
                            &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                              &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                                &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                                &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                                &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                              },
                            },
                          },
                          &quot;link&quot;: { # A reference to another portion of a document or an external URL resource. # The hyperlink destination of the text. If unset, there is no link. Links are not inherited from parent text. Changing the link in an update request causes some other changes to the text style of the range: * When setting a link, the text foreground color will be updated to the default link color and the text will be underlined. If these fields are modified in the same request, those values will be used instead of the link defaults. * Setting a link on a text range that overlaps with an existing link will also update the existing link to point to the new URL. * Links are not settable on newline characters. As a result, setting a link on a text range that crosses a paragraph boundary, such as `&quot;ABC\n123&quot;`, will separate the newline character(s) into their own text runs. The link will be applied separately to the runs before and after the newline. * Removing a link will update the text style of the range to match the style of the preceding text (or the default text styles if the preceding text is another link) unless different styles are being set in the same request.
                            &quot;bookmarkId&quot;: &quot;A String&quot;, # The ID of a bookmark in this document.
                            &quot;url&quot;: &quot;A String&quot;, # An external URL.
                            &quot;headingId&quot;: &quot;A String&quot;, # The ID of a heading in this document.
                          },
                          &quot;strikethrough&quot;: True or False, # Whether or not the text is struck through.
                          &quot;weightedFontFamily&quot;: { # Represents a font family and weight of text. # The font family and rendered weight of the text. If an update request specifies values for both `weighted_font_family` and `bold`, the `weighted_font_family` is applied first, then `bold`. If `weighted_font_family#weight` is not set, it defaults to `400`. If `weighted_font_family` is set, then `weighted_font_family#font_family` must also be set with a non-empty value. Otherwise, a 400 bad request error is returned.
                            &quot;fontFamily&quot;: &quot;A String&quot;, # The font family of the text. The font family can be any font from the Font menu in Docs or from [Google Fonts] (https://fonts.google.com/). If the font name is unrecognized, the text is rendered in `Arial`.
                            &quot;weight&quot;: 42, # The weight of the font. This field can have any value that is a multiple of `100` between `100` and `900`, inclusive. This range corresponds to the numerical values described in the CSS 2.1 Specification, [section 15.6](https://www.w3.org/TR/CSS21/fonts.html#font-boldness), with non-numerical values disallowed. The default value is `400` (&quot;normal&quot;). The font weight makes up just one component of the rendered font weight. The rendered weight is determined by a combination of the `weight` and the text style&#x27;s resolved `bold` value, after accounting for inheritance: * If the text is bold and the weight is less than `400`, the rendered weight is 400. * If the text is bold and the weight is greater than or equal to `400` but is less than `700`, the rendered weight is `700`. * If the weight is greater than or equal to `700`, the rendered weight is equal to the weight. * If the text is not bold, the rendered weight is equal to the weight.
                          },
                          &quot;underline&quot;: True or False, # Whether or not the text is underlined.
                          &quot;smallCaps&quot;: True or False, # Whether or not the text is in small capital letters.
                        },
                      },
                    },
                    &quot;textStyle&quot;: { # Represents the styling that can be applied to text. Inherited text styles are represented as unset fields in this message. A text style&#x27;s parent depends on where the text style is defined: * The TextStyle of text in a Paragraph inherits from the paragraph&#x27;s corresponding named style type. * The TextStyle on a named style inherits from the normal text named style. * The TextStyle of the normal text named style inherits from the default text style in the Docs editor. * The TextStyle on a Paragraph element that is contained in a table may inherit its text style from the table style. If the text style does not inherit from a parent, unsetting fields will revert the style to a value matching the defaults in the Docs editor. # The text style of this FootnoteReference.
                      &quot;italic&quot;: True or False, # Whether or not the text is italicized.
                      &quot;baselineOffset&quot;: &quot;A String&quot;, # The text&#x27;s vertical offset from its normal position. Text with `SUPERSCRIPT` or `SUBSCRIPT` baseline offsets is automatically rendered in a smaller font size, computed based on the `font_size` field. The `font_size` itself is not affected by changes in this field.
                      &quot;bold&quot;: True or False, # Whether or not the text is rendered as bold.
                      &quot;fontSize&quot;: { # A magnitude in a single direction in the specified units. # The size of the text&#x27;s font.
                        &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                        &quot;magnitude&quot;: 3.14, # The magnitude.
                      },
                      &quot;foregroundColor&quot;: { # A color that can either be fully opaque or fully transparent. # The foreground color of the text. If set, the color is either an RGB color or transparent, depending on the `color` field.
                        &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                          &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                            &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                            &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                            &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                          },
                        },
                      },
                      &quot;backgroundColor&quot;: { # A color that can either be fully opaque or fully transparent. # The background color of the text. If set, the color is either an RGB color or transparent, depending on the `color` field.
                        &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                          &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                            &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                            &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                            &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                          },
                        },
                      },
                      &quot;link&quot;: { # A reference to another portion of a document or an external URL resource. # The hyperlink destination of the text. If unset, there is no link. Links are not inherited from parent text. Changing the link in an update request causes some other changes to the text style of the range: * When setting a link, the text foreground color will be updated to the default link color and the text will be underlined. If these fields are modified in the same request, those values will be used instead of the link defaults. * Setting a link on a text range that overlaps with an existing link will also update the existing link to point to the new URL. * Links are not settable on newline characters. As a result, setting a link on a text range that crosses a paragraph boundary, such as `&quot;ABC\n123&quot;`, will separate the newline character(s) into their own text runs. The link will be applied separately to the runs before and after the newline. * Removing a link will update the text style of the range to match the style of the preceding text (or the default text styles if the preceding text is another link) unless different styles are being set in the same request.
                        &quot;bookmarkId&quot;: &quot;A String&quot;, # The ID of a bookmark in this document.
                        &quot;url&quot;: &quot;A String&quot;, # An external URL.
                        &quot;headingId&quot;: &quot;A String&quot;, # The ID of a heading in this document.
                      },
                      &quot;strikethrough&quot;: True or False, # Whether or not the text is struck through.
                      &quot;weightedFontFamily&quot;: { # Represents a font family and weight of text. # The font family and rendered weight of the text. If an update request specifies values for both `weighted_font_family` and `bold`, the `weighted_font_family` is applied first, then `bold`. If `weighted_font_family#weight` is not set, it defaults to `400`. If `weighted_font_family` is set, then `weighted_font_family#font_family` must also be set with a non-empty value. Otherwise, a 400 bad request error is returned.
                        &quot;fontFamily&quot;: &quot;A String&quot;, # The font family of the text. The font family can be any font from the Font menu in Docs or from [Google Fonts] (https://fonts.google.com/). If the font name is unrecognized, the text is rendered in `Arial`.
                        &quot;weight&quot;: 42, # The weight of the font. This field can have any value that is a multiple of `100` between `100` and `900`, inclusive. This range corresponds to the numerical values described in the CSS 2.1 Specification, [section 15.6](https://www.w3.org/TR/CSS21/fonts.html#font-boldness), with non-numerical values disallowed. The default value is `400` (&quot;normal&quot;). The font weight makes up just one component of the rendered font weight. The rendered weight is determined by a combination of the `weight` and the text style&#x27;s resolved `bold` value, after accounting for inheritance: * If the text is bold and the weight is less than `400`, the rendered weight is 400. * If the text is bold and the weight is greater than or equal to `400` but is less than `700`, the rendered weight is `700`. * If the weight is greater than or equal to `700`, the rendered weight is equal to the weight. * If the text is not bold, the rendered weight is equal to the weight.
                      },
                      &quot;underline&quot;: True or False, # Whether or not the text is underlined.
                      &quot;smallCaps&quot;: True or False, # Whether or not the text is in small capital letters.
                    },
                  },
                  &quot;startIndex&quot;: 42, # The zero-based start index of this paragraph element, in UTF-16 code units.
                  &quot;endIndex&quot;: 42, # The zero-base end index of this paragraph element, exclusive, in UTF-16 code units.
                  &quot;equation&quot;: { # A ParagraphElement representing an equation. # An equation paragraph element.
                    &quot;suggestedDeletionIds&quot;: [ # The suggested deletion IDs. If empty, then there are no suggested deletions of this content.
                      &quot;A String&quot;,
                    ],
                    &quot;suggestedInsertionIds&quot;: [ # The suggested insertion IDs. A Equation may have multiple insertion IDs if it is a nested suggested change. If empty, then this is not a suggested insertion.
                      &quot;A String&quot;,
                    ],
                  },
                  &quot;columnBreak&quot;: { # A ParagraphElement representing a column break. A column break makes the subsequent text start at the top of the next column. # A column break paragraph element.
                    &quot;suggestedTextStyleChanges&quot;: { # The suggested text style changes to this ColumnBreak, keyed by suggestion ID.
                      &quot;a_key&quot;: { # A suggested change to a TextStyle.
                        &quot;textStyleSuggestionState&quot;: { # A mask that indicates which of the fields on the base TextStyle have been changed in this suggestion. For any field set to true, there is a new suggested value. # A mask that indicates which of the fields on the base TextStyle have been changed in this suggestion.
                          &quot;backgroundColorSuggested&quot;: True or False, # Indicates if there was a suggested change to background_color.
                          &quot;fontSizeSuggested&quot;: True or False, # Indicates if there was a suggested change to font_size.
                          &quot;boldSuggested&quot;: True or False, # Indicates if there was a suggested change to bold.
                          &quot;baselineOffsetSuggested&quot;: True or False, # Indicates if there was a suggested change to baseline_offset.
                          &quot;foregroundColorSuggested&quot;: True or False, # Indicates if there was a suggested change to foreground_color.
                          &quot;italicSuggested&quot;: True or False, # Indicates if there was a suggested change to italic.
                          &quot;linkSuggested&quot;: True or False, # Indicates if there was a suggested change to link.
                          &quot;underlineSuggested&quot;: True or False, # Indicates if there was a suggested change to underline.
                          &quot;weightedFontFamilySuggested&quot;: True or False, # Indicates if there was a suggested change to weighted_font_family.
                          &quot;smallCapsSuggested&quot;: True or False, # Indicates if there was a suggested change to small_caps.
                          &quot;strikethroughSuggested&quot;: True or False, # Indicates if there was a suggested change to strikethrough.
                        },
                        &quot;textStyle&quot;: { # Represents the styling that can be applied to text. Inherited text styles are represented as unset fields in this message. A text style&#x27;s parent depends on where the text style is defined: * The TextStyle of text in a Paragraph inherits from the paragraph&#x27;s corresponding named style type. * The TextStyle on a named style inherits from the normal text named style. * The TextStyle of the normal text named style inherits from the default text style in the Docs editor. * The TextStyle on a Paragraph element that is contained in a table may inherit its text style from the table style. If the text style does not inherit from a parent, unsetting fields will revert the style to a value matching the defaults in the Docs editor. # A TextStyle that only includes the changes made in this suggestion. This can be used along with the text_style_suggestion_state to see which fields have changed and their new values.
                          &quot;italic&quot;: True or False, # Whether or not the text is italicized.
                          &quot;baselineOffset&quot;: &quot;A String&quot;, # The text&#x27;s vertical offset from its normal position. Text with `SUPERSCRIPT` or `SUBSCRIPT` baseline offsets is automatically rendered in a smaller font size, computed based on the `font_size` field. The `font_size` itself is not affected by changes in this field.
                          &quot;bold&quot;: True or False, # Whether or not the text is rendered as bold.
                          &quot;fontSize&quot;: { # A magnitude in a single direction in the specified units. # The size of the text&#x27;s font.
                            &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                            &quot;magnitude&quot;: 3.14, # The magnitude.
                          },
                          &quot;foregroundColor&quot;: { # A color that can either be fully opaque or fully transparent. # The foreground color of the text. If set, the color is either an RGB color or transparent, depending on the `color` field.
                            &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                              &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                                &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                                &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                                &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                              },
                            },
                          },
                          &quot;backgroundColor&quot;: { # A color that can either be fully opaque or fully transparent. # The background color of the text. If set, the color is either an RGB color or transparent, depending on the `color` field.
                            &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                              &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                                &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                                &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                                &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                              },
                            },
                          },
                          &quot;link&quot;: { # A reference to another portion of a document or an external URL resource. # The hyperlink destination of the text. If unset, there is no link. Links are not inherited from parent text. Changing the link in an update request causes some other changes to the text style of the range: * When setting a link, the text foreground color will be updated to the default link color and the text will be underlined. If these fields are modified in the same request, those values will be used instead of the link defaults. * Setting a link on a text range that overlaps with an existing link will also update the existing link to point to the new URL. * Links are not settable on newline characters. As a result, setting a link on a text range that crosses a paragraph boundary, such as `&quot;ABC\n123&quot;`, will separate the newline character(s) into their own text runs. The link will be applied separately to the runs before and after the newline. * Removing a link will update the text style of the range to match the style of the preceding text (or the default text styles if the preceding text is another link) unless different styles are being set in the same request.
                            &quot;bookmarkId&quot;: &quot;A String&quot;, # The ID of a bookmark in this document.
                            &quot;url&quot;: &quot;A String&quot;, # An external URL.
                            &quot;headingId&quot;: &quot;A String&quot;, # The ID of a heading in this document.
                          },
                          &quot;strikethrough&quot;: True or False, # Whether or not the text is struck through.
                          &quot;weightedFontFamily&quot;: { # Represents a font family and weight of text. # The font family and rendered weight of the text. If an update request specifies values for both `weighted_font_family` and `bold`, the `weighted_font_family` is applied first, then `bold`. If `weighted_font_family#weight` is not set, it defaults to `400`. If `weighted_font_family` is set, then `weighted_font_family#font_family` must also be set with a non-empty value. Otherwise, a 400 bad request error is returned.
                            &quot;fontFamily&quot;: &quot;A String&quot;, # The font family of the text. The font family can be any font from the Font menu in Docs or from [Google Fonts] (https://fonts.google.com/). If the font name is unrecognized, the text is rendered in `Arial`.
                            &quot;weight&quot;: 42, # The weight of the font. This field can have any value that is a multiple of `100` between `100` and `900`, inclusive. This range corresponds to the numerical values described in the CSS 2.1 Specification, [section 15.6](https://www.w3.org/TR/CSS21/fonts.html#font-boldness), with non-numerical values disallowed. The default value is `400` (&quot;normal&quot;). The font weight makes up just one component of the rendered font weight. The rendered weight is determined by a combination of the `weight` and the text style&#x27;s resolved `bold` value, after accounting for inheritance: * If the text is bold and the weight is less than `400`, the rendered weight is 400. * If the text is bold and the weight is greater than or equal to `400` but is less than `700`, the rendered weight is `700`. * If the weight is greater than or equal to `700`, the rendered weight is equal to the weight. * If the text is not bold, the rendered weight is equal to the weight.
                          },
                          &quot;underline&quot;: True or False, # Whether or not the text is underlined.
                          &quot;smallCaps&quot;: True or False, # Whether or not the text is in small capital letters.
                        },
                      },
                    },
                    &quot;suggestedDeletionIds&quot;: [ # The suggested deletion IDs. If empty, then there are no suggested deletions of this content.
                      &quot;A String&quot;,
                    ],
                    &quot;textStyle&quot;: { # Represents the styling that can be applied to text. Inherited text styles are represented as unset fields in this message. A text style&#x27;s parent depends on where the text style is defined: * The TextStyle of text in a Paragraph inherits from the paragraph&#x27;s corresponding named style type. * The TextStyle on a named style inherits from the normal text named style. * The TextStyle of the normal text named style inherits from the default text style in the Docs editor. * The TextStyle on a Paragraph element that is contained in a table may inherit its text style from the table style. If the text style does not inherit from a parent, unsetting fields will revert the style to a value matching the defaults in the Docs editor. # The text style of this ColumnBreak. Similar to text content, like text runs and footnote references, the text style of a column break can affect content layout as well as the styling of text inserted adjacent to it.
                      &quot;italic&quot;: True or False, # Whether or not the text is italicized.
                      &quot;baselineOffset&quot;: &quot;A String&quot;, # The text&#x27;s vertical offset from its normal position. Text with `SUPERSCRIPT` or `SUBSCRIPT` baseline offsets is automatically rendered in a smaller font size, computed based on the `font_size` field. The `font_size` itself is not affected by changes in this field.
                      &quot;bold&quot;: True or False, # Whether or not the text is rendered as bold.
                      &quot;fontSize&quot;: { # A magnitude in a single direction in the specified units. # The size of the text&#x27;s font.
                        &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                        &quot;magnitude&quot;: 3.14, # The magnitude.
                      },
                      &quot;foregroundColor&quot;: { # A color that can either be fully opaque or fully transparent. # The foreground color of the text. If set, the color is either an RGB color or transparent, depending on the `color` field.
                        &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                          &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                            &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                            &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                            &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                          },
                        },
                      },
                      &quot;backgroundColor&quot;: { # A color that can either be fully opaque or fully transparent. # The background color of the text. If set, the color is either an RGB color or transparent, depending on the `color` field.
                        &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                          &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                            &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                            &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                            &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                          },
                        },
                      },
                      &quot;link&quot;: { # A reference to another portion of a document or an external URL resource. # The hyperlink destination of the text. If unset, there is no link. Links are not inherited from parent text. Changing the link in an update request causes some other changes to the text style of the range: * When setting a link, the text foreground color will be updated to the default link color and the text will be underlined. If these fields are modified in the same request, those values will be used instead of the link defaults. * Setting a link on a text range that overlaps with an existing link will also update the existing link to point to the new URL. * Links are not settable on newline characters. As a result, setting a link on a text range that crosses a paragraph boundary, such as `&quot;ABC\n123&quot;`, will separate the newline character(s) into their own text runs. The link will be applied separately to the runs before and after the newline. * Removing a link will update the text style of the range to match the style of the preceding text (or the default text styles if the preceding text is another link) unless different styles are being set in the same request.
                        &quot;bookmarkId&quot;: &quot;A String&quot;, # The ID of a bookmark in this document.
                        &quot;url&quot;: &quot;A String&quot;, # An external URL.
                        &quot;headingId&quot;: &quot;A String&quot;, # The ID of a heading in this document.
                      },
                      &quot;strikethrough&quot;: True or False, # Whether or not the text is struck through.
                      &quot;weightedFontFamily&quot;: { # Represents a font family and weight of text. # The font family and rendered weight of the text. If an update request specifies values for both `weighted_font_family` and `bold`, the `weighted_font_family` is applied first, then `bold`. If `weighted_font_family#weight` is not set, it defaults to `400`. If `weighted_font_family` is set, then `weighted_font_family#font_family` must also be set with a non-empty value. Otherwise, a 400 bad request error is returned.
                        &quot;fontFamily&quot;: &quot;A String&quot;, # The font family of the text. The font family can be any font from the Font menu in Docs or from [Google Fonts] (https://fonts.google.com/). If the font name is unrecognized, the text is rendered in `Arial`.
                        &quot;weight&quot;: 42, # The weight of the font. This field can have any value that is a multiple of `100` between `100` and `900`, inclusive. This range corresponds to the numerical values described in the CSS 2.1 Specification, [section 15.6](https://www.w3.org/TR/CSS21/fonts.html#font-boldness), with non-numerical values disallowed. The default value is `400` (&quot;normal&quot;). The font weight makes up just one component of the rendered font weight. The rendered weight is determined by a combination of the `weight` and the text style&#x27;s resolved `bold` value, after accounting for inheritance: * If the text is bold and the weight is less than `400`, the rendered weight is 400. * If the text is bold and the weight is greater than or equal to `400` but is less than `700`, the rendered weight is `700`. * If the weight is greater than or equal to `700`, the rendered weight is equal to the weight. * If the text is not bold, the rendered weight is equal to the weight.
                      },
                      &quot;underline&quot;: True or False, # Whether or not the text is underlined.
                      &quot;smallCaps&quot;: True or False, # Whether or not the text is in small capital letters.
                    },
                    &quot;suggestedInsertionIds&quot;: [ # The suggested insertion IDs. A ColumnBreak may have multiple insertion IDs if it is a nested suggested change. If empty, then this is not a suggested insertion.
                      &quot;A String&quot;,
                    ],
                  },
                },
              ],
              &quot;positionedObjectIds&quot;: [ # The IDs of the positioned objects tethered to this paragraph.
                &quot;A String&quot;,
              ],
              &quot;paragraphStyle&quot;: { # Styles that apply to a whole paragraph. Inherited paragraph styles are represented as unset fields in this message. A paragraph style&#x27;s parent depends on where the paragraph style is defined: * The ParagraphStyle on a Paragraph inherits from the paragraph&#x27;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 is 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. # The style of this paragraph.
                &quot;borderRight&quot;: { # A border around a paragraph. # The border to the right of this paragraph. If unset, the value is inherited from the parent. Paragraph borders cannot be partially updated. When making changes to a paragraph border the new border must be specified in its entirety.
                  &quot;color&quot;: { # A color that can either be fully opaque or fully transparent. # The color of the border.
                    &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                      &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                        &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                        &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                        &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                      },
                    },
                  },
                  &quot;width&quot;: { # A magnitude in a single direction in the specified units. # The width of the border.
                    &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                    &quot;magnitude&quot;: 3.14, # The magnitude.
                  },
                  &quot;padding&quot;: { # A magnitude in a single direction in the specified units. # The padding of the border.
                    &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                    &quot;magnitude&quot;: 3.14, # The magnitude.
                  },
                  &quot;dashStyle&quot;: &quot;A String&quot;, # The dash style of the border.
                },
                &quot;indentFirstLine&quot;: { # A magnitude in a single direction in the specified units. # The amount of indentation for the first line of the paragraph. If unset, the value is inherited from the parent.
                  &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                  &quot;magnitude&quot;: 3.14, # The magnitude.
                },
                &quot;alignment&quot;: &quot;A String&quot;, # The text alignment for this paragraph.
                &quot;lineSpacing&quot;: 3.14, # The amount of space between lines, as a percentage of normal, where normal is represented as 100.0. If unset, the value is inherited from the parent.
                &quot;keepLinesTogether&quot;: True or False, # Whether all lines of the paragraph should be laid out on the same page or column if possible. If unset, the value is inherited from the parent.
                &quot;avoidWidowAndOrphan&quot;: True or False, # Whether to avoid widows and orphans for the paragraph. If unset, the value is inherited from the parent.
                &quot;spaceBelow&quot;: { # A magnitude in a single direction in the specified units. # The amount of extra space below the paragraph. If unset, the value is inherited from the parent.
                  &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                  &quot;magnitude&quot;: 3.14, # The magnitude.
                },
                &quot;borderBetween&quot;: { # A border around a paragraph. # 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 making changes to a paragraph border the new border must be specified in its entirety.
                  &quot;color&quot;: { # A color that can either be fully opaque or fully transparent. # The color of the border.
                    &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                      &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                        &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                        &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                        &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                      },
                    },
                  },
                  &quot;width&quot;: { # A magnitude in a single direction in the specified units. # The width of the border.
                    &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                    &quot;magnitude&quot;: 3.14, # The magnitude.
                  },
                  &quot;padding&quot;: { # A magnitude in a single direction in the specified units. # The padding of the border.
                    &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                    &quot;magnitude&quot;: 3.14, # The magnitude.
                  },
                  &quot;dashStyle&quot;: &quot;A String&quot;, # The dash style of the border.
                },
                &quot;headingId&quot;: &quot;A String&quot;, # The heading ID of the paragraph. If empty, then this paragraph is not a heading. This property is read-only.
                &quot;spaceAbove&quot;: { # A magnitude in a single direction in the specified units. # The amount of extra space above the paragraph. If unset, the value is inherited from the parent.
                  &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                  &quot;magnitude&quot;: 3.14, # The magnitude.
                },
                &quot;direction&quot;: &quot;A String&quot;, # The text direction of this paragraph. If unset, the value defaults to LEFT_TO_RIGHT since paragraph direction is not inherited.
                &quot;namedStyleType&quot;: &quot;A String&quot;, # The named style type of the paragraph. Since updating the named style type affects other properties within ParagraphStyle, the named style type is applied before the other properties are updated.
                &quot;tabStops&quot;: [ # A list of the tab stops for this paragraph. The list of tab stops is not inherited. This property is read-only.
                  { # A tab stop within a paragraph.
                    &quot;offset&quot;: { # A magnitude in a single direction in the specified units. # The offset between this tab stop and the start margin.
                      &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                      &quot;magnitude&quot;: 3.14, # The magnitude.
                    },
                    &quot;alignment&quot;: &quot;A String&quot;, # The alignment of this tab stop. If unset, the value defaults to START.
                  },
                ],
                &quot;indentStart&quot;: { # A magnitude in a single direction in the specified units. # The amount of indentation for the paragraph on the side that corresponds to the start of the text, based on the current paragraph direction. If unset, the value is inherited from the parent.
                  &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                  &quot;magnitude&quot;: 3.14, # The magnitude.
                },
                &quot;keepWithNext&quot;: True or False, # Whether at least a part of this paragraph should be laid out on the same page or column as the next paragraph if possible. If unset, the value is inherited from the parent.
                &quot;borderTop&quot;: { # A border around a paragraph. # 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 making changes to a paragraph border the new border must be specified in its entirety.
                  &quot;color&quot;: { # A color that can either be fully opaque or fully transparent. # The color of the border.
                    &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                      &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                        &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                        &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                        &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                      },
                    },
                  },
                  &quot;width&quot;: { # A magnitude in a single direction in the specified units. # The width of the border.
                    &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                    &quot;magnitude&quot;: 3.14, # The magnitude.
                  },
                  &quot;padding&quot;: { # A magnitude in a single direction in the specified units. # The padding of the border.
                    &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                    &quot;magnitude&quot;: 3.14, # The magnitude.
                  },
                  &quot;dashStyle&quot;: &quot;A String&quot;, # The dash style of the border.
                },
                &quot;borderLeft&quot;: { # A border around a paragraph. # The border to the left of this paragraph. If unset, the value is inherited from the parent. Paragraph borders cannot be partially updated. When making changes to a paragraph border the new border must be specified in its entirety.
                  &quot;color&quot;: { # A color that can either be fully opaque or fully transparent. # The color of the border.
                    &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                      &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                        &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                        &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                        &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                      },
                    },
                  },
                  &quot;width&quot;: { # A magnitude in a single direction in the specified units. # The width of the border.
                    &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                    &quot;magnitude&quot;: 3.14, # The magnitude.
                  },
                  &quot;padding&quot;: { # A magnitude in a single direction in the specified units. # The padding of the border.
                    &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                    &quot;magnitude&quot;: 3.14, # The magnitude.
                  },
                  &quot;dashStyle&quot;: &quot;A String&quot;, # The dash style of the border.
                },
                &quot;borderBottom&quot;: { # A border around a paragraph. # 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 making changes to a paragraph border the new border must be specified in its entirety.
                  &quot;color&quot;: { # A color that can either be fully opaque or fully transparent. # The color of the border.
                    &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                      &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                        &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                        &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                        &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                      },
                    },
                  },
                  &quot;width&quot;: { # A magnitude in a single direction in the specified units. # The width of the border.
                    &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                    &quot;magnitude&quot;: 3.14, # The magnitude.
                  },
                  &quot;padding&quot;: { # A magnitude in a single direction in the specified units. # The padding of the border.
                    &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                    &quot;magnitude&quot;: 3.14, # The magnitude.
                  },
                  &quot;dashStyle&quot;: &quot;A String&quot;, # The dash style of the border.
                },
                &quot;shading&quot;: { # The shading of a paragraph. # The shading of the paragraph. If unset, the value is inherited from the parent.
                  &quot;backgroundColor&quot;: { # A color that can either be fully opaque or fully transparent. # The background color of this paragraph shading.
                    &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                      &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                        &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                        &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                        &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                      },
                    },
                  },
                },
                &quot;indentEnd&quot;: { # A magnitude in a single direction in the specified units. # 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.
                  &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                  &quot;magnitude&quot;: 3.14, # The magnitude.
                },
                &quot;spacingMode&quot;: &quot;A String&quot;, # The spacing mode for the paragraph.
              },
            },
            &quot;startIndex&quot;: 42, # The zero-based start index of this structural element, in UTF-16 code units.
            &quot;endIndex&quot;: 42, # The zero-based end index of this structural element, exclusive, in UTF-16 code units.
            &quot;tableOfContents&quot;: { # A StructuralElement representing a table of contents. # A table of contents type of structural element.
              &quot;suggestedInsertionIds&quot;: [ # The suggested insertion IDs. A TableOfContents may have multiple insertion IDs if it is a nested suggested change. If empty, then this is not a suggested insertion.
                &quot;A String&quot;,
              ],
              &quot;content&quot;: [ # The content of the table of contents.
                # Object with schema name: StructuralElement
              ],
              &quot;suggestedDeletionIds&quot;: [ # The suggested deletion IDs. If empty, then there are no suggested deletions of this content.
                &quot;A String&quot;,
              ],
            },
            &quot;table&quot;: { # A StructuralElement representing a table. # A table type of structural element.
              &quot;tableStyle&quot;: { # Styles that apply to a table. # The style of the table.
                &quot;tableColumnProperties&quot;: [ # The properties of each column. Note that in Docs, tables contain rows and rows contain cells, similar to HTML. So the properties for a row can be found on the row&#x27;s table_row_style.
                  { # The properties of a column in a table.
                    &quot;widthType&quot;: &quot;A String&quot;, # The width type of the column.
                    &quot;width&quot;: { # A magnitude in a single direction in the specified units. # The width of the column. Set when the column&#x27;s `width_type` is FIXED_WIDTH.
                      &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                      &quot;magnitude&quot;: 3.14, # The magnitude.
                    },
                  },
                ],
              },
              &quot;suggestedInsertionIds&quot;: [ # The suggested insertion IDs. A Table may have multiple insertion IDs if it is a nested suggested change. If empty, then this is not a suggested insertion.
                &quot;A String&quot;,
              ],
              &quot;tableRows&quot;: [ # The contents and style of each row.
                { # The contents and style of a row in a Table.
                  &quot;suggestedDeletionIds&quot;: [ # The suggested deletion IDs. If empty, then there are no suggested deletions of this content.
                    &quot;A String&quot;,
                  ],
                  &quot;suggestedInsertionIds&quot;: [ # The suggested insertion IDs. A TableRow may have multiple insertion IDs if it is a nested suggested change. If empty, then this is not a suggested insertion.
                    &quot;A String&quot;,
                  ],
                  &quot;suggestedTableRowStyleChanges&quot;: { # The suggested style changes to this row, keyed by suggestion ID.
                    &quot;a_key&quot;: { # A suggested change to a TableRowStyle.
                      &quot;tableRowStyleSuggestionState&quot;: { # A mask that indicates which of the fields on the base TableRowStyle have been changed in this suggestion. For any field set to true, there is a new suggested value. # A mask that indicates which of the fields on the base TableRowStyle have been changed in this suggestion.
                        &quot;minRowHeightSuggested&quot;: True or False, # Indicates if there was a suggested change to min_row_height.
                      },
                      &quot;tableRowStyle&quot;: { # Styles that apply to a table row. # A TableRowStyle that only includes the changes made in this suggestion. This can be used along with the table_row_style_suggestion_state to see which fields have changed and their new values.
                        &quot;minRowHeight&quot;: { # A magnitude in a single direction in the specified units. # The minimum height of the row. The row will be rendered in the Docs editor at a height equal to or greater than this value in order to show all the content in the row&#x27;s cells.
                          &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                          &quot;magnitude&quot;: 3.14, # The magnitude.
                        },
                      },
                    },
                  },
                  &quot;startIndex&quot;: 42, # The zero-based start index of this row, in UTF-16 code units.
                  &quot;tableCells&quot;: [ # The contents and style of each cell in this row. It is possible for a table to be non-rectangular, so some rows may have a different number of cells than other rows in the same table.
                    { # The contents and style of a cell in a Table.
                      &quot;tableCellStyle&quot;: { # The style of a TableCell. Inherited table cell styles are represented as unset fields in this message. A table cell style can inherit from the table&#x27;s style. # The style of the cell.
                        &quot;borderTop&quot;: { # A border around a table cell. Table cell borders cannot be transparent. To hide a table cell border, make its width 0. # The top border of the cell.
                          &quot;width&quot;: { # A magnitude in a single direction in the specified units. # The width of the border.
                            &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                            &quot;magnitude&quot;: 3.14, # The magnitude.
                          },
                          &quot;dashStyle&quot;: &quot;A String&quot;, # The dash style of the border.
                          &quot;color&quot;: { # A color that can either be fully opaque or fully transparent. # The color of the border. This color cannot be transparent.
                            &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                              &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                                &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                                &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                                &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                              },
                            },
                          },
                        },
                        &quot;borderBottom&quot;: { # A border around a table cell. Table cell borders cannot be transparent. To hide a table cell border, make its width 0. # The bottom border of the cell.
                          &quot;width&quot;: { # A magnitude in a single direction in the specified units. # The width of the border.
                            &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                            &quot;magnitude&quot;: 3.14, # The magnitude.
                          },
                          &quot;dashStyle&quot;: &quot;A String&quot;, # The dash style of the border.
                          &quot;color&quot;: { # A color that can either be fully opaque or fully transparent. # The color of the border. This color cannot be transparent.
                            &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                              &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                                &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                                &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                                &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                              },
                            },
                          },
                        },
                        &quot;contentAlignment&quot;: &quot;A String&quot;, # The alignment of the content in the table cell. The default alignment matches the alignment for newly created table cells in the Docs editor.
                        &quot;paddingLeft&quot;: { # A magnitude in a single direction in the specified units. # The left padding of the cell.
                          &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                          &quot;magnitude&quot;: 3.14, # The magnitude.
                        },
                        &quot;backgroundColor&quot;: { # A color that can either be fully opaque or fully transparent. # The background color of the cell.
                          &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                            &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                              &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                              &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                              &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                            },
                          },
                        },
                        &quot;paddingTop&quot;: { # A magnitude in a single direction in the specified units. # The top padding of the cell.
                          &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                          &quot;magnitude&quot;: 3.14, # The magnitude.
                        },
                        &quot;rowSpan&quot;: 42, # The row span of the cell. This property is read-only.
                        &quot;paddingRight&quot;: { # A magnitude in a single direction in the specified units. # The right padding of the cell.
                          &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                          &quot;magnitude&quot;: 3.14, # The magnitude.
                        },
                        &quot;borderRight&quot;: { # A border around a table cell. Table cell borders cannot be transparent. To hide a table cell border, make its width 0. # The right border of the cell.
                          &quot;width&quot;: { # A magnitude in a single direction in the specified units. # The width of the border.
                            &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                            &quot;magnitude&quot;: 3.14, # The magnitude.
                          },
                          &quot;dashStyle&quot;: &quot;A String&quot;, # The dash style of the border.
                          &quot;color&quot;: { # A color that can either be fully opaque or fully transparent. # The color of the border. This color cannot be transparent.
                            &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                              &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                                &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                                &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                                &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                              },
                            },
                          },
                        },
                        &quot;borderLeft&quot;: { # A border around a table cell. Table cell borders cannot be transparent. To hide a table cell border, make its width 0. # The left border of the cell.
                          &quot;width&quot;: { # A magnitude in a single direction in the specified units. # The width of the border.
                            &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                            &quot;magnitude&quot;: 3.14, # The magnitude.
                          },
                          &quot;dashStyle&quot;: &quot;A String&quot;, # The dash style of the border.
                          &quot;color&quot;: { # A color that can either be fully opaque or fully transparent. # The color of the border. This color cannot be transparent.
                            &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                              &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                                &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                                &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                                &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                              },
                            },
                          },
                        },
                        &quot;columnSpan&quot;: 42, # The column span of the cell. This property is read-only.
                        &quot;paddingBottom&quot;: { # A magnitude in a single direction in the specified units. # The bottom padding of the cell.
                          &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                          &quot;magnitude&quot;: 3.14, # The magnitude.
                        },
                      },
                      &quot;content&quot;: [ # The content of the cell.
                        # Object with schema name: StructuralElement
                      ],
                      &quot;suggestedDeletionIds&quot;: [ # The suggested deletion IDs. If empty, then there are no suggested deletions of this content.
                        &quot;A String&quot;,
                      ],
                      &quot;startIndex&quot;: 42, # The zero-based start index of this cell, in UTF-16 code units.
                      &quot;suggestedInsertionIds&quot;: [ # The suggested insertion IDs. A TableCell may have multiple insertion IDs if it is a nested suggested change. If empty, then this is not a suggested insertion.
                        &quot;A String&quot;,
                      ],
                      &quot;suggestedTableCellStyleChanges&quot;: { # The suggested changes to the table cell style, keyed by suggestion ID.
                        &quot;a_key&quot;: { # A suggested change to a TableCellStyle.
                          &quot;tableCellStyle&quot;: { # The style of a TableCell. Inherited table cell styles are represented as unset fields in this message. A table cell style can inherit from the table&#x27;s style. # A TableCellStyle that only includes the changes made in this suggestion. This can be used along with the table_cell_style_suggestion_state to see which fields have changed and their new values.
                            &quot;borderTop&quot;: { # A border around a table cell. Table cell borders cannot be transparent. To hide a table cell border, make its width 0. # The top border of the cell.
                              &quot;width&quot;: { # A magnitude in a single direction in the specified units. # The width of the border.
                                &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                                &quot;magnitude&quot;: 3.14, # The magnitude.
                              },
                              &quot;dashStyle&quot;: &quot;A String&quot;, # The dash style of the border.
                              &quot;color&quot;: { # A color that can either be fully opaque or fully transparent. # The color of the border. This color cannot be transparent.
                                &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                                  &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                                    &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                                    &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                                    &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                                  },
                                },
                              },
                            },
                            &quot;borderBottom&quot;: { # A border around a table cell. Table cell borders cannot be transparent. To hide a table cell border, make its width 0. # The bottom border of the cell.
                              &quot;width&quot;: { # A magnitude in a single direction in the specified units. # The width of the border.
                                &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                                &quot;magnitude&quot;: 3.14, # The magnitude.
                              },
                              &quot;dashStyle&quot;: &quot;A String&quot;, # The dash style of the border.
                              &quot;color&quot;: { # A color that can either be fully opaque or fully transparent. # The color of the border. This color cannot be transparent.
                                &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                                  &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                                    &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                                    &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                                    &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                                  },
                                },
                              },
                            },
                            &quot;contentAlignment&quot;: &quot;A String&quot;, # The alignment of the content in the table cell. The default alignment matches the alignment for newly created table cells in the Docs editor.
                            &quot;paddingLeft&quot;: { # A magnitude in a single direction in the specified units. # The left padding of the cell.
                              &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                              &quot;magnitude&quot;: 3.14, # The magnitude.
                            },
                            &quot;backgroundColor&quot;: { # A color that can either be fully opaque or fully transparent. # The background color of the cell.
                              &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                                &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                                  &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                                  &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                                  &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                                },
                              },
                            },
                            &quot;paddingTop&quot;: { # A magnitude in a single direction in the specified units. # The top padding of the cell.
                              &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                              &quot;magnitude&quot;: 3.14, # The magnitude.
                            },
                            &quot;rowSpan&quot;: 42, # The row span of the cell. This property is read-only.
                            &quot;paddingRight&quot;: { # A magnitude in a single direction in the specified units. # The right padding of the cell.
                              &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                              &quot;magnitude&quot;: 3.14, # The magnitude.
                            },
                            &quot;borderRight&quot;: { # A border around a table cell. Table cell borders cannot be transparent. To hide a table cell border, make its width 0. # The right border of the cell.
                              &quot;width&quot;: { # A magnitude in a single direction in the specified units. # The width of the border.
                                &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                                &quot;magnitude&quot;: 3.14, # The magnitude.
                              },
                              &quot;dashStyle&quot;: &quot;A String&quot;, # The dash style of the border.
                              &quot;color&quot;: { # A color that can either be fully opaque or fully transparent. # The color of the border. This color cannot be transparent.
                                &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                                  &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                                    &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                                    &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                                    &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                                  },
                                },
                              },
                            },
                            &quot;borderLeft&quot;: { # A border around a table cell. Table cell borders cannot be transparent. To hide a table cell border, make its width 0. # The left border of the cell.
                              &quot;width&quot;: { # A magnitude in a single direction in the specified units. # The width of the border.
                                &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                                &quot;magnitude&quot;: 3.14, # The magnitude.
                              },
                              &quot;dashStyle&quot;: &quot;A String&quot;, # The dash style of the border.
                              &quot;color&quot;: { # A color that can either be fully opaque or fully transparent. # The color of the border. This color cannot be transparent.
                                &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                                  &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                                    &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                                    &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                                    &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                                  },
                                },
                              },
                            },
                            &quot;columnSpan&quot;: 42, # The column span of the cell. This property is read-only.
                            &quot;paddingBottom&quot;: { # A magnitude in a single direction in the specified units. # The bottom padding of the cell.
                              &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                              &quot;magnitude&quot;: 3.14, # The magnitude.
                            },
                          },
                          &quot;tableCellStyleSuggestionState&quot;: { # A mask that indicates which of the fields on the base TableCellStyle have been changed in this suggestion. For any field set to true, there is a new suggested value. # A mask that indicates which of the fields on the base TableCellStyle have been changed in this suggestion.
                            &quot;rowSpanSuggested&quot;: True or False, # Indicates if there was a suggested change to row_span.
                            &quot;columnSpanSuggested&quot;: True or False, # Indicates if there was a suggested change to column_span.
                            &quot;borderBottomSuggested&quot;: True or False, # Indicates if there was a suggested change to border_bottom.
                            &quot;borderLeftSuggested&quot;: True or False, # Indicates if there was a suggested change to border_left.
                            &quot;paddingLeftSuggested&quot;: True or False, # Indicates if there was a suggested change to padding_left.
                            &quot;paddingRightSuggested&quot;: True or False, # Indicates if there was a suggested change to padding_right.
                            &quot;paddingBottomSuggested&quot;: True or False, # Indicates if there was a suggested change to padding_bottom.
                            &quot;paddingTopSuggested&quot;: True or False, # Indicates if there was a suggested change to padding_top.
                            &quot;contentAlignmentSuggested&quot;: True or False, # Indicates if there was a suggested change to content_alignment.
                            &quot;borderRightSuggested&quot;: True or False, # Indicates if there was a suggested change to border_right.
                            &quot;backgroundColorSuggested&quot;: True or False, # Indicates if there was a suggested change to background_color.
                            &quot;borderTopSuggested&quot;: True or False, # Indicates if there was a suggested change to border_top.
                          },
                        },
                      },
                      &quot;endIndex&quot;: 42, # The zero-based end index of this cell, exclusive, in UTF-16 code units.
                    },
                  ],
                  &quot;endIndex&quot;: 42, # The zero-based end index of this row, exclusive, in UTF-16 code units.
                  &quot;tableRowStyle&quot;: { # Styles that apply to a table row. # The style of the table row.
                    &quot;minRowHeight&quot;: { # A magnitude in a single direction in the specified units. # The minimum height of the row. The row will be rendered in the Docs editor at a height equal to or greater than this value in order to show all the content in the row&#x27;s cells.
                      &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                      &quot;magnitude&quot;: 3.14, # The magnitude.
                    },
                  },
                },
              ],
              &quot;suggestedDeletionIds&quot;: [ # The suggested deletion IDs. If empty, then there are no suggested deletions of this content.
                &quot;A String&quot;,
              ],
              &quot;rows&quot;: 42, # Number of rows in the table.
              &quot;columns&quot;: 42, # Number of columns in the table. It is possible for a table to be non-rectangular, so some rows may have a different number of cells.
            },
            &quot;sectionBreak&quot;: { # A StructuralElement representing a section break. A section is a range of content which has the same SectionStyle. A section break represents the start of a new section, and the section style applies to the section after the section break. The document body always begins with a section break. # A section break type of structural element.
              &quot;suggestedInsertionIds&quot;: [ # The suggested insertion IDs. A SectionBreak may have multiple insertion IDs if it is a nested suggested change. If empty, then this is not a suggested insertion.
                &quot;A String&quot;,
              ],
              &quot;sectionStyle&quot;: { # The styling that applies to a section. # The style of the section after this section break.
                &quot;marginLeft&quot;: { # A magnitude in a single direction in the specified units. # The left page margin of the section. If unset, uses margin_left from DocumentStyle. Updating left margin causes columns in this section to resize. Since the margin affects column width, it is applied before column properties. When updating this property, setting a concrete value is required. Unsetting this property results in a 400 bad request error.
                  &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                  &quot;magnitude&quot;: 3.14, # The magnitude.
                },
                &quot;sectionType&quot;: &quot;A String&quot;, # Output only. The type of section.
                &quot;evenPageHeaderId&quot;: &quot;A String&quot;, # The ID of the header used only for even pages. If the value of DocumentStyle&#x27;s use_even_page_header_footer is true, this value is used for the headers on even pages in the section. If it is false, the headers on even pages uses the default_header_id. If unset, the value inherits from the previous SectionBreak&#x27;s SectionStyle. If the value is unset in the first SectionBreak, it inherits from DocumentStyle&#x27;s even_page_header_id. This property is read-only.
                &quot;useFirstPageHeaderFooter&quot;: True or False, # Indicates whether to use the first page header / footer IDs for the first page of the section. If unset, it inherits from DocumentStyle&#x27;s use_first_page_header_footer for the first section. If the value is unset for subsequent sectors, it should be interpreted as false. When updating this property, setting a concrete value is required. Unsetting this property results in a 400 bad request error.
                &quot;marginHeader&quot;: { # A magnitude in a single direction in the specified units. # The header margin of the section. If unset, uses margin_header from DocumentStyle. If updated, use_custom_header_footer_margins is set to true on DocumentStyle. The value of use_custom_header_footer_margins on DocumentStyle indicates if a header margin is being respected for this section. When updating this property, setting a concrete value is required. Unsetting this property results in a 400 bad request error.
                  &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                  &quot;magnitude&quot;: 3.14, # The magnitude.
                },
                &quot;firstPageFooterId&quot;: &quot;A String&quot;, # The ID of the footer used only for the first page of the section. If use_first_page_header_footer is true, this value is used for the footer on the first page of the section. If it is false, the footer on the first page of the section uses the default_footer_id. If unset, the value inherits from the previous SectionBreak&#x27;s SectionStyle. If the value is unset in the first SectionBreak, it inherits from DocumentStyle&#x27;s first_page_footer_id. This property is read-only.
                &quot;firstPageHeaderId&quot;: &quot;A String&quot;, # The ID of the header used only for the first page of the section. If use_first_page_header_footer is true, this value is used for the header on the first page of the section. If it is false, the header on the first page of the section uses the default_header_id. If unset, the value inherits from the previous SectionBreak&#x27;s SectionStyle. If the value is unset in the first SectionBreak, it inherits from DocumentStyle&#x27;s first_page_header_id. This property is read-only.
                &quot;columnSeparatorStyle&quot;: &quot;A String&quot;, # The style of column separators. This style can be set even when there is one column in the section. When updating this property, setting a concrete value is required. Unsetting this property results in a 400 bad request error.
                &quot;marginBottom&quot;: { # A magnitude in a single direction in the specified units. # The bottom page margin of the section. If unset, uses margin_bottom from DocumentStyle. When updating this property, setting a concrete value is required. Unsetting this property results in a 400 bad request error.
                  &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                  &quot;magnitude&quot;: 3.14, # The magnitude.
                },
                &quot;marginFooter&quot;: { # A magnitude in a single direction in the specified units. # The footer margin of the section. If unset, uses margin_footer from DocumentStyle. If updated, use_custom_header_footer_margins is set to true on DocumentStyle. The value of use_custom_header_footer_margins on DocumentStyle indicates if a footer margin is being respected for this section When updating this property, setting a concrete value is required. Unsetting this property results in a 400 bad request error.
                  &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                  &quot;magnitude&quot;: 3.14, # The magnitude.
                },
                &quot;defaultFooterId&quot;: &quot;A String&quot;, # The ID of the default footer. If unset, the value inherits from the previous SectionBreak&#x27;s SectionStyle. If the value is unset in the first SectionBreak, it inherits from DocumentStyle&#x27;s default_footer_id. This property is read-only.
                &quot;marginTop&quot;: { # A magnitude in a single direction in the specified units. # The top page margin of the section. If unset, uses margin_top from DocumentStyle. When updating this property, setting a concrete value is required. Unsetting this property results in a 400 bad request error.
                  &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                  &quot;magnitude&quot;: 3.14, # The magnitude.
                },
                &quot;contentDirection&quot;: &quot;A String&quot;, # The content direction of this section. If unset, the value defaults to LEFT_TO_RIGHT. When updating this property, setting a concrete value is required. Unsetting this property results in a 400 bad request error.
                &quot;evenPageFooterId&quot;: &quot;A String&quot;, # The ID of the footer used only for even pages. If the value of DocumentStyle&#x27;s use_even_page_header_footer is true, this value is used for the footers on even pages in the section. If it is false, the footers on even pages uses the default_footer_id. If unset, the value inherits from the previous SectionBreak&#x27;s SectionStyle. If the value is unset in the first SectionBreak, it inherits from DocumentStyle&#x27;s even_page_footer_id. This property is read-only.
                &quot;marginRight&quot;: { # A magnitude in a single direction in the specified units. # The right page margin of the section. If unset, uses margin_right from DocumentStyle. Updating right margin causes columns in this section to resize. Since the margin affects column width, it is applied before column properties. When updating this property, setting a concrete value is required. Unsetting this property results in a 400 bad request error.
                  &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                  &quot;magnitude&quot;: 3.14, # The magnitude.
                },
                &quot;defaultHeaderId&quot;: &quot;A String&quot;, # The ID of the default header. If unset, the value inherits from the previous SectionBreak&#x27;s SectionStyle. If the value is unset in the first SectionBreak, it inherits from DocumentStyle&#x27;s default_header_id. This property is read-only.
                &quot;pageNumberStart&quot;: 42, # The page number from which to start counting the number of pages for this section. If unset, page numbering continues from the previous section. If the value is unset in the first SectionBreak, refer to DocumentStyle&#x27;s page_number_start. When updating this property, setting a concrete value is required. Unsetting this property results in a 400 bad request error.
                &quot;columnProperties&quot;: [ # The section&#x27;s columns properties. If empty, the section contains one column with the default properties in the Docs editor. A section can be updated to have no more than three columns. When updating this property, setting a concrete value is required. Unsetting this property will result in a 400 bad request error.
                  { # Properties that apply to a section&#x27;s column.
                    &quot;paddingEnd&quot;: { # A magnitude in a single direction in the specified units. # The padding at the end of the column.
                      &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                      &quot;magnitude&quot;: 3.14, # The magnitude.
                    },
                    &quot;width&quot;: { # A magnitude in a single direction in the specified units. # Output only. The width of the column.
                      &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                      &quot;magnitude&quot;: 3.14, # The magnitude.
                    },
                  },
                ],
              },
              &quot;suggestedDeletionIds&quot;: [ # The suggested deletion IDs. If empty, then there are no suggested deletions of this content.
                &quot;A String&quot;,
              ],
            },
          },
        ],
        &quot;footerId&quot;: &quot;A String&quot;, # The ID of the footer.
      },
    },
    &quot;title&quot;: &quot;A String&quot;, # The title of the document.
    &quot;documentStyle&quot;: { # The style of the document. # Output only. The style of the document.
      &quot;useFirstPageHeaderFooter&quot;: True or False, # Indicates whether to use the first page header / footer IDs for the first page.
      &quot;marginBottom&quot;: { # A magnitude in a single direction in the specified units. # The bottom page margin. Updating the bottom page margin on the document style clears the bottom page margin on all section styles.
        &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
        &quot;magnitude&quot;: 3.14, # The magnitude.
      },
      &quot;pageSize&quot;: { # A width and height. # The size of a page in the document.
        &quot;width&quot;: { # A magnitude in a single direction in the specified units. # The width of the object.
          &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
          &quot;magnitude&quot;: 3.14, # The magnitude.
        },
        &quot;height&quot;: { # A magnitude in a single direction in the specified units. # The height of the object.
          &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
          &quot;magnitude&quot;: 3.14, # The magnitude.
        },
      },
      &quot;marginLeft&quot;: { # A magnitude in a single direction in the specified units. # 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.
        &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
        &quot;magnitude&quot;: 3.14, # The magnitude.
      },
      &quot;defaultFooterId&quot;: &quot;A String&quot;, # The ID of the default footer. If not set, there is no default footer. This property is read-only.
      &quot;marginHeader&quot;: { # A magnitude in a single direction in the specified units. # The amount of space between the top of the page and the contents of the header.
        &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
        &quot;magnitude&quot;: 3.14, # The magnitude.
      },
      &quot;marginFooter&quot;: { # A magnitude in a single direction in the specified units. # The amount of space between the bottom of the page and the contents of the footer.
        &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
        &quot;magnitude&quot;: 3.14, # The magnitude.
      },
      &quot;firstPageHeaderId&quot;: &quot;A String&quot;, # 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 is no first page header. This property is read-only.
      &quot;useCustomHeaderFooterMargins&quot;: True or False, # 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.
      &quot;defaultHeaderId&quot;: &quot;A String&quot;, # The ID of the default header. If not set, there is no default header. This property is read-only.
      &quot;evenPageFooterId&quot;: &quot;A String&quot;, # 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 is no even page footer. This property is read-only.
      &quot;evenPageHeaderId&quot;: &quot;A String&quot;, # 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 is no even page header. This property is read-only.
      &quot;marginTop&quot;: { # A magnitude in a single direction in the specified units. # The top page margin. Updating the top page margin on the document style clears the top page margin on all section styles.
        &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
        &quot;magnitude&quot;: 3.14, # The magnitude.
      },
      &quot;useEvenPageHeaderFooter&quot;: True or False, # Indicates whether to use the even page header / footer IDs for the even pages.
      &quot;pageNumberStart&quot;: 42, # The page number from which to start counting the number of pages.
      &quot;marginRight&quot;: { # A magnitude in a single direction in the specified units. # 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.
        &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
        &quot;magnitude&quot;: 3.14, # The magnitude.
      },
      &quot;firstPageFooterId&quot;: &quot;A String&quot;, # 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 is no first page footer. This property is read-only.
      &quot;background&quot;: { # Represents the background of a document. # The background of the document. Documents cannot have a transparent background color.
        &quot;color&quot;: { # A color that can either be fully opaque or fully transparent. # The background color.
          &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
            &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
              &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
              &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
              &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
            },
          },
        },
      },
    },
    &quot;revisionId&quot;: &quot;A String&quot;, # Output only. The revision ID of the document. Can be used in update requests to specify which revision of a document to apply updates to and how the request should behave if the document has been edited since that revision. Only populated if the user has edit access to the document. The format of the revision ID may change over time, so it should be treated opaquely. A returned revision ID is only guaranteed to be valid for 24 hours after it has been returned and cannot be shared across users. If the revision ID is unchanged between calls, then the document has not changed. Conversely, a changed ID (for the same document and user) usually means the document has been updated; however, a changed ID can also be due to internal factors such as ID format changes.
    &quot;lists&quot;: { # Output only. The lists in the document, keyed by list ID.
      &quot;a_key&quot;: { # A List represents the list attributes for a group of paragraphs that all belong to the same list. A paragraph that is part of a list has a reference to the list&#x27;s ID in its bullet.
        &quot;suggestedInsertionId&quot;: &quot;A String&quot;, # The suggested insertion ID. If empty, then this is not a suggested insertion.
        &quot;suggestedDeletionIds&quot;: [ # The suggested deletion IDs. If empty, then there are no suggested deletions of this list.
          &quot;A String&quot;,
        ],
        &quot;listProperties&quot;: { # The properties of a list which describe the look and feel of bullets belonging to paragraphs associated with a list. # The properties of the list.
          &quot;nestingLevels&quot;: [ # Describes the properties of the bullets at the associated level. A list has at most nine levels of nesting with nesting level 0 corresponding to the top-most level and nesting level 8 corresponding to the most nested level. The nesting levels are returned in ascending order with the least nested returned first.
            { # Contains properties describing the look and feel of a list bullet at a given level of nesting.
              &quot;textStyle&quot;: { # Represents the styling that can be applied to text. Inherited text styles are represented as unset fields in this message. A text style&#x27;s parent depends on where the text style is defined: * The TextStyle of text in a Paragraph inherits from the paragraph&#x27;s corresponding named style type. * The TextStyle on a named style inherits from the normal text named style. * The TextStyle of the normal text named style inherits from the default text style in the Docs editor. * The TextStyle on a Paragraph element that is contained in a table may inherit its text style from the table style. If the text style does not inherit from a parent, unsetting fields will revert the style to a value matching the defaults in the Docs editor. # The text style of bullets at this level of nesting.
                &quot;italic&quot;: True or False, # Whether or not the text is italicized.
                &quot;baselineOffset&quot;: &quot;A String&quot;, # The text&#x27;s vertical offset from its normal position. Text with `SUPERSCRIPT` or `SUBSCRIPT` baseline offsets is automatically rendered in a smaller font size, computed based on the `font_size` field. The `font_size` itself is not affected by changes in this field.
                &quot;bold&quot;: True or False, # Whether or not the text is rendered as bold.
                &quot;fontSize&quot;: { # A magnitude in a single direction in the specified units. # The size of the text&#x27;s font.
                  &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                  &quot;magnitude&quot;: 3.14, # The magnitude.
                },
                &quot;foregroundColor&quot;: { # A color that can either be fully opaque or fully transparent. # The foreground color of the text. If set, the color is either an RGB color or transparent, depending on the `color` field.
                  &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                    &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                      &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                      &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                      &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                    },
                  },
                },
                &quot;backgroundColor&quot;: { # A color that can either be fully opaque or fully transparent. # The background color of the text. If set, the color is either an RGB color or transparent, depending on the `color` field.
                  &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                    &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                      &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                      &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                      &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                    },
                  },
                },
                &quot;link&quot;: { # A reference to another portion of a document or an external URL resource. # The hyperlink destination of the text. If unset, there is no link. Links are not inherited from parent text. Changing the link in an update request causes some other changes to the text style of the range: * When setting a link, the text foreground color will be updated to the default link color and the text will be underlined. If these fields are modified in the same request, those values will be used instead of the link defaults. * Setting a link on a text range that overlaps with an existing link will also update the existing link to point to the new URL. * Links are not settable on newline characters. As a result, setting a link on a text range that crosses a paragraph boundary, such as `&quot;ABC\n123&quot;`, will separate the newline character(s) into their own text runs. The link will be applied separately to the runs before and after the newline. * Removing a link will update the text style of the range to match the style of the preceding text (or the default text styles if the preceding text is another link) unless different styles are being set in the same request.
                  &quot;bookmarkId&quot;: &quot;A String&quot;, # The ID of a bookmark in this document.
                  &quot;url&quot;: &quot;A String&quot;, # An external URL.
                  &quot;headingId&quot;: &quot;A String&quot;, # The ID of a heading in this document.
                },
                &quot;strikethrough&quot;: True or False, # Whether or not the text is struck through.
                &quot;weightedFontFamily&quot;: { # Represents a font family and weight of text. # The font family and rendered weight of the text. If an update request specifies values for both `weighted_font_family` and `bold`, the `weighted_font_family` is applied first, then `bold`. If `weighted_font_family#weight` is not set, it defaults to `400`. If `weighted_font_family` is set, then `weighted_font_family#font_family` must also be set with a non-empty value. Otherwise, a 400 bad request error is returned.
                  &quot;fontFamily&quot;: &quot;A String&quot;, # The font family of the text. The font family can be any font from the Font menu in Docs or from [Google Fonts] (https://fonts.google.com/). If the font name is unrecognized, the text is rendered in `Arial`.
                  &quot;weight&quot;: 42, # The weight of the font. This field can have any value that is a multiple of `100` between `100` and `900`, inclusive. This range corresponds to the numerical values described in the CSS 2.1 Specification, [section 15.6](https://www.w3.org/TR/CSS21/fonts.html#font-boldness), with non-numerical values disallowed. The default value is `400` (&quot;normal&quot;). The font weight makes up just one component of the rendered font weight. The rendered weight is determined by a combination of the `weight` and the text style&#x27;s resolved `bold` value, after accounting for inheritance: * If the text is bold and the weight is less than `400`, the rendered weight is 400. * If the text is bold and the weight is greater than or equal to `400` but is less than `700`, the rendered weight is `700`. * If the weight is greater than or equal to `700`, the rendered weight is equal to the weight. * If the text is not bold, the rendered weight is equal to the weight.
                },
                &quot;underline&quot;: True or False, # Whether or not the text is underlined.
                &quot;smallCaps&quot;: True or False, # Whether or not the text is in small capital letters.
              },
              &quot;glyphSymbol&quot;: &quot;A String&quot;, # A custom glyph symbol used by bullets when paragraphs at this level of nesting are unordered. The glyph symbol replaces placeholders within the glyph_format. For example, if the glyph_symbol is the solid circle corresponding to Unicode U+25cf code point and the glyph_format is `%0`, the rendered glyph would be the solid circle.
              &quot;startNumber&quot;: 42, # The number of the first list item at this nesting level. A value of 0 is treated as a value of 1 for lettered lists and roman numeraled lists, i.e. for values of both 0 and 1, lettered and roman numeraled lists will begin at `a` and `i` respectively. This value is ignored for nesting levels with unordered glyphs.
              &quot;bulletAlignment&quot;: &quot;A String&quot;, # The alignment of the bullet within the space allotted for rendering the bullet.
              &quot;indentFirstLine&quot;: { # A magnitude in a single direction in the specified units. # The amount of indentation for the first line of paragraphs at this level of nesting.
                &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                &quot;magnitude&quot;: 3.14, # The magnitude.
              },
              &quot;indentStart&quot;: { # A magnitude in a single direction in the specified units. # The amount of indentation for paragraphs at this level of nesting. Applied to the side that corresponds to the start of the text, based on the paragraph&#x27;s content direction.
                &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                &quot;magnitude&quot;: 3.14, # The magnitude.
              },
              &quot;glyphType&quot;: &quot;A String&quot;, # The type of glyph used by bullets when paragraphs at this level of nesting are ordered. The glyph type determines the type of glyph used to replace placeholders within the glyph_format when paragraphs at this level of nesting are ordered. For example, if the nesting level is 0, the glyph_format is `%0.` and the glyph type is DECIMAL, then the rendered glyph would replace the placeholder `%0` in the glyph format with a number corresponding to list item&#x27;s order within the list.
              &quot;glyphFormat&quot;: &quot;A String&quot;, # The format string used by bullets at this level of nesting. The glyph format contains one or more placeholders, and these placeholder are replaced with the appropriate values depending on the glyph_type or glyph_symbol. The placeholders follow the pattern `%[nesting_level]`. Furthermore, placeholders can have prefixes and suffixes. Thus, the glyph format follows the pattern `%[nesting_level]`. Note that the prefix and suffix are optional and can be arbitrary strings. For example, the glyph format `%0.` indicates that the rendered glyph will replace the placeholder with the corresponding glyph for nesting level 0 followed by a period as the suffix. So a list with a glyph type of UPPER_ALPHA and glyph format `%0.` at nesting level 0 will result in a list with rendered glyphs `A.` `B.` `C.` The glyph format can contain placeholders for the current nesting level as well as placeholders for parent nesting levels. For example, a list can have a glyph format of `%0.` at nesting level 0 and a glyph format of `%0.%1.` at nesting level 1. Assuming both nesting levels have DECIMAL glyph types, this would result in a list with rendered glyphs `1.` `2.` ` 2.1.` ` 2.2.` `3.` For nesting levels that are ordered, the string that replaces a placeholder in the glyph format for a particular paragraph depends on the paragraph&#x27;s order within the list.
            },
          ],
        },
        &quot;suggestedListPropertiesChanges&quot;: { # The suggested changes to the list properties, keyed by suggestion ID.
          &quot;a_key&quot;: { # A suggested change to ListProperties.
            &quot;listProperties&quot;: { # The properties of a list which describe the look and feel of bullets belonging to paragraphs associated with a list. # A ListProperties that only includes the changes made in this suggestion. This can be used along with the list_properties_suggestion_state to see which fields have changed and their new values.
              &quot;nestingLevels&quot;: [ # Describes the properties of the bullets at the associated level. A list has at most nine levels of nesting with nesting level 0 corresponding to the top-most level and nesting level 8 corresponding to the most nested level. The nesting levels are returned in ascending order with the least nested returned first.
                { # Contains properties describing the look and feel of a list bullet at a given level of nesting.
                  &quot;textStyle&quot;: { # Represents the styling that can be applied to text. Inherited text styles are represented as unset fields in this message. A text style&#x27;s parent depends on where the text style is defined: * The TextStyle of text in a Paragraph inherits from the paragraph&#x27;s corresponding named style type. * The TextStyle on a named style inherits from the normal text named style. * The TextStyle of the normal text named style inherits from the default text style in the Docs editor. * The TextStyle on a Paragraph element that is contained in a table may inherit its text style from the table style. If the text style does not inherit from a parent, unsetting fields will revert the style to a value matching the defaults in the Docs editor. # The text style of bullets at this level of nesting.
                    &quot;italic&quot;: True or False, # Whether or not the text is italicized.
                    &quot;baselineOffset&quot;: &quot;A String&quot;, # The text&#x27;s vertical offset from its normal position. Text with `SUPERSCRIPT` or `SUBSCRIPT` baseline offsets is automatically rendered in a smaller font size, computed based on the `font_size` field. The `font_size` itself is not affected by changes in this field.
                    &quot;bold&quot;: True or False, # Whether or not the text is rendered as bold.
                    &quot;fontSize&quot;: { # A magnitude in a single direction in the specified units. # The size of the text&#x27;s font.
                      &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                      &quot;magnitude&quot;: 3.14, # The magnitude.
                    },
                    &quot;foregroundColor&quot;: { # A color that can either be fully opaque or fully transparent. # The foreground color of the text. If set, the color is either an RGB color or transparent, depending on the `color` field.
                      &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                        &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                          &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                          &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                          &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                        },
                      },
                    },
                    &quot;backgroundColor&quot;: { # A color that can either be fully opaque or fully transparent. # The background color of the text. If set, the color is either an RGB color or transparent, depending on the `color` field.
                      &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                        &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                          &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                          &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                          &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                        },
                      },
                    },
                    &quot;link&quot;: { # A reference to another portion of a document or an external URL resource. # The hyperlink destination of the text. If unset, there is no link. Links are not inherited from parent text. Changing the link in an update request causes some other changes to the text style of the range: * When setting a link, the text foreground color will be updated to the default link color and the text will be underlined. If these fields are modified in the same request, those values will be used instead of the link defaults. * Setting a link on a text range that overlaps with an existing link will also update the existing link to point to the new URL. * Links are not settable on newline characters. As a result, setting a link on a text range that crosses a paragraph boundary, such as `&quot;ABC\n123&quot;`, will separate the newline character(s) into their own text runs. The link will be applied separately to the runs before and after the newline. * Removing a link will update the text style of the range to match the style of the preceding text (or the default text styles if the preceding text is another link) unless different styles are being set in the same request.
                      &quot;bookmarkId&quot;: &quot;A String&quot;, # The ID of a bookmark in this document.
                      &quot;url&quot;: &quot;A String&quot;, # An external URL.
                      &quot;headingId&quot;: &quot;A String&quot;, # The ID of a heading in this document.
                    },
                    &quot;strikethrough&quot;: True or False, # Whether or not the text is struck through.
                    &quot;weightedFontFamily&quot;: { # Represents a font family and weight of text. # The font family and rendered weight of the text. If an update request specifies values for both `weighted_font_family` and `bold`, the `weighted_font_family` is applied first, then `bold`. If `weighted_font_family#weight` is not set, it defaults to `400`. If `weighted_font_family` is set, then `weighted_font_family#font_family` must also be set with a non-empty value. Otherwise, a 400 bad request error is returned.
                      &quot;fontFamily&quot;: &quot;A String&quot;, # The font family of the text. The font family can be any font from the Font menu in Docs or from [Google Fonts] (https://fonts.google.com/). If the font name is unrecognized, the text is rendered in `Arial`.
                      &quot;weight&quot;: 42, # The weight of the font. This field can have any value that is a multiple of `100` between `100` and `900`, inclusive. This range corresponds to the numerical values described in the CSS 2.1 Specification, [section 15.6](https://www.w3.org/TR/CSS21/fonts.html#font-boldness), with non-numerical values disallowed. The default value is `400` (&quot;normal&quot;). The font weight makes up just one component of the rendered font weight. The rendered weight is determined by a combination of the `weight` and the text style&#x27;s resolved `bold` value, after accounting for inheritance: * If the text is bold and the weight is less than `400`, the rendered weight is 400. * If the text is bold and the weight is greater than or equal to `400` but is less than `700`, the rendered weight is `700`. * If the weight is greater than or equal to `700`, the rendered weight is equal to the weight. * If the text is not bold, the rendered weight is equal to the weight.
                    },
                    &quot;underline&quot;: True or False, # Whether or not the text is underlined.
                    &quot;smallCaps&quot;: True or False, # Whether or not the text is in small capital letters.
                  },
                  &quot;glyphSymbol&quot;: &quot;A String&quot;, # A custom glyph symbol used by bullets when paragraphs at this level of nesting are unordered. The glyph symbol replaces placeholders within the glyph_format. For example, if the glyph_symbol is the solid circle corresponding to Unicode U+25cf code point and the glyph_format is `%0`, the rendered glyph would be the solid circle.
                  &quot;startNumber&quot;: 42, # The number of the first list item at this nesting level. A value of 0 is treated as a value of 1 for lettered lists and roman numeraled lists, i.e. for values of both 0 and 1, lettered and roman numeraled lists will begin at `a` and `i` respectively. This value is ignored for nesting levels with unordered glyphs.
                  &quot;bulletAlignment&quot;: &quot;A String&quot;, # The alignment of the bullet within the space allotted for rendering the bullet.
                  &quot;indentFirstLine&quot;: { # A magnitude in a single direction in the specified units. # The amount of indentation for the first line of paragraphs at this level of nesting.
                    &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                    &quot;magnitude&quot;: 3.14, # The magnitude.
                  },
                  &quot;indentStart&quot;: { # A magnitude in a single direction in the specified units. # The amount of indentation for paragraphs at this level of nesting. Applied to the side that corresponds to the start of the text, based on the paragraph&#x27;s content direction.
                    &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                    &quot;magnitude&quot;: 3.14, # The magnitude.
                  },
                  &quot;glyphType&quot;: &quot;A String&quot;, # The type of glyph used by bullets when paragraphs at this level of nesting are ordered. The glyph type determines the type of glyph used to replace placeholders within the glyph_format when paragraphs at this level of nesting are ordered. For example, if the nesting level is 0, the glyph_format is `%0.` and the glyph type is DECIMAL, then the rendered glyph would replace the placeholder `%0` in the glyph format with a number corresponding to list item&#x27;s order within the list.
                  &quot;glyphFormat&quot;: &quot;A String&quot;, # The format string used by bullets at this level of nesting. The glyph format contains one or more placeholders, and these placeholder are replaced with the appropriate values depending on the glyph_type or glyph_symbol. The placeholders follow the pattern `%[nesting_level]`. Furthermore, placeholders can have prefixes and suffixes. Thus, the glyph format follows the pattern `%[nesting_level]`. Note that the prefix and suffix are optional and can be arbitrary strings. For example, the glyph format `%0.` indicates that the rendered glyph will replace the placeholder with the corresponding glyph for nesting level 0 followed by a period as the suffix. So a list with a glyph type of UPPER_ALPHA and glyph format `%0.` at nesting level 0 will result in a list with rendered glyphs `A.` `B.` `C.` The glyph format can contain placeholders for the current nesting level as well as placeholders for parent nesting levels. For example, a list can have a glyph format of `%0.` at nesting level 0 and a glyph format of `%0.%1.` at nesting level 1. Assuming both nesting levels have DECIMAL glyph types, this would result in a list with rendered glyphs `1.` `2.` ` 2.1.` ` 2.2.` `3.` For nesting levels that are ordered, the string that replaces a placeholder in the glyph format for a particular paragraph depends on the paragraph&#x27;s order within the list.
                },
              ],
            },
            &quot;listPropertiesSuggestionState&quot;: { # A mask that indicates which of the fields on the base ListProperties have been changed in this suggestion. For any field set to true, there is a new suggested value. # A mask that indicates which of the fields on the base ListProperties have been changed in this suggestion.
              &quot;nestingLevelsSuggestionStates&quot;: [ # A mask that indicates which of the fields on the corresponding NestingLevel in nesting_levels have been changed in this suggestion. The nesting level suggestion states are returned in ascending order of the nesting level with the least nested returned first.
                { # A mask that indicates which of the fields on the base NestingLevel have been changed in this suggestion. For any field set to true, there is a new suggested value.
                  &quot;glyphSymbolSuggested&quot;: True or False, # Indicates if there was a suggested change to glyph_symbol.
                  &quot;indentFirstLineSuggested&quot;: True or False, # Indicates if there was a suggested change to indent_first_line.
                  &quot;textStyleSuggestionState&quot;: { # A mask that indicates which of the fields on the base TextStyle have been changed in this suggestion. For any field set to true, there is a new suggested value. # A mask that indicates which of the fields in text style have been changed in this suggestion.
                    &quot;backgroundColorSuggested&quot;: True or False, # Indicates if there was a suggested change to background_color.
                    &quot;fontSizeSuggested&quot;: True or False, # Indicates if there was a suggested change to font_size.
                    &quot;boldSuggested&quot;: True or False, # Indicates if there was a suggested change to bold.
                    &quot;baselineOffsetSuggested&quot;: True or False, # Indicates if there was a suggested change to baseline_offset.
                    &quot;foregroundColorSuggested&quot;: True or False, # Indicates if there was a suggested change to foreground_color.
                    &quot;italicSuggested&quot;: True or False, # Indicates if there was a suggested change to italic.
                    &quot;linkSuggested&quot;: True or False, # Indicates if there was a suggested change to link.
                    &quot;underlineSuggested&quot;: True or False, # Indicates if there was a suggested change to underline.
                    &quot;weightedFontFamilySuggested&quot;: True or False, # Indicates if there was a suggested change to weighted_font_family.
                    &quot;smallCapsSuggested&quot;: True or False, # Indicates if there was a suggested change to small_caps.
                    &quot;strikethroughSuggested&quot;: True or False, # Indicates if there was a suggested change to strikethrough.
                  },
                  &quot;indentStartSuggested&quot;: True or False, # Indicates if there was a suggested change to indent_start.
                  &quot;glyphTypeSuggested&quot;: True or False, # Indicates if there was a suggested change to glyph_type.
                  &quot;startNumberSuggested&quot;: True or False, # Indicates if there was a suggested change to start_number.
                  &quot;bulletAlignmentSuggested&quot;: True or False, # Indicates if there was a suggested change to bullet_alignment.
                  &quot;glyphFormatSuggested&quot;: True or False, # Indicates if there was a suggested change to glyph_format.
                },
              ],
            },
          },
        },
      },
    },
    &quot;suggestedDocumentStyleChanges&quot;: { # Output only. The suggested changes to the style of the document, keyed by suggestion ID.
      &quot;a_key&quot;: { # A suggested change to the DocumentStyle.
        &quot;documentStyleSuggestionState&quot;: { # A mask that indicates which of the fields on the base DocumentStyle have been changed in this suggestion. For any field set to true, there is a new suggested value. # A mask that indicates which of the fields on the base DocumentStyle have been changed in this suggestion.
          &quot;defaultHeaderIdSuggested&quot;: True or False, # Indicates if there was a suggested change to default_header_id.
          &quot;pageSizeSuggestionState&quot;: { # A mask that indicates which of the fields on the base Size have been changed in this suggestion. For any field set to true, the Size has a new suggested value. # A mask that indicates which of the fields in size have been changed in this suggestion.
            &quot;heightSuggested&quot;: True or False, # Indicates if there was a suggested change to height.
            &quot;widthSuggested&quot;: True or False, # Indicates if there was a suggested change to width.
          },
          &quot;marginRightSuggested&quot;: True or False, # Indicates if there was a suggested change to margin_right.
          &quot;marginFooterSuggested&quot;: True or False, # Indicates if there was a suggested change to margin_footer.
          &quot;marginHeaderSuggested&quot;: True or False, # Indicates if there was a suggested change to margin_header.
          &quot;useEvenPageHeaderFooterSuggested&quot;: True or False, # Indicates if there was a suggested change to use_even_page_header_footer.
          &quot;backgroundSuggestionState&quot;: { # A mask that indicates which of the fields on the base Background have been changed in this suggestion. For any field set to true, the Backgound has a new suggested value. # A mask that indicates which of the fields in background have been changed in this suggestion.
            &quot;backgroundColorSuggested&quot;: True or False, # Indicates whether the current background color has been modified in this suggestion.
          },
          &quot;evenPageHeaderIdSuggested&quot;: True or False, # Indicates if there was a suggested change to even_page_header_id.
          &quot;marginLeftSuggested&quot;: True or False, # Indicates if there was a suggested change to margin_left.
          &quot;useFirstPageHeaderFooterSuggested&quot;: True or False, # Indicates if there was a suggested change to use_first_page_header_footer.
          &quot;evenPageFooterIdSuggested&quot;: True or False, # Indicates if there was a suggested change to even_page_footer_id.
          &quot;firstPageFooterIdSuggested&quot;: True or False, # Indicates if there was a suggested change to first_page_footer_id.
          &quot;useCustomHeaderFooterMarginsSuggested&quot;: True or False, # Indicates if there was a suggested change to use_custom_header_footer_margins.
          &quot;marginBottomSuggested&quot;: True or False, # Indicates if there was a suggested change to margin_bottom.
          &quot;marginTopSuggested&quot;: True or False, # Indicates if there was a suggested change to margin_top.
          &quot;defaultFooterIdSuggested&quot;: True or False, # Indicates if there was a suggested change to default_footer_id.
          &quot;pageNumberStartSuggested&quot;: True or False, # Indicates if there was a suggested change to page_number_start.
          &quot;firstPageHeaderIdSuggested&quot;: True or False, # Indicates if there was a suggested change to first_page_header_id.
        },
        &quot;documentStyle&quot;: { # The style of the document. # A DocumentStyle that only includes the changes made in this suggestion. This can be used along with the document_style_suggestion_state to see which fields have changed and their new values.
          &quot;useFirstPageHeaderFooter&quot;: True or False, # Indicates whether to use the first page header / footer IDs for the first page.
          &quot;marginBottom&quot;: { # A magnitude in a single direction in the specified units. # The bottom page margin. Updating the bottom page margin on the document style clears the bottom page margin on all section styles.
            &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
            &quot;magnitude&quot;: 3.14, # The magnitude.
          },
          &quot;pageSize&quot;: { # A width and height. # The size of a page in the document.
            &quot;width&quot;: { # A magnitude in a single direction in the specified units. # The width of the object.
              &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
              &quot;magnitude&quot;: 3.14, # The magnitude.
            },
            &quot;height&quot;: { # A magnitude in a single direction in the specified units. # The height of the object.
              &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
              &quot;magnitude&quot;: 3.14, # The magnitude.
            },
          },
          &quot;marginLeft&quot;: { # A magnitude in a single direction in the specified units. # 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.
            &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
            &quot;magnitude&quot;: 3.14, # The magnitude.
          },
          &quot;defaultFooterId&quot;: &quot;A String&quot;, # The ID of the default footer. If not set, there is no default footer. This property is read-only.
          &quot;marginHeader&quot;: { # A magnitude in a single direction in the specified units. # The amount of space between the top of the page and the contents of the header.
            &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
            &quot;magnitude&quot;: 3.14, # The magnitude.
          },
          &quot;marginFooter&quot;: { # A magnitude in a single direction in the specified units. # The amount of space between the bottom of the page and the contents of the footer.
            &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
            &quot;magnitude&quot;: 3.14, # The magnitude.
          },
          &quot;firstPageHeaderId&quot;: &quot;A String&quot;, # 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 is no first page header. This property is read-only.
          &quot;useCustomHeaderFooterMargins&quot;: True or False, # 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.
          &quot;defaultHeaderId&quot;: &quot;A String&quot;, # The ID of the default header. If not set, there is no default header. This property is read-only.
          &quot;evenPageFooterId&quot;: &quot;A String&quot;, # 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 is no even page footer. This property is read-only.
          &quot;evenPageHeaderId&quot;: &quot;A String&quot;, # 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 is no even page header. This property is read-only.
          &quot;marginTop&quot;: { # A magnitude in a single direction in the specified units. # The top page margin. Updating the top page margin on the document style clears the top page margin on all section styles.
            &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
            &quot;magnitude&quot;: 3.14, # The magnitude.
          },
          &quot;useEvenPageHeaderFooter&quot;: True or False, # Indicates whether to use the even page header / footer IDs for the even pages.
          &quot;pageNumberStart&quot;: 42, # The page number from which to start counting the number of pages.
          &quot;marginRight&quot;: { # A magnitude in a single direction in the specified units. # 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.
            &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
            &quot;magnitude&quot;: 3.14, # The magnitude.
          },
          &quot;firstPageFooterId&quot;: &quot;A String&quot;, # 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 is no first page footer. This property is read-only.
          &quot;background&quot;: { # Represents the background of a document. # The background of the document. Documents cannot have a transparent background color.
            &quot;color&quot;: { # A color that can either be fully opaque or fully transparent. # The background color.
              &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                  &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                  &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                  &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                },
              },
            },
          },
        },
      },
    },
    &quot;body&quot;: { # The document body. The body typically contains the full document contents except for headers, footers and footnotes. # Output only. The main body of the document.
      &quot;content&quot;: [ # The contents of the body. The indexes for the body&#x27;s content begin at zero.
        { # A StructuralElement describes content that provides structure to the document.
          &quot;paragraph&quot;: { # A StructuralElement representing a paragraph. A paragraph is a range of content that is terminated with a newline character. # A paragraph type of structural element.
            &quot;suggestedParagraphStyleChanges&quot;: { # The suggested paragraph style changes to this paragraph, keyed by suggestion ID.
              &quot;a_key&quot;: { # A suggested change to a ParagraphStyle.
                &quot;paragraphStyle&quot;: { # Styles that apply to a whole paragraph. Inherited paragraph styles are represented as unset fields in this message. A paragraph style&#x27;s parent depends on where the paragraph style is defined: * The ParagraphStyle on a Paragraph inherits from the paragraph&#x27;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 is 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. # A ParagraphStyle that only includes the changes made in this suggestion. This can be used along with the paragraph_suggestion_state to see which fields have changed and their new values.
                  &quot;borderRight&quot;: { # A border around a paragraph. # The border to the right of this paragraph. If unset, the value is inherited from the parent. Paragraph borders cannot be partially updated. When making changes to a paragraph border the new border must be specified in its entirety.
                    &quot;color&quot;: { # A color that can either be fully opaque or fully transparent. # The color of the border.
                      &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                        &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                          &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                          &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                          &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                        },
                      },
                    },
                    &quot;width&quot;: { # A magnitude in a single direction in the specified units. # The width of the border.
                      &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                      &quot;magnitude&quot;: 3.14, # The magnitude.
                    },
                    &quot;padding&quot;: { # A magnitude in a single direction in the specified units. # The padding of the border.
                      &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                      &quot;magnitude&quot;: 3.14, # The magnitude.
                    },
                    &quot;dashStyle&quot;: &quot;A String&quot;, # The dash style of the border.
                  },
                  &quot;indentFirstLine&quot;: { # A magnitude in a single direction in the specified units. # The amount of indentation for the first line of the paragraph. If unset, the value is inherited from the parent.
                    &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                    &quot;magnitude&quot;: 3.14, # The magnitude.
                  },
                  &quot;alignment&quot;: &quot;A String&quot;, # The text alignment for this paragraph.
                  &quot;lineSpacing&quot;: 3.14, # The amount of space between lines, as a percentage of normal, where normal is represented as 100.0. If unset, the value is inherited from the parent.
                  &quot;keepLinesTogether&quot;: True or False, # Whether all lines of the paragraph should be laid out on the same page or column if possible. If unset, the value is inherited from the parent.
                  &quot;avoidWidowAndOrphan&quot;: True or False, # Whether to avoid widows and orphans for the paragraph. If unset, the value is inherited from the parent.
                  &quot;spaceBelow&quot;: { # A magnitude in a single direction in the specified units. # The amount of extra space below the paragraph. If unset, the value is inherited from the parent.
                    &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                    &quot;magnitude&quot;: 3.14, # The magnitude.
                  },
                  &quot;borderBetween&quot;: { # A border around a paragraph. # 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 making changes to a paragraph border the new border must be specified in its entirety.
                    &quot;color&quot;: { # A color that can either be fully opaque or fully transparent. # The color of the border.
                      &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                        &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                          &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                          &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                          &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                        },
                      },
                    },
                    &quot;width&quot;: { # A magnitude in a single direction in the specified units. # The width of the border.
                      &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                      &quot;magnitude&quot;: 3.14, # The magnitude.
                    },
                    &quot;padding&quot;: { # A magnitude in a single direction in the specified units. # The padding of the border.
                      &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                      &quot;magnitude&quot;: 3.14, # The magnitude.
                    },
                    &quot;dashStyle&quot;: &quot;A String&quot;, # The dash style of the border.
                  },
                  &quot;headingId&quot;: &quot;A String&quot;, # The heading ID of the paragraph. If empty, then this paragraph is not a heading. This property is read-only.
                  &quot;spaceAbove&quot;: { # A magnitude in a single direction in the specified units. # The amount of extra space above the paragraph. If unset, the value is inherited from the parent.
                    &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                    &quot;magnitude&quot;: 3.14, # The magnitude.
                  },
                  &quot;direction&quot;: &quot;A String&quot;, # The text direction of this paragraph. If unset, the value defaults to LEFT_TO_RIGHT since paragraph direction is not inherited.
                  &quot;namedStyleType&quot;: &quot;A String&quot;, # The named style type of the paragraph. Since updating the named style type affects other properties within ParagraphStyle, the named style type is applied before the other properties are updated.
                  &quot;tabStops&quot;: [ # A list of the tab stops for this paragraph. The list of tab stops is not inherited. This property is read-only.
                    { # A tab stop within a paragraph.
                      &quot;offset&quot;: { # A magnitude in a single direction in the specified units. # The offset between this tab stop and the start margin.
                        &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                        &quot;magnitude&quot;: 3.14, # The magnitude.
                      },
                      &quot;alignment&quot;: &quot;A String&quot;, # The alignment of this tab stop. If unset, the value defaults to START.
                    },
                  ],
                  &quot;indentStart&quot;: { # A magnitude in a single direction in the specified units. # The amount of indentation for the paragraph on the side that corresponds to the start of the text, based on the current paragraph direction. If unset, the value is inherited from the parent.
                    &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                    &quot;magnitude&quot;: 3.14, # The magnitude.
                  },
                  &quot;keepWithNext&quot;: True or False, # Whether at least a part of this paragraph should be laid out on the same page or column as the next paragraph if possible. If unset, the value is inherited from the parent.
                  &quot;borderTop&quot;: { # A border around a paragraph. # 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 making changes to a paragraph border the new border must be specified in its entirety.
                    &quot;color&quot;: { # A color that can either be fully opaque or fully transparent. # The color of the border.
                      &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                        &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                          &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                          &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                          &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                        },
                      },
                    },
                    &quot;width&quot;: { # A magnitude in a single direction in the specified units. # The width of the border.
                      &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                      &quot;magnitude&quot;: 3.14, # The magnitude.
                    },
                    &quot;padding&quot;: { # A magnitude in a single direction in the specified units. # The padding of the border.
                      &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                      &quot;magnitude&quot;: 3.14, # The magnitude.
                    },
                    &quot;dashStyle&quot;: &quot;A String&quot;, # The dash style of the border.
                  },
                  &quot;borderLeft&quot;: { # A border around a paragraph. # The border to the left of this paragraph. If unset, the value is inherited from the parent. Paragraph borders cannot be partially updated. When making changes to a paragraph border the new border must be specified in its entirety.
                    &quot;color&quot;: { # A color that can either be fully opaque or fully transparent. # The color of the border.
                      &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                        &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                          &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                          &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                          &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                        },
                      },
                    },
                    &quot;width&quot;: { # A magnitude in a single direction in the specified units. # The width of the border.
                      &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                      &quot;magnitude&quot;: 3.14, # The magnitude.
                    },
                    &quot;padding&quot;: { # A magnitude in a single direction in the specified units. # The padding of the border.
                      &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                      &quot;magnitude&quot;: 3.14, # The magnitude.
                    },
                    &quot;dashStyle&quot;: &quot;A String&quot;, # The dash style of the border.
                  },
                  &quot;borderBottom&quot;: { # A border around a paragraph. # 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 making changes to a paragraph border the new border must be specified in its entirety.
                    &quot;color&quot;: { # A color that can either be fully opaque or fully transparent. # The color of the border.
                      &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                        &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                          &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                          &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                          &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                        },
                      },
                    },
                    &quot;width&quot;: { # A magnitude in a single direction in the specified units. # The width of the border.
                      &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                      &quot;magnitude&quot;: 3.14, # The magnitude.
                    },
                    &quot;padding&quot;: { # A magnitude in a single direction in the specified units. # The padding of the border.
                      &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                      &quot;magnitude&quot;: 3.14, # The magnitude.
                    },
                    &quot;dashStyle&quot;: &quot;A String&quot;, # The dash style of the border.
                  },
                  &quot;shading&quot;: { # The shading of a paragraph. # The shading of the paragraph. If unset, the value is inherited from the parent.
                    &quot;backgroundColor&quot;: { # A color that can either be fully opaque or fully transparent. # The background color of this paragraph shading.
                      &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                        &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                          &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                          &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                          &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                        },
                      },
                    },
                  },
                  &quot;indentEnd&quot;: { # A magnitude in a single direction in the specified units. # 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.
                    &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                    &quot;magnitude&quot;: 3.14, # The magnitude.
                  },
                  &quot;spacingMode&quot;: &quot;A String&quot;, # The spacing mode for the paragraph.
                },
                &quot;paragraphStyleSuggestionState&quot;: { # A mask that indicates which of the fields on the base ParagraphStyle have been changed in this suggestion. For any field set to true, there is a new suggested value. # A mask that indicates which of the fields on the base ParagraphStyle have been changed in this suggestion.
                  &quot;borderRightSuggested&quot;: True or False, # Indicates if there was a suggested change to border_right.
                  &quot;indentEndSuggested&quot;: True or False, # Indicates if there was a suggested change to indent_end.
                  &quot;lineSpacingSuggested&quot;: True or False, # Indicates if there was a suggested change to line_spacing.
                  &quot;headingIdSuggested&quot;: True or False, # Indicates if there was a suggested change to heading_id.
                  &quot;indentStartSuggested&quot;: True or False, # Indicates if there was a suggested change to indent_start.
                  &quot;keepWithNextSuggested&quot;: True or False, # Indicates if there was a suggested change to keep_with_next.
                  &quot;namedStyleTypeSuggested&quot;: True or False, # Indicates if there was a suggested change to named_style_type.
                  &quot;borderTopSuggested&quot;: True or False, # Indicates if there was a suggested change to border_top.
                  &quot;keepLinesTogetherSuggested&quot;: True or False, # Indicates if there was a suggested change to keep_lines_together.
                  &quot;avoidWidowAndOrphanSuggested&quot;: True or False, # Indicates if there was a suggested change to avoid_widow_and_orphan.
                  &quot;spaceBelowSuggested&quot;: True or False, # Indicates if there was a suggested change to space_below.
                  &quot;indentFirstLineSuggested&quot;: True or False, # Indicates if there was a suggested change to indent_first_line.
                  &quot;shadingSuggestionState&quot;: { # A mask that indicates which of the fields on the base Shading have been changed in this suggested change. For any field set to true, there is a new suggested value. # A mask that indicates which of the fields in shading have been changed in this suggestion.
                    &quot;backgroundColorSuggested&quot;: True or False, # Indicates if there was a suggested change to the Shading.
                  },
                  &quot;directionSuggested&quot;: True or False, # Indicates if there was a suggested change to direction.
                  &quot;borderBetweenSuggested&quot;: True or False, # Indicates if there was a suggested change to border_between.
                  &quot;spaceAboveSuggested&quot;: True or False, # Indicates if there was a suggested change to space_above.
                  &quot;borderLeftSuggested&quot;: True or False, # Indicates if there was a suggested change to border_left.
                  &quot;spacingModeSuggested&quot;: True or False, # Indicates if there was a suggested change to spacing_mode.
                  &quot;borderBottomSuggested&quot;: True or False, # Indicates if there was a suggested change to border_bottom.
                  &quot;alignmentSuggested&quot;: True or False, # Indicates if there was a suggested change to alignment.
                },
              },
            },
            &quot;bullet&quot;: { # Describes the bullet of a paragraph. # The bullet for this paragraph. If not present, the paragraph does not belong to a list.
              &quot;textStyle&quot;: { # Represents the styling that can be applied to text. Inherited text styles are represented as unset fields in this message. A text style&#x27;s parent depends on where the text style is defined: * The TextStyle of text in a Paragraph inherits from the paragraph&#x27;s corresponding named style type. * The TextStyle on a named style inherits from the normal text named style. * The TextStyle of the normal text named style inherits from the default text style in the Docs editor. * The TextStyle on a Paragraph element that is contained in a table may inherit its text style from the table style. If the text style does not inherit from a parent, unsetting fields will revert the style to a value matching the defaults in the Docs editor. # The paragraph specific text style applied to this bullet.
                &quot;italic&quot;: True or False, # Whether or not the text is italicized.
                &quot;baselineOffset&quot;: &quot;A String&quot;, # The text&#x27;s vertical offset from its normal position. Text with `SUPERSCRIPT` or `SUBSCRIPT` baseline offsets is automatically rendered in a smaller font size, computed based on the `font_size` field. The `font_size` itself is not affected by changes in this field.
                &quot;bold&quot;: True or False, # Whether or not the text is rendered as bold.
                &quot;fontSize&quot;: { # A magnitude in a single direction in the specified units. # The size of the text&#x27;s font.
                  &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                  &quot;magnitude&quot;: 3.14, # The magnitude.
                },
                &quot;foregroundColor&quot;: { # A color that can either be fully opaque or fully transparent. # The foreground color of the text. If set, the color is either an RGB color or transparent, depending on the `color` field.
                  &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                    &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                      &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                      &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                      &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                    },
                  },
                },
                &quot;backgroundColor&quot;: { # A color that can either be fully opaque or fully transparent. # The background color of the text. If set, the color is either an RGB color or transparent, depending on the `color` field.
                  &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                    &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                      &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                      &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                      &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                    },
                  },
                },
                &quot;link&quot;: { # A reference to another portion of a document or an external URL resource. # The hyperlink destination of the text. If unset, there is no link. Links are not inherited from parent text. Changing the link in an update request causes some other changes to the text style of the range: * When setting a link, the text foreground color will be updated to the default link color and the text will be underlined. If these fields are modified in the same request, those values will be used instead of the link defaults. * Setting a link on a text range that overlaps with an existing link will also update the existing link to point to the new URL. * Links are not settable on newline characters. As a result, setting a link on a text range that crosses a paragraph boundary, such as `&quot;ABC\n123&quot;`, will separate the newline character(s) into their own text runs. The link will be applied separately to the runs before and after the newline. * Removing a link will update the text style of the range to match the style of the preceding text (or the default text styles if the preceding text is another link) unless different styles are being set in the same request.
                  &quot;bookmarkId&quot;: &quot;A String&quot;, # The ID of a bookmark in this document.
                  &quot;url&quot;: &quot;A String&quot;, # An external URL.
                  &quot;headingId&quot;: &quot;A String&quot;, # The ID of a heading in this document.
                },
                &quot;strikethrough&quot;: True or False, # Whether or not the text is struck through.
                &quot;weightedFontFamily&quot;: { # Represents a font family and weight of text. # The font family and rendered weight of the text. If an update request specifies values for both `weighted_font_family` and `bold`, the `weighted_font_family` is applied first, then `bold`. If `weighted_font_family#weight` is not set, it defaults to `400`. If `weighted_font_family` is set, then `weighted_font_family#font_family` must also be set with a non-empty value. Otherwise, a 400 bad request error is returned.
                  &quot;fontFamily&quot;: &quot;A String&quot;, # The font family of the text. The font family can be any font from the Font menu in Docs or from [Google Fonts] (https://fonts.google.com/). If the font name is unrecognized, the text is rendered in `Arial`.
                  &quot;weight&quot;: 42, # The weight of the font. This field can have any value that is a multiple of `100` between `100` and `900`, inclusive. This range corresponds to the numerical values described in the CSS 2.1 Specification, [section 15.6](https://www.w3.org/TR/CSS21/fonts.html#font-boldness), with non-numerical values disallowed. The default value is `400` (&quot;normal&quot;). The font weight makes up just one component of the rendered font weight. The rendered weight is determined by a combination of the `weight` and the text style&#x27;s resolved `bold` value, after accounting for inheritance: * If the text is bold and the weight is less than `400`, the rendered weight is 400. * If the text is bold and the weight is greater than or equal to `400` but is less than `700`, the rendered weight is `700`. * If the weight is greater than or equal to `700`, the rendered weight is equal to the weight. * If the text is not bold, the rendered weight is equal to the weight.
                },
                &quot;underline&quot;: True or False, # Whether or not the text is underlined.
                &quot;smallCaps&quot;: True or False, # Whether or not the text is in small capital letters.
              },
              &quot;nestingLevel&quot;: 42, # The nesting level of this paragraph in the list.
              &quot;listId&quot;: &quot;A String&quot;, # The ID of the list this paragraph belongs to.
            },
            &quot;suggestedBulletChanges&quot;: { # The suggested changes to this paragraph&#x27;s bullet.
              &quot;a_key&quot;: { # A suggested change to a Bullet.
                &quot;bulletSuggestionState&quot;: { # A mask that indicates which of the fields on the base Bullet have been changed in this suggestion. For any field set to true, there is a new suggested value. # A mask that indicates which of the fields on the base Bullet have been changed in this suggestion.
                  &quot;nestingLevelSuggested&quot;: True or False, # Indicates if there was a suggested change to the nesting_level.
                  &quot;textStyleSuggestionState&quot;: { # A mask that indicates which of the fields on the base TextStyle have been changed in this suggestion. For any field set to true, there is a new suggested value. # A mask that indicates which of the fields in text style have been changed in this suggestion.
                    &quot;backgroundColorSuggested&quot;: True or False, # Indicates if there was a suggested change to background_color.
                    &quot;fontSizeSuggested&quot;: True or False, # Indicates if there was a suggested change to font_size.
                    &quot;boldSuggested&quot;: True or False, # Indicates if there was a suggested change to bold.
                    &quot;baselineOffsetSuggested&quot;: True or False, # Indicates if there was a suggested change to baseline_offset.
                    &quot;foregroundColorSuggested&quot;: True or False, # Indicates if there was a suggested change to foreground_color.
                    &quot;italicSuggested&quot;: True or False, # Indicates if there was a suggested change to italic.
                    &quot;linkSuggested&quot;: True or False, # Indicates if there was a suggested change to link.
                    &quot;underlineSuggested&quot;: True or False, # Indicates if there was a suggested change to underline.
                    &quot;weightedFontFamilySuggested&quot;: True or False, # Indicates if there was a suggested change to weighted_font_family.
                    &quot;smallCapsSuggested&quot;: True or False, # Indicates if there was a suggested change to small_caps.
                    &quot;strikethroughSuggested&quot;: True or False, # Indicates if there was a suggested change to strikethrough.
                  },
                  &quot;listIdSuggested&quot;: True or False, # Indicates if there was a suggested change to the list_id.
                },
                &quot;bullet&quot;: { # Describes the bullet of a paragraph. # A Bullet that only includes the changes made in this suggestion. This can be used along with the bullet_suggestion_state to see which fields have changed and their new values.
                  &quot;textStyle&quot;: { # Represents the styling that can be applied to text. Inherited text styles are represented as unset fields in this message. A text style&#x27;s parent depends on where the text style is defined: * The TextStyle of text in a Paragraph inherits from the paragraph&#x27;s corresponding named style type. * The TextStyle on a named style inherits from the normal text named style. * The TextStyle of the normal text named style inherits from the default text style in the Docs editor. * The TextStyle on a Paragraph element that is contained in a table may inherit its text style from the table style. If the text style does not inherit from a parent, unsetting fields will revert the style to a value matching the defaults in the Docs editor. # The paragraph specific text style applied to this bullet.
                    &quot;italic&quot;: True or False, # Whether or not the text is italicized.
                    &quot;baselineOffset&quot;: &quot;A String&quot;, # The text&#x27;s vertical offset from its normal position. Text with `SUPERSCRIPT` or `SUBSCRIPT` baseline offsets is automatically rendered in a smaller font size, computed based on the `font_size` field. The `font_size` itself is not affected by changes in this field.
                    &quot;bold&quot;: True or False, # Whether or not the text is rendered as bold.
                    &quot;fontSize&quot;: { # A magnitude in a single direction in the specified units. # The size of the text&#x27;s font.
                      &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                      &quot;magnitude&quot;: 3.14, # The magnitude.
                    },
                    &quot;foregroundColor&quot;: { # A color that can either be fully opaque or fully transparent. # The foreground color of the text. If set, the color is either an RGB color or transparent, depending on the `color` field.
                      &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                        &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                          &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                          &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                          &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                        },
                      },
                    },
                    &quot;backgroundColor&quot;: { # A color that can either be fully opaque or fully transparent. # The background color of the text. If set, the color is either an RGB color or transparent, depending on the `color` field.
                      &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                        &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                          &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                          &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                          &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                        },
                      },
                    },
                    &quot;link&quot;: { # A reference to another portion of a document or an external URL resource. # The hyperlink destination of the text. If unset, there is no link. Links are not inherited from parent text. Changing the link in an update request causes some other changes to the text style of the range: * When setting a link, the text foreground color will be updated to the default link color and the text will be underlined. If these fields are modified in the same request, those values will be used instead of the link defaults. * Setting a link on a text range that overlaps with an existing link will also update the existing link to point to the new URL. * Links are not settable on newline characters. As a result, setting a link on a text range that crosses a paragraph boundary, such as `&quot;ABC\n123&quot;`, will separate the newline character(s) into their own text runs. The link will be applied separately to the runs before and after the newline. * Removing a link will update the text style of the range to match the style of the preceding text (or the default text styles if the preceding text is another link) unless different styles are being set in the same request.
                      &quot;bookmarkId&quot;: &quot;A String&quot;, # The ID of a bookmark in this document.
                      &quot;url&quot;: &quot;A String&quot;, # An external URL.
                      &quot;headingId&quot;: &quot;A String&quot;, # The ID of a heading in this document.
                    },
                    &quot;strikethrough&quot;: True or False, # Whether or not the text is struck through.
                    &quot;weightedFontFamily&quot;: { # Represents a font family and weight of text. # The font family and rendered weight of the text. If an update request specifies values for both `weighted_font_family` and `bold`, the `weighted_font_family` is applied first, then `bold`. If `weighted_font_family#weight` is not set, it defaults to `400`. If `weighted_font_family` is set, then `weighted_font_family#font_family` must also be set with a non-empty value. Otherwise, a 400 bad request error is returned.
                      &quot;fontFamily&quot;: &quot;A String&quot;, # The font family of the text. The font family can be any font from the Font menu in Docs or from [Google Fonts] (https://fonts.google.com/). If the font name is unrecognized, the text is rendered in `Arial`.
                      &quot;weight&quot;: 42, # The weight of the font. This field can have any value that is a multiple of `100` between `100` and `900`, inclusive. This range corresponds to the numerical values described in the CSS 2.1 Specification, [section 15.6](https://www.w3.org/TR/CSS21/fonts.html#font-boldness), with non-numerical values disallowed. The default value is `400` (&quot;normal&quot;). The font weight makes up just one component of the rendered font weight. The rendered weight is determined by a combination of the `weight` and the text style&#x27;s resolved `bold` value, after accounting for inheritance: * If the text is bold and the weight is less than `400`, the rendered weight is 400. * If the text is bold and the weight is greater than or equal to `400` but is less than `700`, the rendered weight is `700`. * If the weight is greater than or equal to `700`, the rendered weight is equal to the weight. * If the text is not bold, the rendered weight is equal to the weight.
                    },
                    &quot;underline&quot;: True or False, # Whether or not the text is underlined.
                    &quot;smallCaps&quot;: True or False, # Whether or not the text is in small capital letters.
                  },
                  &quot;nestingLevel&quot;: 42, # The nesting level of this paragraph in the list.
                  &quot;listId&quot;: &quot;A String&quot;, # The ID of the list this paragraph belongs to.
                },
              },
            },
            &quot;suggestedPositionedObjectIds&quot;: { # The IDs of the positioned objects that are suggested to be attached to this paragraph, keyed by suggestion ID.
              &quot;a_key&quot;: { # A collection of object IDs.
                &quot;objectIds&quot;: [ # The object IDs.
                  &quot;A String&quot;,
                ],
              },
            },
            &quot;elements&quot;: [ # The content of the paragraph broken down into its component parts.
              { # A ParagraphElement describes content within a Paragraph.
                &quot;textRun&quot;: { # A ParagraphElement that represents a run of text that all has the same styling. # A text run paragraph element.
                  &quot;suggestedInsertionIds&quot;: [ # The suggested insertion IDs. A TextRun may have multiple insertion IDs if it is a nested suggested change. If empty, then this is not a suggested insertion.
                    &quot;A String&quot;,
                  ],
                  &quot;content&quot;: &quot;A String&quot;, # The text of this run. Any non-text elements in the run are replaced with the Unicode character U+E907.
                  &quot;textStyle&quot;: { # Represents the styling that can be applied to text. Inherited text styles are represented as unset fields in this message. A text style&#x27;s parent depends on where the text style is defined: * The TextStyle of text in a Paragraph inherits from the paragraph&#x27;s corresponding named style type. * The TextStyle on a named style inherits from the normal text named style. * The TextStyle of the normal text named style inherits from the default text style in the Docs editor. * The TextStyle on a Paragraph element that is contained in a table may inherit its text style from the table style. If the text style does not inherit from a parent, unsetting fields will revert the style to a value matching the defaults in the Docs editor. # The text style of this run.
                    &quot;italic&quot;: True or False, # Whether or not the text is italicized.
                    &quot;baselineOffset&quot;: &quot;A String&quot;, # The text&#x27;s vertical offset from its normal position. Text with `SUPERSCRIPT` or `SUBSCRIPT` baseline offsets is automatically rendered in a smaller font size, computed based on the `font_size` field. The `font_size` itself is not affected by changes in this field.
                    &quot;bold&quot;: True or False, # Whether or not the text is rendered as bold.
                    &quot;fontSize&quot;: { # A magnitude in a single direction in the specified units. # The size of the text&#x27;s font.
                      &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                      &quot;magnitude&quot;: 3.14, # The magnitude.
                    },
                    &quot;foregroundColor&quot;: { # A color that can either be fully opaque or fully transparent. # The foreground color of the text. If set, the color is either an RGB color or transparent, depending on the `color` field.
                      &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                        &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                          &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                          &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                          &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                        },
                      },
                    },
                    &quot;backgroundColor&quot;: { # A color that can either be fully opaque or fully transparent. # The background color of the text. If set, the color is either an RGB color or transparent, depending on the `color` field.
                      &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                        &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                          &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                          &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                          &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                        },
                      },
                    },
                    &quot;link&quot;: { # A reference to another portion of a document or an external URL resource. # The hyperlink destination of the text. If unset, there is no link. Links are not inherited from parent text. Changing the link in an update request causes some other changes to the text style of the range: * When setting a link, the text foreground color will be updated to the default link color and the text will be underlined. If these fields are modified in the same request, those values will be used instead of the link defaults. * Setting a link on a text range that overlaps with an existing link will also update the existing link to point to the new URL. * Links are not settable on newline characters. As a result, setting a link on a text range that crosses a paragraph boundary, such as `&quot;ABC\n123&quot;`, will separate the newline character(s) into their own text runs. The link will be applied separately to the runs before and after the newline. * Removing a link will update the text style of the range to match the style of the preceding text (or the default text styles if the preceding text is another link) unless different styles are being set in the same request.
                      &quot;bookmarkId&quot;: &quot;A String&quot;, # The ID of a bookmark in this document.
                      &quot;url&quot;: &quot;A String&quot;, # An external URL.
                      &quot;headingId&quot;: &quot;A String&quot;, # The ID of a heading in this document.
                    },
                    &quot;strikethrough&quot;: True or False, # Whether or not the text is struck through.
                    &quot;weightedFontFamily&quot;: { # Represents a font family and weight of text. # The font family and rendered weight of the text. If an update request specifies values for both `weighted_font_family` and `bold`, the `weighted_font_family` is applied first, then `bold`. If `weighted_font_family#weight` is not set, it defaults to `400`. If `weighted_font_family` is set, then `weighted_font_family#font_family` must also be set with a non-empty value. Otherwise, a 400 bad request error is returned.
                      &quot;fontFamily&quot;: &quot;A String&quot;, # The font family of the text. The font family can be any font from the Font menu in Docs or from [Google Fonts] (https://fonts.google.com/). If the font name is unrecognized, the text is rendered in `Arial`.
                      &quot;weight&quot;: 42, # The weight of the font. This field can have any value that is a multiple of `100` between `100` and `900`, inclusive. This range corresponds to the numerical values described in the CSS 2.1 Specification, [section 15.6](https://www.w3.org/TR/CSS21/fonts.html#font-boldness), with non-numerical values disallowed. The default value is `400` (&quot;normal&quot;). The font weight makes up just one component of the rendered font weight. The rendered weight is determined by a combination of the `weight` and the text style&#x27;s resolved `bold` value, after accounting for inheritance: * If the text is bold and the weight is less than `400`, the rendered weight is 400. * If the text is bold and the weight is greater than or equal to `400` but is less than `700`, the rendered weight is `700`. * If the weight is greater than or equal to `700`, the rendered weight is equal to the weight. * If the text is not bold, the rendered weight is equal to the weight.
                    },
                    &quot;underline&quot;: True or False, # Whether or not the text is underlined.
                    &quot;smallCaps&quot;: True or False, # Whether or not the text is in small capital letters.
                  },
                  &quot;suggestedTextStyleChanges&quot;: { # The suggested text style changes to this run, keyed by suggestion ID.
                    &quot;a_key&quot;: { # A suggested change to a TextStyle.
                      &quot;textStyleSuggestionState&quot;: { # A mask that indicates which of the fields on the base TextStyle have been changed in this suggestion. For any field set to true, there is a new suggested value. # A mask that indicates which of the fields on the base TextStyle have been changed in this suggestion.
                        &quot;backgroundColorSuggested&quot;: True or False, # Indicates if there was a suggested change to background_color.
                        &quot;fontSizeSuggested&quot;: True or False, # Indicates if there was a suggested change to font_size.
                        &quot;boldSuggested&quot;: True or False, # Indicates if there was a suggested change to bold.
                        &quot;baselineOffsetSuggested&quot;: True or False, # Indicates if there was a suggested change to baseline_offset.
                        &quot;foregroundColorSuggested&quot;: True or False, # Indicates if there was a suggested change to foreground_color.
                        &quot;italicSuggested&quot;: True or False, # Indicates if there was a suggested change to italic.
                        &quot;linkSuggested&quot;: True or False, # Indicates if there was a suggested change to link.
                        &quot;underlineSuggested&quot;: True or False, # Indicates if there was a suggested change to underline.
                        &quot;weightedFontFamilySuggested&quot;: True or False, # Indicates if there was a suggested change to weighted_font_family.
                        &quot;smallCapsSuggested&quot;: True or False, # Indicates if there was a suggested change to small_caps.
                        &quot;strikethroughSuggested&quot;: True or False, # Indicates if there was a suggested change to strikethrough.
                      },
                      &quot;textStyle&quot;: { # Represents the styling that can be applied to text. Inherited text styles are represented as unset fields in this message. A text style&#x27;s parent depends on where the text style is defined: * The TextStyle of text in a Paragraph inherits from the paragraph&#x27;s corresponding named style type. * The TextStyle on a named style inherits from the normal text named style. * The TextStyle of the normal text named style inherits from the default text style in the Docs editor. * The TextStyle on a Paragraph element that is contained in a table may inherit its text style from the table style. If the text style does not inherit from a parent, unsetting fields will revert the style to a value matching the defaults in the Docs editor. # A TextStyle that only includes the changes made in this suggestion. This can be used along with the text_style_suggestion_state to see which fields have changed and their new values.
                        &quot;italic&quot;: True or False, # Whether or not the text is italicized.
                        &quot;baselineOffset&quot;: &quot;A String&quot;, # The text&#x27;s vertical offset from its normal position. Text with `SUPERSCRIPT` or `SUBSCRIPT` baseline offsets is automatically rendered in a smaller font size, computed based on the `font_size` field. The `font_size` itself is not affected by changes in this field.
                        &quot;bold&quot;: True or False, # Whether or not the text is rendered as bold.
                        &quot;fontSize&quot;: { # A magnitude in a single direction in the specified units. # The size of the text&#x27;s font.
                          &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                          &quot;magnitude&quot;: 3.14, # The magnitude.
                        },
                        &quot;foregroundColor&quot;: { # A color that can either be fully opaque or fully transparent. # The foreground color of the text. If set, the color is either an RGB color or transparent, depending on the `color` field.
                          &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                            &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                              &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                              &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                              &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                            },
                          },
                        },
                        &quot;backgroundColor&quot;: { # A color that can either be fully opaque or fully transparent. # The background color of the text. If set, the color is either an RGB color or transparent, depending on the `color` field.
                          &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                            &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                              &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                              &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                              &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                            },
                          },
                        },
                        &quot;link&quot;: { # A reference to another portion of a document or an external URL resource. # The hyperlink destination of the text. If unset, there is no link. Links are not inherited from parent text. Changing the link in an update request causes some other changes to the text style of the range: * When setting a link, the text foreground color will be updated to the default link color and the text will be underlined. If these fields are modified in the same request, those values will be used instead of the link defaults. * Setting a link on a text range that overlaps with an existing link will also update the existing link to point to the new URL. * Links are not settable on newline characters. As a result, setting a link on a text range that crosses a paragraph boundary, such as `&quot;ABC\n123&quot;`, will separate the newline character(s) into their own text runs. The link will be applied separately to the runs before and after the newline. * Removing a link will update the text style of the range to match the style of the preceding text (or the default text styles if the preceding text is another link) unless different styles are being set in the same request.
                          &quot;bookmarkId&quot;: &quot;A String&quot;, # The ID of a bookmark in this document.
                          &quot;url&quot;: &quot;A String&quot;, # An external URL.
                          &quot;headingId&quot;: &quot;A String&quot;, # The ID of a heading in this document.
                        },
                        &quot;strikethrough&quot;: True or False, # Whether or not the text is struck through.
                        &quot;weightedFontFamily&quot;: { # Represents a font family and weight of text. # The font family and rendered weight of the text. If an update request specifies values for both `weighted_font_family` and `bold`, the `weighted_font_family` is applied first, then `bold`. If `weighted_font_family#weight` is not set, it defaults to `400`. If `weighted_font_family` is set, then `weighted_font_family#font_family` must also be set with a non-empty value. Otherwise, a 400 bad request error is returned.
                          &quot;fontFamily&quot;: &quot;A String&quot;, # The font family of the text. The font family can be any font from the Font menu in Docs or from [Google Fonts] (https://fonts.google.com/). If the font name is unrecognized, the text is rendered in `Arial`.
                          &quot;weight&quot;: 42, # The weight of the font. This field can have any value that is a multiple of `100` between `100` and `900`, inclusive. This range corresponds to the numerical values described in the CSS 2.1 Specification, [section 15.6](https://www.w3.org/TR/CSS21/fonts.html#font-boldness), with non-numerical values disallowed. The default value is `400` (&quot;normal&quot;). The font weight makes up just one component of the rendered font weight. The rendered weight is determined by a combination of the `weight` and the text style&#x27;s resolved `bold` value, after accounting for inheritance: * If the text is bold and the weight is less than `400`, the rendered weight is 400. * If the text is bold and the weight is greater than or equal to `400` but is less than `700`, the rendered weight is `700`. * If the weight is greater than or equal to `700`, the rendered weight is equal to the weight. * If the text is not bold, the rendered weight is equal to the weight.
                        },
                        &quot;underline&quot;: True or False, # Whether or not the text is underlined.
                        &quot;smallCaps&quot;: True or False, # Whether or not the text is in small capital letters.
                      },
                    },
                  },
                  &quot;suggestedDeletionIds&quot;: [ # The suggested deletion IDs. If empty, then there are no suggested deletions of this content.
                    &quot;A String&quot;,
                  ],
                },
                &quot;pageBreak&quot;: { # A ParagraphElement representing a page break. A page break makes the subsequent text start at the top of the next page. # A page break paragraph element.
                  &quot;suggestedInsertionIds&quot;: [ # The suggested insertion IDs. A PageBreak may have multiple insertion IDs if it is a nested suggested change. If empty, then this is not a suggested insertion.
                    &quot;A String&quot;,
                  ],
                  &quot;textStyle&quot;: { # Represents the styling that can be applied to text. Inherited text styles are represented as unset fields in this message. A text style&#x27;s parent depends on where the text style is defined: * The TextStyle of text in a Paragraph inherits from the paragraph&#x27;s corresponding named style type. * The TextStyle on a named style inherits from the normal text named style. * The TextStyle of the normal text named style inherits from the default text style in the Docs editor. * The TextStyle on a Paragraph element that is contained in a table may inherit its text style from the table style. If the text style does not inherit from a parent, unsetting fields will revert the style to a value matching the defaults in the Docs editor. # The text style of this PageBreak. Similar to text content, like text runs and footnote references, the text style of a page break can affect content layout as well as the styling of text inserted adjacent to it.
                    &quot;italic&quot;: True or False, # Whether or not the text is italicized.
                    &quot;baselineOffset&quot;: &quot;A String&quot;, # The text&#x27;s vertical offset from its normal position. Text with `SUPERSCRIPT` or `SUBSCRIPT` baseline offsets is automatically rendered in a smaller font size, computed based on the `font_size` field. The `font_size` itself is not affected by changes in this field.
                    &quot;bold&quot;: True or False, # Whether or not the text is rendered as bold.
                    &quot;fontSize&quot;: { # A magnitude in a single direction in the specified units. # The size of the text&#x27;s font.
                      &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                      &quot;magnitude&quot;: 3.14, # The magnitude.
                    },
                    &quot;foregroundColor&quot;: { # A color that can either be fully opaque or fully transparent. # The foreground color of the text. If set, the color is either an RGB color or transparent, depending on the `color` field.
                      &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                        &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                          &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                          &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                          &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                        },
                      },
                    },
                    &quot;backgroundColor&quot;: { # A color that can either be fully opaque or fully transparent. # The background color of the text. If set, the color is either an RGB color or transparent, depending on the `color` field.
                      &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                        &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                          &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                          &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                          &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                        },
                      },
                    },
                    &quot;link&quot;: { # A reference to another portion of a document or an external URL resource. # The hyperlink destination of the text. If unset, there is no link. Links are not inherited from parent text. Changing the link in an update request causes some other changes to the text style of the range: * When setting a link, the text foreground color will be updated to the default link color and the text will be underlined. If these fields are modified in the same request, those values will be used instead of the link defaults. * Setting a link on a text range that overlaps with an existing link will also update the existing link to point to the new URL. * Links are not settable on newline characters. As a result, setting a link on a text range that crosses a paragraph boundary, such as `&quot;ABC\n123&quot;`, will separate the newline character(s) into their own text runs. The link will be applied separately to the runs before and after the newline. * Removing a link will update the text style of the range to match the style of the preceding text (or the default text styles if the preceding text is another link) unless different styles are being set in the same request.
                      &quot;bookmarkId&quot;: &quot;A String&quot;, # The ID of a bookmark in this document.
                      &quot;url&quot;: &quot;A String&quot;, # An external URL.
                      &quot;headingId&quot;: &quot;A String&quot;, # The ID of a heading in this document.
                    },
                    &quot;strikethrough&quot;: True or False, # Whether or not the text is struck through.
                    &quot;weightedFontFamily&quot;: { # Represents a font family and weight of text. # The font family and rendered weight of the text. If an update request specifies values for both `weighted_font_family` and `bold`, the `weighted_font_family` is applied first, then `bold`. If `weighted_font_family#weight` is not set, it defaults to `400`. If `weighted_font_family` is set, then `weighted_font_family#font_family` must also be set with a non-empty value. Otherwise, a 400 bad request error is returned.
                      &quot;fontFamily&quot;: &quot;A String&quot;, # The font family of the text. The font family can be any font from the Font menu in Docs or from [Google Fonts] (https://fonts.google.com/). If the font name is unrecognized, the text is rendered in `Arial`.
                      &quot;weight&quot;: 42, # The weight of the font. This field can have any value that is a multiple of `100` between `100` and `900`, inclusive. This range corresponds to the numerical values described in the CSS 2.1 Specification, [section 15.6](https://www.w3.org/TR/CSS21/fonts.html#font-boldness), with non-numerical values disallowed. The default value is `400` (&quot;normal&quot;). The font weight makes up just one component of the rendered font weight. The rendered weight is determined by a combination of the `weight` and the text style&#x27;s resolved `bold` value, after accounting for inheritance: * If the text is bold and the weight is less than `400`, the rendered weight is 400. * If the text is bold and the weight is greater than or equal to `400` but is less than `700`, the rendered weight is `700`. * If the weight is greater than or equal to `700`, the rendered weight is equal to the weight. * If the text is not bold, the rendered weight is equal to the weight.
                    },
                    &quot;underline&quot;: True or False, # Whether or not the text is underlined.
                    &quot;smallCaps&quot;: True or False, # Whether or not the text is in small capital letters.
                  },
                  &quot;suggestedTextStyleChanges&quot;: { # The suggested text style changes to this PageBreak, keyed by suggestion ID.
                    &quot;a_key&quot;: { # A suggested change to a TextStyle.
                      &quot;textStyleSuggestionState&quot;: { # A mask that indicates which of the fields on the base TextStyle have been changed in this suggestion. For any field set to true, there is a new suggested value. # A mask that indicates which of the fields on the base TextStyle have been changed in this suggestion.
                        &quot;backgroundColorSuggested&quot;: True or False, # Indicates if there was a suggested change to background_color.
                        &quot;fontSizeSuggested&quot;: True or False, # Indicates if there was a suggested change to font_size.
                        &quot;boldSuggested&quot;: True or False, # Indicates if there was a suggested change to bold.
                        &quot;baselineOffsetSuggested&quot;: True or False, # Indicates if there was a suggested change to baseline_offset.
                        &quot;foregroundColorSuggested&quot;: True or False, # Indicates if there was a suggested change to foreground_color.
                        &quot;italicSuggested&quot;: True or False, # Indicates if there was a suggested change to italic.
                        &quot;linkSuggested&quot;: True or False, # Indicates if there was a suggested change to link.
                        &quot;underlineSuggested&quot;: True or False, # Indicates if there was a suggested change to underline.
                        &quot;weightedFontFamilySuggested&quot;: True or False, # Indicates if there was a suggested change to weighted_font_family.
                        &quot;smallCapsSuggested&quot;: True or False, # Indicates if there was a suggested change to small_caps.
                        &quot;strikethroughSuggested&quot;: True or False, # Indicates if there was a suggested change to strikethrough.
                      },
                      &quot;textStyle&quot;: { # Represents the styling that can be applied to text. Inherited text styles are represented as unset fields in this message. A text style&#x27;s parent depends on where the text style is defined: * The TextStyle of text in a Paragraph inherits from the paragraph&#x27;s corresponding named style type. * The TextStyle on a named style inherits from the normal text named style. * The TextStyle of the normal text named style inherits from the default text style in the Docs editor. * The TextStyle on a Paragraph element that is contained in a table may inherit its text style from the table style. If the text style does not inherit from a parent, unsetting fields will revert the style to a value matching the defaults in the Docs editor. # A TextStyle that only includes the changes made in this suggestion. This can be used along with the text_style_suggestion_state to see which fields have changed and their new values.
                        &quot;italic&quot;: True or False, # Whether or not the text is italicized.
                        &quot;baselineOffset&quot;: &quot;A String&quot;, # The text&#x27;s vertical offset from its normal position. Text with `SUPERSCRIPT` or `SUBSCRIPT` baseline offsets is automatically rendered in a smaller font size, computed based on the `font_size` field. The `font_size` itself is not affected by changes in this field.
                        &quot;bold&quot;: True or False, # Whether or not the text is rendered as bold.
                        &quot;fontSize&quot;: { # A magnitude in a single direction in the specified units. # The size of the text&#x27;s font.
                          &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                          &quot;magnitude&quot;: 3.14, # The magnitude.
                        },
                        &quot;foregroundColor&quot;: { # A color that can either be fully opaque or fully transparent. # The foreground color of the text. If set, the color is either an RGB color or transparent, depending on the `color` field.
                          &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                            &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                              &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                              &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                              &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                            },
                          },
                        },
                        &quot;backgroundColor&quot;: { # A color that can either be fully opaque or fully transparent. # The background color of the text. If set, the color is either an RGB color or transparent, depending on the `color` field.
                          &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                            &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                              &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                              &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                              &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                            },
                          },
                        },
                        &quot;link&quot;: { # A reference to another portion of a document or an external URL resource. # The hyperlink destination of the text. If unset, there is no link. Links are not inherited from parent text. Changing the link in an update request causes some other changes to the text style of the range: * When setting a link, the text foreground color will be updated to the default link color and the text will be underlined. If these fields are modified in the same request, those values will be used instead of the link defaults. * Setting a link on a text range that overlaps with an existing link will also update the existing link to point to the new URL. * Links are not settable on newline characters. As a result, setting a link on a text range that crosses a paragraph boundary, such as `&quot;ABC\n123&quot;`, will separate the newline character(s) into their own text runs. The link will be applied separately to the runs before and after the newline. * Removing a link will update the text style of the range to match the style of the preceding text (or the default text styles if the preceding text is another link) unless different styles are being set in the same request.
                          &quot;bookmarkId&quot;: &quot;A String&quot;, # The ID of a bookmark in this document.
                          &quot;url&quot;: &quot;A String&quot;, # An external URL.
                          &quot;headingId&quot;: &quot;A String&quot;, # The ID of a heading in this document.
                        },
                        &quot;strikethrough&quot;: True or False, # Whether or not the text is struck through.
                        &quot;weightedFontFamily&quot;: { # Represents a font family and weight of text. # The font family and rendered weight of the text. If an update request specifies values for both `weighted_font_family` and `bold`, the `weighted_font_family` is applied first, then `bold`. If `weighted_font_family#weight` is not set, it defaults to `400`. If `weighted_font_family` is set, then `weighted_font_family#font_family` must also be set with a non-empty value. Otherwise, a 400 bad request error is returned.
                          &quot;fontFamily&quot;: &quot;A String&quot;, # The font family of the text. The font family can be any font from the Font menu in Docs or from [Google Fonts] (https://fonts.google.com/). If the font name is unrecognized, the text is rendered in `Arial`.
                          &quot;weight&quot;: 42, # The weight of the font. This field can have any value that is a multiple of `100` between `100` and `900`, inclusive. This range corresponds to the numerical values described in the CSS 2.1 Specification, [section 15.6](https://www.w3.org/TR/CSS21/fonts.html#font-boldness), with non-numerical values disallowed. The default value is `400` (&quot;normal&quot;). The font weight makes up just one component of the rendered font weight. The rendered weight is determined by a combination of the `weight` and the text style&#x27;s resolved `bold` value, after accounting for inheritance: * If the text is bold and the weight is less than `400`, the rendered weight is 400. * If the text is bold and the weight is greater than or equal to `400` but is less than `700`, the rendered weight is `700`. * If the weight is greater than or equal to `700`, the rendered weight is equal to the weight. * If the text is not bold, the rendered weight is equal to the weight.
                        },
                        &quot;underline&quot;: True or False, # Whether or not the text is underlined.
                        &quot;smallCaps&quot;: True or False, # Whether or not the text is in small capital letters.
                      },
                    },
                  },
                  &quot;suggestedDeletionIds&quot;: [ # The suggested deletion IDs. If empty, then there are no suggested deletions of this content.
                    &quot;A String&quot;,
                  ],
                },
                &quot;horizontalRule&quot;: { # A ParagraphElement representing a horizontal line. # A horizontal rule paragraph element.
                  &quot;suggestedInsertionIds&quot;: [ # The suggested insertion IDs. A HorizontalRule may have multiple insertion IDs if it is a nested suggested change. If empty, then this is not a suggested insertion.
                    &quot;A String&quot;,
                  ],
                  &quot;suggestedTextStyleChanges&quot;: { # The suggested text style changes to this HorizontalRule, keyed by suggestion ID.
                    &quot;a_key&quot;: { # A suggested change to a TextStyle.
                      &quot;textStyleSuggestionState&quot;: { # A mask that indicates which of the fields on the base TextStyle have been changed in this suggestion. For any field set to true, there is a new suggested value. # A mask that indicates which of the fields on the base TextStyle have been changed in this suggestion.
                        &quot;backgroundColorSuggested&quot;: True or False, # Indicates if there was a suggested change to background_color.
                        &quot;fontSizeSuggested&quot;: True or False, # Indicates if there was a suggested change to font_size.
                        &quot;boldSuggested&quot;: True or False, # Indicates if there was a suggested change to bold.
                        &quot;baselineOffsetSuggested&quot;: True or False, # Indicates if there was a suggested change to baseline_offset.
                        &quot;foregroundColorSuggested&quot;: True or False, # Indicates if there was a suggested change to foreground_color.
                        &quot;italicSuggested&quot;: True or False, # Indicates if there was a suggested change to italic.
                        &quot;linkSuggested&quot;: True or False, # Indicates if there was a suggested change to link.
                        &quot;underlineSuggested&quot;: True or False, # Indicates if there was a suggested change to underline.
                        &quot;weightedFontFamilySuggested&quot;: True or False, # Indicates if there was a suggested change to weighted_font_family.
                        &quot;smallCapsSuggested&quot;: True or False, # Indicates if there was a suggested change to small_caps.
                        &quot;strikethroughSuggested&quot;: True or False, # Indicates if there was a suggested change to strikethrough.
                      },
                      &quot;textStyle&quot;: { # Represents the styling that can be applied to text. Inherited text styles are represented as unset fields in this message. A text style&#x27;s parent depends on where the text style is defined: * The TextStyle of text in a Paragraph inherits from the paragraph&#x27;s corresponding named style type. * The TextStyle on a named style inherits from the normal text named style. * The TextStyle of the normal text named style inherits from the default text style in the Docs editor. * The TextStyle on a Paragraph element that is contained in a table may inherit its text style from the table style. If the text style does not inherit from a parent, unsetting fields will revert the style to a value matching the defaults in the Docs editor. # A TextStyle that only includes the changes made in this suggestion. This can be used along with the text_style_suggestion_state to see which fields have changed and their new values.
                        &quot;italic&quot;: True or False, # Whether or not the text is italicized.
                        &quot;baselineOffset&quot;: &quot;A String&quot;, # The text&#x27;s vertical offset from its normal position. Text with `SUPERSCRIPT` or `SUBSCRIPT` baseline offsets is automatically rendered in a smaller font size, computed based on the `font_size` field. The `font_size` itself is not affected by changes in this field.
                        &quot;bold&quot;: True or False, # Whether or not the text is rendered as bold.
                        &quot;fontSize&quot;: { # A magnitude in a single direction in the specified units. # The size of the text&#x27;s font.
                          &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                          &quot;magnitude&quot;: 3.14, # The magnitude.
                        },
                        &quot;foregroundColor&quot;: { # A color that can either be fully opaque or fully transparent. # The foreground color of the text. If set, the color is either an RGB color or transparent, depending on the `color` field.
                          &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                            &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                              &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                              &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                              &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                            },
                          },
                        },
                        &quot;backgroundColor&quot;: { # A color that can either be fully opaque or fully transparent. # The background color of the text. If set, the color is either an RGB color or transparent, depending on the `color` field.
                          &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                            &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                              &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                              &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                              &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                            },
                          },
                        },
                        &quot;link&quot;: { # A reference to another portion of a document or an external URL resource. # The hyperlink destination of the text. If unset, there is no link. Links are not inherited from parent text. Changing the link in an update request causes some other changes to the text style of the range: * When setting a link, the text foreground color will be updated to the default link color and the text will be underlined. If these fields are modified in the same request, those values will be used instead of the link defaults. * Setting a link on a text range that overlaps with an existing link will also update the existing link to point to the new URL. * Links are not settable on newline characters. As a result, setting a link on a text range that crosses a paragraph boundary, such as `&quot;ABC\n123&quot;`, will separate the newline character(s) into their own text runs. The link will be applied separately to the runs before and after the newline. * Removing a link will update the text style of the range to match the style of the preceding text (or the default text styles if the preceding text is another link) unless different styles are being set in the same request.
                          &quot;bookmarkId&quot;: &quot;A String&quot;, # The ID of a bookmark in this document.
                          &quot;url&quot;: &quot;A String&quot;, # An external URL.
                          &quot;headingId&quot;: &quot;A String&quot;, # The ID of a heading in this document.
                        },
                        &quot;strikethrough&quot;: True or False, # Whether or not the text is struck through.
                        &quot;weightedFontFamily&quot;: { # Represents a font family and weight of text. # The font family and rendered weight of the text. If an update request specifies values for both `weighted_font_family` and `bold`, the `weighted_font_family` is applied first, then `bold`. If `weighted_font_family#weight` is not set, it defaults to `400`. If `weighted_font_family` is set, then `weighted_font_family#font_family` must also be set with a non-empty value. Otherwise, a 400 bad request error is returned.
                          &quot;fontFamily&quot;: &quot;A String&quot;, # The font family of the text. The font family can be any font from the Font menu in Docs or from [Google Fonts] (https://fonts.google.com/). If the font name is unrecognized, the text is rendered in `Arial`.
                          &quot;weight&quot;: 42, # The weight of the font. This field can have any value that is a multiple of `100` between `100` and `900`, inclusive. This range corresponds to the numerical values described in the CSS 2.1 Specification, [section 15.6](https://www.w3.org/TR/CSS21/fonts.html#font-boldness), with non-numerical values disallowed. The default value is `400` (&quot;normal&quot;). The font weight makes up just one component of the rendered font weight. The rendered weight is determined by a combination of the `weight` and the text style&#x27;s resolved `bold` value, after accounting for inheritance: * If the text is bold and the weight is less than `400`, the rendered weight is 400. * If the text is bold and the weight is greater than or equal to `400` but is less than `700`, the rendered weight is `700`. * If the weight is greater than or equal to `700`, the rendered weight is equal to the weight. * If the text is not bold, the rendered weight is equal to the weight.
                        },
                        &quot;underline&quot;: True or False, # Whether or not the text is underlined.
                        &quot;smallCaps&quot;: True or False, # Whether or not the text is in small capital letters.
                      },
                    },
                  },
                  &quot;suggestedDeletionIds&quot;: [ # The suggested deletion IDs. If empty, then there are no suggested deletions of this content.
                    &quot;A String&quot;,
                  ],
                  &quot;textStyle&quot;: { # Represents the styling that can be applied to text. Inherited text styles are represented as unset fields in this message. A text style&#x27;s parent depends on where the text style is defined: * The TextStyle of text in a Paragraph inherits from the paragraph&#x27;s corresponding named style type. * The TextStyle on a named style inherits from the normal text named style. * The TextStyle of the normal text named style inherits from the default text style in the Docs editor. * The TextStyle on a Paragraph element that is contained in a table may inherit its text style from the table style. If the text style does not inherit from a parent, unsetting fields will revert the style to a value matching the defaults in the Docs editor. # The text style of this HorizontalRule. Similar to text content, like text runs and footnote references, the text style of a horizontal rule can affect content layout as well as the styling of text inserted adjacent to it.
                    &quot;italic&quot;: True or False, # Whether or not the text is italicized.
                    &quot;baselineOffset&quot;: &quot;A String&quot;, # The text&#x27;s vertical offset from its normal position. Text with `SUPERSCRIPT` or `SUBSCRIPT` baseline offsets is automatically rendered in a smaller font size, computed based on the `font_size` field. The `font_size` itself is not affected by changes in this field.
                    &quot;bold&quot;: True or False, # Whether or not the text is rendered as bold.
                    &quot;fontSize&quot;: { # A magnitude in a single direction in the specified units. # The size of the text&#x27;s font.
                      &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                      &quot;magnitude&quot;: 3.14, # The magnitude.
                    },
                    &quot;foregroundColor&quot;: { # A color that can either be fully opaque or fully transparent. # The foreground color of the text. If set, the color is either an RGB color or transparent, depending on the `color` field.
                      &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                        &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                          &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                          &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                          &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                        },
                      },
                    },
                    &quot;backgroundColor&quot;: { # A color that can either be fully opaque or fully transparent. # The background color of the text. If set, the color is either an RGB color or transparent, depending on the `color` field.
                      &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                        &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                          &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                          &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                          &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                        },
                      },
                    },
                    &quot;link&quot;: { # A reference to another portion of a document or an external URL resource. # The hyperlink destination of the text. If unset, there is no link. Links are not inherited from parent text. Changing the link in an update request causes some other changes to the text style of the range: * When setting a link, the text foreground color will be updated to the default link color and the text will be underlined. If these fields are modified in the same request, those values will be used instead of the link defaults. * Setting a link on a text range that overlaps with an existing link will also update the existing link to point to the new URL. * Links are not settable on newline characters. As a result, setting a link on a text range that crosses a paragraph boundary, such as `&quot;ABC\n123&quot;`, will separate the newline character(s) into their own text runs. The link will be applied separately to the runs before and after the newline. * Removing a link will update the text style of the range to match the style of the preceding text (or the default text styles if the preceding text is another link) unless different styles are being set in the same request.
                      &quot;bookmarkId&quot;: &quot;A String&quot;, # The ID of a bookmark in this document.
                      &quot;url&quot;: &quot;A String&quot;, # An external URL.
                      &quot;headingId&quot;: &quot;A String&quot;, # The ID of a heading in this document.
                    },
                    &quot;strikethrough&quot;: True or False, # Whether or not the text is struck through.
                    &quot;weightedFontFamily&quot;: { # Represents a font family and weight of text. # The font family and rendered weight of the text. If an update request specifies values for both `weighted_font_family` and `bold`, the `weighted_font_family` is applied first, then `bold`. If `weighted_font_family#weight` is not set, it defaults to `400`. If `weighted_font_family` is set, then `weighted_font_family#font_family` must also be set with a non-empty value. Otherwise, a 400 bad request error is returned.
                      &quot;fontFamily&quot;: &quot;A String&quot;, # The font family of the text. The font family can be any font from the Font menu in Docs or from [Google Fonts] (https://fonts.google.com/). If the font name is unrecognized, the text is rendered in `Arial`.
                      &quot;weight&quot;: 42, # The weight of the font. This field can have any value that is a multiple of `100` between `100` and `900`, inclusive. This range corresponds to the numerical values described in the CSS 2.1 Specification, [section 15.6](https://www.w3.org/TR/CSS21/fonts.html#font-boldness), with non-numerical values disallowed. The default value is `400` (&quot;normal&quot;). The font weight makes up just one component of the rendered font weight. The rendered weight is determined by a combination of the `weight` and the text style&#x27;s resolved `bold` value, after accounting for inheritance: * If the text is bold and the weight is less than `400`, the rendered weight is 400. * If the text is bold and the weight is greater than or equal to `400` but is less than `700`, the rendered weight is `700`. * If the weight is greater than or equal to `700`, the rendered weight is equal to the weight. * If the text is not bold, the rendered weight is equal to the weight.
                    },
                    &quot;underline&quot;: True or False, # Whether or not the text is underlined.
                    &quot;smallCaps&quot;: True or False, # Whether or not the text is in small capital letters.
                  },
                },
                &quot;autoText&quot;: { # A ParagraphElement representing a spot in the text that is dynamically replaced with content that can change over time, like a page number. # An auto text paragraph element.
                  &quot;suggestedDeletionIds&quot;: [ # The suggested deletion IDs. If empty, then there are no suggested deletions of this content.
                    &quot;A String&quot;,
                  ],
                  &quot;suggestedInsertionIds&quot;: [ # The suggested insertion IDs. An AutoText may have multiple insertion IDs if it is a nested suggested change. If empty, then this is not a suggested insertion.
                    &quot;A String&quot;,
                  ],
                  &quot;suggestedTextStyleChanges&quot;: { # The suggested text style changes to this AutoText, keyed by suggestion ID.
                    &quot;a_key&quot;: { # A suggested change to a TextStyle.
                      &quot;textStyleSuggestionState&quot;: { # A mask that indicates which of the fields on the base TextStyle have been changed in this suggestion. For any field set to true, there is a new suggested value. # A mask that indicates which of the fields on the base TextStyle have been changed in this suggestion.
                        &quot;backgroundColorSuggested&quot;: True or False, # Indicates if there was a suggested change to background_color.
                        &quot;fontSizeSuggested&quot;: True or False, # Indicates if there was a suggested change to font_size.
                        &quot;boldSuggested&quot;: True or False, # Indicates if there was a suggested change to bold.
                        &quot;baselineOffsetSuggested&quot;: True or False, # Indicates if there was a suggested change to baseline_offset.
                        &quot;foregroundColorSuggested&quot;: True or False, # Indicates if there was a suggested change to foreground_color.
                        &quot;italicSuggested&quot;: True or False, # Indicates if there was a suggested change to italic.
                        &quot;linkSuggested&quot;: True or False, # Indicates if there was a suggested change to link.
                        &quot;underlineSuggested&quot;: True or False, # Indicates if there was a suggested change to underline.
                        &quot;weightedFontFamilySuggested&quot;: True or False, # Indicates if there was a suggested change to weighted_font_family.
                        &quot;smallCapsSuggested&quot;: True or False, # Indicates if there was a suggested change to small_caps.
                        &quot;strikethroughSuggested&quot;: True or False, # Indicates if there was a suggested change to strikethrough.
                      },
                      &quot;textStyle&quot;: { # Represents the styling that can be applied to text. Inherited text styles are represented as unset fields in this message. A text style&#x27;s parent depends on where the text style is defined: * The TextStyle of text in a Paragraph inherits from the paragraph&#x27;s corresponding named style type. * The TextStyle on a named style inherits from the normal text named style. * The TextStyle of the normal text named style inherits from the default text style in the Docs editor. * The TextStyle on a Paragraph element that is contained in a table may inherit its text style from the table style. If the text style does not inherit from a parent, unsetting fields will revert the style to a value matching the defaults in the Docs editor. # A TextStyle that only includes the changes made in this suggestion. This can be used along with the text_style_suggestion_state to see which fields have changed and their new values.
                        &quot;italic&quot;: True or False, # Whether or not the text is italicized.
                        &quot;baselineOffset&quot;: &quot;A String&quot;, # The text&#x27;s vertical offset from its normal position. Text with `SUPERSCRIPT` or `SUBSCRIPT` baseline offsets is automatically rendered in a smaller font size, computed based on the `font_size` field. The `font_size` itself is not affected by changes in this field.
                        &quot;bold&quot;: True or False, # Whether or not the text is rendered as bold.
                        &quot;fontSize&quot;: { # A magnitude in a single direction in the specified units. # The size of the text&#x27;s font.
                          &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                          &quot;magnitude&quot;: 3.14, # The magnitude.
                        },
                        &quot;foregroundColor&quot;: { # A color that can either be fully opaque or fully transparent. # The foreground color of the text. If set, the color is either an RGB color or transparent, depending on the `color` field.
                          &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                            &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                              &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                              &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                              &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                            },
                          },
                        },
                        &quot;backgroundColor&quot;: { # A color that can either be fully opaque or fully transparent. # The background color of the text. If set, the color is either an RGB color or transparent, depending on the `color` field.
                          &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                            &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                              &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                              &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                              &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                            },
                          },
                        },
                        &quot;link&quot;: { # A reference to another portion of a document or an external URL resource. # The hyperlink destination of the text. If unset, there is no link. Links are not inherited from parent text. Changing the link in an update request causes some other changes to the text style of the range: * When setting a link, the text foreground color will be updated to the default link color and the text will be underlined. If these fields are modified in the same request, those values will be used instead of the link defaults. * Setting a link on a text range that overlaps with an existing link will also update the existing link to point to the new URL. * Links are not settable on newline characters. As a result, setting a link on a text range that crosses a paragraph boundary, such as `&quot;ABC\n123&quot;`, will separate the newline character(s) into their own text runs. The link will be applied separately to the runs before and after the newline. * Removing a link will update the text style of the range to match the style of the preceding text (or the default text styles if the preceding text is another link) unless different styles are being set in the same request.
                          &quot;bookmarkId&quot;: &quot;A String&quot;, # The ID of a bookmark in this document.
                          &quot;url&quot;: &quot;A String&quot;, # An external URL.
                          &quot;headingId&quot;: &quot;A String&quot;, # The ID of a heading in this document.
                        },
                        &quot;strikethrough&quot;: True or False, # Whether or not the text is struck through.
                        &quot;weightedFontFamily&quot;: { # Represents a font family and weight of text. # The font family and rendered weight of the text. If an update request specifies values for both `weighted_font_family` and `bold`, the `weighted_font_family` is applied first, then `bold`. If `weighted_font_family#weight` is not set, it defaults to `400`. If `weighted_font_family` is set, then `weighted_font_family#font_family` must also be set with a non-empty value. Otherwise, a 400 bad request error is returned.
                          &quot;fontFamily&quot;: &quot;A String&quot;, # The font family of the text. The font family can be any font from the Font menu in Docs or from [Google Fonts] (https://fonts.google.com/). If the font name is unrecognized, the text is rendered in `Arial`.
                          &quot;weight&quot;: 42, # The weight of the font. This field can have any value that is a multiple of `100` between `100` and `900`, inclusive. This range corresponds to the numerical values described in the CSS 2.1 Specification, [section 15.6](https://www.w3.org/TR/CSS21/fonts.html#font-boldness), with non-numerical values disallowed. The default value is `400` (&quot;normal&quot;). The font weight makes up just one component of the rendered font weight. The rendered weight is determined by a combination of the `weight` and the text style&#x27;s resolved `bold` value, after accounting for inheritance: * If the text is bold and the weight is less than `400`, the rendered weight is 400. * If the text is bold and the weight is greater than or equal to `400` but is less than `700`, the rendered weight is `700`. * If the weight is greater than or equal to `700`, the rendered weight is equal to the weight. * If the text is not bold, the rendered weight is equal to the weight.
                        },
                        &quot;underline&quot;: True or False, # Whether or not the text is underlined.
                        &quot;smallCaps&quot;: True or False, # Whether or not the text is in small capital letters.
                      },
                    },
                  },
                  &quot;type&quot;: &quot;A String&quot;, # The type of this auto text.
                  &quot;textStyle&quot;: { # Represents the styling that can be applied to text. Inherited text styles are represented as unset fields in this message. A text style&#x27;s parent depends on where the text style is defined: * The TextStyle of text in a Paragraph inherits from the paragraph&#x27;s corresponding named style type. * The TextStyle on a named style inherits from the normal text named style. * The TextStyle of the normal text named style inherits from the default text style in the Docs editor. * The TextStyle on a Paragraph element that is contained in a table may inherit its text style from the table style. If the text style does not inherit from a parent, unsetting fields will revert the style to a value matching the defaults in the Docs editor. # The text style of this AutoText.
                    &quot;italic&quot;: True or False, # Whether or not the text is italicized.
                    &quot;baselineOffset&quot;: &quot;A String&quot;, # The text&#x27;s vertical offset from its normal position. Text with `SUPERSCRIPT` or `SUBSCRIPT` baseline offsets is automatically rendered in a smaller font size, computed based on the `font_size` field. The `font_size` itself is not affected by changes in this field.
                    &quot;bold&quot;: True or False, # Whether or not the text is rendered as bold.
                    &quot;fontSize&quot;: { # A magnitude in a single direction in the specified units. # The size of the text&#x27;s font.
                      &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                      &quot;magnitude&quot;: 3.14, # The magnitude.
                    },
                    &quot;foregroundColor&quot;: { # A color that can either be fully opaque or fully transparent. # The foreground color of the text. If set, the color is either an RGB color or transparent, depending on the `color` field.
                      &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                        &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                          &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                          &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                          &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                        },
                      },
                    },
                    &quot;backgroundColor&quot;: { # A color that can either be fully opaque or fully transparent. # The background color of the text. If set, the color is either an RGB color or transparent, depending on the `color` field.
                      &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                        &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                          &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                          &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                          &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                        },
                      },
                    },
                    &quot;link&quot;: { # A reference to another portion of a document or an external URL resource. # The hyperlink destination of the text. If unset, there is no link. Links are not inherited from parent text. Changing the link in an update request causes some other changes to the text style of the range: * When setting a link, the text foreground color will be updated to the default link color and the text will be underlined. If these fields are modified in the same request, those values will be used instead of the link defaults. * Setting a link on a text range that overlaps with an existing link will also update the existing link to point to the new URL. * Links are not settable on newline characters. As a result, setting a link on a text range that crosses a paragraph boundary, such as `&quot;ABC\n123&quot;`, will separate the newline character(s) into their own text runs. The link will be applied separately to the runs before and after the newline. * Removing a link will update the text style of the range to match the style of the preceding text (or the default text styles if the preceding text is another link) unless different styles are being set in the same request.
                      &quot;bookmarkId&quot;: &quot;A String&quot;, # The ID of a bookmark in this document.
                      &quot;url&quot;: &quot;A String&quot;, # An external URL.
                      &quot;headingId&quot;: &quot;A String&quot;, # The ID of a heading in this document.
                    },
                    &quot;strikethrough&quot;: True or False, # Whether or not the text is struck through.
                    &quot;weightedFontFamily&quot;: { # Represents a font family and weight of text. # The font family and rendered weight of the text. If an update request specifies values for both `weighted_font_family` and `bold`, the `weighted_font_family` is applied first, then `bold`. If `weighted_font_family#weight` is not set, it defaults to `400`. If `weighted_font_family` is set, then `weighted_font_family#font_family` must also be set with a non-empty value. Otherwise, a 400 bad request error is returned.
                      &quot;fontFamily&quot;: &quot;A String&quot;, # The font family of the text. The font family can be any font from the Font menu in Docs or from [Google Fonts] (https://fonts.google.com/). If the font name is unrecognized, the text is rendered in `Arial`.
                      &quot;weight&quot;: 42, # The weight of the font. This field can have any value that is a multiple of `100` between `100` and `900`, inclusive. This range corresponds to the numerical values described in the CSS 2.1 Specification, [section 15.6](https://www.w3.org/TR/CSS21/fonts.html#font-boldness), with non-numerical values disallowed. The default value is `400` (&quot;normal&quot;). The font weight makes up just one component of the rendered font weight. The rendered weight is determined by a combination of the `weight` and the text style&#x27;s resolved `bold` value, after accounting for inheritance: * If the text is bold and the weight is less than `400`, the rendered weight is 400. * If the text is bold and the weight is greater than or equal to `400` but is less than `700`, the rendered weight is `700`. * If the weight is greater than or equal to `700`, the rendered weight is equal to the weight. * If the text is not bold, the rendered weight is equal to the weight.
                    },
                    &quot;underline&quot;: True or False, # Whether or not the text is underlined.
                    &quot;smallCaps&quot;: True or False, # Whether or not the text is in small capital letters.
                  },
                },
                &quot;inlineObjectElement&quot;: { # A ParagraphElement that contains an InlineObject. # An inline object paragraph element.
                  &quot;suggestedDeletionIds&quot;: [ # The suggested deletion IDs. If empty, then there are no suggested deletions of this content.
                    &quot;A String&quot;,
                  ],
                  &quot;suggestedInsertionIds&quot;: [ # The suggested insertion IDs. An InlineObjectElement may have multiple insertion IDs if it is a nested suggested change. If empty, then this is not a suggested insertion.
                    &quot;A String&quot;,
                  ],
                  &quot;suggestedTextStyleChanges&quot;: { # The suggested text style changes to this InlineObject, keyed by suggestion ID.
                    &quot;a_key&quot;: { # A suggested change to a TextStyle.
                      &quot;textStyleSuggestionState&quot;: { # A mask that indicates which of the fields on the base TextStyle have been changed in this suggestion. For any field set to true, there is a new suggested value. # A mask that indicates which of the fields on the base TextStyle have been changed in this suggestion.
                        &quot;backgroundColorSuggested&quot;: True or False, # Indicates if there was a suggested change to background_color.
                        &quot;fontSizeSuggested&quot;: True or False, # Indicates if there was a suggested change to font_size.
                        &quot;boldSuggested&quot;: True or False, # Indicates if there was a suggested change to bold.
                        &quot;baselineOffsetSuggested&quot;: True or False, # Indicates if there was a suggested change to baseline_offset.
                        &quot;foregroundColorSuggested&quot;: True or False, # Indicates if there was a suggested change to foreground_color.
                        &quot;italicSuggested&quot;: True or False, # Indicates if there was a suggested change to italic.
                        &quot;linkSuggested&quot;: True or False, # Indicates if there was a suggested change to link.
                        &quot;underlineSuggested&quot;: True or False, # Indicates if there was a suggested change to underline.
                        &quot;weightedFontFamilySuggested&quot;: True or False, # Indicates if there was a suggested change to weighted_font_family.
                        &quot;smallCapsSuggested&quot;: True or False, # Indicates if there was a suggested change to small_caps.
                        &quot;strikethroughSuggested&quot;: True or False, # Indicates if there was a suggested change to strikethrough.
                      },
                      &quot;textStyle&quot;: { # Represents the styling that can be applied to text. Inherited text styles are represented as unset fields in this message. A text style&#x27;s parent depends on where the text style is defined: * The TextStyle of text in a Paragraph inherits from the paragraph&#x27;s corresponding named style type. * The TextStyle on a named style inherits from the normal text named style. * The TextStyle of the normal text named style inherits from the default text style in the Docs editor. * The TextStyle on a Paragraph element that is contained in a table may inherit its text style from the table style. If the text style does not inherit from a parent, unsetting fields will revert the style to a value matching the defaults in the Docs editor. # A TextStyle that only includes the changes made in this suggestion. This can be used along with the text_style_suggestion_state to see which fields have changed and their new values.
                        &quot;italic&quot;: True or False, # Whether or not the text is italicized.
                        &quot;baselineOffset&quot;: &quot;A String&quot;, # The text&#x27;s vertical offset from its normal position. Text with `SUPERSCRIPT` or `SUBSCRIPT` baseline offsets is automatically rendered in a smaller font size, computed based on the `font_size` field. The `font_size` itself is not affected by changes in this field.
                        &quot;bold&quot;: True or False, # Whether or not the text is rendered as bold.
                        &quot;fontSize&quot;: { # A magnitude in a single direction in the specified units. # The size of the text&#x27;s font.
                          &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                          &quot;magnitude&quot;: 3.14, # The magnitude.
                        },
                        &quot;foregroundColor&quot;: { # A color that can either be fully opaque or fully transparent. # The foreground color of the text. If set, the color is either an RGB color or transparent, depending on the `color` field.
                          &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                            &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                              &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                              &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                              &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                            },
                          },
                        },
                        &quot;backgroundColor&quot;: { # A color that can either be fully opaque or fully transparent. # The background color of the text. If set, the color is either an RGB color or transparent, depending on the `color` field.
                          &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                            &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                              &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                              &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                              &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                            },
                          },
                        },
                        &quot;link&quot;: { # A reference to another portion of a document or an external URL resource. # The hyperlink destination of the text. If unset, there is no link. Links are not inherited from parent text. Changing the link in an update request causes some other changes to the text style of the range: * When setting a link, the text foreground color will be updated to the default link color and the text will be underlined. If these fields are modified in the same request, those values will be used instead of the link defaults. * Setting a link on a text range that overlaps with an existing link will also update the existing link to point to the new URL. * Links are not settable on newline characters. As a result, setting a link on a text range that crosses a paragraph boundary, such as `&quot;ABC\n123&quot;`, will separate the newline character(s) into their own text runs. The link will be applied separately to the runs before and after the newline. * Removing a link will update the text style of the range to match the style of the preceding text (or the default text styles if the preceding text is another link) unless different styles are being set in the same request.
                          &quot;bookmarkId&quot;: &quot;A String&quot;, # The ID of a bookmark in this document.
                          &quot;url&quot;: &quot;A String&quot;, # An external URL.
                          &quot;headingId&quot;: &quot;A String&quot;, # The ID of a heading in this document.
                        },
                        &quot;strikethrough&quot;: True or False, # Whether or not the text is struck through.
                        &quot;weightedFontFamily&quot;: { # Represents a font family and weight of text. # The font family and rendered weight of the text. If an update request specifies values for both `weighted_font_family` and `bold`, the `weighted_font_family` is applied first, then `bold`. If `weighted_font_family#weight` is not set, it defaults to `400`. If `weighted_font_family` is set, then `weighted_font_family#font_family` must also be set with a non-empty value. Otherwise, a 400 bad request error is returned.
                          &quot;fontFamily&quot;: &quot;A String&quot;, # The font family of the text. The font family can be any font from the Font menu in Docs or from [Google Fonts] (https://fonts.google.com/). If the font name is unrecognized, the text is rendered in `Arial`.
                          &quot;weight&quot;: 42, # The weight of the font. This field can have any value that is a multiple of `100` between `100` and `900`, inclusive. This range corresponds to the numerical values described in the CSS 2.1 Specification, [section 15.6](https://www.w3.org/TR/CSS21/fonts.html#font-boldness), with non-numerical values disallowed. The default value is `400` (&quot;normal&quot;). The font weight makes up just one component of the rendered font weight. The rendered weight is determined by a combination of the `weight` and the text style&#x27;s resolved `bold` value, after accounting for inheritance: * If the text is bold and the weight is less than `400`, the rendered weight is 400. * If the text is bold and the weight is greater than or equal to `400` but is less than `700`, the rendered weight is `700`. * If the weight is greater than or equal to `700`, the rendered weight is equal to the weight. * If the text is not bold, the rendered weight is equal to the weight.
                        },
                        &quot;underline&quot;: True or False, # Whether or not the text is underlined.
                        &quot;smallCaps&quot;: True or False, # Whether or not the text is in small capital letters.
                      },
                    },
                  },
                  &quot;inlineObjectId&quot;: &quot;A String&quot;, # The ID of the InlineObject this element contains.
                  &quot;textStyle&quot;: { # Represents the styling that can be applied to text. Inherited text styles are represented as unset fields in this message. A text style&#x27;s parent depends on where the text style is defined: * The TextStyle of text in a Paragraph inherits from the paragraph&#x27;s corresponding named style type. * The TextStyle on a named style inherits from the normal text named style. * The TextStyle of the normal text named style inherits from the default text style in the Docs editor. * The TextStyle on a Paragraph element that is contained in a table may inherit its text style from the table style. If the text style does not inherit from a parent, unsetting fields will revert the style to a value matching the defaults in the Docs editor. # The text style of this InlineObjectElement. Similar to text content, like text runs and footnote references, the text style of an inline object element can affect content layout as well as the styling of text inserted adjacent to it.
                    &quot;italic&quot;: True or False, # Whether or not the text is italicized.
                    &quot;baselineOffset&quot;: &quot;A String&quot;, # The text&#x27;s vertical offset from its normal position. Text with `SUPERSCRIPT` or `SUBSCRIPT` baseline offsets is automatically rendered in a smaller font size, computed based on the `font_size` field. The `font_size` itself is not affected by changes in this field.
                    &quot;bold&quot;: True or False, # Whether or not the text is rendered as bold.
                    &quot;fontSize&quot;: { # A magnitude in a single direction in the specified units. # The size of the text&#x27;s font.
                      &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                      &quot;magnitude&quot;: 3.14, # The magnitude.
                    },
                    &quot;foregroundColor&quot;: { # A color that can either be fully opaque or fully transparent. # The foreground color of the text. If set, the color is either an RGB color or transparent, depending on the `color` field.
                      &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                        &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                          &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                          &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                          &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                        },
                      },
                    },
                    &quot;backgroundColor&quot;: { # A color that can either be fully opaque or fully transparent. # The background color of the text. If set, the color is either an RGB color or transparent, depending on the `color` field.
                      &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                        &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                          &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                          &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                          &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                        },
                      },
                    },
                    &quot;link&quot;: { # A reference to another portion of a document or an external URL resource. # The hyperlink destination of the text. If unset, there is no link. Links are not inherited from parent text. Changing the link in an update request causes some other changes to the text style of the range: * When setting a link, the text foreground color will be updated to the default link color and the text will be underlined. If these fields are modified in the same request, those values will be used instead of the link defaults. * Setting a link on a text range that overlaps with an existing link will also update the existing link to point to the new URL. * Links are not settable on newline characters. As a result, setting a link on a text range that crosses a paragraph boundary, such as `&quot;ABC\n123&quot;`, will separate the newline character(s) into their own text runs. The link will be applied separately to the runs before and after the newline. * Removing a link will update the text style of the range to match the style of the preceding text (or the default text styles if the preceding text is another link) unless different styles are being set in the same request.
                      &quot;bookmarkId&quot;: &quot;A String&quot;, # The ID of a bookmark in this document.
                      &quot;url&quot;: &quot;A String&quot;, # An external URL.
                      &quot;headingId&quot;: &quot;A String&quot;, # The ID of a heading in this document.
                    },
                    &quot;strikethrough&quot;: True or False, # Whether or not the text is struck through.
                    &quot;weightedFontFamily&quot;: { # Represents a font family and weight of text. # The font family and rendered weight of the text. If an update request specifies values for both `weighted_font_family` and `bold`, the `weighted_font_family` is applied first, then `bold`. If `weighted_font_family#weight` is not set, it defaults to `400`. If `weighted_font_family` is set, then `weighted_font_family#font_family` must also be set with a non-empty value. Otherwise, a 400 bad request error is returned.
                      &quot;fontFamily&quot;: &quot;A String&quot;, # The font family of the text. The font family can be any font from the Font menu in Docs or from [Google Fonts] (https://fonts.google.com/). If the font name is unrecognized, the text is rendered in `Arial`.
                      &quot;weight&quot;: 42, # The weight of the font. This field can have any value that is a multiple of `100` between `100` and `900`, inclusive. This range corresponds to the numerical values described in the CSS 2.1 Specification, [section 15.6](https://www.w3.org/TR/CSS21/fonts.html#font-boldness), with non-numerical values disallowed. The default value is `400` (&quot;normal&quot;). The font weight makes up just one component of the rendered font weight. The rendered weight is determined by a combination of the `weight` and the text style&#x27;s resolved `bold` value, after accounting for inheritance: * If the text is bold and the weight is less than `400`, the rendered weight is 400. * If the text is bold and the weight is greater than or equal to `400` but is less than `700`, the rendered weight is `700`. * If the weight is greater than or equal to `700`, the rendered weight is equal to the weight. * If the text is not bold, the rendered weight is equal to the weight.
                    },
                    &quot;underline&quot;: True or False, # Whether or not the text is underlined.
                    &quot;smallCaps&quot;: True or False, # Whether or not the text is in small capital letters.
                  },
                },
                &quot;footnoteReference&quot;: { # A ParagraphElement representing a footnote reference. A footnote reference is the inline content rendered with a number and is used to identify the footnote. # A footnote reference paragraph element.
                  &quot;footnoteId&quot;: &quot;A String&quot;, # The ID of the footnote that contains the content of this footnote reference.
                  &quot;suggestedInsertionIds&quot;: [ # The suggested insertion IDs. A FootnoteReference may have multiple insertion IDs if it is a nested suggested change. If empty, then this is not a suggested insertion.
                    &quot;A String&quot;,
                  ],
                  &quot;footnoteNumber&quot;: &quot;A String&quot;, # The rendered number of this footnote.
                  &quot;suggestedDeletionIds&quot;: [ # The suggested deletion IDs. If empty, then there are no suggested deletions of this content.
                    &quot;A String&quot;,
                  ],
                  &quot;suggestedTextStyleChanges&quot;: { # The suggested text style changes to this FootnoteReference, keyed by suggestion ID.
                    &quot;a_key&quot;: { # A suggested change to a TextStyle.
                      &quot;textStyleSuggestionState&quot;: { # A mask that indicates which of the fields on the base TextStyle have been changed in this suggestion. For any field set to true, there is a new suggested value. # A mask that indicates which of the fields on the base TextStyle have been changed in this suggestion.
                        &quot;backgroundColorSuggested&quot;: True or False, # Indicates if there was a suggested change to background_color.
                        &quot;fontSizeSuggested&quot;: True or False, # Indicates if there was a suggested change to font_size.
                        &quot;boldSuggested&quot;: True or False, # Indicates if there was a suggested change to bold.
                        &quot;baselineOffsetSuggested&quot;: True or False, # Indicates if there was a suggested change to baseline_offset.
                        &quot;foregroundColorSuggested&quot;: True or False, # Indicates if there was a suggested change to foreground_color.
                        &quot;italicSuggested&quot;: True or False, # Indicates if there was a suggested change to italic.
                        &quot;linkSuggested&quot;: True or False, # Indicates if there was a suggested change to link.
                        &quot;underlineSuggested&quot;: True or False, # Indicates if there was a suggested change to underline.
                        &quot;weightedFontFamilySuggested&quot;: True or False, # Indicates if there was a suggested change to weighted_font_family.
                        &quot;smallCapsSuggested&quot;: True or False, # Indicates if there was a suggested change to small_caps.
                        &quot;strikethroughSuggested&quot;: True or False, # Indicates if there was a suggested change to strikethrough.
                      },
                      &quot;textStyle&quot;: { # Represents the styling that can be applied to text. Inherited text styles are represented as unset fields in this message. A text style&#x27;s parent depends on where the text style is defined: * The TextStyle of text in a Paragraph inherits from the paragraph&#x27;s corresponding named style type. * The TextStyle on a named style inherits from the normal text named style. * The TextStyle of the normal text named style inherits from the default text style in the Docs editor. * The TextStyle on a Paragraph element that is contained in a table may inherit its text style from the table style. If the text style does not inherit from a parent, unsetting fields will revert the style to a value matching the defaults in the Docs editor. # A TextStyle that only includes the changes made in this suggestion. This can be used along with the text_style_suggestion_state to see which fields have changed and their new values.
                        &quot;italic&quot;: True or False, # Whether or not the text is italicized.
                        &quot;baselineOffset&quot;: &quot;A String&quot;, # The text&#x27;s vertical offset from its normal position. Text with `SUPERSCRIPT` or `SUBSCRIPT` baseline offsets is automatically rendered in a smaller font size, computed based on the `font_size` field. The `font_size` itself is not affected by changes in this field.
                        &quot;bold&quot;: True or False, # Whether or not the text is rendered as bold.
                        &quot;fontSize&quot;: { # A magnitude in a single direction in the specified units. # The size of the text&#x27;s font.
                          &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                          &quot;magnitude&quot;: 3.14, # The magnitude.
                        },
                        &quot;foregroundColor&quot;: { # A color that can either be fully opaque or fully transparent. # The foreground color of the text. If set, the color is either an RGB color or transparent, depending on the `color` field.
                          &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                            &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                              &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                              &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                              &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                            },
                          },
                        },
                        &quot;backgroundColor&quot;: { # A color that can either be fully opaque or fully transparent. # The background color of the text. If set, the color is either an RGB color or transparent, depending on the `color` field.
                          &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                            &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                              &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                              &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                              &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                            },
                          },
                        },
                        &quot;link&quot;: { # A reference to another portion of a document or an external URL resource. # The hyperlink destination of the text. If unset, there is no link. Links are not inherited from parent text. Changing the link in an update request causes some other changes to the text style of the range: * When setting a link, the text foreground color will be updated to the default link color and the text will be underlined. If these fields are modified in the same request, those values will be used instead of the link defaults. * Setting a link on a text range that overlaps with an existing link will also update the existing link to point to the new URL. * Links are not settable on newline characters. As a result, setting a link on a text range that crosses a paragraph boundary, such as `&quot;ABC\n123&quot;`, will separate the newline character(s) into their own text runs. The link will be applied separately to the runs before and after the newline. * Removing a link will update the text style of the range to match the style of the preceding text (or the default text styles if the preceding text is another link) unless different styles are being set in the same request.
                          &quot;bookmarkId&quot;: &quot;A String&quot;, # The ID of a bookmark in this document.
                          &quot;url&quot;: &quot;A String&quot;, # An external URL.
                          &quot;headingId&quot;: &quot;A String&quot;, # The ID of a heading in this document.
                        },
                        &quot;strikethrough&quot;: True or False, # Whether or not the text is struck through.
                        &quot;weightedFontFamily&quot;: { # Represents a font family and weight of text. # The font family and rendered weight of the text. If an update request specifies values for both `weighted_font_family` and `bold`, the `weighted_font_family` is applied first, then `bold`. If `weighted_font_family#weight` is not set, it defaults to `400`. If `weighted_font_family` is set, then `weighted_font_family#font_family` must also be set with a non-empty value. Otherwise, a 400 bad request error is returned.
                          &quot;fontFamily&quot;: &quot;A String&quot;, # The font family of the text. The font family can be any font from the Font menu in Docs or from [Google Fonts] (https://fonts.google.com/). If the font name is unrecognized, the text is rendered in `Arial`.
                          &quot;weight&quot;: 42, # The weight of the font. This field can have any value that is a multiple of `100` between `100` and `900`, inclusive. This range corresponds to the numerical values described in the CSS 2.1 Specification, [section 15.6](https://www.w3.org/TR/CSS21/fonts.html#font-boldness), with non-numerical values disallowed. The default value is `400` (&quot;normal&quot;). The font weight makes up just one component of the rendered font weight. The rendered weight is determined by a combination of the `weight` and the text style&#x27;s resolved `bold` value, after accounting for inheritance: * If the text is bold and the weight is less than `400`, the rendered weight is 400. * If the text is bold and the weight is greater than or equal to `400` but is less than `700`, the rendered weight is `700`. * If the weight is greater than or equal to `700`, the rendered weight is equal to the weight. * If the text is not bold, the rendered weight is equal to the weight.
                        },
                        &quot;underline&quot;: True or False, # Whether or not the text is underlined.
                        &quot;smallCaps&quot;: True or False, # Whether or not the text is in small capital letters.
                      },
                    },
                  },
                  &quot;textStyle&quot;: { # Represents the styling that can be applied to text. Inherited text styles are represented as unset fields in this message. A text style&#x27;s parent depends on where the text style is defined: * The TextStyle of text in a Paragraph inherits from the paragraph&#x27;s corresponding named style type. * The TextStyle on a named style inherits from the normal text named style. * The TextStyle of the normal text named style inherits from the default text style in the Docs editor. * The TextStyle on a Paragraph element that is contained in a table may inherit its text style from the table style. If the text style does not inherit from a parent, unsetting fields will revert the style to a value matching the defaults in the Docs editor. # The text style of this FootnoteReference.
                    &quot;italic&quot;: True or False, # Whether or not the text is italicized.
                    &quot;baselineOffset&quot;: &quot;A String&quot;, # The text&#x27;s vertical offset from its normal position. Text with `SUPERSCRIPT` or `SUBSCRIPT` baseline offsets is automatically rendered in a smaller font size, computed based on the `font_size` field. The `font_size` itself is not affected by changes in this field.
                    &quot;bold&quot;: True or False, # Whether or not the text is rendered as bold.
                    &quot;fontSize&quot;: { # A magnitude in a single direction in the specified units. # The size of the text&#x27;s font.
                      &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                      &quot;magnitude&quot;: 3.14, # The magnitude.
                    },
                    &quot;foregroundColor&quot;: { # A color that can either be fully opaque or fully transparent. # The foreground color of the text. If set, the color is either an RGB color or transparent, depending on the `color` field.
                      &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                        &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                          &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                          &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                          &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                        },
                      },
                    },
                    &quot;backgroundColor&quot;: { # A color that can either be fully opaque or fully transparent. # The background color of the text. If set, the color is either an RGB color or transparent, depending on the `color` field.
                      &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                        &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                          &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                          &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                          &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                        },
                      },
                    },
                    &quot;link&quot;: { # A reference to another portion of a document or an external URL resource. # The hyperlink destination of the text. If unset, there is no link. Links are not inherited from parent text. Changing the link in an update request causes some other changes to the text style of the range: * When setting a link, the text foreground color will be updated to the default link color and the text will be underlined. If these fields are modified in the same request, those values will be used instead of the link defaults. * Setting a link on a text range that overlaps with an existing link will also update the existing link to point to the new URL. * Links are not settable on newline characters. As a result, setting a link on a text range that crosses a paragraph boundary, such as `&quot;ABC\n123&quot;`, will separate the newline character(s) into their own text runs. The link will be applied separately to the runs before and after the newline. * Removing a link will update the text style of the range to match the style of the preceding text (or the default text styles if the preceding text is another link) unless different styles are being set in the same request.
                      &quot;bookmarkId&quot;: &quot;A String&quot;, # The ID of a bookmark in this document.
                      &quot;url&quot;: &quot;A String&quot;, # An external URL.
                      &quot;headingId&quot;: &quot;A String&quot;, # The ID of a heading in this document.
                    },
                    &quot;strikethrough&quot;: True or False, # Whether or not the text is struck through.
                    &quot;weightedFontFamily&quot;: { # Represents a font family and weight of text. # The font family and rendered weight of the text. If an update request specifies values for both `weighted_font_family` and `bold`, the `weighted_font_family` is applied first, then `bold`. If `weighted_font_family#weight` is not set, it defaults to `400`. If `weighted_font_family` is set, then `weighted_font_family#font_family` must also be set with a non-empty value. Otherwise, a 400 bad request error is returned.
                      &quot;fontFamily&quot;: &quot;A String&quot;, # The font family of the text. The font family can be any font from the Font menu in Docs or from [Google Fonts] (https://fonts.google.com/). If the font name is unrecognized, the text is rendered in `Arial`.
                      &quot;weight&quot;: 42, # The weight of the font. This field can have any value that is a multiple of `100` between `100` and `900`, inclusive. This range corresponds to the numerical values described in the CSS 2.1 Specification, [section 15.6](https://www.w3.org/TR/CSS21/fonts.html#font-boldness), with non-numerical values disallowed. The default value is `400` (&quot;normal&quot;). The font weight makes up just one component of the rendered font weight. The rendered weight is determined by a combination of the `weight` and the text style&#x27;s resolved `bold` value, after accounting for inheritance: * If the text is bold and the weight is less than `400`, the rendered weight is 400. * If the text is bold and the weight is greater than or equal to `400` but is less than `700`, the rendered weight is `700`. * If the weight is greater than or equal to `700`, the rendered weight is equal to the weight. * If the text is not bold, the rendered weight is equal to the weight.
                    },
                    &quot;underline&quot;: True or False, # Whether or not the text is underlined.
                    &quot;smallCaps&quot;: True or False, # Whether or not the text is in small capital letters.
                  },
                },
                &quot;startIndex&quot;: 42, # The zero-based start index of this paragraph element, in UTF-16 code units.
                &quot;endIndex&quot;: 42, # The zero-base end index of this paragraph element, exclusive, in UTF-16 code units.
                &quot;equation&quot;: { # A ParagraphElement representing an equation. # An equation paragraph element.
                  &quot;suggestedDeletionIds&quot;: [ # The suggested deletion IDs. If empty, then there are no suggested deletions of this content.
                    &quot;A String&quot;,
                  ],
                  &quot;suggestedInsertionIds&quot;: [ # The suggested insertion IDs. A Equation may have multiple insertion IDs if it is a nested suggested change. If empty, then this is not a suggested insertion.
                    &quot;A String&quot;,
                  ],
                },
                &quot;columnBreak&quot;: { # A ParagraphElement representing a column break. A column break makes the subsequent text start at the top of the next column. # A column break paragraph element.
                  &quot;suggestedTextStyleChanges&quot;: { # The suggested text style changes to this ColumnBreak, keyed by suggestion ID.
                    &quot;a_key&quot;: { # A suggested change to a TextStyle.
                      &quot;textStyleSuggestionState&quot;: { # A mask that indicates which of the fields on the base TextStyle have been changed in this suggestion. For any field set to true, there is a new suggested value. # A mask that indicates which of the fields on the base TextStyle have been changed in this suggestion.
                        &quot;backgroundColorSuggested&quot;: True or False, # Indicates if there was a suggested change to background_color.
                        &quot;fontSizeSuggested&quot;: True or False, # Indicates if there was a suggested change to font_size.
                        &quot;boldSuggested&quot;: True or False, # Indicates if there was a suggested change to bold.
                        &quot;baselineOffsetSuggested&quot;: True or False, # Indicates if there was a suggested change to baseline_offset.
                        &quot;foregroundColorSuggested&quot;: True or False, # Indicates if there was a suggested change to foreground_color.
                        &quot;italicSuggested&quot;: True or False, # Indicates if there was a suggested change to italic.
                        &quot;linkSuggested&quot;: True or False, # Indicates if there was a suggested change to link.
                        &quot;underlineSuggested&quot;: True or False, # Indicates if there was a suggested change to underline.
                        &quot;weightedFontFamilySuggested&quot;: True or False, # Indicates if there was a suggested change to weighted_font_family.
                        &quot;smallCapsSuggested&quot;: True or False, # Indicates if there was a suggested change to small_caps.
                        &quot;strikethroughSuggested&quot;: True or False, # Indicates if there was a suggested change to strikethrough.
                      },
                      &quot;textStyle&quot;: { # Represents the styling that can be applied to text. Inherited text styles are represented as unset fields in this message. A text style&#x27;s parent depends on where the text style is defined: * The TextStyle of text in a Paragraph inherits from the paragraph&#x27;s corresponding named style type. * The TextStyle on a named style inherits from the normal text named style. * The TextStyle of the normal text named style inherits from the default text style in the Docs editor. * The TextStyle on a Paragraph element that is contained in a table may inherit its text style from the table style. If the text style does not inherit from a parent, unsetting fields will revert the style to a value matching the defaults in the Docs editor. # A TextStyle that only includes the changes made in this suggestion. This can be used along with the text_style_suggestion_state to see which fields have changed and their new values.
                        &quot;italic&quot;: True or False, # Whether or not the text is italicized.
                        &quot;baselineOffset&quot;: &quot;A String&quot;, # The text&#x27;s vertical offset from its normal position. Text with `SUPERSCRIPT` or `SUBSCRIPT` baseline offsets is automatically rendered in a smaller font size, computed based on the `font_size` field. The `font_size` itself is not affected by changes in this field.
                        &quot;bold&quot;: True or False, # Whether or not the text is rendered as bold.
                        &quot;fontSize&quot;: { # A magnitude in a single direction in the specified units. # The size of the text&#x27;s font.
                          &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                          &quot;magnitude&quot;: 3.14, # The magnitude.
                        },
                        &quot;foregroundColor&quot;: { # A color that can either be fully opaque or fully transparent. # The foreground color of the text. If set, the color is either an RGB color or transparent, depending on the `color` field.
                          &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                            &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                              &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                              &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                              &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                            },
                          },
                        },
                        &quot;backgroundColor&quot;: { # A color that can either be fully opaque or fully transparent. # The background color of the text. If set, the color is either an RGB color or transparent, depending on the `color` field.
                          &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                            &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                              &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                              &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                              &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                            },
                          },
                        },
                        &quot;link&quot;: { # A reference to another portion of a document or an external URL resource. # The hyperlink destination of the text. If unset, there is no link. Links are not inherited from parent text. Changing the link in an update request causes some other changes to the text style of the range: * When setting a link, the text foreground color will be updated to the default link color and the text will be underlined. If these fields are modified in the same request, those values will be used instead of the link defaults. * Setting a link on a text range that overlaps with an existing link will also update the existing link to point to the new URL. * Links are not settable on newline characters. As a result, setting a link on a text range that crosses a paragraph boundary, such as `&quot;ABC\n123&quot;`, will separate the newline character(s) into their own text runs. The link will be applied separately to the runs before and after the newline. * Removing a link will update the text style of the range to match the style of the preceding text (or the default text styles if the preceding text is another link) unless different styles are being set in the same request.
                          &quot;bookmarkId&quot;: &quot;A String&quot;, # The ID of a bookmark in this document.
                          &quot;url&quot;: &quot;A String&quot;, # An external URL.
                          &quot;headingId&quot;: &quot;A String&quot;, # The ID of a heading in this document.
                        },
                        &quot;strikethrough&quot;: True or False, # Whether or not the text is struck through.
                        &quot;weightedFontFamily&quot;: { # Represents a font family and weight of text. # The font family and rendered weight of the text. If an update request specifies values for both `weighted_font_family` and `bold`, the `weighted_font_family` is applied first, then `bold`. If `weighted_font_family#weight` is not set, it defaults to `400`. If `weighted_font_family` is set, then `weighted_font_family#font_family` must also be set with a non-empty value. Otherwise, a 400 bad request error is returned.
                          &quot;fontFamily&quot;: &quot;A String&quot;, # The font family of the text. The font family can be any font from the Font menu in Docs or from [Google Fonts] (https://fonts.google.com/). If the font name is unrecognized, the text is rendered in `Arial`.
                          &quot;weight&quot;: 42, # The weight of the font. This field can have any value that is a multiple of `100` between `100` and `900`, inclusive. This range corresponds to the numerical values described in the CSS 2.1 Specification, [section 15.6](https://www.w3.org/TR/CSS21/fonts.html#font-boldness), with non-numerical values disallowed. The default value is `400` (&quot;normal&quot;). The font weight makes up just one component of the rendered font weight. The rendered weight is determined by a combination of the `weight` and the text style&#x27;s resolved `bold` value, after accounting for inheritance: * If the text is bold and the weight is less than `400`, the rendered weight is 400. * If the text is bold and the weight is greater than or equal to `400` but is less than `700`, the rendered weight is `700`. * If the weight is greater than or equal to `700`, the rendered weight is equal to the weight. * If the text is not bold, the rendered weight is equal to the weight.
                        },
                        &quot;underline&quot;: True or False, # Whether or not the text is underlined.
                        &quot;smallCaps&quot;: True or False, # Whether or not the text is in small capital letters.
                      },
                    },
                  },
                  &quot;suggestedDeletionIds&quot;: [ # The suggested deletion IDs. If empty, then there are no suggested deletions of this content.
                    &quot;A String&quot;,
                  ],
                  &quot;textStyle&quot;: { # Represents the styling that can be applied to text. Inherited text styles are represented as unset fields in this message. A text style&#x27;s parent depends on where the text style is defined: * The TextStyle of text in a Paragraph inherits from the paragraph&#x27;s corresponding named style type. * The TextStyle on a named style inherits from the normal text named style. * The TextStyle of the normal text named style inherits from the default text style in the Docs editor. * The TextStyle on a Paragraph element that is contained in a table may inherit its text style from the table style. If the text style does not inherit from a parent, unsetting fields will revert the style to a value matching the defaults in the Docs editor. # The text style of this ColumnBreak. Similar to text content, like text runs and footnote references, the text style of a column break can affect content layout as well as the styling of text inserted adjacent to it.
                    &quot;italic&quot;: True or False, # Whether or not the text is italicized.
                    &quot;baselineOffset&quot;: &quot;A String&quot;, # The text&#x27;s vertical offset from its normal position. Text with `SUPERSCRIPT` or `SUBSCRIPT` baseline offsets is automatically rendered in a smaller font size, computed based on the `font_size` field. The `font_size` itself is not affected by changes in this field.
                    &quot;bold&quot;: True or False, # Whether or not the text is rendered as bold.
                    &quot;fontSize&quot;: { # A magnitude in a single direction in the specified units. # The size of the text&#x27;s font.
                      &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                      &quot;magnitude&quot;: 3.14, # The magnitude.
                    },
                    &quot;foregroundColor&quot;: { # A color that can either be fully opaque or fully transparent. # The foreground color of the text. If set, the color is either an RGB color or transparent, depending on the `color` field.
                      &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                        &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                          &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                          &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                          &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                        },
                      },
                    },
                    &quot;backgroundColor&quot;: { # A color that can either be fully opaque or fully transparent. # The background color of the text. If set, the color is either an RGB color or transparent, depending on the `color` field.
                      &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                        &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                          &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                          &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                          &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                        },
                      },
                    },
                    &quot;link&quot;: { # A reference to another portion of a document or an external URL resource. # The hyperlink destination of the text. If unset, there is no link. Links are not inherited from parent text. Changing the link in an update request causes some other changes to the text style of the range: * When setting a link, the text foreground color will be updated to the default link color and the text will be underlined. If these fields are modified in the same request, those values will be used instead of the link defaults. * Setting a link on a text range that overlaps with an existing link will also update the existing link to point to the new URL. * Links are not settable on newline characters. As a result, setting a link on a text range that crosses a paragraph boundary, such as `&quot;ABC\n123&quot;`, will separate the newline character(s) into their own text runs. The link will be applied separately to the runs before and after the newline. * Removing a link will update the text style of the range to match the style of the preceding text (or the default text styles if the preceding text is another link) unless different styles are being set in the same request.
                      &quot;bookmarkId&quot;: &quot;A String&quot;, # The ID of a bookmark in this document.
                      &quot;url&quot;: &quot;A String&quot;, # An external URL.
                      &quot;headingId&quot;: &quot;A String&quot;, # The ID of a heading in this document.
                    },
                    &quot;strikethrough&quot;: True or False, # Whether or not the text is struck through.
                    &quot;weightedFontFamily&quot;: { # Represents a font family and weight of text. # The font family and rendered weight of the text. If an update request specifies values for both `weighted_font_family` and `bold`, the `weighted_font_family` is applied first, then `bold`. If `weighted_font_family#weight` is not set, it defaults to `400`. If `weighted_font_family` is set, then `weighted_font_family#font_family` must also be set with a non-empty value. Otherwise, a 400 bad request error is returned.
                      &quot;fontFamily&quot;: &quot;A String&quot;, # The font family of the text. The font family can be any font from the Font menu in Docs or from [Google Fonts] (https://fonts.google.com/). If the font name is unrecognized, the text is rendered in `Arial`.
                      &quot;weight&quot;: 42, # The weight of the font. This field can have any value that is a multiple of `100` between `100` and `900`, inclusive. This range corresponds to the numerical values described in the CSS 2.1 Specification, [section 15.6](https://www.w3.org/TR/CSS21/fonts.html#font-boldness), with non-numerical values disallowed. The default value is `400` (&quot;normal&quot;). The font weight makes up just one component of the rendered font weight. The rendered weight is determined by a combination of the `weight` and the text style&#x27;s resolved `bold` value, after accounting for inheritance: * If the text is bold and the weight is less than `400`, the rendered weight is 400. * If the text is bold and the weight is greater than or equal to `400` but is less than `700`, the rendered weight is `700`. * If the weight is greater than or equal to `700`, the rendered weight is equal to the weight. * If the text is not bold, the rendered weight is equal to the weight.
                    },
                    &quot;underline&quot;: True or False, # Whether or not the text is underlined.
                    &quot;smallCaps&quot;: True or False, # Whether or not the text is in small capital letters.
                  },
                  &quot;suggestedInsertionIds&quot;: [ # The suggested insertion IDs. A ColumnBreak may have multiple insertion IDs if it is a nested suggested change. If empty, then this is not a suggested insertion.
                    &quot;A String&quot;,
                  ],
                },
              },
            ],
            &quot;positionedObjectIds&quot;: [ # The IDs of the positioned objects tethered to this paragraph.
              &quot;A String&quot;,
            ],
            &quot;paragraphStyle&quot;: { # Styles that apply to a whole paragraph. Inherited paragraph styles are represented as unset fields in this message. A paragraph style&#x27;s parent depends on where the paragraph style is defined: * The ParagraphStyle on a Paragraph inherits from the paragraph&#x27;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 is 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. # The style of this paragraph.
              &quot;borderRight&quot;: { # A border around a paragraph. # The border to the right of this paragraph. If unset, the value is inherited from the parent. Paragraph borders cannot be partially updated. When making changes to a paragraph border the new border must be specified in its entirety.
                &quot;color&quot;: { # A color that can either be fully opaque or fully transparent. # The color of the border.
                  &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                    &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                      &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                      &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                      &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                    },
                  },
                },
                &quot;width&quot;: { # A magnitude in a single direction in the specified units. # The width of the border.
                  &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                  &quot;magnitude&quot;: 3.14, # The magnitude.
                },
                &quot;padding&quot;: { # A magnitude in a single direction in the specified units. # The padding of the border.
                  &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                  &quot;magnitude&quot;: 3.14, # The magnitude.
                },
                &quot;dashStyle&quot;: &quot;A String&quot;, # The dash style of the border.
              },
              &quot;indentFirstLine&quot;: { # A magnitude in a single direction in the specified units. # The amount of indentation for the first line of the paragraph. If unset, the value is inherited from the parent.
                &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                &quot;magnitude&quot;: 3.14, # The magnitude.
              },
              &quot;alignment&quot;: &quot;A String&quot;, # The text alignment for this paragraph.
              &quot;lineSpacing&quot;: 3.14, # The amount of space between lines, as a percentage of normal, where normal is represented as 100.0. If unset, the value is inherited from the parent.
              &quot;keepLinesTogether&quot;: True or False, # Whether all lines of the paragraph should be laid out on the same page or column if possible. If unset, the value is inherited from the parent.
              &quot;avoidWidowAndOrphan&quot;: True or False, # Whether to avoid widows and orphans for the paragraph. If unset, the value is inherited from the parent.
              &quot;spaceBelow&quot;: { # A magnitude in a single direction in the specified units. # The amount of extra space below the paragraph. If unset, the value is inherited from the parent.
                &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                &quot;magnitude&quot;: 3.14, # The magnitude.
              },
              &quot;borderBetween&quot;: { # A border around a paragraph. # 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 making changes to a paragraph border the new border must be specified in its entirety.
                &quot;color&quot;: { # A color that can either be fully opaque or fully transparent. # The color of the border.
                  &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                    &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                      &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                      &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                      &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                    },
                  },
                },
                &quot;width&quot;: { # A magnitude in a single direction in the specified units. # The width of the border.
                  &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                  &quot;magnitude&quot;: 3.14, # The magnitude.
                },
                &quot;padding&quot;: { # A magnitude in a single direction in the specified units. # The padding of the border.
                  &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                  &quot;magnitude&quot;: 3.14, # The magnitude.
                },
                &quot;dashStyle&quot;: &quot;A String&quot;, # The dash style of the border.
              },
              &quot;headingId&quot;: &quot;A String&quot;, # The heading ID of the paragraph. If empty, then this paragraph is not a heading. This property is read-only.
              &quot;spaceAbove&quot;: { # A magnitude in a single direction in the specified units. # The amount of extra space above the paragraph. If unset, the value is inherited from the parent.
                &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                &quot;magnitude&quot;: 3.14, # The magnitude.
              },
              &quot;direction&quot;: &quot;A String&quot;, # The text direction of this paragraph. If unset, the value defaults to LEFT_TO_RIGHT since paragraph direction is not inherited.
              &quot;namedStyleType&quot;: &quot;A String&quot;, # The named style type of the paragraph. Since updating the named style type affects other properties within ParagraphStyle, the named style type is applied before the other properties are updated.
              &quot;tabStops&quot;: [ # A list of the tab stops for this paragraph. The list of tab stops is not inherited. This property is read-only.
                { # A tab stop within a paragraph.
                  &quot;offset&quot;: { # A magnitude in a single direction in the specified units. # The offset between this tab stop and the start margin.
                    &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                    &quot;magnitude&quot;: 3.14, # The magnitude.
                  },
                  &quot;alignment&quot;: &quot;A String&quot;, # The alignment of this tab stop. If unset, the value defaults to START.
                },
              ],
              &quot;indentStart&quot;: { # A magnitude in a single direction in the specified units. # The amount of indentation for the paragraph on the side that corresponds to the start of the text, based on the current paragraph direction. If unset, the value is inherited from the parent.
                &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                &quot;magnitude&quot;: 3.14, # The magnitude.
              },
              &quot;keepWithNext&quot;: True or False, # Whether at least a part of this paragraph should be laid out on the same page or column as the next paragraph if possible. If unset, the value is inherited from the parent.
              &quot;borderTop&quot;: { # A border around a paragraph. # 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 making changes to a paragraph border the new border must be specified in its entirety.
                &quot;color&quot;: { # A color that can either be fully opaque or fully transparent. # The color of the border.
                  &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                    &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                      &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                      &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                      &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                    },
                  },
                },
                &quot;width&quot;: { # A magnitude in a single direction in the specified units. # The width of the border.
                  &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                  &quot;magnitude&quot;: 3.14, # The magnitude.
                },
                &quot;padding&quot;: { # A magnitude in a single direction in the specified units. # The padding of the border.
                  &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                  &quot;magnitude&quot;: 3.14, # The magnitude.
                },
                &quot;dashStyle&quot;: &quot;A String&quot;, # The dash style of the border.
              },
              &quot;borderLeft&quot;: { # A border around a paragraph. # The border to the left of this paragraph. If unset, the value is inherited from the parent. Paragraph borders cannot be partially updated. When making changes to a paragraph border the new border must be specified in its entirety.
                &quot;color&quot;: { # A color that can either be fully opaque or fully transparent. # The color of the border.
                  &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                    &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                      &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                      &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                      &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                    },
                  },
                },
                &quot;width&quot;: { # A magnitude in a single direction in the specified units. # The width of the border.
                  &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                  &quot;magnitude&quot;: 3.14, # The magnitude.
                },
                &quot;padding&quot;: { # A magnitude in a single direction in the specified units. # The padding of the border.
                  &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                  &quot;magnitude&quot;: 3.14, # The magnitude.
                },
                &quot;dashStyle&quot;: &quot;A String&quot;, # The dash style of the border.
              },
              &quot;borderBottom&quot;: { # A border around a paragraph. # 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 making changes to a paragraph border the new border must be specified in its entirety.
                &quot;color&quot;: { # A color that can either be fully opaque or fully transparent. # The color of the border.
                  &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                    &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                      &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                      &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                      &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                    },
                  },
                },
                &quot;width&quot;: { # A magnitude in a single direction in the specified units. # The width of the border.
                  &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                  &quot;magnitude&quot;: 3.14, # The magnitude.
                },
                &quot;padding&quot;: { # A magnitude in a single direction in the specified units. # The padding of the border.
                  &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                  &quot;magnitude&quot;: 3.14, # The magnitude.
                },
                &quot;dashStyle&quot;: &quot;A String&quot;, # The dash style of the border.
              },
              &quot;shading&quot;: { # The shading of a paragraph. # The shading of the paragraph. If unset, the value is inherited from the parent.
                &quot;backgroundColor&quot;: { # A color that can either be fully opaque or fully transparent. # The background color of this paragraph shading.
                  &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                    &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                      &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                      &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                      &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                    },
                  },
                },
              },
              &quot;indentEnd&quot;: { # A magnitude in a single direction in the specified units. # 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.
                &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                &quot;magnitude&quot;: 3.14, # The magnitude.
              },
              &quot;spacingMode&quot;: &quot;A String&quot;, # The spacing mode for the paragraph.
            },
          },
          &quot;startIndex&quot;: 42, # The zero-based start index of this structural element, in UTF-16 code units.
          &quot;endIndex&quot;: 42, # The zero-based end index of this structural element, exclusive, in UTF-16 code units.
          &quot;tableOfContents&quot;: { # A StructuralElement representing a table of contents. # A table of contents type of structural element.
            &quot;suggestedInsertionIds&quot;: [ # The suggested insertion IDs. A TableOfContents may have multiple insertion IDs if it is a nested suggested change. If empty, then this is not a suggested insertion.
              &quot;A String&quot;,
            ],
            &quot;content&quot;: [ # The content of the table of contents.
              # Object with schema name: StructuralElement
            ],
            &quot;suggestedDeletionIds&quot;: [ # The suggested deletion IDs. If empty, then there are no suggested deletions of this content.
              &quot;A String&quot;,
            ],
          },
          &quot;table&quot;: { # A StructuralElement representing a table. # A table type of structural element.
            &quot;tableStyle&quot;: { # Styles that apply to a table. # The style of the table.
              &quot;tableColumnProperties&quot;: [ # The properties of each column. Note that in Docs, tables contain rows and rows contain cells, similar to HTML. So the properties for a row can be found on the row&#x27;s table_row_style.
                { # The properties of a column in a table.
                  &quot;widthType&quot;: &quot;A String&quot;, # The width type of the column.
                  &quot;width&quot;: { # A magnitude in a single direction in the specified units. # The width of the column. Set when the column&#x27;s `width_type` is FIXED_WIDTH.
                    &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                    &quot;magnitude&quot;: 3.14, # The magnitude.
                  },
                },
              ],
            },
            &quot;suggestedInsertionIds&quot;: [ # The suggested insertion IDs. A Table may have multiple insertion IDs if it is a nested suggested change. If empty, then this is not a suggested insertion.
              &quot;A String&quot;,
            ],
            &quot;tableRows&quot;: [ # The contents and style of each row.
              { # The contents and style of a row in a Table.
                &quot;suggestedDeletionIds&quot;: [ # The suggested deletion IDs. If empty, then there are no suggested deletions of this content.
                  &quot;A String&quot;,
                ],
                &quot;suggestedInsertionIds&quot;: [ # The suggested insertion IDs. A TableRow may have multiple insertion IDs if it is a nested suggested change. If empty, then this is not a suggested insertion.
                  &quot;A String&quot;,
                ],
                &quot;suggestedTableRowStyleChanges&quot;: { # The suggested style changes to this row, keyed by suggestion ID.
                  &quot;a_key&quot;: { # A suggested change to a TableRowStyle.
                    &quot;tableRowStyleSuggestionState&quot;: { # A mask that indicates which of the fields on the base TableRowStyle have been changed in this suggestion. For any field set to true, there is a new suggested value. # A mask that indicates which of the fields on the base TableRowStyle have been changed in this suggestion.
                      &quot;minRowHeightSuggested&quot;: True or False, # Indicates if there was a suggested change to min_row_height.
                    },
                    &quot;tableRowStyle&quot;: { # Styles that apply to a table row. # A TableRowStyle that only includes the changes made in this suggestion. This can be used along with the table_row_style_suggestion_state to see which fields have changed and their new values.
                      &quot;minRowHeight&quot;: { # A magnitude in a single direction in the specified units. # The minimum height of the row. The row will be rendered in the Docs editor at a height equal to or greater than this value in order to show all the content in the row&#x27;s cells.
                        &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                        &quot;magnitude&quot;: 3.14, # The magnitude.
                      },
                    },
                  },
                },
                &quot;startIndex&quot;: 42, # The zero-based start index of this row, in UTF-16 code units.
                &quot;tableCells&quot;: [ # The contents and style of each cell in this row. It is possible for a table to be non-rectangular, so some rows may have a different number of cells than other rows in the same table.
                  { # The contents and style of a cell in a Table.
                    &quot;tableCellStyle&quot;: { # The style of a TableCell. Inherited table cell styles are represented as unset fields in this message. A table cell style can inherit from the table&#x27;s style. # The style of the cell.
                      &quot;borderTop&quot;: { # A border around a table cell. Table cell borders cannot be transparent. To hide a table cell border, make its width 0. # The top border of the cell.
                        &quot;width&quot;: { # A magnitude in a single direction in the specified units. # The width of the border.
                          &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                          &quot;magnitude&quot;: 3.14, # The magnitude.
                        },
                        &quot;dashStyle&quot;: &quot;A String&quot;, # The dash style of the border.
                        &quot;color&quot;: { # A color that can either be fully opaque or fully transparent. # The color of the border. This color cannot be transparent.
                          &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                            &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                              &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                              &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                              &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                            },
                          },
                        },
                      },
                      &quot;borderBottom&quot;: { # A border around a table cell. Table cell borders cannot be transparent. To hide a table cell border, make its width 0. # The bottom border of the cell.
                        &quot;width&quot;: { # A magnitude in a single direction in the specified units. # The width of the border.
                          &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                          &quot;magnitude&quot;: 3.14, # The magnitude.
                        },
                        &quot;dashStyle&quot;: &quot;A String&quot;, # The dash style of the border.
                        &quot;color&quot;: { # A color that can either be fully opaque or fully transparent. # The color of the border. This color cannot be transparent.
                          &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                            &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                              &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                              &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                              &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                            },
                          },
                        },
                      },
                      &quot;contentAlignment&quot;: &quot;A String&quot;, # The alignment of the content in the table cell. The default alignment matches the alignment for newly created table cells in the Docs editor.
                      &quot;paddingLeft&quot;: { # A magnitude in a single direction in the specified units. # The left padding of the cell.
                        &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                        &quot;magnitude&quot;: 3.14, # The magnitude.
                      },
                      &quot;backgroundColor&quot;: { # A color that can either be fully opaque or fully transparent. # The background color of the cell.
                        &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                          &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                            &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                            &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                            &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                          },
                        },
                      },
                      &quot;paddingTop&quot;: { # A magnitude in a single direction in the specified units. # The top padding of the cell.
                        &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                        &quot;magnitude&quot;: 3.14, # The magnitude.
                      },
                      &quot;rowSpan&quot;: 42, # The row span of the cell. This property is read-only.
                      &quot;paddingRight&quot;: { # A magnitude in a single direction in the specified units. # The right padding of the cell.
                        &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                        &quot;magnitude&quot;: 3.14, # The magnitude.
                      },
                      &quot;borderRight&quot;: { # A border around a table cell. Table cell borders cannot be transparent. To hide a table cell border, make its width 0. # The right border of the cell.
                        &quot;width&quot;: { # A magnitude in a single direction in the specified units. # The width of the border.
                          &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                          &quot;magnitude&quot;: 3.14, # The magnitude.
                        },
                        &quot;dashStyle&quot;: &quot;A String&quot;, # The dash style of the border.
                        &quot;color&quot;: { # A color that can either be fully opaque or fully transparent. # The color of the border. This color cannot be transparent.
                          &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                            &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                              &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                              &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                              &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                            },
                          },
                        },
                      },
                      &quot;borderLeft&quot;: { # A border around a table cell. Table cell borders cannot be transparent. To hide a table cell border, make its width 0. # The left border of the cell.
                        &quot;width&quot;: { # A magnitude in a single direction in the specified units. # The width of the border.
                          &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                          &quot;magnitude&quot;: 3.14, # The magnitude.
                        },
                        &quot;dashStyle&quot;: &quot;A String&quot;, # The dash style of the border.
                        &quot;color&quot;: { # A color that can either be fully opaque or fully transparent. # The color of the border. This color cannot be transparent.
                          &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                            &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                              &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                              &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                              &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                            },
                          },
                        },
                      },
                      &quot;columnSpan&quot;: 42, # The column span of the cell. This property is read-only.
                      &quot;paddingBottom&quot;: { # A magnitude in a single direction in the specified units. # The bottom padding of the cell.
                        &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                        &quot;magnitude&quot;: 3.14, # The magnitude.
                      },
                    },
                    &quot;content&quot;: [ # The content of the cell.
                      # Object with schema name: StructuralElement
                    ],
                    &quot;suggestedDeletionIds&quot;: [ # The suggested deletion IDs. If empty, then there are no suggested deletions of this content.
                      &quot;A String&quot;,
                    ],
                    &quot;startIndex&quot;: 42, # The zero-based start index of this cell, in UTF-16 code units.
                    &quot;suggestedInsertionIds&quot;: [ # The suggested insertion IDs. A TableCell may have multiple insertion IDs if it is a nested suggested change. If empty, then this is not a suggested insertion.
                      &quot;A String&quot;,
                    ],
                    &quot;suggestedTableCellStyleChanges&quot;: { # The suggested changes to the table cell style, keyed by suggestion ID.
                      &quot;a_key&quot;: { # A suggested change to a TableCellStyle.
                        &quot;tableCellStyle&quot;: { # The style of a TableCell. Inherited table cell styles are represented as unset fields in this message. A table cell style can inherit from the table&#x27;s style. # A TableCellStyle that only includes the changes made in this suggestion. This can be used along with the table_cell_style_suggestion_state to see which fields have changed and their new values.
                          &quot;borderTop&quot;: { # A border around a table cell. Table cell borders cannot be transparent. To hide a table cell border, make its width 0. # The top border of the cell.
                            &quot;width&quot;: { # A magnitude in a single direction in the specified units. # The width of the border.
                              &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                              &quot;magnitude&quot;: 3.14, # The magnitude.
                            },
                            &quot;dashStyle&quot;: &quot;A String&quot;, # The dash style of the border.
                            &quot;color&quot;: { # A color that can either be fully opaque or fully transparent. # The color of the border. This color cannot be transparent.
                              &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                                &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                                  &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                                  &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                                  &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                                },
                              },
                            },
                          },
                          &quot;borderBottom&quot;: { # A border around a table cell. Table cell borders cannot be transparent. To hide a table cell border, make its width 0. # The bottom border of the cell.
                            &quot;width&quot;: { # A magnitude in a single direction in the specified units. # The width of the border.
                              &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                              &quot;magnitude&quot;: 3.14, # The magnitude.
                            },
                            &quot;dashStyle&quot;: &quot;A String&quot;, # The dash style of the border.
                            &quot;color&quot;: { # A color that can either be fully opaque or fully transparent. # The color of the border. This color cannot be transparent.
                              &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                                &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                                  &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                                  &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                                  &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                                },
                              },
                            },
                          },
                          &quot;contentAlignment&quot;: &quot;A String&quot;, # The alignment of the content in the table cell. The default alignment matches the alignment for newly created table cells in the Docs editor.
                          &quot;paddingLeft&quot;: { # A magnitude in a single direction in the specified units. # The left padding of the cell.
                            &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                            &quot;magnitude&quot;: 3.14, # The magnitude.
                          },
                          &quot;backgroundColor&quot;: { # A color that can either be fully opaque or fully transparent. # The background color of the cell.
                            &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                              &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                                &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                                &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                                &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                              },
                            },
                          },
                          &quot;paddingTop&quot;: { # A magnitude in a single direction in the specified units. # The top padding of the cell.
                            &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                            &quot;magnitude&quot;: 3.14, # The magnitude.
                          },
                          &quot;rowSpan&quot;: 42, # The row span of the cell. This property is read-only.
                          &quot;paddingRight&quot;: { # A magnitude in a single direction in the specified units. # The right padding of the cell.
                            &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                            &quot;magnitude&quot;: 3.14, # The magnitude.
                          },
                          &quot;borderRight&quot;: { # A border around a table cell. Table cell borders cannot be transparent. To hide a table cell border, make its width 0. # The right border of the cell.
                            &quot;width&quot;: { # A magnitude in a single direction in the specified units. # The width of the border.
                              &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                              &quot;magnitude&quot;: 3.14, # The magnitude.
                            },
                            &quot;dashStyle&quot;: &quot;A String&quot;, # The dash style of the border.
                            &quot;color&quot;: { # A color that can either be fully opaque or fully transparent. # The color of the border. This color cannot be transparent.
                              &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                                &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                                  &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                                  &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                                  &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                                },
                              },
                            },
                          },
                          &quot;borderLeft&quot;: { # A border around a table cell. Table cell borders cannot be transparent. To hide a table cell border, make its width 0. # The left border of the cell.
                            &quot;width&quot;: { # A magnitude in a single direction in the specified units. # The width of the border.
                              &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                              &quot;magnitude&quot;: 3.14, # The magnitude.
                            },
                            &quot;dashStyle&quot;: &quot;A String&quot;, # The dash style of the border.
                            &quot;color&quot;: { # A color that can either be fully opaque or fully transparent. # The color of the border. This color cannot be transparent.
                              &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                                &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                                  &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                                  &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                                  &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                                },
                              },
                            },
                          },
                          &quot;columnSpan&quot;: 42, # The column span of the cell. This property is read-only.
                          &quot;paddingBottom&quot;: { # A magnitude in a single direction in the specified units. # The bottom padding of the cell.
                            &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                            &quot;magnitude&quot;: 3.14, # The magnitude.
                          },
                        },
                        &quot;tableCellStyleSuggestionState&quot;: { # A mask that indicates which of the fields on the base TableCellStyle have been changed in this suggestion. For any field set to true, there is a new suggested value. # A mask that indicates which of the fields on the base TableCellStyle have been changed in this suggestion.
                          &quot;rowSpanSuggested&quot;: True or False, # Indicates if there was a suggested change to row_span.
                          &quot;columnSpanSuggested&quot;: True or False, # Indicates if there was a suggested change to column_span.
                          &quot;borderBottomSuggested&quot;: True or False, # Indicates if there was a suggested change to border_bottom.
                          &quot;borderLeftSuggested&quot;: True or False, # Indicates if there was a suggested change to border_left.
                          &quot;paddingLeftSuggested&quot;: True or False, # Indicates if there was a suggested change to padding_left.
                          &quot;paddingRightSuggested&quot;: True or False, # Indicates if there was a suggested change to padding_right.
                          &quot;paddingBottomSuggested&quot;: True or False, # Indicates if there was a suggested change to padding_bottom.
                          &quot;paddingTopSuggested&quot;: True or False, # Indicates if there was a suggested change to padding_top.
                          &quot;contentAlignmentSuggested&quot;: True or False, # Indicates if there was a suggested change to content_alignment.
                          &quot;borderRightSuggested&quot;: True or False, # Indicates if there was a suggested change to border_right.
                          &quot;backgroundColorSuggested&quot;: True or False, # Indicates if there was a suggested change to background_color.
                          &quot;borderTopSuggested&quot;: True or False, # Indicates if there was a suggested change to border_top.
                        },
                      },
                    },
                    &quot;endIndex&quot;: 42, # The zero-based end index of this cell, exclusive, in UTF-16 code units.
                  },
                ],
                &quot;endIndex&quot;: 42, # The zero-based end index of this row, exclusive, in UTF-16 code units.
                &quot;tableRowStyle&quot;: { # Styles that apply to a table row. # The style of the table row.
                  &quot;minRowHeight&quot;: { # A magnitude in a single direction in the specified units. # The minimum height of the row. The row will be rendered in the Docs editor at a height equal to or greater than this value in order to show all the content in the row&#x27;s cells.
                    &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                    &quot;magnitude&quot;: 3.14, # The magnitude.
                  },
                },
              },
            ],
            &quot;suggestedDeletionIds&quot;: [ # The suggested deletion IDs. If empty, then there are no suggested deletions of this content.
              &quot;A String&quot;,
            ],
            &quot;rows&quot;: 42, # Number of rows in the table.
            &quot;columns&quot;: 42, # Number of columns in the table. It is possible for a table to be non-rectangular, so some rows may have a different number of cells.
          },
          &quot;sectionBreak&quot;: { # A StructuralElement representing a section break. A section is a range of content which has the same SectionStyle. A section break represents the start of a new section, and the section style applies to the section after the section break. The document body always begins with a section break. # A section break type of structural element.
            &quot;suggestedInsertionIds&quot;: [ # The suggested insertion IDs. A SectionBreak may have multiple insertion IDs if it is a nested suggested change. If empty, then this is not a suggested insertion.
              &quot;A String&quot;,
            ],
            &quot;sectionStyle&quot;: { # The styling that applies to a section. # The style of the section after this section break.
              &quot;marginLeft&quot;: { # A magnitude in a single direction in the specified units. # The left page margin of the section. If unset, uses margin_left from DocumentStyle. Updating left margin causes columns in this section to resize. Since the margin affects column width, it is applied before column properties. When updating this property, setting a concrete value is required. Unsetting this property results in a 400 bad request error.
                &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                &quot;magnitude&quot;: 3.14, # The magnitude.
              },
              &quot;sectionType&quot;: &quot;A String&quot;, # Output only. The type of section.
              &quot;evenPageHeaderId&quot;: &quot;A String&quot;, # The ID of the header used only for even pages. If the value of DocumentStyle&#x27;s use_even_page_header_footer is true, this value is used for the headers on even pages in the section. If it is false, the headers on even pages uses the default_header_id. If unset, the value inherits from the previous SectionBreak&#x27;s SectionStyle. If the value is unset in the first SectionBreak, it inherits from DocumentStyle&#x27;s even_page_header_id. This property is read-only.
              &quot;useFirstPageHeaderFooter&quot;: True or False, # Indicates whether to use the first page header / footer IDs for the first page of the section. If unset, it inherits from DocumentStyle&#x27;s use_first_page_header_footer for the first section. If the value is unset for subsequent sectors, it should be interpreted as false. When updating this property, setting a concrete value is required. Unsetting this property results in a 400 bad request error.
              &quot;marginHeader&quot;: { # A magnitude in a single direction in the specified units. # The header margin of the section. If unset, uses margin_header from DocumentStyle. If updated, use_custom_header_footer_margins is set to true on DocumentStyle. The value of use_custom_header_footer_margins on DocumentStyle indicates if a header margin is being respected for this section. When updating this property, setting a concrete value is required. Unsetting this property results in a 400 bad request error.
                &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                &quot;magnitude&quot;: 3.14, # The magnitude.
              },
              &quot;firstPageFooterId&quot;: &quot;A String&quot;, # The ID of the footer used only for the first page of the section. If use_first_page_header_footer is true, this value is used for the footer on the first page of the section. If it is false, the footer on the first page of the section uses the default_footer_id. If unset, the value inherits from the previous SectionBreak&#x27;s SectionStyle. If the value is unset in the first SectionBreak, it inherits from DocumentStyle&#x27;s first_page_footer_id. This property is read-only.
              &quot;firstPageHeaderId&quot;: &quot;A String&quot;, # The ID of the header used only for the first page of the section. If use_first_page_header_footer is true, this value is used for the header on the first page of the section. If it is false, the header on the first page of the section uses the default_header_id. If unset, the value inherits from the previous SectionBreak&#x27;s SectionStyle. If the value is unset in the first SectionBreak, it inherits from DocumentStyle&#x27;s first_page_header_id. This property is read-only.
              &quot;columnSeparatorStyle&quot;: &quot;A String&quot;, # The style of column separators. This style can be set even when there is one column in the section. When updating this property, setting a concrete value is required. Unsetting this property results in a 400 bad request error.
              &quot;marginBottom&quot;: { # A magnitude in a single direction in the specified units. # The bottom page margin of the section. If unset, uses margin_bottom from DocumentStyle. When updating this property, setting a concrete value is required. Unsetting this property results in a 400 bad request error.
                &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                &quot;magnitude&quot;: 3.14, # The magnitude.
              },
              &quot;marginFooter&quot;: { # A magnitude in a single direction in the specified units. # The footer margin of the section. If unset, uses margin_footer from DocumentStyle. If updated, use_custom_header_footer_margins is set to true on DocumentStyle. The value of use_custom_header_footer_margins on DocumentStyle indicates if a footer margin is being respected for this section When updating this property, setting a concrete value is required. Unsetting this property results in a 400 bad request error.
                &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                &quot;magnitude&quot;: 3.14, # The magnitude.
              },
              &quot;defaultFooterId&quot;: &quot;A String&quot;, # The ID of the default footer. If unset, the value inherits from the previous SectionBreak&#x27;s SectionStyle. If the value is unset in the first SectionBreak, it inherits from DocumentStyle&#x27;s default_footer_id. This property is read-only.
              &quot;marginTop&quot;: { # A magnitude in a single direction in the specified units. # The top page margin of the section. If unset, uses margin_top from DocumentStyle. When updating this property, setting a concrete value is required. Unsetting this property results in a 400 bad request error.
                &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                &quot;magnitude&quot;: 3.14, # The magnitude.
              },
              &quot;contentDirection&quot;: &quot;A String&quot;, # The content direction of this section. If unset, the value defaults to LEFT_TO_RIGHT. When updating this property, setting a concrete value is required. Unsetting this property results in a 400 bad request error.
              &quot;evenPageFooterId&quot;: &quot;A String&quot;, # The ID of the footer used only for even pages. If the value of DocumentStyle&#x27;s use_even_page_header_footer is true, this value is used for the footers on even pages in the section. If it is false, the footers on even pages uses the default_footer_id. If unset, the value inherits from the previous SectionBreak&#x27;s SectionStyle. If the value is unset in the first SectionBreak, it inherits from DocumentStyle&#x27;s even_page_footer_id. This property is read-only.
              &quot;marginRight&quot;: { # A magnitude in a single direction in the specified units. # The right page margin of the section. If unset, uses margin_right from DocumentStyle. Updating right margin causes columns in this section to resize. Since the margin affects column width, it is applied before column properties. When updating this property, setting a concrete value is required. Unsetting this property results in a 400 bad request error.
                &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                &quot;magnitude&quot;: 3.14, # The magnitude.
              },
              &quot;defaultHeaderId&quot;: &quot;A String&quot;, # The ID of the default header. If unset, the value inherits from the previous SectionBreak&#x27;s SectionStyle. If the value is unset in the first SectionBreak, it inherits from DocumentStyle&#x27;s default_header_id. This property is read-only.
              &quot;pageNumberStart&quot;: 42, # The page number from which to start counting the number of pages for this section. If unset, page numbering continues from the previous section. If the value is unset in the first SectionBreak, refer to DocumentStyle&#x27;s page_number_start. When updating this property, setting a concrete value is required. Unsetting this property results in a 400 bad request error.
              &quot;columnProperties&quot;: [ # The section&#x27;s columns properties. If empty, the section contains one column with the default properties in the Docs editor. A section can be updated to have no more than three columns. When updating this property, setting a concrete value is required. Unsetting this property will result in a 400 bad request error.
                { # Properties that apply to a section&#x27;s column.
                  &quot;paddingEnd&quot;: { # A magnitude in a single direction in the specified units. # The padding at the end of the column.
                    &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                    &quot;magnitude&quot;: 3.14, # The magnitude.
                  },
                  &quot;width&quot;: { # A magnitude in a single direction in the specified units. # Output only. The width of the column.
                    &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                    &quot;magnitude&quot;: 3.14, # The magnitude.
                  },
                },
              ],
            },
            &quot;suggestedDeletionIds&quot;: [ # The suggested deletion IDs. If empty, then there are no suggested deletions of this content.
              &quot;A String&quot;,
            ],
          },
        },
      ],
    },
    &quot;footnotes&quot;: { # Output only. The footnotes in the document, keyed by footnote ID.
      &quot;a_key&quot;: { # A document footnote.
        &quot;content&quot;: [ # The contents of the footnote. The indexes for a footnote&#x27;s content begin at zero.
          { # A StructuralElement describes content that provides structure to the document.
            &quot;paragraph&quot;: { # A StructuralElement representing a paragraph. A paragraph is a range of content that is terminated with a newline character. # A paragraph type of structural element.
              &quot;suggestedParagraphStyleChanges&quot;: { # The suggested paragraph style changes to this paragraph, keyed by suggestion ID.
                &quot;a_key&quot;: { # A suggested change to a ParagraphStyle.
                  &quot;paragraphStyle&quot;: { # Styles that apply to a whole paragraph. Inherited paragraph styles are represented as unset fields in this message. A paragraph style&#x27;s parent depends on where the paragraph style is defined: * The ParagraphStyle on a Paragraph inherits from the paragraph&#x27;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 is 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. # A ParagraphStyle that only includes the changes made in this suggestion. This can be used along with the paragraph_suggestion_state to see which fields have changed and their new values.
                    &quot;borderRight&quot;: { # A border around a paragraph. # The border to the right of this paragraph. If unset, the value is inherited from the parent. Paragraph borders cannot be partially updated. When making changes to a paragraph border the new border must be specified in its entirety.
                      &quot;color&quot;: { # A color that can either be fully opaque or fully transparent. # The color of the border.
                        &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                          &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                            &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                            &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                            &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                          },
                        },
                      },
                      &quot;width&quot;: { # A magnitude in a single direction in the specified units. # The width of the border.
                        &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                        &quot;magnitude&quot;: 3.14, # The magnitude.
                      },
                      &quot;padding&quot;: { # A magnitude in a single direction in the specified units. # The padding of the border.
                        &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                        &quot;magnitude&quot;: 3.14, # The magnitude.
                      },
                      &quot;dashStyle&quot;: &quot;A String&quot;, # The dash style of the border.
                    },
                    &quot;indentFirstLine&quot;: { # A magnitude in a single direction in the specified units. # The amount of indentation for the first line of the paragraph. If unset, the value is inherited from the parent.
                      &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                      &quot;magnitude&quot;: 3.14, # The magnitude.
                    },
                    &quot;alignment&quot;: &quot;A String&quot;, # The text alignment for this paragraph.
                    &quot;lineSpacing&quot;: 3.14, # The amount of space between lines, as a percentage of normal, where normal is represented as 100.0. If unset, the value is inherited from the parent.
                    &quot;keepLinesTogether&quot;: True or False, # Whether all lines of the paragraph should be laid out on the same page or column if possible. If unset, the value is inherited from the parent.
                    &quot;avoidWidowAndOrphan&quot;: True or False, # Whether to avoid widows and orphans for the paragraph. If unset, the value is inherited from the parent.
                    &quot;spaceBelow&quot;: { # A magnitude in a single direction in the specified units. # The amount of extra space below the paragraph. If unset, the value is inherited from the parent.
                      &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                      &quot;magnitude&quot;: 3.14, # The magnitude.
                    },
                    &quot;borderBetween&quot;: { # A border around a paragraph. # 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 making changes to a paragraph border the new border must be specified in its entirety.
                      &quot;color&quot;: { # A color that can either be fully opaque or fully transparent. # The color of the border.
                        &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                          &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                            &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                            &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                            &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                          },
                        },
                      },
                      &quot;width&quot;: { # A magnitude in a single direction in the specified units. # The width of the border.
                        &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                        &quot;magnitude&quot;: 3.14, # The magnitude.
                      },
                      &quot;padding&quot;: { # A magnitude in a single direction in the specified units. # The padding of the border.
                        &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                        &quot;magnitude&quot;: 3.14, # The magnitude.
                      },
                      &quot;dashStyle&quot;: &quot;A String&quot;, # The dash style of the border.
                    },
                    &quot;headingId&quot;: &quot;A String&quot;, # The heading ID of the paragraph. If empty, then this paragraph is not a heading. This property is read-only.
                    &quot;spaceAbove&quot;: { # A magnitude in a single direction in the specified units. # The amount of extra space above the paragraph. If unset, the value is inherited from the parent.
                      &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                      &quot;magnitude&quot;: 3.14, # The magnitude.
                    },
                    &quot;direction&quot;: &quot;A String&quot;, # The text direction of this paragraph. If unset, the value defaults to LEFT_TO_RIGHT since paragraph direction is not inherited.
                    &quot;namedStyleType&quot;: &quot;A String&quot;, # The named style type of the paragraph. Since updating the named style type affects other properties within ParagraphStyle, the named style type is applied before the other properties are updated.
                    &quot;tabStops&quot;: [ # A list of the tab stops for this paragraph. The list of tab stops is not inherited. This property is read-only.
                      { # A tab stop within a paragraph.
                        &quot;offset&quot;: { # A magnitude in a single direction in the specified units. # The offset between this tab stop and the start margin.
                          &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                          &quot;magnitude&quot;: 3.14, # The magnitude.
                        },
                        &quot;alignment&quot;: &quot;A String&quot;, # The alignment of this tab stop. If unset, the value defaults to START.
                      },
                    ],
                    &quot;indentStart&quot;: { # A magnitude in a single direction in the specified units. # The amount of indentation for the paragraph on the side that corresponds to the start of the text, based on the current paragraph direction. If unset, the value is inherited from the parent.
                      &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                      &quot;magnitude&quot;: 3.14, # The magnitude.
                    },
                    &quot;keepWithNext&quot;: True or False, # Whether at least a part of this paragraph should be laid out on the same page or column as the next paragraph if possible. If unset, the value is inherited from the parent.
                    &quot;borderTop&quot;: { # A border around a paragraph. # 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 making changes to a paragraph border the new border must be specified in its entirety.
                      &quot;color&quot;: { # A color that can either be fully opaque or fully transparent. # The color of the border.
                        &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                          &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                            &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                            &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                            &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                          },
                        },
                      },
                      &quot;width&quot;: { # A magnitude in a single direction in the specified units. # The width of the border.
                        &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                        &quot;magnitude&quot;: 3.14, # The magnitude.
                      },
                      &quot;padding&quot;: { # A magnitude in a single direction in the specified units. # The padding of the border.
                        &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                        &quot;magnitude&quot;: 3.14, # The magnitude.
                      },
                      &quot;dashStyle&quot;: &quot;A String&quot;, # The dash style of the border.
                    },
                    &quot;borderLeft&quot;: { # A border around a paragraph. # The border to the left of this paragraph. If unset, the value is inherited from the parent. Paragraph borders cannot be partially updated. When making changes to a paragraph border the new border must be specified in its entirety.
                      &quot;color&quot;: { # A color that can either be fully opaque or fully transparent. # The color of the border.
                        &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                          &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                            &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                            &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                            &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                          },
                        },
                      },
                      &quot;width&quot;: { # A magnitude in a single direction in the specified units. # The width of the border.
                        &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                        &quot;magnitude&quot;: 3.14, # The magnitude.
                      },
                      &quot;padding&quot;: { # A magnitude in a single direction in the specified units. # The padding of the border.
                        &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                        &quot;magnitude&quot;: 3.14, # The magnitude.
                      },
                      &quot;dashStyle&quot;: &quot;A String&quot;, # The dash style of the border.
                    },
                    &quot;borderBottom&quot;: { # A border around a paragraph. # 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 making changes to a paragraph border the new border must be specified in its entirety.
                      &quot;color&quot;: { # A color that can either be fully opaque or fully transparent. # The color of the border.
                        &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                          &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                            &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                            &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                            &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                          },
                        },
                      },
                      &quot;width&quot;: { # A magnitude in a single direction in the specified units. # The width of the border.
                        &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                        &quot;magnitude&quot;: 3.14, # The magnitude.
                      },
                      &quot;padding&quot;: { # A magnitude in a single direction in the specified units. # The padding of the border.
                        &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                        &quot;magnitude&quot;: 3.14, # The magnitude.
                      },
                      &quot;dashStyle&quot;: &quot;A String&quot;, # The dash style of the border.
                    },
                    &quot;shading&quot;: { # The shading of a paragraph. # The shading of the paragraph. If unset, the value is inherited from the parent.
                      &quot;backgroundColor&quot;: { # A color that can either be fully opaque or fully transparent. # The background color of this paragraph shading.
                        &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                          &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                            &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                            &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                            &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                          },
                        },
                      },
                    },
                    &quot;indentEnd&quot;: { # A magnitude in a single direction in the specified units. # 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.
                      &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                      &quot;magnitude&quot;: 3.14, # The magnitude.
                    },
                    &quot;spacingMode&quot;: &quot;A String&quot;, # The spacing mode for the paragraph.
                  },
                  &quot;paragraphStyleSuggestionState&quot;: { # A mask that indicates which of the fields on the base ParagraphStyle have been changed in this suggestion. For any field set to true, there is a new suggested value. # A mask that indicates which of the fields on the base ParagraphStyle have been changed in this suggestion.
                    &quot;borderRightSuggested&quot;: True or False, # Indicates if there was a suggested change to border_right.
                    &quot;indentEndSuggested&quot;: True or False, # Indicates if there was a suggested change to indent_end.
                    &quot;lineSpacingSuggested&quot;: True or False, # Indicates if there was a suggested change to line_spacing.
                    &quot;headingIdSuggested&quot;: True or False, # Indicates if there was a suggested change to heading_id.
                    &quot;indentStartSuggested&quot;: True or False, # Indicates if there was a suggested change to indent_start.
                    &quot;keepWithNextSuggested&quot;: True or False, # Indicates if there was a suggested change to keep_with_next.
                    &quot;namedStyleTypeSuggested&quot;: True or False, # Indicates if there was a suggested change to named_style_type.
                    &quot;borderTopSuggested&quot;: True or False, # Indicates if there was a suggested change to border_top.
                    &quot;keepLinesTogetherSuggested&quot;: True or False, # Indicates if there was a suggested change to keep_lines_together.
                    &quot;avoidWidowAndOrphanSuggested&quot;: True or False, # Indicates if there was a suggested change to avoid_widow_and_orphan.
                    &quot;spaceBelowSuggested&quot;: True or False, # Indicates if there was a suggested change to space_below.
                    &quot;indentFirstLineSuggested&quot;: True or False, # Indicates if there was a suggested change to indent_first_line.
                    &quot;shadingSuggestionState&quot;: { # A mask that indicates which of the fields on the base Shading have been changed in this suggested change. For any field set to true, there is a new suggested value. # A mask that indicates which of the fields in shading have been changed in this suggestion.
                      &quot;backgroundColorSuggested&quot;: True or False, # Indicates if there was a suggested change to the Shading.
                    },
                    &quot;directionSuggested&quot;: True or False, # Indicates if there was a suggested change to direction.
                    &quot;borderBetweenSuggested&quot;: True or False, # Indicates if there was a suggested change to border_between.
                    &quot;spaceAboveSuggested&quot;: True or False, # Indicates if there was a suggested change to space_above.
                    &quot;borderLeftSuggested&quot;: True or False, # Indicates if there was a suggested change to border_left.
                    &quot;spacingModeSuggested&quot;: True or False, # Indicates if there was a suggested change to spacing_mode.
                    &quot;borderBottomSuggested&quot;: True or False, # Indicates if there was a suggested change to border_bottom.
                    &quot;alignmentSuggested&quot;: True or False, # Indicates if there was a suggested change to alignment.
                  },
                },
              },
              &quot;bullet&quot;: { # Describes the bullet of a paragraph. # The bullet for this paragraph. If not present, the paragraph does not belong to a list.
                &quot;textStyle&quot;: { # Represents the styling that can be applied to text. Inherited text styles are represented as unset fields in this message. A text style&#x27;s parent depends on where the text style is defined: * The TextStyle of text in a Paragraph inherits from the paragraph&#x27;s corresponding named style type. * The TextStyle on a named style inherits from the normal text named style. * The TextStyle of the normal text named style inherits from the default text style in the Docs editor. * The TextStyle on a Paragraph element that is contained in a table may inherit its text style from the table style. If the text style does not inherit from a parent, unsetting fields will revert the style to a value matching the defaults in the Docs editor. # The paragraph specific text style applied to this bullet.
                  &quot;italic&quot;: True or False, # Whether or not the text is italicized.
                  &quot;baselineOffset&quot;: &quot;A String&quot;, # The text&#x27;s vertical offset from its normal position. Text with `SUPERSCRIPT` or `SUBSCRIPT` baseline offsets is automatically rendered in a smaller font size, computed based on the `font_size` field. The `font_size` itself is not affected by changes in this field.
                  &quot;bold&quot;: True or False, # Whether or not the text is rendered as bold.
                  &quot;fontSize&quot;: { # A magnitude in a single direction in the specified units. # The size of the text&#x27;s font.
                    &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                    &quot;magnitude&quot;: 3.14, # The magnitude.
                  },
                  &quot;foregroundColor&quot;: { # A color that can either be fully opaque or fully transparent. # The foreground color of the text. If set, the color is either an RGB color or transparent, depending on the `color` field.
                    &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                      &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                        &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                        &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                        &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                      },
                    },
                  },
                  &quot;backgroundColor&quot;: { # A color that can either be fully opaque or fully transparent. # The background color of the text. If set, the color is either an RGB color or transparent, depending on the `color` field.
                    &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                      &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                        &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                        &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                        &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                      },
                    },
                  },
                  &quot;link&quot;: { # A reference to another portion of a document or an external URL resource. # The hyperlink destination of the text. If unset, there is no link. Links are not inherited from parent text. Changing the link in an update request causes some other changes to the text style of the range: * When setting a link, the text foreground color will be updated to the default link color and the text will be underlined. If these fields are modified in the same request, those values will be used instead of the link defaults. * Setting a link on a text range that overlaps with an existing link will also update the existing link to point to the new URL. * Links are not settable on newline characters. As a result, setting a link on a text range that crosses a paragraph boundary, such as `&quot;ABC\n123&quot;`, will separate the newline character(s) into their own text runs. The link will be applied separately to the runs before and after the newline. * Removing a link will update the text style of the range to match the style of the preceding text (or the default text styles if the preceding text is another link) unless different styles are being set in the same request.
                    &quot;bookmarkId&quot;: &quot;A String&quot;, # The ID of a bookmark in this document.
                    &quot;url&quot;: &quot;A String&quot;, # An external URL.
                    &quot;headingId&quot;: &quot;A String&quot;, # The ID of a heading in this document.
                  },
                  &quot;strikethrough&quot;: True or False, # Whether or not the text is struck through.
                  &quot;weightedFontFamily&quot;: { # Represents a font family and weight of text. # The font family and rendered weight of the text. If an update request specifies values for both `weighted_font_family` and `bold`, the `weighted_font_family` is applied first, then `bold`. If `weighted_font_family#weight` is not set, it defaults to `400`. If `weighted_font_family` is set, then `weighted_font_family#font_family` must also be set with a non-empty value. Otherwise, a 400 bad request error is returned.
                    &quot;fontFamily&quot;: &quot;A String&quot;, # The font family of the text. The font family can be any font from the Font menu in Docs or from [Google Fonts] (https://fonts.google.com/). If the font name is unrecognized, the text is rendered in `Arial`.
                    &quot;weight&quot;: 42, # The weight of the font. This field can have any value that is a multiple of `100` between `100` and `900`, inclusive. This range corresponds to the numerical values described in the CSS 2.1 Specification, [section 15.6](https://www.w3.org/TR/CSS21/fonts.html#font-boldness), with non-numerical values disallowed. The default value is `400` (&quot;normal&quot;). The font weight makes up just one component of the rendered font weight. The rendered weight is determined by a combination of the `weight` and the text style&#x27;s resolved `bold` value, after accounting for inheritance: * If the text is bold and the weight is less than `400`, the rendered weight is 400. * If the text is bold and the weight is greater than or equal to `400` but is less than `700`, the rendered weight is `700`. * If the weight is greater than or equal to `700`, the rendered weight is equal to the weight. * If the text is not bold, the rendered weight is equal to the weight.
                  },
                  &quot;underline&quot;: True or False, # Whether or not the text is underlined.
                  &quot;smallCaps&quot;: True or False, # Whether or not the text is in small capital letters.
                },
                &quot;nestingLevel&quot;: 42, # The nesting level of this paragraph in the list.
                &quot;listId&quot;: &quot;A String&quot;, # The ID of the list this paragraph belongs to.
              },
              &quot;suggestedBulletChanges&quot;: { # The suggested changes to this paragraph&#x27;s bullet.
                &quot;a_key&quot;: { # A suggested change to a Bullet.
                  &quot;bulletSuggestionState&quot;: { # A mask that indicates which of the fields on the base Bullet have been changed in this suggestion. For any field set to true, there is a new suggested value. # A mask that indicates which of the fields on the base Bullet have been changed in this suggestion.
                    &quot;nestingLevelSuggested&quot;: True or False, # Indicates if there was a suggested change to the nesting_level.
                    &quot;textStyleSuggestionState&quot;: { # A mask that indicates which of the fields on the base TextStyle have been changed in this suggestion. For any field set to true, there is a new suggested value. # A mask that indicates which of the fields in text style have been changed in this suggestion.
                      &quot;backgroundColorSuggested&quot;: True or False, # Indicates if there was a suggested change to background_color.
                      &quot;fontSizeSuggested&quot;: True or False, # Indicates if there was a suggested change to font_size.
                      &quot;boldSuggested&quot;: True or False, # Indicates if there was a suggested change to bold.
                      &quot;baselineOffsetSuggested&quot;: True or False, # Indicates if there was a suggested change to baseline_offset.
                      &quot;foregroundColorSuggested&quot;: True or False, # Indicates if there was a suggested change to foreground_color.
                      &quot;italicSuggested&quot;: True or False, # Indicates if there was a suggested change to italic.
                      &quot;linkSuggested&quot;: True or False, # Indicates if there was a suggested change to link.
                      &quot;underlineSuggested&quot;: True or False, # Indicates if there was a suggested change to underline.
                      &quot;weightedFontFamilySuggested&quot;: True or False, # Indicates if there was a suggested change to weighted_font_family.
                      &quot;smallCapsSuggested&quot;: True or False, # Indicates if there was a suggested change to small_caps.
                      &quot;strikethroughSuggested&quot;: True or False, # Indicates if there was a suggested change to strikethrough.
                    },
                    &quot;listIdSuggested&quot;: True or False, # Indicates if there was a suggested change to the list_id.
                  },
                  &quot;bullet&quot;: { # Describes the bullet of a paragraph. # A Bullet that only includes the changes made in this suggestion. This can be used along with the bullet_suggestion_state to see which fields have changed and their new values.
                    &quot;textStyle&quot;: { # Represents the styling that can be applied to text. Inherited text styles are represented as unset fields in this message. A text style&#x27;s parent depends on where the text style is defined: * The TextStyle of text in a Paragraph inherits from the paragraph&#x27;s corresponding named style type. * The TextStyle on a named style inherits from the normal text named style. * The TextStyle of the normal text named style inherits from the default text style in the Docs editor. * The TextStyle on a Paragraph element that is contained in a table may inherit its text style from the table style. If the text style does not inherit from a parent, unsetting fields will revert the style to a value matching the defaults in the Docs editor. # The paragraph specific text style applied to this bullet.
                      &quot;italic&quot;: True or False, # Whether or not the text is italicized.
                      &quot;baselineOffset&quot;: &quot;A String&quot;, # The text&#x27;s vertical offset from its normal position. Text with `SUPERSCRIPT` or `SUBSCRIPT` baseline offsets is automatically rendered in a smaller font size, computed based on the `font_size` field. The `font_size` itself is not affected by changes in this field.
                      &quot;bold&quot;: True or False, # Whether or not the text is rendered as bold.
                      &quot;fontSize&quot;: { # A magnitude in a single direction in the specified units. # The size of the text&#x27;s font.
                        &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                        &quot;magnitude&quot;: 3.14, # The magnitude.
                      },
                      &quot;foregroundColor&quot;: { # A color that can either be fully opaque or fully transparent. # The foreground color of the text. If set, the color is either an RGB color or transparent, depending on the `color` field.
                        &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                          &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                            &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                            &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                            &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                          },
                        },
                      },
                      &quot;backgroundColor&quot;: { # A color that can either be fully opaque or fully transparent. # The background color of the text. If set, the color is either an RGB color or transparent, depending on the `color` field.
                        &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                          &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                            &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                            &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                            &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                          },
                        },
                      },
                      &quot;link&quot;: { # A reference to another portion of a document or an external URL resource. # The hyperlink destination of the text. If unset, there is no link. Links are not inherited from parent text. Changing the link in an update request causes some other changes to the text style of the range: * When setting a link, the text foreground color will be updated to the default link color and the text will be underlined. If these fields are modified in the same request, those values will be used instead of the link defaults. * Setting a link on a text range that overlaps with an existing link will also update the existing link to point to the new URL. * Links are not settable on newline characters. As a result, setting a link on a text range that crosses a paragraph boundary, such as `&quot;ABC\n123&quot;`, will separate the newline character(s) into their own text runs. The link will be applied separately to the runs before and after the newline. * Removing a link will update the text style of the range to match the style of the preceding text (or the default text styles if the preceding text is another link) unless different styles are being set in the same request.
                        &quot;bookmarkId&quot;: &quot;A String&quot;, # The ID of a bookmark in this document.
                        &quot;url&quot;: &quot;A String&quot;, # An external URL.
                        &quot;headingId&quot;: &quot;A String&quot;, # The ID of a heading in this document.
                      },
                      &quot;strikethrough&quot;: True or False, # Whether or not the text is struck through.
                      &quot;weightedFontFamily&quot;: { # Represents a font family and weight of text. # The font family and rendered weight of the text. If an update request specifies values for both `weighted_font_family` and `bold`, the `weighted_font_family` is applied first, then `bold`. If `weighted_font_family#weight` is not set, it defaults to `400`. If `weighted_font_family` is set, then `weighted_font_family#font_family` must also be set with a non-empty value. Otherwise, a 400 bad request error is returned.
                        &quot;fontFamily&quot;: &quot;A String&quot;, # The font family of the text. The font family can be any font from the Font menu in Docs or from [Google Fonts] (https://fonts.google.com/). If the font name is unrecognized, the text is rendered in `Arial`.
                        &quot;weight&quot;: 42, # The weight of the font. This field can have any value that is a multiple of `100` between `100` and `900`, inclusive. This range corresponds to the numerical values described in the CSS 2.1 Specification, [section 15.6](https://www.w3.org/TR/CSS21/fonts.html#font-boldness), with non-numerical values disallowed. The default value is `400` (&quot;normal&quot;). The font weight makes up just one component of the rendered font weight. The rendered weight is determined by a combination of the `weight` and the text style&#x27;s resolved `bold` value, after accounting for inheritance: * If the text is bold and the weight is less than `400`, the rendered weight is 400. * If the text is bold and the weight is greater than or equal to `400` but is less than `700`, the rendered weight is `700`. * If the weight is greater than or equal to `700`, the rendered weight is equal to the weight. * If the text is not bold, the rendered weight is equal to the weight.
                      },
                      &quot;underline&quot;: True or False, # Whether or not the text is underlined.
                      &quot;smallCaps&quot;: True or False, # Whether or not the text is in small capital letters.
                    },
                    &quot;nestingLevel&quot;: 42, # The nesting level of this paragraph in the list.
                    &quot;listId&quot;: &quot;A String&quot;, # The ID of the list this paragraph belongs to.
                  },
                },
              },
              &quot;suggestedPositionedObjectIds&quot;: { # The IDs of the positioned objects that are suggested to be attached to this paragraph, keyed by suggestion ID.
                &quot;a_key&quot;: { # A collection of object IDs.
                  &quot;objectIds&quot;: [ # The object IDs.
                    &quot;A String&quot;,
                  ],
                },
              },
              &quot;elements&quot;: [ # The content of the paragraph broken down into its component parts.
                { # A ParagraphElement describes content within a Paragraph.
                  &quot;textRun&quot;: { # A ParagraphElement that represents a run of text that all has the same styling. # A text run paragraph element.
                    &quot;suggestedInsertionIds&quot;: [ # The suggested insertion IDs. A TextRun may have multiple insertion IDs if it is a nested suggested change. If empty, then this is not a suggested insertion.
                      &quot;A String&quot;,
                    ],
                    &quot;content&quot;: &quot;A String&quot;, # The text of this run. Any non-text elements in the run are replaced with the Unicode character U+E907.
                    &quot;textStyle&quot;: { # Represents the styling that can be applied to text. Inherited text styles are represented as unset fields in this message. A text style&#x27;s parent depends on where the text style is defined: * The TextStyle of text in a Paragraph inherits from the paragraph&#x27;s corresponding named style type. * The TextStyle on a named style inherits from the normal text named style. * The TextStyle of the normal text named style inherits from the default text style in the Docs editor. * The TextStyle on a Paragraph element that is contained in a table may inherit its text style from the table style. If the text style does not inherit from a parent, unsetting fields will revert the style to a value matching the defaults in the Docs editor. # The text style of this run.
                      &quot;italic&quot;: True or False, # Whether or not the text is italicized.
                      &quot;baselineOffset&quot;: &quot;A String&quot;, # The text&#x27;s vertical offset from its normal position. Text with `SUPERSCRIPT` or `SUBSCRIPT` baseline offsets is automatically rendered in a smaller font size, computed based on the `font_size` field. The `font_size` itself is not affected by changes in this field.
                      &quot;bold&quot;: True or False, # Whether or not the text is rendered as bold.
                      &quot;fontSize&quot;: { # A magnitude in a single direction in the specified units. # The size of the text&#x27;s font.
                        &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                        &quot;magnitude&quot;: 3.14, # The magnitude.
                      },
                      &quot;foregroundColor&quot;: { # A color that can either be fully opaque or fully transparent. # The foreground color of the text. If set, the color is either an RGB color or transparent, depending on the `color` field.
                        &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                          &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                            &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                            &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                            &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                          },
                        },
                      },
                      &quot;backgroundColor&quot;: { # A color that can either be fully opaque or fully transparent. # The background color of the text. If set, the color is either an RGB color or transparent, depending on the `color` field.
                        &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                          &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                            &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                            &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                            &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                          },
                        },
                      },
                      &quot;link&quot;: { # A reference to another portion of a document or an external URL resource. # The hyperlink destination of the text. If unset, there is no link. Links are not inherited from parent text. Changing the link in an update request causes some other changes to the text style of the range: * When setting a link, the text foreground color will be updated to the default link color and the text will be underlined. If these fields are modified in the same request, those values will be used instead of the link defaults. * Setting a link on a text range that overlaps with an existing link will also update the existing link to point to the new URL. * Links are not settable on newline characters. As a result, setting a link on a text range that crosses a paragraph boundary, such as `&quot;ABC\n123&quot;`, will separate the newline character(s) into their own text runs. The link will be applied separately to the runs before and after the newline. * Removing a link will update the text style of the range to match the style of the preceding text (or the default text styles if the preceding text is another link) unless different styles are being set in the same request.
                        &quot;bookmarkId&quot;: &quot;A String&quot;, # The ID of a bookmark in this document.
                        &quot;url&quot;: &quot;A String&quot;, # An external URL.
                        &quot;headingId&quot;: &quot;A String&quot;, # The ID of a heading in this document.
                      },
                      &quot;strikethrough&quot;: True or False, # Whether or not the text is struck through.
                      &quot;weightedFontFamily&quot;: { # Represents a font family and weight of text. # The font family and rendered weight of the text. If an update request specifies values for both `weighted_font_family` and `bold`, the `weighted_font_family` is applied first, then `bold`. If `weighted_font_family#weight` is not set, it defaults to `400`. If `weighted_font_family` is set, then `weighted_font_family#font_family` must also be set with a non-empty value. Otherwise, a 400 bad request error is returned.
                        &quot;fontFamily&quot;: &quot;A String&quot;, # The font family of the text. The font family can be any font from the Font menu in Docs or from [Google Fonts] (https://fonts.google.com/). If the font name is unrecognized, the text is rendered in `Arial`.
                        &quot;weight&quot;: 42, # The weight of the font. This field can have any value that is a multiple of `100` between `100` and `900`, inclusive. This range corresponds to the numerical values described in the CSS 2.1 Specification, [section 15.6](https://www.w3.org/TR/CSS21/fonts.html#font-boldness), with non-numerical values disallowed. The default value is `400` (&quot;normal&quot;). The font weight makes up just one component of the rendered font weight. The rendered weight is determined by a combination of the `weight` and the text style&#x27;s resolved `bold` value, after accounting for inheritance: * If the text is bold and the weight is less than `400`, the rendered weight is 400. * If the text is bold and the weight is greater than or equal to `400` but is less than `700`, the rendered weight is `700`. * If the weight is greater than or equal to `700`, the rendered weight is equal to the weight. * If the text is not bold, the rendered weight is equal to the weight.
                      },
                      &quot;underline&quot;: True or False, # Whether or not the text is underlined.
                      &quot;smallCaps&quot;: True or False, # Whether or not the text is in small capital letters.
                    },
                    &quot;suggestedTextStyleChanges&quot;: { # The suggested text style changes to this run, keyed by suggestion ID.
                      &quot;a_key&quot;: { # A suggested change to a TextStyle.
                        &quot;textStyleSuggestionState&quot;: { # A mask that indicates which of the fields on the base TextStyle have been changed in this suggestion. For any field set to true, there is a new suggested value. # A mask that indicates which of the fields on the base TextStyle have been changed in this suggestion.
                          &quot;backgroundColorSuggested&quot;: True or False, # Indicates if there was a suggested change to background_color.
                          &quot;fontSizeSuggested&quot;: True or False, # Indicates if there was a suggested change to font_size.
                          &quot;boldSuggested&quot;: True or False, # Indicates if there was a suggested change to bold.
                          &quot;baselineOffsetSuggested&quot;: True or False, # Indicates if there was a suggested change to baseline_offset.
                          &quot;foregroundColorSuggested&quot;: True or False, # Indicates if there was a suggested change to foreground_color.
                          &quot;italicSuggested&quot;: True or False, # Indicates if there was a suggested change to italic.
                          &quot;linkSuggested&quot;: True or False, # Indicates if there was a suggested change to link.
                          &quot;underlineSuggested&quot;: True or False, # Indicates if there was a suggested change to underline.
                          &quot;weightedFontFamilySuggested&quot;: True or False, # Indicates if there was a suggested change to weighted_font_family.
                          &quot;smallCapsSuggested&quot;: True or False, # Indicates if there was a suggested change to small_caps.
                          &quot;strikethroughSuggested&quot;: True or False, # Indicates if there was a suggested change to strikethrough.
                        },
                        &quot;textStyle&quot;: { # Represents the styling that can be applied to text. Inherited text styles are represented as unset fields in this message. A text style&#x27;s parent depends on where the text style is defined: * The TextStyle of text in a Paragraph inherits from the paragraph&#x27;s corresponding named style type. * The TextStyle on a named style inherits from the normal text named style. * The TextStyle of the normal text named style inherits from the default text style in the Docs editor. * The TextStyle on a Paragraph element that is contained in a table may inherit its text style from the table style. If the text style does not inherit from a parent, unsetting fields will revert the style to a value matching the defaults in the Docs editor. # A TextStyle that only includes the changes made in this suggestion. This can be used along with the text_style_suggestion_state to see which fields have changed and their new values.
                          &quot;italic&quot;: True or False, # Whether or not the text is italicized.
                          &quot;baselineOffset&quot;: &quot;A String&quot;, # The text&#x27;s vertical offset from its normal position. Text with `SUPERSCRIPT` or `SUBSCRIPT` baseline offsets is automatically rendered in a smaller font size, computed based on the `font_size` field. The `font_size` itself is not affected by changes in this field.
                          &quot;bold&quot;: True or False, # Whether or not the text is rendered as bold.
                          &quot;fontSize&quot;: { # A magnitude in a single direction in the specified units. # The size of the text&#x27;s font.
                            &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                            &quot;magnitude&quot;: 3.14, # The magnitude.
                          },
                          &quot;foregroundColor&quot;: { # A color that can either be fully opaque or fully transparent. # The foreground color of the text. If set, the color is either an RGB color or transparent, depending on the `color` field.
                            &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                              &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                                &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                                &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                                &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                              },
                            },
                          },
                          &quot;backgroundColor&quot;: { # A color that can either be fully opaque or fully transparent. # The background color of the text. If set, the color is either an RGB color or transparent, depending on the `color` field.
                            &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                              &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                                &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                                &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                                &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                              },
                            },
                          },
                          &quot;link&quot;: { # A reference to another portion of a document or an external URL resource. # The hyperlink destination of the text. If unset, there is no link. Links are not inherited from parent text. Changing the link in an update request causes some other changes to the text style of the range: * When setting a link, the text foreground color will be updated to the default link color and the text will be underlined. If these fields are modified in the same request, those values will be used instead of the link defaults. * Setting a link on a text range that overlaps with an existing link will also update the existing link to point to the new URL. * Links are not settable on newline characters. As a result, setting a link on a text range that crosses a paragraph boundary, such as `&quot;ABC\n123&quot;`, will separate the newline character(s) into their own text runs. The link will be applied separately to the runs before and after the newline. * Removing a link will update the text style of the range to match the style of the preceding text (or the default text styles if the preceding text is another link) unless different styles are being set in the same request.
                            &quot;bookmarkId&quot;: &quot;A String&quot;, # The ID of a bookmark in this document.
                            &quot;url&quot;: &quot;A String&quot;, # An external URL.
                            &quot;headingId&quot;: &quot;A String&quot;, # The ID of a heading in this document.
                          },
                          &quot;strikethrough&quot;: True or False, # Whether or not the text is struck through.
                          &quot;weightedFontFamily&quot;: { # Represents a font family and weight of text. # The font family and rendered weight of the text. If an update request specifies values for both `weighted_font_family` and `bold`, the `weighted_font_family` is applied first, then `bold`. If `weighted_font_family#weight` is not set, it defaults to `400`. If `weighted_font_family` is set, then `weighted_font_family#font_family` must also be set with a non-empty value. Otherwise, a 400 bad request error is returned.
                            &quot;fontFamily&quot;: &quot;A String&quot;, # The font family of the text. The font family can be any font from the Font menu in Docs or from [Google Fonts] (https://fonts.google.com/). If the font name is unrecognized, the text is rendered in `Arial`.
                            &quot;weight&quot;: 42, # The weight of the font. This field can have any value that is a multiple of `100` between `100` and `900`, inclusive. This range corresponds to the numerical values described in the CSS 2.1 Specification, [section 15.6](https://www.w3.org/TR/CSS21/fonts.html#font-boldness), with non-numerical values disallowed. The default value is `400` (&quot;normal&quot;). The font weight makes up just one component of the rendered font weight. The rendered weight is determined by a combination of the `weight` and the text style&#x27;s resolved `bold` value, after accounting for inheritance: * If the text is bold and the weight is less than `400`, the rendered weight is 400. * If the text is bold and the weight is greater than or equal to `400` but is less than `700`, the rendered weight is `700`. * If the weight is greater than or equal to `700`, the rendered weight is equal to the weight. * If the text is not bold, the rendered weight is equal to the weight.
                          },
                          &quot;underline&quot;: True or False, # Whether or not the text is underlined.
                          &quot;smallCaps&quot;: True or False, # Whether or not the text is in small capital letters.
                        },
                      },
                    },
                    &quot;suggestedDeletionIds&quot;: [ # The suggested deletion IDs. If empty, then there are no suggested deletions of this content.
                      &quot;A String&quot;,
                    ],
                  },
                  &quot;pageBreak&quot;: { # A ParagraphElement representing a page break. A page break makes the subsequent text start at the top of the next page. # A page break paragraph element.
                    &quot;suggestedInsertionIds&quot;: [ # The suggested insertion IDs. A PageBreak may have multiple insertion IDs if it is a nested suggested change. If empty, then this is not a suggested insertion.
                      &quot;A String&quot;,
                    ],
                    &quot;textStyle&quot;: { # Represents the styling that can be applied to text. Inherited text styles are represented as unset fields in this message. A text style&#x27;s parent depends on where the text style is defined: * The TextStyle of text in a Paragraph inherits from the paragraph&#x27;s corresponding named style type. * The TextStyle on a named style inherits from the normal text named style. * The TextStyle of the normal text named style inherits from the default text style in the Docs editor. * The TextStyle on a Paragraph element that is contained in a table may inherit its text style from the table style. If the text style does not inherit from a parent, unsetting fields will revert the style to a value matching the defaults in the Docs editor. # The text style of this PageBreak. Similar to text content, like text runs and footnote references, the text style of a page break can affect content layout as well as the styling of text inserted adjacent to it.
                      &quot;italic&quot;: True or False, # Whether or not the text is italicized.
                      &quot;baselineOffset&quot;: &quot;A String&quot;, # The text&#x27;s vertical offset from its normal position. Text with `SUPERSCRIPT` or `SUBSCRIPT` baseline offsets is automatically rendered in a smaller font size, computed based on the `font_size` field. The `font_size` itself is not affected by changes in this field.
                      &quot;bold&quot;: True or False, # Whether or not the text is rendered as bold.
                      &quot;fontSize&quot;: { # A magnitude in a single direction in the specified units. # The size of the text&#x27;s font.
                        &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                        &quot;magnitude&quot;: 3.14, # The magnitude.
                      },
                      &quot;foregroundColor&quot;: { # A color that can either be fully opaque or fully transparent. # The foreground color of the text. If set, the color is either an RGB color or transparent, depending on the `color` field.
                        &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                          &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                            &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                            &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                            &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                          },
                        },
                      },
                      &quot;backgroundColor&quot;: { # A color that can either be fully opaque or fully transparent. # The background color of the text. If set, the color is either an RGB color or transparent, depending on the `color` field.
                        &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                          &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                            &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                            &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                            &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                          },
                        },
                      },
                      &quot;link&quot;: { # A reference to another portion of a document or an external URL resource. # The hyperlink destination of the text. If unset, there is no link. Links are not inherited from parent text. Changing the link in an update request causes some other changes to the text style of the range: * When setting a link, the text foreground color will be updated to the default link color and the text will be underlined. If these fields are modified in the same request, those values will be used instead of the link defaults. * Setting a link on a text range that overlaps with an existing link will also update the existing link to point to the new URL. * Links are not settable on newline characters. As a result, setting a link on a text range that crosses a paragraph boundary, such as `&quot;ABC\n123&quot;`, will separate the newline character(s) into their own text runs. The link will be applied separately to the runs before and after the newline. * Removing a link will update the text style of the range to match the style of the preceding text (or the default text styles if the preceding text is another link) unless different styles are being set in the same request.
                        &quot;bookmarkId&quot;: &quot;A String&quot;, # The ID of a bookmark in this document.
                        &quot;url&quot;: &quot;A String&quot;, # An external URL.
                        &quot;headingId&quot;: &quot;A String&quot;, # The ID of a heading in this document.
                      },
                      &quot;strikethrough&quot;: True or False, # Whether or not the text is struck through.
                      &quot;weightedFontFamily&quot;: { # Represents a font family and weight of text. # The font family and rendered weight of the text. If an update request specifies values for both `weighted_font_family` and `bold`, the `weighted_font_family` is applied first, then `bold`. If `weighted_font_family#weight` is not set, it defaults to `400`. If `weighted_font_family` is set, then `weighted_font_family#font_family` must also be set with a non-empty value. Otherwise, a 400 bad request error is returned.
                        &quot;fontFamily&quot;: &quot;A String&quot;, # The font family of the text. The font family can be any font from the Font menu in Docs or from [Google Fonts] (https://fonts.google.com/). If the font name is unrecognized, the text is rendered in `Arial`.
                        &quot;weight&quot;: 42, # The weight of the font. This field can have any value that is a multiple of `100` between `100` and `900`, inclusive. This range corresponds to the numerical values described in the CSS 2.1 Specification, [section 15.6](https://www.w3.org/TR/CSS21/fonts.html#font-boldness), with non-numerical values disallowed. The default value is `400` (&quot;normal&quot;). The font weight makes up just one component of the rendered font weight. The rendered weight is determined by a combination of the `weight` and the text style&#x27;s resolved `bold` value, after accounting for inheritance: * If the text is bold and the weight is less than `400`, the rendered weight is 400. * If the text is bold and the weight is greater than or equal to `400` but is less than `700`, the rendered weight is `700`. * If the weight is greater than or equal to `700`, the rendered weight is equal to the weight. * If the text is not bold, the rendered weight is equal to the weight.
                      },
                      &quot;underline&quot;: True or False, # Whether or not the text is underlined.
                      &quot;smallCaps&quot;: True or False, # Whether or not the text is in small capital letters.
                    },
                    &quot;suggestedTextStyleChanges&quot;: { # The suggested text style changes to this PageBreak, keyed by suggestion ID.
                      &quot;a_key&quot;: { # A suggested change to a TextStyle.
                        &quot;textStyleSuggestionState&quot;: { # A mask that indicates which of the fields on the base TextStyle have been changed in this suggestion. For any field set to true, there is a new suggested value. # A mask that indicates which of the fields on the base TextStyle have been changed in this suggestion.
                          &quot;backgroundColorSuggested&quot;: True or False, # Indicates if there was a suggested change to background_color.
                          &quot;fontSizeSuggested&quot;: True or False, # Indicates if there was a suggested change to font_size.
                          &quot;boldSuggested&quot;: True or False, # Indicates if there was a suggested change to bold.
                          &quot;baselineOffsetSuggested&quot;: True or False, # Indicates if there was a suggested change to baseline_offset.
                          &quot;foregroundColorSuggested&quot;: True or False, # Indicates if there was a suggested change to foreground_color.
                          &quot;italicSuggested&quot;: True or False, # Indicates if there was a suggested change to italic.
                          &quot;linkSuggested&quot;: True or False, # Indicates if there was a suggested change to link.
                          &quot;underlineSuggested&quot;: True or False, # Indicates if there was a suggested change to underline.
                          &quot;weightedFontFamilySuggested&quot;: True or False, # Indicates if there was a suggested change to weighted_font_family.
                          &quot;smallCapsSuggested&quot;: True or False, # Indicates if there was a suggested change to small_caps.
                          &quot;strikethroughSuggested&quot;: True or False, # Indicates if there was a suggested change to strikethrough.
                        },
                        &quot;textStyle&quot;: { # Represents the styling that can be applied to text. Inherited text styles are represented as unset fields in this message. A text style&#x27;s parent depends on where the text style is defined: * The TextStyle of text in a Paragraph inherits from the paragraph&#x27;s corresponding named style type. * The TextStyle on a named style inherits from the normal text named style. * The TextStyle of the normal text named style inherits from the default text style in the Docs editor. * The TextStyle on a Paragraph element that is contained in a table may inherit its text style from the table style. If the text style does not inherit from a parent, unsetting fields will revert the style to a value matching the defaults in the Docs editor. # A TextStyle that only includes the changes made in this suggestion. This can be used along with the text_style_suggestion_state to see which fields have changed and their new values.
                          &quot;italic&quot;: True or False, # Whether or not the text is italicized.
                          &quot;baselineOffset&quot;: &quot;A String&quot;, # The text&#x27;s vertical offset from its normal position. Text with `SUPERSCRIPT` or `SUBSCRIPT` baseline offsets is automatically rendered in a smaller font size, computed based on the `font_size` field. The `font_size` itself is not affected by changes in this field.
                          &quot;bold&quot;: True or False, # Whether or not the text is rendered as bold.
                          &quot;fontSize&quot;: { # A magnitude in a single direction in the specified units. # The size of the text&#x27;s font.
                            &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                            &quot;magnitude&quot;: 3.14, # The magnitude.
                          },
                          &quot;foregroundColor&quot;: { # A color that can either be fully opaque or fully transparent. # The foreground color of the text. If set, the color is either an RGB color or transparent, depending on the `color` field.
                            &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                              &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                                &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                                &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                                &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                              },
                            },
                          },
                          &quot;backgroundColor&quot;: { # A color that can either be fully opaque or fully transparent. # The background color of the text. If set, the color is either an RGB color or transparent, depending on the `color` field.
                            &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                              &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                                &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                                &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                                &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                              },
                            },
                          },
                          &quot;link&quot;: { # A reference to another portion of a document or an external URL resource. # The hyperlink destination of the text. If unset, there is no link. Links are not inherited from parent text. Changing the link in an update request causes some other changes to the text style of the range: * When setting a link, the text foreground color will be updated to the default link color and the text will be underlined. If these fields are modified in the same request, those values will be used instead of the link defaults. * Setting a link on a text range that overlaps with an existing link will also update the existing link to point to the new URL. * Links are not settable on newline characters. As a result, setting a link on a text range that crosses a paragraph boundary, such as `&quot;ABC\n123&quot;`, will separate the newline character(s) into their own text runs. The link will be applied separately to the runs before and after the newline. * Removing a link will update the text style of the range to match the style of the preceding text (or the default text styles if the preceding text is another link) unless different styles are being set in the same request.
                            &quot;bookmarkId&quot;: &quot;A String&quot;, # The ID of a bookmark in this document.
                            &quot;url&quot;: &quot;A String&quot;, # An external URL.
                            &quot;headingId&quot;: &quot;A String&quot;, # The ID of a heading in this document.
                          },
                          &quot;strikethrough&quot;: True or False, # Whether or not the text is struck through.
                          &quot;weightedFontFamily&quot;: { # Represents a font family and weight of text. # The font family and rendered weight of the text. If an update request specifies values for both `weighted_font_family` and `bold`, the `weighted_font_family` is applied first, then `bold`. If `weighted_font_family#weight` is not set, it defaults to `400`. If `weighted_font_family` is set, then `weighted_font_family#font_family` must also be set with a non-empty value. Otherwise, a 400 bad request error is returned.
                            &quot;fontFamily&quot;: &quot;A String&quot;, # The font family of the text. The font family can be any font from the Font menu in Docs or from [Google Fonts] (https://fonts.google.com/). If the font name is unrecognized, the text is rendered in `Arial`.
                            &quot;weight&quot;: 42, # The weight of the font. This field can have any value that is a multiple of `100` between `100` and `900`, inclusive. This range corresponds to the numerical values described in the CSS 2.1 Specification, [section 15.6](https://www.w3.org/TR/CSS21/fonts.html#font-boldness), with non-numerical values disallowed. The default value is `400` (&quot;normal&quot;). The font weight makes up just one component of the rendered font weight. The rendered weight is determined by a combination of the `weight` and the text style&#x27;s resolved `bold` value, after accounting for inheritance: * If the text is bold and the weight is less than `400`, the rendered weight is 400. * If the text is bold and the weight is greater than or equal to `400` but is less than `700`, the rendered weight is `700`. * If the weight is greater than or equal to `700`, the rendered weight is equal to the weight. * If the text is not bold, the rendered weight is equal to the weight.
                          },
                          &quot;underline&quot;: True or False, # Whether or not the text is underlined.
                          &quot;smallCaps&quot;: True or False, # Whether or not the text is in small capital letters.
                        },
                      },
                    },
                    &quot;suggestedDeletionIds&quot;: [ # The suggested deletion IDs. If empty, then there are no suggested deletions of this content.
                      &quot;A String&quot;,
                    ],
                  },
                  &quot;horizontalRule&quot;: { # A ParagraphElement representing a horizontal line. # A horizontal rule paragraph element.
                    &quot;suggestedInsertionIds&quot;: [ # The suggested insertion IDs. A HorizontalRule may have multiple insertion IDs if it is a nested suggested change. If empty, then this is not a suggested insertion.
                      &quot;A String&quot;,
                    ],
                    &quot;suggestedTextStyleChanges&quot;: { # The suggested text style changes to this HorizontalRule, keyed by suggestion ID.
                      &quot;a_key&quot;: { # A suggested change to a TextStyle.
                        &quot;textStyleSuggestionState&quot;: { # A mask that indicates which of the fields on the base TextStyle have been changed in this suggestion. For any field set to true, there is a new suggested value. # A mask that indicates which of the fields on the base TextStyle have been changed in this suggestion.
                          &quot;backgroundColorSuggested&quot;: True or False, # Indicates if there was a suggested change to background_color.
                          &quot;fontSizeSuggested&quot;: True or False, # Indicates if there was a suggested change to font_size.
                          &quot;boldSuggested&quot;: True or False, # Indicates if there was a suggested change to bold.
                          &quot;baselineOffsetSuggested&quot;: True or False, # Indicates if there was a suggested change to baseline_offset.
                          &quot;foregroundColorSuggested&quot;: True or False, # Indicates if there was a suggested change to foreground_color.
                          &quot;italicSuggested&quot;: True or False, # Indicates if there was a suggested change to italic.
                          &quot;linkSuggested&quot;: True or False, # Indicates if there was a suggested change to link.
                          &quot;underlineSuggested&quot;: True or False, # Indicates if there was a suggested change to underline.
                          &quot;weightedFontFamilySuggested&quot;: True or False, # Indicates if there was a suggested change to weighted_font_family.
                          &quot;smallCapsSuggested&quot;: True or False, # Indicates if there was a suggested change to small_caps.
                          &quot;strikethroughSuggested&quot;: True or False, # Indicates if there was a suggested change to strikethrough.
                        },
                        &quot;textStyle&quot;: { # Represents the styling that can be applied to text. Inherited text styles are represented as unset fields in this message. A text style&#x27;s parent depends on where the text style is defined: * The TextStyle of text in a Paragraph inherits from the paragraph&#x27;s corresponding named style type. * The TextStyle on a named style inherits from the normal text named style. * The TextStyle of the normal text named style inherits from the default text style in the Docs editor. * The TextStyle on a Paragraph element that is contained in a table may inherit its text style from the table style. If the text style does not inherit from a parent, unsetting fields will revert the style to a value matching the defaults in the Docs editor. # A TextStyle that only includes the changes made in this suggestion. This can be used along with the text_style_suggestion_state to see which fields have changed and their new values.
                          &quot;italic&quot;: True or False, # Whether or not the text is italicized.
                          &quot;baselineOffset&quot;: &quot;A String&quot;, # The text&#x27;s vertical offset from its normal position. Text with `SUPERSCRIPT` or `SUBSCRIPT` baseline offsets is automatically rendered in a smaller font size, computed based on the `font_size` field. The `font_size` itself is not affected by changes in this field.
                          &quot;bold&quot;: True or False, # Whether or not the text is rendered as bold.
                          &quot;fontSize&quot;: { # A magnitude in a single direction in the specified units. # The size of the text&#x27;s font.
                            &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                            &quot;magnitude&quot;: 3.14, # The magnitude.
                          },
                          &quot;foregroundColor&quot;: { # A color that can either be fully opaque or fully transparent. # The foreground color of the text. If set, the color is either an RGB color or transparent, depending on the `color` field.
                            &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                              &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                                &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                                &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                                &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                              },
                            },
                          },
                          &quot;backgroundColor&quot;: { # A color that can either be fully opaque or fully transparent. # The background color of the text. If set, the color is either an RGB color or transparent, depending on the `color` field.
                            &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                              &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                                &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                                &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                                &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                              },
                            },
                          },
                          &quot;link&quot;: { # A reference to another portion of a document or an external URL resource. # The hyperlink destination of the text. If unset, there is no link. Links are not inherited from parent text. Changing the link in an update request causes some other changes to the text style of the range: * When setting a link, the text foreground color will be updated to the default link color and the text will be underlined. If these fields are modified in the same request, those values will be used instead of the link defaults. * Setting a link on a text range that overlaps with an existing link will also update the existing link to point to the new URL. * Links are not settable on newline characters. As a result, setting a link on a text range that crosses a paragraph boundary, such as `&quot;ABC\n123&quot;`, will separate the newline character(s) into their own text runs. The link will be applied separately to the runs before and after the newline. * Removing a link will update the text style of the range to match the style of the preceding text (or the default text styles if the preceding text is another link) unless different styles are being set in the same request.
                            &quot;bookmarkId&quot;: &quot;A String&quot;, # The ID of a bookmark in this document.
                            &quot;url&quot;: &quot;A String&quot;, # An external URL.
                            &quot;headingId&quot;: &quot;A String&quot;, # The ID of a heading in this document.
                          },
                          &quot;strikethrough&quot;: True or False, # Whether or not the text is struck through.
                          &quot;weightedFontFamily&quot;: { # Represents a font family and weight of text. # The font family and rendered weight of the text. If an update request specifies values for both `weighted_font_family` and `bold`, the `weighted_font_family` is applied first, then `bold`. If `weighted_font_family#weight` is not set, it defaults to `400`. If `weighted_font_family` is set, then `weighted_font_family#font_family` must also be set with a non-empty value. Otherwise, a 400 bad request error is returned.
                            &quot;fontFamily&quot;: &quot;A String&quot;, # The font family of the text. The font family can be any font from the Font menu in Docs or from [Google Fonts] (https://fonts.google.com/). If the font name is unrecognized, the text is rendered in `Arial`.
                            &quot;weight&quot;: 42, # The weight of the font. This field can have any value that is a multiple of `100` between `100` and `900`, inclusive. This range corresponds to the numerical values described in the CSS 2.1 Specification, [section 15.6](https://www.w3.org/TR/CSS21/fonts.html#font-boldness), with non-numerical values disallowed. The default value is `400` (&quot;normal&quot;). The font weight makes up just one component of the rendered font weight. The rendered weight is determined by a combination of the `weight` and the text style&#x27;s resolved `bold` value, after accounting for inheritance: * If the text is bold and the weight is less than `400`, the rendered weight is 400. * If the text is bold and the weight is greater than or equal to `400` but is less than `700`, the rendered weight is `700`. * If the weight is greater than or equal to `700`, the rendered weight is equal to the weight. * If the text is not bold, the rendered weight is equal to the weight.
                          },
                          &quot;underline&quot;: True or False, # Whether or not the text is underlined.
                          &quot;smallCaps&quot;: True or False, # Whether or not the text is in small capital letters.
                        },
                      },
                    },
                    &quot;suggestedDeletionIds&quot;: [ # The suggested deletion IDs. If empty, then there are no suggested deletions of this content.
                      &quot;A String&quot;,
                    ],
                    &quot;textStyle&quot;: { # Represents the styling that can be applied to text. Inherited text styles are represented as unset fields in this message. A text style&#x27;s parent depends on where the text style is defined: * The TextStyle of text in a Paragraph inherits from the paragraph&#x27;s corresponding named style type. * The TextStyle on a named style inherits from the normal text named style. * The TextStyle of the normal text named style inherits from the default text style in the Docs editor. * The TextStyle on a Paragraph element that is contained in a table may inherit its text style from the table style. If the text style does not inherit from a parent, unsetting fields will revert the style to a value matching the defaults in the Docs editor. # The text style of this HorizontalRule. Similar to text content, like text runs and footnote references, the text style of a horizontal rule can affect content layout as well as the styling of text inserted adjacent to it.
                      &quot;italic&quot;: True or False, # Whether or not the text is italicized.
                      &quot;baselineOffset&quot;: &quot;A String&quot;, # The text&#x27;s vertical offset from its normal position. Text with `SUPERSCRIPT` or `SUBSCRIPT` baseline offsets is automatically rendered in a smaller font size, computed based on the `font_size` field. The `font_size` itself is not affected by changes in this field.
                      &quot;bold&quot;: True or False, # Whether or not the text is rendered as bold.
                      &quot;fontSize&quot;: { # A magnitude in a single direction in the specified units. # The size of the text&#x27;s font.
                        &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                        &quot;magnitude&quot;: 3.14, # The magnitude.
                      },
                      &quot;foregroundColor&quot;: { # A color that can either be fully opaque or fully transparent. # The foreground color of the text. If set, the color is either an RGB color or transparent, depending on the `color` field.
                        &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                          &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                            &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                            &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                            &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                          },
                        },
                      },
                      &quot;backgroundColor&quot;: { # A color that can either be fully opaque or fully transparent. # The background color of the text. If set, the color is either an RGB color or transparent, depending on the `color` field.
                        &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                          &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                            &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                            &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                            &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                          },
                        },
                      },
                      &quot;link&quot;: { # A reference to another portion of a document or an external URL resource. # The hyperlink destination of the text. If unset, there is no link. Links are not inherited from parent text. Changing the link in an update request causes some other changes to the text style of the range: * When setting a link, the text foreground color will be updated to the default link color and the text will be underlined. If these fields are modified in the same request, those values will be used instead of the link defaults. * Setting a link on a text range that overlaps with an existing link will also update the existing link to point to the new URL. * Links are not settable on newline characters. As a result, setting a link on a text range that crosses a paragraph boundary, such as `&quot;ABC\n123&quot;`, will separate the newline character(s) into their own text runs. The link will be applied separately to the runs before and after the newline. * Removing a link will update the text style of the range to match the style of the preceding text (or the default text styles if the preceding text is another link) unless different styles are being set in the same request.
                        &quot;bookmarkId&quot;: &quot;A String&quot;, # The ID of a bookmark in this document.
                        &quot;url&quot;: &quot;A String&quot;, # An external URL.
                        &quot;headingId&quot;: &quot;A String&quot;, # The ID of a heading in this document.
                      },
                      &quot;strikethrough&quot;: True or False, # Whether or not the text is struck through.
                      &quot;weightedFontFamily&quot;: { # Represents a font family and weight of text. # The font family and rendered weight of the text. If an update request specifies values for both `weighted_font_family` and `bold`, the `weighted_font_family` is applied first, then `bold`. If `weighted_font_family#weight` is not set, it defaults to `400`. If `weighted_font_family` is set, then `weighted_font_family#font_family` must also be set with a non-empty value. Otherwise, a 400 bad request error is returned.
                        &quot;fontFamily&quot;: &quot;A String&quot;, # The font family of the text. The font family can be any font from the Font menu in Docs or from [Google Fonts] (https://fonts.google.com/). If the font name is unrecognized, the text is rendered in `Arial`.
                        &quot;weight&quot;: 42, # The weight of the font. This field can have any value that is a multiple of `100` between `100` and `900`, inclusive. This range corresponds to the numerical values described in the CSS 2.1 Specification, [section 15.6](https://www.w3.org/TR/CSS21/fonts.html#font-boldness), with non-numerical values disallowed. The default value is `400` (&quot;normal&quot;). The font weight makes up just one component of the rendered font weight. The rendered weight is determined by a combination of the `weight` and the text style&#x27;s resolved `bold` value, after accounting for inheritance: * If the text is bold and the weight is less than `400`, the rendered weight is 400. * If the text is bold and the weight is greater than or equal to `400` but is less than `700`, the rendered weight is `700`. * If the weight is greater than or equal to `700`, the rendered weight is equal to the weight. * If the text is not bold, the rendered weight is equal to the weight.
                      },
                      &quot;underline&quot;: True or False, # Whether or not the text is underlined.
                      &quot;smallCaps&quot;: True or False, # Whether or not the text is in small capital letters.
                    },
                  },
                  &quot;autoText&quot;: { # A ParagraphElement representing a spot in the text that is dynamically replaced with content that can change over time, like a page number. # An auto text paragraph element.
                    &quot;suggestedDeletionIds&quot;: [ # The suggested deletion IDs. If empty, then there are no suggested deletions of this content.
                      &quot;A String&quot;,
                    ],
                    &quot;suggestedInsertionIds&quot;: [ # The suggested insertion IDs. An AutoText may have multiple insertion IDs if it is a nested suggested change. If empty, then this is not a suggested insertion.
                      &quot;A String&quot;,
                    ],
                    &quot;suggestedTextStyleChanges&quot;: { # The suggested text style changes to this AutoText, keyed by suggestion ID.
                      &quot;a_key&quot;: { # A suggested change to a TextStyle.
                        &quot;textStyleSuggestionState&quot;: { # A mask that indicates which of the fields on the base TextStyle have been changed in this suggestion. For any field set to true, there is a new suggested value. # A mask that indicates which of the fields on the base TextStyle have been changed in this suggestion.
                          &quot;backgroundColorSuggested&quot;: True or False, # Indicates if there was a suggested change to background_color.
                          &quot;fontSizeSuggested&quot;: True or False, # Indicates if there was a suggested change to font_size.
                          &quot;boldSuggested&quot;: True or False, # Indicates if there was a suggested change to bold.
                          &quot;baselineOffsetSuggested&quot;: True or False, # Indicates if there was a suggested change to baseline_offset.
                          &quot;foregroundColorSuggested&quot;: True or False, # Indicates if there was a suggested change to foreground_color.
                          &quot;italicSuggested&quot;: True or False, # Indicates if there was a suggested change to italic.
                          &quot;linkSuggested&quot;: True or False, # Indicates if there was a suggested change to link.
                          &quot;underlineSuggested&quot;: True or False, # Indicates if there was a suggested change to underline.
                          &quot;weightedFontFamilySuggested&quot;: True or False, # Indicates if there was a suggested change to weighted_font_family.
                          &quot;smallCapsSuggested&quot;: True or False, # Indicates if there was a suggested change to small_caps.
                          &quot;strikethroughSuggested&quot;: True or False, # Indicates if there was a suggested change to strikethrough.
                        },
                        &quot;textStyle&quot;: { # Represents the styling that can be applied to text. Inherited text styles are represented as unset fields in this message. A text style&#x27;s parent depends on where the text style is defined: * The TextStyle of text in a Paragraph inherits from the paragraph&#x27;s corresponding named style type. * The TextStyle on a named style inherits from the normal text named style. * The TextStyle of the normal text named style inherits from the default text style in the Docs editor. * The TextStyle on a Paragraph element that is contained in a table may inherit its text style from the table style. If the text style does not inherit from a parent, unsetting fields will revert the style to a value matching the defaults in the Docs editor. # A TextStyle that only includes the changes made in this suggestion. This can be used along with the text_style_suggestion_state to see which fields have changed and their new values.
                          &quot;italic&quot;: True or False, # Whether or not the text is italicized.
                          &quot;baselineOffset&quot;: &quot;A String&quot;, # The text&#x27;s vertical offset from its normal position. Text with `SUPERSCRIPT` or `SUBSCRIPT` baseline offsets is automatically rendered in a smaller font size, computed based on the `font_size` field. The `font_size` itself is not affected by changes in this field.
                          &quot;bold&quot;: True or False, # Whether or not the text is rendered as bold.
                          &quot;fontSize&quot;: { # A magnitude in a single direction in the specified units. # The size of the text&#x27;s font.
                            &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                            &quot;magnitude&quot;: 3.14, # The magnitude.
                          },
                          &quot;foregroundColor&quot;: { # A color that can either be fully opaque or fully transparent. # The foreground color of the text. If set, the color is either an RGB color or transparent, depending on the `color` field.
                            &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                              &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                                &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                                &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                                &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                              },
                            },
                          },
                          &quot;backgroundColor&quot;: { # A color that can either be fully opaque or fully transparent. # The background color of the text. If set, the color is either an RGB color or transparent, depending on the `color` field.
                            &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                              &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                                &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                                &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                                &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                              },
                            },
                          },
                          &quot;link&quot;: { # A reference to another portion of a document or an external URL resource. # The hyperlink destination of the text. If unset, there is no link. Links are not inherited from parent text. Changing the link in an update request causes some other changes to the text style of the range: * When setting a link, the text foreground color will be updated to the default link color and the text will be underlined. If these fields are modified in the same request, those values will be used instead of the link defaults. * Setting a link on a text range that overlaps with an existing link will also update the existing link to point to the new URL. * Links are not settable on newline characters. As a result, setting a link on a text range that crosses a paragraph boundary, such as `&quot;ABC\n123&quot;`, will separate the newline character(s) into their own text runs. The link will be applied separately to the runs before and after the newline. * Removing a link will update the text style of the range to match the style of the preceding text (or the default text styles if the preceding text is another link) unless different styles are being set in the same request.
                            &quot;bookmarkId&quot;: &quot;A String&quot;, # The ID of a bookmark in this document.
                            &quot;url&quot;: &quot;A String&quot;, # An external URL.
                            &quot;headingId&quot;: &quot;A String&quot;, # The ID of a heading in this document.
                          },
                          &quot;strikethrough&quot;: True or False, # Whether or not the text is struck through.
                          &quot;weightedFontFamily&quot;: { # Represents a font family and weight of text. # The font family and rendered weight of the text. If an update request specifies values for both `weighted_font_family` and `bold`, the `weighted_font_family` is applied first, then `bold`. If `weighted_font_family#weight` is not set, it defaults to `400`. If `weighted_font_family` is set, then `weighted_font_family#font_family` must also be set with a non-empty value. Otherwise, a 400 bad request error is returned.
                            &quot;fontFamily&quot;: &quot;A String&quot;, # The font family of the text. The font family can be any font from the Font menu in Docs or from [Google Fonts] (https://fonts.google.com/). If the font name is unrecognized, the text is rendered in `Arial`.
                            &quot;weight&quot;: 42, # The weight of the font. This field can have any value that is a multiple of `100` between `100` and `900`, inclusive. This range corresponds to the numerical values described in the CSS 2.1 Specification, [section 15.6](https://www.w3.org/TR/CSS21/fonts.html#font-boldness), with non-numerical values disallowed. The default value is `400` (&quot;normal&quot;). The font weight makes up just one component of the rendered font weight. The rendered weight is determined by a combination of the `weight` and the text style&#x27;s resolved `bold` value, after accounting for inheritance: * If the text is bold and the weight is less than `400`, the rendered weight is 400. * If the text is bold and the weight is greater than or equal to `400` but is less than `700`, the rendered weight is `700`. * If the weight is greater than or equal to `700`, the rendered weight is equal to the weight. * If the text is not bold, the rendered weight is equal to the weight.
                          },
                          &quot;underline&quot;: True or False, # Whether or not the text is underlined.
                          &quot;smallCaps&quot;: True or False, # Whether or not the text is in small capital letters.
                        },
                      },
                    },
                    &quot;type&quot;: &quot;A String&quot;, # The type of this auto text.
                    &quot;textStyle&quot;: { # Represents the styling that can be applied to text. Inherited text styles are represented as unset fields in this message. A text style&#x27;s parent depends on where the text style is defined: * The TextStyle of text in a Paragraph inherits from the paragraph&#x27;s corresponding named style type. * The TextStyle on a named style inherits from the normal text named style. * The TextStyle of the normal text named style inherits from the default text style in the Docs editor. * The TextStyle on a Paragraph element that is contained in a table may inherit its text style from the table style. If the text style does not inherit from a parent, unsetting fields will revert the style to a value matching the defaults in the Docs editor. # The text style of this AutoText.
                      &quot;italic&quot;: True or False, # Whether or not the text is italicized.
                      &quot;baselineOffset&quot;: &quot;A String&quot;, # The text&#x27;s vertical offset from its normal position. Text with `SUPERSCRIPT` or `SUBSCRIPT` baseline offsets is automatically rendered in a smaller font size, computed based on the `font_size` field. The `font_size` itself is not affected by changes in this field.
                      &quot;bold&quot;: True or False, # Whether or not the text is rendered as bold.
                      &quot;fontSize&quot;: { # A magnitude in a single direction in the specified units. # The size of the text&#x27;s font.
                        &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                        &quot;magnitude&quot;: 3.14, # The magnitude.
                      },
                      &quot;foregroundColor&quot;: { # A color that can either be fully opaque or fully transparent. # The foreground color of the text. If set, the color is either an RGB color or transparent, depending on the `color` field.
                        &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                          &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                            &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                            &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                            &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                          },
                        },
                      },
                      &quot;backgroundColor&quot;: { # A color that can either be fully opaque or fully transparent. # The background color of the text. If set, the color is either an RGB color or transparent, depending on the `color` field.
                        &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                          &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                            &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                            &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                            &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                          },
                        },
                      },
                      &quot;link&quot;: { # A reference to another portion of a document or an external URL resource. # The hyperlink destination of the text. If unset, there is no link. Links are not inherited from parent text. Changing the link in an update request causes some other changes to the text style of the range: * When setting a link, the text foreground color will be updated to the default link color and the text will be underlined. If these fields are modified in the same request, those values will be used instead of the link defaults. * Setting a link on a text range that overlaps with an existing link will also update the existing link to point to the new URL. * Links are not settable on newline characters. As a result, setting a link on a text range that crosses a paragraph boundary, such as `&quot;ABC\n123&quot;`, will separate the newline character(s) into their own text runs. The link will be applied separately to the runs before and after the newline. * Removing a link will update the text style of the range to match the style of the preceding text (or the default text styles if the preceding text is another link) unless different styles are being set in the same request.
                        &quot;bookmarkId&quot;: &quot;A String&quot;, # The ID of a bookmark in this document.
                        &quot;url&quot;: &quot;A String&quot;, # An external URL.
                        &quot;headingId&quot;: &quot;A String&quot;, # The ID of a heading in this document.
                      },
                      &quot;strikethrough&quot;: True or False, # Whether or not the text is struck through.
                      &quot;weightedFontFamily&quot;: { # Represents a font family and weight of text. # The font family and rendered weight of the text. If an update request specifies values for both `weighted_font_family` and `bold`, the `weighted_font_family` is applied first, then `bold`. If `weighted_font_family#weight` is not set, it defaults to `400`. If `weighted_font_family` is set, then `weighted_font_family#font_family` must also be set with a non-empty value. Otherwise, a 400 bad request error is returned.
                        &quot;fontFamily&quot;: &quot;A String&quot;, # The font family of the text. The font family can be any font from the Font menu in Docs or from [Google Fonts] (https://fonts.google.com/). If the font name is unrecognized, the text is rendered in `Arial`.
                        &quot;weight&quot;: 42, # The weight of the font. This field can have any value that is a multiple of `100` between `100` and `900`, inclusive. This range corresponds to the numerical values described in the CSS 2.1 Specification, [section 15.6](https://www.w3.org/TR/CSS21/fonts.html#font-boldness), with non-numerical values disallowed. The default value is `400` (&quot;normal&quot;). The font weight makes up just one component of the rendered font weight. The rendered weight is determined by a combination of the `weight` and the text style&#x27;s resolved `bold` value, after accounting for inheritance: * If the text is bold and the weight is less than `400`, the rendered weight is 400. * If the text is bold and the weight is greater than or equal to `400` but is less than `700`, the rendered weight is `700`. * If the weight is greater than or equal to `700`, the rendered weight is equal to the weight. * If the text is not bold, the rendered weight is equal to the weight.
                      },
                      &quot;underline&quot;: True or False, # Whether or not the text is underlined.
                      &quot;smallCaps&quot;: True or False, # Whether or not the text is in small capital letters.
                    },
                  },
                  &quot;inlineObjectElement&quot;: { # A ParagraphElement that contains an InlineObject. # An inline object paragraph element.
                    &quot;suggestedDeletionIds&quot;: [ # The suggested deletion IDs. If empty, then there are no suggested deletions of this content.
                      &quot;A String&quot;,
                    ],
                    &quot;suggestedInsertionIds&quot;: [ # The suggested insertion IDs. An InlineObjectElement may have multiple insertion IDs if it is a nested suggested change. If empty, then this is not a suggested insertion.
                      &quot;A String&quot;,
                    ],
                    &quot;suggestedTextStyleChanges&quot;: { # The suggested text style changes to this InlineObject, keyed by suggestion ID.
                      &quot;a_key&quot;: { # A suggested change to a TextStyle.
                        &quot;textStyleSuggestionState&quot;: { # A mask that indicates which of the fields on the base TextStyle have been changed in this suggestion. For any field set to true, there is a new suggested value. # A mask that indicates which of the fields on the base TextStyle have been changed in this suggestion.
                          &quot;backgroundColorSuggested&quot;: True or False, # Indicates if there was a suggested change to background_color.
                          &quot;fontSizeSuggested&quot;: True or False, # Indicates if there was a suggested change to font_size.
                          &quot;boldSuggested&quot;: True or False, # Indicates if there was a suggested change to bold.
                          &quot;baselineOffsetSuggested&quot;: True or False, # Indicates if there was a suggested change to baseline_offset.
                          &quot;foregroundColorSuggested&quot;: True or False, # Indicates if there was a suggested change to foreground_color.
                          &quot;italicSuggested&quot;: True or False, # Indicates if there was a suggested change to italic.
                          &quot;linkSuggested&quot;: True or False, # Indicates if there was a suggested change to link.
                          &quot;underlineSuggested&quot;: True or False, # Indicates if there was a suggested change to underline.
                          &quot;weightedFontFamilySuggested&quot;: True or False, # Indicates if there was a suggested change to weighted_font_family.
                          &quot;smallCapsSuggested&quot;: True or False, # Indicates if there was a suggested change to small_caps.
                          &quot;strikethroughSuggested&quot;: True or False, # Indicates if there was a suggested change to strikethrough.
                        },
                        &quot;textStyle&quot;: { # Represents the styling that can be applied to text. Inherited text styles are represented as unset fields in this message. A text style&#x27;s parent depends on where the text style is defined: * The TextStyle of text in a Paragraph inherits from the paragraph&#x27;s corresponding named style type. * The TextStyle on a named style inherits from the normal text named style. * The TextStyle of the normal text named style inherits from the default text style in the Docs editor. * The TextStyle on a Paragraph element that is contained in a table may inherit its text style from the table style. If the text style does not inherit from a parent, unsetting fields will revert the style to a value matching the defaults in the Docs editor. # A TextStyle that only includes the changes made in this suggestion. This can be used along with the text_style_suggestion_state to see which fields have changed and their new values.
                          &quot;italic&quot;: True or False, # Whether or not the text is italicized.
                          &quot;baselineOffset&quot;: &quot;A String&quot;, # The text&#x27;s vertical offset from its normal position. Text with `SUPERSCRIPT` or `SUBSCRIPT` baseline offsets is automatically rendered in a smaller font size, computed based on the `font_size` field. The `font_size` itself is not affected by changes in this field.
                          &quot;bold&quot;: True or False, # Whether or not the text is rendered as bold.
                          &quot;fontSize&quot;: { # A magnitude in a single direction in the specified units. # The size of the text&#x27;s font.
                            &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                            &quot;magnitude&quot;: 3.14, # The magnitude.
                          },
                          &quot;foregroundColor&quot;: { # A color that can either be fully opaque or fully transparent. # The foreground color of the text. If set, the color is either an RGB color or transparent, depending on the `color` field.
                            &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                              &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                                &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                                &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                                &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                              },
                            },
                          },
                          &quot;backgroundColor&quot;: { # A color that can either be fully opaque or fully transparent. # The background color of the text. If set, the color is either an RGB color or transparent, depending on the `color` field.
                            &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                              &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                                &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                                &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                                &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                              },
                            },
                          },
                          &quot;link&quot;: { # A reference to another portion of a document or an external URL resource. # The hyperlink destination of the text. If unset, there is no link. Links are not inherited from parent text. Changing the link in an update request causes some other changes to the text style of the range: * When setting a link, the text foreground color will be updated to the default link color and the text will be underlined. If these fields are modified in the same request, those values will be used instead of the link defaults. * Setting a link on a text range that overlaps with an existing link will also update the existing link to point to the new URL. * Links are not settable on newline characters. As a result, setting a link on a text range that crosses a paragraph boundary, such as `&quot;ABC\n123&quot;`, will separate the newline character(s) into their own text runs. The link will be applied separately to the runs before and after the newline. * Removing a link will update the text style of the range to match the style of the preceding text (or the default text styles if the preceding text is another link) unless different styles are being set in the same request.
                            &quot;bookmarkId&quot;: &quot;A String&quot;, # The ID of a bookmark in this document.
                            &quot;url&quot;: &quot;A String&quot;, # An external URL.
                            &quot;headingId&quot;: &quot;A String&quot;, # The ID of a heading in this document.
                          },
                          &quot;strikethrough&quot;: True or False, # Whether or not the text is struck through.
                          &quot;weightedFontFamily&quot;: { # Represents a font family and weight of text. # The font family and rendered weight of the text. If an update request specifies values for both `weighted_font_family` and `bold`, the `weighted_font_family` is applied first, then `bold`. If `weighted_font_family#weight` is not set, it defaults to `400`. If `weighted_font_family` is set, then `weighted_font_family#font_family` must also be set with a non-empty value. Otherwise, a 400 bad request error is returned.
                            &quot;fontFamily&quot;: &quot;A String&quot;, # The font family of the text. The font family can be any font from the Font menu in Docs or from [Google Fonts] (https://fonts.google.com/). If the font name is unrecognized, the text is rendered in `Arial`.
                            &quot;weight&quot;: 42, # The weight of the font. This field can have any value that is a multiple of `100` between `100` and `900`, inclusive. This range corresponds to the numerical values described in the CSS 2.1 Specification, [section 15.6](https://www.w3.org/TR/CSS21/fonts.html#font-boldness), with non-numerical values disallowed. The default value is `400` (&quot;normal&quot;). The font weight makes up just one component of the rendered font weight. The rendered weight is determined by a combination of the `weight` and the text style&#x27;s resolved `bold` value, after accounting for inheritance: * If the text is bold and the weight is less than `400`, the rendered weight is 400. * If the text is bold and the weight is greater than or equal to `400` but is less than `700`, the rendered weight is `700`. * If the weight is greater than or equal to `700`, the rendered weight is equal to the weight. * If the text is not bold, the rendered weight is equal to the weight.
                          },
                          &quot;underline&quot;: True or False, # Whether or not the text is underlined.
                          &quot;smallCaps&quot;: True or False, # Whether or not the text is in small capital letters.
                        },
                      },
                    },
                    &quot;inlineObjectId&quot;: &quot;A String&quot;, # The ID of the InlineObject this element contains.
                    &quot;textStyle&quot;: { # Represents the styling that can be applied to text. Inherited text styles are represented as unset fields in this message. A text style&#x27;s parent depends on where the text style is defined: * The TextStyle of text in a Paragraph inherits from the paragraph&#x27;s corresponding named style type. * The TextStyle on a named style inherits from the normal text named style. * The TextStyle of the normal text named style inherits from the default text style in the Docs editor. * The TextStyle on a Paragraph element that is contained in a table may inherit its text style from the table style. If the text style does not inherit from a parent, unsetting fields will revert the style to a value matching the defaults in the Docs editor. # The text style of this InlineObjectElement. Similar to text content, like text runs and footnote references, the text style of an inline object element can affect content layout as well as the styling of text inserted adjacent to it.
                      &quot;italic&quot;: True or False, # Whether or not the text is italicized.
                      &quot;baselineOffset&quot;: &quot;A String&quot;, # The text&#x27;s vertical offset from its normal position. Text with `SUPERSCRIPT` or `SUBSCRIPT` baseline offsets is automatically rendered in a smaller font size, computed based on the `font_size` field. The `font_size` itself is not affected by changes in this field.
                      &quot;bold&quot;: True or False, # Whether or not the text is rendered as bold.
                      &quot;fontSize&quot;: { # A magnitude in a single direction in the specified units. # The size of the text&#x27;s font.
                        &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                        &quot;magnitude&quot;: 3.14, # The magnitude.
                      },
                      &quot;foregroundColor&quot;: { # A color that can either be fully opaque or fully transparent. # The foreground color of the text. If set, the color is either an RGB color or transparent, depending on the `color` field.
                        &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                          &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                            &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                            &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                            &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                          },
                        },
                      },
                      &quot;backgroundColor&quot;: { # A color that can either be fully opaque or fully transparent. # The background color of the text. If set, the color is either an RGB color or transparent, depending on the `color` field.
                        &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                          &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                            &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                            &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                            &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                          },
                        },
                      },
                      &quot;link&quot;: { # A reference to another portion of a document or an external URL resource. # The hyperlink destination of the text. If unset, there is no link. Links are not inherited from parent text. Changing the link in an update request causes some other changes to the text style of the range: * When setting a link, the text foreground color will be updated to the default link color and the text will be underlined. If these fields are modified in the same request, those values will be used instead of the link defaults. * Setting a link on a text range that overlaps with an existing link will also update the existing link to point to the new URL. * Links are not settable on newline characters. As a result, setting a link on a text range that crosses a paragraph boundary, such as `&quot;ABC\n123&quot;`, will separate the newline character(s) into their own text runs. The link will be applied separately to the runs before and after the newline. * Removing a link will update the text style of the range to match the style of the preceding text (or the default text styles if the preceding text is another link) unless different styles are being set in the same request.
                        &quot;bookmarkId&quot;: &quot;A String&quot;, # The ID of a bookmark in this document.
                        &quot;url&quot;: &quot;A String&quot;, # An external URL.
                        &quot;headingId&quot;: &quot;A String&quot;, # The ID of a heading in this document.
                      },
                      &quot;strikethrough&quot;: True or False, # Whether or not the text is struck through.
                      &quot;weightedFontFamily&quot;: { # Represents a font family and weight of text. # The font family and rendered weight of the text. If an update request specifies values for both `weighted_font_family` and `bold`, the `weighted_font_family` is applied first, then `bold`. If `weighted_font_family#weight` is not set, it defaults to `400`. If `weighted_font_family` is set, then `weighted_font_family#font_family` must also be set with a non-empty value. Otherwise, a 400 bad request error is returned.
                        &quot;fontFamily&quot;: &quot;A String&quot;, # The font family of the text. The font family can be any font from the Font menu in Docs or from [Google Fonts] (https://fonts.google.com/). If the font name is unrecognized, the text is rendered in `Arial`.
                        &quot;weight&quot;: 42, # The weight of the font. This field can have any value that is a multiple of `100` between `100` and `900`, inclusive. This range corresponds to the numerical values described in the CSS 2.1 Specification, [section 15.6](https://www.w3.org/TR/CSS21/fonts.html#font-boldness), with non-numerical values disallowed. The default value is `400` (&quot;normal&quot;). The font weight makes up just one component of the rendered font weight. The rendered weight is determined by a combination of the `weight` and the text style&#x27;s resolved `bold` value, after accounting for inheritance: * If the text is bold and the weight is less than `400`, the rendered weight is 400. * If the text is bold and the weight is greater than or equal to `400` but is less than `700`, the rendered weight is `700`. * If the weight is greater than or equal to `700`, the rendered weight is equal to the weight. * If the text is not bold, the rendered weight is equal to the weight.
                      },
                      &quot;underline&quot;: True or False, # Whether or not the text is underlined.
                      &quot;smallCaps&quot;: True or False, # Whether or not the text is in small capital letters.
                    },
                  },
                  &quot;footnoteReference&quot;: { # A ParagraphElement representing a footnote reference. A footnote reference is the inline content rendered with a number and is used to identify the footnote. # A footnote reference paragraph element.
                    &quot;footnoteId&quot;: &quot;A String&quot;, # The ID of the footnote that contains the content of this footnote reference.
                    &quot;suggestedInsertionIds&quot;: [ # The suggested insertion IDs. A FootnoteReference may have multiple insertion IDs if it is a nested suggested change. If empty, then this is not a suggested insertion.
                      &quot;A String&quot;,
                    ],
                    &quot;footnoteNumber&quot;: &quot;A String&quot;, # The rendered number of this footnote.
                    &quot;suggestedDeletionIds&quot;: [ # The suggested deletion IDs. If empty, then there are no suggested deletions of this content.
                      &quot;A String&quot;,
                    ],
                    &quot;suggestedTextStyleChanges&quot;: { # The suggested text style changes to this FootnoteReference, keyed by suggestion ID.
                      &quot;a_key&quot;: { # A suggested change to a TextStyle.
                        &quot;textStyleSuggestionState&quot;: { # A mask that indicates which of the fields on the base TextStyle have been changed in this suggestion. For any field set to true, there is a new suggested value. # A mask that indicates which of the fields on the base TextStyle have been changed in this suggestion.
                          &quot;backgroundColorSuggested&quot;: True or False, # Indicates if there was a suggested change to background_color.
                          &quot;fontSizeSuggested&quot;: True or False, # Indicates if there was a suggested change to font_size.
                          &quot;boldSuggested&quot;: True or False, # Indicates if there was a suggested change to bold.
                          &quot;baselineOffsetSuggested&quot;: True or False, # Indicates if there was a suggested change to baseline_offset.
                          &quot;foregroundColorSuggested&quot;: True or False, # Indicates if there was a suggested change to foreground_color.
                          &quot;italicSuggested&quot;: True or False, # Indicates if there was a suggested change to italic.
                          &quot;linkSuggested&quot;: True or False, # Indicates if there was a suggested change to link.
                          &quot;underlineSuggested&quot;: True or False, # Indicates if there was a suggested change to underline.
                          &quot;weightedFontFamilySuggested&quot;: True or False, # Indicates if there was a suggested change to weighted_font_family.
                          &quot;smallCapsSuggested&quot;: True or False, # Indicates if there was a suggested change to small_caps.
                          &quot;strikethroughSuggested&quot;: True or False, # Indicates if there was a suggested change to strikethrough.
                        },
                        &quot;textStyle&quot;: { # Represents the styling that can be applied to text. Inherited text styles are represented as unset fields in this message. A text style&#x27;s parent depends on where the text style is defined: * The TextStyle of text in a Paragraph inherits from the paragraph&#x27;s corresponding named style type. * The TextStyle on a named style inherits from the normal text named style. * The TextStyle of the normal text named style inherits from the default text style in the Docs editor. * The TextStyle on a Paragraph element that is contained in a table may inherit its text style from the table style. If the text style does not inherit from a parent, unsetting fields will revert the style to a value matching the defaults in the Docs editor. # A TextStyle that only includes the changes made in this suggestion. This can be used along with the text_style_suggestion_state to see which fields have changed and their new values.
                          &quot;italic&quot;: True or False, # Whether or not the text is italicized.
                          &quot;baselineOffset&quot;: &quot;A String&quot;, # The text&#x27;s vertical offset from its normal position. Text with `SUPERSCRIPT` or `SUBSCRIPT` baseline offsets is automatically rendered in a smaller font size, computed based on the `font_size` field. The `font_size` itself is not affected by changes in this field.
                          &quot;bold&quot;: True or False, # Whether or not the text is rendered as bold.
                          &quot;fontSize&quot;: { # A magnitude in a single direction in the specified units. # The size of the text&#x27;s font.
                            &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                            &quot;magnitude&quot;: 3.14, # The magnitude.
                          },
                          &quot;foregroundColor&quot;: { # A color that can either be fully opaque or fully transparent. # The foreground color of the text. If set, the color is either an RGB color or transparent, depending on the `color` field.
                            &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                              &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                                &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                                &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                                &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                              },
                            },
                          },
                          &quot;backgroundColor&quot;: { # A color that can either be fully opaque or fully transparent. # The background color of the text. If set, the color is either an RGB color or transparent, depending on the `color` field.
                            &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                              &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                                &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                                &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                                &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                              },
                            },
                          },
                          &quot;link&quot;: { # A reference to another portion of a document or an external URL resource. # The hyperlink destination of the text. If unset, there is no link. Links are not inherited from parent text. Changing the link in an update request causes some other changes to the text style of the range: * When setting a link, the text foreground color will be updated to the default link color and the text will be underlined. If these fields are modified in the same request, those values will be used instead of the link defaults. * Setting a link on a text range that overlaps with an existing link will also update the existing link to point to the new URL. * Links are not settable on newline characters. As a result, setting a link on a text range that crosses a paragraph boundary, such as `&quot;ABC\n123&quot;`, will separate the newline character(s) into their own text runs. The link will be applied separately to the runs before and after the newline. * Removing a link will update the text style of the range to match the style of the preceding text (or the default text styles if the preceding text is another link) unless different styles are being set in the same request.
                            &quot;bookmarkId&quot;: &quot;A String&quot;, # The ID of a bookmark in this document.
                            &quot;url&quot;: &quot;A String&quot;, # An external URL.
                            &quot;headingId&quot;: &quot;A String&quot;, # The ID of a heading in this document.
                          },
                          &quot;strikethrough&quot;: True or False, # Whether or not the text is struck through.
                          &quot;weightedFontFamily&quot;: { # Represents a font family and weight of text. # The font family and rendered weight of the text. If an update request specifies values for both `weighted_font_family` and `bold`, the `weighted_font_family` is applied first, then `bold`. If `weighted_font_family#weight` is not set, it defaults to `400`. If `weighted_font_family` is set, then `weighted_font_family#font_family` must also be set with a non-empty value. Otherwise, a 400 bad request error is returned.
                            &quot;fontFamily&quot;: &quot;A String&quot;, # The font family of the text. The font family can be any font from the Font menu in Docs or from [Google Fonts] (https://fonts.google.com/). If the font name is unrecognized, the text is rendered in `Arial`.
                            &quot;weight&quot;: 42, # The weight of the font. This field can have any value that is a multiple of `100` between `100` and `900`, inclusive. This range corresponds to the numerical values described in the CSS 2.1 Specification, [section 15.6](https://www.w3.org/TR/CSS21/fonts.html#font-boldness), with non-numerical values disallowed. The default value is `400` (&quot;normal&quot;). The font weight makes up just one component of the rendered font weight. The rendered weight is determined by a combination of the `weight` and the text style&#x27;s resolved `bold` value, after accounting for inheritance: * If the text is bold and the weight is less than `400`, the rendered weight is 400. * If the text is bold and the weight is greater than or equal to `400` but is less than `700`, the rendered weight is `700`. * If the weight is greater than or equal to `700`, the rendered weight is equal to the weight. * If the text is not bold, the rendered weight is equal to the weight.
                          },
                          &quot;underline&quot;: True or False, # Whether or not the text is underlined.
                          &quot;smallCaps&quot;: True or False, # Whether or not the text is in small capital letters.
                        },
                      },
                    },
                    &quot;textStyle&quot;: { # Represents the styling that can be applied to text. Inherited text styles are represented as unset fields in this message. A text style&#x27;s parent depends on where the text style is defined: * The TextStyle of text in a Paragraph inherits from the paragraph&#x27;s corresponding named style type. * The TextStyle on a named style inherits from the normal text named style. * The TextStyle of the normal text named style inherits from the default text style in the Docs editor. * The TextStyle on a Paragraph element that is contained in a table may inherit its text style from the table style. If the text style does not inherit from a parent, unsetting fields will revert the style to a value matching the defaults in the Docs editor. # The text style of this FootnoteReference.
                      &quot;italic&quot;: True or False, # Whether or not the text is italicized.
                      &quot;baselineOffset&quot;: &quot;A String&quot;, # The text&#x27;s vertical offset from its normal position. Text with `SUPERSCRIPT` or `SUBSCRIPT` baseline offsets is automatically rendered in a smaller font size, computed based on the `font_size` field. The `font_size` itself is not affected by changes in this field.
                      &quot;bold&quot;: True or False, # Whether or not the text is rendered as bold.
                      &quot;fontSize&quot;: { # A magnitude in a single direction in the specified units. # The size of the text&#x27;s font.
                        &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                        &quot;magnitude&quot;: 3.14, # The magnitude.
                      },
                      &quot;foregroundColor&quot;: { # A color that can either be fully opaque or fully transparent. # The foreground color of the text. If set, the color is either an RGB color or transparent, depending on the `color` field.
                        &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                          &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                            &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                            &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                            &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                          },
                        },
                      },
                      &quot;backgroundColor&quot;: { # A color that can either be fully opaque or fully transparent. # The background color of the text. If set, the color is either an RGB color or transparent, depending on the `color` field.
                        &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                          &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                            &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                            &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                            &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                          },
                        },
                      },
                      &quot;link&quot;: { # A reference to another portion of a document or an external URL resource. # The hyperlink destination of the text. If unset, there is no link. Links are not inherited from parent text. Changing the link in an update request causes some other changes to the text style of the range: * When setting a link, the text foreground color will be updated to the default link color and the text will be underlined. If these fields are modified in the same request, those values will be used instead of the link defaults. * Setting a link on a text range that overlaps with an existing link will also update the existing link to point to the new URL. * Links are not settable on newline characters. As a result, setting a link on a text range that crosses a paragraph boundary, such as `&quot;ABC\n123&quot;`, will separate the newline character(s) into their own text runs. The link will be applied separately to the runs before and after the newline. * Removing a link will update the text style of the range to match the style of the preceding text (or the default text styles if the preceding text is another link) unless different styles are being set in the same request.
                        &quot;bookmarkId&quot;: &quot;A String&quot;, # The ID of a bookmark in this document.
                        &quot;url&quot;: &quot;A String&quot;, # An external URL.
                        &quot;headingId&quot;: &quot;A String&quot;, # The ID of a heading in this document.
                      },
                      &quot;strikethrough&quot;: True or False, # Whether or not the text is struck through.
                      &quot;weightedFontFamily&quot;: { # Represents a font family and weight of text. # The font family and rendered weight of the text. If an update request specifies values for both `weighted_font_family` and `bold`, the `weighted_font_family` is applied first, then `bold`. If `weighted_font_family#weight` is not set, it defaults to `400`. If `weighted_font_family` is set, then `weighted_font_family#font_family` must also be set with a non-empty value. Otherwise, a 400 bad request error is returned.
                        &quot;fontFamily&quot;: &quot;A String&quot;, # The font family of the text. The font family can be any font from the Font menu in Docs or from [Google Fonts] (https://fonts.google.com/). If the font name is unrecognized, the text is rendered in `Arial`.
                        &quot;weight&quot;: 42, # The weight of the font. This field can have any value that is a multiple of `100` between `100` and `900`, inclusive. This range corresponds to the numerical values described in the CSS 2.1 Specification, [section 15.6](https://www.w3.org/TR/CSS21/fonts.html#font-boldness), with non-numerical values disallowed. The default value is `400` (&quot;normal&quot;). The font weight makes up just one component of the rendered font weight. The rendered weight is determined by a combination of the `weight` and the text style&#x27;s resolved `bold` value, after accounting for inheritance: * If the text is bold and the weight is less than `400`, the rendered weight is 400. * If the text is bold and the weight is greater than or equal to `400` but is less than `700`, the rendered weight is `700`. * If the weight is greater than or equal to `700`, the rendered weight is equal to the weight. * If the text is not bold, the rendered weight is equal to the weight.
                      },
                      &quot;underline&quot;: True or False, # Whether or not the text is underlined.
                      &quot;smallCaps&quot;: True or False, # Whether or not the text is in small capital letters.
                    },
                  },
                  &quot;startIndex&quot;: 42, # The zero-based start index of this paragraph element, in UTF-16 code units.
                  &quot;endIndex&quot;: 42, # The zero-base end index of this paragraph element, exclusive, in UTF-16 code units.
                  &quot;equation&quot;: { # A ParagraphElement representing an equation. # An equation paragraph element.
                    &quot;suggestedDeletionIds&quot;: [ # The suggested deletion IDs. If empty, then there are no suggested deletions of this content.
                      &quot;A String&quot;,
                    ],
                    &quot;suggestedInsertionIds&quot;: [ # The suggested insertion IDs. A Equation may have multiple insertion IDs if it is a nested suggested change. If empty, then this is not a suggested insertion.
                      &quot;A String&quot;,
                    ],
                  },
                  &quot;columnBreak&quot;: { # A ParagraphElement representing a column break. A column break makes the subsequent text start at the top of the next column. # A column break paragraph element.
                    &quot;suggestedTextStyleChanges&quot;: { # The suggested text style changes to this ColumnBreak, keyed by suggestion ID.
                      &quot;a_key&quot;: { # A suggested change to a TextStyle.
                        &quot;textStyleSuggestionState&quot;: { # A mask that indicates which of the fields on the base TextStyle have been changed in this suggestion. For any field set to true, there is a new suggested value. # A mask that indicates which of the fields on the base TextStyle have been changed in this suggestion.
                          &quot;backgroundColorSuggested&quot;: True or False, # Indicates if there was a suggested change to background_color.
                          &quot;fontSizeSuggested&quot;: True or False, # Indicates if there was a suggested change to font_size.
                          &quot;boldSuggested&quot;: True or False, # Indicates if there was a suggested change to bold.
                          &quot;baselineOffsetSuggested&quot;: True or False, # Indicates if there was a suggested change to baseline_offset.
                          &quot;foregroundColorSuggested&quot;: True or False, # Indicates if there was a suggested change to foreground_color.
                          &quot;italicSuggested&quot;: True or False, # Indicates if there was a suggested change to italic.
                          &quot;linkSuggested&quot;: True or False, # Indicates if there was a suggested change to link.
                          &quot;underlineSuggested&quot;: True or False, # Indicates if there was a suggested change to underline.
                          &quot;weightedFontFamilySuggested&quot;: True or False, # Indicates if there was a suggested change to weighted_font_family.
                          &quot;smallCapsSuggested&quot;: True or False, # Indicates if there was a suggested change to small_caps.
                          &quot;strikethroughSuggested&quot;: True or False, # Indicates if there was a suggested change to strikethrough.
                        },
                        &quot;textStyle&quot;: { # Represents the styling that can be applied to text. Inherited text styles are represented as unset fields in this message. A text style&#x27;s parent depends on where the text style is defined: * The TextStyle of text in a Paragraph inherits from the paragraph&#x27;s corresponding named style type. * The TextStyle on a named style inherits from the normal text named style. * The TextStyle of the normal text named style inherits from the default text style in the Docs editor. * The TextStyle on a Paragraph element that is contained in a table may inherit its text style from the table style. If the text style does not inherit from a parent, unsetting fields will revert the style to a value matching the defaults in the Docs editor. # A TextStyle that only includes the changes made in this suggestion. This can be used along with the text_style_suggestion_state to see which fields have changed and their new values.
                          &quot;italic&quot;: True or False, # Whether or not the text is italicized.
                          &quot;baselineOffset&quot;: &quot;A String&quot;, # The text&#x27;s vertical offset from its normal position. Text with `SUPERSCRIPT` or `SUBSCRIPT` baseline offsets is automatically rendered in a smaller font size, computed based on the `font_size` field. The `font_size` itself is not affected by changes in this field.
                          &quot;bold&quot;: True or False, # Whether or not the text is rendered as bold.
                          &quot;fontSize&quot;: { # A magnitude in a single direction in the specified units. # The size of the text&#x27;s font.
                            &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                            &quot;magnitude&quot;: 3.14, # The magnitude.
                          },
                          &quot;foregroundColor&quot;: { # A color that can either be fully opaque or fully transparent. # The foreground color of the text. If set, the color is either an RGB color or transparent, depending on the `color` field.
                            &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                              &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                                &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                                &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                                &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                              },
                            },
                          },
                          &quot;backgroundColor&quot;: { # A color that can either be fully opaque or fully transparent. # The background color of the text. If set, the color is either an RGB color or transparent, depending on the `color` field.
                            &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                              &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                                &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                                &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                                &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                              },
                            },
                          },
                          &quot;link&quot;: { # A reference to another portion of a document or an external URL resource. # The hyperlink destination of the text. If unset, there is no link. Links are not inherited from parent text. Changing the link in an update request causes some other changes to the text style of the range: * When setting a link, the text foreground color will be updated to the default link color and the text will be underlined. If these fields are modified in the same request, those values will be used instead of the link defaults. * Setting a link on a text range that overlaps with an existing link will also update the existing link to point to the new URL. * Links are not settable on newline characters. As a result, setting a link on a text range that crosses a paragraph boundary, such as `&quot;ABC\n123&quot;`, will separate the newline character(s) into their own text runs. The link will be applied separately to the runs before and after the newline. * Removing a link will update the text style of the range to match the style of the preceding text (or the default text styles if the preceding text is another link) unless different styles are being set in the same request.
                            &quot;bookmarkId&quot;: &quot;A String&quot;, # The ID of a bookmark in this document.
                            &quot;url&quot;: &quot;A String&quot;, # An external URL.
                            &quot;headingId&quot;: &quot;A String&quot;, # The ID of a heading in this document.
                          },
                          &quot;strikethrough&quot;: True or False, # Whether or not the text is struck through.
                          &quot;weightedFontFamily&quot;: { # Represents a font family and weight of text. # The font family and rendered weight of the text. If an update request specifies values for both `weighted_font_family` and `bold`, the `weighted_font_family` is applied first, then `bold`. If `weighted_font_family#weight` is not set, it defaults to `400`. If `weighted_font_family` is set, then `weighted_font_family#font_family` must also be set with a non-empty value. Otherwise, a 400 bad request error is returned.
                            &quot;fontFamily&quot;: &quot;A String&quot;, # The font family of the text. The font family can be any font from the Font menu in Docs or from [Google Fonts] (https://fonts.google.com/). If the font name is unrecognized, the text is rendered in `Arial`.
                            &quot;weight&quot;: 42, # The weight of the font. This field can have any value that is a multiple of `100` between `100` and `900`, inclusive. This range corresponds to the numerical values described in the CSS 2.1 Specification, [section 15.6](https://www.w3.org/TR/CSS21/fonts.html#font-boldness), with non-numerical values disallowed. The default value is `400` (&quot;normal&quot;). The font weight makes up just one component of the rendered font weight. The rendered weight is determined by a combination of the `weight` and the text style&#x27;s resolved `bold` value, after accounting for inheritance: * If the text is bold and the weight is less than `400`, the rendered weight is 400. * If the text is bold and the weight is greater than or equal to `400` but is less than `700`, the rendered weight is `700`. * If the weight is greater than or equal to `700`, the rendered weight is equal to the weight. * If the text is not bold, the rendered weight is equal to the weight.
                          },
                          &quot;underline&quot;: True or False, # Whether or not the text is underlined.
                          &quot;smallCaps&quot;: True or False, # Whether or not the text is in small capital letters.
                        },
                      },
                    },
                    &quot;suggestedDeletionIds&quot;: [ # The suggested deletion IDs. If empty, then there are no suggested deletions of this content.
                      &quot;A String&quot;,
                    ],
                    &quot;textStyle&quot;: { # Represents the styling that can be applied to text. Inherited text styles are represented as unset fields in this message. A text style&#x27;s parent depends on where the text style is defined: * The TextStyle of text in a Paragraph inherits from the paragraph&#x27;s corresponding named style type. * The TextStyle on a named style inherits from the normal text named style. * The TextStyle of the normal text named style inherits from the default text style in the Docs editor. * The TextStyle on a Paragraph element that is contained in a table may inherit its text style from the table style. If the text style does not inherit from a parent, unsetting fields will revert the style to a value matching the defaults in the Docs editor. # The text style of this ColumnBreak. Similar to text content, like text runs and footnote references, the text style of a column break can affect content layout as well as the styling of text inserted adjacent to it.
                      &quot;italic&quot;: True or False, # Whether or not the text is italicized.
                      &quot;baselineOffset&quot;: &quot;A String&quot;, # The text&#x27;s vertical offset from its normal position. Text with `SUPERSCRIPT` or `SUBSCRIPT` baseline offsets is automatically rendered in a smaller font size, computed based on the `font_size` field. The `font_size` itself is not affected by changes in this field.
                      &quot;bold&quot;: True or False, # Whether or not the text is rendered as bold.
                      &quot;fontSize&quot;: { # A magnitude in a single direction in the specified units. # The size of the text&#x27;s font.
                        &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                        &quot;magnitude&quot;: 3.14, # The magnitude.
                      },
                      &quot;foregroundColor&quot;: { # A color that can either be fully opaque or fully transparent. # The foreground color of the text. If set, the color is either an RGB color or transparent, depending on the `color` field.
                        &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                          &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                            &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                            &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                            &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                          },
                        },
                      },
                      &quot;backgroundColor&quot;: { # A color that can either be fully opaque or fully transparent. # The background color of the text. If set, the color is either an RGB color or transparent, depending on the `color` field.
                        &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                          &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                            &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                            &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                            &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                          },
                        },
                      },
                      &quot;link&quot;: { # A reference to another portion of a document or an external URL resource. # The hyperlink destination of the text. If unset, there is no link. Links are not inherited from parent text. Changing the link in an update request causes some other changes to the text style of the range: * When setting a link, the text foreground color will be updated to the default link color and the text will be underlined. If these fields are modified in the same request, those values will be used instead of the link defaults. * Setting a link on a text range that overlaps with an existing link will also update the existing link to point to the new URL. * Links are not settable on newline characters. As a result, setting a link on a text range that crosses a paragraph boundary, such as `&quot;ABC\n123&quot;`, will separate the newline character(s) into their own text runs. The link will be applied separately to the runs before and after the newline. * Removing a link will update the text style of the range to match the style of the preceding text (or the default text styles if the preceding text is another link) unless different styles are being set in the same request.
                        &quot;bookmarkId&quot;: &quot;A String&quot;, # The ID of a bookmark in this document.
                        &quot;url&quot;: &quot;A String&quot;, # An external URL.
                        &quot;headingId&quot;: &quot;A String&quot;, # The ID of a heading in this document.
                      },
                      &quot;strikethrough&quot;: True or False, # Whether or not the text is struck through.
                      &quot;weightedFontFamily&quot;: { # Represents a font family and weight of text. # The font family and rendered weight of the text. If an update request specifies values for both `weighted_font_family` and `bold`, the `weighted_font_family` is applied first, then `bold`. If `weighted_font_family#weight` is not set, it defaults to `400`. If `weighted_font_family` is set, then `weighted_font_family#font_family` must also be set with a non-empty value. Otherwise, a 400 bad request error is returned.
                        &quot;fontFamily&quot;: &quot;A String&quot;, # The font family of the text. The font family can be any font from the Font menu in Docs or from [Google Fonts] (https://fonts.google.com/). If the font name is unrecognized, the text is rendered in `Arial`.
                        &quot;weight&quot;: 42, # The weight of the font. This field can have any value that is a multiple of `100` between `100` and `900`, inclusive. This range corresponds to the numerical values described in the CSS 2.1 Specification, [section 15.6](https://www.w3.org/TR/CSS21/fonts.html#font-boldness), with non-numerical values disallowed. The default value is `400` (&quot;normal&quot;). The font weight makes up just one component of the rendered font weight. The rendered weight is determined by a combination of the `weight` and the text style&#x27;s resolved `bold` value, after accounting for inheritance: * If the text is bold and the weight is less than `400`, the rendered weight is 400. * If the text is bold and the weight is greater than or equal to `400` but is less than `700`, the rendered weight is `700`. * If the weight is greater than or equal to `700`, the rendered weight is equal to the weight. * If the text is not bold, the rendered weight is equal to the weight.
                      },
                      &quot;underline&quot;: True or False, # Whether or not the text is underlined.
                      &quot;smallCaps&quot;: True or False, # Whether or not the text is in small capital letters.
                    },
                    &quot;suggestedInsertionIds&quot;: [ # The suggested insertion IDs. A ColumnBreak may have multiple insertion IDs if it is a nested suggested change. If empty, then this is not a suggested insertion.
                      &quot;A String&quot;,
                    ],
                  },
                },
              ],
              &quot;positionedObjectIds&quot;: [ # The IDs of the positioned objects tethered to this paragraph.
                &quot;A String&quot;,
              ],
              &quot;paragraphStyle&quot;: { # Styles that apply to a whole paragraph. Inherited paragraph styles are represented as unset fields in this message. A paragraph style&#x27;s parent depends on where the paragraph style is defined: * The ParagraphStyle on a Paragraph inherits from the paragraph&#x27;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 is 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. # The style of this paragraph.
                &quot;borderRight&quot;: { # A border around a paragraph. # The border to the right of this paragraph. If unset, the value is inherited from the parent. Paragraph borders cannot be partially updated. When making changes to a paragraph border the new border must be specified in its entirety.
                  &quot;color&quot;: { # A color that can either be fully opaque or fully transparent. # The color of the border.
                    &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                      &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                        &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                        &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                        &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                      },
                    },
                  },
                  &quot;width&quot;: { # A magnitude in a single direction in the specified units. # The width of the border.
                    &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                    &quot;magnitude&quot;: 3.14, # The magnitude.
                  },
                  &quot;padding&quot;: { # A magnitude in a single direction in the specified units. # The padding of the border.
                    &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                    &quot;magnitude&quot;: 3.14, # The magnitude.
                  },
                  &quot;dashStyle&quot;: &quot;A String&quot;, # The dash style of the border.
                },
                &quot;indentFirstLine&quot;: { # A magnitude in a single direction in the specified units. # The amount of indentation for the first line of the paragraph. If unset, the value is inherited from the parent.
                  &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                  &quot;magnitude&quot;: 3.14, # The magnitude.
                },
                &quot;alignment&quot;: &quot;A String&quot;, # The text alignment for this paragraph.
                &quot;lineSpacing&quot;: 3.14, # The amount of space between lines, as a percentage of normal, where normal is represented as 100.0. If unset, the value is inherited from the parent.
                &quot;keepLinesTogether&quot;: True or False, # Whether all lines of the paragraph should be laid out on the same page or column if possible. If unset, the value is inherited from the parent.
                &quot;avoidWidowAndOrphan&quot;: True or False, # Whether to avoid widows and orphans for the paragraph. If unset, the value is inherited from the parent.
                &quot;spaceBelow&quot;: { # A magnitude in a single direction in the specified units. # The amount of extra space below the paragraph. If unset, the value is inherited from the parent.
                  &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                  &quot;magnitude&quot;: 3.14, # The magnitude.
                },
                &quot;borderBetween&quot;: { # A border around a paragraph. # 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 making changes to a paragraph border the new border must be specified in its entirety.
                  &quot;color&quot;: { # A color that can either be fully opaque or fully transparent. # The color of the border.
                    &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                      &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                        &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                        &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                        &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                      },
                    },
                  },
                  &quot;width&quot;: { # A magnitude in a single direction in the specified units. # The width of the border.
                    &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                    &quot;magnitude&quot;: 3.14, # The magnitude.
                  },
                  &quot;padding&quot;: { # A magnitude in a single direction in the specified units. # The padding of the border.
                    &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                    &quot;magnitude&quot;: 3.14, # The magnitude.
                  },
                  &quot;dashStyle&quot;: &quot;A String&quot;, # The dash style of the border.
                },
                &quot;headingId&quot;: &quot;A String&quot;, # The heading ID of the paragraph. If empty, then this paragraph is not a heading. This property is read-only.
                &quot;spaceAbove&quot;: { # A magnitude in a single direction in the specified units. # The amount of extra space above the paragraph. If unset, the value is inherited from the parent.
                  &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                  &quot;magnitude&quot;: 3.14, # The magnitude.
                },
                &quot;direction&quot;: &quot;A String&quot;, # The text direction of this paragraph. If unset, the value defaults to LEFT_TO_RIGHT since paragraph direction is not inherited.
                &quot;namedStyleType&quot;: &quot;A String&quot;, # The named style type of the paragraph. Since updating the named style type affects other properties within ParagraphStyle, the named style type is applied before the other properties are updated.
                &quot;tabStops&quot;: [ # A list of the tab stops for this paragraph. The list of tab stops is not inherited. This property is read-only.
                  { # A tab stop within a paragraph.
                    &quot;offset&quot;: { # A magnitude in a single direction in the specified units. # The offset between this tab stop and the start margin.
                      &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                      &quot;magnitude&quot;: 3.14, # The magnitude.
                    },
                    &quot;alignment&quot;: &quot;A String&quot;, # The alignment of this tab stop. If unset, the value defaults to START.
                  },
                ],
                &quot;indentStart&quot;: { # A magnitude in a single direction in the specified units. # The amount of indentation for the paragraph on the side that corresponds to the start of the text, based on the current paragraph direction. If unset, the value is inherited from the parent.
                  &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                  &quot;magnitude&quot;: 3.14, # The magnitude.
                },
                &quot;keepWithNext&quot;: True or False, # Whether at least a part of this paragraph should be laid out on the same page or column as the next paragraph if possible. If unset, the value is inherited from the parent.
                &quot;borderTop&quot;: { # A border around a paragraph. # 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 making changes to a paragraph border the new border must be specified in its entirety.
                  &quot;color&quot;: { # A color that can either be fully opaque or fully transparent. # The color of the border.
                    &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                      &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                        &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                        &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                        &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                      },
                    },
                  },
                  &quot;width&quot;: { # A magnitude in a single direction in the specified units. # The width of the border.
                    &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                    &quot;magnitude&quot;: 3.14, # The magnitude.
                  },
                  &quot;padding&quot;: { # A magnitude in a single direction in the specified units. # The padding of the border.
                    &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                    &quot;magnitude&quot;: 3.14, # The magnitude.
                  },
                  &quot;dashStyle&quot;: &quot;A String&quot;, # The dash style of the border.
                },
                &quot;borderLeft&quot;: { # A border around a paragraph. # The border to the left of this paragraph. If unset, the value is inherited from the parent. Paragraph borders cannot be partially updated. When making changes to a paragraph border the new border must be specified in its entirety.
                  &quot;color&quot;: { # A color that can either be fully opaque or fully transparent. # The color of the border.
                    &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                      &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                        &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                        &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                        &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                      },
                    },
                  },
                  &quot;width&quot;: { # A magnitude in a single direction in the specified units. # The width of the border.
                    &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                    &quot;magnitude&quot;: 3.14, # The magnitude.
                  },
                  &quot;padding&quot;: { # A magnitude in a single direction in the specified units. # The padding of the border.
                    &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                    &quot;magnitude&quot;: 3.14, # The magnitude.
                  },
                  &quot;dashStyle&quot;: &quot;A String&quot;, # The dash style of the border.
                },
                &quot;borderBottom&quot;: { # A border around a paragraph. # 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 making changes to a paragraph border the new border must be specified in its entirety.
                  &quot;color&quot;: { # A color that can either be fully opaque or fully transparent. # The color of the border.
                    &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                      &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                        &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                        &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                        &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                      },
                    },
                  },
                  &quot;width&quot;: { # A magnitude in a single direction in the specified units. # The width of the border.
                    &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                    &quot;magnitude&quot;: 3.14, # The magnitude.
                  },
                  &quot;padding&quot;: { # A magnitude in a single direction in the specified units. # The padding of the border.
                    &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                    &quot;magnitude&quot;: 3.14, # The magnitude.
                  },
                  &quot;dashStyle&quot;: &quot;A String&quot;, # The dash style of the border.
                },
                &quot;shading&quot;: { # The shading of a paragraph. # The shading of the paragraph. If unset, the value is inherited from the parent.
                  &quot;backgroundColor&quot;: { # A color that can either be fully opaque or fully transparent. # The background color of this paragraph shading.
                    &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                      &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                        &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                        &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                        &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                      },
                    },
                  },
                },
                &quot;indentEnd&quot;: { # A magnitude in a single direction in the specified units. # 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.
                  &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                  &quot;magnitude&quot;: 3.14, # The magnitude.
                },
                &quot;spacingMode&quot;: &quot;A String&quot;, # The spacing mode for the paragraph.
              },
            },
            &quot;startIndex&quot;: 42, # The zero-based start index of this structural element, in UTF-16 code units.
            &quot;endIndex&quot;: 42, # The zero-based end index of this structural element, exclusive, in UTF-16 code units.
            &quot;tableOfContents&quot;: { # A StructuralElement representing a table of contents. # A table of contents type of structural element.
              &quot;suggestedInsertionIds&quot;: [ # The suggested insertion IDs. A TableOfContents may have multiple insertion IDs if it is a nested suggested change. If empty, then this is not a suggested insertion.
                &quot;A String&quot;,
              ],
              &quot;content&quot;: [ # The content of the table of contents.
                # Object with schema name: StructuralElement
              ],
              &quot;suggestedDeletionIds&quot;: [ # The suggested deletion IDs. If empty, then there are no suggested deletions of this content.
                &quot;A String&quot;,
              ],
            },
            &quot;table&quot;: { # A StructuralElement representing a table. # A table type of structural element.
              &quot;tableStyle&quot;: { # Styles that apply to a table. # The style of the table.
                &quot;tableColumnProperties&quot;: [ # The properties of each column. Note that in Docs, tables contain rows and rows contain cells, similar to HTML. So the properties for a row can be found on the row&#x27;s table_row_style.
                  { # The properties of a column in a table.
                    &quot;widthType&quot;: &quot;A String&quot;, # The width type of the column.
                    &quot;width&quot;: { # A magnitude in a single direction in the specified units. # The width of the column. Set when the column&#x27;s `width_type` is FIXED_WIDTH.
                      &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                      &quot;magnitude&quot;: 3.14, # The magnitude.
                    },
                  },
                ],
              },
              &quot;suggestedInsertionIds&quot;: [ # The suggested insertion IDs. A Table may have multiple insertion IDs if it is a nested suggested change. If empty, then this is not a suggested insertion.
                &quot;A String&quot;,
              ],
              &quot;tableRows&quot;: [ # The contents and style of each row.
                { # The contents and style of a row in a Table.
                  &quot;suggestedDeletionIds&quot;: [ # The suggested deletion IDs. If empty, then there are no suggested deletions of this content.
                    &quot;A String&quot;,
                  ],
                  &quot;suggestedInsertionIds&quot;: [ # The suggested insertion IDs. A TableRow may have multiple insertion IDs if it is a nested suggested change. If empty, then this is not a suggested insertion.
                    &quot;A String&quot;,
                  ],
                  &quot;suggestedTableRowStyleChanges&quot;: { # The suggested style changes to this row, keyed by suggestion ID.
                    &quot;a_key&quot;: { # A suggested change to a TableRowStyle.
                      &quot;tableRowStyleSuggestionState&quot;: { # A mask that indicates which of the fields on the base TableRowStyle have been changed in this suggestion. For any field set to true, there is a new suggested value. # A mask that indicates which of the fields on the base TableRowStyle have been changed in this suggestion.
                        &quot;minRowHeightSuggested&quot;: True or False, # Indicates if there was a suggested change to min_row_height.
                      },
                      &quot;tableRowStyle&quot;: { # Styles that apply to a table row. # A TableRowStyle that only includes the changes made in this suggestion. This can be used along with the table_row_style_suggestion_state to see which fields have changed and their new values.
                        &quot;minRowHeight&quot;: { # A magnitude in a single direction in the specified units. # The minimum height of the row. The row will be rendered in the Docs editor at a height equal to or greater than this value in order to show all the content in the row&#x27;s cells.
                          &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                          &quot;magnitude&quot;: 3.14, # The magnitude.
                        },
                      },
                    },
                  },
                  &quot;startIndex&quot;: 42, # The zero-based start index of this row, in UTF-16 code units.
                  &quot;tableCells&quot;: [ # The contents and style of each cell in this row. It is possible for a table to be non-rectangular, so some rows may have a different number of cells than other rows in the same table.
                    { # The contents and style of a cell in a Table.
                      &quot;tableCellStyle&quot;: { # The style of a TableCell. Inherited table cell styles are represented as unset fields in this message. A table cell style can inherit from the table&#x27;s style. # The style of the cell.
                        &quot;borderTop&quot;: { # A border around a table cell. Table cell borders cannot be transparent. To hide a table cell border, make its width 0. # The top border of the cell.
                          &quot;width&quot;: { # A magnitude in a single direction in the specified units. # The width of the border.
                            &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                            &quot;magnitude&quot;: 3.14, # The magnitude.
                          },
                          &quot;dashStyle&quot;: &quot;A String&quot;, # The dash style of the border.
                          &quot;color&quot;: { # A color that can either be fully opaque or fully transparent. # The color of the border. This color cannot be transparent.
                            &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                              &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                                &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                                &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                                &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                              },
                            },
                          },
                        },
                        &quot;borderBottom&quot;: { # A border around a table cell. Table cell borders cannot be transparent. To hide a table cell border, make its width 0. # The bottom border of the cell.
                          &quot;width&quot;: { # A magnitude in a single direction in the specified units. # The width of the border.
                            &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                            &quot;magnitude&quot;: 3.14, # The magnitude.
                          },
                          &quot;dashStyle&quot;: &quot;A String&quot;, # The dash style of the border.
                          &quot;color&quot;: { # A color that can either be fully opaque or fully transparent. # The color of the border. This color cannot be transparent.
                            &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                              &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                                &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                                &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                                &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                              },
                            },
                          },
                        },
                        &quot;contentAlignment&quot;: &quot;A String&quot;, # The alignment of the content in the table cell. The default alignment matches the alignment for newly created table cells in the Docs editor.
                        &quot;paddingLeft&quot;: { # A magnitude in a single direction in the specified units. # The left padding of the cell.
                          &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                          &quot;magnitude&quot;: 3.14, # The magnitude.
                        },
                        &quot;backgroundColor&quot;: { # A color that can either be fully opaque or fully transparent. # The background color of the cell.
                          &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                            &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                              &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                              &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                              &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                            },
                          },
                        },
                        &quot;paddingTop&quot;: { # A magnitude in a single direction in the specified units. # The top padding of the cell.
                          &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                          &quot;magnitude&quot;: 3.14, # The magnitude.
                        },
                        &quot;rowSpan&quot;: 42, # The row span of the cell. This property is read-only.
                        &quot;paddingRight&quot;: { # A magnitude in a single direction in the specified units. # The right padding of the cell.
                          &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                          &quot;magnitude&quot;: 3.14, # The magnitude.
                        },
                        &quot;borderRight&quot;: { # A border around a table cell. Table cell borders cannot be transparent. To hide a table cell border, make its width 0. # The right border of the cell.
                          &quot;width&quot;: { # A magnitude in a single direction in the specified units. # The width of the border.
                            &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                            &quot;magnitude&quot;: 3.14, # The magnitude.
                          },
                          &quot;dashStyle&quot;: &quot;A String&quot;, # The dash style of the border.
                          &quot;color&quot;: { # A color that can either be fully opaque or fully transparent. # The color of the border. This color cannot be transparent.
                            &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                              &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                                &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                                &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                                &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                              },
                            },
                          },
                        },
                        &quot;borderLeft&quot;: { # A border around a table cell. Table cell borders cannot be transparent. To hide a table cell border, make its width 0. # The left border of the cell.
                          &quot;width&quot;: { # A magnitude in a single direction in the specified units. # The width of the border.
                            &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                            &quot;magnitude&quot;: 3.14, # The magnitude.
                          },
                          &quot;dashStyle&quot;: &quot;A String&quot;, # The dash style of the border.
                          &quot;color&quot;: { # A color that can either be fully opaque or fully transparent. # The color of the border. This color cannot be transparent.
                            &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                              &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                                &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                                &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                                &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                              },
                            },
                          },
                        },
                        &quot;columnSpan&quot;: 42, # The column span of the cell. This property is read-only.
                        &quot;paddingBottom&quot;: { # A magnitude in a single direction in the specified units. # The bottom padding of the cell.
                          &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                          &quot;magnitude&quot;: 3.14, # The magnitude.
                        },
                      },
                      &quot;content&quot;: [ # The content of the cell.
                        # Object with schema name: StructuralElement
                      ],
                      &quot;suggestedDeletionIds&quot;: [ # The suggested deletion IDs. If empty, then there are no suggested deletions of this content.
                        &quot;A String&quot;,
                      ],
                      &quot;startIndex&quot;: 42, # The zero-based start index of this cell, in UTF-16 code units.
                      &quot;suggestedInsertionIds&quot;: [ # The suggested insertion IDs. A TableCell may have multiple insertion IDs if it is a nested suggested change. If empty, then this is not a suggested insertion.
                        &quot;A String&quot;,
                      ],
                      &quot;suggestedTableCellStyleChanges&quot;: { # The suggested changes to the table cell style, keyed by suggestion ID.
                        &quot;a_key&quot;: { # A suggested change to a TableCellStyle.
                          &quot;tableCellStyle&quot;: { # The style of a TableCell. Inherited table cell styles are represented as unset fields in this message. A table cell style can inherit from the table&#x27;s style. # A TableCellStyle that only includes the changes made in this suggestion. This can be used along with the table_cell_style_suggestion_state to see which fields have changed and their new values.
                            &quot;borderTop&quot;: { # A border around a table cell. Table cell borders cannot be transparent. To hide a table cell border, make its width 0. # The top border of the cell.
                              &quot;width&quot;: { # A magnitude in a single direction in the specified units. # The width of the border.
                                &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                                &quot;magnitude&quot;: 3.14, # The magnitude.
                              },
                              &quot;dashStyle&quot;: &quot;A String&quot;, # The dash style of the border.
                              &quot;color&quot;: { # A color that can either be fully opaque or fully transparent. # The color of the border. This color cannot be transparent.
                                &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                                  &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                                    &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                                    &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                                    &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                                  },
                                },
                              },
                            },
                            &quot;borderBottom&quot;: { # A border around a table cell. Table cell borders cannot be transparent. To hide a table cell border, make its width 0. # The bottom border of the cell.
                              &quot;width&quot;: { # A magnitude in a single direction in the specified units. # The width of the border.
                                &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                                &quot;magnitude&quot;: 3.14, # The magnitude.
                              },
                              &quot;dashStyle&quot;: &quot;A String&quot;, # The dash style of the border.
                              &quot;color&quot;: { # A color that can either be fully opaque or fully transparent. # The color of the border. This color cannot be transparent.
                                &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                                  &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                                    &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                                    &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                                    &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                                  },
                                },
                              },
                            },
                            &quot;contentAlignment&quot;: &quot;A String&quot;, # The alignment of the content in the table cell. The default alignment matches the alignment for newly created table cells in the Docs editor.
                            &quot;paddingLeft&quot;: { # A magnitude in a single direction in the specified units. # The left padding of the cell.
                              &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                              &quot;magnitude&quot;: 3.14, # The magnitude.
                            },
                            &quot;backgroundColor&quot;: { # A color that can either be fully opaque or fully transparent. # The background color of the cell.
                              &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                                &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                                  &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                                  &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                                  &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                                },
                              },
                            },
                            &quot;paddingTop&quot;: { # A magnitude in a single direction in the specified units. # The top padding of the cell.
                              &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                              &quot;magnitude&quot;: 3.14, # The magnitude.
                            },
                            &quot;rowSpan&quot;: 42, # The row span of the cell. This property is read-only.
                            &quot;paddingRight&quot;: { # A magnitude in a single direction in the specified units. # The right padding of the cell.
                              &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                              &quot;magnitude&quot;: 3.14, # The magnitude.
                            },
                            &quot;borderRight&quot;: { # A border around a table cell. Table cell borders cannot be transparent. To hide a table cell border, make its width 0. # The right border of the cell.
                              &quot;width&quot;: { # A magnitude in a single direction in the specified units. # The width of the border.
                                &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                                &quot;magnitude&quot;: 3.14, # The magnitude.
                              },
                              &quot;dashStyle&quot;: &quot;A String&quot;, # The dash style of the border.
                              &quot;color&quot;: { # A color that can either be fully opaque or fully transparent. # The color of the border. This color cannot be transparent.
                                &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                                  &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                                    &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                                    &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                                    &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                                  },
                                },
                              },
                            },
                            &quot;borderLeft&quot;: { # A border around a table cell. Table cell borders cannot be transparent. To hide a table cell border, make its width 0. # The left border of the cell.
                              &quot;width&quot;: { # A magnitude in a single direction in the specified units. # The width of the border.
                                &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                                &quot;magnitude&quot;: 3.14, # The magnitude.
                              },
                              &quot;dashStyle&quot;: &quot;A String&quot;, # The dash style of the border.
                              &quot;color&quot;: { # A color that can either be fully opaque or fully transparent. # The color of the border. This color cannot be transparent.
                                &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                                  &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                                    &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                                    &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                                    &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                                  },
                                },
                              },
                            },
                            &quot;columnSpan&quot;: 42, # The column span of the cell. This property is read-only.
                            &quot;paddingBottom&quot;: { # A magnitude in a single direction in the specified units. # The bottom padding of the cell.
                              &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                              &quot;magnitude&quot;: 3.14, # The magnitude.
                            },
                          },
                          &quot;tableCellStyleSuggestionState&quot;: { # A mask that indicates which of the fields on the base TableCellStyle have been changed in this suggestion. For any field set to true, there is a new suggested value. # A mask that indicates which of the fields on the base TableCellStyle have been changed in this suggestion.
                            &quot;rowSpanSuggested&quot;: True or False, # Indicates if there was a suggested change to row_span.
                            &quot;columnSpanSuggested&quot;: True or False, # Indicates if there was a suggested change to column_span.
                            &quot;borderBottomSuggested&quot;: True or False, # Indicates if there was a suggested change to border_bottom.
                            &quot;borderLeftSuggested&quot;: True or False, # Indicates if there was a suggested change to border_left.
                            &quot;paddingLeftSuggested&quot;: True or False, # Indicates if there was a suggested change to padding_left.
                            &quot;paddingRightSuggested&quot;: True or False, # Indicates if there was a suggested change to padding_right.
                            &quot;paddingBottomSuggested&quot;: True or False, # Indicates if there was a suggested change to padding_bottom.
                            &quot;paddingTopSuggested&quot;: True or False, # Indicates if there was a suggested change to padding_top.
                            &quot;contentAlignmentSuggested&quot;: True or False, # Indicates if there was a suggested change to content_alignment.
                            &quot;borderRightSuggested&quot;: True or False, # Indicates if there was a suggested change to border_right.
                            &quot;backgroundColorSuggested&quot;: True or False, # Indicates if there was a suggested change to background_color.
                            &quot;borderTopSuggested&quot;: True or False, # Indicates if there was a suggested change to border_top.
                          },
                        },
                      },
                      &quot;endIndex&quot;: 42, # The zero-based end index of this cell, exclusive, in UTF-16 code units.
                    },
                  ],
                  &quot;endIndex&quot;: 42, # The zero-based end index of this row, exclusive, in UTF-16 code units.
                  &quot;tableRowStyle&quot;: { # Styles that apply to a table row. # The style of the table row.
                    &quot;minRowHeight&quot;: { # A magnitude in a single direction in the specified units. # The minimum height of the row. The row will be rendered in the Docs editor at a height equal to or greater than this value in order to show all the content in the row&#x27;s cells.
                      &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                      &quot;magnitude&quot;: 3.14, # The magnitude.
                    },
                  },
                },
              ],
              &quot;suggestedDeletionIds&quot;: [ # The suggested deletion IDs. If empty, then there are no suggested deletions of this content.
                &quot;A String&quot;,
              ],
              &quot;rows&quot;: 42, # Number of rows in the table.
              &quot;columns&quot;: 42, # Number of columns in the table. It is possible for a table to be non-rectangular, so some rows may have a different number of cells.
            },
            &quot;sectionBreak&quot;: { # A StructuralElement representing a section break. A section is a range of content which has the same SectionStyle. A section break represents the start of a new section, and the section style applies to the section after the section break. The document body always begins with a section break. # A section break type of structural element.
              &quot;suggestedInsertionIds&quot;: [ # The suggested insertion IDs. A SectionBreak may have multiple insertion IDs if it is a nested suggested change. If empty, then this is not a suggested insertion.
                &quot;A String&quot;,
              ],
              &quot;sectionStyle&quot;: { # The styling that applies to a section. # The style of the section after this section break.
                &quot;marginLeft&quot;: { # A magnitude in a single direction in the specified units. # The left page margin of the section. If unset, uses margin_left from DocumentStyle. Updating left margin causes columns in this section to resize. Since the margin affects column width, it is applied before column properties. When updating this property, setting a concrete value is required. Unsetting this property results in a 400 bad request error.
                  &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                  &quot;magnitude&quot;: 3.14, # The magnitude.
                },
                &quot;sectionType&quot;: &quot;A String&quot;, # Output only. The type of section.
                &quot;evenPageHeaderId&quot;: &quot;A String&quot;, # The ID of the header used only for even pages. If the value of DocumentStyle&#x27;s use_even_page_header_footer is true, this value is used for the headers on even pages in the section. If it is false, the headers on even pages uses the default_header_id. If unset, the value inherits from the previous SectionBreak&#x27;s SectionStyle. If the value is unset in the first SectionBreak, it inherits from DocumentStyle&#x27;s even_page_header_id. This property is read-only.
                &quot;useFirstPageHeaderFooter&quot;: True or False, # Indicates whether to use the first page header / footer IDs for the first page of the section. If unset, it inherits from DocumentStyle&#x27;s use_first_page_header_footer for the first section. If the value is unset for subsequent sectors, it should be interpreted as false. When updating this property, setting a concrete value is required. Unsetting this property results in a 400 bad request error.
                &quot;marginHeader&quot;: { # A magnitude in a single direction in the specified units. # The header margin of the section. If unset, uses margin_header from DocumentStyle. If updated, use_custom_header_footer_margins is set to true on DocumentStyle. The value of use_custom_header_footer_margins on DocumentStyle indicates if a header margin is being respected for this section. When updating this property, setting a concrete value is required. Unsetting this property results in a 400 bad request error.
                  &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                  &quot;magnitude&quot;: 3.14, # The magnitude.
                },
                &quot;firstPageFooterId&quot;: &quot;A String&quot;, # The ID of the footer used only for the first page of the section. If use_first_page_header_footer is true, this value is used for the footer on the first page of the section. If it is false, the footer on the first page of the section uses the default_footer_id. If unset, the value inherits from the previous SectionBreak&#x27;s SectionStyle. If the value is unset in the first SectionBreak, it inherits from DocumentStyle&#x27;s first_page_footer_id. This property is read-only.
                &quot;firstPageHeaderId&quot;: &quot;A String&quot;, # The ID of the header used only for the first page of the section. If use_first_page_header_footer is true, this value is used for the header on the first page of the section. If it is false, the header on the first page of the section uses the default_header_id. If unset, the value inherits from the previous SectionBreak&#x27;s SectionStyle. If the value is unset in the first SectionBreak, it inherits from DocumentStyle&#x27;s first_page_header_id. This property is read-only.
                &quot;columnSeparatorStyle&quot;: &quot;A String&quot;, # The style of column separators. This style can be set even when there is one column in the section. When updating this property, setting a concrete value is required. Unsetting this property results in a 400 bad request error.
                &quot;marginBottom&quot;: { # A magnitude in a single direction in the specified units. # The bottom page margin of the section. If unset, uses margin_bottom from DocumentStyle. When updating this property, setting a concrete value is required. Unsetting this property results in a 400 bad request error.
                  &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                  &quot;magnitude&quot;: 3.14, # The magnitude.
                },
                &quot;marginFooter&quot;: { # A magnitude in a single direction in the specified units. # The footer margin of the section. If unset, uses margin_footer from DocumentStyle. If updated, use_custom_header_footer_margins is set to true on DocumentStyle. The value of use_custom_header_footer_margins on DocumentStyle indicates if a footer margin is being respected for this section When updating this property, setting a concrete value is required. Unsetting this property results in a 400 bad request error.
                  &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                  &quot;magnitude&quot;: 3.14, # The magnitude.
                },
                &quot;defaultFooterId&quot;: &quot;A String&quot;, # The ID of the default footer. If unset, the value inherits from the previous SectionBreak&#x27;s SectionStyle. If the value is unset in the first SectionBreak, it inherits from DocumentStyle&#x27;s default_footer_id. This property is read-only.
                &quot;marginTop&quot;: { # A magnitude in a single direction in the specified units. # The top page margin of the section. If unset, uses margin_top from DocumentStyle. When updating this property, setting a concrete value is required. Unsetting this property results in a 400 bad request error.
                  &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                  &quot;magnitude&quot;: 3.14, # The magnitude.
                },
                &quot;contentDirection&quot;: &quot;A String&quot;, # The content direction of this section. If unset, the value defaults to LEFT_TO_RIGHT. When updating this property, setting a concrete value is required. Unsetting this property results in a 400 bad request error.
                &quot;evenPageFooterId&quot;: &quot;A String&quot;, # The ID of the footer used only for even pages. If the value of DocumentStyle&#x27;s use_even_page_header_footer is true, this value is used for the footers on even pages in the section. If it is false, the footers on even pages uses the default_footer_id. If unset, the value inherits from the previous SectionBreak&#x27;s SectionStyle. If the value is unset in the first SectionBreak, it inherits from DocumentStyle&#x27;s even_page_footer_id. This property is read-only.
                &quot;marginRight&quot;: { # A magnitude in a single direction in the specified units. # The right page margin of the section. If unset, uses margin_right from DocumentStyle. Updating right margin causes columns in this section to resize. Since the margin affects column width, it is applied before column properties. When updating this property, setting a concrete value is required. Unsetting this property results in a 400 bad request error.
                  &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                  &quot;magnitude&quot;: 3.14, # The magnitude.
                },
                &quot;defaultHeaderId&quot;: &quot;A String&quot;, # The ID of the default header. If unset, the value inherits from the previous SectionBreak&#x27;s SectionStyle. If the value is unset in the first SectionBreak, it inherits from DocumentStyle&#x27;s default_header_id. This property is read-only.
                &quot;pageNumberStart&quot;: 42, # The page number from which to start counting the number of pages for this section. If unset, page numbering continues from the previous section. If the value is unset in the first SectionBreak, refer to DocumentStyle&#x27;s page_number_start. When updating this property, setting a concrete value is required. Unsetting this property results in a 400 bad request error.
                &quot;columnProperties&quot;: [ # The section&#x27;s columns properties. If empty, the section contains one column with the default properties in the Docs editor. A section can be updated to have no more than three columns. When updating this property, setting a concrete value is required. Unsetting this property will result in a 400 bad request error.
                  { # Properties that apply to a section&#x27;s column.
                    &quot;paddingEnd&quot;: { # A magnitude in a single direction in the specified units. # The padding at the end of the column.
                      &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                      &quot;magnitude&quot;: 3.14, # The magnitude.
                    },
                    &quot;width&quot;: { # A magnitude in a single direction in the specified units. # Output only. The width of the column.
                      &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                      &quot;magnitude&quot;: 3.14, # The magnitude.
                    },
                  },
                ],
              },
              &quot;suggestedDeletionIds&quot;: [ # The suggested deletion IDs. If empty, then there are no suggested deletions of this content.
                &quot;A String&quot;,
              ],
            },
          },
        ],
        &quot;footnoteId&quot;: &quot;A String&quot;, # The ID of the footnote.
      },
    },
    &quot;headers&quot;: { # Output only. The headers in the document, keyed by header ID.
      &quot;a_key&quot;: { # A document header.
        &quot;content&quot;: [ # The contents of the header. The indexes for a header&#x27;s content begin at zero.
          { # A StructuralElement describes content that provides structure to the document.
            &quot;paragraph&quot;: { # A StructuralElement representing a paragraph. A paragraph is a range of content that is terminated with a newline character. # A paragraph type of structural element.
              &quot;suggestedParagraphStyleChanges&quot;: { # The suggested paragraph style changes to this paragraph, keyed by suggestion ID.
                &quot;a_key&quot;: { # A suggested change to a ParagraphStyle.
                  &quot;paragraphStyle&quot;: { # Styles that apply to a whole paragraph. Inherited paragraph styles are represented as unset fields in this message. A paragraph style&#x27;s parent depends on where the paragraph style is defined: * The ParagraphStyle on a Paragraph inherits from the paragraph&#x27;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 is 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. # A ParagraphStyle that only includes the changes made in this suggestion. This can be used along with the paragraph_suggestion_state to see which fields have changed and their new values.
                    &quot;borderRight&quot;: { # A border around a paragraph. # The border to the right of this paragraph. If unset, the value is inherited from the parent. Paragraph borders cannot be partially updated. When making changes to a paragraph border the new border must be specified in its entirety.
                      &quot;color&quot;: { # A color that can either be fully opaque or fully transparent. # The color of the border.
                        &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                          &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                            &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                            &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                            &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                          },
                        },
                      },
                      &quot;width&quot;: { # A magnitude in a single direction in the specified units. # The width of the border.
                        &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                        &quot;magnitude&quot;: 3.14, # The magnitude.
                      },
                      &quot;padding&quot;: { # A magnitude in a single direction in the specified units. # The padding of the border.
                        &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                        &quot;magnitude&quot;: 3.14, # The magnitude.
                      },
                      &quot;dashStyle&quot;: &quot;A String&quot;, # The dash style of the border.
                    },
                    &quot;indentFirstLine&quot;: { # A magnitude in a single direction in the specified units. # The amount of indentation for the first line of the paragraph. If unset, the value is inherited from the parent.
                      &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                      &quot;magnitude&quot;: 3.14, # The magnitude.
                    },
                    &quot;alignment&quot;: &quot;A String&quot;, # The text alignment for this paragraph.
                    &quot;lineSpacing&quot;: 3.14, # The amount of space between lines, as a percentage of normal, where normal is represented as 100.0. If unset, the value is inherited from the parent.
                    &quot;keepLinesTogether&quot;: True or False, # Whether all lines of the paragraph should be laid out on the same page or column if possible. If unset, the value is inherited from the parent.
                    &quot;avoidWidowAndOrphan&quot;: True or False, # Whether to avoid widows and orphans for the paragraph. If unset, the value is inherited from the parent.
                    &quot;spaceBelow&quot;: { # A magnitude in a single direction in the specified units. # The amount of extra space below the paragraph. If unset, the value is inherited from the parent.
                      &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                      &quot;magnitude&quot;: 3.14, # The magnitude.
                    },
                    &quot;borderBetween&quot;: { # A border around a paragraph. # 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 making changes to a paragraph border the new border must be specified in its entirety.
                      &quot;color&quot;: { # A color that can either be fully opaque or fully transparent. # The color of the border.
                        &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                          &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                            &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                            &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                            &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                          },
                        },
                      },
                      &quot;width&quot;: { # A magnitude in a single direction in the specified units. # The width of the border.
                        &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                        &quot;magnitude&quot;: 3.14, # The magnitude.
                      },
                      &quot;padding&quot;: { # A magnitude in a single direction in the specified units. # The padding of the border.
                        &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                        &quot;magnitude&quot;: 3.14, # The magnitude.
                      },
                      &quot;dashStyle&quot;: &quot;A String&quot;, # The dash style of the border.
                    },
                    &quot;headingId&quot;: &quot;A String&quot;, # The heading ID of the paragraph. If empty, then this paragraph is not a heading. This property is read-only.
                    &quot;spaceAbove&quot;: { # A magnitude in a single direction in the specified units. # The amount of extra space above the paragraph. If unset, the value is inherited from the parent.
                      &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                      &quot;magnitude&quot;: 3.14, # The magnitude.
                    },
                    &quot;direction&quot;: &quot;A String&quot;, # The text direction of this paragraph. If unset, the value defaults to LEFT_TO_RIGHT since paragraph direction is not inherited.
                    &quot;namedStyleType&quot;: &quot;A String&quot;, # The named style type of the paragraph. Since updating the named style type affects other properties within ParagraphStyle, the named style type is applied before the other properties are updated.
                    &quot;tabStops&quot;: [ # A list of the tab stops for this paragraph. The list of tab stops is not inherited. This property is read-only.
                      { # A tab stop within a paragraph.
                        &quot;offset&quot;: { # A magnitude in a single direction in the specified units. # The offset between this tab stop and the start margin.
                          &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                          &quot;magnitude&quot;: 3.14, # The magnitude.
                        },
                        &quot;alignment&quot;: &quot;A String&quot;, # The alignment of this tab stop. If unset, the value defaults to START.
                      },
                    ],
                    &quot;indentStart&quot;: { # A magnitude in a single direction in the specified units. # The amount of indentation for the paragraph on the side that corresponds to the start of the text, based on the current paragraph direction. If unset, the value is inherited from the parent.
                      &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                      &quot;magnitude&quot;: 3.14, # The magnitude.
                    },
                    &quot;keepWithNext&quot;: True or False, # Whether at least a part of this paragraph should be laid out on the same page or column as the next paragraph if possible. If unset, the value is inherited from the parent.
                    &quot;borderTop&quot;: { # A border around a paragraph. # 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 making changes to a paragraph border the new border must be specified in its entirety.
                      &quot;color&quot;: { # A color that can either be fully opaque or fully transparent. # The color of the border.
                        &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                          &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                            &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                            &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                            &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                          },
                        },
                      },
                      &quot;width&quot;: { # A magnitude in a single direction in the specified units. # The width of the border.
                        &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                        &quot;magnitude&quot;: 3.14, # The magnitude.
                      },
                      &quot;padding&quot;: { # A magnitude in a single direction in the specified units. # The padding of the border.
                        &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                        &quot;magnitude&quot;: 3.14, # The magnitude.
                      },
                      &quot;dashStyle&quot;: &quot;A String&quot;, # The dash style of the border.
                    },
                    &quot;borderLeft&quot;: { # A border around a paragraph. # The border to the left of this paragraph. If unset, the value is inherited from the parent. Paragraph borders cannot be partially updated. When making changes to a paragraph border the new border must be specified in its entirety.
                      &quot;color&quot;: { # A color that can either be fully opaque or fully transparent. # The color of the border.
                        &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                          &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                            &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                            &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                            &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                          },
                        },
                      },
                      &quot;width&quot;: { # A magnitude in a single direction in the specified units. # The width of the border.
                        &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                        &quot;magnitude&quot;: 3.14, # The magnitude.
                      },
                      &quot;padding&quot;: { # A magnitude in a single direction in the specified units. # The padding of the border.
                        &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                        &quot;magnitude&quot;: 3.14, # The magnitude.
                      },
                      &quot;dashStyle&quot;: &quot;A String&quot;, # The dash style of the border.
                    },
                    &quot;borderBottom&quot;: { # A border around a paragraph. # 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 making changes to a paragraph border the new border must be specified in its entirety.
                      &quot;color&quot;: { # A color that can either be fully opaque or fully transparent. # The color of the border.
                        &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                          &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                            &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                            &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                            &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                          },
                        },
                      },
                      &quot;width&quot;: { # A magnitude in a single direction in the specified units. # The width of the border.
                        &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                        &quot;magnitude&quot;: 3.14, # The magnitude.
                      },
                      &quot;padding&quot;: { # A magnitude in a single direction in the specified units. # The padding of the border.
                        &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                        &quot;magnitude&quot;: 3.14, # The magnitude.
                      },
                      &quot;dashStyle&quot;: &quot;A String&quot;, # The dash style of the border.
                    },
                    &quot;shading&quot;: { # The shading of a paragraph. # The shading of the paragraph. If unset, the value is inherited from the parent.
                      &quot;backgroundColor&quot;: { # A color that can either be fully opaque or fully transparent. # The background color of this paragraph shading.
                        &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                          &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                            &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                            &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                            &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                          },
                        },
                      },
                    },
                    &quot;indentEnd&quot;: { # A magnitude in a single direction in the specified units. # 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.
                      &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                      &quot;magnitude&quot;: 3.14, # The magnitude.
                    },
                    &quot;spacingMode&quot;: &quot;A String&quot;, # The spacing mode for the paragraph.
                  },
                  &quot;paragraphStyleSuggestionState&quot;: { # A mask that indicates which of the fields on the base ParagraphStyle have been changed in this suggestion. For any field set to true, there is a new suggested value. # A mask that indicates which of the fields on the base ParagraphStyle have been changed in this suggestion.
                    &quot;borderRightSuggested&quot;: True or False, # Indicates if there was a suggested change to border_right.
                    &quot;indentEndSuggested&quot;: True or False, # Indicates if there was a suggested change to indent_end.
                    &quot;lineSpacingSuggested&quot;: True or False, # Indicates if there was a suggested change to line_spacing.
                    &quot;headingIdSuggested&quot;: True or False, # Indicates if there was a suggested change to heading_id.
                    &quot;indentStartSuggested&quot;: True or False, # Indicates if there was a suggested change to indent_start.
                    &quot;keepWithNextSuggested&quot;: True or False, # Indicates if there was a suggested change to keep_with_next.
                    &quot;namedStyleTypeSuggested&quot;: True or False, # Indicates if there was a suggested change to named_style_type.
                    &quot;borderTopSuggested&quot;: True or False, # Indicates if there was a suggested change to border_top.
                    &quot;keepLinesTogetherSuggested&quot;: True or False, # Indicates if there was a suggested change to keep_lines_together.
                    &quot;avoidWidowAndOrphanSuggested&quot;: True or False, # Indicates if there was a suggested change to avoid_widow_and_orphan.
                    &quot;spaceBelowSuggested&quot;: True or False, # Indicates if there was a suggested change to space_below.
                    &quot;indentFirstLineSuggested&quot;: True or False, # Indicates if there was a suggested change to indent_first_line.
                    &quot;shadingSuggestionState&quot;: { # A mask that indicates which of the fields on the base Shading have been changed in this suggested change. For any field set to true, there is a new suggested value. # A mask that indicates which of the fields in shading have been changed in this suggestion.
                      &quot;backgroundColorSuggested&quot;: True or False, # Indicates if there was a suggested change to the Shading.
                    },
                    &quot;directionSuggested&quot;: True or False, # Indicates if there was a suggested change to direction.
                    &quot;borderBetweenSuggested&quot;: True or False, # Indicates if there was a suggested change to border_between.
                    &quot;spaceAboveSuggested&quot;: True or False, # Indicates if there was a suggested change to space_above.
                    &quot;borderLeftSuggested&quot;: True or False, # Indicates if there was a suggested change to border_left.
                    &quot;spacingModeSuggested&quot;: True or False, # Indicates if there was a suggested change to spacing_mode.
                    &quot;borderBottomSuggested&quot;: True or False, # Indicates if there was a suggested change to border_bottom.
                    &quot;alignmentSuggested&quot;: True or False, # Indicates if there was a suggested change to alignment.
                  },
                },
              },
              &quot;bullet&quot;: { # Describes the bullet of a paragraph. # The bullet for this paragraph. If not present, the paragraph does not belong to a list.
                &quot;textStyle&quot;: { # Represents the styling that can be applied to text. Inherited text styles are represented as unset fields in this message. A text style&#x27;s parent depends on where the text style is defined: * The TextStyle of text in a Paragraph inherits from the paragraph&#x27;s corresponding named style type. * The TextStyle on a named style inherits from the normal text named style. * The TextStyle of the normal text named style inherits from the default text style in the Docs editor. * The TextStyle on a Paragraph element that is contained in a table may inherit its text style from the table style. If the text style does not inherit from a parent, unsetting fields will revert the style to a value matching the defaults in the Docs editor. # The paragraph specific text style applied to this bullet.
                  &quot;italic&quot;: True or False, # Whether or not the text is italicized.
                  &quot;baselineOffset&quot;: &quot;A String&quot;, # The text&#x27;s vertical offset from its normal position. Text with `SUPERSCRIPT` or `SUBSCRIPT` baseline offsets is automatically rendered in a smaller font size, computed based on the `font_size` field. The `font_size` itself is not affected by changes in this field.
                  &quot;bold&quot;: True or False, # Whether or not the text is rendered as bold.
                  &quot;fontSize&quot;: { # A magnitude in a single direction in the specified units. # The size of the text&#x27;s font.
                    &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                    &quot;magnitude&quot;: 3.14, # The magnitude.
                  },
                  &quot;foregroundColor&quot;: { # A color that can either be fully opaque or fully transparent. # The foreground color of the text. If set, the color is either an RGB color or transparent, depending on the `color` field.
                    &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                      &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                        &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                        &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                        &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                      },
                    },
                  },
                  &quot;backgroundColor&quot;: { # A color that can either be fully opaque or fully transparent. # The background color of the text. If set, the color is either an RGB color or transparent, depending on the `color` field.
                    &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                      &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                        &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                        &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                        &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                      },
                    },
                  },
                  &quot;link&quot;: { # A reference to another portion of a document or an external URL resource. # The hyperlink destination of the text. If unset, there is no link. Links are not inherited from parent text. Changing the link in an update request causes some other changes to the text style of the range: * When setting a link, the text foreground color will be updated to the default link color and the text will be underlined. If these fields are modified in the same request, those values will be used instead of the link defaults. * Setting a link on a text range that overlaps with an existing link will also update the existing link to point to the new URL. * Links are not settable on newline characters. As a result, setting a link on a text range that crosses a paragraph boundary, such as `&quot;ABC\n123&quot;`, will separate the newline character(s) into their own text runs. The link will be applied separately to the runs before and after the newline. * Removing a link will update the text style of the range to match the style of the preceding text (or the default text styles if the preceding text is another link) unless different styles are being set in the same request.
                    &quot;bookmarkId&quot;: &quot;A String&quot;, # The ID of a bookmark in this document.
                    &quot;url&quot;: &quot;A String&quot;, # An external URL.
                    &quot;headingId&quot;: &quot;A String&quot;, # The ID of a heading in this document.
                  },
                  &quot;strikethrough&quot;: True or False, # Whether or not the text is struck through.
                  &quot;weightedFontFamily&quot;: { # Represents a font family and weight of text. # The font family and rendered weight of the text. If an update request specifies values for both `weighted_font_family` and `bold`, the `weighted_font_family` is applied first, then `bold`. If `weighted_font_family#weight` is not set, it defaults to `400`. If `weighted_font_family` is set, then `weighted_font_family#font_family` must also be set with a non-empty value. Otherwise, a 400 bad request error is returned.
                    &quot;fontFamily&quot;: &quot;A String&quot;, # The font family of the text. The font family can be any font from the Font menu in Docs or from [Google Fonts] (https://fonts.google.com/). If the font name is unrecognized, the text is rendered in `Arial`.
                    &quot;weight&quot;: 42, # The weight of the font. This field can have any value that is a multiple of `100` between `100` and `900`, inclusive. This range corresponds to the numerical values described in the CSS 2.1 Specification, [section 15.6](https://www.w3.org/TR/CSS21/fonts.html#font-boldness), with non-numerical values disallowed. The default value is `400` (&quot;normal&quot;). The font weight makes up just one component of the rendered font weight. The rendered weight is determined by a combination of the `weight` and the text style&#x27;s resolved `bold` value, after accounting for inheritance: * If the text is bold and the weight is less than `400`, the rendered weight is 400. * If the text is bold and the weight is greater than or equal to `400` but is less than `700`, the rendered weight is `700`. * If the weight is greater than or equal to `700`, the rendered weight is equal to the weight. * If the text is not bold, the rendered weight is equal to the weight.
                  },
                  &quot;underline&quot;: True or False, # Whether or not the text is underlined.
                  &quot;smallCaps&quot;: True or False, # Whether or not the text is in small capital letters.
                },
                &quot;nestingLevel&quot;: 42, # The nesting level of this paragraph in the list.
                &quot;listId&quot;: &quot;A String&quot;, # The ID of the list this paragraph belongs to.
              },
              &quot;suggestedBulletChanges&quot;: { # The suggested changes to this paragraph&#x27;s bullet.
                &quot;a_key&quot;: { # A suggested change to a Bullet.
                  &quot;bulletSuggestionState&quot;: { # A mask that indicates which of the fields on the base Bullet have been changed in this suggestion. For any field set to true, there is a new suggested value. # A mask that indicates which of the fields on the base Bullet have been changed in this suggestion.
                    &quot;nestingLevelSuggested&quot;: True or False, # Indicates if there was a suggested change to the nesting_level.
                    &quot;textStyleSuggestionState&quot;: { # A mask that indicates which of the fields on the base TextStyle have been changed in this suggestion. For any field set to true, there is a new suggested value. # A mask that indicates which of the fields in text style have been changed in this suggestion.
                      &quot;backgroundColorSuggested&quot;: True or False, # Indicates if there was a suggested change to background_color.
                      &quot;fontSizeSuggested&quot;: True or False, # Indicates if there was a suggested change to font_size.
                      &quot;boldSuggested&quot;: True or False, # Indicates if there was a suggested change to bold.
                      &quot;baselineOffsetSuggested&quot;: True or False, # Indicates if there was a suggested change to baseline_offset.
                      &quot;foregroundColorSuggested&quot;: True or False, # Indicates if there was a suggested change to foreground_color.
                      &quot;italicSuggested&quot;: True or False, # Indicates if there was a suggested change to italic.
                      &quot;linkSuggested&quot;: True or False, # Indicates if there was a suggested change to link.
                      &quot;underlineSuggested&quot;: True or False, # Indicates if there was a suggested change to underline.
                      &quot;weightedFontFamilySuggested&quot;: True or False, # Indicates if there was a suggested change to weighted_font_family.
                      &quot;smallCapsSuggested&quot;: True or False, # Indicates if there was a suggested change to small_caps.
                      &quot;strikethroughSuggested&quot;: True or False, # Indicates if there was a suggested change to strikethrough.
                    },
                    &quot;listIdSuggested&quot;: True or False, # Indicates if there was a suggested change to the list_id.
                  },
                  &quot;bullet&quot;: { # Describes the bullet of a paragraph. # A Bullet that only includes the changes made in this suggestion. This can be used along with the bullet_suggestion_state to see which fields have changed and their new values.
                    &quot;textStyle&quot;: { # Represents the styling that can be applied to text. Inherited text styles are represented as unset fields in this message. A text style&#x27;s parent depends on where the text style is defined: * The TextStyle of text in a Paragraph inherits from the paragraph&#x27;s corresponding named style type. * The TextStyle on a named style inherits from the normal text named style. * The TextStyle of the normal text named style inherits from the default text style in the Docs editor. * The TextStyle on a Paragraph element that is contained in a table may inherit its text style from the table style. If the text style does not inherit from a parent, unsetting fields will revert the style to a value matching the defaults in the Docs editor. # The paragraph specific text style applied to this bullet.
                      &quot;italic&quot;: True or False, # Whether or not the text is italicized.
                      &quot;baselineOffset&quot;: &quot;A String&quot;, # The text&#x27;s vertical offset from its normal position. Text with `SUPERSCRIPT` or `SUBSCRIPT` baseline offsets is automatically rendered in a smaller font size, computed based on the `font_size` field. The `font_size` itself is not affected by changes in this field.
                      &quot;bold&quot;: True or False, # Whether or not the text is rendered as bold.
                      &quot;fontSize&quot;: { # A magnitude in a single direction in the specified units. # The size of the text&#x27;s font.
                        &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                        &quot;magnitude&quot;: 3.14, # The magnitude.
                      },
                      &quot;foregroundColor&quot;: { # A color that can either be fully opaque or fully transparent. # The foreground color of the text. If set, the color is either an RGB color or transparent, depending on the `color` field.
                        &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                          &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                            &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                            &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                            &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                          },
                        },
                      },
                      &quot;backgroundColor&quot;: { # A color that can either be fully opaque or fully transparent. # The background color of the text. If set, the color is either an RGB color or transparent, depending on the `color` field.
                        &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                          &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                            &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                            &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                            &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                          },
                        },
                      },
                      &quot;link&quot;: { # A reference to another portion of a document or an external URL resource. # The hyperlink destination of the text. If unset, there is no link. Links are not inherited from parent text. Changing the link in an update request causes some other changes to the text style of the range: * When setting a link, the text foreground color will be updated to the default link color and the text will be underlined. If these fields are modified in the same request, those values will be used instead of the link defaults. * Setting a link on a text range that overlaps with an existing link will also update the existing link to point to the new URL. * Links are not settable on newline characters. As a result, setting a link on a text range that crosses a paragraph boundary, such as `&quot;ABC\n123&quot;`, will separate the newline character(s) into their own text runs. The link will be applied separately to the runs before and after the newline. * Removing a link will update the text style of the range to match the style of the preceding text (or the default text styles if the preceding text is another link) unless different styles are being set in the same request.
                        &quot;bookmarkId&quot;: &quot;A String&quot;, # The ID of a bookmark in this document.
                        &quot;url&quot;: &quot;A String&quot;, # An external URL.
                        &quot;headingId&quot;: &quot;A String&quot;, # The ID of a heading in this document.
                      },
                      &quot;strikethrough&quot;: True or False, # Whether or not the text is struck through.
                      &quot;weightedFontFamily&quot;: { # Represents a font family and weight of text. # The font family and rendered weight of the text. If an update request specifies values for both `weighted_font_family` and `bold`, the `weighted_font_family` is applied first, then `bold`. If `weighted_font_family#weight` is not set, it defaults to `400`. If `weighted_font_family` is set, then `weighted_font_family#font_family` must also be set with a non-empty value. Otherwise, a 400 bad request error is returned.
                        &quot;fontFamily&quot;: &quot;A String&quot;, # The font family of the text. The font family can be any font from the Font menu in Docs or from [Google Fonts] (https://fonts.google.com/). If the font name is unrecognized, the text is rendered in `Arial`.
                        &quot;weight&quot;: 42, # The weight of the font. This field can have any value that is a multiple of `100` between `100` and `900`, inclusive. This range corresponds to the numerical values described in the CSS 2.1 Specification, [section 15.6](https://www.w3.org/TR/CSS21/fonts.html#font-boldness), with non-numerical values disallowed. The default value is `400` (&quot;normal&quot;). The font weight makes up just one component of the rendered font weight. The rendered weight is determined by a combination of the `weight` and the text style&#x27;s resolved `bold` value, after accounting for inheritance: * If the text is bold and the weight is less than `400`, the rendered weight is 400. * If the text is bold and the weight is greater than or equal to `400` but is less than `700`, the rendered weight is `700`. * If the weight is greater than or equal to `700`, the rendered weight is equal to the weight. * If the text is not bold, the rendered weight is equal to the weight.
                      },
                      &quot;underline&quot;: True or False, # Whether or not the text is underlined.
                      &quot;smallCaps&quot;: True or False, # Whether or not the text is in small capital letters.
                    },
                    &quot;nestingLevel&quot;: 42, # The nesting level of this paragraph in the list.
                    &quot;listId&quot;: &quot;A String&quot;, # The ID of the list this paragraph belongs to.
                  },
                },
              },
              &quot;suggestedPositionedObjectIds&quot;: { # The IDs of the positioned objects that are suggested to be attached to this paragraph, keyed by suggestion ID.
                &quot;a_key&quot;: { # A collection of object IDs.
                  &quot;objectIds&quot;: [ # The object IDs.
                    &quot;A String&quot;,
                  ],
                },
              },
              &quot;elements&quot;: [ # The content of the paragraph broken down into its component parts.
                { # A ParagraphElement describes content within a Paragraph.
                  &quot;textRun&quot;: { # A ParagraphElement that represents a run of text that all has the same styling. # A text run paragraph element.
                    &quot;suggestedInsertionIds&quot;: [ # The suggested insertion IDs. A TextRun may have multiple insertion IDs if it is a nested suggested change. If empty, then this is not a suggested insertion.
                      &quot;A String&quot;,
                    ],
                    &quot;content&quot;: &quot;A String&quot;, # The text of this run. Any non-text elements in the run are replaced with the Unicode character U+E907.
                    &quot;textStyle&quot;: { # Represents the styling that can be applied to text. Inherited text styles are represented as unset fields in this message. A text style&#x27;s parent depends on where the text style is defined: * The TextStyle of text in a Paragraph inherits from the paragraph&#x27;s corresponding named style type. * The TextStyle on a named style inherits from the normal text named style. * The TextStyle of the normal text named style inherits from the default text style in the Docs editor. * The TextStyle on a Paragraph element that is contained in a table may inherit its text style from the table style. If the text style does not inherit from a parent, unsetting fields will revert the style to a value matching the defaults in the Docs editor. # The text style of this run.
                      &quot;italic&quot;: True or False, # Whether or not the text is italicized.
                      &quot;baselineOffset&quot;: &quot;A String&quot;, # The text&#x27;s vertical offset from its normal position. Text with `SUPERSCRIPT` or `SUBSCRIPT` baseline offsets is automatically rendered in a smaller font size, computed based on the `font_size` field. The `font_size` itself is not affected by changes in this field.
                      &quot;bold&quot;: True or False, # Whether or not the text is rendered as bold.
                      &quot;fontSize&quot;: { # A magnitude in a single direction in the specified units. # The size of the text&#x27;s font.
                        &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                        &quot;magnitude&quot;: 3.14, # The magnitude.
                      },
                      &quot;foregroundColor&quot;: { # A color that can either be fully opaque or fully transparent. # The foreground color of the text. If set, the color is either an RGB color or transparent, depending on the `color` field.
                        &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                          &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                            &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                            &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                            &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                          },
                        },
                      },
                      &quot;backgroundColor&quot;: { # A color that can either be fully opaque or fully transparent. # The background color of the text. If set, the color is either an RGB color or transparent, depending on the `color` field.
                        &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                          &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                            &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                            &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                            &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                          },
                        },
                      },
                      &quot;link&quot;: { # A reference to another portion of a document or an external URL resource. # The hyperlink destination of the text. If unset, there is no link. Links are not inherited from parent text. Changing the link in an update request causes some other changes to the text style of the range: * When setting a link, the text foreground color will be updated to the default link color and the text will be underlined. If these fields are modified in the same request, those values will be used instead of the link defaults. * Setting a link on a text range that overlaps with an existing link will also update the existing link to point to the new URL. * Links are not settable on newline characters. As a result, setting a link on a text range that crosses a paragraph boundary, such as `&quot;ABC\n123&quot;`, will separate the newline character(s) into their own text runs. The link will be applied separately to the runs before and after the newline. * Removing a link will update the text style of the range to match the style of the preceding text (or the default text styles if the preceding text is another link) unless different styles are being set in the same request.
                        &quot;bookmarkId&quot;: &quot;A String&quot;, # The ID of a bookmark in this document.
                        &quot;url&quot;: &quot;A String&quot;, # An external URL.
                        &quot;headingId&quot;: &quot;A String&quot;, # The ID of a heading in this document.
                      },
                      &quot;strikethrough&quot;: True or False, # Whether or not the text is struck through.
                      &quot;weightedFontFamily&quot;: { # Represents a font family and weight of text. # The font family and rendered weight of the text. If an update request specifies values for both `weighted_font_family` and `bold`, the `weighted_font_family` is applied first, then `bold`. If `weighted_font_family#weight` is not set, it defaults to `400`. If `weighted_font_family` is set, then `weighted_font_family#font_family` must also be set with a non-empty value. Otherwise, a 400 bad request error is returned.
                        &quot;fontFamily&quot;: &quot;A String&quot;, # The font family of the text. The font family can be any font from the Font menu in Docs or from [Google Fonts] (https://fonts.google.com/). If the font name is unrecognized, the text is rendered in `Arial`.
                        &quot;weight&quot;: 42, # The weight of the font. This field can have any value that is a multiple of `100` between `100` and `900`, inclusive. This range corresponds to the numerical values described in the CSS 2.1 Specification, [section 15.6](https://www.w3.org/TR/CSS21/fonts.html#font-boldness), with non-numerical values disallowed. The default value is `400` (&quot;normal&quot;). The font weight makes up just one component of the rendered font weight. The rendered weight is determined by a combination of the `weight` and the text style&#x27;s resolved `bold` value, after accounting for inheritance: * If the text is bold and the weight is less than `400`, the rendered weight is 400. * If the text is bold and the weight is greater than or equal to `400` but is less than `700`, the rendered weight is `700`. * If the weight is greater than or equal to `700`, the rendered weight is equal to the weight. * If the text is not bold, the rendered weight is equal to the weight.
                      },
                      &quot;underline&quot;: True or False, # Whether or not the text is underlined.
                      &quot;smallCaps&quot;: True or False, # Whether or not the text is in small capital letters.
                    },
                    &quot;suggestedTextStyleChanges&quot;: { # The suggested text style changes to this run, keyed by suggestion ID.
                      &quot;a_key&quot;: { # A suggested change to a TextStyle.
                        &quot;textStyleSuggestionState&quot;: { # A mask that indicates which of the fields on the base TextStyle have been changed in this suggestion. For any field set to true, there is a new suggested value. # A mask that indicates which of the fields on the base TextStyle have been changed in this suggestion.
                          &quot;backgroundColorSuggested&quot;: True or False, # Indicates if there was a suggested change to background_color.
                          &quot;fontSizeSuggested&quot;: True or False, # Indicates if there was a suggested change to font_size.
                          &quot;boldSuggested&quot;: True or False, # Indicates if there was a suggested change to bold.
                          &quot;baselineOffsetSuggested&quot;: True or False, # Indicates if there was a suggested change to baseline_offset.
                          &quot;foregroundColorSuggested&quot;: True or False, # Indicates if there was a suggested change to foreground_color.
                          &quot;italicSuggested&quot;: True or False, # Indicates if there was a suggested change to italic.
                          &quot;linkSuggested&quot;: True or False, # Indicates if there was a suggested change to link.
                          &quot;underlineSuggested&quot;: True or False, # Indicates if there was a suggested change to underline.
                          &quot;weightedFontFamilySuggested&quot;: True or False, # Indicates if there was a suggested change to weighted_font_family.
                          &quot;smallCapsSuggested&quot;: True or False, # Indicates if there was a suggested change to small_caps.
                          &quot;strikethroughSuggested&quot;: True or False, # Indicates if there was a suggested change to strikethrough.
                        },
                        &quot;textStyle&quot;: { # Represents the styling that can be applied to text. Inherited text styles are represented as unset fields in this message. A text style&#x27;s parent depends on where the text style is defined: * The TextStyle of text in a Paragraph inherits from the paragraph&#x27;s corresponding named style type. * The TextStyle on a named style inherits from the normal text named style. * The TextStyle of the normal text named style inherits from the default text style in the Docs editor. * The TextStyle on a Paragraph element that is contained in a table may inherit its text style from the table style. If the text style does not inherit from a parent, unsetting fields will revert the style to a value matching the defaults in the Docs editor. # A TextStyle that only includes the changes made in this suggestion. This can be used along with the text_style_suggestion_state to see which fields have changed and their new values.
                          &quot;italic&quot;: True or False, # Whether or not the text is italicized.
                          &quot;baselineOffset&quot;: &quot;A String&quot;, # The text&#x27;s vertical offset from its normal position. Text with `SUPERSCRIPT` or `SUBSCRIPT` baseline offsets is automatically rendered in a smaller font size, computed based on the `font_size` field. The `font_size` itself is not affected by changes in this field.
                          &quot;bold&quot;: True or False, # Whether or not the text is rendered as bold.
                          &quot;fontSize&quot;: { # A magnitude in a single direction in the specified units. # The size of the text&#x27;s font.
                            &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                            &quot;magnitude&quot;: 3.14, # The magnitude.
                          },
                          &quot;foregroundColor&quot;: { # A color that can either be fully opaque or fully transparent. # The foreground color of the text. If set, the color is either an RGB color or transparent, depending on the `color` field.
                            &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                              &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                                &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                                &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                                &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                              },
                            },
                          },
                          &quot;backgroundColor&quot;: { # A color that can either be fully opaque or fully transparent. # The background color of the text. If set, the color is either an RGB color or transparent, depending on the `color` field.
                            &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                              &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                                &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                                &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                                &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                              },
                            },
                          },
                          &quot;link&quot;: { # A reference to another portion of a document or an external URL resource. # The hyperlink destination of the text. If unset, there is no link. Links are not inherited from parent text. Changing the link in an update request causes some other changes to the text style of the range: * When setting a link, the text foreground color will be updated to the default link color and the text will be underlined. If these fields are modified in the same request, those values will be used instead of the link defaults. * Setting a link on a text range that overlaps with an existing link will also update the existing link to point to the new URL. * Links are not settable on newline characters. As a result, setting a link on a text range that crosses a paragraph boundary, such as `&quot;ABC\n123&quot;`, will separate the newline character(s) into their own text runs. The link will be applied separately to the runs before and after the newline. * Removing a link will update the text style of the range to match the style of the preceding text (or the default text styles if the preceding text is another link) unless different styles are being set in the same request.
                            &quot;bookmarkId&quot;: &quot;A String&quot;, # The ID of a bookmark in this document.
                            &quot;url&quot;: &quot;A String&quot;, # An external URL.
                            &quot;headingId&quot;: &quot;A String&quot;, # The ID of a heading in this document.
                          },
                          &quot;strikethrough&quot;: True or False, # Whether or not the text is struck through.
                          &quot;weightedFontFamily&quot;: { # Represents a font family and weight of text. # The font family and rendered weight of the text. If an update request specifies values for both `weighted_font_family` and `bold`, the `weighted_font_family` is applied first, then `bold`. If `weighted_font_family#weight` is not set, it defaults to `400`. If `weighted_font_family` is set, then `weighted_font_family#font_family` must also be set with a non-empty value. Otherwise, a 400 bad request error is returned.
                            &quot;fontFamily&quot;: &quot;A String&quot;, # The font family of the text. The font family can be any font from the Font menu in Docs or from [Google Fonts] (https://fonts.google.com/). If the font name is unrecognized, the text is rendered in `Arial`.
                            &quot;weight&quot;: 42, # The weight of the font. This field can have any value that is a multiple of `100` between `100` and `900`, inclusive. This range corresponds to the numerical values described in the CSS 2.1 Specification, [section 15.6](https://www.w3.org/TR/CSS21/fonts.html#font-boldness), with non-numerical values disallowed. The default value is `400` (&quot;normal&quot;). The font weight makes up just one component of the rendered font weight. The rendered weight is determined by a combination of the `weight` and the text style&#x27;s resolved `bold` value, after accounting for inheritance: * If the text is bold and the weight is less than `400`, the rendered weight is 400. * If the text is bold and the weight is greater than or equal to `400` but is less than `700`, the rendered weight is `700`. * If the weight is greater than or equal to `700`, the rendered weight is equal to the weight. * If the text is not bold, the rendered weight is equal to the weight.
                          },
                          &quot;underline&quot;: True or False, # Whether or not the text is underlined.
                          &quot;smallCaps&quot;: True or False, # Whether or not the text is in small capital letters.
                        },
                      },
                    },
                    &quot;suggestedDeletionIds&quot;: [ # The suggested deletion IDs. If empty, then there are no suggested deletions of this content.
                      &quot;A String&quot;,
                    ],
                  },
                  &quot;pageBreak&quot;: { # A ParagraphElement representing a page break. A page break makes the subsequent text start at the top of the next page. # A page break paragraph element.
                    &quot;suggestedInsertionIds&quot;: [ # The suggested insertion IDs. A PageBreak may have multiple insertion IDs if it is a nested suggested change. If empty, then this is not a suggested insertion.
                      &quot;A String&quot;,
                    ],
                    &quot;textStyle&quot;: { # Represents the styling that can be applied to text. Inherited text styles are represented as unset fields in this message. A text style&#x27;s parent depends on where the text style is defined: * The TextStyle of text in a Paragraph inherits from the paragraph&#x27;s corresponding named style type. * The TextStyle on a named style inherits from the normal text named style. * The TextStyle of the normal text named style inherits from the default text style in the Docs editor. * The TextStyle on a Paragraph element that is contained in a table may inherit its text style from the table style. If the text style does not inherit from a parent, unsetting fields will revert the style to a value matching the defaults in the Docs editor. # The text style of this PageBreak. Similar to text content, like text runs and footnote references, the text style of a page break can affect content layout as well as the styling of text inserted adjacent to it.
                      &quot;italic&quot;: True or False, # Whether or not the text is italicized.
                      &quot;baselineOffset&quot;: &quot;A String&quot;, # The text&#x27;s vertical offset from its normal position. Text with `SUPERSCRIPT` or `SUBSCRIPT` baseline offsets is automatically rendered in a smaller font size, computed based on the `font_size` field. The `font_size` itself is not affected by changes in this field.
                      &quot;bold&quot;: True or False, # Whether or not the text is rendered as bold.
                      &quot;fontSize&quot;: { # A magnitude in a single direction in the specified units. # The size of the text&#x27;s font.
                        &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                        &quot;magnitude&quot;: 3.14, # The magnitude.
                      },
                      &quot;foregroundColor&quot;: { # A color that can either be fully opaque or fully transparent. # The foreground color of the text. If set, the color is either an RGB color or transparent, depending on the `color` field.
                        &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                          &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                            &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                            &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                            &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                          },
                        },
                      },
                      &quot;backgroundColor&quot;: { # A color that can either be fully opaque or fully transparent. # The background color of the text. If set, the color is either an RGB color or transparent, depending on the `color` field.
                        &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                          &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                            &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                            &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                            &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                          },
                        },
                      },
                      &quot;link&quot;: { # A reference to another portion of a document or an external URL resource. # The hyperlink destination of the text. If unset, there is no link. Links are not inherited from parent text. Changing the link in an update request causes some other changes to the text style of the range: * When setting a link, the text foreground color will be updated to the default link color and the text will be underlined. If these fields are modified in the same request, those values will be used instead of the link defaults. * Setting a link on a text range that overlaps with an existing link will also update the existing link to point to the new URL. * Links are not settable on newline characters. As a result, setting a link on a text range that crosses a paragraph boundary, such as `&quot;ABC\n123&quot;`, will separate the newline character(s) into their own text runs. The link will be applied separately to the runs before and after the newline. * Removing a link will update the text style of the range to match the style of the preceding text (or the default text styles if the preceding text is another link) unless different styles are being set in the same request.
                        &quot;bookmarkId&quot;: &quot;A String&quot;, # The ID of a bookmark in this document.
                        &quot;url&quot;: &quot;A String&quot;, # An external URL.
                        &quot;headingId&quot;: &quot;A String&quot;, # The ID of a heading in this document.
                      },
                      &quot;strikethrough&quot;: True or False, # Whether or not the text is struck through.
                      &quot;weightedFontFamily&quot;: { # Represents a font family and weight of text. # The font family and rendered weight of the text. If an update request specifies values for both `weighted_font_family` and `bold`, the `weighted_font_family` is applied first, then `bold`. If `weighted_font_family#weight` is not set, it defaults to `400`. If `weighted_font_family` is set, then `weighted_font_family#font_family` must also be set with a non-empty value. Otherwise, a 400 bad request error is returned.
                        &quot;fontFamily&quot;: &quot;A String&quot;, # The font family of the text. The font family can be any font from the Font menu in Docs or from [Google Fonts] (https://fonts.google.com/). If the font name is unrecognized, the text is rendered in `Arial`.
                        &quot;weight&quot;: 42, # The weight of the font. This field can have any value that is a multiple of `100` between `100` and `900`, inclusive. This range corresponds to the numerical values described in the CSS 2.1 Specification, [section 15.6](https://www.w3.org/TR/CSS21/fonts.html#font-boldness), with non-numerical values disallowed. The default value is `400` (&quot;normal&quot;). The font weight makes up just one component of the rendered font weight. The rendered weight is determined by a combination of the `weight` and the text style&#x27;s resolved `bold` value, after accounting for inheritance: * If the text is bold and the weight is less than `400`, the rendered weight is 400. * If the text is bold and the weight is greater than or equal to `400` but is less than `700`, the rendered weight is `700`. * If the weight is greater than or equal to `700`, the rendered weight is equal to the weight. * If the text is not bold, the rendered weight is equal to the weight.
                      },
                      &quot;underline&quot;: True or False, # Whether or not the text is underlined.
                      &quot;smallCaps&quot;: True or False, # Whether or not the text is in small capital letters.
                    },
                    &quot;suggestedTextStyleChanges&quot;: { # The suggested text style changes to this PageBreak, keyed by suggestion ID.
                      &quot;a_key&quot;: { # A suggested change to a TextStyle.
                        &quot;textStyleSuggestionState&quot;: { # A mask that indicates which of the fields on the base TextStyle have been changed in this suggestion. For any field set to true, there is a new suggested value. # A mask that indicates which of the fields on the base TextStyle have been changed in this suggestion.
                          &quot;backgroundColorSuggested&quot;: True or False, # Indicates if there was a suggested change to background_color.
                          &quot;fontSizeSuggested&quot;: True or False, # Indicates if there was a suggested change to font_size.
                          &quot;boldSuggested&quot;: True or False, # Indicates if there was a suggested change to bold.
                          &quot;baselineOffsetSuggested&quot;: True or False, # Indicates if there was a suggested change to baseline_offset.
                          &quot;foregroundColorSuggested&quot;: True or False, # Indicates if there was a suggested change to foreground_color.
                          &quot;italicSuggested&quot;: True or False, # Indicates if there was a suggested change to italic.
                          &quot;linkSuggested&quot;: True or False, # Indicates if there was a suggested change to link.
                          &quot;underlineSuggested&quot;: True or False, # Indicates if there was a suggested change to underline.
                          &quot;weightedFontFamilySuggested&quot;: True or False, # Indicates if there was a suggested change to weighted_font_family.
                          &quot;smallCapsSuggested&quot;: True or False, # Indicates if there was a suggested change to small_caps.
                          &quot;strikethroughSuggested&quot;: True or False, # Indicates if there was a suggested change to strikethrough.
                        },
                        &quot;textStyle&quot;: { # Represents the styling that can be applied to text. Inherited text styles are represented as unset fields in this message. A text style&#x27;s parent depends on where the text style is defined: * The TextStyle of text in a Paragraph inherits from the paragraph&#x27;s corresponding named style type. * The TextStyle on a named style inherits from the normal text named style. * The TextStyle of the normal text named style inherits from the default text style in the Docs editor. * The TextStyle on a Paragraph element that is contained in a table may inherit its text style from the table style. If the text style does not inherit from a parent, unsetting fields will revert the style to a value matching the defaults in the Docs editor. # A TextStyle that only includes the changes made in this suggestion. This can be used along with the text_style_suggestion_state to see which fields have changed and their new values.
                          &quot;italic&quot;: True or False, # Whether or not the text is italicized.
                          &quot;baselineOffset&quot;: &quot;A String&quot;, # The text&#x27;s vertical offset from its normal position. Text with `SUPERSCRIPT` or `SUBSCRIPT` baseline offsets is automatically rendered in a smaller font size, computed based on the `font_size` field. The `font_size` itself is not affected by changes in this field.
                          &quot;bold&quot;: True or False, # Whether or not the text is rendered as bold.
                          &quot;fontSize&quot;: { # A magnitude in a single direction in the specified units. # The size of the text&#x27;s font.
                            &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                            &quot;magnitude&quot;: 3.14, # The magnitude.
                          },
                          &quot;foregroundColor&quot;: { # A color that can either be fully opaque or fully transparent. # The foreground color of the text. If set, the color is either an RGB color or transparent, depending on the `color` field.
                            &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                              &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                                &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                                &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                                &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                              },
                            },
                          },
                          &quot;backgroundColor&quot;: { # A color that can either be fully opaque or fully transparent. # The background color of the text. If set, the color is either an RGB color or transparent, depending on the `color` field.
                            &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                              &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                                &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                                &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                                &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                              },
                            },
                          },
                          &quot;link&quot;: { # A reference to another portion of a document or an external URL resource. # The hyperlink destination of the text. If unset, there is no link. Links are not inherited from parent text. Changing the link in an update request causes some other changes to the text style of the range: * When setting a link, the text foreground color will be updated to the default link color and the text will be underlined. If these fields are modified in the same request, those values will be used instead of the link defaults. * Setting a link on a text range that overlaps with an existing link will also update the existing link to point to the new URL. * Links are not settable on newline characters. As a result, setting a link on a text range that crosses a paragraph boundary, such as `&quot;ABC\n123&quot;`, will separate the newline character(s) into their own text runs. The link will be applied separately to the runs before and after the newline. * Removing a link will update the text style of the range to match the style of the preceding text (or the default text styles if the preceding text is another link) unless different styles are being set in the same request.
                            &quot;bookmarkId&quot;: &quot;A String&quot;, # The ID of a bookmark in this document.
                            &quot;url&quot;: &quot;A String&quot;, # An external URL.
                            &quot;headingId&quot;: &quot;A String&quot;, # The ID of a heading in this document.
                          },
                          &quot;strikethrough&quot;: True or False, # Whether or not the text is struck through.
                          &quot;weightedFontFamily&quot;: { # Represents a font family and weight of text. # The font family and rendered weight of the text. If an update request specifies values for both `weighted_font_family` and `bold`, the `weighted_font_family` is applied first, then `bold`. If `weighted_font_family#weight` is not set, it defaults to `400`. If `weighted_font_family` is set, then `weighted_font_family#font_family` must also be set with a non-empty value. Otherwise, a 400 bad request error is returned.
                            &quot;fontFamily&quot;: &quot;A String&quot;, # The font family of the text. The font family can be any font from the Font menu in Docs or from [Google Fonts] (https://fonts.google.com/). If the font name is unrecognized, the text is rendered in `Arial`.
                            &quot;weight&quot;: 42, # The weight of the font. This field can have any value that is a multiple of `100` between `100` and `900`, inclusive. This range corresponds to the numerical values described in the CSS 2.1 Specification, [section 15.6](https://www.w3.org/TR/CSS21/fonts.html#font-boldness), with non-numerical values disallowed. The default value is `400` (&quot;normal&quot;). The font weight makes up just one component of the rendered font weight. The rendered weight is determined by a combination of the `weight` and the text style&#x27;s resolved `bold` value, after accounting for inheritance: * If the text is bold and the weight is less than `400`, the rendered weight is 400. * If the text is bold and the weight is greater than or equal to `400` but is less than `700`, the rendered weight is `700`. * If the weight is greater than or equal to `700`, the rendered weight is equal to the weight. * If the text is not bold, the rendered weight is equal to the weight.
                          },
                          &quot;underline&quot;: True or False, # Whether or not the text is underlined.
                          &quot;smallCaps&quot;: True or False, # Whether or not the text is in small capital letters.
                        },
                      },
                    },
                    &quot;suggestedDeletionIds&quot;: [ # The suggested deletion IDs. If empty, then there are no suggested deletions of this content.
                      &quot;A String&quot;,
                    ],
                  },
                  &quot;horizontalRule&quot;: { # A ParagraphElement representing a horizontal line. # A horizontal rule paragraph element.
                    &quot;suggestedInsertionIds&quot;: [ # The suggested insertion IDs. A HorizontalRule may have multiple insertion IDs if it is a nested suggested change. If empty, then this is not a suggested insertion.
                      &quot;A String&quot;,
                    ],
                    &quot;suggestedTextStyleChanges&quot;: { # The suggested text style changes to this HorizontalRule, keyed by suggestion ID.
                      &quot;a_key&quot;: { # A suggested change to a TextStyle.
                        &quot;textStyleSuggestionState&quot;: { # A mask that indicates which of the fields on the base TextStyle have been changed in this suggestion. For any field set to true, there is a new suggested value. # A mask that indicates which of the fields on the base TextStyle have been changed in this suggestion.
                          &quot;backgroundColorSuggested&quot;: True or False, # Indicates if there was a suggested change to background_color.
                          &quot;fontSizeSuggested&quot;: True or False, # Indicates if there was a suggested change to font_size.
                          &quot;boldSuggested&quot;: True or False, # Indicates if there was a suggested change to bold.
                          &quot;baselineOffsetSuggested&quot;: True or False, # Indicates if there was a suggested change to baseline_offset.
                          &quot;foregroundColorSuggested&quot;: True or False, # Indicates if there was a suggested change to foreground_color.
                          &quot;italicSuggested&quot;: True or False, # Indicates if there was a suggested change to italic.
                          &quot;linkSuggested&quot;: True or False, # Indicates if there was a suggested change to link.
                          &quot;underlineSuggested&quot;: True or False, # Indicates if there was a suggested change to underline.
                          &quot;weightedFontFamilySuggested&quot;: True or False, # Indicates if there was a suggested change to weighted_font_family.
                          &quot;smallCapsSuggested&quot;: True or False, # Indicates if there was a suggested change to small_caps.
                          &quot;strikethroughSuggested&quot;: True or False, # Indicates if there was a suggested change to strikethrough.
                        },
                        &quot;textStyle&quot;: { # Represents the styling that can be applied to text. Inherited text styles are represented as unset fields in this message. A text style&#x27;s parent depends on where the text style is defined: * The TextStyle of text in a Paragraph inherits from the paragraph&#x27;s corresponding named style type. * The TextStyle on a named style inherits from the normal text named style. * The TextStyle of the normal text named style inherits from the default text style in the Docs editor. * The TextStyle on a Paragraph element that is contained in a table may inherit its text style from the table style. If the text style does not inherit from a parent, unsetting fields will revert the style to a value matching the defaults in the Docs editor. # A TextStyle that only includes the changes made in this suggestion. This can be used along with the text_style_suggestion_state to see which fields have changed and their new values.
                          &quot;italic&quot;: True or False, # Whether or not the text is italicized.
                          &quot;baselineOffset&quot;: &quot;A String&quot;, # The text&#x27;s vertical offset from its normal position. Text with `SUPERSCRIPT` or `SUBSCRIPT` baseline offsets is automatically rendered in a smaller font size, computed based on the `font_size` field. The `font_size` itself is not affected by changes in this field.
                          &quot;bold&quot;: True or False, # Whether or not the text is rendered as bold.
                          &quot;fontSize&quot;: { # A magnitude in a single direction in the specified units. # The size of the text&#x27;s font.
                            &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                            &quot;magnitude&quot;: 3.14, # The magnitude.
                          },
                          &quot;foregroundColor&quot;: { # A color that can either be fully opaque or fully transparent. # The foreground color of the text. If set, the color is either an RGB color or transparent, depending on the `color` field.
                            &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                              &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                                &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                                &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                                &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                              },
                            },
                          },
                          &quot;backgroundColor&quot;: { # A color that can either be fully opaque or fully transparent. # The background color of the text. If set, the color is either an RGB color or transparent, depending on the `color` field.
                            &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                              &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                                &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                                &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                                &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                              },
                            },
                          },
                          &quot;link&quot;: { # A reference to another portion of a document or an external URL resource. # The hyperlink destination of the text. If unset, there is no link. Links are not inherited from parent text. Changing the link in an update request causes some other changes to the text style of the range: * When setting a link, the text foreground color will be updated to the default link color and the text will be underlined. If these fields are modified in the same request, those values will be used instead of the link defaults. * Setting a link on a text range that overlaps with an existing link will also update the existing link to point to the new URL. * Links are not settable on newline characters. As a result, setting a link on a text range that crosses a paragraph boundary, such as `&quot;ABC\n123&quot;`, will separate the newline character(s) into their own text runs. The link will be applied separately to the runs before and after the newline. * Removing a link will update the text style of the range to match the style of the preceding text (or the default text styles if the preceding text is another link) unless different styles are being set in the same request.
                            &quot;bookmarkId&quot;: &quot;A String&quot;, # The ID of a bookmark in this document.
                            &quot;url&quot;: &quot;A String&quot;, # An external URL.
                            &quot;headingId&quot;: &quot;A String&quot;, # The ID of a heading in this document.
                          },
                          &quot;strikethrough&quot;: True or False, # Whether or not the text is struck through.
                          &quot;weightedFontFamily&quot;: { # Represents a font family and weight of text. # The font family and rendered weight of the text. If an update request specifies values for both `weighted_font_family` and `bold`, the `weighted_font_family` is applied first, then `bold`. If `weighted_font_family#weight` is not set, it defaults to `400`. If `weighted_font_family` is set, then `weighted_font_family#font_family` must also be set with a non-empty value. Otherwise, a 400 bad request error is returned.
                            &quot;fontFamily&quot;: &quot;A String&quot;, # The font family of the text. The font family can be any font from the Font menu in Docs or from [Google Fonts] (https://fonts.google.com/). If the font name is unrecognized, the text is rendered in `Arial`.
                            &quot;weight&quot;: 42, # The weight of the font. This field can have any value that is a multiple of `100` between `100` and `900`, inclusive. This range corresponds to the numerical values described in the CSS 2.1 Specification, [section 15.6](https://www.w3.org/TR/CSS21/fonts.html#font-boldness), with non-numerical values disallowed. The default value is `400` (&quot;normal&quot;). The font weight makes up just one component of the rendered font weight. The rendered weight is determined by a combination of the `weight` and the text style&#x27;s resolved `bold` value, after accounting for inheritance: * If the text is bold and the weight is less than `400`, the rendered weight is 400. * If the text is bold and the weight is greater than or equal to `400` but is less than `700`, the rendered weight is `700`. * If the weight is greater than or equal to `700`, the rendered weight is equal to the weight. * If the text is not bold, the rendered weight is equal to the weight.
                          },
                          &quot;underline&quot;: True or False, # Whether or not the text is underlined.
                          &quot;smallCaps&quot;: True or False, # Whether or not the text is in small capital letters.
                        },
                      },
                    },
                    &quot;suggestedDeletionIds&quot;: [ # The suggested deletion IDs. If empty, then there are no suggested deletions of this content.
                      &quot;A String&quot;,
                    ],
                    &quot;textStyle&quot;: { # Represents the styling that can be applied to text. Inherited text styles are represented as unset fields in this message. A text style&#x27;s parent depends on where the text style is defined: * The TextStyle of text in a Paragraph inherits from the paragraph&#x27;s corresponding named style type. * The TextStyle on a named style inherits from the normal text named style. * The TextStyle of the normal text named style inherits from the default text style in the Docs editor. * The TextStyle on a Paragraph element that is contained in a table may inherit its text style from the table style. If the text style does not inherit from a parent, unsetting fields will revert the style to a value matching the defaults in the Docs editor. # The text style of this HorizontalRule. Similar to text content, like text runs and footnote references, the text style of a horizontal rule can affect content layout as well as the styling of text inserted adjacent to it.
                      &quot;italic&quot;: True or False, # Whether or not the text is italicized.
                      &quot;baselineOffset&quot;: &quot;A String&quot;, # The text&#x27;s vertical offset from its normal position. Text with `SUPERSCRIPT` or `SUBSCRIPT` baseline offsets is automatically rendered in a smaller font size, computed based on the `font_size` field. The `font_size` itself is not affected by changes in this field.
                      &quot;bold&quot;: True or False, # Whether or not the text is rendered as bold.
                      &quot;fontSize&quot;: { # A magnitude in a single direction in the specified units. # The size of the text&#x27;s font.
                        &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                        &quot;magnitude&quot;: 3.14, # The magnitude.
                      },
                      &quot;foregroundColor&quot;: { # A color that can either be fully opaque or fully transparent. # The foreground color of the text. If set, the color is either an RGB color or transparent, depending on the `color` field.
                        &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                          &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                            &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                            &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                            &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                          },
                        },
                      },
                      &quot;backgroundColor&quot;: { # A color that can either be fully opaque or fully transparent. # The background color of the text. If set, the color is either an RGB color or transparent, depending on the `color` field.
                        &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                          &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                            &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                            &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                            &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                          },
                        },
                      },
                      &quot;link&quot;: { # A reference to another portion of a document or an external URL resource. # The hyperlink destination of the text. If unset, there is no link. Links are not inherited from parent text. Changing the link in an update request causes some other changes to the text style of the range: * When setting a link, the text foreground color will be updated to the default link color and the text will be underlined. If these fields are modified in the same request, those values will be used instead of the link defaults. * Setting a link on a text range that overlaps with an existing link will also update the existing link to point to the new URL. * Links are not settable on newline characters. As a result, setting a link on a text range that crosses a paragraph boundary, such as `&quot;ABC\n123&quot;`, will separate the newline character(s) into their own text runs. The link will be applied separately to the runs before and after the newline. * Removing a link will update the text style of the range to match the style of the preceding text (or the default text styles if the preceding text is another link) unless different styles are being set in the same request.
                        &quot;bookmarkId&quot;: &quot;A String&quot;, # The ID of a bookmark in this document.
                        &quot;url&quot;: &quot;A String&quot;, # An external URL.
                        &quot;headingId&quot;: &quot;A String&quot;, # The ID of a heading in this document.
                      },
                      &quot;strikethrough&quot;: True or False, # Whether or not the text is struck through.
                      &quot;weightedFontFamily&quot;: { # Represents a font family and weight of text. # The font family and rendered weight of the text. If an update request specifies values for both `weighted_font_family` and `bold`, the `weighted_font_family` is applied first, then `bold`. If `weighted_font_family#weight` is not set, it defaults to `400`. If `weighted_font_family` is set, then `weighted_font_family#font_family` must also be set with a non-empty value. Otherwise, a 400 bad request error is returned.
                        &quot;fontFamily&quot;: &quot;A String&quot;, # The font family of the text. The font family can be any font from the Font menu in Docs or from [Google Fonts] (https://fonts.google.com/). If the font name is unrecognized, the text is rendered in `Arial`.
                        &quot;weight&quot;: 42, # The weight of the font. This field can have any value that is a multiple of `100` between `100` and `900`, inclusive. This range corresponds to the numerical values described in the CSS 2.1 Specification, [section 15.6](https://www.w3.org/TR/CSS21/fonts.html#font-boldness), with non-numerical values disallowed. The default value is `400` (&quot;normal&quot;). The font weight makes up just one component of the rendered font weight. The rendered weight is determined by a combination of the `weight` and the text style&#x27;s resolved `bold` value, after accounting for inheritance: * If the text is bold and the weight is less than `400`, the rendered weight is 400. * If the text is bold and the weight is greater than or equal to `400` but is less than `700`, the rendered weight is `700`. * If the weight is greater than or equal to `700`, the rendered weight is equal to the weight. * If the text is not bold, the rendered weight is equal to the weight.
                      },
                      &quot;underline&quot;: True or False, # Whether or not the text is underlined.
                      &quot;smallCaps&quot;: True or False, # Whether or not the text is in small capital letters.
                    },
                  },
                  &quot;autoText&quot;: { # A ParagraphElement representing a spot in the text that is dynamically replaced with content that can change over time, like a page number. # An auto text paragraph element.
                    &quot;suggestedDeletionIds&quot;: [ # The suggested deletion IDs. If empty, then there are no suggested deletions of this content.
                      &quot;A String&quot;,
                    ],
                    &quot;suggestedInsertionIds&quot;: [ # The suggested insertion IDs. An AutoText may have multiple insertion IDs if it is a nested suggested change. If empty, then this is not a suggested insertion.
                      &quot;A String&quot;,
                    ],
                    &quot;suggestedTextStyleChanges&quot;: { # The suggested text style changes to this AutoText, keyed by suggestion ID.
                      &quot;a_key&quot;: { # A suggested change to a TextStyle.
                        &quot;textStyleSuggestionState&quot;: { # A mask that indicates which of the fields on the base TextStyle have been changed in this suggestion. For any field set to true, there is a new suggested value. # A mask that indicates which of the fields on the base TextStyle have been changed in this suggestion.
                          &quot;backgroundColorSuggested&quot;: True or False, # Indicates if there was a suggested change to background_color.
                          &quot;fontSizeSuggested&quot;: True or False, # Indicates if there was a suggested change to font_size.
                          &quot;boldSuggested&quot;: True or False, # Indicates if there was a suggested change to bold.
                          &quot;baselineOffsetSuggested&quot;: True or False, # Indicates if there was a suggested change to baseline_offset.
                          &quot;foregroundColorSuggested&quot;: True or False, # Indicates if there was a suggested change to foreground_color.
                          &quot;italicSuggested&quot;: True or False, # Indicates if there was a suggested change to italic.
                          &quot;linkSuggested&quot;: True or False, # Indicates if there was a suggested change to link.
                          &quot;underlineSuggested&quot;: True or False, # Indicates if there was a suggested change to underline.
                          &quot;weightedFontFamilySuggested&quot;: True or False, # Indicates if there was a suggested change to weighted_font_family.
                          &quot;smallCapsSuggested&quot;: True or False, # Indicates if there was a suggested change to small_caps.
                          &quot;strikethroughSuggested&quot;: True or False, # Indicates if there was a suggested change to strikethrough.
                        },
                        &quot;textStyle&quot;: { # Represents the styling that can be applied to text. Inherited text styles are represented as unset fields in this message. A text style&#x27;s parent depends on where the text style is defined: * The TextStyle of text in a Paragraph inherits from the paragraph&#x27;s corresponding named style type. * The TextStyle on a named style inherits from the normal text named style. * The TextStyle of the normal text named style inherits from the default text style in the Docs editor. * The TextStyle on a Paragraph element that is contained in a table may inherit its text style from the table style. If the text style does not inherit from a parent, unsetting fields will revert the style to a value matching the defaults in the Docs editor. # A TextStyle that only includes the changes made in this suggestion. This can be used along with the text_style_suggestion_state to see which fields have changed and their new values.
                          &quot;italic&quot;: True or False, # Whether or not the text is italicized.
                          &quot;baselineOffset&quot;: &quot;A String&quot;, # The text&#x27;s vertical offset from its normal position. Text with `SUPERSCRIPT` or `SUBSCRIPT` baseline offsets is automatically rendered in a smaller font size, computed based on the `font_size` field. The `font_size` itself is not affected by changes in this field.
                          &quot;bold&quot;: True or False, # Whether or not the text is rendered as bold.
                          &quot;fontSize&quot;: { # A magnitude in a single direction in the specified units. # The size of the text&#x27;s font.
                            &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                            &quot;magnitude&quot;: 3.14, # The magnitude.
                          },
                          &quot;foregroundColor&quot;: { # A color that can either be fully opaque or fully transparent. # The foreground color of the text. If set, the color is either an RGB color or transparent, depending on the `color` field.
                            &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                              &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                                &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                                &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                                &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                              },
                            },
                          },
                          &quot;backgroundColor&quot;: { # A color that can either be fully opaque or fully transparent. # The background color of the text. If set, the color is either an RGB color or transparent, depending on the `color` field.
                            &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                              &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                                &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                                &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                                &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                              },
                            },
                          },
                          &quot;link&quot;: { # A reference to another portion of a document or an external URL resource. # The hyperlink destination of the text. If unset, there is no link. Links are not inherited from parent text. Changing the link in an update request causes some other changes to the text style of the range: * When setting a link, the text foreground color will be updated to the default link color and the text will be underlined. If these fields are modified in the same request, those values will be used instead of the link defaults. * Setting a link on a text range that overlaps with an existing link will also update the existing link to point to the new URL. * Links are not settable on newline characters. As a result, setting a link on a text range that crosses a paragraph boundary, such as `&quot;ABC\n123&quot;`, will separate the newline character(s) into their own text runs. The link will be applied separately to the runs before and after the newline. * Removing a link will update the text style of the range to match the style of the preceding text (or the default text styles if the preceding text is another link) unless different styles are being set in the same request.
                            &quot;bookmarkId&quot;: &quot;A String&quot;, # The ID of a bookmark in this document.
                            &quot;url&quot;: &quot;A String&quot;, # An external URL.
                            &quot;headingId&quot;: &quot;A String&quot;, # The ID of a heading in this document.
                          },
                          &quot;strikethrough&quot;: True or False, # Whether or not the text is struck through.
                          &quot;weightedFontFamily&quot;: { # Represents a font family and weight of text. # The font family and rendered weight of the text. If an update request specifies values for both `weighted_font_family` and `bold`, the `weighted_font_family` is applied first, then `bold`. If `weighted_font_family#weight` is not set, it defaults to `400`. If `weighted_font_family` is set, then `weighted_font_family#font_family` must also be set with a non-empty value. Otherwise, a 400 bad request error is returned.
                            &quot;fontFamily&quot;: &quot;A String&quot;, # The font family of the text. The font family can be any font from the Font menu in Docs or from [Google Fonts] (https://fonts.google.com/). If the font name is unrecognized, the text is rendered in `Arial`.
                            &quot;weight&quot;: 42, # The weight of the font. This field can have any value that is a multiple of `100` between `100` and `900`, inclusive. This range corresponds to the numerical values described in the CSS 2.1 Specification, [section 15.6](https://www.w3.org/TR/CSS21/fonts.html#font-boldness), with non-numerical values disallowed. The default value is `400` (&quot;normal&quot;). The font weight makes up just one component of the rendered font weight. The rendered weight is determined by a combination of the `weight` and the text style&#x27;s resolved `bold` value, after accounting for inheritance: * If the text is bold and the weight is less than `400`, the rendered weight is 400. * If the text is bold and the weight is greater than or equal to `400` but is less than `700`, the rendered weight is `700`. * If the weight is greater than or equal to `700`, the rendered weight is equal to the weight. * If the text is not bold, the rendered weight is equal to the weight.
                          },
                          &quot;underline&quot;: True or False, # Whether or not the text is underlined.
                          &quot;smallCaps&quot;: True or False, # Whether or not the text is in small capital letters.
                        },
                      },
                    },
                    &quot;type&quot;: &quot;A String&quot;, # The type of this auto text.
                    &quot;textStyle&quot;: { # Represents the styling that can be applied to text. Inherited text styles are represented as unset fields in this message. A text style&#x27;s parent depends on where the text style is defined: * The TextStyle of text in a Paragraph inherits from the paragraph&#x27;s corresponding named style type. * The TextStyle on a named style inherits from the normal text named style. * The TextStyle of the normal text named style inherits from the default text style in the Docs editor. * The TextStyle on a Paragraph element that is contained in a table may inherit its text style from the table style. If the text style does not inherit from a parent, unsetting fields will revert the style to a value matching the defaults in the Docs editor. # The text style of this AutoText.
                      &quot;italic&quot;: True or False, # Whether or not the text is italicized.
                      &quot;baselineOffset&quot;: &quot;A String&quot;, # The text&#x27;s vertical offset from its normal position. Text with `SUPERSCRIPT` or `SUBSCRIPT` baseline offsets is automatically rendered in a smaller font size, computed based on the `font_size` field. The `font_size` itself is not affected by changes in this field.
                      &quot;bold&quot;: True or False, # Whether or not the text is rendered as bold.
                      &quot;fontSize&quot;: { # A magnitude in a single direction in the specified units. # The size of the text&#x27;s font.
                        &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                        &quot;magnitude&quot;: 3.14, # The magnitude.
                      },
                      &quot;foregroundColor&quot;: { # A color that can either be fully opaque or fully transparent. # The foreground color of the text. If set, the color is either an RGB color or transparent, depending on the `color` field.
                        &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                          &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                            &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                            &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                            &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                          },
                        },
                      },
                      &quot;backgroundColor&quot;: { # A color that can either be fully opaque or fully transparent. # The background color of the text. If set, the color is either an RGB color or transparent, depending on the `color` field.
                        &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                          &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                            &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                            &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                            &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                          },
                        },
                      },
                      &quot;link&quot;: { # A reference to another portion of a document or an external URL resource. # The hyperlink destination of the text. If unset, there is no link. Links are not inherited from parent text. Changing the link in an update request causes some other changes to the text style of the range: * When setting a link, the text foreground color will be updated to the default link color and the text will be underlined. If these fields are modified in the same request, those values will be used instead of the link defaults. * Setting a link on a text range that overlaps with an existing link will also update the existing link to point to the new URL. * Links are not settable on newline characters. As a result, setting a link on a text range that crosses a paragraph boundary, such as `&quot;ABC\n123&quot;`, will separate the newline character(s) into their own text runs. The link will be applied separately to the runs before and after the newline. * Removing a link will update the text style of the range to match the style of the preceding text (or the default text styles if the preceding text is another link) unless different styles are being set in the same request.
                        &quot;bookmarkId&quot;: &quot;A String&quot;, # The ID of a bookmark in this document.
                        &quot;url&quot;: &quot;A String&quot;, # An external URL.
                        &quot;headingId&quot;: &quot;A String&quot;, # The ID of a heading in this document.
                      },
                      &quot;strikethrough&quot;: True or False, # Whether or not the text is struck through.
                      &quot;weightedFontFamily&quot;: { # Represents a font family and weight of text. # The font family and rendered weight of the text. If an update request specifies values for both `weighted_font_family` and `bold`, the `weighted_font_family` is applied first, then `bold`. If `weighted_font_family#weight` is not set, it defaults to `400`. If `weighted_font_family` is set, then `weighted_font_family#font_family` must also be set with a non-empty value. Otherwise, a 400 bad request error is returned.
                        &quot;fontFamily&quot;: &quot;A String&quot;, # The font family of the text. The font family can be any font from the Font menu in Docs or from [Google Fonts] (https://fonts.google.com/). If the font name is unrecognized, the text is rendered in `Arial`.
                        &quot;weight&quot;: 42, # The weight of the font. This field can have any value that is a multiple of `100` between `100` and `900`, inclusive. This range corresponds to the numerical values described in the CSS 2.1 Specification, [section 15.6](https://www.w3.org/TR/CSS21/fonts.html#font-boldness), with non-numerical values disallowed. The default value is `400` (&quot;normal&quot;). The font weight makes up just one component of the rendered font weight. The rendered weight is determined by a combination of the `weight` and the text style&#x27;s resolved `bold` value, after accounting for inheritance: * If the text is bold and the weight is less than `400`, the rendered weight is 400. * If the text is bold and the weight is greater than or equal to `400` but is less than `700`, the rendered weight is `700`. * If the weight is greater than or equal to `700`, the rendered weight is equal to the weight. * If the text is not bold, the rendered weight is equal to the weight.
                      },
                      &quot;underline&quot;: True or False, # Whether or not the text is underlined.
                      &quot;smallCaps&quot;: True or False, # Whether or not the text is in small capital letters.
                    },
                  },
                  &quot;inlineObjectElement&quot;: { # A ParagraphElement that contains an InlineObject. # An inline object paragraph element.
                    &quot;suggestedDeletionIds&quot;: [ # The suggested deletion IDs. If empty, then there are no suggested deletions of this content.
                      &quot;A String&quot;,
                    ],
                    &quot;suggestedInsertionIds&quot;: [ # The suggested insertion IDs. An InlineObjectElement may have multiple insertion IDs if it is a nested suggested change. If empty, then this is not a suggested insertion.
                      &quot;A String&quot;,
                    ],
                    &quot;suggestedTextStyleChanges&quot;: { # The suggested text style changes to this InlineObject, keyed by suggestion ID.
                      &quot;a_key&quot;: { # A suggested change to a TextStyle.
                        &quot;textStyleSuggestionState&quot;: { # A mask that indicates which of the fields on the base TextStyle have been changed in this suggestion. For any field set to true, there is a new suggested value. # A mask that indicates which of the fields on the base TextStyle have been changed in this suggestion.
                          &quot;backgroundColorSuggested&quot;: True or False, # Indicates if there was a suggested change to background_color.
                          &quot;fontSizeSuggested&quot;: True or False, # Indicates if there was a suggested change to font_size.
                          &quot;boldSuggested&quot;: True or False, # Indicates if there was a suggested change to bold.
                          &quot;baselineOffsetSuggested&quot;: True or False, # Indicates if there was a suggested change to baseline_offset.
                          &quot;foregroundColorSuggested&quot;: True or False, # Indicates if there was a suggested change to foreground_color.
                          &quot;italicSuggested&quot;: True or False, # Indicates if there was a suggested change to italic.
                          &quot;linkSuggested&quot;: True or False, # Indicates if there was a suggested change to link.
                          &quot;underlineSuggested&quot;: True or False, # Indicates if there was a suggested change to underline.
                          &quot;weightedFontFamilySuggested&quot;: True or False, # Indicates if there was a suggested change to weighted_font_family.
                          &quot;smallCapsSuggested&quot;: True or False, # Indicates if there was a suggested change to small_caps.
                          &quot;strikethroughSuggested&quot;: True or False, # Indicates if there was a suggested change to strikethrough.
                        },
                        &quot;textStyle&quot;: { # Represents the styling that can be applied to text. Inherited text styles are represented as unset fields in this message. A text style&#x27;s parent depends on where the text style is defined: * The TextStyle of text in a Paragraph inherits from the paragraph&#x27;s corresponding named style type. * The TextStyle on a named style inherits from the normal text named style. * The TextStyle of the normal text named style inherits from the default text style in the Docs editor. * The TextStyle on a Paragraph element that is contained in a table may inherit its text style from the table style. If the text style does not inherit from a parent, unsetting fields will revert the style to a value matching the defaults in the Docs editor. # A TextStyle that only includes the changes made in this suggestion. This can be used along with the text_style_suggestion_state to see which fields have changed and their new values.
                          &quot;italic&quot;: True or False, # Whether or not the text is italicized.
                          &quot;baselineOffset&quot;: &quot;A String&quot;, # The text&#x27;s vertical offset from its normal position. Text with `SUPERSCRIPT` or `SUBSCRIPT` baseline offsets is automatically rendered in a smaller font size, computed based on the `font_size` field. The `font_size` itself is not affected by changes in this field.
                          &quot;bold&quot;: True or False, # Whether or not the text is rendered as bold.
                          &quot;fontSize&quot;: { # A magnitude in a single direction in the specified units. # The size of the text&#x27;s font.
                            &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                            &quot;magnitude&quot;: 3.14, # The magnitude.
                          },
                          &quot;foregroundColor&quot;: { # A color that can either be fully opaque or fully transparent. # The foreground color of the text. If set, the color is either an RGB color or transparent, depending on the `color` field.
                            &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                              &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                                &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                                &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                                &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                              },
                            },
                          },
                          &quot;backgroundColor&quot;: { # A color that can either be fully opaque or fully transparent. # The background color of the text. If set, the color is either an RGB color or transparent, depending on the `color` field.
                            &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                              &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                                &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                                &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                                &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                              },
                            },
                          },
                          &quot;link&quot;: { # A reference to another portion of a document or an external URL resource. # The hyperlink destination of the text. If unset, there is no link. Links are not inherited from parent text. Changing the link in an update request causes some other changes to the text style of the range: * When setting a link, the text foreground color will be updated to the default link color and the text will be underlined. If these fields are modified in the same request, those values will be used instead of the link defaults. * Setting a link on a text range that overlaps with an existing link will also update the existing link to point to the new URL. * Links are not settable on newline characters. As a result, setting a link on a text range that crosses a paragraph boundary, such as `&quot;ABC\n123&quot;`, will separate the newline character(s) into their own text runs. The link will be applied separately to the runs before and after the newline. * Removing a link will update the text style of the range to match the style of the preceding text (or the default text styles if the preceding text is another link) unless different styles are being set in the same request.
                            &quot;bookmarkId&quot;: &quot;A String&quot;, # The ID of a bookmark in this document.
                            &quot;url&quot;: &quot;A String&quot;, # An external URL.
                            &quot;headingId&quot;: &quot;A String&quot;, # The ID of a heading in this document.
                          },
                          &quot;strikethrough&quot;: True or False, # Whether or not the text is struck through.
                          &quot;weightedFontFamily&quot;: { # Represents a font family and weight of text. # The font family and rendered weight of the text. If an update request specifies values for both `weighted_font_family` and `bold`, the `weighted_font_family` is applied first, then `bold`. If `weighted_font_family#weight` is not set, it defaults to `400`. If `weighted_font_family` is set, then `weighted_font_family#font_family` must also be set with a non-empty value. Otherwise, a 400 bad request error is returned.
                            &quot;fontFamily&quot;: &quot;A String&quot;, # The font family of the text. The font family can be any font from the Font menu in Docs or from [Google Fonts] (https://fonts.google.com/). If the font name is unrecognized, the text is rendered in `Arial`.
                            &quot;weight&quot;: 42, # The weight of the font. This field can have any value that is a multiple of `100` between `100` and `900`, inclusive. This range corresponds to the numerical values described in the CSS 2.1 Specification, [section 15.6](https://www.w3.org/TR/CSS21/fonts.html#font-boldness), with non-numerical values disallowed. The default value is `400` (&quot;normal&quot;). The font weight makes up just one component of the rendered font weight. The rendered weight is determined by a combination of the `weight` and the text style&#x27;s resolved `bold` value, after accounting for inheritance: * If the text is bold and the weight is less than `400`, the rendered weight is 400. * If the text is bold and the weight is greater than or equal to `400` but is less than `700`, the rendered weight is `700`. * If the weight is greater than or equal to `700`, the rendered weight is equal to the weight. * If the text is not bold, the rendered weight is equal to the weight.
                          },
                          &quot;underline&quot;: True or False, # Whether or not the text is underlined.
                          &quot;smallCaps&quot;: True or False, # Whether or not the text is in small capital letters.
                        },
                      },
                    },
                    &quot;inlineObjectId&quot;: &quot;A String&quot;, # The ID of the InlineObject this element contains.
                    &quot;textStyle&quot;: { # Represents the styling that can be applied to text. Inherited text styles are represented as unset fields in this message. A text style&#x27;s parent depends on where the text style is defined: * The TextStyle of text in a Paragraph inherits from the paragraph&#x27;s corresponding named style type. * The TextStyle on a named style inherits from the normal text named style. * The TextStyle of the normal text named style inherits from the default text style in the Docs editor. * The TextStyle on a Paragraph element that is contained in a table may inherit its text style from the table style. If the text style does not inherit from a parent, unsetting fields will revert the style to a value matching the defaults in the Docs editor. # The text style of this InlineObjectElement. Similar to text content, like text runs and footnote references, the text style of an inline object element can affect content layout as well as the styling of text inserted adjacent to it.
                      &quot;italic&quot;: True or False, # Whether or not the text is italicized.
                      &quot;baselineOffset&quot;: &quot;A String&quot;, # The text&#x27;s vertical offset from its normal position. Text with `SUPERSCRIPT` or `SUBSCRIPT` baseline offsets is automatically rendered in a smaller font size, computed based on the `font_size` field. The `font_size` itself is not affected by changes in this field.
                      &quot;bold&quot;: True or False, # Whether or not the text is rendered as bold.
                      &quot;fontSize&quot;: { # A magnitude in a single direction in the specified units. # The size of the text&#x27;s font.
                        &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                        &quot;magnitude&quot;: 3.14, # The magnitude.
                      },
                      &quot;foregroundColor&quot;: { # A color that can either be fully opaque or fully transparent. # The foreground color of the text. If set, the color is either an RGB color or transparent, depending on the `color` field.
                        &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                          &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                            &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                            &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                            &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                          },
                        },
                      },
                      &quot;backgroundColor&quot;: { # A color that can either be fully opaque or fully transparent. # The background color of the text. If set, the color is either an RGB color or transparent, depending on the `color` field.
                        &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                          &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                            &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                            &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                            &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                          },
                        },
                      },
                      &quot;link&quot;: { # A reference to another portion of a document or an external URL resource. # The hyperlink destination of the text. If unset, there is no link. Links are not inherited from parent text. Changing the link in an update request causes some other changes to the text style of the range: * When setting a link, the text foreground color will be updated to the default link color and the text will be underlined. If these fields are modified in the same request, those values will be used instead of the link defaults. * Setting a link on a text range that overlaps with an existing link will also update the existing link to point to the new URL. * Links are not settable on newline characters. As a result, setting a link on a text range that crosses a paragraph boundary, such as `&quot;ABC\n123&quot;`, will separate the newline character(s) into their own text runs. The link will be applied separately to the runs before and after the newline. * Removing a link will update the text style of the range to match the style of the preceding text (or the default text styles if the preceding text is another link) unless different styles are being set in the same request.
                        &quot;bookmarkId&quot;: &quot;A String&quot;, # The ID of a bookmark in this document.
                        &quot;url&quot;: &quot;A String&quot;, # An external URL.
                        &quot;headingId&quot;: &quot;A String&quot;, # The ID of a heading in this document.
                      },
                      &quot;strikethrough&quot;: True or False, # Whether or not the text is struck through.
                      &quot;weightedFontFamily&quot;: { # Represents a font family and weight of text. # The font family and rendered weight of the text. If an update request specifies values for both `weighted_font_family` and `bold`, the `weighted_font_family` is applied first, then `bold`. If `weighted_font_family#weight` is not set, it defaults to `400`. If `weighted_font_family` is set, then `weighted_font_family#font_family` must also be set with a non-empty value. Otherwise, a 400 bad request error is returned.
                        &quot;fontFamily&quot;: &quot;A String&quot;, # The font family of the text. The font family can be any font from the Font menu in Docs or from [Google Fonts] (https://fonts.google.com/). If the font name is unrecognized, the text is rendered in `Arial`.
                        &quot;weight&quot;: 42, # The weight of the font. This field can have any value that is a multiple of `100` between `100` and `900`, inclusive. This range corresponds to the numerical values described in the CSS 2.1 Specification, [section 15.6](https://www.w3.org/TR/CSS21/fonts.html#font-boldness), with non-numerical values disallowed. The default value is `400` (&quot;normal&quot;). The font weight makes up just one component of the rendered font weight. The rendered weight is determined by a combination of the `weight` and the text style&#x27;s resolved `bold` value, after accounting for inheritance: * If the text is bold and the weight is less than `400`, the rendered weight is 400. * If the text is bold and the weight is greater than or equal to `400` but is less than `700`, the rendered weight is `700`. * If the weight is greater than or equal to `700`, the rendered weight is equal to the weight. * If the text is not bold, the rendered weight is equal to the weight.
                      },
                      &quot;underline&quot;: True or False, # Whether or not the text is underlined.
                      &quot;smallCaps&quot;: True or False, # Whether or not the text is in small capital letters.
                    },
                  },
                  &quot;footnoteReference&quot;: { # A ParagraphElement representing a footnote reference. A footnote reference is the inline content rendered with a number and is used to identify the footnote. # A footnote reference paragraph element.
                    &quot;footnoteId&quot;: &quot;A String&quot;, # The ID of the footnote that contains the content of this footnote reference.
                    &quot;suggestedInsertionIds&quot;: [ # The suggested insertion IDs. A FootnoteReference may have multiple insertion IDs if it is a nested suggested change. If empty, then this is not a suggested insertion.
                      &quot;A String&quot;,
                    ],
                    &quot;footnoteNumber&quot;: &quot;A String&quot;, # The rendered number of this footnote.
                    &quot;suggestedDeletionIds&quot;: [ # The suggested deletion IDs. If empty, then there are no suggested deletions of this content.
                      &quot;A String&quot;,
                    ],
                    &quot;suggestedTextStyleChanges&quot;: { # The suggested text style changes to this FootnoteReference, keyed by suggestion ID.
                      &quot;a_key&quot;: { # A suggested change to a TextStyle.
                        &quot;textStyleSuggestionState&quot;: { # A mask that indicates which of the fields on the base TextStyle have been changed in this suggestion. For any field set to true, there is a new suggested value. # A mask that indicates which of the fields on the base TextStyle have been changed in this suggestion.
                          &quot;backgroundColorSuggested&quot;: True or False, # Indicates if there was a suggested change to background_color.
                          &quot;fontSizeSuggested&quot;: True or False, # Indicates if there was a suggested change to font_size.
                          &quot;boldSuggested&quot;: True or False, # Indicates if there was a suggested change to bold.
                          &quot;baselineOffsetSuggested&quot;: True or False, # Indicates if there was a suggested change to baseline_offset.
                          &quot;foregroundColorSuggested&quot;: True or False, # Indicates if there was a suggested change to foreground_color.
                          &quot;italicSuggested&quot;: True or False, # Indicates if there was a suggested change to italic.
                          &quot;linkSuggested&quot;: True or False, # Indicates if there was a suggested change to link.
                          &quot;underlineSuggested&quot;: True or False, # Indicates if there was a suggested change to underline.
                          &quot;weightedFontFamilySuggested&quot;: True or False, # Indicates if there was a suggested change to weighted_font_family.
                          &quot;smallCapsSuggested&quot;: True or False, # Indicates if there was a suggested change to small_caps.
                          &quot;strikethroughSuggested&quot;: True or False, # Indicates if there was a suggested change to strikethrough.
                        },
                        &quot;textStyle&quot;: { # Represents the styling that can be applied to text. Inherited text styles are represented as unset fields in this message. A text style&#x27;s parent depends on where the text style is defined: * The TextStyle of text in a Paragraph inherits from the paragraph&#x27;s corresponding named style type. * The TextStyle on a named style inherits from the normal text named style. * The TextStyle of the normal text named style inherits from the default text style in the Docs editor. * The TextStyle on a Paragraph element that is contained in a table may inherit its text style from the table style. If the text style does not inherit from a parent, unsetting fields will revert the style to a value matching the defaults in the Docs editor. # A TextStyle that only includes the changes made in this suggestion. This can be used along with the text_style_suggestion_state to see which fields have changed and their new values.
                          &quot;italic&quot;: True or False, # Whether or not the text is italicized.
                          &quot;baselineOffset&quot;: &quot;A String&quot;, # The text&#x27;s vertical offset from its normal position. Text with `SUPERSCRIPT` or `SUBSCRIPT` baseline offsets is automatically rendered in a smaller font size, computed based on the `font_size` field. The `font_size` itself is not affected by changes in this field.
                          &quot;bold&quot;: True or False, # Whether or not the text is rendered as bold.
                          &quot;fontSize&quot;: { # A magnitude in a single direction in the specified units. # The size of the text&#x27;s font.
                            &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                            &quot;magnitude&quot;: 3.14, # The magnitude.
                          },
                          &quot;foregroundColor&quot;: { # A color that can either be fully opaque or fully transparent. # The foreground color of the text. If set, the color is either an RGB color or transparent, depending on the `color` field.
                            &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                              &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                                &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                                &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                                &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                              },
                            },
                          },
                          &quot;backgroundColor&quot;: { # A color that can either be fully opaque or fully transparent. # The background color of the text. If set, the color is either an RGB color or transparent, depending on the `color` field.
                            &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                              &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                                &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                                &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                                &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                              },
                            },
                          },
                          &quot;link&quot;: { # A reference to another portion of a document or an external URL resource. # The hyperlink destination of the text. If unset, there is no link. Links are not inherited from parent text. Changing the link in an update request causes some other changes to the text style of the range: * When setting a link, the text foreground color will be updated to the default link color and the text will be underlined. If these fields are modified in the same request, those values will be used instead of the link defaults. * Setting a link on a text range that overlaps with an existing link will also update the existing link to point to the new URL. * Links are not settable on newline characters. As a result, setting a link on a text range that crosses a paragraph boundary, such as `&quot;ABC\n123&quot;`, will separate the newline character(s) into their own text runs. The link will be applied separately to the runs before and after the newline. * Removing a link will update the text style of the range to match the style of the preceding text (or the default text styles if the preceding text is another link) unless different styles are being set in the same request.
                            &quot;bookmarkId&quot;: &quot;A String&quot;, # The ID of a bookmark in this document.
                            &quot;url&quot;: &quot;A String&quot;, # An external URL.
                            &quot;headingId&quot;: &quot;A String&quot;, # The ID of a heading in this document.
                          },
                          &quot;strikethrough&quot;: True or False, # Whether or not the text is struck through.
                          &quot;weightedFontFamily&quot;: { # Represents a font family and weight of text. # The font family and rendered weight of the text. If an update request specifies values for both `weighted_font_family` and `bold`, the `weighted_font_family` is applied first, then `bold`. If `weighted_font_family#weight` is not set, it defaults to `400`. If `weighted_font_family` is set, then `weighted_font_family#font_family` must also be set with a non-empty value. Otherwise, a 400 bad request error is returned.
                            &quot;fontFamily&quot;: &quot;A String&quot;, # The font family of the text. The font family can be any font from the Font menu in Docs or from [Google Fonts] (https://fonts.google.com/). If the font name is unrecognized, the text is rendered in `Arial`.
                            &quot;weight&quot;: 42, # The weight of the font. This field can have any value that is a multiple of `100` between `100` and `900`, inclusive. This range corresponds to the numerical values described in the CSS 2.1 Specification, [section 15.6](https://www.w3.org/TR/CSS21/fonts.html#font-boldness), with non-numerical values disallowed. The default value is `400` (&quot;normal&quot;). The font weight makes up just one component of the rendered font weight. The rendered weight is determined by a combination of the `weight` and the text style&#x27;s resolved `bold` value, after accounting for inheritance: * If the text is bold and the weight is less than `400`, the rendered weight is 400. * If the text is bold and the weight is greater than or equal to `400` but is less than `700`, the rendered weight is `700`. * If the weight is greater than or equal to `700`, the rendered weight is equal to the weight. * If the text is not bold, the rendered weight is equal to the weight.
                          },
                          &quot;underline&quot;: True or False, # Whether or not the text is underlined.
                          &quot;smallCaps&quot;: True or False, # Whether or not the text is in small capital letters.
                        },
                      },
                    },
                    &quot;textStyle&quot;: { # Represents the styling that can be applied to text. Inherited text styles are represented as unset fields in this message. A text style&#x27;s parent depends on where the text style is defined: * The TextStyle of text in a Paragraph inherits from the paragraph&#x27;s corresponding named style type. * The TextStyle on a named style inherits from the normal text named style. * The TextStyle of the normal text named style inherits from the default text style in the Docs editor. * The TextStyle on a Paragraph element that is contained in a table may inherit its text style from the table style. If the text style does not inherit from a parent, unsetting fields will revert the style to a value matching the defaults in the Docs editor. # The text style of this FootnoteReference.
                      &quot;italic&quot;: True or False, # Whether or not the text is italicized.
                      &quot;baselineOffset&quot;: &quot;A String&quot;, # The text&#x27;s vertical offset from its normal position. Text with `SUPERSCRIPT` or `SUBSCRIPT` baseline offsets is automatically rendered in a smaller font size, computed based on the `font_size` field. The `font_size` itself is not affected by changes in this field.
                      &quot;bold&quot;: True or False, # Whether or not the text is rendered as bold.
                      &quot;fontSize&quot;: { # A magnitude in a single direction in the specified units. # The size of the text&#x27;s font.
                        &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                        &quot;magnitude&quot;: 3.14, # The magnitude.
                      },
                      &quot;foregroundColor&quot;: { # A color that can either be fully opaque or fully transparent. # The foreground color of the text. If set, the color is either an RGB color or transparent, depending on the `color` field.
                        &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                          &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                            &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                            &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                            &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                          },
                        },
                      },
                      &quot;backgroundColor&quot;: { # A color that can either be fully opaque or fully transparent. # The background color of the text. If set, the color is either an RGB color or transparent, depending on the `color` field.
                        &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                          &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                            &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                            &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                            &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                          },
                        },
                      },
                      &quot;link&quot;: { # A reference to another portion of a document or an external URL resource. # The hyperlink destination of the text. If unset, there is no link. Links are not inherited from parent text. Changing the link in an update request causes some other changes to the text style of the range: * When setting a link, the text foreground color will be updated to the default link color and the text will be underlined. If these fields are modified in the same request, those values will be used instead of the link defaults. * Setting a link on a text range that overlaps with an existing link will also update the existing link to point to the new URL. * Links are not settable on newline characters. As a result, setting a link on a text range that crosses a paragraph boundary, such as `&quot;ABC\n123&quot;`, will separate the newline character(s) into their own text runs. The link will be applied separately to the runs before and after the newline. * Removing a link will update the text style of the range to match the style of the preceding text (or the default text styles if the preceding text is another link) unless different styles are being set in the same request.
                        &quot;bookmarkId&quot;: &quot;A String&quot;, # The ID of a bookmark in this document.
                        &quot;url&quot;: &quot;A String&quot;, # An external URL.
                        &quot;headingId&quot;: &quot;A String&quot;, # The ID of a heading in this document.
                      },
                      &quot;strikethrough&quot;: True or False, # Whether or not the text is struck through.
                      &quot;weightedFontFamily&quot;: { # Represents a font family and weight of text. # The font family and rendered weight of the text. If an update request specifies values for both `weighted_font_family` and `bold`, the `weighted_font_family` is applied first, then `bold`. If `weighted_font_family#weight` is not set, it defaults to `400`. If `weighted_font_family` is set, then `weighted_font_family#font_family` must also be set with a non-empty value. Otherwise, a 400 bad request error is returned.
                        &quot;fontFamily&quot;: &quot;A String&quot;, # The font family of the text. The font family can be any font from the Font menu in Docs or from [Google Fonts] (https://fonts.google.com/). If the font name is unrecognized, the text is rendered in `Arial`.
                        &quot;weight&quot;: 42, # The weight of the font. This field can have any value that is a multiple of `100` between `100` and `900`, inclusive. This range corresponds to the numerical values described in the CSS 2.1 Specification, [section 15.6](https://www.w3.org/TR/CSS21/fonts.html#font-boldness), with non-numerical values disallowed. The default value is `400` (&quot;normal&quot;). The font weight makes up just one component of the rendered font weight. The rendered weight is determined by a combination of the `weight` and the text style&#x27;s resolved `bold` value, after accounting for inheritance: * If the text is bold and the weight is less than `400`, the rendered weight is 400. * If the text is bold and the weight is greater than or equal to `400` but is less than `700`, the rendered weight is `700`. * If the weight is greater than or equal to `700`, the rendered weight is equal to the weight. * If the text is not bold, the rendered weight is equal to the weight.
                      },
                      &quot;underline&quot;: True or False, # Whether or not the text is underlined.
                      &quot;smallCaps&quot;: True or False, # Whether or not the text is in small capital letters.
                    },
                  },
                  &quot;startIndex&quot;: 42, # The zero-based start index of this paragraph element, in UTF-16 code units.
                  &quot;endIndex&quot;: 42, # The zero-base end index of this paragraph element, exclusive, in UTF-16 code units.
                  &quot;equation&quot;: { # A ParagraphElement representing an equation. # An equation paragraph element.
                    &quot;suggestedDeletionIds&quot;: [ # The suggested deletion IDs. If empty, then there are no suggested deletions of this content.
                      &quot;A String&quot;,
                    ],
                    &quot;suggestedInsertionIds&quot;: [ # The suggested insertion IDs. A Equation may have multiple insertion IDs if it is a nested suggested change. If empty, then this is not a suggested insertion.
                      &quot;A String&quot;,
                    ],
                  },
                  &quot;columnBreak&quot;: { # A ParagraphElement representing a column break. A column break makes the subsequent text start at the top of the next column. # A column break paragraph element.
                    &quot;suggestedTextStyleChanges&quot;: { # The suggested text style changes to this ColumnBreak, keyed by suggestion ID.
                      &quot;a_key&quot;: { # A suggested change to a TextStyle.
                        &quot;textStyleSuggestionState&quot;: { # A mask that indicates which of the fields on the base TextStyle have been changed in this suggestion. For any field set to true, there is a new suggested value. # A mask that indicates which of the fields on the base TextStyle have been changed in this suggestion.
                          &quot;backgroundColorSuggested&quot;: True or False, # Indicates if there was a suggested change to background_color.
                          &quot;fontSizeSuggested&quot;: True or False, # Indicates if there was a suggested change to font_size.
                          &quot;boldSuggested&quot;: True or False, # Indicates if there was a suggested change to bold.
                          &quot;baselineOffsetSuggested&quot;: True or False, # Indicates if there was a suggested change to baseline_offset.
                          &quot;foregroundColorSuggested&quot;: True or False, # Indicates if there was a suggested change to foreground_color.
                          &quot;italicSuggested&quot;: True or False, # Indicates if there was a suggested change to italic.
                          &quot;linkSuggested&quot;: True or False, # Indicates if there was a suggested change to link.
                          &quot;underlineSuggested&quot;: True or False, # Indicates if there was a suggested change to underline.
                          &quot;weightedFontFamilySuggested&quot;: True or False, # Indicates if there was a suggested change to weighted_font_family.
                          &quot;smallCapsSuggested&quot;: True or False, # Indicates if there was a suggested change to small_caps.
                          &quot;strikethroughSuggested&quot;: True or False, # Indicates if there was a suggested change to strikethrough.
                        },
                        &quot;textStyle&quot;: { # Represents the styling that can be applied to text. Inherited text styles are represented as unset fields in this message. A text style&#x27;s parent depends on where the text style is defined: * The TextStyle of text in a Paragraph inherits from the paragraph&#x27;s corresponding named style type. * The TextStyle on a named style inherits from the normal text named style. * The TextStyle of the normal text named style inherits from the default text style in the Docs editor. * The TextStyle on a Paragraph element that is contained in a table may inherit its text style from the table style. If the text style does not inherit from a parent, unsetting fields will revert the style to a value matching the defaults in the Docs editor. # A TextStyle that only includes the changes made in this suggestion. This can be used along with the text_style_suggestion_state to see which fields have changed and their new values.
                          &quot;italic&quot;: True or False, # Whether or not the text is italicized.
                          &quot;baselineOffset&quot;: &quot;A String&quot;, # The text&#x27;s vertical offset from its normal position. Text with `SUPERSCRIPT` or `SUBSCRIPT` baseline offsets is automatically rendered in a smaller font size, computed based on the `font_size` field. The `font_size` itself is not affected by changes in this field.
                          &quot;bold&quot;: True or False, # Whether or not the text is rendered as bold.
                          &quot;fontSize&quot;: { # A magnitude in a single direction in the specified units. # The size of the text&#x27;s font.
                            &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                            &quot;magnitude&quot;: 3.14, # The magnitude.
                          },
                          &quot;foregroundColor&quot;: { # A color that can either be fully opaque or fully transparent. # The foreground color of the text. If set, the color is either an RGB color or transparent, depending on the `color` field.
                            &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                              &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                                &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                                &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                                &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                              },
                            },
                          },
                          &quot;backgroundColor&quot;: { # A color that can either be fully opaque or fully transparent. # The background color of the text. If set, the color is either an RGB color or transparent, depending on the `color` field.
                            &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                              &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                                &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                                &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                                &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                              },
                            },
                          },
                          &quot;link&quot;: { # A reference to another portion of a document or an external URL resource. # The hyperlink destination of the text. If unset, there is no link. Links are not inherited from parent text. Changing the link in an update request causes some other changes to the text style of the range: * When setting a link, the text foreground color will be updated to the default link color and the text will be underlined. If these fields are modified in the same request, those values will be used instead of the link defaults. * Setting a link on a text range that overlaps with an existing link will also update the existing link to point to the new URL. * Links are not settable on newline characters. As a result, setting a link on a text range that crosses a paragraph boundary, such as `&quot;ABC\n123&quot;`, will separate the newline character(s) into their own text runs. The link will be applied separately to the runs before and after the newline. * Removing a link will update the text style of the range to match the style of the preceding text (or the default text styles if the preceding text is another link) unless different styles are being set in the same request.
                            &quot;bookmarkId&quot;: &quot;A String&quot;, # The ID of a bookmark in this document.
                            &quot;url&quot;: &quot;A String&quot;, # An external URL.
                            &quot;headingId&quot;: &quot;A String&quot;, # The ID of a heading in this document.
                          },
                          &quot;strikethrough&quot;: True or False, # Whether or not the text is struck through.
                          &quot;weightedFontFamily&quot;: { # Represents a font family and weight of text. # The font family and rendered weight of the text. If an update request specifies values for both `weighted_font_family` and `bold`, the `weighted_font_family` is applied first, then `bold`. If `weighted_font_family#weight` is not set, it defaults to `400`. If `weighted_font_family` is set, then `weighted_font_family#font_family` must also be set with a non-empty value. Otherwise, a 400 bad request error is returned.
                            &quot;fontFamily&quot;: &quot;A String&quot;, # The font family of the text. The font family can be any font from the Font menu in Docs or from [Google Fonts] (https://fonts.google.com/). If the font name is unrecognized, the text is rendered in `Arial`.
                            &quot;weight&quot;: 42, # The weight of the font. This field can have any value that is a multiple of `100` between `100` and `900`, inclusive. This range corresponds to the numerical values described in the CSS 2.1 Specification, [section 15.6](https://www.w3.org/TR/CSS21/fonts.html#font-boldness), with non-numerical values disallowed. The default value is `400` (&quot;normal&quot;). The font weight makes up just one component of the rendered font weight. The rendered weight is determined by a combination of the `weight` and the text style&#x27;s resolved `bold` value, after accounting for inheritance: * If the text is bold and the weight is less than `400`, the rendered weight is 400. * If the text is bold and the weight is greater than or equal to `400` but is less than `700`, the rendered weight is `700`. * If the weight is greater than or equal to `700`, the rendered weight is equal to the weight. * If the text is not bold, the rendered weight is equal to the weight.
                          },
                          &quot;underline&quot;: True or False, # Whether or not the text is underlined.
                          &quot;smallCaps&quot;: True or False, # Whether or not the text is in small capital letters.
                        },
                      },
                    },
                    &quot;suggestedDeletionIds&quot;: [ # The suggested deletion IDs. If empty, then there are no suggested deletions of this content.
                      &quot;A String&quot;,
                    ],
                    &quot;textStyle&quot;: { # Represents the styling that can be applied to text. Inherited text styles are represented as unset fields in this message. A text style&#x27;s parent depends on where the text style is defined: * The TextStyle of text in a Paragraph inherits from the paragraph&#x27;s corresponding named style type. * The TextStyle on a named style inherits from the normal text named style. * The TextStyle of the normal text named style inherits from the default text style in the Docs editor. * The TextStyle on a Paragraph element that is contained in a table may inherit its text style from the table style. If the text style does not inherit from a parent, unsetting fields will revert the style to a value matching the defaults in the Docs editor. # The text style of this ColumnBreak. Similar to text content, like text runs and footnote references, the text style of a column break can affect content layout as well as the styling of text inserted adjacent to it.
                      &quot;italic&quot;: True or False, # Whether or not the text is italicized.
                      &quot;baselineOffset&quot;: &quot;A String&quot;, # The text&#x27;s vertical offset from its normal position. Text with `SUPERSCRIPT` or `SUBSCRIPT` baseline offsets is automatically rendered in a smaller font size, computed based on the `font_size` field. The `font_size` itself is not affected by changes in this field.
                      &quot;bold&quot;: True or False, # Whether or not the text is rendered as bold.
                      &quot;fontSize&quot;: { # A magnitude in a single direction in the specified units. # The size of the text&#x27;s font.
                        &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                        &quot;magnitude&quot;: 3.14, # The magnitude.
                      },
                      &quot;foregroundColor&quot;: { # A color that can either be fully opaque or fully transparent. # The foreground color of the text. If set, the color is either an RGB color or transparent, depending on the `color` field.
                        &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                          &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                            &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                            &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                            &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                          },
                        },
                      },
                      &quot;backgroundColor&quot;: { # A color that can either be fully opaque or fully transparent. # The background color of the text. If set, the color is either an RGB color or transparent, depending on the `color` field.
                        &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                          &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                            &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                            &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                            &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                          },
                        },
                      },
                      &quot;link&quot;: { # A reference to another portion of a document or an external URL resource. # The hyperlink destination of the text. If unset, there is no link. Links are not inherited from parent text. Changing the link in an update request causes some other changes to the text style of the range: * When setting a link, the text foreground color will be updated to the default link color and the text will be underlined. If these fields are modified in the same request, those values will be used instead of the link defaults. * Setting a link on a text range that overlaps with an existing link will also update the existing link to point to the new URL. * Links are not settable on newline characters. As a result, setting a link on a text range that crosses a paragraph boundary, such as `&quot;ABC\n123&quot;`, will separate the newline character(s) into their own text runs. The link will be applied separately to the runs before and after the newline. * Removing a link will update the text style of the range to match the style of the preceding text (or the default text styles if the preceding text is another link) unless different styles are being set in the same request.
                        &quot;bookmarkId&quot;: &quot;A String&quot;, # The ID of a bookmark in this document.
                        &quot;url&quot;: &quot;A String&quot;, # An external URL.
                        &quot;headingId&quot;: &quot;A String&quot;, # The ID of a heading in this document.
                      },
                      &quot;strikethrough&quot;: True or False, # Whether or not the text is struck through.
                      &quot;weightedFontFamily&quot;: { # Represents a font family and weight of text. # The font family and rendered weight of the text. If an update request specifies values for both `weighted_font_family` and `bold`, the `weighted_font_family` is applied first, then `bold`. If `weighted_font_family#weight` is not set, it defaults to `400`. If `weighted_font_family` is set, then `weighted_font_family#font_family` must also be set with a non-empty value. Otherwise, a 400 bad request error is returned.
                        &quot;fontFamily&quot;: &quot;A String&quot;, # The font family of the text. The font family can be any font from the Font menu in Docs or from [Google Fonts] (https://fonts.google.com/). If the font name is unrecognized, the text is rendered in `Arial`.
                        &quot;weight&quot;: 42, # The weight of the font. This field can have any value that is a multiple of `100` between `100` and `900`, inclusive. This range corresponds to the numerical values described in the CSS 2.1 Specification, [section 15.6](https://www.w3.org/TR/CSS21/fonts.html#font-boldness), with non-numerical values disallowed. The default value is `400` (&quot;normal&quot;). The font weight makes up just one component of the rendered font weight. The rendered weight is determined by a combination of the `weight` and the text style&#x27;s resolved `bold` value, after accounting for inheritance: * If the text is bold and the weight is less than `400`, the rendered weight is 400. * If the text is bold and the weight is greater than or equal to `400` but is less than `700`, the rendered weight is `700`. * If the weight is greater than or equal to `700`, the rendered weight is equal to the weight. * If the text is not bold, the rendered weight is equal to the weight.
                      },
                      &quot;underline&quot;: True or False, # Whether or not the text is underlined.
                      &quot;smallCaps&quot;: True or False, # Whether or not the text is in small capital letters.
                    },
                    &quot;suggestedInsertionIds&quot;: [ # The suggested insertion IDs. A ColumnBreak may have multiple insertion IDs if it is a nested suggested change. If empty, then this is not a suggested insertion.
                      &quot;A String&quot;,
                    ],
                  },
                },
              ],
              &quot;positionedObjectIds&quot;: [ # The IDs of the positioned objects tethered to this paragraph.
                &quot;A String&quot;,
              ],
              &quot;paragraphStyle&quot;: { # Styles that apply to a whole paragraph. Inherited paragraph styles are represented as unset fields in this message. A paragraph style&#x27;s parent depends on where the paragraph style is defined: * The ParagraphStyle on a Paragraph inherits from the paragraph&#x27;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 is 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. # The style of this paragraph.
                &quot;borderRight&quot;: { # A border around a paragraph. # The border to the right of this paragraph. If unset, the value is inherited from the parent. Paragraph borders cannot be partially updated. When making changes to a paragraph border the new border must be specified in its entirety.
                  &quot;color&quot;: { # A color that can either be fully opaque or fully transparent. # The color of the border.
                    &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                      &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                        &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                        &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                        &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                      },
                    },
                  },
                  &quot;width&quot;: { # A magnitude in a single direction in the specified units. # The width of the border.
                    &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                    &quot;magnitude&quot;: 3.14, # The magnitude.
                  },
                  &quot;padding&quot;: { # A magnitude in a single direction in the specified units. # The padding of the border.
                    &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                    &quot;magnitude&quot;: 3.14, # The magnitude.
                  },
                  &quot;dashStyle&quot;: &quot;A String&quot;, # The dash style of the border.
                },
                &quot;indentFirstLine&quot;: { # A magnitude in a single direction in the specified units. # The amount of indentation for the first line of the paragraph. If unset, the value is inherited from the parent.
                  &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                  &quot;magnitude&quot;: 3.14, # The magnitude.
                },
                &quot;alignment&quot;: &quot;A String&quot;, # The text alignment for this paragraph.
                &quot;lineSpacing&quot;: 3.14, # The amount of space between lines, as a percentage of normal, where normal is represented as 100.0. If unset, the value is inherited from the parent.
                &quot;keepLinesTogether&quot;: True or False, # Whether all lines of the paragraph should be laid out on the same page or column if possible. If unset, the value is inherited from the parent.
                &quot;avoidWidowAndOrphan&quot;: True or False, # Whether to avoid widows and orphans for the paragraph. If unset, the value is inherited from the parent.
                &quot;spaceBelow&quot;: { # A magnitude in a single direction in the specified units. # The amount of extra space below the paragraph. If unset, the value is inherited from the parent.
                  &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                  &quot;magnitude&quot;: 3.14, # The magnitude.
                },
                &quot;borderBetween&quot;: { # A border around a paragraph. # 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 making changes to a paragraph border the new border must be specified in its entirety.
                  &quot;color&quot;: { # A color that can either be fully opaque or fully transparent. # The color of the border.
                    &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                      &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                        &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                        &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                        &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                      },
                    },
                  },
                  &quot;width&quot;: { # A magnitude in a single direction in the specified units. # The width of the border.
                    &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                    &quot;magnitude&quot;: 3.14, # The magnitude.
                  },
                  &quot;padding&quot;: { # A magnitude in a single direction in the specified units. # The padding of the border.
                    &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                    &quot;magnitude&quot;: 3.14, # The magnitude.
                  },
                  &quot;dashStyle&quot;: &quot;A String&quot;, # The dash style of the border.
                },
                &quot;headingId&quot;: &quot;A String&quot;, # The heading ID of the paragraph. If empty, then this paragraph is not a heading. This property is read-only.
                &quot;spaceAbove&quot;: { # A magnitude in a single direction in the specified units. # The amount of extra space above the paragraph. If unset, the value is inherited from the parent.
                  &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                  &quot;magnitude&quot;: 3.14, # The magnitude.
                },
                &quot;direction&quot;: &quot;A String&quot;, # The text direction of this paragraph. If unset, the value defaults to LEFT_TO_RIGHT since paragraph direction is not inherited.
                &quot;namedStyleType&quot;: &quot;A String&quot;, # The named style type of the paragraph. Since updating the named style type affects other properties within ParagraphStyle, the named style type is applied before the other properties are updated.
                &quot;tabStops&quot;: [ # A list of the tab stops for this paragraph. The list of tab stops is not inherited. This property is read-only.
                  { # A tab stop within a paragraph.
                    &quot;offset&quot;: { # A magnitude in a single direction in the specified units. # The offset between this tab stop and the start margin.
                      &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                      &quot;magnitude&quot;: 3.14, # The magnitude.
                    },
                    &quot;alignment&quot;: &quot;A String&quot;, # The alignment of this tab stop. If unset, the value defaults to START.
                  },
                ],
                &quot;indentStart&quot;: { # A magnitude in a single direction in the specified units. # The amount of indentation for the paragraph on the side that corresponds to the start of the text, based on the current paragraph direction. If unset, the value is inherited from the parent.
                  &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                  &quot;magnitude&quot;: 3.14, # The magnitude.
                },
                &quot;keepWithNext&quot;: True or False, # Whether at least a part of this paragraph should be laid out on the same page or column as the next paragraph if possible. If unset, the value is inherited from the parent.
                &quot;borderTop&quot;: { # A border around a paragraph. # 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 making changes to a paragraph border the new border must be specified in its entirety.
                  &quot;color&quot;: { # A color that can either be fully opaque or fully transparent. # The color of the border.
                    &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                      &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                        &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                        &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                        &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                      },
                    },
                  },
                  &quot;width&quot;: { # A magnitude in a single direction in the specified units. # The width of the border.
                    &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                    &quot;magnitude&quot;: 3.14, # The magnitude.
                  },
                  &quot;padding&quot;: { # A magnitude in a single direction in the specified units. # The padding of the border.
                    &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                    &quot;magnitude&quot;: 3.14, # The magnitude.
                  },
                  &quot;dashStyle&quot;: &quot;A String&quot;, # The dash style of the border.
                },
                &quot;borderLeft&quot;: { # A border around a paragraph. # The border to the left of this paragraph. If unset, the value is inherited from the parent. Paragraph borders cannot be partially updated. When making changes to a paragraph border the new border must be specified in its entirety.
                  &quot;color&quot;: { # A color that can either be fully opaque or fully transparent. # The color of the border.
                    &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                      &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                        &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                        &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                        &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                      },
                    },
                  },
                  &quot;width&quot;: { # A magnitude in a single direction in the specified units. # The width of the border.
                    &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                    &quot;magnitude&quot;: 3.14, # The magnitude.
                  },
                  &quot;padding&quot;: { # A magnitude in a single direction in the specified units. # The padding of the border.
                    &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                    &quot;magnitude&quot;: 3.14, # The magnitude.
                  },
                  &quot;dashStyle&quot;: &quot;A String&quot;, # The dash style of the border.
                },
                &quot;borderBottom&quot;: { # A border around a paragraph. # 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 making changes to a paragraph border the new border must be specified in its entirety.
                  &quot;color&quot;: { # A color that can either be fully opaque or fully transparent. # The color of the border.
                    &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                      &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                        &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                        &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                        &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                      },
                    },
                  },
                  &quot;width&quot;: { # A magnitude in a single direction in the specified units. # The width of the border.
                    &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                    &quot;magnitude&quot;: 3.14, # The magnitude.
                  },
                  &quot;padding&quot;: { # A magnitude in a single direction in the specified units. # The padding of the border.
                    &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                    &quot;magnitude&quot;: 3.14, # The magnitude.
                  },
                  &quot;dashStyle&quot;: &quot;A String&quot;, # The dash style of the border.
                },
                &quot;shading&quot;: { # The shading of a paragraph. # The shading of the paragraph. If unset, the value is inherited from the parent.
                  &quot;backgroundColor&quot;: { # A color that can either be fully opaque or fully transparent. # The background color of this paragraph shading.
                    &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                      &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                        &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                        &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                        &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                      },
                    },
                  },
                },
                &quot;indentEnd&quot;: { # A magnitude in a single direction in the specified units. # 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.
                  &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                  &quot;magnitude&quot;: 3.14, # The magnitude.
                },
                &quot;spacingMode&quot;: &quot;A String&quot;, # The spacing mode for the paragraph.
              },
            },
            &quot;startIndex&quot;: 42, # The zero-based start index of this structural element, in UTF-16 code units.
            &quot;endIndex&quot;: 42, # The zero-based end index of this structural element, exclusive, in UTF-16 code units.
            &quot;tableOfContents&quot;: { # A StructuralElement representing a table of contents. # A table of contents type of structural element.
              &quot;suggestedInsertionIds&quot;: [ # The suggested insertion IDs. A TableOfContents may have multiple insertion IDs if it is a nested suggested change. If empty, then this is not a suggested insertion.
                &quot;A String&quot;,
              ],
              &quot;content&quot;: [ # The content of the table of contents.
                # Object with schema name: StructuralElement
              ],
              &quot;suggestedDeletionIds&quot;: [ # The suggested deletion IDs. If empty, then there are no suggested deletions of this content.
                &quot;A String&quot;,
              ],
            },
            &quot;table&quot;: { # A StructuralElement representing a table. # A table type of structural element.
              &quot;tableStyle&quot;: { # Styles that apply to a table. # The style of the table.
                &quot;tableColumnProperties&quot;: [ # The properties of each column. Note that in Docs, tables contain rows and rows contain cells, similar to HTML. So the properties for a row can be found on the row&#x27;s table_row_style.
                  { # The properties of a column in a table.
                    &quot;widthType&quot;: &quot;A String&quot;, # The width type of the column.
                    &quot;width&quot;: { # A magnitude in a single direction in the specified units. # The width of the column. Set when the column&#x27;s `width_type` is FIXED_WIDTH.
                      &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                      &quot;magnitude&quot;: 3.14, # The magnitude.
                    },
                  },
                ],
              },
              &quot;suggestedInsertionIds&quot;: [ # The suggested insertion IDs. A Table may have multiple insertion IDs if it is a nested suggested change. If empty, then this is not a suggested insertion.
                &quot;A String&quot;,
              ],
              &quot;tableRows&quot;: [ # The contents and style of each row.
                { # The contents and style of a row in a Table.
                  &quot;suggestedDeletionIds&quot;: [ # The suggested deletion IDs. If empty, then there are no suggested deletions of this content.
                    &quot;A String&quot;,
                  ],
                  &quot;suggestedInsertionIds&quot;: [ # The suggested insertion IDs. A TableRow may have multiple insertion IDs if it is a nested suggested change. If empty, then this is not a suggested insertion.
                    &quot;A String&quot;,
                  ],
                  &quot;suggestedTableRowStyleChanges&quot;: { # The suggested style changes to this row, keyed by suggestion ID.
                    &quot;a_key&quot;: { # A suggested change to a TableRowStyle.
                      &quot;tableRowStyleSuggestionState&quot;: { # A mask that indicates which of the fields on the base TableRowStyle have been changed in this suggestion. For any field set to true, there is a new suggested value. # A mask that indicates which of the fields on the base TableRowStyle have been changed in this suggestion.
                        &quot;minRowHeightSuggested&quot;: True or False, # Indicates if there was a suggested change to min_row_height.
                      },
                      &quot;tableRowStyle&quot;: { # Styles that apply to a table row. # A TableRowStyle that only includes the changes made in this suggestion. This can be used along with the table_row_style_suggestion_state to see which fields have changed and their new values.
                        &quot;minRowHeight&quot;: { # A magnitude in a single direction in the specified units. # The minimum height of the row. The row will be rendered in the Docs editor at a height equal to or greater than this value in order to show all the content in the row&#x27;s cells.
                          &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                          &quot;magnitude&quot;: 3.14, # The magnitude.
                        },
                      },
                    },
                  },
                  &quot;startIndex&quot;: 42, # The zero-based start index of this row, in UTF-16 code units.
                  &quot;tableCells&quot;: [ # The contents and style of each cell in this row. It is possible for a table to be non-rectangular, so some rows may have a different number of cells than other rows in the same table.
                    { # The contents and style of a cell in a Table.
                      &quot;tableCellStyle&quot;: { # The style of a TableCell. Inherited table cell styles are represented as unset fields in this message. A table cell style can inherit from the table&#x27;s style. # The style of the cell.
                        &quot;borderTop&quot;: { # A border around a table cell. Table cell borders cannot be transparent. To hide a table cell border, make its width 0. # The top border of the cell.
                          &quot;width&quot;: { # A magnitude in a single direction in the specified units. # The width of the border.
                            &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                            &quot;magnitude&quot;: 3.14, # The magnitude.
                          },
                          &quot;dashStyle&quot;: &quot;A String&quot;, # The dash style of the border.
                          &quot;color&quot;: { # A color that can either be fully opaque or fully transparent. # The color of the border. This color cannot be transparent.
                            &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                              &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                                &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                                &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                                &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                              },
                            },
                          },
                        },
                        &quot;borderBottom&quot;: { # A border around a table cell. Table cell borders cannot be transparent. To hide a table cell border, make its width 0. # The bottom border of the cell.
                          &quot;width&quot;: { # A magnitude in a single direction in the specified units. # The width of the border.
                            &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                            &quot;magnitude&quot;: 3.14, # The magnitude.
                          },
                          &quot;dashStyle&quot;: &quot;A String&quot;, # The dash style of the border.
                          &quot;color&quot;: { # A color that can either be fully opaque or fully transparent. # The color of the border. This color cannot be transparent.
                            &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                              &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                                &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                                &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                                &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                              },
                            },
                          },
                        },
                        &quot;contentAlignment&quot;: &quot;A String&quot;, # The alignment of the content in the table cell. The default alignment matches the alignment for newly created table cells in the Docs editor.
                        &quot;paddingLeft&quot;: { # A magnitude in a single direction in the specified units. # The left padding of the cell.
                          &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                          &quot;magnitude&quot;: 3.14, # The magnitude.
                        },
                        &quot;backgroundColor&quot;: { # A color that can either be fully opaque or fully transparent. # The background color of the cell.
                          &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                            &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                              &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                              &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                              &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                            },
                          },
                        },
                        &quot;paddingTop&quot;: { # A magnitude in a single direction in the specified units. # The top padding of the cell.
                          &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                          &quot;magnitude&quot;: 3.14, # The magnitude.
                        },
                        &quot;rowSpan&quot;: 42, # The row span of the cell. This property is read-only.
                        &quot;paddingRight&quot;: { # A magnitude in a single direction in the specified units. # The right padding of the cell.
                          &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                          &quot;magnitude&quot;: 3.14, # The magnitude.
                        },
                        &quot;borderRight&quot;: { # A border around a table cell. Table cell borders cannot be transparent. To hide a table cell border, make its width 0. # The right border of the cell.
                          &quot;width&quot;: { # A magnitude in a single direction in the specified units. # The width of the border.
                            &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                            &quot;magnitude&quot;: 3.14, # The magnitude.
                          },
                          &quot;dashStyle&quot;: &quot;A String&quot;, # The dash style of the border.
                          &quot;color&quot;: { # A color that can either be fully opaque or fully transparent. # The color of the border. This color cannot be transparent.
                            &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                              &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                                &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                                &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                                &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                              },
                            },
                          },
                        },
                        &quot;borderLeft&quot;: { # A border around a table cell. Table cell borders cannot be transparent. To hide a table cell border, make its width 0. # The left border of the cell.
                          &quot;width&quot;: { # A magnitude in a single direction in the specified units. # The width of the border.
                            &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                            &quot;magnitude&quot;: 3.14, # The magnitude.
                          },
                          &quot;dashStyle&quot;: &quot;A String&quot;, # The dash style of the border.
                          &quot;color&quot;: { # A color that can either be fully opaque or fully transparent. # The color of the border. This color cannot be transparent.
                            &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                              &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                                &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                                &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                                &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                              },
                            },
                          },
                        },
                        &quot;columnSpan&quot;: 42, # The column span of the cell. This property is read-only.
                        &quot;paddingBottom&quot;: { # A magnitude in a single direction in the specified units. # The bottom padding of the cell.
                          &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                          &quot;magnitude&quot;: 3.14, # The magnitude.
                        },
                      },
                      &quot;content&quot;: [ # The content of the cell.
                        # Object with schema name: StructuralElement
                      ],
                      &quot;suggestedDeletionIds&quot;: [ # The suggested deletion IDs. If empty, then there are no suggested deletions of this content.
                        &quot;A String&quot;,
                      ],
                      &quot;startIndex&quot;: 42, # The zero-based start index of this cell, in UTF-16 code units.
                      &quot;suggestedInsertionIds&quot;: [ # The suggested insertion IDs. A TableCell may have multiple insertion IDs if it is a nested suggested change. If empty, then this is not a suggested insertion.
                        &quot;A String&quot;,
                      ],
                      &quot;suggestedTableCellStyleChanges&quot;: { # The suggested changes to the table cell style, keyed by suggestion ID.
                        &quot;a_key&quot;: { # A suggested change to a TableCellStyle.
                          &quot;tableCellStyle&quot;: { # The style of a TableCell. Inherited table cell styles are represented as unset fields in this message. A table cell style can inherit from the table&#x27;s style. # A TableCellStyle that only includes the changes made in this suggestion. This can be used along with the table_cell_style_suggestion_state to see which fields have changed and their new values.
                            &quot;borderTop&quot;: { # A border around a table cell. Table cell borders cannot be transparent. To hide a table cell border, make its width 0. # The top border of the cell.
                              &quot;width&quot;: { # A magnitude in a single direction in the specified units. # The width of the border.
                                &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                                &quot;magnitude&quot;: 3.14, # The magnitude.
                              },
                              &quot;dashStyle&quot;: &quot;A String&quot;, # The dash style of the border.
                              &quot;color&quot;: { # A color that can either be fully opaque or fully transparent. # The color of the border. This color cannot be transparent.
                                &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                                  &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                                    &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                                    &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                                    &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                                  },
                                },
                              },
                            },
                            &quot;borderBottom&quot;: { # A border around a table cell. Table cell borders cannot be transparent. To hide a table cell border, make its width 0. # The bottom border of the cell.
                              &quot;width&quot;: { # A magnitude in a single direction in the specified units. # The width of the border.
                                &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                                &quot;magnitude&quot;: 3.14, # The magnitude.
                              },
                              &quot;dashStyle&quot;: &quot;A String&quot;, # The dash style of the border.
                              &quot;color&quot;: { # A color that can either be fully opaque or fully transparent. # The color of the border. This color cannot be transparent.
                                &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                                  &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                                    &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                                    &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                                    &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                                  },
                                },
                              },
                            },
                            &quot;contentAlignment&quot;: &quot;A String&quot;, # The alignment of the content in the table cell. The default alignment matches the alignment for newly created table cells in the Docs editor.
                            &quot;paddingLeft&quot;: { # A magnitude in a single direction in the specified units. # The left padding of the cell.
                              &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                              &quot;magnitude&quot;: 3.14, # The magnitude.
                            },
                            &quot;backgroundColor&quot;: { # A color that can either be fully opaque or fully transparent. # The background color of the cell.
                              &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                                &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                                  &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                                  &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                                  &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                                },
                              },
                            },
                            &quot;paddingTop&quot;: { # A magnitude in a single direction in the specified units. # The top padding of the cell.
                              &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                              &quot;magnitude&quot;: 3.14, # The magnitude.
                            },
                            &quot;rowSpan&quot;: 42, # The row span of the cell. This property is read-only.
                            &quot;paddingRight&quot;: { # A magnitude in a single direction in the specified units. # The right padding of the cell.
                              &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                              &quot;magnitude&quot;: 3.14, # The magnitude.
                            },
                            &quot;borderRight&quot;: { # A border around a table cell. Table cell borders cannot be transparent. To hide a table cell border, make its width 0. # The right border of the cell.
                              &quot;width&quot;: { # A magnitude in a single direction in the specified units. # The width of the border.
                                &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                                &quot;magnitude&quot;: 3.14, # The magnitude.
                              },
                              &quot;dashStyle&quot;: &quot;A String&quot;, # The dash style of the border.
                              &quot;color&quot;: { # A color that can either be fully opaque or fully transparent. # The color of the border. This color cannot be transparent.
                                &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                                  &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                                    &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                                    &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                                    &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                                  },
                                },
                              },
                            },
                            &quot;borderLeft&quot;: { # A border around a table cell. Table cell borders cannot be transparent. To hide a table cell border, make its width 0. # The left border of the cell.
                              &quot;width&quot;: { # A magnitude in a single direction in the specified units. # The width of the border.
                                &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                                &quot;magnitude&quot;: 3.14, # The magnitude.
                              },
                              &quot;dashStyle&quot;: &quot;A String&quot;, # The dash style of the border.
                              &quot;color&quot;: { # A color that can either be fully opaque or fully transparent. # The color of the border. This color cannot be transparent.
                                &quot;color&quot;: { # A solid color. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
                                  &quot;rgbColor&quot;: { # An RGB color. # The RGB color value.
                                    &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                                    &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                                    &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                                  },
                                },
                              },
                            },
                            &quot;columnSpan&quot;: 42, # The column span of the cell. This property is read-only.
                            &quot;paddingBottom&quot;: { # A magnitude in a single direction in the specified units. # The bottom padding of the cell.
                              &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                              &quot;magnitude&quot;: 3.14, # The magnitude.
                            },
                          },
                          &quot;tableCellStyleSuggestionState&quot;: { # A mask that indicates which of the fields on the base TableCellStyle have been changed in this suggestion. For any field set to true, there is a new suggested value. # A mask that indicates which of the fields on the base TableCellStyle have been changed in this suggestion.
                            &quot;rowSpanSuggested&quot;: True or False, # Indicates if there was a suggested change to row_span.
                            &quot;columnSpanSuggested&quot;: True or False, # Indicates if there was a suggested change to column_span.
                            &quot;borderBottomSuggested&quot;: True or False, # Indicates if there was a suggested change to border_bottom.
                            &quot;borderLeftSuggested&quot;: True or False, # Indicates if there was a suggested change to border_left.
                            &quot;paddingLeftSuggested&quot;: True or False, # Indicates if there was a suggested change to padding_left.
                            &quot;paddingRightSuggested&quot;: True or False, # Indicates if there was a suggested change to padding_right.
                            &quot;paddingBottomSuggested&quot;: True or False, # Indicates if there was a suggested change to padding_bottom.
                            &quot;paddingTopSuggested&quot;: True or False, # Indicates if there was a suggested change to padding_top.
                            &quot;contentAlignmentSuggested&quot;: True or False, # Indicates if there was a suggested change to content_alignment.
                            &quot;borderRightSuggested&quot;: True or False, # Indicates if there was a suggested change to border_right.
                            &quot;backgroundColorSuggested&quot;: True or False, # Indicates if there was a suggested change to background_color.
                            &quot;borderTopSuggested&quot;: True or False, # Indicates if there was a suggested change to border_top.
                          },
                        },
                      },
                      &quot;endIndex&quot;: 42, # The zero-based end index of this cell, exclusive, in UTF-16 code units.
                    },
                  ],
                  &quot;endIndex&quot;: 42, # The zero-based end index of this row, exclusive, in UTF-16 code units.
                  &quot;tableRowStyle&quot;: { # Styles that apply to a table row. # The style of the table row.
                    &quot;minRowHeight&quot;: { # A magnitude in a single direction in the specified units. # The minimum height of the row. The row will be rendered in the Docs editor at a height equal to or greater than this value in order to show all the content in the row&#x27;s cells.
                      &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                      &quot;magnitude&quot;: 3.14, # The magnitude.
                    },
                  },
                },
              ],
              &quot;suggestedDeletionIds&quot;: [ # The suggested deletion IDs. If empty, then there are no suggested deletions of this content.
                &quot;A String&quot;,
              ],
              &quot;rows&quot;: 42, # Number of rows in the table.
              &quot;columns&quot;: 42, # Number of columns in the table. It is possible for a table to be non-rectangular, so some rows may have a different number of cells.
            },
            &quot;sectionBreak&quot;: { # A StructuralElement representing a section break. A section is a range of content which has the same SectionStyle. A section break represents the start of a new section, and the section style applies to the section after the section break. The document body always begins with a section break. # A section break type of structural element.
              &quot;suggestedInsertionIds&quot;: [ # The suggested insertion IDs. A SectionBreak may have multiple insertion IDs if it is a nested suggested change. If empty, then this is not a suggested insertion.
                &quot;A String&quot;,
              ],
              &quot;sectionStyle&quot;: { # The styling that applies to a section. # The style of the section after this section break.
                &quot;marginLeft&quot;: { # A magnitude in a single direction in the specified units. # The left page margin of the section. If unset, uses margin_left from DocumentStyle. Updating left margin causes columns in this section to resize. Since the margin affects column width, it is applied before column properties. When updating this property, setting a concrete value is required. Unsetting this property results in a 400 bad request error.
                  &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                  &quot;magnitude&quot;: 3.14, # The magnitude.
                },
                &quot;sectionType&quot;: &quot;A String&quot;, # Output only. The type of section.
                &quot;evenPageHeaderId&quot;: &quot;A String&quot;, # The ID of the header used only for even pages. If the value of DocumentStyle&#x27;s use_even_page_header_footer is true, this value is used for the headers on even pages in the section. If it is false, the headers on even pages uses the default_header_id. If unset, the value inherits from the previous SectionBreak&#x27;s SectionStyle. If the value is unset in the first SectionBreak, it inherits from DocumentStyle&#x27;s even_page_header_id. This property is read-only.
                &quot;useFirstPageHeaderFooter&quot;: True or False, # Indicates whether to use the first page header / footer IDs for the first page of the section. If unset, it inherits from DocumentStyle&#x27;s use_first_page_header_footer for the first section. If the value is unset for subsequent sectors, it should be interpreted as false. When updating this property, setting a concrete value is required. Unsetting this property results in a 400 bad request error.
                &quot;marginHeader&quot;: { # A magnitude in a single direction in the specified units. # The header margin of the section. If unset, uses margin_header from DocumentStyle. If updated, use_custom_header_footer_margins is set to true on DocumentStyle. The value of use_custom_header_footer_margins on DocumentStyle indicates if a header margin is being respected for this section. When updating this property, setting a concrete value is required. Unsetting this property results in a 400 bad request error.
                  &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                  &quot;magnitude&quot;: 3.14, # The magnitude.
                },
                &quot;firstPageFooterId&quot;: &quot;A String&quot;, # The ID of the footer used only for the first page of the section. If use_first_page_header_footer is true, this value is used for the footer on the first page of the section. If it is false, the footer on the first page of the section uses the default_footer_id. If unset, the value inherits from the previous SectionBreak&#x27;s SectionStyle. If the value is unset in the first SectionBreak, it inherits from DocumentStyle&#x27;s first_page_footer_id. This property is read-only.
                &quot;firstPageHeaderId&quot;: &quot;A String&quot;, # The ID of the header used only for the first page of the section. If use_first_page_header_footer is true, this value is used for the header on the first page of the section. If it is false, the header on the first page of the section uses the default_header_id. If unset, the value inherits from the previous SectionBreak&#x27;s SectionStyle. If the value is unset in the first SectionBreak, it inherits from DocumentStyle&#x27;s first_page_header_id. This property is read-only.
                &quot;columnSeparatorStyle&quot;: &quot;A String&quot;, # The style of column separators. This style can be set even when there is one column in the section. When updating this property, setting a concrete value is required. Unsetting this property results in a 400 bad request error.
                &quot;marginBottom&quot;: { # A magnitude in a single direction in the specified units. # The bottom page margin of the section. If unset, uses margin_bottom from DocumentStyle. When updating this property, setting a concrete value is required. Unsetting this property results in a 400 bad request error.
                  &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                  &quot;magnitude&quot;: 3.14, # The magnitude.
                },
                &quot;marginFooter&quot;: { # A magnitude in a single direction in the specified units. # The footer margin of the section. If unset, uses margin_footer from DocumentStyle. If updated, use_custom_header_footer_margins is set to true on DocumentStyle. The value of use_custom_header_footer_margins on DocumentStyle indicates if a footer margin is being respected for this section When updating this property, setting a concrete value is required. Unsetting this property results in a 400 bad request error.
                  &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                  &quot;magnitude&quot;: 3.14, # The magnitude.
                },
                &quot;defaultFooterId&quot;: &quot;A String&quot;, # The ID of the default footer. If unset, the value inherits from the previous SectionBreak&#x27;s SectionStyle. If the value is unset in the first SectionBreak, it inherits from DocumentStyle&#x27;s default_footer_id. This property is read-only.
                &quot;marginTop&quot;: { # A magnitude in a single direction in the specified units. # The top page margin of the section. If unset, uses margin_top from DocumentStyle. When updating this property, setting a concrete value is required. Unsetting this property results in a 400 bad request error.
                  &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                  &quot;magnitude&quot;: 3.14, # The magnitude.
                },
                &quot;contentDirection&quot;: &quot;A String&quot;, # The content direction of this section. If unset, the value defaults to LEFT_TO_RIGHT. When updating this property, setting a concrete value is required. Unsetting this property results in a 400 bad request error.
                &quot;evenPageFooterId&quot;: &quot;A String&quot;, # The ID of the footer used only for even pages. If the value of DocumentStyle&#x27;s use_even_page_header_footer is true, this value is used for the footers on even pages in the section. If it is false, the footers on even pages uses the default_footer_id. If unset, the value inherits from the previous SectionBreak&#x27;s SectionStyle. If the value is unset in the first SectionBreak, it inherits from DocumentStyle&#x27;s even_page_footer_id. This property is read-only.
                &quot;marginRight&quot;: { # A magnitude in a single direction in the specified units. # The right page margin of the section. If unset, uses margin_right from DocumentStyle. Updating right margin causes columns in this section to resize. Since the margin affects column width, it is applied before column properties. When updating this property, setting a concrete value is required. Unsetting this property results in a 400 bad request error.
                  &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                  &quot;magnitude&quot;: 3.14, # The magnitude.
                },
                &quot;defaultHeaderId&quot;: &quot;A String&quot;, # The ID of the default header. If unset, the value inherits from the previous SectionBreak&#x27;s SectionStyle. If the value is unset in the first SectionBreak, it inherits from DocumentStyle&#x27;s default_header_id. This property is read-only.
                &quot;pageNumberStart&quot;: 42, # The page number from which to start counting the number of pages for this section. If unset, page numbering continues from the previous section. If the value is unset in the first SectionBreak, refer to DocumentStyle&#x27;s page_number_start. When updating this property, setting a concrete value is required. Unsetting this property results in a 400 bad request error.
                &quot;columnProperties&quot;: [ # The section&#x27;s columns properties. If empty, the section contains one column with the default properties in the Docs editor. A section can be updated to have no more than three columns. When updating this property, setting a concrete value is required. Unsetting this property will result in a 400 bad request error.
                  { # Properties that apply to a section&#x27;s column.
                    &quot;paddingEnd&quot;: { # A magnitude in a single direction in the specified units. # The padding at the end of the column.
                      &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                      &quot;magnitude&quot;: 3.14, # The magnitude.
                    },
                    &quot;width&quot;: { # A magnitude in a single direction in the specified units. # Output only. The width of the column.
                      &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
                      &quot;magnitude&quot;: 3.14, # The magnitude.
                    },
                  },
                ],
              },
              &quot;suggestedDeletionIds&quot;: [ # The suggested deletion IDs. If empty, then there are no suggested deletions of this content.
                &quot;A String&quot;,
              ],
            },
          },
        ],
        &quot;headerId&quot;: &quot;A String&quot;, # The ID of the header.
      },
    },
    &quot;namedRanges&quot;: { # Output only. The named ranges in the document, keyed by name.
      &quot;a_key&quot;: { # A collection of all the NamedRanges in the document that share a given name.
        &quot;namedRanges&quot;: [ # The NamedRanges that share the same name.
          { # A collection of Ranges with the same named range ID. Named ranges allow developers to associate parts of a document with an arbitrary user-defined label so their contents can be programmatically read or edited at a later time. A document can contain multiple named ranges with the same name, but every named range has a unique ID. A named range is created with a single Range, and content inserted inside a named range generally expands that range. However, certain document changes can cause the range to be split into multiple ranges. Named ranges are not private. All applications and collaborators that have access to the document can see its named ranges.
            &quot;namedRangeId&quot;: &quot;A String&quot;, # The ID of the named range.
            &quot;name&quot;: &quot;A String&quot;, # The name of the named range.
            &quot;ranges&quot;: [ # The ranges that belong to this named range.
              { # Specifies a contiguous range of text.
                &quot;segmentId&quot;: &quot;A String&quot;, # The ID of the header, footer or footnote that this range is contained in. An empty segment ID signifies the document&#x27;s body.
                &quot;startIndex&quot;: 42, # The zero-based start index of this range, in UTF-16 code units. In all current uses, a start index must be provided. This field is an Int32Value in order to accommodate future use cases with open-ended ranges.
                &quot;endIndex&quot;: 42, # The zero-based end index of this range, exclusive, in UTF-16 code units. In all current uses, an end index must be provided. This field is an Int32Value in order to accommodate future use cases with open-ended ranges.
              },
            ],
          },
        ],
        &quot;name&quot;: &quot;A String&quot;, # The name that all the named ranges share.
      },
    },
  }</pre>
</div>

</body></html>