<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;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;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;requests&quot;: [ # A list of updates to apply to the document.
      { # A single update to apply to a document.
        &quot;updateTableCellStyle&quot;: { # Updates the style of a range of table cells. # Updates the style of table cells.
          &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;rowIndex&quot;: 42, # The zero-based row index. For example, the second row in the table has a row index of 1.
              &quot;tableStartLocation&quot;: { # A particular location in the document. # The location where the table starts in the document.
                &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;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;columnIndex&quot;: 42, # The zero-based column index. For example, the second column in the table has a column index of 1.
            },
            &quot;columnSpan&quot;: 42, # The column span of the table range.
          },
          &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;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;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;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;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;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;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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                    &quot;green&quot;: 3.14, # The green component of the color, 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;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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                  &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                  &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                },
              },
            },
            &quot;rowSpan&quot;: 42, # The row span of the cell. This property is read-only.
            &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;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;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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                    &quot;green&quot;: 3.14, # The green component of the color, 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;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;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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                    &quot;green&quot;: 3.14, # The green component of the color, 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;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;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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                    &quot;green&quot;: 3.14, # The green component of the color, 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;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;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;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;columnSpan&quot;: 42, # The column 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;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;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;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;updateParagraphStyle&quot;: { # Update the styling of all paragraphs that overlap with the given range. # Updates the paragraph style at 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 `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;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;alignment&quot;: &quot;A String&quot;, # The text alignment for this paragraph.
            &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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                    &quot;green&quot;: 3.14, # The green component of the color, 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;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;spacingMode&quot;: &quot;A String&quot;, # The spacing mode for the paragraph.
            &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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                    &quot;green&quot;: 3.14, # The green component of the color, 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;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;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;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;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;avoidWidowAndOrphan&quot;: True or False, # Whether to avoid widows and orphans for the paragraph. 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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                    &quot;green&quot;: 3.14, # The green component of the color, 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;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;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;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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                    &quot;green&quot;: 3.14, # The green component of the color, 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;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;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;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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                    &quot;green&quot;: 3.14, # The green component of the color, 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;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;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;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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                    &quot;green&quot;: 3.14, # The green component of the color, 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;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;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;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;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;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;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;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;rowIndex&quot;: 42, # The zero-based row index. For example, the second row in the table has a row index of 1.
            &quot;tableStartLocation&quot;: { # A particular location in the document. # The location where the table starts in the document.
              &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;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;columnIndex&quot;: 42, # The zero-based column index. For example, the second column in the table has a column index of 1.
          },
        },
        &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;rowIndex&quot;: 42, # The zero-based row index. For example, the second row in the table has a row index of 1.
            &quot;tableStartLocation&quot;: { # A particular location in the document. # The location where the table starts in the document.
              &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;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;columnIndex&quot;: 42, # The zero-based column index. For example, the second column in the table has a column 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;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;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;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;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;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;rowIndex&quot;: 42, # The zero-based row index. For example, the second row in the table has a row index of 1.
              &quot;tableStartLocation&quot;: { # A particular location in the document. # The location where the table starts in the document.
                &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;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;columnIndex&quot;: 42, # The zero-based column index. For example, the second column in the table has a column index of 1.
            },
            &quot;columnSpan&quot;: 42, # The column span of the table range.
          },
        },
        &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;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;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;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;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;updateSectionStyle&quot;: { # Updates the SectionStyle. # Updates the section style of the specified range.
          &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;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;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;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;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;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;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;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;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;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;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;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;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;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;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;sectionType&quot;: &quot;A String&quot;, # Output only. The type of section.
            &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;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;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;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;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;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;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;text&quot;: &quot;A String&quot;, # Replaces the content of the specified named range(s) with the given text.
          &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;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;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;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;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;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;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;bulletPreset&quot;: &quot;A String&quot;, # The kinds of bullet glyphs to be used.
        },
        &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;updateDocumentStyle&quot;: { # Updates the DocumentStyle. # Updates the style of the document.
          &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;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;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;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;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;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;useEvenPageHeaderFooter&quot;: True or False, # Indicates whether to use the even page header / footer IDs for the even pages.
            &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;pageNumberStart&quot;: 42, # The page number from which to start counting the number of pages.
            &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;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;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;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;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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                    &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                    &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                  },
                },
              },
            },
            &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;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;pageSize&quot;: { # A width and height. # The size of a page in the document.
              &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;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;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;updateTableColumnProperties&quot;: { # Updates the TableColumnProperties of columns in a table. # Updates the properties of columns in a table.
          &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;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;widthType&quot;: &quot;A String&quot;, # The width type of the column.
          },
          &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;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;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;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;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;sectionType&quot;: &quot;A String&quot;, # The type of section to insert.
          &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;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;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;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;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;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;rowIndex&quot;: 42, # The zero-based row index. For example, the second row in the table has a row index of 1.
              &quot;tableStartLocation&quot;: { # A particular location in the document. # The location where the table starts in the document.
                &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;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;columnIndex&quot;: 42, # The zero-based column index. For example, the second column in the table has a column index of 1.
            },
            &quot;columnSpan&quot;: 42, # The column span of the table range.
          },
        },
        &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;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;rowIndex&quot;: 42, # The zero-based row index. For example, the second row in the table has a row index of 1.
            &quot;tableStartLocation&quot;: { # A particular location in the document. # The location where the table starts in the document.
              &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;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;columnIndex&quot;: 42, # The zero-based column index. For example, the second column in the table has a column index of 1.
          },
        },
        &quot;updateTextStyle&quot;: { # Update the styling of text. # Updates the text style at the specified range.
          &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;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;strikethrough&quot;: True or False, # Whether or not the text is struck through.
            &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;bold&quot;: True or False, # Whether or not the text is rendered as bold.
            &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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                  &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                  &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                },
              },
            },
            &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;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;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;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;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;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;bookmarkId&quot;: &quot;A String&quot;, # The ID of a bookmark in this document.
            },
            &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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                  &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                  &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                },
              },
            },
            &quot;smallCaps&quot;: True or False, # Whether or not the text is in small capital letters.
            &quot;underline&quot;: True or False, # Whether or not the text is underlined.
            &quot;italic&quot;: True or False, # Whether or not the text is italicized.
          },
        },
        &quot;insertText&quot;: { # Inserts text at the specified location. # Inserts text at the specified location.
          &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;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;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;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;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;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;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;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;insertTableRow&quot;: { # Inserts an empty row into a table. # Inserts an empty row into a table.
          &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;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;rowIndex&quot;: 42, # The zero-based row index. For example, the second row in the table has a row index of 1.
            &quot;tableStartLocation&quot;: { # A particular location in the document. # The location where the table starts in the document.
              &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;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;columnIndex&quot;: 42, # The zero-based column index. For example, the second column in the table has a column index of 1.
          },
        },
        &quot;insertInlineImage&quot;: { # Inserts an InlineObject containing an image at the given location. # Inserts an inline image at the specified location.
          &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;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;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;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;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;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;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;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;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;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;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;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;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;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;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;tableStartLocation&quot;: { # A particular location in the document. # The location where the table starts in the document.
            &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;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;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;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;text&quot;: &quot;A String&quot;, # The text to search for in the document.
            &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;replaceText&quot;: &quot;A String&quot;, # The text that will replace the matched text.
        },
      },
    ],
  }

  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;writeControl&quot;: { # Provides control over how write requests are executed. # The updated write control after applying the request.
      &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;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;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;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;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;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;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;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;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;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;documentId&quot;: &quot;A String&quot;, # The ID of the document to which the updates were applied to.
  }</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;headers&quot;: { # Output only. The headers in the document, keyed by header ID.
      &quot;a_key&quot;: { # A document header.
        &quot;headerId&quot;: &quot;A String&quot;, # The ID of the 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;endIndex&quot;: 42, # The zero-based end index of this structural element, exclusive, in UTF-16 code units.
            &quot;startIndex&quot;: 42, # The zero-based start index of this structural element, in UTF-16 code units.
            &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;elements&quot;: [ # The content of the paragraph broken down into its component parts.
                { # A ParagraphElement describes content within a Paragraph.
                  &quot;startIndex&quot;: 42, # The zero-based start index of this paragraph element, in UTF-16 code units.
                  &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;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;strikethrough&quot;: True or False, # Whether or not the text is struck through.
                      &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;bold&quot;: True or False, # Whether or not the text is rendered as bold.
                      &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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                            &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                            &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                          },
                        },
                      },
                      &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;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;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;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;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;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;bookmarkId&quot;: &quot;A String&quot;, # The ID of a bookmark in this document.
                      },
                      &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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                            &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                            &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                          },
                        },
                      },
                      &quot;smallCaps&quot;: True or False, # Whether or not the text is in small capital letters.
                      &quot;underline&quot;: True or False, # Whether or not the text is underlined.
                      &quot;italic&quot;: True or False, # Whether or not the text is italicized.
                    },
                    &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;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;strikethrough&quot;: True or False, # Whether or not the text is struck through.
                          &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;bold&quot;: True or False, # Whether or not the text is rendered as bold.
                          &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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                                &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                                &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                              },
                            },
                          },
                          &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;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;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;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;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;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;bookmarkId&quot;: &quot;A String&quot;, # The ID of a bookmark in this document.
                          },
                          &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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                                &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                                &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                              },
                            },
                          },
                          &quot;smallCaps&quot;: True or False, # Whether or not the text is in small capital letters.
                          &quot;underline&quot;: True or False, # Whether or not the text is underlined.
                          &quot;italic&quot;: True or False, # Whether or not the text is italicized.
                        },
                        &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;underlineSuggested&quot;: True or False, # Indicates if there was a suggested change to underline.
                          &quot;smallCapsSuggested&quot;: True or False, # Indicates if there was a suggested change to small_caps.
                          &quot;backgroundColorSuggested&quot;: True or False, # Indicates if there was a suggested change to background_color.
                          &quot;weightedFontFamilySuggested&quot;: True or False, # Indicates if there was a suggested change to weighted_font_family.
                          &quot;boldSuggested&quot;: True or False, # Indicates if there was a suggested change to bold.
                          &quot;fontSizeSuggested&quot;: True or False, # Indicates if there was a suggested change to font_size.
                          &quot;italicSuggested&quot;: True or False, # Indicates if there was a suggested change to italic.
                          &quot;baselineOffsetSuggested&quot;: True or False, # Indicates if there was a suggested change to baseline_offset.
                          &quot;linkSuggested&quot;: True or False, # Indicates if there was a suggested change to link.
                          &quot;foregroundColorSuggested&quot;: True or False, # Indicates if there was a suggested change to foreground_color.
                          &quot;strikethroughSuggested&quot;: True or False, # Indicates if there was a suggested change to strikethrough.
                        },
                      },
                    },
                  },
                  &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;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;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;strikethrough&quot;: True or False, # Whether or not the text is struck through.
                          &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;bold&quot;: True or False, # Whether or not the text is rendered as bold.
                          &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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                                &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                                &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                              },
                            },
                          },
                          &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;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;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;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;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;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;bookmarkId&quot;: &quot;A String&quot;, # The ID of a bookmark in this document.
                          },
                          &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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                                &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                                &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                              },
                            },
                          },
                          &quot;smallCaps&quot;: True or False, # Whether or not the text is in small capital letters.
                          &quot;underline&quot;: True or False, # Whether or not the text is underlined.
                          &quot;italic&quot;: True or False, # Whether or not the text is italicized.
                        },
                        &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;underlineSuggested&quot;: True or False, # Indicates if there was a suggested change to underline.
                          &quot;smallCapsSuggested&quot;: True or False, # Indicates if there was a suggested change to small_caps.
                          &quot;backgroundColorSuggested&quot;: True or False, # Indicates if there was a suggested change to background_color.
                          &quot;weightedFontFamilySuggested&quot;: True or False, # Indicates if there was a suggested change to weighted_font_family.
                          &quot;boldSuggested&quot;: True or False, # Indicates if there was a suggested change to bold.
                          &quot;fontSizeSuggested&quot;: True or False, # Indicates if there was a suggested change to font_size.
                          &quot;italicSuggested&quot;: True or False, # Indicates if there was a suggested change to italic.
                          &quot;baselineOffsetSuggested&quot;: True or False, # Indicates if there was a suggested change to baseline_offset.
                          &quot;linkSuggested&quot;: True or False, # Indicates if there was a suggested change to link.
                          &quot;foregroundColorSuggested&quot;: True or False, # Indicates if there was a suggested change to foreground_color.
                          &quot;strikethroughSuggested&quot;: True or False, # Indicates if there was a suggested change to strikethrough.
                        },
                      },
                    },
                    &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;strikethrough&quot;: True or False, # Whether or not the text is struck through.
                      &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;bold&quot;: True or False, # Whether or not the text is rendered as bold.
                      &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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                            &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                            &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                          },
                        },
                      },
                      &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;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;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;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;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;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;bookmarkId&quot;: &quot;A String&quot;, # The ID of a bookmark in this document.
                      },
                      &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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                            &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                            &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                          },
                        },
                      },
                      &quot;smallCaps&quot;: True or False, # Whether or not the text is in small capital letters.
                      &quot;underline&quot;: True or False, # Whether or not the text is underlined.
                      &quot;italic&quot;: True or False, # Whether or not the text is italicized.
                    },
                    &quot;suggestedDeletionIds&quot;: [ # The suggested deletion IDs. If empty, then there are no suggested deletions of this content.
                      &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;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;strikethrough&quot;: True or False, # Whether or not the text is struck through.
                          &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;bold&quot;: True or False, # Whether or not the text is rendered as bold.
                          &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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                                &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                                &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                              },
                            },
                          },
                          &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;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;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;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;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;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;bookmarkId&quot;: &quot;A String&quot;, # The ID of a bookmark in this document.
                          },
                          &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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                                &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                                &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                              },
                            },
                          },
                          &quot;smallCaps&quot;: True or False, # Whether or not the text is in small capital letters.
                          &quot;underline&quot;: True or False, # Whether or not the text is underlined.
                          &quot;italic&quot;: True or False, # Whether or not the text is italicized.
                        },
                        &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;underlineSuggested&quot;: True or False, # Indicates if there was a suggested change to underline.
                          &quot;smallCapsSuggested&quot;: True or False, # Indicates if there was a suggested change to small_caps.
                          &quot;backgroundColorSuggested&quot;: True or False, # Indicates if there was a suggested change to background_color.
                          &quot;weightedFontFamilySuggested&quot;: True or False, # Indicates if there was a suggested change to weighted_font_family.
                          &quot;boldSuggested&quot;: True or False, # Indicates if there was a suggested change to bold.
                          &quot;fontSizeSuggested&quot;: True or False, # Indicates if there was a suggested change to font_size.
                          &quot;italicSuggested&quot;: True or False, # Indicates if there was a suggested change to italic.
                          &quot;baselineOffsetSuggested&quot;: True or False, # Indicates if there was a suggested change to baseline_offset.
                          &quot;linkSuggested&quot;: True or False, # Indicates if there was a suggested change to link.
                          &quot;foregroundColorSuggested&quot;: True or False, # Indicates if there was a suggested change to foreground_color.
                          &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. # 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;strikethrough&quot;: True or False, # Whether or not the text is struck through.
                      &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;bold&quot;: True or False, # Whether or not the text is rendered as bold.
                      &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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                            &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                            &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                          },
                        },
                      },
                      &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;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;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;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;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;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;bookmarkId&quot;: &quot;A String&quot;, # The ID of a bookmark in this document.
                      },
                      &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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                            &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                            &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                          },
                        },
                      },
                      &quot;smallCaps&quot;: True or False, # Whether or not the text is in small capital letters.
                      &quot;underline&quot;: True or False, # Whether or not the text is underlined.
                      &quot;italic&quot;: True or False, # Whether or not the text is italicized.
                    },
                    &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 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;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;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;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;strikethrough&quot;: True or False, # Whether or not the text is struck through.
                          &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;bold&quot;: True or False, # Whether or not the text is rendered as bold.
                          &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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                                &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                                &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                              },
                            },
                          },
                          &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;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;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;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;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;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;bookmarkId&quot;: &quot;A String&quot;, # The ID of a bookmark in this document.
                          },
                          &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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                                &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                                &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                              },
                            },
                          },
                          &quot;smallCaps&quot;: True or False, # Whether or not the text is in small capital letters.
                          &quot;underline&quot;: True or False, # Whether or not the text is underlined.
                          &quot;italic&quot;: True or False, # Whether or not the text is italicized.
                        },
                        &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;underlineSuggested&quot;: True or False, # Indicates if there was a suggested change to underline.
                          &quot;smallCapsSuggested&quot;: True or False, # Indicates if there was a suggested change to small_caps.
                          &quot;backgroundColorSuggested&quot;: True or False, # Indicates if there was a suggested change to background_color.
                          &quot;weightedFontFamilySuggested&quot;: True or False, # Indicates if there was a suggested change to weighted_font_family.
                          &quot;boldSuggested&quot;: True or False, # Indicates if there was a suggested change to bold.
                          &quot;fontSizeSuggested&quot;: True or False, # Indicates if there was a suggested change to font_size.
                          &quot;italicSuggested&quot;: True or False, # Indicates if there was a suggested change to italic.
                          &quot;baselineOffsetSuggested&quot;: True or False, # Indicates if there was a suggested change to baseline_offset.
                          &quot;linkSuggested&quot;: True or False, # Indicates if there was a suggested change to link.
                          &quot;foregroundColorSuggested&quot;: True or False, # Indicates if there was a suggested change to foreground_color.
                          &quot;strikethroughSuggested&quot;: True or False, # Indicates if there was a suggested change to strikethrough.
                        },
                      },
                    },
                    &quot;footnoteNumber&quot;: &quot;A String&quot;, # The rendered number of this footnote.
                    &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;footnoteId&quot;: &quot;A String&quot;, # The ID of the footnote that contains the content of this footnote reference.
                    &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;strikethrough&quot;: True or False, # Whether or not the text is struck through.
                      &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;bold&quot;: True or False, # Whether or not the text is rendered as bold.
                      &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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                            &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                            &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                          },
                        },
                      },
                      &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;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;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;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;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;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;bookmarkId&quot;: &quot;A String&quot;, # The ID of a bookmark in this document.
                      },
                      &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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                            &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                            &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                          },
                        },
                      },
                      &quot;smallCaps&quot;: True or False, # Whether or not the text is in small capital letters.
                      &quot;underline&quot;: True or False, # Whether or not the text is underlined.
                      &quot;italic&quot;: True or False, # Whether or not the text is italicized.
                    },
                    &quot;suggestedDeletionIds&quot;: [ # The suggested deletion IDs. If empty, then there are no suggested deletions of this content.
                      &quot;A String&quot;,
                    ],
                  },
                  &quot;inlineObjectElement&quot;: { # A ParagraphElement that contains an InlineObject. # An inline object paragraph element.
                    &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;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;strikethrough&quot;: True or False, # Whether or not the text is struck through.
                          &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;bold&quot;: True or False, # Whether or not the text is rendered as bold.
                          &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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                                &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                                &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                              },
                            },
                          },
                          &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;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;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;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;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;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;bookmarkId&quot;: &quot;A String&quot;, # The ID of a bookmark in this document.
                          },
                          &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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                                &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                                &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                              },
                            },
                          },
                          &quot;smallCaps&quot;: True or False, # Whether or not the text is in small capital letters.
                          &quot;underline&quot;: True or False, # Whether or not the text is underlined.
                          &quot;italic&quot;: True or False, # Whether or not the text is italicized.
                        },
                        &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;underlineSuggested&quot;: True or False, # Indicates if there was a suggested change to underline.
                          &quot;smallCapsSuggested&quot;: True or False, # Indicates if there was a suggested change to small_caps.
                          &quot;backgroundColorSuggested&quot;: True or False, # Indicates if there was a suggested change to background_color.
                          &quot;weightedFontFamilySuggested&quot;: True or False, # Indicates if there was a suggested change to weighted_font_family.
                          &quot;boldSuggested&quot;: True or False, # Indicates if there was a suggested change to bold.
                          &quot;fontSizeSuggested&quot;: True or False, # Indicates if there was a suggested change to font_size.
                          &quot;italicSuggested&quot;: True or False, # Indicates if there was a suggested change to italic.
                          &quot;baselineOffsetSuggested&quot;: True or False, # Indicates if there was a suggested change to baseline_offset.
                          &quot;linkSuggested&quot;: True or False, # Indicates if there was a suggested change to link.
                          &quot;foregroundColorSuggested&quot;: True or False, # Indicates if there was a suggested change to foreground_color.
                          &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. # 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;strikethrough&quot;: True or False, # Whether or not the text is struck through.
                      &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;bold&quot;: True or False, # Whether or not the text is rendered as bold.
                      &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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                            &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                            &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                          },
                        },
                      },
                      &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;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;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;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;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;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;bookmarkId&quot;: &quot;A String&quot;, # The ID of a bookmark in this document.
                      },
                      &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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                            &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                            &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                          },
                        },
                      },
                      &quot;smallCaps&quot;: True or False, # Whether or not the text is in small capital letters.
                      &quot;underline&quot;: True or False, # Whether or not the text is underlined.
                      &quot;italic&quot;: True or False, # Whether or not the text is italicized.
                    },
                    &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;suggestedDeletionIds&quot;: [ # The suggested deletion IDs. If empty, then there are no suggested deletions of this content.
                      &quot;A String&quot;,
                    ],
                    &quot;inlineObjectId&quot;: &quot;A String&quot;, # The ID of the InlineObject this element contains.
                  },
                  &quot;endIndex&quot;: 42, # The zero-base end index of this paragraph element, exclusive, in UTF-16 code units.
                  &quot;textRun&quot;: { # A ParagraphElement that represents a run of text that all has the same styling. # A text run paragraph element.
                    &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;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;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;strikethrough&quot;: True or False, # Whether or not the text is struck through.
                          &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;bold&quot;: True or False, # Whether or not the text is rendered as bold.
                          &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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                                &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                                &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                              },
                            },
                          },
                          &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;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;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;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;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;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;bookmarkId&quot;: &quot;A String&quot;, # The ID of a bookmark in this document.
                          },
                          &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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                                &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                                &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                              },
                            },
                          },
                          &quot;smallCaps&quot;: True or False, # Whether or not the text is in small capital letters.
                          &quot;underline&quot;: True or False, # Whether or not the text is underlined.
                          &quot;italic&quot;: True or False, # Whether or not the text is italicized.
                        },
                        &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;underlineSuggested&quot;: True or False, # Indicates if there was a suggested change to underline.
                          &quot;smallCapsSuggested&quot;: True or False, # Indicates if there was a suggested change to small_caps.
                          &quot;backgroundColorSuggested&quot;: True or False, # Indicates if there was a suggested change to background_color.
                          &quot;weightedFontFamilySuggested&quot;: True or False, # Indicates if there was a suggested change to weighted_font_family.
                          &quot;boldSuggested&quot;: True or False, # Indicates if there was a suggested change to bold.
                          &quot;fontSizeSuggested&quot;: True or False, # Indicates if there was a suggested change to font_size.
                          &quot;italicSuggested&quot;: True or False, # Indicates if there was a suggested change to italic.
                          &quot;baselineOffsetSuggested&quot;: True or False, # Indicates if there was a suggested change to baseline_offset.
                          &quot;linkSuggested&quot;: True or False, # Indicates if there was a suggested change to link.
                          &quot;foregroundColorSuggested&quot;: True or False, # Indicates if there was a suggested change to foreground_color.
                          &quot;strikethroughSuggested&quot;: True or False, # Indicates if there was a suggested change to strikethrough.
                        },
                      },
                    },
                    &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 run.
                      &quot;strikethrough&quot;: True or False, # Whether or not the text is struck through.
                      &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;bold&quot;: True or False, # Whether or not the text is rendered as bold.
                      &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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                            &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                            &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                          },
                        },
                      },
                      &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;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;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;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;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;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;bookmarkId&quot;: &quot;A String&quot;, # The ID of a bookmark in this document.
                      },
                      &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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                            &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                            &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                          },
                        },
                      },
                      &quot;smallCaps&quot;: True or False, # Whether or not the text is in small capital letters.
                      &quot;underline&quot;: True or False, # Whether or not the text is underlined.
                      &quot;italic&quot;: True or False, # Whether or not the text is italicized.
                    },
                    &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;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;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;type&quot;: &quot;A String&quot;, # The type of this auto text.
                    &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;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;strikethrough&quot;: True or False, # Whether or not the text is struck through.
                      &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;bold&quot;: True or False, # Whether or not the text is rendered as bold.
                      &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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                            &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                            &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                          },
                        },
                      },
                      &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;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;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;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;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;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;bookmarkId&quot;: &quot;A String&quot;, # The ID of a bookmark in this document.
                      },
                      &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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                            &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                            &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                          },
                        },
                      },
                      &quot;smallCaps&quot;: True or False, # Whether or not the text is in small capital letters.
                      &quot;underline&quot;: True or False, # Whether or not the text is underlined.
                      &quot;italic&quot;: True or False, # Whether or not the text is italicized.
                    },
                    &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;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;strikethrough&quot;: True or False, # Whether or not the text is struck through.
                          &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;bold&quot;: True or False, # Whether or not the text is rendered as bold.
                          &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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                                &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                                &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                              },
                            },
                          },
                          &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;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;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;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;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;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;bookmarkId&quot;: &quot;A String&quot;, # The ID of a bookmark in this document.
                          },
                          &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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                                &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                                &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                              },
                            },
                          },
                          &quot;smallCaps&quot;: True or False, # Whether or not the text is in small capital letters.
                          &quot;underline&quot;: True or False, # Whether or not the text is underlined.
                          &quot;italic&quot;: True or False, # Whether or not the text is italicized.
                        },
                        &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;underlineSuggested&quot;: True or False, # Indicates if there was a suggested change to underline.
                          &quot;smallCapsSuggested&quot;: True or False, # Indicates if there was a suggested change to small_caps.
                          &quot;backgroundColorSuggested&quot;: True or False, # Indicates if there was a suggested change to background_color.
                          &quot;weightedFontFamilySuggested&quot;: True or False, # Indicates if there was a suggested change to weighted_font_family.
                          &quot;boldSuggested&quot;: True or False, # Indicates if there was a suggested change to bold.
                          &quot;fontSizeSuggested&quot;: True or False, # Indicates if there was a suggested change to font_size.
                          &quot;italicSuggested&quot;: True or False, # Indicates if there was a suggested change to italic.
                          &quot;baselineOffsetSuggested&quot;: True or False, # Indicates if there was a suggested change to baseline_offset.
                          &quot;linkSuggested&quot;: True or False, # Indicates if there was a suggested change to link.
                          &quot;foregroundColorSuggested&quot;: True or False, # Indicates if there was a suggested change to foreground_color.
                          &quot;strikethroughSuggested&quot;: True or False, # Indicates if there was a suggested change to strikethrough.
                        },
                      },
                    },
                  },
                },
              ],
              &quot;suggestedBulletChanges&quot;: { # The suggested changes to this paragraph&#x27;s bullet.
                &quot;a_key&quot;: { # A suggested change to a Bullet.
                  &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;listId&quot;: &quot;A String&quot;, # The ID of the list this paragraph belongs to.
                    &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;strikethrough&quot;: True or False, # Whether or not the text is struck through.
                      &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;bold&quot;: True or False, # Whether or not the text is rendered as bold.
                      &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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                            &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                            &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                          },
                        },
                      },
                      &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;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;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;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;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;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;bookmarkId&quot;: &quot;A String&quot;, # The ID of a bookmark in this document.
                      },
                      &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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                            &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                            &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                          },
                        },
                      },
                      &quot;smallCaps&quot;: True or False, # Whether or not the text is in small capital letters.
                      &quot;underline&quot;: True or False, # Whether or not the text is underlined.
                      &quot;italic&quot;: True or False, # Whether or not the text is italicized.
                    },
                    &quot;nestingLevel&quot;: 42, # The nesting level of this paragraph in the list.
                  },
                  &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;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;underlineSuggested&quot;: True or False, # Indicates if there was a suggested change to underline.
                      &quot;smallCapsSuggested&quot;: True or False, # Indicates if there was a suggested change to small_caps.
                      &quot;backgroundColorSuggested&quot;: True or False, # Indicates if there was a suggested change to background_color.
                      &quot;weightedFontFamilySuggested&quot;: True or False, # Indicates if there was a suggested change to weighted_font_family.
                      &quot;boldSuggested&quot;: True or False, # Indicates if there was a suggested change to bold.
                      &quot;fontSizeSuggested&quot;: True or False, # Indicates if there was a suggested change to font_size.
                      &quot;italicSuggested&quot;: True or False, # Indicates if there was a suggested change to italic.
                      &quot;baselineOffsetSuggested&quot;: True or False, # Indicates if there was a suggested change to baseline_offset.
                      &quot;linkSuggested&quot;: True or False, # Indicates if there was a suggested change to link.
                      &quot;foregroundColorSuggested&quot;: True or False, # Indicates if there was a suggested change to foreground_color.
                      &quot;strikethroughSuggested&quot;: True or False, # Indicates if there was a suggested change to strikethrough.
                    },
                    &quot;nestingLevelSuggested&quot;: True or False, # Indicates if there was a suggested change to the nesting_level.
                    &quot;listIdSuggested&quot;: True or False, # Indicates if there was a suggested change to the list_id.
                  },
                },
              },
              &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;alignment&quot;: &quot;A String&quot;, # The text alignment for this paragraph.
                &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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                        &quot;green&quot;: 3.14, # The green component of the color, 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;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;spacingMode&quot;: &quot;A String&quot;, # The spacing mode for the paragraph.
                &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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                        &quot;green&quot;: 3.14, # The green component of the color, 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;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;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;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;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;avoidWidowAndOrphan&quot;: True or False, # Whether to avoid widows and orphans for the paragraph. 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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                        &quot;green&quot;: 3.14, # The green component of the color, 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;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;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;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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                        &quot;green&quot;: 3.14, # The green component of the color, 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;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;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;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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                        &quot;green&quot;: 3.14, # The green component of the color, 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;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;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;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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                        &quot;green&quot;: 3.14, # The green component of the color, 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;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;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;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;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;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;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;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;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;spaceAboveSuggested&quot;: True or False, # Indicates if there was a suggested change to space_above.
                    &quot;directionSuggested&quot;: True or False, # Indicates if there was a suggested change to direction.
                    &quot;spacingModeSuggested&quot;: True or False, # Indicates if there was a suggested change to spacing_mode.
                    &quot;indentFirstLineSuggested&quot;: True or False, # Indicates if there was a suggested change to indent_first_line.
                    &quot;lineSpacingSuggested&quot;: True or False, # Indicates if there was a suggested change to line_spacing.
                    &quot;avoidWidowAndOrphanSuggested&quot;: True or False, # Indicates if there was a suggested change to avoid_widow_and_orphan.
                    &quot;borderBetweenSuggested&quot;: True or False, # Indicates if there was a suggested change to border_between.
                    &quot;keepLinesTogetherSuggested&quot;: True or False, # Indicates if there was a suggested change to keep_lines_together.
                    &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;borderTopSuggested&quot;: True or False, # Indicates if there was a suggested change to border_top.
                    &quot;indentEndSuggested&quot;: True or False, # Indicates if there was a suggested change to indent_end.
                    &quot;keepWithNextSuggested&quot;: True or False, # Indicates if there was a suggested change to keep_with_next.
                    &quot;indentStartSuggested&quot;: True or False, # Indicates if there was a suggested change to indent_start.
                    &quot;borderRightSuggested&quot;: True or False, # Indicates if there was a suggested change to border_right.
                    &quot;spaceBelowSuggested&quot;: True or False, # Indicates if there was a suggested change to space_below.
                    &quot;headingIdSuggested&quot;: True or False, # Indicates if there was a suggested change to heading_id.
                    &quot;borderLeftSuggested&quot;: True or False, # Indicates if there was a suggested change to border_left.
                    &quot;namedStyleTypeSuggested&quot;: True or False, # Indicates if there was a suggested change to named_style_type.
                  },
                  &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;alignment&quot;: &quot;A String&quot;, # The text alignment for this paragraph.
                    &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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                            &quot;green&quot;: 3.14, # The green component of the color, 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;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;spacingMode&quot;: &quot;A String&quot;, # The spacing mode for the paragraph.
                    &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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                            &quot;green&quot;: 3.14, # The green component of the color, 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;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;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;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;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;avoidWidowAndOrphan&quot;: True or False, # Whether to avoid widows and orphans for the paragraph. 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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                            &quot;green&quot;: 3.14, # The green component of the color, 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;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;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;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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                            &quot;green&quot;: 3.14, # The green component of the color, 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;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;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;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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                            &quot;green&quot;: 3.14, # The green component of the color, 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;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;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;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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                            &quot;green&quot;: 3.14, # The green component of the color, 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;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;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;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;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;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;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;listId&quot;: &quot;A String&quot;, # The ID of the list this paragraph belongs to.
                &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;strikethrough&quot;: True or False, # Whether or not the text is struck through.
                  &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;bold&quot;: True or False, # Whether or not the text is rendered as bold.
                  &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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                        &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                        &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                      },
                    },
                  },
                  &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;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;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;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;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;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;bookmarkId&quot;: &quot;A String&quot;, # The ID of a bookmark in this document.
                  },
                  &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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                        &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                        &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                      },
                    },
                  },
                  &quot;smallCaps&quot;: True or False, # Whether or not the text is in small capital letters.
                  &quot;underline&quot;: True or False, # Whether or not the text is underlined.
                  &quot;italic&quot;: True or False, # Whether or not the text is italicized.
                },
                &quot;nestingLevel&quot;: 42, # The nesting level of this paragraph in the list.
              },
              &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;positionedObjectIds&quot;: [ # The IDs of the positioned objects tethered to this paragraph.
                &quot;A String&quot;,
              ],
            },
            &quot;table&quot;: { # A StructuralElement representing a table. # A table type of structural element.
              &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;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;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;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 row, 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;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;suggestedDeletionIds&quot;: [ # The suggested deletion IDs. If empty, then there are no suggested deletions of this content.
                        &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;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;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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                                    &quot;green&quot;: 3.14, # The green component of the color, 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;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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                                  &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                                  &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                                },
                              },
                            },
                            &quot;rowSpan&quot;: 42, # The row span of the cell. This property is read-only.
                            &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;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;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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                                    &quot;green&quot;: 3.14, # The green component of the color, 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;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;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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                                    &quot;green&quot;: 3.14, # The green component of the color, 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;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;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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                                    &quot;green&quot;: 3.14, # The green component of the color, 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;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;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;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;columnSpan&quot;: 42, # The column 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;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;borderLeftSuggested&quot;: True or False, # Indicates if there was a suggested change to border_left.
                            &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;paddingTopSuggested&quot;: True or False, # Indicates if there was a suggested change to padding_top.
                            &quot;paddingRightSuggested&quot;: True or False, # Indicates if there was a suggested change to padding_right.
                            &quot;rowSpanSuggested&quot;: True or False, # Indicates if there was a suggested change to row_span.
                            &quot;borderBottomSuggested&quot;: True or False, # Indicates if there was a suggested change to border_bottom.
                            &quot;backgroundColorSuggested&quot;: True or False, # Indicates if there was a suggested change to background_color.
                            &quot;columnSpanSuggested&quot;: True or False, # Indicates if there was a suggested change to column_span.
                            &quot;borderTopSuggested&quot;: True or False, # Indicates if there was a suggested change to border_top.
                            &quot;paddingBottomSuggested&quot;: True or False, # Indicates if there was a suggested change to padding_bottom.
                            &quot;paddingLeftSuggested&quot;: True or False, # Indicates if there was a suggested change to padding_left.
                          },
                        },
                      },
                      &quot;content&quot;: [ # The content of the cell.
                        # Object with schema name: StructuralElement
                      ],
                      &quot;endIndex&quot;: 42, # The zero-based end index of this cell, exclusive, 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;startIndex&quot;: 42, # The zero-based start index of this cell, in UTF-16 code units.
                      &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;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;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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                                &quot;green&quot;: 3.14, # The green component of the color, 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;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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                              &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                              &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                            },
                          },
                        },
                        &quot;rowSpan&quot;: 42, # The row span of the cell. This property is read-only.
                        &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;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;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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                                &quot;green&quot;: 3.14, # The green component of the color, 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;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;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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                                &quot;green&quot;: 3.14, # The green component of the color, 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;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;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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                                &quot;green&quot;: 3.14, # The green component of the color, 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;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;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;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;columnSpan&quot;: 42, # The column 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;suggestedTableRowStyleChanges&quot;: { # The suggested style changes to this row, keyed by suggestion ID.
                    &quot;a_key&quot;: { # A suggested change to a TableRowStyle.
                      &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;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;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;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;widthType&quot;: &quot;A String&quot;, # The width type of the column.
                  },
                ],
              },
              &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;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;suggestedDeletionIds&quot;: [ # The suggested deletion IDs. If empty, then there are no suggested deletions of this content.
                &quot;A String&quot;,
              ],
              &quot;content&quot;: [ # The content of the table of contents.
                # Object with schema name: StructuralElement
              ],
            },
            &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;sectionStyle&quot;: { # The styling that applies to a section. # The style of the section after this section break.
                &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;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;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;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;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;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;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;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;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;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;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;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;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;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;sectionType&quot;: &quot;A String&quot;, # Output only. The type of section.
                &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;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;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;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;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;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;suggestedDeletionIds&quot;: [ # The suggested deletion IDs. If empty, then there are no suggested deletions of this content.
                &quot;A String&quot;,
              ],
            },
          },
        ],
      },
    },
    &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;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;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;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;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;spaceAboveSuggested&quot;: True or False, # Indicates if there was a suggested change to space_above.
                &quot;directionSuggested&quot;: True or False, # Indicates if there was a suggested change to direction.
                &quot;spacingModeSuggested&quot;: True or False, # Indicates if there was a suggested change to spacing_mode.
                &quot;indentFirstLineSuggested&quot;: True or False, # Indicates if there was a suggested change to indent_first_line.
                &quot;lineSpacingSuggested&quot;: True or False, # Indicates if there was a suggested change to line_spacing.
                &quot;avoidWidowAndOrphanSuggested&quot;: True or False, # Indicates if there was a suggested change to avoid_widow_and_orphan.
                &quot;borderBetweenSuggested&quot;: True or False, # Indicates if there was a suggested change to border_between.
                &quot;keepLinesTogetherSuggested&quot;: True or False, # Indicates if there was a suggested change to keep_lines_together.
                &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;borderTopSuggested&quot;: True or False, # Indicates if there was a suggested change to border_top.
                &quot;indentEndSuggested&quot;: True or False, # Indicates if there was a suggested change to indent_end.
                &quot;keepWithNextSuggested&quot;: True or False, # Indicates if there was a suggested change to keep_with_next.
                &quot;indentStartSuggested&quot;: True or False, # Indicates if there was a suggested change to indent_start.
                &quot;borderRightSuggested&quot;: True or False, # Indicates if there was a suggested change to border_right.
                &quot;spaceBelowSuggested&quot;: True or False, # Indicates if there was a suggested change to space_below.
                &quot;headingIdSuggested&quot;: True or False, # Indicates if there was a suggested change to heading_id.
                &quot;borderLeftSuggested&quot;: True or False, # Indicates if there was a suggested change to border_left.
                &quot;namedStyleTypeSuggested&quot;: True or False, # Indicates if there was a suggested change to named_style_type.
              },
              &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;underlineSuggested&quot;: True or False, # Indicates if there was a suggested change to underline.
                &quot;smallCapsSuggested&quot;: True or False, # Indicates if there was a suggested change to small_caps.
                &quot;backgroundColorSuggested&quot;: True or False, # Indicates if there was a suggested change to background_color.
                &quot;weightedFontFamilySuggested&quot;: True or False, # Indicates if there was a suggested change to weighted_font_family.
                &quot;boldSuggested&quot;: True or False, # Indicates if there was a suggested change to bold.
                &quot;fontSizeSuggested&quot;: True or False, # Indicates if there was a suggested change to font_size.
                &quot;italicSuggested&quot;: True or False, # Indicates if there was a suggested change to italic.
                &quot;baselineOffsetSuggested&quot;: True or False, # Indicates if there was a suggested change to baseline_offset.
                &quot;linkSuggested&quot;: True or False, # Indicates if there was a suggested change to link.
                &quot;foregroundColorSuggested&quot;: True or False, # Indicates if there was a suggested change to foreground_color.
                &quot;strikethroughSuggested&quot;: True or False, # Indicates if there was a suggested change to strikethrough.
              },
            },
          ],
        },
        &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;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;alignment&quot;: &quot;A String&quot;, # The text alignment for this paragraph.
                &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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                        &quot;green&quot;: 3.14, # The green component of the color, 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;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;spacingMode&quot;: &quot;A String&quot;, # The spacing mode for the paragraph.
                &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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                        &quot;green&quot;: 3.14, # The green component of the color, 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;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;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;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;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;avoidWidowAndOrphan&quot;: True or False, # Whether to avoid widows and orphans for the paragraph. 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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                        &quot;green&quot;: 3.14, # The green component of the color, 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;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;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;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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                        &quot;green&quot;: 3.14, # The green component of the color, 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;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;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;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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                        &quot;green&quot;: 3.14, # The green component of the color, 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;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;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;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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                        &quot;green&quot;: 3.14, # The green component of the color, 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;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;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;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;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;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;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;strikethrough&quot;: True or False, # Whether or not the text is struck through.
                &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;bold&quot;: True or False, # Whether or not the text is rendered as bold.
                &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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                      &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                      &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                    },
                  },
                },
                &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;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;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;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;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;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;bookmarkId&quot;: &quot;A String&quot;, # The ID of a bookmark in this document.
                },
                &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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                      &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                      &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                    },
                  },
                },
                &quot;smallCaps&quot;: True or False, # Whether or not the text is in small capital letters.
                &quot;underline&quot;: True or False, # Whether or not the text is underlined.
                &quot;italic&quot;: True or False, # Whether or not the text is italicized.
              },
            },
          ],
        },
      },
    },
    &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;marginLeftSuggested&quot;: True or False, # Indicates if there was a suggested change to margin_left.
          &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;pageNumberStartSuggested&quot;: True or False, # Indicates if there was a suggested change to page_number_start.
          &quot;marginFooterSuggested&quot;: True or False, # Indicates if there was a suggested change to margin_footer.
          &quot;defaultFooterIdSuggested&quot;: True or False, # Indicates if there was a suggested change to default_footer_id.
          &quot;firstPageHeaderIdSuggested&quot;: True or False, # Indicates if there was a suggested change to first_page_header_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;evenPageHeaderIdSuggested&quot;: True or False, # Indicates if there was a suggested change to even_page_header_id.
          &quot;evenPageFooterIdSuggested&quot;: True or False, # Indicates if there was a suggested change to even_page_footer_id.
          &quot;defaultHeaderIdSuggested&quot;: True or False, # Indicates if there was a suggested change to default_header_id.
          &quot;marginHeaderSuggested&quot;: True or False, # Indicates if there was a suggested change to margin_header.
          &quot;useFirstPageHeaderFooterSuggested&quot;: True or False, # Indicates if there was a suggested change to use_first_page_header_footer.
          &quot;useEvenPageHeaderFooterSuggested&quot;: True or False, # Indicates if there was a suggested change to use_even_page_header_footer.
          &quot;firstPageFooterIdSuggested&quot;: True or False, # Indicates if there was a suggested change to first_page_footer_id.
          &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;marginTopSuggested&quot;: True or False, # Indicates if there was a suggested change to margin_top.
        },
        &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;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;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;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;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;useEvenPageHeaderFooter&quot;: True or False, # Indicates whether to use the even page header / footer IDs for the even pages.
          &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;pageNumberStart&quot;: 42, # The page number from which to start counting the number of pages.
          &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;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;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;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;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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                  &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                  &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                },
              },
            },
          },
          &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;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;pageSize&quot;: { # A width and height. # The size of a page in the document.
            &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;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;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;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;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;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;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;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;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;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;strikethrough&quot;: True or False, # Whether or not the text is struck through.
                &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;bold&quot;: True or False, # Whether or not the text is rendered as bold.
                &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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                      &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                      &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                    },
                  },
                },
                &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;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;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;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;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;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;bookmarkId&quot;: &quot;A String&quot;, # The ID of a bookmark in this document.
                },
                &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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                      &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                      &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                    },
                  },
                },
                &quot;smallCaps&quot;: True or False, # Whether or not the text is in small capital letters.
                &quot;underline&quot;: True or False, # Whether or not the text is underlined.
                &quot;italic&quot;: True or False, # Whether or not the text is italicized.
              },
              &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;bulletAlignment&quot;: &quot;A String&quot;, # The alignment of the bullet within the space allotted for rendering the bullet.
              &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;suggestedDeletionIds&quot;: [ # The suggested deletion IDs. If empty, then there are no suggested deletions of this list.
          &quot;A String&quot;,
        ],
        &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;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;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;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;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;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;strikethrough&quot;: True or False, # Whether or not the text is struck through.
                    &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;bold&quot;: True or False, # Whether or not the text is rendered as bold.
                    &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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                          &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                          &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                        },
                      },
                    },
                    &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;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;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;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;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;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;bookmarkId&quot;: &quot;A String&quot;, # The ID of a bookmark in this document.
                    },
                    &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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                          &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                          &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                        },
                      },
                    },
                    &quot;smallCaps&quot;: True or False, # Whether or not the text is in small capital letters.
                    &quot;underline&quot;: True or False, # Whether or not the text is underlined.
                    &quot;italic&quot;: True or False, # Whether or not the text is italicized.
                  },
                  &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;bulletAlignment&quot;: &quot;A String&quot;, # The alignment of the bullet within the space allotted for rendering the bullet.
                  &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;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;underlineSuggested&quot;: True or False, # Indicates if there was a suggested change to underline.
                    &quot;smallCapsSuggested&quot;: True or False, # Indicates if there was a suggested change to small_caps.
                    &quot;backgroundColorSuggested&quot;: True or False, # Indicates if there was a suggested change to background_color.
                    &quot;weightedFontFamilySuggested&quot;: True or False, # Indicates if there was a suggested change to weighted_font_family.
                    &quot;boldSuggested&quot;: True or False, # Indicates if there was a suggested change to bold.
                    &quot;fontSizeSuggested&quot;: True or False, # Indicates if there was a suggested change to font_size.
                    &quot;italicSuggested&quot;: True or False, # Indicates if there was a suggested change to italic.
                    &quot;baselineOffsetSuggested&quot;: True or False, # Indicates if there was a suggested change to baseline_offset.
                    &quot;linkSuggested&quot;: True or False, # Indicates if there was a suggested change to link.
                    &quot;foregroundColorSuggested&quot;: True or False, # Indicates if there was a suggested change to foreground_color.
                    &quot;strikethroughSuggested&quot;: True or False, # Indicates if there was a suggested change to strikethrough.
                  },
                  &quot;startNumberSuggested&quot;: True or False, # Indicates if there was a suggested change to start_number.
                  &quot;glyphTypeSuggested&quot;: True or False, # Indicates if there was a suggested change to glyph_type.
                  &quot;glyphFormatSuggested&quot;: True or False, # Indicates if there was a suggested change to glyph_format.
                  &quot;indentFirstLineSuggested&quot;: True or False, # Indicates if there was a suggested change to indent_first_line.
                  &quot;glyphSymbolSuggested&quot;: True or False, # Indicates if there was a suggested change to glyph_symbol.
                  &quot;bulletAlignmentSuggested&quot;: True or False, # Indicates if there was a suggested change to bullet_alignment.
                  &quot;indentStartSuggested&quot;: True or False, # Indicates if there was a suggested change to indent_start.
                },
              ],
            },
          },
        },
        &quot;suggestedInsertionId&quot;: &quot;A String&quot;, # The suggested insertion ID. If empty, then this is not a suggested insertion.
      },
    },
    &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;endIndex&quot;: 42, # The zero-based end index of this structural element, exclusive, in UTF-16 code units.
          &quot;startIndex&quot;: 42, # The zero-based start index of this structural element, in UTF-16 code units.
          &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;elements&quot;: [ # The content of the paragraph broken down into its component parts.
              { # A ParagraphElement describes content within a Paragraph.
                &quot;startIndex&quot;: 42, # The zero-based start index of this paragraph element, in UTF-16 code units.
                &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;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;strikethrough&quot;: True or False, # Whether or not the text is struck through.
                    &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;bold&quot;: True or False, # Whether or not the text is rendered as bold.
                    &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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                          &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                          &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                        },
                      },
                    },
                    &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;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;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;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;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;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;bookmarkId&quot;: &quot;A String&quot;, # The ID of a bookmark in this document.
                    },
                    &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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                          &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                          &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                        },
                      },
                    },
                    &quot;smallCaps&quot;: True or False, # Whether or not the text is in small capital letters.
                    &quot;underline&quot;: True or False, # Whether or not the text is underlined.
                    &quot;italic&quot;: True or False, # Whether or not the text is italicized.
                  },
                  &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;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;strikethrough&quot;: True or False, # Whether or not the text is struck through.
                        &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;bold&quot;: True or False, # Whether or not the text is rendered as bold.
                        &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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                              &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                              &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                            },
                          },
                        },
                        &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;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;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;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;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;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;bookmarkId&quot;: &quot;A String&quot;, # The ID of a bookmark in this document.
                        },
                        &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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                              &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                              &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                            },
                          },
                        },
                        &quot;smallCaps&quot;: True or False, # Whether or not the text is in small capital letters.
                        &quot;underline&quot;: True or False, # Whether or not the text is underlined.
                        &quot;italic&quot;: True or False, # Whether or not the text is italicized.
                      },
                      &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;underlineSuggested&quot;: True or False, # Indicates if there was a suggested change to underline.
                        &quot;smallCapsSuggested&quot;: True or False, # Indicates if there was a suggested change to small_caps.
                        &quot;backgroundColorSuggested&quot;: True or False, # Indicates if there was a suggested change to background_color.
                        &quot;weightedFontFamilySuggested&quot;: True or False, # Indicates if there was a suggested change to weighted_font_family.
                        &quot;boldSuggested&quot;: True or False, # Indicates if there was a suggested change to bold.
                        &quot;fontSizeSuggested&quot;: True or False, # Indicates if there was a suggested change to font_size.
                        &quot;italicSuggested&quot;: True or False, # Indicates if there was a suggested change to italic.
                        &quot;baselineOffsetSuggested&quot;: True or False, # Indicates if there was a suggested change to baseline_offset.
                        &quot;linkSuggested&quot;: True or False, # Indicates if there was a suggested change to link.
                        &quot;foregroundColorSuggested&quot;: True or False, # Indicates if there was a suggested change to foreground_color.
                        &quot;strikethroughSuggested&quot;: True or False, # Indicates if there was a suggested change to strikethrough.
                      },
                    },
                  },
                },
                &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;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;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;strikethrough&quot;: True or False, # Whether or not the text is struck through.
                        &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;bold&quot;: True or False, # Whether or not the text is rendered as bold.
                        &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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                              &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                              &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                            },
                          },
                        },
                        &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;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;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;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;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;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;bookmarkId&quot;: &quot;A String&quot;, # The ID of a bookmark in this document.
                        },
                        &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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                              &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                              &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                            },
                          },
                        },
                        &quot;smallCaps&quot;: True or False, # Whether or not the text is in small capital letters.
                        &quot;underline&quot;: True or False, # Whether or not the text is underlined.
                        &quot;italic&quot;: True or False, # Whether or not the text is italicized.
                      },
                      &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;underlineSuggested&quot;: True or False, # Indicates if there was a suggested change to underline.
                        &quot;smallCapsSuggested&quot;: True or False, # Indicates if there was a suggested change to small_caps.
                        &quot;backgroundColorSuggested&quot;: True or False, # Indicates if there was a suggested change to background_color.
                        &quot;weightedFontFamilySuggested&quot;: True or False, # Indicates if there was a suggested change to weighted_font_family.
                        &quot;boldSuggested&quot;: True or False, # Indicates if there was a suggested change to bold.
                        &quot;fontSizeSuggested&quot;: True or False, # Indicates if there was a suggested change to font_size.
                        &quot;italicSuggested&quot;: True or False, # Indicates if there was a suggested change to italic.
                        &quot;baselineOffsetSuggested&quot;: True or False, # Indicates if there was a suggested change to baseline_offset.
                        &quot;linkSuggested&quot;: True or False, # Indicates if there was a suggested change to link.
                        &quot;foregroundColorSuggested&quot;: True or False, # Indicates if there was a suggested change to foreground_color.
                        &quot;strikethroughSuggested&quot;: True or False, # Indicates if there was a suggested change to strikethrough.
                      },
                    },
                  },
                  &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;strikethrough&quot;: True or False, # Whether or not the text is struck through.
                    &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;bold&quot;: True or False, # Whether or not the text is rendered as bold.
                    &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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                          &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                          &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                        },
                      },
                    },
                    &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;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;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;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;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;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;bookmarkId&quot;: &quot;A String&quot;, # The ID of a bookmark in this document.
                    },
                    &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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                          &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                          &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                        },
                      },
                    },
                    &quot;smallCaps&quot;: True or False, # Whether or not the text is in small capital letters.
                    &quot;underline&quot;: True or False, # Whether or not the text is underlined.
                    &quot;italic&quot;: True or False, # Whether or not the text is italicized.
                  },
                  &quot;suggestedDeletionIds&quot;: [ # The suggested deletion IDs. If empty, then there are no suggested deletions of this content.
                    &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;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;strikethrough&quot;: True or False, # Whether or not the text is struck through.
                        &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;bold&quot;: True or False, # Whether or not the text is rendered as bold.
                        &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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                              &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                              &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                            },
                          },
                        },
                        &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;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;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;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;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;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;bookmarkId&quot;: &quot;A String&quot;, # The ID of a bookmark in this document.
                        },
                        &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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                              &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                              &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                            },
                          },
                        },
                        &quot;smallCaps&quot;: True or False, # Whether or not the text is in small capital letters.
                        &quot;underline&quot;: True or False, # Whether or not the text is underlined.
                        &quot;italic&quot;: True or False, # Whether or not the text is italicized.
                      },
                      &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;underlineSuggested&quot;: True or False, # Indicates if there was a suggested change to underline.
                        &quot;smallCapsSuggested&quot;: True or False, # Indicates if there was a suggested change to small_caps.
                        &quot;backgroundColorSuggested&quot;: True or False, # Indicates if there was a suggested change to background_color.
                        &quot;weightedFontFamilySuggested&quot;: True or False, # Indicates if there was a suggested change to weighted_font_family.
                        &quot;boldSuggested&quot;: True or False, # Indicates if there was a suggested change to bold.
                        &quot;fontSizeSuggested&quot;: True or False, # Indicates if there was a suggested change to font_size.
                        &quot;italicSuggested&quot;: True or False, # Indicates if there was a suggested change to italic.
                        &quot;baselineOffsetSuggested&quot;: True or False, # Indicates if there was a suggested change to baseline_offset.
                        &quot;linkSuggested&quot;: True or False, # Indicates if there was a suggested change to link.
                        &quot;foregroundColorSuggested&quot;: True or False, # Indicates if there was a suggested change to foreground_color.
                        &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. # 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;strikethrough&quot;: True or False, # Whether or not the text is struck through.
                    &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;bold&quot;: True or False, # Whether or not the text is rendered as bold.
                    &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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                          &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                          &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                        },
                      },
                    },
                    &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;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;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;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;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;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;bookmarkId&quot;: &quot;A String&quot;, # The ID of a bookmark in this document.
                    },
                    &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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                          &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                          &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                        },
                      },
                    },
                    &quot;smallCaps&quot;: True or False, # Whether or not the text is in small capital letters.
                    &quot;underline&quot;: True or False, # Whether or not the text is underlined.
                    &quot;italic&quot;: True or False, # Whether or not the text is italicized.
                  },
                  &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 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;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;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;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;strikethrough&quot;: True or False, # Whether or not the text is struck through.
                        &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;bold&quot;: True or False, # Whether or not the text is rendered as bold.
                        &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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                              &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                              &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                            },
                          },
                        },
                        &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;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;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;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;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;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;bookmarkId&quot;: &quot;A String&quot;, # The ID of a bookmark in this document.
                        },
                        &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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                              &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                              &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                            },
                          },
                        },
                        &quot;smallCaps&quot;: True or False, # Whether or not the text is in small capital letters.
                        &quot;underline&quot;: True or False, # Whether or not the text is underlined.
                        &quot;italic&quot;: True or False, # Whether or not the text is italicized.
                      },
                      &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;underlineSuggested&quot;: True or False, # Indicates if there was a suggested change to underline.
                        &quot;smallCapsSuggested&quot;: True or False, # Indicates if there was a suggested change to small_caps.
                        &quot;backgroundColorSuggested&quot;: True or False, # Indicates if there was a suggested change to background_color.
                        &quot;weightedFontFamilySuggested&quot;: True or False, # Indicates if there was a suggested change to weighted_font_family.
                        &quot;boldSuggested&quot;: True or False, # Indicates if there was a suggested change to bold.
                        &quot;fontSizeSuggested&quot;: True or False, # Indicates if there was a suggested change to font_size.
                        &quot;italicSuggested&quot;: True or False, # Indicates if there was a suggested change to italic.
                        &quot;baselineOffsetSuggested&quot;: True or False, # Indicates if there was a suggested change to baseline_offset.
                        &quot;linkSuggested&quot;: True or False, # Indicates if there was a suggested change to link.
                        &quot;foregroundColorSuggested&quot;: True or False, # Indicates if there was a suggested change to foreground_color.
                        &quot;strikethroughSuggested&quot;: True or False, # Indicates if there was a suggested change to strikethrough.
                      },
                    },
                  },
                  &quot;footnoteNumber&quot;: &quot;A String&quot;, # The rendered number of this footnote.
                  &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;footnoteId&quot;: &quot;A String&quot;, # The ID of the footnote that contains the content of this footnote reference.
                  &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;strikethrough&quot;: True or False, # Whether or not the text is struck through.
                    &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;bold&quot;: True or False, # Whether or not the text is rendered as bold.
                    &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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                          &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                          &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                        },
                      },
                    },
                    &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;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;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;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;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;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;bookmarkId&quot;: &quot;A String&quot;, # The ID of a bookmark in this document.
                    },
                    &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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                          &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                          &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                        },
                      },
                    },
                    &quot;smallCaps&quot;: True or False, # Whether or not the text is in small capital letters.
                    &quot;underline&quot;: True or False, # Whether or not the text is underlined.
                    &quot;italic&quot;: True or False, # Whether or not the text is italicized.
                  },
                  &quot;suggestedDeletionIds&quot;: [ # The suggested deletion IDs. If empty, then there are no suggested deletions of this content.
                    &quot;A String&quot;,
                  ],
                },
                &quot;inlineObjectElement&quot;: { # A ParagraphElement that contains an InlineObject. # An inline object paragraph element.
                  &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;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;strikethrough&quot;: True or False, # Whether or not the text is struck through.
                        &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;bold&quot;: True or False, # Whether or not the text is rendered as bold.
                        &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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                              &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                              &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                            },
                          },
                        },
                        &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;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;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;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;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;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;bookmarkId&quot;: &quot;A String&quot;, # The ID of a bookmark in this document.
                        },
                        &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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                              &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                              &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                            },
                          },
                        },
                        &quot;smallCaps&quot;: True or False, # Whether or not the text is in small capital letters.
                        &quot;underline&quot;: True or False, # Whether or not the text is underlined.
                        &quot;italic&quot;: True or False, # Whether or not the text is italicized.
                      },
                      &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;underlineSuggested&quot;: True or False, # Indicates if there was a suggested change to underline.
                        &quot;smallCapsSuggested&quot;: True or False, # Indicates if there was a suggested change to small_caps.
                        &quot;backgroundColorSuggested&quot;: True or False, # Indicates if there was a suggested change to background_color.
                        &quot;weightedFontFamilySuggested&quot;: True or False, # Indicates if there was a suggested change to weighted_font_family.
                        &quot;boldSuggested&quot;: True or False, # Indicates if there was a suggested change to bold.
                        &quot;fontSizeSuggested&quot;: True or False, # Indicates if there was a suggested change to font_size.
                        &quot;italicSuggested&quot;: True or False, # Indicates if there was a suggested change to italic.
                        &quot;baselineOffsetSuggested&quot;: True or False, # Indicates if there was a suggested change to baseline_offset.
                        &quot;linkSuggested&quot;: True or False, # Indicates if there was a suggested change to link.
                        &quot;foregroundColorSuggested&quot;: True or False, # Indicates if there was a suggested change to foreground_color.
                        &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. # 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;strikethrough&quot;: True or False, # Whether or not the text is struck through.
                    &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;bold&quot;: True or False, # Whether or not the text is rendered as bold.
                    &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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                          &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                          &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                        },
                      },
                    },
                    &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;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;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;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;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;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;bookmarkId&quot;: &quot;A String&quot;, # The ID of a bookmark in this document.
                    },
                    &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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                          &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                          &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                        },
                      },
                    },
                    &quot;smallCaps&quot;: True or False, # Whether or not the text is in small capital letters.
                    &quot;underline&quot;: True or False, # Whether or not the text is underlined.
                    &quot;italic&quot;: True or False, # Whether or not the text is italicized.
                  },
                  &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;suggestedDeletionIds&quot;: [ # The suggested deletion IDs. If empty, then there are no suggested deletions of this content.
                    &quot;A String&quot;,
                  ],
                  &quot;inlineObjectId&quot;: &quot;A String&quot;, # The ID of the InlineObject this element contains.
                },
                &quot;endIndex&quot;: 42, # The zero-base end index of this paragraph element, exclusive, in UTF-16 code units.
                &quot;textRun&quot;: { # A ParagraphElement that represents a run of text that all has the same styling. # A text run paragraph element.
                  &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;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;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;strikethrough&quot;: True or False, # Whether or not the text is struck through.
                        &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;bold&quot;: True or False, # Whether or not the text is rendered as bold.
                        &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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                              &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                              &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                            },
                          },
                        },
                        &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;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;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;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;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;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;bookmarkId&quot;: &quot;A String&quot;, # The ID of a bookmark in this document.
                        },
                        &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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                              &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                              &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                            },
                          },
                        },
                        &quot;smallCaps&quot;: True or False, # Whether or not the text is in small capital letters.
                        &quot;underline&quot;: True or False, # Whether or not the text is underlined.
                        &quot;italic&quot;: True or False, # Whether or not the text is italicized.
                      },
                      &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;underlineSuggested&quot;: True or False, # Indicates if there was a suggested change to underline.
                        &quot;smallCapsSuggested&quot;: True or False, # Indicates if there was a suggested change to small_caps.
                        &quot;backgroundColorSuggested&quot;: True or False, # Indicates if there was a suggested change to background_color.
                        &quot;weightedFontFamilySuggested&quot;: True or False, # Indicates if there was a suggested change to weighted_font_family.
                        &quot;boldSuggested&quot;: True or False, # Indicates if there was a suggested change to bold.
                        &quot;fontSizeSuggested&quot;: True or False, # Indicates if there was a suggested change to font_size.
                        &quot;italicSuggested&quot;: True or False, # Indicates if there was a suggested change to italic.
                        &quot;baselineOffsetSuggested&quot;: True or False, # Indicates if there was a suggested change to baseline_offset.
                        &quot;linkSuggested&quot;: True or False, # Indicates if there was a suggested change to link.
                        &quot;foregroundColorSuggested&quot;: True or False, # Indicates if there was a suggested change to foreground_color.
                        &quot;strikethroughSuggested&quot;: True or False, # Indicates if there was a suggested change to strikethrough.
                      },
                    },
                  },
                  &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 run.
                    &quot;strikethrough&quot;: True or False, # Whether or not the text is struck through.
                    &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;bold&quot;: True or False, # Whether or not the text is rendered as bold.
                    &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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                          &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                          &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                        },
                      },
                    },
                    &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;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;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;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;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;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;bookmarkId&quot;: &quot;A String&quot;, # The ID of a bookmark in this document.
                    },
                    &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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                          &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                          &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                        },
                      },
                    },
                    &quot;smallCaps&quot;: True or False, # Whether or not the text is in small capital letters.
                    &quot;underline&quot;: True or False, # Whether or not the text is underlined.
                    &quot;italic&quot;: True or False, # Whether or not the text is italicized.
                  },
                  &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;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;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;type&quot;: &quot;A String&quot;, # The type of this auto text.
                  &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;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;strikethrough&quot;: True or False, # Whether or not the text is struck through.
                    &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;bold&quot;: True or False, # Whether or not the text is rendered as bold.
                    &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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                          &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                          &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                        },
                      },
                    },
                    &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;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;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;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;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;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;bookmarkId&quot;: &quot;A String&quot;, # The ID of a bookmark in this document.
                    },
                    &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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                          &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                          &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                        },
                      },
                    },
                    &quot;smallCaps&quot;: True or False, # Whether or not the text is in small capital letters.
                    &quot;underline&quot;: True or False, # Whether or not the text is underlined.
                    &quot;italic&quot;: True or False, # Whether or not the text is italicized.
                  },
                  &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;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;strikethrough&quot;: True or False, # Whether or not the text is struck through.
                        &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;bold&quot;: True or False, # Whether or not the text is rendered as bold.
                        &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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                              &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                              &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                            },
                          },
                        },
                        &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;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;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;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;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;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;bookmarkId&quot;: &quot;A String&quot;, # The ID of a bookmark in this document.
                        },
                        &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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                              &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                              &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                            },
                          },
                        },
                        &quot;smallCaps&quot;: True or False, # Whether or not the text is in small capital letters.
                        &quot;underline&quot;: True or False, # Whether or not the text is underlined.
                        &quot;italic&quot;: True or False, # Whether or not the text is italicized.
                      },
                      &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;underlineSuggested&quot;: True or False, # Indicates if there was a suggested change to underline.
                        &quot;smallCapsSuggested&quot;: True or False, # Indicates if there was a suggested change to small_caps.
                        &quot;backgroundColorSuggested&quot;: True or False, # Indicates if there was a suggested change to background_color.
                        &quot;weightedFontFamilySuggested&quot;: True or False, # Indicates if there was a suggested change to weighted_font_family.
                        &quot;boldSuggested&quot;: True or False, # Indicates if there was a suggested change to bold.
                        &quot;fontSizeSuggested&quot;: True or False, # Indicates if there was a suggested change to font_size.
                        &quot;italicSuggested&quot;: True or False, # Indicates if there was a suggested change to italic.
                        &quot;baselineOffsetSuggested&quot;: True or False, # Indicates if there was a suggested change to baseline_offset.
                        &quot;linkSuggested&quot;: True or False, # Indicates if there was a suggested change to link.
                        &quot;foregroundColorSuggested&quot;: True or False, # Indicates if there was a suggested change to foreground_color.
                        &quot;strikethroughSuggested&quot;: True or False, # Indicates if there was a suggested change to strikethrough.
                      },
                    },
                  },
                },
              },
            ],
            &quot;suggestedBulletChanges&quot;: { # The suggested changes to this paragraph&#x27;s bullet.
              &quot;a_key&quot;: { # A suggested change to a Bullet.
                &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;listId&quot;: &quot;A String&quot;, # The ID of the list this paragraph belongs to.
                  &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;strikethrough&quot;: True or False, # Whether or not the text is struck through.
                    &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;bold&quot;: True or False, # Whether or not the text is rendered as bold.
                    &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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                          &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                          &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                        },
                      },
                    },
                    &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;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;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;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;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;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;bookmarkId&quot;: &quot;A String&quot;, # The ID of a bookmark in this document.
                    },
                    &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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                          &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                          &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                        },
                      },
                    },
                    &quot;smallCaps&quot;: True or False, # Whether or not the text is in small capital letters.
                    &quot;underline&quot;: True or False, # Whether or not the text is underlined.
                    &quot;italic&quot;: True or False, # Whether or not the text is italicized.
                  },
                  &quot;nestingLevel&quot;: 42, # The nesting level of this paragraph in the list.
                },
                &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;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;underlineSuggested&quot;: True or False, # Indicates if there was a suggested change to underline.
                    &quot;smallCapsSuggested&quot;: True or False, # Indicates if there was a suggested change to small_caps.
                    &quot;backgroundColorSuggested&quot;: True or False, # Indicates if there was a suggested change to background_color.
                    &quot;weightedFontFamilySuggested&quot;: True or False, # Indicates if there was a suggested change to weighted_font_family.
                    &quot;boldSuggested&quot;: True or False, # Indicates if there was a suggested change to bold.
                    &quot;fontSizeSuggested&quot;: True or False, # Indicates if there was a suggested change to font_size.
                    &quot;italicSuggested&quot;: True or False, # Indicates if there was a suggested change to italic.
                    &quot;baselineOffsetSuggested&quot;: True or False, # Indicates if there was a suggested change to baseline_offset.
                    &quot;linkSuggested&quot;: True or False, # Indicates if there was a suggested change to link.
                    &quot;foregroundColorSuggested&quot;: True or False, # Indicates if there was a suggested change to foreground_color.
                    &quot;strikethroughSuggested&quot;: True or False, # Indicates if there was a suggested change to strikethrough.
                  },
                  &quot;nestingLevelSuggested&quot;: True or False, # Indicates if there was a suggested change to the nesting_level.
                  &quot;listIdSuggested&quot;: True or False, # Indicates if there was a suggested change to the list_id.
                },
              },
            },
            &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;alignment&quot;: &quot;A String&quot;, # The text alignment for this paragraph.
              &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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                      &quot;green&quot;: 3.14, # The green component of the color, 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;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;spacingMode&quot;: &quot;A String&quot;, # The spacing mode for the paragraph.
              &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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                      &quot;green&quot;: 3.14, # The green component of the color, 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;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;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;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;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;avoidWidowAndOrphan&quot;: True or False, # Whether to avoid widows and orphans for the paragraph. 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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                      &quot;green&quot;: 3.14, # The green component of the color, 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;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;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;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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                      &quot;green&quot;: 3.14, # The green component of the color, 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;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;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;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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                      &quot;green&quot;: 3.14, # The green component of the color, 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;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;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;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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                      &quot;green&quot;: 3.14, # The green component of the color, 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;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;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;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;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;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;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;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;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;spaceAboveSuggested&quot;: True or False, # Indicates if there was a suggested change to space_above.
                  &quot;directionSuggested&quot;: True or False, # Indicates if there was a suggested change to direction.
                  &quot;spacingModeSuggested&quot;: True or False, # Indicates if there was a suggested change to spacing_mode.
                  &quot;indentFirstLineSuggested&quot;: True or False, # Indicates if there was a suggested change to indent_first_line.
                  &quot;lineSpacingSuggested&quot;: True or False, # Indicates if there was a suggested change to line_spacing.
                  &quot;avoidWidowAndOrphanSuggested&quot;: True or False, # Indicates if there was a suggested change to avoid_widow_and_orphan.
                  &quot;borderBetweenSuggested&quot;: True or False, # Indicates if there was a suggested change to border_between.
                  &quot;keepLinesTogetherSuggested&quot;: True or False, # Indicates if there was a suggested change to keep_lines_together.
                  &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;borderTopSuggested&quot;: True or False, # Indicates if there was a suggested change to border_top.
                  &quot;indentEndSuggested&quot;: True or False, # Indicates if there was a suggested change to indent_end.
                  &quot;keepWithNextSuggested&quot;: True or False, # Indicates if there was a suggested change to keep_with_next.
                  &quot;indentStartSuggested&quot;: True or False, # Indicates if there was a suggested change to indent_start.
                  &quot;borderRightSuggested&quot;: True or False, # Indicates if there was a suggested change to border_right.
                  &quot;spaceBelowSuggested&quot;: True or False, # Indicates if there was a suggested change to space_below.
                  &quot;headingIdSuggested&quot;: True or False, # Indicates if there was a suggested change to heading_id.
                  &quot;borderLeftSuggested&quot;: True or False, # Indicates if there was a suggested change to border_left.
                  &quot;namedStyleTypeSuggested&quot;: True or False, # Indicates if there was a suggested change to named_style_type.
                },
                &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;alignment&quot;: &quot;A String&quot;, # The text alignment for this paragraph.
                  &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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                          &quot;green&quot;: 3.14, # The green component of the color, 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;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;spacingMode&quot;: &quot;A String&quot;, # The spacing mode for the paragraph.
                  &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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                          &quot;green&quot;: 3.14, # The green component of the color, 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;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;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;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;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;avoidWidowAndOrphan&quot;: True or False, # Whether to avoid widows and orphans for the paragraph. 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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                          &quot;green&quot;: 3.14, # The green component of the color, 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;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;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;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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                          &quot;green&quot;: 3.14, # The green component of the color, 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;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;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;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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                          &quot;green&quot;: 3.14, # The green component of the color, 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;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;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;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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                          &quot;green&quot;: 3.14, # The green component of the color, 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;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;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;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;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;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;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;listId&quot;: &quot;A String&quot;, # The ID of the list this paragraph belongs to.
              &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;strikethrough&quot;: True or False, # Whether or not the text is struck through.
                &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;bold&quot;: True or False, # Whether or not the text is rendered as bold.
                &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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                      &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                      &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                    },
                  },
                },
                &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;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;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;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;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;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;bookmarkId&quot;: &quot;A String&quot;, # The ID of a bookmark in this document.
                },
                &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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                      &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                      &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                    },
                  },
                },
                &quot;smallCaps&quot;: True or False, # Whether or not the text is in small capital letters.
                &quot;underline&quot;: True or False, # Whether or not the text is underlined.
                &quot;italic&quot;: True or False, # Whether or not the text is italicized.
              },
              &quot;nestingLevel&quot;: 42, # The nesting level of this paragraph in the list.
            },
            &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;positionedObjectIds&quot;: [ # The IDs of the positioned objects tethered to this paragraph.
              &quot;A String&quot;,
            ],
          },
          &quot;table&quot;: { # A StructuralElement representing a table. # A table type of structural element.
            &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;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;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;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 row, 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;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;suggestedDeletionIds&quot;: [ # The suggested deletion IDs. If empty, then there are no suggested deletions of this content.
                      &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;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;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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                                  &quot;green&quot;: 3.14, # The green component of the color, 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;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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                                &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                                &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                              },
                            },
                          },
                          &quot;rowSpan&quot;: 42, # The row span of the cell. This property is read-only.
                          &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;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;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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                                  &quot;green&quot;: 3.14, # The green component of the color, 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;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;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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                                  &quot;green&quot;: 3.14, # The green component of the color, 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;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;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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                                  &quot;green&quot;: 3.14, # The green component of the color, 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;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;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;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;columnSpan&quot;: 42, # The column 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;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;borderLeftSuggested&quot;: True or False, # Indicates if there was a suggested change to border_left.
                          &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;paddingTopSuggested&quot;: True or False, # Indicates if there was a suggested change to padding_top.
                          &quot;paddingRightSuggested&quot;: True or False, # Indicates if there was a suggested change to padding_right.
                          &quot;rowSpanSuggested&quot;: True or False, # Indicates if there was a suggested change to row_span.
                          &quot;borderBottomSuggested&quot;: True or False, # Indicates if there was a suggested change to border_bottom.
                          &quot;backgroundColorSuggested&quot;: True or False, # Indicates if there was a suggested change to background_color.
                          &quot;columnSpanSuggested&quot;: True or False, # Indicates if there was a suggested change to column_span.
                          &quot;borderTopSuggested&quot;: True or False, # Indicates if there was a suggested change to border_top.
                          &quot;paddingBottomSuggested&quot;: True or False, # Indicates if there was a suggested change to padding_bottom.
                          &quot;paddingLeftSuggested&quot;: True or False, # Indicates if there was a suggested change to padding_left.
                        },
                      },
                    },
                    &quot;content&quot;: [ # The content of the cell.
                      # Object with schema name: StructuralElement
                    ],
                    &quot;endIndex&quot;: 42, # The zero-based end index of this cell, exclusive, 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;startIndex&quot;: 42, # The zero-based start index of this cell, in UTF-16 code units.
                    &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;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;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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                              &quot;green&quot;: 3.14, # The green component of the color, 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;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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                            &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                            &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                          },
                        },
                      },
                      &quot;rowSpan&quot;: 42, # The row span of the cell. This property is read-only.
                      &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;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;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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                              &quot;green&quot;: 3.14, # The green component of the color, 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;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;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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                              &quot;green&quot;: 3.14, # The green component of the color, 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;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;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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                              &quot;green&quot;: 3.14, # The green component of the color, 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;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;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;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;columnSpan&quot;: 42, # The column 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;suggestedTableRowStyleChanges&quot;: { # The suggested style changes to this row, keyed by suggestion ID.
                  &quot;a_key&quot;: { # A suggested change to a TableRowStyle.
                    &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;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;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;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;widthType&quot;: &quot;A String&quot;, # The width type of the column.
                },
              ],
            },
            &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;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;suggestedDeletionIds&quot;: [ # The suggested deletion IDs. If empty, then there are no suggested deletions of this content.
              &quot;A String&quot;,
            ],
            &quot;content&quot;: [ # The content of the table of contents.
              # Object with schema name: StructuralElement
            ],
          },
          &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;sectionStyle&quot;: { # The styling that applies to a section. # The style of the section after this section break.
              &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;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;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;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;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;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;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;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;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;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;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;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;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;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;sectionType&quot;: &quot;A String&quot;, # Output only. The type of section.
              &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;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;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;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;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;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;suggestedDeletionIds&quot;: [ # The suggested deletion IDs. If empty, then there are no suggested deletions of this content.
              &quot;A String&quot;,
            ],
          },
        },
      ],
    },
    &quot;title&quot;: &quot;A String&quot;, # The title of the 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;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;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;embeddedDrawingProperties&quot;: { # The properties of an embedded drawing. # The properties of an embedded drawing.
                },
                &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;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;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;spreadsheetId&quot;: &quot;A String&quot;, # The ID of the Google Sheets spreadsheet that contains the source chart.
                    &quot;chartId&quot;: 42, # The ID of the specific chart in the Google Sheets spreadsheet that is embedded.
                  },
                },
                &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;size&quot;: { # A width and height. # The visible size of the image after cropping.
                  &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;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;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;sourceUri&quot;: &quot;A String&quot;, # The source URI is the URI used to insert the image. The source URI can be empty.
                  &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;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;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;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;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;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;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;description&quot;: &quot;A String&quot;, # The description of the embedded object. The `title` and `description` are both combined to display alt text.
                &quot;embeddedObjectBorder&quot;: { # A border around an EmbeddedObject. # The border of the embedded object.
                  &quot;propertyState&quot;: &quot;A String&quot;, # The property state of the border property.
                  &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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                        &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                        &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                      },
                    },
                  },
                  &quot;dashStyle&quot;: &quot;A String&quot;, # The dash style of the border.
                  &quot;width&quot;: { # A magnitude in a single direction in the specified units. # The width of the border.
                    &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;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;marginLeftSuggested&quot;: True or False, # Indicates if there was a suggested change to margin_left.
                &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;spreadsheetIdSuggested&quot;: True or False, # Indicates if there was a suggested change to spreadsheet_id.
                    &quot;chartIdSuggested&quot;: True or False, # Indicates if there was a suggested change to chart_id.
                  },
                },
                &quot;marginTopSuggested&quot;: True or False, # Indicates if there was a suggested change to margin_top.
                &quot;titleSuggested&quot;: True or False, # Indicates if there was a suggested change to title.
                &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;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;angleSuggested&quot;: True or False, # Indicates if there was a suggested change to angle.
                  &quot;contentUriSuggested&quot;: True or False, # Indicates if there was a suggested change to content_uri.
                  &quot;transparencySuggested&quot;: True or False, # Indicates if there was a suggested change to transparency.
                  &quot;sourceUriSuggested&quot;: True or False, # Indicates if there was a suggested change to source_uri.
                  &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;offsetLeftSuggested&quot;: True or False, # Indicates if there was a suggested change to offset_left.
                    &quot;offsetRightSuggested&quot;: True or False, # Indicates if there was a suggested change to offset_right.
                    &quot;angleSuggested&quot;: True or False, # Indicates if there was a suggested change to angle.
                    &quot;offsetTopSuggested&quot;: True or False, # Indicates if there was a suggested change to offset_top.
                    &quot;offsetBottomSuggested&quot;: True or False, # Indicates if there was a suggested change to offset_bottom.
                  },
                  &quot;contrastSuggested&quot;: True or False, # Indicates if there was a suggested change to contrast.
                  &quot;brightnessSuggested&quot;: True or False, # Indicates if there was a suggested change to brightness.
                },
                &quot;marginRightSuggested&quot;: True or False, # Indicates if there was a suggested change to margin_right.
                &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;dashStyleSuggested&quot;: True or False, # Indicates if there was a suggested change to dash_style.
                  &quot;widthSuggested&quot;: True or False, # Indicates if there was a suggested change to width.
                  &quot;colorSuggested&quot;: True or False, # Indicates if there was a suggested change to color.
                  &quot;propertyStateSuggested&quot;: True or False, # Indicates if there was a suggested change to property_state.
                },
                &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;marginBottomSuggested&quot;: True or False, # Indicates if there was a suggested change to margin_bottom.
              },
            },
          },
        },
        &quot;objectId&quot;: &quot;A String&quot;, # The ID of this inline object.
        &quot;suggestedDeletionIds&quot;: [ # The suggested deletion IDs. If empty, then there are no suggested deletions of this content.
          &quot;A String&quot;,
        ],
        &quot;suggestedInsertionId&quot;: &quot;A String&quot;, # The suggested insertion ID. If empty, then this is not a suggested insertion.
        &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;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;embeddedDrawingProperties&quot;: { # The properties of an embedded drawing. # The properties of an embedded drawing.
            },
            &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;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;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;spreadsheetId&quot;: &quot;A String&quot;, # The ID of the Google Sheets spreadsheet that contains the source chart.
                &quot;chartId&quot;: 42, # The ID of the specific chart in the Google Sheets spreadsheet that is embedded.
              },
            },
            &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;size&quot;: { # A width and height. # The visible size of the image after cropping.
              &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;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;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;sourceUri&quot;: &quot;A String&quot;, # The source URI is the URI used to insert the image. The source URI can be empty.
              &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;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;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;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;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;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;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;description&quot;: &quot;A String&quot;, # The description of the embedded object. The `title` and `description` are both combined to display alt text.
            &quot;embeddedObjectBorder&quot;: { # A border around an EmbeddedObject. # The border of the embedded object.
              &quot;propertyState&quot;: &quot;A String&quot;, # The property state of the border property.
              &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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                    &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                    &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                  },
                },
              },
              &quot;dashStyle&quot;: &quot;A String&quot;, # The dash style of the border.
              &quot;width&quot;: { # A magnitude in a single direction in the specified units. # The width of the border.
                &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;documentId&quot;: &quot;A String&quot;, # Output only. The ID of the document.
    &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;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;alignment&quot;: &quot;A String&quot;, # The text alignment for this paragraph.
            &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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                    &quot;green&quot;: 3.14, # The green component of the color, 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;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;spacingMode&quot;: &quot;A String&quot;, # The spacing mode for the paragraph.
            &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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                    &quot;green&quot;: 3.14, # The green component of the color, 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;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;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;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;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;avoidWidowAndOrphan&quot;: True or False, # Whether to avoid widows and orphans for the paragraph. 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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                    &quot;green&quot;: 3.14, # The green component of the color, 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;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;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;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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                    &quot;green&quot;: 3.14, # The green component of the color, 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;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;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;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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                    &quot;green&quot;: 3.14, # The green component of the color, 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;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;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;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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                    &quot;green&quot;: 3.14, # The green component of the color, 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;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;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;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;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;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;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;strikethrough&quot;: True or False, # Whether or not the text is struck through.
            &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;bold&quot;: True or False, # Whether or not the text is rendered as bold.
            &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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                  &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                  &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                },
              },
            },
            &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;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;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;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;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;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;bookmarkId&quot;: &quot;A String&quot;, # The ID of a bookmark in this document.
            },
            &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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                  &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                  &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                },
              },
            },
            &quot;smallCaps&quot;: True or False, # Whether or not the text is in small capital letters.
            &quot;underline&quot;: True or False, # Whether or not the text is underlined.
            &quot;italic&quot;: True or False, # Whether or not the text is italicized.
          },
        },
      ],
    },
    &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;endIndex&quot;: 42, # The zero-based end index of this structural element, exclusive, in UTF-16 code units.
            &quot;startIndex&quot;: 42, # The zero-based start index of this structural element, in UTF-16 code units.
            &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;elements&quot;: [ # The content of the paragraph broken down into its component parts.
                { # A ParagraphElement describes content within a Paragraph.
                  &quot;startIndex&quot;: 42, # The zero-based start index of this paragraph element, in UTF-16 code units.
                  &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;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;strikethrough&quot;: True or False, # Whether or not the text is struck through.
                      &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;bold&quot;: True or False, # Whether or not the text is rendered as bold.
                      &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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                            &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                            &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                          },
                        },
                      },
                      &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;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;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;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;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;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;bookmarkId&quot;: &quot;A String&quot;, # The ID of a bookmark in this document.
                      },
                      &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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                            &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                            &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                          },
                        },
                      },
                      &quot;smallCaps&quot;: True or False, # Whether or not the text is in small capital letters.
                      &quot;underline&quot;: True or False, # Whether or not the text is underlined.
                      &quot;italic&quot;: True or False, # Whether or not the text is italicized.
                    },
                    &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;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;strikethrough&quot;: True or False, # Whether or not the text is struck through.
                          &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;bold&quot;: True or False, # Whether or not the text is rendered as bold.
                          &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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                                &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                                &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                              },
                            },
                          },
                          &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;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;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;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;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;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;bookmarkId&quot;: &quot;A String&quot;, # The ID of a bookmark in this document.
                          },
                          &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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                                &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                                &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                              },
                            },
                          },
                          &quot;smallCaps&quot;: True or False, # Whether or not the text is in small capital letters.
                          &quot;underline&quot;: True or False, # Whether or not the text is underlined.
                          &quot;italic&quot;: True or False, # Whether or not the text is italicized.
                        },
                        &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;underlineSuggested&quot;: True or False, # Indicates if there was a suggested change to underline.
                          &quot;smallCapsSuggested&quot;: True or False, # Indicates if there was a suggested change to small_caps.
                          &quot;backgroundColorSuggested&quot;: True or False, # Indicates if there was a suggested change to background_color.
                          &quot;weightedFontFamilySuggested&quot;: True or False, # Indicates if there was a suggested change to weighted_font_family.
                          &quot;boldSuggested&quot;: True or False, # Indicates if there was a suggested change to bold.
                          &quot;fontSizeSuggested&quot;: True or False, # Indicates if there was a suggested change to font_size.
                          &quot;italicSuggested&quot;: True or False, # Indicates if there was a suggested change to italic.
                          &quot;baselineOffsetSuggested&quot;: True or False, # Indicates if there was a suggested change to baseline_offset.
                          &quot;linkSuggested&quot;: True or False, # Indicates if there was a suggested change to link.
                          &quot;foregroundColorSuggested&quot;: True or False, # Indicates if there was a suggested change to foreground_color.
                          &quot;strikethroughSuggested&quot;: True or False, # Indicates if there was a suggested change to strikethrough.
                        },
                      },
                    },
                  },
                  &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;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;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;strikethrough&quot;: True or False, # Whether or not the text is struck through.
                          &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;bold&quot;: True or False, # Whether or not the text is rendered as bold.
                          &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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                                &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                                &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                              },
                            },
                          },
                          &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;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;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;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;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;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;bookmarkId&quot;: &quot;A String&quot;, # The ID of a bookmark in this document.
                          },
                          &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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                                &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                                &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                              },
                            },
                          },
                          &quot;smallCaps&quot;: True or False, # Whether or not the text is in small capital letters.
                          &quot;underline&quot;: True or False, # Whether or not the text is underlined.
                          &quot;italic&quot;: True or False, # Whether or not the text is italicized.
                        },
                        &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;underlineSuggested&quot;: True or False, # Indicates if there was a suggested change to underline.
                          &quot;smallCapsSuggested&quot;: True or False, # Indicates if there was a suggested change to small_caps.
                          &quot;backgroundColorSuggested&quot;: True or False, # Indicates if there was a suggested change to background_color.
                          &quot;weightedFontFamilySuggested&quot;: True or False, # Indicates if there was a suggested change to weighted_font_family.
                          &quot;boldSuggested&quot;: True or False, # Indicates if there was a suggested change to bold.
                          &quot;fontSizeSuggested&quot;: True or False, # Indicates if there was a suggested change to font_size.
                          &quot;italicSuggested&quot;: True or False, # Indicates if there was a suggested change to italic.
                          &quot;baselineOffsetSuggested&quot;: True or False, # Indicates if there was a suggested change to baseline_offset.
                          &quot;linkSuggested&quot;: True or False, # Indicates if there was a suggested change to link.
                          &quot;foregroundColorSuggested&quot;: True or False, # Indicates if there was a suggested change to foreground_color.
                          &quot;strikethroughSuggested&quot;: True or False, # Indicates if there was a suggested change to strikethrough.
                        },
                      },
                    },
                    &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;strikethrough&quot;: True or False, # Whether or not the text is struck through.
                      &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;bold&quot;: True or False, # Whether or not the text is rendered as bold.
                      &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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                            &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                            &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                          },
                        },
                      },
                      &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;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;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;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;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;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;bookmarkId&quot;: &quot;A String&quot;, # The ID of a bookmark in this document.
                      },
                      &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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                            &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                            &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                          },
                        },
                      },
                      &quot;smallCaps&quot;: True or False, # Whether or not the text is in small capital letters.
                      &quot;underline&quot;: True or False, # Whether or not the text is underlined.
                      &quot;italic&quot;: True or False, # Whether or not the text is italicized.
                    },
                    &quot;suggestedDeletionIds&quot;: [ # The suggested deletion IDs. If empty, then there are no suggested deletions of this content.
                      &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;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;strikethrough&quot;: True or False, # Whether or not the text is struck through.
                          &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;bold&quot;: True or False, # Whether or not the text is rendered as bold.
                          &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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                                &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                                &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                              },
                            },
                          },
                          &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;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;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;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;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;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;bookmarkId&quot;: &quot;A String&quot;, # The ID of a bookmark in this document.
                          },
                          &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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                                &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                                &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                              },
                            },
                          },
                          &quot;smallCaps&quot;: True or False, # Whether or not the text is in small capital letters.
                          &quot;underline&quot;: True or False, # Whether or not the text is underlined.
                          &quot;italic&quot;: True or False, # Whether or not the text is italicized.
                        },
                        &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;underlineSuggested&quot;: True or False, # Indicates if there was a suggested change to underline.
                          &quot;smallCapsSuggested&quot;: True or False, # Indicates if there was a suggested change to small_caps.
                          &quot;backgroundColorSuggested&quot;: True or False, # Indicates if there was a suggested change to background_color.
                          &quot;weightedFontFamilySuggested&quot;: True or False, # Indicates if there was a suggested change to weighted_font_family.
                          &quot;boldSuggested&quot;: True or False, # Indicates if there was a suggested change to bold.
                          &quot;fontSizeSuggested&quot;: True or False, # Indicates if there was a suggested change to font_size.
                          &quot;italicSuggested&quot;: True or False, # Indicates if there was a suggested change to italic.
                          &quot;baselineOffsetSuggested&quot;: True or False, # Indicates if there was a suggested change to baseline_offset.
                          &quot;linkSuggested&quot;: True or False, # Indicates if there was a suggested change to link.
                          &quot;foregroundColorSuggested&quot;: True or False, # Indicates if there was a suggested change to foreground_color.
                          &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. # 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;strikethrough&quot;: True or False, # Whether or not the text is struck through.
                      &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;bold&quot;: True or False, # Whether or not the text is rendered as bold.
                      &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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                            &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                            &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                          },
                        },
                      },
                      &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;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;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;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;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;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;bookmarkId&quot;: &quot;A String&quot;, # The ID of a bookmark in this document.
                      },
                      &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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                            &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                            &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                          },
                        },
                      },
                      &quot;smallCaps&quot;: True or False, # Whether or not the text is in small capital letters.
                      &quot;underline&quot;: True or False, # Whether or not the text is underlined.
                      &quot;italic&quot;: True or False, # Whether or not the text is italicized.
                    },
                    &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 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;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;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;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;strikethrough&quot;: True or False, # Whether or not the text is struck through.
                          &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;bold&quot;: True or False, # Whether or not the text is rendered as bold.
                          &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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                                &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                                &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                              },
                            },
                          },
                          &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;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;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;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;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;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;bookmarkId&quot;: &quot;A String&quot;, # The ID of a bookmark in this document.
                          },
                          &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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                                &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                                &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                              },
                            },
                          },
                          &quot;smallCaps&quot;: True or False, # Whether or not the text is in small capital letters.
                          &quot;underline&quot;: True or False, # Whether or not the text is underlined.
                          &quot;italic&quot;: True or False, # Whether or not the text is italicized.
                        },
                        &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;underlineSuggested&quot;: True or False, # Indicates if there was a suggested change to underline.
                          &quot;smallCapsSuggested&quot;: True or False, # Indicates if there was a suggested change to small_caps.
                          &quot;backgroundColorSuggested&quot;: True or False, # Indicates if there was a suggested change to background_color.
                          &quot;weightedFontFamilySuggested&quot;: True or False, # Indicates if there was a suggested change to weighted_font_family.
                          &quot;boldSuggested&quot;: True or False, # Indicates if there was a suggested change to bold.
                          &quot;fontSizeSuggested&quot;: True or False, # Indicates if there was a suggested change to font_size.
                          &quot;italicSuggested&quot;: True or False, # Indicates if there was a suggested change to italic.
                          &quot;baselineOffsetSuggested&quot;: True or False, # Indicates if there was a suggested change to baseline_offset.
                          &quot;linkSuggested&quot;: True or False, # Indicates if there was a suggested change to link.
                          &quot;foregroundColorSuggested&quot;: True or False, # Indicates if there was a suggested change to foreground_color.
                          &quot;strikethroughSuggested&quot;: True or False, # Indicates if there was a suggested change to strikethrough.
                        },
                      },
                    },
                    &quot;footnoteNumber&quot;: &quot;A String&quot;, # The rendered number of this footnote.
                    &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;footnoteId&quot;: &quot;A String&quot;, # The ID of the footnote that contains the content of this footnote reference.
                    &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;strikethrough&quot;: True or False, # Whether or not the text is struck through.
                      &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;bold&quot;: True or False, # Whether or not the text is rendered as bold.
                      &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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                            &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                            &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                          },
                        },
                      },
                      &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;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;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;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;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;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;bookmarkId&quot;: &quot;A String&quot;, # The ID of a bookmark in this document.
                      },
                      &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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                            &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                            &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                          },
                        },
                      },
                      &quot;smallCaps&quot;: True or False, # Whether or not the text is in small capital letters.
                      &quot;underline&quot;: True or False, # Whether or not the text is underlined.
                      &quot;italic&quot;: True or False, # Whether or not the text is italicized.
                    },
                    &quot;suggestedDeletionIds&quot;: [ # The suggested deletion IDs. If empty, then there are no suggested deletions of this content.
                      &quot;A String&quot;,
                    ],
                  },
                  &quot;inlineObjectElement&quot;: { # A ParagraphElement that contains an InlineObject. # An inline object paragraph element.
                    &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;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;strikethrough&quot;: True or False, # Whether or not the text is struck through.
                          &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;bold&quot;: True or False, # Whether or not the text is rendered as bold.
                          &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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                                &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                                &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                              },
                            },
                          },
                          &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;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;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;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;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;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;bookmarkId&quot;: &quot;A String&quot;, # The ID of a bookmark in this document.
                          },
                          &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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                                &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                                &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                              },
                            },
                          },
                          &quot;smallCaps&quot;: True or False, # Whether or not the text is in small capital letters.
                          &quot;underline&quot;: True or False, # Whether or not the text is underlined.
                          &quot;italic&quot;: True or False, # Whether or not the text is italicized.
                        },
                        &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;underlineSuggested&quot;: True or False, # Indicates if there was a suggested change to underline.
                          &quot;smallCapsSuggested&quot;: True or False, # Indicates if there was a suggested change to small_caps.
                          &quot;backgroundColorSuggested&quot;: True or False, # Indicates if there was a suggested change to background_color.
                          &quot;weightedFontFamilySuggested&quot;: True or False, # Indicates if there was a suggested change to weighted_font_family.
                          &quot;boldSuggested&quot;: True or False, # Indicates if there was a suggested change to bold.
                          &quot;fontSizeSuggested&quot;: True or False, # Indicates if there was a suggested change to font_size.
                          &quot;italicSuggested&quot;: True or False, # Indicates if there was a suggested change to italic.
                          &quot;baselineOffsetSuggested&quot;: True or False, # Indicates if there was a suggested change to baseline_offset.
                          &quot;linkSuggested&quot;: True or False, # Indicates if there was a suggested change to link.
                          &quot;foregroundColorSuggested&quot;: True or False, # Indicates if there was a suggested change to foreground_color.
                          &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. # 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;strikethrough&quot;: True or False, # Whether or not the text is struck through.
                      &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;bold&quot;: True or False, # Whether or not the text is rendered as bold.
                      &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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                            &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                            &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                          },
                        },
                      },
                      &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;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;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;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;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;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;bookmarkId&quot;: &quot;A String&quot;, # The ID of a bookmark in this document.
                      },
                      &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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                            &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                            &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                          },
                        },
                      },
                      &quot;smallCaps&quot;: True or False, # Whether or not the text is in small capital letters.
                      &quot;underline&quot;: True or False, # Whether or not the text is underlined.
                      &quot;italic&quot;: True or False, # Whether or not the text is italicized.
                    },
                    &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;suggestedDeletionIds&quot;: [ # The suggested deletion IDs. If empty, then there are no suggested deletions of this content.
                      &quot;A String&quot;,
                    ],
                    &quot;inlineObjectId&quot;: &quot;A String&quot;, # The ID of the InlineObject this element contains.
                  },
                  &quot;endIndex&quot;: 42, # The zero-base end index of this paragraph element, exclusive, in UTF-16 code units.
                  &quot;textRun&quot;: { # A ParagraphElement that represents a run of text that all has the same styling. # A text run paragraph element.
                    &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;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;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;strikethrough&quot;: True or False, # Whether or not the text is struck through.
                          &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;bold&quot;: True or False, # Whether or not the text is rendered as bold.
                          &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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                                &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                                &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                              },
                            },
                          },
                          &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;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;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;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;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;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;bookmarkId&quot;: &quot;A String&quot;, # The ID of a bookmark in this document.
                          },
                          &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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                                &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                                &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                              },
                            },
                          },
                          &quot;smallCaps&quot;: True or False, # Whether or not the text is in small capital letters.
                          &quot;underline&quot;: True or False, # Whether or not the text is underlined.
                          &quot;italic&quot;: True or False, # Whether or not the text is italicized.
                        },
                        &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;underlineSuggested&quot;: True or False, # Indicates if there was a suggested change to underline.
                          &quot;smallCapsSuggested&quot;: True or False, # Indicates if there was a suggested change to small_caps.
                          &quot;backgroundColorSuggested&quot;: True or False, # Indicates if there was a suggested change to background_color.
                          &quot;weightedFontFamilySuggested&quot;: True or False, # Indicates if there was a suggested change to weighted_font_family.
                          &quot;boldSuggested&quot;: True or False, # Indicates if there was a suggested change to bold.
                          &quot;fontSizeSuggested&quot;: True or False, # Indicates if there was a suggested change to font_size.
                          &quot;italicSuggested&quot;: True or False, # Indicates if there was a suggested change to italic.
                          &quot;baselineOffsetSuggested&quot;: True or False, # Indicates if there was a suggested change to baseline_offset.
                          &quot;linkSuggested&quot;: True or False, # Indicates if there was a suggested change to link.
                          &quot;foregroundColorSuggested&quot;: True or False, # Indicates if there was a suggested change to foreground_color.
                          &quot;strikethroughSuggested&quot;: True or False, # Indicates if there was a suggested change to strikethrough.
                        },
                      },
                    },
                    &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 run.
                      &quot;strikethrough&quot;: True or False, # Whether or not the text is struck through.
                      &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;bold&quot;: True or False, # Whether or not the text is rendered as bold.
                      &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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                            &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                            &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                          },
                        },
                      },
                      &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;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;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;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;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;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;bookmarkId&quot;: &quot;A String&quot;, # The ID of a bookmark in this document.
                      },
                      &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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                            &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                            &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                          },
                        },
                      },
                      &quot;smallCaps&quot;: True or False, # Whether or not the text is in small capital letters.
                      &quot;underline&quot;: True or False, # Whether or not the text is underlined.
                      &quot;italic&quot;: True or False, # Whether or not the text is italicized.
                    },
                    &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;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;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;type&quot;: &quot;A String&quot;, # The type of this auto text.
                    &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;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;strikethrough&quot;: True or False, # Whether or not the text is struck through.
                      &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;bold&quot;: True or False, # Whether or not the text is rendered as bold.
                      &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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                            &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                            &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                          },
                        },
                      },
                      &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;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;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;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;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;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;bookmarkId&quot;: &quot;A String&quot;, # The ID of a bookmark in this document.
                      },
                      &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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                            &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                            &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                          },
                        },
                      },
                      &quot;smallCaps&quot;: True or False, # Whether or not the text is in small capital letters.
                      &quot;underline&quot;: True or False, # Whether or not the text is underlined.
                      &quot;italic&quot;: True or False, # Whether or not the text is italicized.
                    },
                    &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;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;strikethrough&quot;: True or False, # Whether or not the text is struck through.
                          &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;bold&quot;: True or False, # Whether or not the text is rendered as bold.
                          &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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                                &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                                &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                              },
                            },
                          },
                          &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;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;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;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;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;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;bookmarkId&quot;: &quot;A String&quot;, # The ID of a bookmark in this document.
                          },
                          &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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                                &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                                &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                              },
                            },
                          },
                          &quot;smallCaps&quot;: True or False, # Whether or not the text is in small capital letters.
                          &quot;underline&quot;: True or False, # Whether or not the text is underlined.
                          &quot;italic&quot;: True or False, # Whether or not the text is italicized.
                        },
                        &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;underlineSuggested&quot;: True or False, # Indicates if there was a suggested change to underline.
                          &quot;smallCapsSuggested&quot;: True or False, # Indicates if there was a suggested change to small_caps.
                          &quot;backgroundColorSuggested&quot;: True or False, # Indicates if there was a suggested change to background_color.
                          &quot;weightedFontFamilySuggested&quot;: True or False, # Indicates if there was a suggested change to weighted_font_family.
                          &quot;boldSuggested&quot;: True or False, # Indicates if there was a suggested change to bold.
                          &quot;fontSizeSuggested&quot;: True or False, # Indicates if there was a suggested change to font_size.
                          &quot;italicSuggested&quot;: True or False, # Indicates if there was a suggested change to italic.
                          &quot;baselineOffsetSuggested&quot;: True or False, # Indicates if there was a suggested change to baseline_offset.
                          &quot;linkSuggested&quot;: True or False, # Indicates if there was a suggested change to link.
                          &quot;foregroundColorSuggested&quot;: True or False, # Indicates if there was a suggested change to foreground_color.
                          &quot;strikethroughSuggested&quot;: True or False, # Indicates if there was a suggested change to strikethrough.
                        },
                      },
                    },
                  },
                },
              ],
              &quot;suggestedBulletChanges&quot;: { # The suggested changes to this paragraph&#x27;s bullet.
                &quot;a_key&quot;: { # A suggested change to a Bullet.
                  &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;listId&quot;: &quot;A String&quot;, # The ID of the list this paragraph belongs to.
                    &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;strikethrough&quot;: True or False, # Whether or not the text is struck through.
                      &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;bold&quot;: True or False, # Whether or not the text is rendered as bold.
                      &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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                            &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                            &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                          },
                        },
                      },
                      &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;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;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;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;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;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;bookmarkId&quot;: &quot;A String&quot;, # The ID of a bookmark in this document.
                      },
                      &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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                            &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                            &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                          },
                        },
                      },
                      &quot;smallCaps&quot;: True or False, # Whether or not the text is in small capital letters.
                      &quot;underline&quot;: True or False, # Whether or not the text is underlined.
                      &quot;italic&quot;: True or False, # Whether or not the text is italicized.
                    },
                    &quot;nestingLevel&quot;: 42, # The nesting level of this paragraph in the list.
                  },
                  &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;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;underlineSuggested&quot;: True or False, # Indicates if there was a suggested change to underline.
                      &quot;smallCapsSuggested&quot;: True or False, # Indicates if there was a suggested change to small_caps.
                      &quot;backgroundColorSuggested&quot;: True or False, # Indicates if there was a suggested change to background_color.
                      &quot;weightedFontFamilySuggested&quot;: True or False, # Indicates if there was a suggested change to weighted_font_family.
                      &quot;boldSuggested&quot;: True or False, # Indicates if there was a suggested change to bold.
                      &quot;fontSizeSuggested&quot;: True or False, # Indicates if there was a suggested change to font_size.
                      &quot;italicSuggested&quot;: True or False, # Indicates if there was a suggested change to italic.
                      &quot;baselineOffsetSuggested&quot;: True or False, # Indicates if there was a suggested change to baseline_offset.
                      &quot;linkSuggested&quot;: True or False, # Indicates if there was a suggested change to link.
                      &quot;foregroundColorSuggested&quot;: True or False, # Indicates if there was a suggested change to foreground_color.
                      &quot;strikethroughSuggested&quot;: True or False, # Indicates if there was a suggested change to strikethrough.
                    },
                    &quot;nestingLevelSuggested&quot;: True or False, # Indicates if there was a suggested change to the nesting_level.
                    &quot;listIdSuggested&quot;: True or False, # Indicates if there was a suggested change to the list_id.
                  },
                },
              },
              &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;alignment&quot;: &quot;A String&quot;, # The text alignment for this paragraph.
                &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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                        &quot;green&quot;: 3.14, # The green component of the color, 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;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;spacingMode&quot;: &quot;A String&quot;, # The spacing mode for the paragraph.
                &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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                        &quot;green&quot;: 3.14, # The green component of the color, 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;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;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;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;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;avoidWidowAndOrphan&quot;: True or False, # Whether to avoid widows and orphans for the paragraph. 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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                        &quot;green&quot;: 3.14, # The green component of the color, 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;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;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;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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                        &quot;green&quot;: 3.14, # The green component of the color, 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;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;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;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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                        &quot;green&quot;: 3.14, # The green component of the color, 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;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;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;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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                        &quot;green&quot;: 3.14, # The green component of the color, 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;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;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;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;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;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;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;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;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;spaceAboveSuggested&quot;: True or False, # Indicates if there was a suggested change to space_above.
                    &quot;directionSuggested&quot;: True or False, # Indicates if there was a suggested change to direction.
                    &quot;spacingModeSuggested&quot;: True or False, # Indicates if there was a suggested change to spacing_mode.
                    &quot;indentFirstLineSuggested&quot;: True or False, # Indicates if there was a suggested change to indent_first_line.
                    &quot;lineSpacingSuggested&quot;: True or False, # Indicates if there was a suggested change to line_spacing.
                    &quot;avoidWidowAndOrphanSuggested&quot;: True or False, # Indicates if there was a suggested change to avoid_widow_and_orphan.
                    &quot;borderBetweenSuggested&quot;: True or False, # Indicates if there was a suggested change to border_between.
                    &quot;keepLinesTogetherSuggested&quot;: True or False, # Indicates if there was a suggested change to keep_lines_together.
                    &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;borderTopSuggested&quot;: True or False, # Indicates if there was a suggested change to border_top.
                    &quot;indentEndSuggested&quot;: True or False, # Indicates if there was a suggested change to indent_end.
                    &quot;keepWithNextSuggested&quot;: True or False, # Indicates if there was a suggested change to keep_with_next.
                    &quot;indentStartSuggested&quot;: True or False, # Indicates if there was a suggested change to indent_start.
                    &quot;borderRightSuggested&quot;: True or False, # Indicates if there was a suggested change to border_right.
                    &quot;spaceBelowSuggested&quot;: True or False, # Indicates if there was a suggested change to space_below.
                    &quot;headingIdSuggested&quot;: True or False, # Indicates if there was a suggested change to heading_id.
                    &quot;borderLeftSuggested&quot;: True or False, # Indicates if there was a suggested change to border_left.
                    &quot;namedStyleTypeSuggested&quot;: True or False, # Indicates if there was a suggested change to named_style_type.
                  },
                  &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;alignment&quot;: &quot;A String&quot;, # The text alignment for this paragraph.
                    &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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                            &quot;green&quot;: 3.14, # The green component of the color, 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;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;spacingMode&quot;: &quot;A String&quot;, # The spacing mode for the paragraph.
                    &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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                            &quot;green&quot;: 3.14, # The green component of the color, 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;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;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;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;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;avoidWidowAndOrphan&quot;: True or False, # Whether to avoid widows and orphans for the paragraph. 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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                            &quot;green&quot;: 3.14, # The green component of the color, 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;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;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;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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                            &quot;green&quot;: 3.14, # The green component of the color, 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;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;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;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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                            &quot;green&quot;: 3.14, # The green component of the color, 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;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;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;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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                            &quot;green&quot;: 3.14, # The green component of the color, 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;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;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;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;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;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;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;listId&quot;: &quot;A String&quot;, # The ID of the list this paragraph belongs to.
                &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;strikethrough&quot;: True or False, # Whether or not the text is struck through.
                  &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;bold&quot;: True or False, # Whether or not the text is rendered as bold.
                  &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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                        &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                        &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                      },
                    },
                  },
                  &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;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;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;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;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;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;bookmarkId&quot;: &quot;A String&quot;, # The ID of a bookmark in this document.
                  },
                  &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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                        &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                        &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                      },
                    },
                  },
                  &quot;smallCaps&quot;: True or False, # Whether or not the text is in small capital letters.
                  &quot;underline&quot;: True or False, # Whether or not the text is underlined.
                  &quot;italic&quot;: True or False, # Whether or not the text is italicized.
                },
                &quot;nestingLevel&quot;: 42, # The nesting level of this paragraph in the list.
              },
              &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;positionedObjectIds&quot;: [ # The IDs of the positioned objects tethered to this paragraph.
                &quot;A String&quot;,
              ],
            },
            &quot;table&quot;: { # A StructuralElement representing a table. # A table type of structural element.
              &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;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;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;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 row, 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;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;suggestedDeletionIds&quot;: [ # The suggested deletion IDs. If empty, then there are no suggested deletions of this content.
                        &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;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;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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                                    &quot;green&quot;: 3.14, # The green component of the color, 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;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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                                  &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                                  &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                                },
                              },
                            },
                            &quot;rowSpan&quot;: 42, # The row span of the cell. This property is read-only.
                            &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;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;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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                                    &quot;green&quot;: 3.14, # The green component of the color, 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;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;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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                                    &quot;green&quot;: 3.14, # The green component of the color, 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;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;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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                                    &quot;green&quot;: 3.14, # The green component of the color, 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;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;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;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;columnSpan&quot;: 42, # The column 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;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;borderLeftSuggested&quot;: True or False, # Indicates if there was a suggested change to border_left.
                            &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;paddingTopSuggested&quot;: True or False, # Indicates if there was a suggested change to padding_top.
                            &quot;paddingRightSuggested&quot;: True or False, # Indicates if there was a suggested change to padding_right.
                            &quot;rowSpanSuggested&quot;: True or False, # Indicates if there was a suggested change to row_span.
                            &quot;borderBottomSuggested&quot;: True or False, # Indicates if there was a suggested change to border_bottom.
                            &quot;backgroundColorSuggested&quot;: True or False, # Indicates if there was a suggested change to background_color.
                            &quot;columnSpanSuggested&quot;: True or False, # Indicates if there was a suggested change to column_span.
                            &quot;borderTopSuggested&quot;: True or False, # Indicates if there was a suggested change to border_top.
                            &quot;paddingBottomSuggested&quot;: True or False, # Indicates if there was a suggested change to padding_bottom.
                            &quot;paddingLeftSuggested&quot;: True or False, # Indicates if there was a suggested change to padding_left.
                          },
                        },
                      },
                      &quot;content&quot;: [ # The content of the cell.
                        # Object with schema name: StructuralElement
                      ],
                      &quot;endIndex&quot;: 42, # The zero-based end index of this cell, exclusive, 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;startIndex&quot;: 42, # The zero-based start index of this cell, in UTF-16 code units.
                      &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;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;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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                                &quot;green&quot;: 3.14, # The green component of the color, 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;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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                              &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                              &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                            },
                          },
                        },
                        &quot;rowSpan&quot;: 42, # The row span of the cell. This property is read-only.
                        &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;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;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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                                &quot;green&quot;: 3.14, # The green component of the color, 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;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;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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                                &quot;green&quot;: 3.14, # The green component of the color, 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;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;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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                                &quot;green&quot;: 3.14, # The green component of the color, 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;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;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;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;columnSpan&quot;: 42, # The column 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;suggestedTableRowStyleChanges&quot;: { # The suggested style changes to this row, keyed by suggestion ID.
                    &quot;a_key&quot;: { # A suggested change to a TableRowStyle.
                      &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;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;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;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;widthType&quot;: &quot;A String&quot;, # The width type of the column.
                  },
                ],
              },
              &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;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;suggestedDeletionIds&quot;: [ # The suggested deletion IDs. If empty, then there are no suggested deletions of this content.
                &quot;A String&quot;,
              ],
              &quot;content&quot;: [ # The content of the table of contents.
                # Object with schema name: StructuralElement
              ],
            },
            &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;sectionStyle&quot;: { # The styling that applies to a section. # The style of the section after this section break.
                &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;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;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;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;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;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;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;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;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;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;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;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;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;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;sectionType&quot;: &quot;A String&quot;, # Output only. The type of section.
                &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;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;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;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;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;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;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;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;footers&quot;: { # Output only. The footers in the document, keyed by footer ID.
      &quot;a_key&quot;: { # A document footer.
        &quot;footerId&quot;: &quot;A String&quot;, # The ID of the 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;endIndex&quot;: 42, # The zero-based end index of this structural element, exclusive, in UTF-16 code units.
            &quot;startIndex&quot;: 42, # The zero-based start index of this structural element, in UTF-16 code units.
            &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;elements&quot;: [ # The content of the paragraph broken down into its component parts.
                { # A ParagraphElement describes content within a Paragraph.
                  &quot;startIndex&quot;: 42, # The zero-based start index of this paragraph element, in UTF-16 code units.
                  &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;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;strikethrough&quot;: True or False, # Whether or not the text is struck through.
                      &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;bold&quot;: True or False, # Whether or not the text is rendered as bold.
                      &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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                            &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                            &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                          },
                        },
                      },
                      &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;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;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;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;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;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;bookmarkId&quot;: &quot;A String&quot;, # The ID of a bookmark in this document.
                      },
                      &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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                            &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                            &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                          },
                        },
                      },
                      &quot;smallCaps&quot;: True or False, # Whether or not the text is in small capital letters.
                      &quot;underline&quot;: True or False, # Whether or not the text is underlined.
                      &quot;italic&quot;: True or False, # Whether or not the text is italicized.
                    },
                    &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;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;strikethrough&quot;: True or False, # Whether or not the text is struck through.
                          &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;bold&quot;: True or False, # Whether or not the text is rendered as bold.
                          &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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                                &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                                &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                              },
                            },
                          },
                          &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;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;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;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;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;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;bookmarkId&quot;: &quot;A String&quot;, # The ID of a bookmark in this document.
                          },
                          &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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                                &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                                &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                              },
                            },
                          },
                          &quot;smallCaps&quot;: True or False, # Whether or not the text is in small capital letters.
                          &quot;underline&quot;: True or False, # Whether or not the text is underlined.
                          &quot;italic&quot;: True or False, # Whether or not the text is italicized.
                        },
                        &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;underlineSuggested&quot;: True or False, # Indicates if there was a suggested change to underline.
                          &quot;smallCapsSuggested&quot;: True or False, # Indicates if there was a suggested change to small_caps.
                          &quot;backgroundColorSuggested&quot;: True or False, # Indicates if there was a suggested change to background_color.
                          &quot;weightedFontFamilySuggested&quot;: True or False, # Indicates if there was a suggested change to weighted_font_family.
                          &quot;boldSuggested&quot;: True or False, # Indicates if there was a suggested change to bold.
                          &quot;fontSizeSuggested&quot;: True or False, # Indicates if there was a suggested change to font_size.
                          &quot;italicSuggested&quot;: True or False, # Indicates if there was a suggested change to italic.
                          &quot;baselineOffsetSuggested&quot;: True or False, # Indicates if there was a suggested change to baseline_offset.
                          &quot;linkSuggested&quot;: True or False, # Indicates if there was a suggested change to link.
                          &quot;foregroundColorSuggested&quot;: True or False, # Indicates if there was a suggested change to foreground_color.
                          &quot;strikethroughSuggested&quot;: True or False, # Indicates if there was a suggested change to strikethrough.
                        },
                      },
                    },
                  },
                  &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;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;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;strikethrough&quot;: True or False, # Whether or not the text is struck through.
                          &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;bold&quot;: True or False, # Whether or not the text is rendered as bold.
                          &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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                                &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                                &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                              },
                            },
                          },
                          &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;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;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;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;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;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;bookmarkId&quot;: &quot;A String&quot;, # The ID of a bookmark in this document.
                          },
                          &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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                                &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                                &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                              },
                            },
                          },
                          &quot;smallCaps&quot;: True or False, # Whether or not the text is in small capital letters.
                          &quot;underline&quot;: True or False, # Whether or not the text is underlined.
                          &quot;italic&quot;: True or False, # Whether or not the text is italicized.
                        },
                        &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;underlineSuggested&quot;: True or False, # Indicates if there was a suggested change to underline.
                          &quot;smallCapsSuggested&quot;: True or False, # Indicates if there was a suggested change to small_caps.
                          &quot;backgroundColorSuggested&quot;: True or False, # Indicates if there was a suggested change to background_color.
                          &quot;weightedFontFamilySuggested&quot;: True or False, # Indicates if there was a suggested change to weighted_font_family.
                          &quot;boldSuggested&quot;: True or False, # Indicates if there was a suggested change to bold.
                          &quot;fontSizeSuggested&quot;: True or False, # Indicates if there was a suggested change to font_size.
                          &quot;italicSuggested&quot;: True or False, # Indicates if there was a suggested change to italic.
                          &quot;baselineOffsetSuggested&quot;: True or False, # Indicates if there was a suggested change to baseline_offset.
                          &quot;linkSuggested&quot;: True or False, # Indicates if there was a suggested change to link.
                          &quot;foregroundColorSuggested&quot;: True or False, # Indicates if there was a suggested change to foreground_color.
                          &quot;strikethroughSuggested&quot;: True or False, # Indicates if there was a suggested change to strikethrough.
                        },
                      },
                    },
                    &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;strikethrough&quot;: True or False, # Whether or not the text is struck through.
                      &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;bold&quot;: True or False, # Whether or not the text is rendered as bold.
                      &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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                            &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                            &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                          },
                        },
                      },
                      &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;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;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;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;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;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;bookmarkId&quot;: &quot;A String&quot;, # The ID of a bookmark in this document.
                      },
                      &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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                            &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                            &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                          },
                        },
                      },
                      &quot;smallCaps&quot;: True or False, # Whether or not the text is in small capital letters.
                      &quot;underline&quot;: True or False, # Whether or not the text is underlined.
                      &quot;italic&quot;: True or False, # Whether or not the text is italicized.
                    },
                    &quot;suggestedDeletionIds&quot;: [ # The suggested deletion IDs. If empty, then there are no suggested deletions of this content.
                      &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;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;strikethrough&quot;: True or False, # Whether or not the text is struck through.
                          &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;bold&quot;: True or False, # Whether or not the text is rendered as bold.
                          &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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                                &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                                &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                              },
                            },
                          },
                          &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;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;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;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;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;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;bookmarkId&quot;: &quot;A String&quot;, # The ID of a bookmark in this document.
                          },
                          &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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                                &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                                &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                              },
                            },
                          },
                          &quot;smallCaps&quot;: True or False, # Whether or not the text is in small capital letters.
                          &quot;underline&quot;: True or False, # Whether or not the text is underlined.
                          &quot;italic&quot;: True or False, # Whether or not the text is italicized.
                        },
                        &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;underlineSuggested&quot;: True or False, # Indicates if there was a suggested change to underline.
                          &quot;smallCapsSuggested&quot;: True or False, # Indicates if there was a suggested change to small_caps.
                          &quot;backgroundColorSuggested&quot;: True or False, # Indicates if there was a suggested change to background_color.
                          &quot;weightedFontFamilySuggested&quot;: True or False, # Indicates if there was a suggested change to weighted_font_family.
                          &quot;boldSuggested&quot;: True or False, # Indicates if there was a suggested change to bold.
                          &quot;fontSizeSuggested&quot;: True or False, # Indicates if there was a suggested change to font_size.
                          &quot;italicSuggested&quot;: True or False, # Indicates if there was a suggested change to italic.
                          &quot;baselineOffsetSuggested&quot;: True or False, # Indicates if there was a suggested change to baseline_offset.
                          &quot;linkSuggested&quot;: True or False, # Indicates if there was a suggested change to link.
                          &quot;foregroundColorSuggested&quot;: True or False, # Indicates if there was a suggested change to foreground_color.
                          &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. # 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;strikethrough&quot;: True or False, # Whether or not the text is struck through.
                      &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;bold&quot;: True or False, # Whether or not the text is rendered as bold.
                      &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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                            &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                            &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                          },
                        },
                      },
                      &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;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;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;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;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;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;bookmarkId&quot;: &quot;A String&quot;, # The ID of a bookmark in this document.
                      },
                      &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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                            &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                            &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                          },
                        },
                      },
                      &quot;smallCaps&quot;: True or False, # Whether or not the text is in small capital letters.
                      &quot;underline&quot;: True or False, # Whether or not the text is underlined.
                      &quot;italic&quot;: True or False, # Whether or not the text is italicized.
                    },
                    &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 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;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;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;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;strikethrough&quot;: True or False, # Whether or not the text is struck through.
                          &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;bold&quot;: True or False, # Whether or not the text is rendered as bold.
                          &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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                                &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                                &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                              },
                            },
                          },
                          &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;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;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;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;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;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;bookmarkId&quot;: &quot;A String&quot;, # The ID of a bookmark in this document.
                          },
                          &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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                                &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                                &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                              },
                            },
                          },
                          &quot;smallCaps&quot;: True or False, # Whether or not the text is in small capital letters.
                          &quot;underline&quot;: True or False, # Whether or not the text is underlined.
                          &quot;italic&quot;: True or False, # Whether or not the text is italicized.
                        },
                        &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;underlineSuggested&quot;: True or False, # Indicates if there was a suggested change to underline.
                          &quot;smallCapsSuggested&quot;: True or False, # Indicates if there was a suggested change to small_caps.
                          &quot;backgroundColorSuggested&quot;: True or False, # Indicates if there was a suggested change to background_color.
                          &quot;weightedFontFamilySuggested&quot;: True or False, # Indicates if there was a suggested change to weighted_font_family.
                          &quot;boldSuggested&quot;: True or False, # Indicates if there was a suggested change to bold.
                          &quot;fontSizeSuggested&quot;: True or False, # Indicates if there was a suggested change to font_size.
                          &quot;italicSuggested&quot;: True or False, # Indicates if there was a suggested change to italic.
                          &quot;baselineOffsetSuggested&quot;: True or False, # Indicates if there was a suggested change to baseline_offset.
                          &quot;linkSuggested&quot;: True or False, # Indicates if there was a suggested change to link.
                          &quot;foregroundColorSuggested&quot;: True or False, # Indicates if there was a suggested change to foreground_color.
                          &quot;strikethroughSuggested&quot;: True or False, # Indicates if there was a suggested change to strikethrough.
                        },
                      },
                    },
                    &quot;footnoteNumber&quot;: &quot;A String&quot;, # The rendered number of this footnote.
                    &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;footnoteId&quot;: &quot;A String&quot;, # The ID of the footnote that contains the content of this footnote reference.
                    &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;strikethrough&quot;: True or False, # Whether or not the text is struck through.
                      &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;bold&quot;: True or False, # Whether or not the text is rendered as bold.
                      &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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                            &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                            &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                          },
                        },
                      },
                      &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;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;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;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;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;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;bookmarkId&quot;: &quot;A String&quot;, # The ID of a bookmark in this document.
                      },
                      &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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                            &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                            &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                          },
                        },
                      },
                      &quot;smallCaps&quot;: True or False, # Whether or not the text is in small capital letters.
                      &quot;underline&quot;: True or False, # Whether or not the text is underlined.
                      &quot;italic&quot;: True or False, # Whether or not the text is italicized.
                    },
                    &quot;suggestedDeletionIds&quot;: [ # The suggested deletion IDs. If empty, then there are no suggested deletions of this content.
                      &quot;A String&quot;,
                    ],
                  },
                  &quot;inlineObjectElement&quot;: { # A ParagraphElement that contains an InlineObject. # An inline object paragraph element.
                    &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;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;strikethrough&quot;: True or False, # Whether or not the text is struck through.
                          &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;bold&quot;: True or False, # Whether or not the text is rendered as bold.
                          &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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                                &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                                &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                              },
                            },
                          },
                          &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;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;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;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;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;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;bookmarkId&quot;: &quot;A String&quot;, # The ID of a bookmark in this document.
                          },
                          &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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                                &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                                &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                              },
                            },
                          },
                          &quot;smallCaps&quot;: True or False, # Whether or not the text is in small capital letters.
                          &quot;underline&quot;: True or False, # Whether or not the text is underlined.
                          &quot;italic&quot;: True or False, # Whether or not the text is italicized.
                        },
                        &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;underlineSuggested&quot;: True or False, # Indicates if there was a suggested change to underline.
                          &quot;smallCapsSuggested&quot;: True or False, # Indicates if there was a suggested change to small_caps.
                          &quot;backgroundColorSuggested&quot;: True or False, # Indicates if there was a suggested change to background_color.
                          &quot;weightedFontFamilySuggested&quot;: True or False, # Indicates if there was a suggested change to weighted_font_family.
                          &quot;boldSuggested&quot;: True or False, # Indicates if there was a suggested change to bold.
                          &quot;fontSizeSuggested&quot;: True or False, # Indicates if there was a suggested change to font_size.
                          &quot;italicSuggested&quot;: True or False, # Indicates if there was a suggested change to italic.
                          &quot;baselineOffsetSuggested&quot;: True or False, # Indicates if there was a suggested change to baseline_offset.
                          &quot;linkSuggested&quot;: True or False, # Indicates if there was a suggested change to link.
                          &quot;foregroundColorSuggested&quot;: True or False, # Indicates if there was a suggested change to foreground_color.
                          &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. # 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;strikethrough&quot;: True or False, # Whether or not the text is struck through.
                      &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;bold&quot;: True or False, # Whether or not the text is rendered as bold.
                      &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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                            &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                            &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                          },
                        },
                      },
                      &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;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;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;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;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;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;bookmarkId&quot;: &quot;A String&quot;, # The ID of a bookmark in this document.
                      },
                      &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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                            &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                            &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                          },
                        },
                      },
                      &quot;smallCaps&quot;: True or False, # Whether or not the text is in small capital letters.
                      &quot;underline&quot;: True or False, # Whether or not the text is underlined.
                      &quot;italic&quot;: True or False, # Whether or not the text is italicized.
                    },
                    &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;suggestedDeletionIds&quot;: [ # The suggested deletion IDs. If empty, then there are no suggested deletions of this content.
                      &quot;A String&quot;,
                    ],
                    &quot;inlineObjectId&quot;: &quot;A String&quot;, # The ID of the InlineObject this element contains.
                  },
                  &quot;endIndex&quot;: 42, # The zero-base end index of this paragraph element, exclusive, in UTF-16 code units.
                  &quot;textRun&quot;: { # A ParagraphElement that represents a run of text that all has the same styling. # A text run paragraph element.
                    &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;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;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;strikethrough&quot;: True or False, # Whether or not the text is struck through.
                          &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;bold&quot;: True or False, # Whether or not the text is rendered as bold.
                          &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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                                &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                                &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                              },
                            },
                          },
                          &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;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;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;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;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;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;bookmarkId&quot;: &quot;A String&quot;, # The ID of a bookmark in this document.
                          },
                          &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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                                &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                                &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                              },
                            },
                          },
                          &quot;smallCaps&quot;: True or False, # Whether or not the text is in small capital letters.
                          &quot;underline&quot;: True or False, # Whether or not the text is underlined.
                          &quot;italic&quot;: True or False, # Whether or not the text is italicized.
                        },
                        &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;underlineSuggested&quot;: True or False, # Indicates if there was a suggested change to underline.
                          &quot;smallCapsSuggested&quot;: True or False, # Indicates if there was a suggested change to small_caps.
                          &quot;backgroundColorSuggested&quot;: True or False, # Indicates if there was a suggested change to background_color.
                          &quot;weightedFontFamilySuggested&quot;: True or False, # Indicates if there was a suggested change to weighted_font_family.
                          &quot;boldSuggested&quot;: True or False, # Indicates if there was a suggested change to bold.
                          &quot;fontSizeSuggested&quot;: True or False, # Indicates if there was a suggested change to font_size.
                          &quot;italicSuggested&quot;: True or False, # Indicates if there was a suggested change to italic.
                          &quot;baselineOffsetSuggested&quot;: True or False, # Indicates if there was a suggested change to baseline_offset.
                          &quot;linkSuggested&quot;: True or False, # Indicates if there was a suggested change to link.
                          &quot;foregroundColorSuggested&quot;: True or False, # Indicates if there was a suggested change to foreground_color.
                          &quot;strikethroughSuggested&quot;: True or False, # Indicates if there was a suggested change to strikethrough.
                        },
                      },
                    },
                    &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 run.
                      &quot;strikethrough&quot;: True or False, # Whether or not the text is struck through.
                      &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;bold&quot;: True or False, # Whether or not the text is rendered as bold.
                      &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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                            &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                            &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                          },
                        },
                      },
                      &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;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;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;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;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;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;bookmarkId&quot;: &quot;A String&quot;, # The ID of a bookmark in this document.
                      },
                      &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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                            &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                            &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                          },
                        },
                      },
                      &quot;smallCaps&quot;: True or False, # Whether or not the text is in small capital letters.
                      &quot;underline&quot;: True or False, # Whether or not the text is underlined.
                      &quot;italic&quot;: True or False, # Whether or not the text is italicized.
                    },
                    &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;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;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;type&quot;: &quot;A String&quot;, # The type of this auto text.
                    &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;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;strikethrough&quot;: True or False, # Whether or not the text is struck through.
                      &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;bold&quot;: True or False, # Whether or not the text is rendered as bold.
                      &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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                            &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                            &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                          },
                        },
                      },
                      &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;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;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;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;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;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;bookmarkId&quot;: &quot;A String&quot;, # The ID of a bookmark in this document.
                      },
                      &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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                            &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                            &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                          },
                        },
                      },
                      &quot;smallCaps&quot;: True or False, # Whether or not the text is in small capital letters.
                      &quot;underline&quot;: True or False, # Whether or not the text is underlined.
                      &quot;italic&quot;: True or False, # Whether or not the text is italicized.
                    },
                    &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;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;strikethrough&quot;: True or False, # Whether or not the text is struck through.
                          &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;bold&quot;: True or False, # Whether or not the text is rendered as bold.
                          &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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                                &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                                &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                              },
                            },
                          },
                          &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;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;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;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;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;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;bookmarkId&quot;: &quot;A String&quot;, # The ID of a bookmark in this document.
                          },
                          &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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                                &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                                &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                              },
                            },
                          },
                          &quot;smallCaps&quot;: True or False, # Whether or not the text is in small capital letters.
                          &quot;underline&quot;: True or False, # Whether or not the text is underlined.
                          &quot;italic&quot;: True or False, # Whether or not the text is italicized.
                        },
                        &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;underlineSuggested&quot;: True or False, # Indicates if there was a suggested change to underline.
                          &quot;smallCapsSuggested&quot;: True or False, # Indicates if there was a suggested change to small_caps.
                          &quot;backgroundColorSuggested&quot;: True or False, # Indicates if there was a suggested change to background_color.
                          &quot;weightedFontFamilySuggested&quot;: True or False, # Indicates if there was a suggested change to weighted_font_family.
                          &quot;boldSuggested&quot;: True or False, # Indicates if there was a suggested change to bold.
                          &quot;fontSizeSuggested&quot;: True or False, # Indicates if there was a suggested change to font_size.
                          &quot;italicSuggested&quot;: True or False, # Indicates if there was a suggested change to italic.
                          &quot;baselineOffsetSuggested&quot;: True or False, # Indicates if there was a suggested change to baseline_offset.
                          &quot;linkSuggested&quot;: True or False, # Indicates if there was a suggested change to link.
                          &quot;foregroundColorSuggested&quot;: True or False, # Indicates if there was a suggested change to foreground_color.
                          &quot;strikethroughSuggested&quot;: True or False, # Indicates if there was a suggested change to strikethrough.
                        },
                      },
                    },
                  },
                },
              ],
              &quot;suggestedBulletChanges&quot;: { # The suggested changes to this paragraph&#x27;s bullet.
                &quot;a_key&quot;: { # A suggested change to a Bullet.
                  &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;listId&quot;: &quot;A String&quot;, # The ID of the list this paragraph belongs to.
                    &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;strikethrough&quot;: True or False, # Whether or not the text is struck through.
                      &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;bold&quot;: True or False, # Whether or not the text is rendered as bold.
                      &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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                            &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                            &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                          },
                        },
                      },
                      &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;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;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;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;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;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;bookmarkId&quot;: &quot;A String&quot;, # The ID of a bookmark in this document.
                      },
                      &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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                            &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                            &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                          },
                        },
                      },
                      &quot;smallCaps&quot;: True or False, # Whether or not the text is in small capital letters.
                      &quot;underline&quot;: True or False, # Whether or not the text is underlined.
                      &quot;italic&quot;: True or False, # Whether or not the text is italicized.
                    },
                    &quot;nestingLevel&quot;: 42, # The nesting level of this paragraph in the list.
                  },
                  &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;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;underlineSuggested&quot;: True or False, # Indicates if there was a suggested change to underline.
                      &quot;smallCapsSuggested&quot;: True or False, # Indicates if there was a suggested change to small_caps.
                      &quot;backgroundColorSuggested&quot;: True or False, # Indicates if there was a suggested change to background_color.
                      &quot;weightedFontFamilySuggested&quot;: True or False, # Indicates if there was a suggested change to weighted_font_family.
                      &quot;boldSuggested&quot;: True or False, # Indicates if there was a suggested change to bold.
                      &quot;fontSizeSuggested&quot;: True or False, # Indicates if there was a suggested change to font_size.
                      &quot;italicSuggested&quot;: True or False, # Indicates if there was a suggested change to italic.
                      &quot;baselineOffsetSuggested&quot;: True or False, # Indicates if there was a suggested change to baseline_offset.
                      &quot;linkSuggested&quot;: True or False, # Indicates if there was a suggested change to link.
                      &quot;foregroundColorSuggested&quot;: True or False, # Indicates if there was a suggested change to foreground_color.
                      &quot;strikethroughSuggested&quot;: True or False, # Indicates if there was a suggested change to strikethrough.
                    },
                    &quot;nestingLevelSuggested&quot;: True or False, # Indicates if there was a suggested change to the nesting_level.
                    &quot;listIdSuggested&quot;: True or False, # Indicates if there was a suggested change to the list_id.
                  },
                },
              },
              &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;alignment&quot;: &quot;A String&quot;, # The text alignment for this paragraph.
                &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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                        &quot;green&quot;: 3.14, # The green component of the color, 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;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;spacingMode&quot;: &quot;A String&quot;, # The spacing mode for the paragraph.
                &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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                        &quot;green&quot;: 3.14, # The green component of the color, 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;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;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;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;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;avoidWidowAndOrphan&quot;: True or False, # Whether to avoid widows and orphans for the paragraph. 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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                        &quot;green&quot;: 3.14, # The green component of the color, 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;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;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;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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                        &quot;green&quot;: 3.14, # The green component of the color, 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;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;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;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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                        &quot;green&quot;: 3.14, # The green component of the color, 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;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;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;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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                        &quot;green&quot;: 3.14, # The green component of the color, 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;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;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;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;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;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;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;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;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;spaceAboveSuggested&quot;: True or False, # Indicates if there was a suggested change to space_above.
                    &quot;directionSuggested&quot;: True or False, # Indicates if there was a suggested change to direction.
                    &quot;spacingModeSuggested&quot;: True or False, # Indicates if there was a suggested change to spacing_mode.
                    &quot;indentFirstLineSuggested&quot;: True or False, # Indicates if there was a suggested change to indent_first_line.
                    &quot;lineSpacingSuggested&quot;: True or False, # Indicates if there was a suggested change to line_spacing.
                    &quot;avoidWidowAndOrphanSuggested&quot;: True or False, # Indicates if there was a suggested change to avoid_widow_and_orphan.
                    &quot;borderBetweenSuggested&quot;: True or False, # Indicates if there was a suggested change to border_between.
                    &quot;keepLinesTogetherSuggested&quot;: True or False, # Indicates if there was a suggested change to keep_lines_together.
                    &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;borderTopSuggested&quot;: True or False, # Indicates if there was a suggested change to border_top.
                    &quot;indentEndSuggested&quot;: True or False, # Indicates if there was a suggested change to indent_end.
                    &quot;keepWithNextSuggested&quot;: True or False, # Indicates if there was a suggested change to keep_with_next.
                    &quot;indentStartSuggested&quot;: True or False, # Indicates if there was a suggested change to indent_start.
                    &quot;borderRightSuggested&quot;: True or False, # Indicates if there was a suggested change to border_right.
                    &quot;spaceBelowSuggested&quot;: True or False, # Indicates if there was a suggested change to space_below.
                    &quot;headingIdSuggested&quot;: True or False, # Indicates if there was a suggested change to heading_id.
                    &quot;borderLeftSuggested&quot;: True or False, # Indicates if there was a suggested change to border_left.
                    &quot;namedStyleTypeSuggested&quot;: True or False, # Indicates if there was a suggested change to named_style_type.
                  },
                  &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;alignment&quot;: &quot;A String&quot;, # The text alignment for this paragraph.
                    &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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                            &quot;green&quot;: 3.14, # The green component of the color, 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;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;spacingMode&quot;: &quot;A String&quot;, # The spacing mode for the paragraph.
                    &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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                            &quot;green&quot;: 3.14, # The green component of the color, 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;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;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;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;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;avoidWidowAndOrphan&quot;: True or False, # Whether to avoid widows and orphans for the paragraph. 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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                            &quot;green&quot;: 3.14, # The green component of the color, 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;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;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;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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                            &quot;green&quot;: 3.14, # The green component of the color, 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;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;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;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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                            &quot;green&quot;: 3.14, # The green component of the color, 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;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;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;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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                            &quot;green&quot;: 3.14, # The green component of the color, 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;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;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;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;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;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;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;listId&quot;: &quot;A String&quot;, # The ID of the list this paragraph belongs to.
                &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;strikethrough&quot;: True or False, # Whether or not the text is struck through.
                  &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;bold&quot;: True or False, # Whether or not the text is rendered as bold.
                  &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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                        &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                        &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                      },
                    },
                  },
                  &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;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;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;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;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;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;bookmarkId&quot;: &quot;A String&quot;, # The ID of a bookmark in this document.
                  },
                  &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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                        &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                        &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                      },
                    },
                  },
                  &quot;smallCaps&quot;: True or False, # Whether or not the text is in small capital letters.
                  &quot;underline&quot;: True or False, # Whether or not the text is underlined.
                  &quot;italic&quot;: True or False, # Whether or not the text is italicized.
                },
                &quot;nestingLevel&quot;: 42, # The nesting level of this paragraph in the list.
              },
              &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;positionedObjectIds&quot;: [ # The IDs of the positioned objects tethered to this paragraph.
                &quot;A String&quot;,
              ],
            },
            &quot;table&quot;: { # A StructuralElement representing a table. # A table type of structural element.
              &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;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;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;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 row, 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;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;suggestedDeletionIds&quot;: [ # The suggested deletion IDs. If empty, then there are no suggested deletions of this content.
                        &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;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;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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                                    &quot;green&quot;: 3.14, # The green component of the color, 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;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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                                  &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                                  &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                                },
                              },
                            },
                            &quot;rowSpan&quot;: 42, # The row span of the cell. This property is read-only.
                            &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;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;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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                                    &quot;green&quot;: 3.14, # The green component of the color, 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;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;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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                                    &quot;green&quot;: 3.14, # The green component of the color, 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;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;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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                                    &quot;green&quot;: 3.14, # The green component of the color, 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;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;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;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;columnSpan&quot;: 42, # The column 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;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;borderLeftSuggested&quot;: True or False, # Indicates if there was a suggested change to border_left.
                            &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;paddingTopSuggested&quot;: True or False, # Indicates if there was a suggested change to padding_top.
                            &quot;paddingRightSuggested&quot;: True or False, # Indicates if there was a suggested change to padding_right.
                            &quot;rowSpanSuggested&quot;: True or False, # Indicates if there was a suggested change to row_span.
                            &quot;borderBottomSuggested&quot;: True or False, # Indicates if there was a suggested change to border_bottom.
                            &quot;backgroundColorSuggested&quot;: True or False, # Indicates if there was a suggested change to background_color.
                            &quot;columnSpanSuggested&quot;: True or False, # Indicates if there was a suggested change to column_span.
                            &quot;borderTopSuggested&quot;: True or False, # Indicates if there was a suggested change to border_top.
                            &quot;paddingBottomSuggested&quot;: True or False, # Indicates if there was a suggested change to padding_bottom.
                            &quot;paddingLeftSuggested&quot;: True or False, # Indicates if there was a suggested change to padding_left.
                          },
                        },
                      },
                      &quot;content&quot;: [ # The content of the cell.
                        # Object with schema name: StructuralElement
                      ],
                      &quot;endIndex&quot;: 42, # The zero-based end index of this cell, exclusive, 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;startIndex&quot;: 42, # The zero-based start index of this cell, in UTF-16 code units.
                      &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;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;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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                                &quot;green&quot;: 3.14, # The green component of the color, 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;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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                              &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                              &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                            },
                          },
                        },
                        &quot;rowSpan&quot;: 42, # The row span of the cell. This property is read-only.
                        &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;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;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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                                &quot;green&quot;: 3.14, # The green component of the color, 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;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;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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                                &quot;green&quot;: 3.14, # The green component of the color, 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;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;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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                                &quot;green&quot;: 3.14, # The green component of the color, 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;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;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;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;columnSpan&quot;: 42, # The column 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;suggestedTableRowStyleChanges&quot;: { # The suggested style changes to this row, keyed by suggestion ID.
                    &quot;a_key&quot;: { # A suggested change to a TableRowStyle.
                      &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;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;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;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;widthType&quot;: &quot;A String&quot;, # The width type of the column.
                  },
                ],
              },
              &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;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;suggestedDeletionIds&quot;: [ # The suggested deletion IDs. If empty, then there are no suggested deletions of this content.
                &quot;A String&quot;,
              ],
              &quot;content&quot;: [ # The content of the table of contents.
                # Object with schema name: StructuralElement
              ],
            },
            &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;sectionStyle&quot;: { # The styling that applies to a section. # The style of the section after this section break.
                &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;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;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;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;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;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;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;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;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;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;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;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;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;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;sectionType&quot;: &quot;A String&quot;, # Output only. The type of section.
                &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;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;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;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;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;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;suggestedDeletionIds&quot;: [ # The suggested deletion IDs. If empty, then there are no suggested deletions of this content.
                &quot;A String&quot;,
              ],
            },
          },
        ],
      },
    },
    &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;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 of the named range.
            &quot;namedRangeId&quot;: &quot;A String&quot;, # The ID of the named range.
          },
        ],
        &quot;name&quot;: &quot;A String&quot;, # The name that all the named ranges share.
      },
    },
    &quot;documentStyle&quot;: { # The style of the document. # Output only. The style of the document.
      &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;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;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;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;useEvenPageHeaderFooter&quot;: True or False, # Indicates whether to use the even page header / footer IDs for the even pages.
      &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;pageNumberStart&quot;: 42, # The page number from which to start counting the number of pages.
      &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;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;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;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;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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
              &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
              &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
            },
          },
        },
      },
      &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;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;pageSize&quot;: { # A width and height. # The size of a page in the document.
        &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;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;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;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;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;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;embeddedDrawingProperties&quot;: { # The properties of an embedded drawing. # The properties of an embedded drawing.
            },
            &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;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;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;spreadsheetId&quot;: &quot;A String&quot;, # The ID of the Google Sheets spreadsheet that contains the source chart.
                &quot;chartId&quot;: 42, # The ID of the specific chart in the Google Sheets spreadsheet that is embedded.
              },
            },
            &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;size&quot;: { # A width and height. # The visible size of the image after cropping.
              &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;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;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;sourceUri&quot;: &quot;A String&quot;, # The source URI is the URI used to insert the image. The source URI can be empty.
              &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;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;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;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;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;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;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;description&quot;: &quot;A String&quot;, # The description of the embedded object. The `title` and `description` are both combined to display alt text.
            &quot;embeddedObjectBorder&quot;: { # A border around an EmbeddedObject. # The border of the embedded object.
              &quot;propertyState&quot;: &quot;A String&quot;, # The property state of the border property.
              &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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                    &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                    &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                  },
                },
              },
              &quot;dashStyle&quot;: &quot;A String&quot;, # The dash style of the border.
              &quot;width&quot;: { # A magnitude in a single direction in the specified units. # The width of the border.
                &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;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;layout&quot;: &quot;A String&quot;, # The layout of 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;suggestedPositionedObjectPropertiesChanges&quot;: { # The suggested changes to the positioned object properties, keyed by suggestion ID.
          &quot;a_key&quot;: { # A suggested change to PositionedObjectProperties.
            &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;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;embeddedDrawingProperties&quot;: { # The properties of an embedded drawing. # The properties of an embedded drawing.
                },
                &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;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;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;spreadsheetId&quot;: &quot;A String&quot;, # The ID of the Google Sheets spreadsheet that contains the source chart.
                    &quot;chartId&quot;: 42, # The ID of the specific chart in the Google Sheets spreadsheet that is embedded.
                  },
                },
                &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;size&quot;: { # A width and height. # The visible size of the image after cropping.
                  &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;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;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;sourceUri&quot;: &quot;A String&quot;, # The source URI is the URI used to insert the image. The source URI can be empty.
                  &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;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;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;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;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;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;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;description&quot;: &quot;A String&quot;, # The description of the embedded object. The `title` and `description` are both combined to display alt text.
                &quot;embeddedObjectBorder&quot;: { # A border around an EmbeddedObject. # The border of the embedded object.
                  &quot;propertyState&quot;: &quot;A String&quot;, # The property state of the border property.
                  &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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                        &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                        &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                      },
                    },
                  },
                  &quot;dashStyle&quot;: &quot;A String&quot;, # The dash style of the border.
                  &quot;width&quot;: { # A magnitude in a single direction in the specified units. # The width of the border.
                    &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;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;layout&quot;: &quot;A String&quot;, # The layout of 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;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;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;leftOffsetSuggested&quot;: True or False, # Indicates if there was a suggested change to left_offset.
                &quot;topOffsetSuggested&quot;: True or False, # Indicates if there was a suggested change to top_offset.
              },
              &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;marginLeftSuggested&quot;: True or False, # Indicates if there was a suggested change to margin_left.
                &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;spreadsheetIdSuggested&quot;: True or False, # Indicates if there was a suggested change to spreadsheet_id.
                    &quot;chartIdSuggested&quot;: True or False, # Indicates if there was a suggested change to chart_id.
                  },
                },
                &quot;marginTopSuggested&quot;: True or False, # Indicates if there was a suggested change to margin_top.
                &quot;titleSuggested&quot;: True or False, # Indicates if there was a suggested change to title.
                &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;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;angleSuggested&quot;: True or False, # Indicates if there was a suggested change to angle.
                  &quot;contentUriSuggested&quot;: True or False, # Indicates if there was a suggested change to content_uri.
                  &quot;transparencySuggested&quot;: True or False, # Indicates if there was a suggested change to transparency.
                  &quot;sourceUriSuggested&quot;: True or False, # Indicates if there was a suggested change to source_uri.
                  &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;offsetLeftSuggested&quot;: True or False, # Indicates if there was a suggested change to offset_left.
                    &quot;offsetRightSuggested&quot;: True or False, # Indicates if there was a suggested change to offset_right.
                    &quot;angleSuggested&quot;: True or False, # Indicates if there was a suggested change to angle.
                    &quot;offsetTopSuggested&quot;: True or False, # Indicates if there was a suggested change to offset_top.
                    &quot;offsetBottomSuggested&quot;: True or False, # Indicates if there was a suggested change to offset_bottom.
                  },
                  &quot;contrastSuggested&quot;: True or False, # Indicates if there was a suggested change to contrast.
                  &quot;brightnessSuggested&quot;: True or False, # Indicates if there was a suggested change to brightness.
                },
                &quot;marginRightSuggested&quot;: True or False, # Indicates if there was a suggested change to margin_right.
                &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;dashStyleSuggested&quot;: True or False, # Indicates if there was a suggested change to dash_style.
                  &quot;widthSuggested&quot;: True or False, # Indicates if there was a suggested change to width.
                  &quot;colorSuggested&quot;: True or False, # Indicates if there was a suggested change to color.
                  &quot;propertyStateSuggested&quot;: True or False, # Indicates if there was a suggested change to property_state.
                },
                &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;marginBottomSuggested&quot;: True or False, # Indicates if there was a suggested change to margin_bottom.
              },
            },
          },
        },
        &quot;suggestedInsertionId&quot;: &quot;A String&quot;, # The suggested insertion ID. If empty, then this is not a suggested insertion.
        &quot;objectId&quot;: &quot;A String&quot;, # The ID 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;,
        ],
      },
    },
  }

  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;headers&quot;: { # Output only. The headers in the document, keyed by header ID.
        &quot;a_key&quot;: { # A document header.
          &quot;headerId&quot;: &quot;A String&quot;, # The ID of the 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;endIndex&quot;: 42, # The zero-based end index of this structural element, exclusive, in UTF-16 code units.
              &quot;startIndex&quot;: 42, # The zero-based start index of this structural element, in UTF-16 code units.
              &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;elements&quot;: [ # The content of the paragraph broken down into its component parts.
                  { # A ParagraphElement describes content within a Paragraph.
                    &quot;startIndex&quot;: 42, # The zero-based start index of this paragraph element, in UTF-16 code units.
                    &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;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;strikethrough&quot;: True or False, # Whether or not the text is struck through.
                        &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;bold&quot;: True or False, # Whether or not the text is rendered as bold.
                        &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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                              &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                              &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                            },
                          },
                        },
                        &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;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;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;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;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;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;bookmarkId&quot;: &quot;A String&quot;, # The ID of a bookmark in this document.
                        },
                        &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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                              &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                              &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                            },
                          },
                        },
                        &quot;smallCaps&quot;: True or False, # Whether or not the text is in small capital letters.
                        &quot;underline&quot;: True or False, # Whether or not the text is underlined.
                        &quot;italic&quot;: True or False, # Whether or not the text is italicized.
                      },
                      &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;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;strikethrough&quot;: True or False, # Whether or not the text is struck through.
                            &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;bold&quot;: True or False, # Whether or not the text is rendered as bold.
                            &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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                                  &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                                  &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                                },
                              },
                            },
                            &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;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;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;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;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;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;bookmarkId&quot;: &quot;A String&quot;, # The ID of a bookmark in this document.
                            },
                            &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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                                  &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                                  &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                                },
                              },
                            },
                            &quot;smallCaps&quot;: True or False, # Whether or not the text is in small capital letters.
                            &quot;underline&quot;: True or False, # Whether or not the text is underlined.
                            &quot;italic&quot;: True or False, # Whether or not the text is italicized.
                          },
                          &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;underlineSuggested&quot;: True or False, # Indicates if there was a suggested change to underline.
                            &quot;smallCapsSuggested&quot;: True or False, # Indicates if there was a suggested change to small_caps.
                            &quot;backgroundColorSuggested&quot;: True or False, # Indicates if there was a suggested change to background_color.
                            &quot;weightedFontFamilySuggested&quot;: True or False, # Indicates if there was a suggested change to weighted_font_family.
                            &quot;boldSuggested&quot;: True or False, # Indicates if there was a suggested change to bold.
                            &quot;fontSizeSuggested&quot;: True or False, # Indicates if there was a suggested change to font_size.
                            &quot;italicSuggested&quot;: True or False, # Indicates if there was a suggested change to italic.
                            &quot;baselineOffsetSuggested&quot;: True or False, # Indicates if there was a suggested change to baseline_offset.
                            &quot;linkSuggested&quot;: True or False, # Indicates if there was a suggested change to link.
                            &quot;foregroundColorSuggested&quot;: True or False, # Indicates if there was a suggested change to foreground_color.
                            &quot;strikethroughSuggested&quot;: True or False, # Indicates if there was a suggested change to strikethrough.
                          },
                        },
                      },
                    },
                    &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;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;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;strikethrough&quot;: True or False, # Whether or not the text is struck through.
                            &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;bold&quot;: True or False, # Whether or not the text is rendered as bold.
                            &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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                                  &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                                  &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                                },
                              },
                            },
                            &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;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;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;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;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;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;bookmarkId&quot;: &quot;A String&quot;, # The ID of a bookmark in this document.
                            },
                            &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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                                  &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                                  &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                                },
                              },
                            },
                            &quot;smallCaps&quot;: True or False, # Whether or not the text is in small capital letters.
                            &quot;underline&quot;: True or False, # Whether or not the text is underlined.
                            &quot;italic&quot;: True or False, # Whether or not the text is italicized.
                          },
                          &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;underlineSuggested&quot;: True or False, # Indicates if there was a suggested change to underline.
                            &quot;smallCapsSuggested&quot;: True or False, # Indicates if there was a suggested change to small_caps.
                            &quot;backgroundColorSuggested&quot;: True or False, # Indicates if there was a suggested change to background_color.
                            &quot;weightedFontFamilySuggested&quot;: True or False, # Indicates if there was a suggested change to weighted_font_family.
                            &quot;boldSuggested&quot;: True or False, # Indicates if there was a suggested change to bold.
                            &quot;fontSizeSuggested&quot;: True or False, # Indicates if there was a suggested change to font_size.
                            &quot;italicSuggested&quot;: True or False, # Indicates if there was a suggested change to italic.
                            &quot;baselineOffsetSuggested&quot;: True or False, # Indicates if there was a suggested change to baseline_offset.
                            &quot;linkSuggested&quot;: True or False, # Indicates if there was a suggested change to link.
                            &quot;foregroundColorSuggested&quot;: True or False, # Indicates if there was a suggested change to foreground_color.
                            &quot;strikethroughSuggested&quot;: True or False, # Indicates if there was a suggested change to strikethrough.
                          },
                        },
                      },
                      &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;strikethrough&quot;: True or False, # Whether or not the text is struck through.
                        &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;bold&quot;: True or False, # Whether or not the text is rendered as bold.
                        &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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                              &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                              &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                            },
                          },
                        },
                        &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;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;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;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;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;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;bookmarkId&quot;: &quot;A String&quot;, # The ID of a bookmark in this document.
                        },
                        &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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                              &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                              &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                            },
                          },
                        },
                        &quot;smallCaps&quot;: True or False, # Whether or not the text is in small capital letters.
                        &quot;underline&quot;: True or False, # Whether or not the text is underlined.
                        &quot;italic&quot;: True or False, # Whether or not the text is italicized.
                      },
                      &quot;suggestedDeletionIds&quot;: [ # The suggested deletion IDs. If empty, then there are no suggested deletions of this content.
                        &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;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;strikethrough&quot;: True or False, # Whether or not the text is struck through.
                            &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;bold&quot;: True or False, # Whether or not the text is rendered as bold.
                            &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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                                  &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                                  &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                                },
                              },
                            },
                            &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;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;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;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;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;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;bookmarkId&quot;: &quot;A String&quot;, # The ID of a bookmark in this document.
                            },
                            &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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                                  &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                                  &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                                },
                              },
                            },
                            &quot;smallCaps&quot;: True or False, # Whether or not the text is in small capital letters.
                            &quot;underline&quot;: True or False, # Whether or not the text is underlined.
                            &quot;italic&quot;: True or False, # Whether or not the text is italicized.
                          },
                          &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;underlineSuggested&quot;: True or False, # Indicates if there was a suggested change to underline.
                            &quot;smallCapsSuggested&quot;: True or False, # Indicates if there was a suggested change to small_caps.
                            &quot;backgroundColorSuggested&quot;: True or False, # Indicates if there was a suggested change to background_color.
                            &quot;weightedFontFamilySuggested&quot;: True or False, # Indicates if there was a suggested change to weighted_font_family.
                            &quot;boldSuggested&quot;: True or False, # Indicates if there was a suggested change to bold.
                            &quot;fontSizeSuggested&quot;: True or False, # Indicates if there was a suggested change to font_size.
                            &quot;italicSuggested&quot;: True or False, # Indicates if there was a suggested change to italic.
                            &quot;baselineOffsetSuggested&quot;: True or False, # Indicates if there was a suggested change to baseline_offset.
                            &quot;linkSuggested&quot;: True or False, # Indicates if there was a suggested change to link.
                            &quot;foregroundColorSuggested&quot;: True or False, # Indicates if there was a suggested change to foreground_color.
                            &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. # 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;strikethrough&quot;: True or False, # Whether or not the text is struck through.
                        &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;bold&quot;: True or False, # Whether or not the text is rendered as bold.
                        &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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                              &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                              &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                            },
                          },
                        },
                        &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;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;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;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;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;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;bookmarkId&quot;: &quot;A String&quot;, # The ID of a bookmark in this document.
                        },
                        &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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                              &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                              &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                            },
                          },
                        },
                        &quot;smallCaps&quot;: True or False, # Whether or not the text is in small capital letters.
                        &quot;underline&quot;: True or False, # Whether or not the text is underlined.
                        &quot;italic&quot;: True or False, # Whether or not the text is italicized.
                      },
                      &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 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;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;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;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;strikethrough&quot;: True or False, # Whether or not the text is struck through.
                            &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;bold&quot;: True or False, # Whether or not the text is rendered as bold.
                            &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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                                  &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                                  &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                                },
                              },
                            },
                            &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;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;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;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;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;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;bookmarkId&quot;: &quot;A String&quot;, # The ID of a bookmark in this document.
                            },
                            &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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                                  &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                                  &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                                },
                              },
                            },
                            &quot;smallCaps&quot;: True or False, # Whether or not the text is in small capital letters.
                            &quot;underline&quot;: True or False, # Whether or not the text is underlined.
                            &quot;italic&quot;: True or False, # Whether or not the text is italicized.
                          },
                          &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;underlineSuggested&quot;: True or False, # Indicates if there was a suggested change to underline.
                            &quot;smallCapsSuggested&quot;: True or False, # Indicates if there was a suggested change to small_caps.
                            &quot;backgroundColorSuggested&quot;: True or False, # Indicates if there was a suggested change to background_color.
                            &quot;weightedFontFamilySuggested&quot;: True or False, # Indicates if there was a suggested change to weighted_font_family.
                            &quot;boldSuggested&quot;: True or False, # Indicates if there was a suggested change to bold.
                            &quot;fontSizeSuggested&quot;: True or False, # Indicates if there was a suggested change to font_size.
                            &quot;italicSuggested&quot;: True or False, # Indicates if there was a suggested change to italic.
                            &quot;baselineOffsetSuggested&quot;: True or False, # Indicates if there was a suggested change to baseline_offset.
                            &quot;linkSuggested&quot;: True or False, # Indicates if there was a suggested change to link.
                            &quot;foregroundColorSuggested&quot;: True or False, # Indicates if there was a suggested change to foreground_color.
                            &quot;strikethroughSuggested&quot;: True or False, # Indicates if there was a suggested change to strikethrough.
                          },
                        },
                      },
                      &quot;footnoteNumber&quot;: &quot;A String&quot;, # The rendered number of this footnote.
                      &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;footnoteId&quot;: &quot;A String&quot;, # The ID of the footnote that contains the content of this footnote reference.
                      &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;strikethrough&quot;: True or False, # Whether or not the text is struck through.
                        &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;bold&quot;: True or False, # Whether or not the text is rendered as bold.
                        &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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                              &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                              &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                            },
                          },
                        },
                        &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;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;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;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;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;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;bookmarkId&quot;: &quot;A String&quot;, # The ID of a bookmark in this document.
                        },
                        &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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                              &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                              &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                            },
                          },
                        },
                        &quot;smallCaps&quot;: True or False, # Whether or not the text is in small capital letters.
                        &quot;underline&quot;: True or False, # Whether or not the text is underlined.
                        &quot;italic&quot;: True or False, # Whether or not the text is italicized.
                      },
                      &quot;suggestedDeletionIds&quot;: [ # The suggested deletion IDs. If empty, then there are no suggested deletions of this content.
                        &quot;A String&quot;,
                      ],
                    },
                    &quot;inlineObjectElement&quot;: { # A ParagraphElement that contains an InlineObject. # An inline object paragraph element.
                      &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;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;strikethrough&quot;: True or False, # Whether or not the text is struck through.
                            &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;bold&quot;: True or False, # Whether or not the text is rendered as bold.
                            &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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                                  &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                                  &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                                },
                              },
                            },
                            &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;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;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;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;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;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;bookmarkId&quot;: &quot;A String&quot;, # The ID of a bookmark in this document.
                            },
                            &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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                                  &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                                  &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                                },
                              },
                            },
                            &quot;smallCaps&quot;: True or False, # Whether or not the text is in small capital letters.
                            &quot;underline&quot;: True or False, # Whether or not the text is underlined.
                            &quot;italic&quot;: True or False, # Whether or not the text is italicized.
                          },
                          &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;underlineSuggested&quot;: True or False, # Indicates if there was a suggested change to underline.
                            &quot;smallCapsSuggested&quot;: True or False, # Indicates if there was a suggested change to small_caps.
                            &quot;backgroundColorSuggested&quot;: True or False, # Indicates if there was a suggested change to background_color.
                            &quot;weightedFontFamilySuggested&quot;: True or False, # Indicates if there was a suggested change to weighted_font_family.
                            &quot;boldSuggested&quot;: True or False, # Indicates if there was a suggested change to bold.
                            &quot;fontSizeSuggested&quot;: True or False, # Indicates if there was a suggested change to font_size.
                            &quot;italicSuggested&quot;: True or False, # Indicates if there was a suggested change to italic.
                            &quot;baselineOffsetSuggested&quot;: True or False, # Indicates if there was a suggested change to baseline_offset.
                            &quot;linkSuggested&quot;: True or False, # Indicates if there was a suggested change to link.
                            &quot;foregroundColorSuggested&quot;: True or False, # Indicates if there was a suggested change to foreground_color.
                            &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. # 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;strikethrough&quot;: True or False, # Whether or not the text is struck through.
                        &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;bold&quot;: True or False, # Whether or not the text is rendered as bold.
                        &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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                              &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                              &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                            },
                          },
                        },
                        &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;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;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;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;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;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;bookmarkId&quot;: &quot;A String&quot;, # The ID of a bookmark in this document.
                        },
                        &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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                              &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                              &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                            },
                          },
                        },
                        &quot;smallCaps&quot;: True or False, # Whether or not the text is in small capital letters.
                        &quot;underline&quot;: True or False, # Whether or not the text is underlined.
                        &quot;italic&quot;: True or False, # Whether or not the text is italicized.
                      },
                      &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;suggestedDeletionIds&quot;: [ # The suggested deletion IDs. If empty, then there are no suggested deletions of this content.
                        &quot;A String&quot;,
                      ],
                      &quot;inlineObjectId&quot;: &quot;A String&quot;, # The ID of the InlineObject this element contains.
                    },
                    &quot;endIndex&quot;: 42, # The zero-base end index of this paragraph element, exclusive, in UTF-16 code units.
                    &quot;textRun&quot;: { # A ParagraphElement that represents a run of text that all has the same styling. # A text run paragraph element.
                      &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;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;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;strikethrough&quot;: True or False, # Whether or not the text is struck through.
                            &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;bold&quot;: True or False, # Whether or not the text is rendered as bold.
                            &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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                                  &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                                  &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                                },
                              },
                            },
                            &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;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;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;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;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;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;bookmarkId&quot;: &quot;A String&quot;, # The ID of a bookmark in this document.
                            },
                            &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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                                  &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                                  &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                                },
                              },
                            },
                            &quot;smallCaps&quot;: True or False, # Whether or not the text is in small capital letters.
                            &quot;underline&quot;: True or False, # Whether or not the text is underlined.
                            &quot;italic&quot;: True or False, # Whether or not the text is italicized.
                          },
                          &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;underlineSuggested&quot;: True or False, # Indicates if there was a suggested change to underline.
                            &quot;smallCapsSuggested&quot;: True or False, # Indicates if there was a suggested change to small_caps.
                            &quot;backgroundColorSuggested&quot;: True or False, # Indicates if there was a suggested change to background_color.
                            &quot;weightedFontFamilySuggested&quot;: True or False, # Indicates if there was a suggested change to weighted_font_family.
                            &quot;boldSuggested&quot;: True or False, # Indicates if there was a suggested change to bold.
                            &quot;fontSizeSuggested&quot;: True or False, # Indicates if there was a suggested change to font_size.
                            &quot;italicSuggested&quot;: True or False, # Indicates if there was a suggested change to italic.
                            &quot;baselineOffsetSuggested&quot;: True or False, # Indicates if there was a suggested change to baseline_offset.
                            &quot;linkSuggested&quot;: True or False, # Indicates if there was a suggested change to link.
                            &quot;foregroundColorSuggested&quot;: True or False, # Indicates if there was a suggested change to foreground_color.
                            &quot;strikethroughSuggested&quot;: True or False, # Indicates if there was a suggested change to strikethrough.
                          },
                        },
                      },
                      &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 run.
                        &quot;strikethrough&quot;: True or False, # Whether or not the text is struck through.
                        &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;bold&quot;: True or False, # Whether or not the text is rendered as bold.
                        &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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                              &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                              &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                            },
                          },
                        },
                        &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;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;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;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;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;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;bookmarkId&quot;: &quot;A String&quot;, # The ID of a bookmark in this document.
                        },
                        &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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                              &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                              &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                            },
                          },
                        },
                        &quot;smallCaps&quot;: True or False, # Whether or not the text is in small capital letters.
                        &quot;underline&quot;: True or False, # Whether or not the text is underlined.
                        &quot;italic&quot;: True or False, # Whether or not the text is italicized.
                      },
                      &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;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;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;type&quot;: &quot;A String&quot;, # The type of this auto text.
                      &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;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;strikethrough&quot;: True or False, # Whether or not the text is struck through.
                        &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;bold&quot;: True or False, # Whether or not the text is rendered as bold.
                        &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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                              &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                              &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                            },
                          },
                        },
                        &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;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;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;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;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;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;bookmarkId&quot;: &quot;A String&quot;, # The ID of a bookmark in this document.
                        },
                        &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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                              &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                              &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                            },
                          },
                        },
                        &quot;smallCaps&quot;: True or False, # Whether or not the text is in small capital letters.
                        &quot;underline&quot;: True or False, # Whether or not the text is underlined.
                        &quot;italic&quot;: True or False, # Whether or not the text is italicized.
                      },
                      &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;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;strikethrough&quot;: True or False, # Whether or not the text is struck through.
                            &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;bold&quot;: True or False, # Whether or not the text is rendered as bold.
                            &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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                                  &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                                  &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                                },
                              },
                            },
                            &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;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;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;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;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;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;bookmarkId&quot;: &quot;A String&quot;, # The ID of a bookmark in this document.
                            },
                            &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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                                  &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                                  &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                                },
                              },
                            },
                            &quot;smallCaps&quot;: True or False, # Whether or not the text is in small capital letters.
                            &quot;underline&quot;: True or False, # Whether or not the text is underlined.
                            &quot;italic&quot;: True or False, # Whether or not the text is italicized.
                          },
                          &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;underlineSuggested&quot;: True or False, # Indicates if there was a suggested change to underline.
                            &quot;smallCapsSuggested&quot;: True or False, # Indicates if there was a suggested change to small_caps.
                            &quot;backgroundColorSuggested&quot;: True or False, # Indicates if there was a suggested change to background_color.
                            &quot;weightedFontFamilySuggested&quot;: True or False, # Indicates if there was a suggested change to weighted_font_family.
                            &quot;boldSuggested&quot;: True or False, # Indicates if there was a suggested change to bold.
                            &quot;fontSizeSuggested&quot;: True or False, # Indicates if there was a suggested change to font_size.
                            &quot;italicSuggested&quot;: True or False, # Indicates if there was a suggested change to italic.
                            &quot;baselineOffsetSuggested&quot;: True or False, # Indicates if there was a suggested change to baseline_offset.
                            &quot;linkSuggested&quot;: True or False, # Indicates if there was a suggested change to link.
                            &quot;foregroundColorSuggested&quot;: True or False, # Indicates if there was a suggested change to foreground_color.
                            &quot;strikethroughSuggested&quot;: True or False, # Indicates if there was a suggested change to strikethrough.
                          },
                        },
                      },
                    },
                  },
                ],
                &quot;suggestedBulletChanges&quot;: { # The suggested changes to this paragraph&#x27;s bullet.
                  &quot;a_key&quot;: { # A suggested change to a Bullet.
                    &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;listId&quot;: &quot;A String&quot;, # The ID of the list this paragraph belongs to.
                      &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;strikethrough&quot;: True or False, # Whether or not the text is struck through.
                        &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;bold&quot;: True or False, # Whether or not the text is rendered as bold.
                        &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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                              &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                              &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                            },
                          },
                        },
                        &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;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;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;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;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;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;bookmarkId&quot;: &quot;A String&quot;, # The ID of a bookmark in this document.
                        },
                        &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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                              &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                              &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                            },
                          },
                        },
                        &quot;smallCaps&quot;: True or False, # Whether or not the text is in small capital letters.
                        &quot;underline&quot;: True or False, # Whether or not the text is underlined.
                        &quot;italic&quot;: True or False, # Whether or not the text is italicized.
                      },
                      &quot;nestingLevel&quot;: 42, # The nesting level of this paragraph in the list.
                    },
                    &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;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;underlineSuggested&quot;: True or False, # Indicates if there was a suggested change to underline.
                        &quot;smallCapsSuggested&quot;: True or False, # Indicates if there was a suggested change to small_caps.
                        &quot;backgroundColorSuggested&quot;: True or False, # Indicates if there was a suggested change to background_color.
                        &quot;weightedFontFamilySuggested&quot;: True or False, # Indicates if there was a suggested change to weighted_font_family.
                        &quot;boldSuggested&quot;: True or False, # Indicates if there was a suggested change to bold.
                        &quot;fontSizeSuggested&quot;: True or False, # Indicates if there was a suggested change to font_size.
                        &quot;italicSuggested&quot;: True or False, # Indicates if there was a suggested change to italic.
                        &quot;baselineOffsetSuggested&quot;: True or False, # Indicates if there was a suggested change to baseline_offset.
                        &quot;linkSuggested&quot;: True or False, # Indicates if there was a suggested change to link.
                        &quot;foregroundColorSuggested&quot;: True or False, # Indicates if there was a suggested change to foreground_color.
                        &quot;strikethroughSuggested&quot;: True or False, # Indicates if there was a suggested change to strikethrough.
                      },
                      &quot;nestingLevelSuggested&quot;: True or False, # Indicates if there was a suggested change to the nesting_level.
                      &quot;listIdSuggested&quot;: True or False, # Indicates if there was a suggested change to the list_id.
                    },
                  },
                },
                &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;alignment&quot;: &quot;A String&quot;, # The text alignment for this paragraph.
                  &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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                          &quot;green&quot;: 3.14, # The green component of the color, 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;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;spacingMode&quot;: &quot;A String&quot;, # The spacing mode for the paragraph.
                  &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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                          &quot;green&quot;: 3.14, # The green component of the color, 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;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;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;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;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;avoidWidowAndOrphan&quot;: True or False, # Whether to avoid widows and orphans for the paragraph. 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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                          &quot;green&quot;: 3.14, # The green component of the color, 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;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;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;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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                          &quot;green&quot;: 3.14, # The green component of the color, 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;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;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;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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                          &quot;green&quot;: 3.14, # The green component of the color, 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;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;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;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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                          &quot;green&quot;: 3.14, # The green component of the color, 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;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;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;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;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;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;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;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;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;spaceAboveSuggested&quot;: True or False, # Indicates if there was a suggested change to space_above.
                      &quot;directionSuggested&quot;: True or False, # Indicates if there was a suggested change to direction.
                      &quot;spacingModeSuggested&quot;: True or False, # Indicates if there was a suggested change to spacing_mode.
                      &quot;indentFirstLineSuggested&quot;: True or False, # Indicates if there was a suggested change to indent_first_line.
                      &quot;lineSpacingSuggested&quot;: True or False, # Indicates if there was a suggested change to line_spacing.
                      &quot;avoidWidowAndOrphanSuggested&quot;: True or False, # Indicates if there was a suggested change to avoid_widow_and_orphan.
                      &quot;borderBetweenSuggested&quot;: True or False, # Indicates if there was a suggested change to border_between.
                      &quot;keepLinesTogetherSuggested&quot;: True or False, # Indicates if there was a suggested change to keep_lines_together.
                      &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;borderTopSuggested&quot;: True or False, # Indicates if there was a suggested change to border_top.
                      &quot;indentEndSuggested&quot;: True or False, # Indicates if there was a suggested change to indent_end.
                      &quot;keepWithNextSuggested&quot;: True or False, # Indicates if there was a suggested change to keep_with_next.
                      &quot;indentStartSuggested&quot;: True or False, # Indicates if there was a suggested change to indent_start.
                      &quot;borderRightSuggested&quot;: True or False, # Indicates if there was a suggested change to border_right.
                      &quot;spaceBelowSuggested&quot;: True or False, # Indicates if there was a suggested change to space_below.
                      &quot;headingIdSuggested&quot;: True or False, # Indicates if there was a suggested change to heading_id.
                      &quot;borderLeftSuggested&quot;: True or False, # Indicates if there was a suggested change to border_left.
                      &quot;namedStyleTypeSuggested&quot;: True or False, # Indicates if there was a suggested change to named_style_type.
                    },
                    &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;alignment&quot;: &quot;A String&quot;, # The text alignment for this paragraph.
                      &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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                              &quot;green&quot;: 3.14, # The green component of the color, 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;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;spacingMode&quot;: &quot;A String&quot;, # The spacing mode for the paragraph.
                      &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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                              &quot;green&quot;: 3.14, # The green component of the color, 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;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;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;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;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;avoidWidowAndOrphan&quot;: True or False, # Whether to avoid widows and orphans for the paragraph. 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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                              &quot;green&quot;: 3.14, # The green component of the color, 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;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;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;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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                              &quot;green&quot;: 3.14, # The green component of the color, 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;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;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;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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                              &quot;green&quot;: 3.14, # The green component of the color, 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;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;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;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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                              &quot;green&quot;: 3.14, # The green component of the color, 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;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;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;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;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;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;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;listId&quot;: &quot;A String&quot;, # The ID of the list this paragraph belongs to.
                  &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;strikethrough&quot;: True or False, # Whether or not the text is struck through.
                    &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;bold&quot;: True or False, # Whether or not the text is rendered as bold.
                    &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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                          &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                          &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                        },
                      },
                    },
                    &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;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;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;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;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;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;bookmarkId&quot;: &quot;A String&quot;, # The ID of a bookmark in this document.
                    },
                    &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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                          &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                          &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                        },
                      },
                    },
                    &quot;smallCaps&quot;: True or False, # Whether or not the text is in small capital letters.
                    &quot;underline&quot;: True or False, # Whether or not the text is underlined.
                    &quot;italic&quot;: True or False, # Whether or not the text is italicized.
                  },
                  &quot;nestingLevel&quot;: 42, # The nesting level of this paragraph in the list.
                },
                &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;positionedObjectIds&quot;: [ # The IDs of the positioned objects tethered to this paragraph.
                  &quot;A String&quot;,
                ],
              },
              &quot;table&quot;: { # A StructuralElement representing a table. # A table type of structural element.
                &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;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;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;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 row, 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;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;suggestedDeletionIds&quot;: [ # The suggested deletion IDs. If empty, then there are no suggested deletions of this content.
                          &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;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;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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                                      &quot;green&quot;: 3.14, # The green component of the color, 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;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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                                    &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                                    &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                                  },
                                },
                              },
                              &quot;rowSpan&quot;: 42, # The row span of the cell. This property is read-only.
                              &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;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;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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                                      &quot;green&quot;: 3.14, # The green component of the color, 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;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;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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                                      &quot;green&quot;: 3.14, # The green component of the color, 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;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;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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                                      &quot;green&quot;: 3.14, # The green component of the color, 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;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;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;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;columnSpan&quot;: 42, # The column 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;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;borderLeftSuggested&quot;: True or False, # Indicates if there was a suggested change to border_left.
                              &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;paddingTopSuggested&quot;: True or False, # Indicates if there was a suggested change to padding_top.
                              &quot;paddingRightSuggested&quot;: True or False, # Indicates if there was a suggested change to padding_right.
                              &quot;rowSpanSuggested&quot;: True or False, # Indicates if there was a suggested change to row_span.
                              &quot;borderBottomSuggested&quot;: True or False, # Indicates if there was a suggested change to border_bottom.
                              &quot;backgroundColorSuggested&quot;: True or False, # Indicates if there was a suggested change to background_color.
                              &quot;columnSpanSuggested&quot;: True or False, # Indicates if there was a suggested change to column_span.
                              &quot;borderTopSuggested&quot;: True or False, # Indicates if there was a suggested change to border_top.
                              &quot;paddingBottomSuggested&quot;: True or False, # Indicates if there was a suggested change to padding_bottom.
                              &quot;paddingLeftSuggested&quot;: True or False, # Indicates if there was a suggested change to padding_left.
                            },
                          },
                        },
                        &quot;content&quot;: [ # The content of the cell.
                          # Object with schema name: StructuralElement
                        ],
                        &quot;endIndex&quot;: 42, # The zero-based end index of this cell, exclusive, 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;startIndex&quot;: 42, # The zero-based start index of this cell, in UTF-16 code units.
                        &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;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;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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                                  &quot;green&quot;: 3.14, # The green component of the color, 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;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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                                &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                                &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                              },
                            },
                          },
                          &quot;rowSpan&quot;: 42, # The row span of the cell. This property is read-only.
                          &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;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;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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                                  &quot;green&quot;: 3.14, # The green component of the color, 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;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;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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                                  &quot;green&quot;: 3.14, # The green component of the color, 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;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;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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                                  &quot;green&quot;: 3.14, # The green component of the color, 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;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;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;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;columnSpan&quot;: 42, # The column 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;suggestedTableRowStyleChanges&quot;: { # The suggested style changes to this row, keyed by suggestion ID.
                      &quot;a_key&quot;: { # A suggested change to a TableRowStyle.
                        &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;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;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;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;widthType&quot;: &quot;A String&quot;, # The width type of the column.
                    },
                  ],
                },
                &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;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;suggestedDeletionIds&quot;: [ # The suggested deletion IDs. If empty, then there are no suggested deletions of this content.
                  &quot;A String&quot;,
                ],
                &quot;content&quot;: [ # The content of the table of contents.
                  # Object with schema name: StructuralElement
                ],
              },
              &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;sectionStyle&quot;: { # The styling that applies to a section. # The style of the section after this section break.
                  &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;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;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;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;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;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;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;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;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;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;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;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;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;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;sectionType&quot;: &quot;A String&quot;, # Output only. The type of section.
                  &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;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;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;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;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;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;suggestedDeletionIds&quot;: [ # The suggested deletion IDs. If empty, then there are no suggested deletions of this content.
                  &quot;A String&quot;,
                ],
              },
            },
          ],
        },
      },
      &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;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;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;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;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;spaceAboveSuggested&quot;: True or False, # Indicates if there was a suggested change to space_above.
                  &quot;directionSuggested&quot;: True or False, # Indicates if there was a suggested change to direction.
                  &quot;spacingModeSuggested&quot;: True or False, # Indicates if there was a suggested change to spacing_mode.
                  &quot;indentFirstLineSuggested&quot;: True or False, # Indicates if there was a suggested change to indent_first_line.
                  &quot;lineSpacingSuggested&quot;: True or False, # Indicates if there was a suggested change to line_spacing.
                  &quot;avoidWidowAndOrphanSuggested&quot;: True or False, # Indicates if there was a suggested change to avoid_widow_and_orphan.
                  &quot;borderBetweenSuggested&quot;: True or False, # Indicates if there was a suggested change to border_between.
                  &quot;keepLinesTogetherSuggested&quot;: True or False, # Indicates if there was a suggested change to keep_lines_together.
                  &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;borderTopSuggested&quot;: True or False, # Indicates if there was a suggested change to border_top.
                  &quot;indentEndSuggested&quot;: True or False, # Indicates if there was a suggested change to indent_end.
                  &quot;keepWithNextSuggested&quot;: True or False, # Indicates if there was a suggested change to keep_with_next.
                  &quot;indentStartSuggested&quot;: True or False, # Indicates if there was a suggested change to indent_start.
                  &quot;borderRightSuggested&quot;: True or False, # Indicates if there was a suggested change to border_right.
                  &quot;spaceBelowSuggested&quot;: True or False, # Indicates if there was a suggested change to space_below.
                  &quot;headingIdSuggested&quot;: True or False, # Indicates if there was a suggested change to heading_id.
                  &quot;borderLeftSuggested&quot;: True or False, # Indicates if there was a suggested change to border_left.
                  &quot;namedStyleTypeSuggested&quot;: True or False, # Indicates if there was a suggested change to named_style_type.
                },
                &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;underlineSuggested&quot;: True or False, # Indicates if there was a suggested change to underline.
                  &quot;smallCapsSuggested&quot;: True or False, # Indicates if there was a suggested change to small_caps.
                  &quot;backgroundColorSuggested&quot;: True or False, # Indicates if there was a suggested change to background_color.
                  &quot;weightedFontFamilySuggested&quot;: True or False, # Indicates if there was a suggested change to weighted_font_family.
                  &quot;boldSuggested&quot;: True or False, # Indicates if there was a suggested change to bold.
                  &quot;fontSizeSuggested&quot;: True or False, # Indicates if there was a suggested change to font_size.
                  &quot;italicSuggested&quot;: True or False, # Indicates if there was a suggested change to italic.
                  &quot;baselineOffsetSuggested&quot;: True or False, # Indicates if there was a suggested change to baseline_offset.
                  &quot;linkSuggested&quot;: True or False, # Indicates if there was a suggested change to link.
                  &quot;foregroundColorSuggested&quot;: True or False, # Indicates if there was a suggested change to foreground_color.
                  &quot;strikethroughSuggested&quot;: True or False, # Indicates if there was a suggested change to strikethrough.
                },
              },
            ],
          },
          &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;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;alignment&quot;: &quot;A String&quot;, # The text alignment for this paragraph.
                  &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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                          &quot;green&quot;: 3.14, # The green component of the color, 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;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;spacingMode&quot;: &quot;A String&quot;, # The spacing mode for the paragraph.
                  &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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                          &quot;green&quot;: 3.14, # The green component of the color, 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;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;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;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;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;avoidWidowAndOrphan&quot;: True or False, # Whether to avoid widows and orphans for the paragraph. 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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                          &quot;green&quot;: 3.14, # The green component of the color, 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;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;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;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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                          &quot;green&quot;: 3.14, # The green component of the color, 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;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;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;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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                          &quot;green&quot;: 3.14, # The green component of the color, 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;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;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;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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                          &quot;green&quot;: 3.14, # The green component of the color, 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;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;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;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;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;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;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;strikethrough&quot;: True or False, # Whether or not the text is struck through.
                  &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;bold&quot;: True or False, # Whether or not the text is rendered as bold.
                  &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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                        &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                        &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                      },
                    },
                  },
                  &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;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;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;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;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;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;bookmarkId&quot;: &quot;A String&quot;, # The ID of a bookmark in this document.
                  },
                  &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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                        &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                        &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                      },
                    },
                  },
                  &quot;smallCaps&quot;: True or False, # Whether or not the text is in small capital letters.
                  &quot;underline&quot;: True or False, # Whether or not the text is underlined.
                  &quot;italic&quot;: True or False, # Whether or not the text is italicized.
                },
              },
            ],
          },
        },
      },
      &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;marginLeftSuggested&quot;: True or False, # Indicates if there was a suggested change to margin_left.
            &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;pageNumberStartSuggested&quot;: True or False, # Indicates if there was a suggested change to page_number_start.
            &quot;marginFooterSuggested&quot;: True or False, # Indicates if there was a suggested change to margin_footer.
            &quot;defaultFooterIdSuggested&quot;: True or False, # Indicates if there was a suggested change to default_footer_id.
            &quot;firstPageHeaderIdSuggested&quot;: True or False, # Indicates if there was a suggested change to first_page_header_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;evenPageHeaderIdSuggested&quot;: True or False, # Indicates if there was a suggested change to even_page_header_id.
            &quot;evenPageFooterIdSuggested&quot;: True or False, # Indicates if there was a suggested change to even_page_footer_id.
            &quot;defaultHeaderIdSuggested&quot;: True or False, # Indicates if there was a suggested change to default_header_id.
            &quot;marginHeaderSuggested&quot;: True or False, # Indicates if there was a suggested change to margin_header.
            &quot;useFirstPageHeaderFooterSuggested&quot;: True or False, # Indicates if there was a suggested change to use_first_page_header_footer.
            &quot;useEvenPageHeaderFooterSuggested&quot;: True or False, # Indicates if there was a suggested change to use_even_page_header_footer.
            &quot;firstPageFooterIdSuggested&quot;: True or False, # Indicates if there was a suggested change to first_page_footer_id.
            &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;marginTopSuggested&quot;: True or False, # Indicates if there was a suggested change to margin_top.
          },
          &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;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;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;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;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;useEvenPageHeaderFooter&quot;: True or False, # Indicates whether to use the even page header / footer IDs for the even pages.
            &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;pageNumberStart&quot;: 42, # The page number from which to start counting the number of pages.
            &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;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;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;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;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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                    &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                    &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                  },
                },
              },
            },
            &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;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;pageSize&quot;: { # A width and height. # The size of a page in the document.
              &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;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;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;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;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;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;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;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;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;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;strikethrough&quot;: True or False, # Whether or not the text is struck through.
                  &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;bold&quot;: True or False, # Whether or not the text is rendered as bold.
                  &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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                        &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                        &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                      },
                    },
                  },
                  &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;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;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;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;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;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;bookmarkId&quot;: &quot;A String&quot;, # The ID of a bookmark in this document.
                  },
                  &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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                        &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                        &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                      },
                    },
                  },
                  &quot;smallCaps&quot;: True or False, # Whether or not the text is in small capital letters.
                  &quot;underline&quot;: True or False, # Whether or not the text is underlined.
                  &quot;italic&quot;: True or False, # Whether or not the text is italicized.
                },
                &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;bulletAlignment&quot;: &quot;A String&quot;, # The alignment of the bullet within the space allotted for rendering the bullet.
                &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;suggestedDeletionIds&quot;: [ # The suggested deletion IDs. If empty, then there are no suggested deletions of this list.
            &quot;A String&quot;,
          ],
          &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;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;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;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;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;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;strikethrough&quot;: True or False, # Whether or not the text is struck through.
                      &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;bold&quot;: True or False, # Whether or not the text is rendered as bold.
                      &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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                            &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                            &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                          },
                        },
                      },
                      &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;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;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;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;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;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;bookmarkId&quot;: &quot;A String&quot;, # The ID of a bookmark in this document.
                      },
                      &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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                            &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                            &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                          },
                        },
                      },
                      &quot;smallCaps&quot;: True or False, # Whether or not the text is in small capital letters.
                      &quot;underline&quot;: True or False, # Whether or not the text is underlined.
                      &quot;italic&quot;: True or False, # Whether or not the text is italicized.
                    },
                    &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;bulletAlignment&quot;: &quot;A String&quot;, # The alignment of the bullet within the space allotted for rendering the bullet.
                    &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;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;underlineSuggested&quot;: True or False, # Indicates if there was a suggested change to underline.
                      &quot;smallCapsSuggested&quot;: True or False, # Indicates if there was a suggested change to small_caps.
                      &quot;backgroundColorSuggested&quot;: True or False, # Indicates if there was a suggested change to background_color.
                      &quot;weightedFontFamilySuggested&quot;: True or False, # Indicates if there was a suggested change to weighted_font_family.
                      &quot;boldSuggested&quot;: True or False, # Indicates if there was a suggested change to bold.
                      &quot;fontSizeSuggested&quot;: True or False, # Indicates if there was a suggested change to font_size.
                      &quot;italicSuggested&quot;: True or False, # Indicates if there was a suggested change to italic.
                      &quot;baselineOffsetSuggested&quot;: True or False, # Indicates if there was a suggested change to baseline_offset.
                      &quot;linkSuggested&quot;: True or False, # Indicates if there was a suggested change to link.
                      &quot;foregroundColorSuggested&quot;: True or False, # Indicates if there was a suggested change to foreground_color.
                      &quot;strikethroughSuggested&quot;: True or False, # Indicates if there was a suggested change to strikethrough.
                    },
                    &quot;startNumberSuggested&quot;: True or False, # Indicates if there was a suggested change to start_number.
                    &quot;glyphTypeSuggested&quot;: True or False, # Indicates if there was a suggested change to glyph_type.
                    &quot;glyphFormatSuggested&quot;: True or False, # Indicates if there was a suggested change to glyph_format.
                    &quot;indentFirstLineSuggested&quot;: True or False, # Indicates if there was a suggested change to indent_first_line.
                    &quot;glyphSymbolSuggested&quot;: True or False, # Indicates if there was a suggested change to glyph_symbol.
                    &quot;bulletAlignmentSuggested&quot;: True or False, # Indicates if there was a suggested change to bullet_alignment.
                    &quot;indentStartSuggested&quot;: True or False, # Indicates if there was a suggested change to indent_start.
                  },
                ],
              },
            },
          },
          &quot;suggestedInsertionId&quot;: &quot;A String&quot;, # The suggested insertion ID. If empty, then this is not a suggested insertion.
        },
      },
      &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;endIndex&quot;: 42, # The zero-based end index of this structural element, exclusive, in UTF-16 code units.
            &quot;startIndex&quot;: 42, # The zero-based start index of this structural element, in UTF-16 code units.
            &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;elements&quot;: [ # The content of the paragraph broken down into its component parts.
                { # A ParagraphElement describes content within a Paragraph.
                  &quot;startIndex&quot;: 42, # The zero-based start index of this paragraph element, in UTF-16 code units.
                  &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;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;strikethrough&quot;: True or False, # Whether or not the text is struck through.
                      &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;bold&quot;: True or False, # Whether or not the text is rendered as bold.
                      &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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                            &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                            &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                          },
                        },
                      },
                      &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;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;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;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;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;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;bookmarkId&quot;: &quot;A String&quot;, # The ID of a bookmark in this document.
                      },
                      &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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                            &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                            &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                          },
                        },
                      },
                      &quot;smallCaps&quot;: True or False, # Whether or not the text is in small capital letters.
                      &quot;underline&quot;: True or False, # Whether or not the text is underlined.
                      &quot;italic&quot;: True or False, # Whether or not the text is italicized.
                    },
                    &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;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;strikethrough&quot;: True or False, # Whether or not the text is struck through.
                          &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;bold&quot;: True or False, # Whether or not the text is rendered as bold.
                          &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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                                &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                                &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                              },
                            },
                          },
                          &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;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;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;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;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;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;bookmarkId&quot;: &quot;A String&quot;, # The ID of a bookmark in this document.
                          },
                          &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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                                &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                                &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                              },
                            },
                          },
                          &quot;smallCaps&quot;: True or False, # Whether or not the text is in small capital letters.
                          &quot;underline&quot;: True or False, # Whether or not the text is underlined.
                          &quot;italic&quot;: True or False, # Whether or not the text is italicized.
                        },
                        &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;underlineSuggested&quot;: True or False, # Indicates if there was a suggested change to underline.
                          &quot;smallCapsSuggested&quot;: True or False, # Indicates if there was a suggested change to small_caps.
                          &quot;backgroundColorSuggested&quot;: True or False, # Indicates if there was a suggested change to background_color.
                          &quot;weightedFontFamilySuggested&quot;: True or False, # Indicates if there was a suggested change to weighted_font_family.
                          &quot;boldSuggested&quot;: True or False, # Indicates if there was a suggested change to bold.
                          &quot;fontSizeSuggested&quot;: True or False, # Indicates if there was a suggested change to font_size.
                          &quot;italicSuggested&quot;: True or False, # Indicates if there was a suggested change to italic.
                          &quot;baselineOffsetSuggested&quot;: True or False, # Indicates if there was a suggested change to baseline_offset.
                          &quot;linkSuggested&quot;: True or False, # Indicates if there was a suggested change to link.
                          &quot;foregroundColorSuggested&quot;: True or False, # Indicates if there was a suggested change to foreground_color.
                          &quot;strikethroughSuggested&quot;: True or False, # Indicates if there was a suggested change to strikethrough.
                        },
                      },
                    },
                  },
                  &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;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;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;strikethrough&quot;: True or False, # Whether or not the text is struck through.
                          &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;bold&quot;: True or False, # Whether or not the text is rendered as bold.
                          &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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                                &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                                &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                              },
                            },
                          },
                          &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;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;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;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;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;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;bookmarkId&quot;: &quot;A String&quot;, # The ID of a bookmark in this document.
                          },
                          &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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                                &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                                &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                              },
                            },
                          },
                          &quot;smallCaps&quot;: True or False, # Whether or not the text is in small capital letters.
                          &quot;underline&quot;: True or False, # Whether or not the text is underlined.
                          &quot;italic&quot;: True or False, # Whether or not the text is italicized.
                        },
                        &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;underlineSuggested&quot;: True or False, # Indicates if there was a suggested change to underline.
                          &quot;smallCapsSuggested&quot;: True or False, # Indicates if there was a suggested change to small_caps.
                          &quot;backgroundColorSuggested&quot;: True or False, # Indicates if there was a suggested change to background_color.
                          &quot;weightedFontFamilySuggested&quot;: True or False, # Indicates if there was a suggested change to weighted_font_family.
                          &quot;boldSuggested&quot;: True or False, # Indicates if there was a suggested change to bold.
                          &quot;fontSizeSuggested&quot;: True or False, # Indicates if there was a suggested change to font_size.
                          &quot;italicSuggested&quot;: True or False, # Indicates if there was a suggested change to italic.
                          &quot;baselineOffsetSuggested&quot;: True or False, # Indicates if there was a suggested change to baseline_offset.
                          &quot;linkSuggested&quot;: True or False, # Indicates if there was a suggested change to link.
                          &quot;foregroundColorSuggested&quot;: True or False, # Indicates if there was a suggested change to foreground_color.
                          &quot;strikethroughSuggested&quot;: True or False, # Indicates if there was a suggested change to strikethrough.
                        },
                      },
                    },
                    &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;strikethrough&quot;: True or False, # Whether or not the text is struck through.
                      &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;bold&quot;: True or False, # Whether or not the text is rendered as bold.
                      &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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                            &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                            &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                          },
                        },
                      },
                      &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;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;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;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;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;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;bookmarkId&quot;: &quot;A String&quot;, # The ID of a bookmark in this document.
                      },
                      &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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                            &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                            &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                          },
                        },
                      },
                      &quot;smallCaps&quot;: True or False, # Whether or not the text is in small capital letters.
                      &quot;underline&quot;: True or False, # Whether or not the text is underlined.
                      &quot;italic&quot;: True or False, # Whether or not the text is italicized.
                    },
                    &quot;suggestedDeletionIds&quot;: [ # The suggested deletion IDs. If empty, then there are no suggested deletions of this content.
                      &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;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;strikethrough&quot;: True or False, # Whether or not the text is struck through.
                          &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;bold&quot;: True or False, # Whether or not the text is rendered as bold.
                          &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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                                &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                                &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                              },
                            },
                          },
                          &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;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;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;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;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;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;bookmarkId&quot;: &quot;A String&quot;, # The ID of a bookmark in this document.
                          },
                          &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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                                &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                                &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                              },
                            },
                          },
                          &quot;smallCaps&quot;: True or False, # Whether or not the text is in small capital letters.
                          &quot;underline&quot;: True or False, # Whether or not the text is underlined.
                          &quot;italic&quot;: True or False, # Whether or not the text is italicized.
                        },
                        &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;underlineSuggested&quot;: True or False, # Indicates if there was a suggested change to underline.
                          &quot;smallCapsSuggested&quot;: True or False, # Indicates if there was a suggested change to small_caps.
                          &quot;backgroundColorSuggested&quot;: True or False, # Indicates if there was a suggested change to background_color.
                          &quot;weightedFontFamilySuggested&quot;: True or False, # Indicates if there was a suggested change to weighted_font_family.
                          &quot;boldSuggested&quot;: True or False, # Indicates if there was a suggested change to bold.
                          &quot;fontSizeSuggested&quot;: True or False, # Indicates if there was a suggested change to font_size.
                          &quot;italicSuggested&quot;: True or False, # Indicates if there was a suggested change to italic.
                          &quot;baselineOffsetSuggested&quot;: True or False, # Indicates if there was a suggested change to baseline_offset.
                          &quot;linkSuggested&quot;: True or False, # Indicates if there was a suggested change to link.
                          &quot;foregroundColorSuggested&quot;: True or False, # Indicates if there was a suggested change to foreground_color.
                          &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. # 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;strikethrough&quot;: True or False, # Whether or not the text is struck through.
                      &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;bold&quot;: True or False, # Whether or not the text is rendered as bold.
                      &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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                            &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                            &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                          },
                        },
                      },
                      &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;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;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;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;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;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;bookmarkId&quot;: &quot;A String&quot;, # The ID of a bookmark in this document.
                      },
                      &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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                            &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                            &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                          },
                        },
                      },
                      &quot;smallCaps&quot;: True or False, # Whether or not the text is in small capital letters.
                      &quot;underline&quot;: True or False, # Whether or not the text is underlined.
                      &quot;italic&quot;: True or False, # Whether or not the text is italicized.
                    },
                    &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 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;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;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;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;strikethrough&quot;: True or False, # Whether or not the text is struck through.
                          &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;bold&quot;: True or False, # Whether or not the text is rendered as bold.
                          &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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                                &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                                &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                              },
                            },
                          },
                          &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;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;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;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;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;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;bookmarkId&quot;: &quot;A String&quot;, # The ID of a bookmark in this document.
                          },
                          &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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                                &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                                &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                              },
                            },
                          },
                          &quot;smallCaps&quot;: True or False, # Whether or not the text is in small capital letters.
                          &quot;underline&quot;: True or False, # Whether or not the text is underlined.
                          &quot;italic&quot;: True or False, # Whether or not the text is italicized.
                        },
                        &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;underlineSuggested&quot;: True or False, # Indicates if there was a suggested change to underline.
                          &quot;smallCapsSuggested&quot;: True or False, # Indicates if there was a suggested change to small_caps.
                          &quot;backgroundColorSuggested&quot;: True or False, # Indicates if there was a suggested change to background_color.
                          &quot;weightedFontFamilySuggested&quot;: True or False, # Indicates if there was a suggested change to weighted_font_family.
                          &quot;boldSuggested&quot;: True or False, # Indicates if there was a suggested change to bold.
                          &quot;fontSizeSuggested&quot;: True or False, # Indicates if there was a suggested change to font_size.
                          &quot;italicSuggested&quot;: True or False, # Indicates if there was a suggested change to italic.
                          &quot;baselineOffsetSuggested&quot;: True or False, # Indicates if there was a suggested change to baseline_offset.
                          &quot;linkSuggested&quot;: True or False, # Indicates if there was a suggested change to link.
                          &quot;foregroundColorSuggested&quot;: True or False, # Indicates if there was a suggested change to foreground_color.
                          &quot;strikethroughSuggested&quot;: True or False, # Indicates if there was a suggested change to strikethrough.
                        },
                      },
                    },
                    &quot;footnoteNumber&quot;: &quot;A String&quot;, # The rendered number of this footnote.
                    &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;footnoteId&quot;: &quot;A String&quot;, # The ID of the footnote that contains the content of this footnote reference.
                    &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;strikethrough&quot;: True or False, # Whether or not the text is struck through.
                      &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;bold&quot;: True or False, # Whether or not the text is rendered as bold.
                      &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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                            &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                            &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                          },
                        },
                      },
                      &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;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;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;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;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;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;bookmarkId&quot;: &quot;A String&quot;, # The ID of a bookmark in this document.
                      },
                      &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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                            &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                            &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                          },
                        },
                      },
                      &quot;smallCaps&quot;: True or False, # Whether or not the text is in small capital letters.
                      &quot;underline&quot;: True or False, # Whether or not the text is underlined.
                      &quot;italic&quot;: True or False, # Whether or not the text is italicized.
                    },
                    &quot;suggestedDeletionIds&quot;: [ # The suggested deletion IDs. If empty, then there are no suggested deletions of this content.
                      &quot;A String&quot;,
                    ],
                  },
                  &quot;inlineObjectElement&quot;: { # A ParagraphElement that contains an InlineObject. # An inline object paragraph element.
                    &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;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;strikethrough&quot;: True or False, # Whether or not the text is struck through.
                          &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;bold&quot;: True or False, # Whether or not the text is rendered as bold.
                          &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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                                &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                                &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                              },
                            },
                          },
                          &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;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;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;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;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;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;bookmarkId&quot;: &quot;A String&quot;, # The ID of a bookmark in this document.
                          },
                          &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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                                &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                                &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                              },
                            },
                          },
                          &quot;smallCaps&quot;: True or False, # Whether or not the text is in small capital letters.
                          &quot;underline&quot;: True or False, # Whether or not the text is underlined.
                          &quot;italic&quot;: True or False, # Whether or not the text is italicized.
                        },
                        &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;underlineSuggested&quot;: True or False, # Indicates if there was a suggested change to underline.
                          &quot;smallCapsSuggested&quot;: True or False, # Indicates if there was a suggested change to small_caps.
                          &quot;backgroundColorSuggested&quot;: True or False, # Indicates if there was a suggested change to background_color.
                          &quot;weightedFontFamilySuggested&quot;: True or False, # Indicates if there was a suggested change to weighted_font_family.
                          &quot;boldSuggested&quot;: True or False, # Indicates if there was a suggested change to bold.
                          &quot;fontSizeSuggested&quot;: True or False, # Indicates if there was a suggested change to font_size.
                          &quot;italicSuggested&quot;: True or False, # Indicates if there was a suggested change to italic.
                          &quot;baselineOffsetSuggested&quot;: True or False, # Indicates if there was a suggested change to baseline_offset.
                          &quot;linkSuggested&quot;: True or False, # Indicates if there was a suggested change to link.
                          &quot;foregroundColorSuggested&quot;: True or False, # Indicates if there was a suggested change to foreground_color.
                          &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. # 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;strikethrough&quot;: True or False, # Whether or not the text is struck through.
                      &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;bold&quot;: True or False, # Whether or not the text is rendered as bold.
                      &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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                            &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                            &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                          },
                        },
                      },
                      &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;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;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;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;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;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;bookmarkId&quot;: &quot;A String&quot;, # The ID of a bookmark in this document.
                      },
                      &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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                            &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                            &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                          },
                        },
                      },
                      &quot;smallCaps&quot;: True or False, # Whether or not the text is in small capital letters.
                      &quot;underline&quot;: True or False, # Whether or not the text is underlined.
                      &quot;italic&quot;: True or False, # Whether or not the text is italicized.
                    },
                    &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;suggestedDeletionIds&quot;: [ # The suggested deletion IDs. If empty, then there are no suggested deletions of this content.
                      &quot;A String&quot;,
                    ],
                    &quot;inlineObjectId&quot;: &quot;A String&quot;, # The ID of the InlineObject this element contains.
                  },
                  &quot;endIndex&quot;: 42, # The zero-base end index of this paragraph element, exclusive, in UTF-16 code units.
                  &quot;textRun&quot;: { # A ParagraphElement that represents a run of text that all has the same styling. # A text run paragraph element.
                    &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;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;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;strikethrough&quot;: True or False, # Whether or not the text is struck through.
                          &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;bold&quot;: True or False, # Whether or not the text is rendered as bold.
                          &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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                                &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                                &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                              },
                            },
                          },
                          &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;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;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;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;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;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;bookmarkId&quot;: &quot;A String&quot;, # The ID of a bookmark in this document.
                          },
                          &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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                                &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                                &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                              },
                            },
                          },
                          &quot;smallCaps&quot;: True or False, # Whether or not the text is in small capital letters.
                          &quot;underline&quot;: True or False, # Whether or not the text is underlined.
                          &quot;italic&quot;: True or False, # Whether or not the text is italicized.
                        },
                        &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;underlineSuggested&quot;: True or False, # Indicates if there was a suggested change to underline.
                          &quot;smallCapsSuggested&quot;: True or False, # Indicates if there was a suggested change to small_caps.
                          &quot;backgroundColorSuggested&quot;: True or False, # Indicates if there was a suggested change to background_color.
                          &quot;weightedFontFamilySuggested&quot;: True or False, # Indicates if there was a suggested change to weighted_font_family.
                          &quot;boldSuggested&quot;: True or False, # Indicates if there was a suggested change to bold.
                          &quot;fontSizeSuggested&quot;: True or False, # Indicates if there was a suggested change to font_size.
                          &quot;italicSuggested&quot;: True or False, # Indicates if there was a suggested change to italic.
                          &quot;baselineOffsetSuggested&quot;: True or False, # Indicates if there was a suggested change to baseline_offset.
                          &quot;linkSuggested&quot;: True or False, # Indicates if there was a suggested change to link.
                          &quot;foregroundColorSuggested&quot;: True or False, # Indicates if there was a suggested change to foreground_color.
                          &quot;strikethroughSuggested&quot;: True or False, # Indicates if there was a suggested change to strikethrough.
                        },
                      },
                    },
                    &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 run.
                      &quot;strikethrough&quot;: True or False, # Whether or not the text is struck through.
                      &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;bold&quot;: True or False, # Whether or not the text is rendered as bold.
                      &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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                            &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                            &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                          },
                        },
                      },
                      &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;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;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;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;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;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;bookmarkId&quot;: &quot;A String&quot;, # The ID of a bookmark in this document.
                      },
                      &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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                            &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                            &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                          },
                        },
                      },
                      &quot;smallCaps&quot;: True or False, # Whether or not the text is in small capital letters.
                      &quot;underline&quot;: True or False, # Whether or not the text is underlined.
                      &quot;italic&quot;: True or False, # Whether or not the text is italicized.
                    },
                    &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;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;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;type&quot;: &quot;A String&quot;, # The type of this auto text.
                    &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;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;strikethrough&quot;: True or False, # Whether or not the text is struck through.
                      &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;bold&quot;: True or False, # Whether or not the text is rendered as bold.
                      &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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                            &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                            &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                          },
                        },
                      },
                      &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;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;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;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;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;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;bookmarkId&quot;: &quot;A String&quot;, # The ID of a bookmark in this document.
                      },
                      &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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                            &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                            &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                          },
                        },
                      },
                      &quot;smallCaps&quot;: True or False, # Whether or not the text is in small capital letters.
                      &quot;underline&quot;: True or False, # Whether or not the text is underlined.
                      &quot;italic&quot;: True or False, # Whether or not the text is italicized.
                    },
                    &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;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;strikethrough&quot;: True or False, # Whether or not the text is struck through.
                          &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;bold&quot;: True or False, # Whether or not the text is rendered as bold.
                          &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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                                &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                                &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                              },
                            },
                          },
                          &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;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;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;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;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;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;bookmarkId&quot;: &quot;A String&quot;, # The ID of a bookmark in this document.
                          },
                          &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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                                &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                                &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                              },
                            },
                          },
                          &quot;smallCaps&quot;: True or False, # Whether or not the text is in small capital letters.
                          &quot;underline&quot;: True or False, # Whether or not the text is underlined.
                          &quot;italic&quot;: True or False, # Whether or not the text is italicized.
                        },
                        &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;underlineSuggested&quot;: True or False, # Indicates if there was a suggested change to underline.
                          &quot;smallCapsSuggested&quot;: True or False, # Indicates if there was a suggested change to small_caps.
                          &quot;backgroundColorSuggested&quot;: True or False, # Indicates if there was a suggested change to background_color.
                          &quot;weightedFontFamilySuggested&quot;: True or False, # Indicates if there was a suggested change to weighted_font_family.
                          &quot;boldSuggested&quot;: True or False, # Indicates if there was a suggested change to bold.
                          &quot;fontSizeSuggested&quot;: True or False, # Indicates if there was a suggested change to font_size.
                          &quot;italicSuggested&quot;: True or False, # Indicates if there was a suggested change to italic.
                          &quot;baselineOffsetSuggested&quot;: True or False, # Indicates if there was a suggested change to baseline_offset.
                          &quot;linkSuggested&quot;: True or False, # Indicates if there was a suggested change to link.
                          &quot;foregroundColorSuggested&quot;: True or False, # Indicates if there was a suggested change to foreground_color.
                          &quot;strikethroughSuggested&quot;: True or False, # Indicates if there was a suggested change to strikethrough.
                        },
                      },
                    },
                  },
                },
              ],
              &quot;suggestedBulletChanges&quot;: { # The suggested changes to this paragraph&#x27;s bullet.
                &quot;a_key&quot;: { # A suggested change to a Bullet.
                  &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;listId&quot;: &quot;A String&quot;, # The ID of the list this paragraph belongs to.
                    &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;strikethrough&quot;: True or False, # Whether or not the text is struck through.
                      &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;bold&quot;: True or False, # Whether or not the text is rendered as bold.
                      &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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                            &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                            &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                          },
                        },
                      },
                      &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;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;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;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;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;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;bookmarkId&quot;: &quot;A String&quot;, # The ID of a bookmark in this document.
                      },
                      &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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                            &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                            &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                          },
                        },
                      },
                      &quot;smallCaps&quot;: True or False, # Whether or not the text is in small capital letters.
                      &quot;underline&quot;: True or False, # Whether or not the text is underlined.
                      &quot;italic&quot;: True or False, # Whether or not the text is italicized.
                    },
                    &quot;nestingLevel&quot;: 42, # The nesting level of this paragraph in the list.
                  },
                  &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;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;underlineSuggested&quot;: True or False, # Indicates if there was a suggested change to underline.
                      &quot;smallCapsSuggested&quot;: True or False, # Indicates if there was a suggested change to small_caps.
                      &quot;backgroundColorSuggested&quot;: True or False, # Indicates if there was a suggested change to background_color.
                      &quot;weightedFontFamilySuggested&quot;: True or False, # Indicates if there was a suggested change to weighted_font_family.
                      &quot;boldSuggested&quot;: True or False, # Indicates if there was a suggested change to bold.
                      &quot;fontSizeSuggested&quot;: True or False, # Indicates if there was a suggested change to font_size.
                      &quot;italicSuggested&quot;: True or False, # Indicates if there was a suggested change to italic.
                      &quot;baselineOffsetSuggested&quot;: True or False, # Indicates if there was a suggested change to baseline_offset.
                      &quot;linkSuggested&quot;: True or False, # Indicates if there was a suggested change to link.
                      &quot;foregroundColorSuggested&quot;: True or False, # Indicates if there was a suggested change to foreground_color.
                      &quot;strikethroughSuggested&quot;: True or False, # Indicates if there was a suggested change to strikethrough.
                    },
                    &quot;nestingLevelSuggested&quot;: True or False, # Indicates if there was a suggested change to the nesting_level.
                    &quot;listIdSuggested&quot;: True or False, # Indicates if there was a suggested change to the list_id.
                  },
                },
              },
              &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;alignment&quot;: &quot;A String&quot;, # The text alignment for this paragraph.
                &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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                        &quot;green&quot;: 3.14, # The green component of the color, 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;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;spacingMode&quot;: &quot;A String&quot;, # The spacing mode for the paragraph.
                &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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                        &quot;green&quot;: 3.14, # The green component of the color, 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;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;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;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;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;avoidWidowAndOrphan&quot;: True or False, # Whether to avoid widows and orphans for the paragraph. 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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                        &quot;green&quot;: 3.14, # The green component of the color, 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;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;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;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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                        &quot;green&quot;: 3.14, # The green component of the color, 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;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;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;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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                        &quot;green&quot;: 3.14, # The green component of the color, 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;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;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;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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                        &quot;green&quot;: 3.14, # The green component of the color, 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;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;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;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;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;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;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;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;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;spaceAboveSuggested&quot;: True or False, # Indicates if there was a suggested change to space_above.
                    &quot;directionSuggested&quot;: True or False, # Indicates if there was a suggested change to direction.
                    &quot;spacingModeSuggested&quot;: True or False, # Indicates if there was a suggested change to spacing_mode.
                    &quot;indentFirstLineSuggested&quot;: True or False, # Indicates if there was a suggested change to indent_first_line.
                    &quot;lineSpacingSuggested&quot;: True or False, # Indicates if there was a suggested change to line_spacing.
                    &quot;avoidWidowAndOrphanSuggested&quot;: True or False, # Indicates if there was a suggested change to avoid_widow_and_orphan.
                    &quot;borderBetweenSuggested&quot;: True or False, # Indicates if there was a suggested change to border_between.
                    &quot;keepLinesTogetherSuggested&quot;: True or False, # Indicates if there was a suggested change to keep_lines_together.
                    &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;borderTopSuggested&quot;: True or False, # Indicates if there was a suggested change to border_top.
                    &quot;indentEndSuggested&quot;: True or False, # Indicates if there was a suggested change to indent_end.
                    &quot;keepWithNextSuggested&quot;: True or False, # Indicates if there was a suggested change to keep_with_next.
                    &quot;indentStartSuggested&quot;: True or False, # Indicates if there was a suggested change to indent_start.
                    &quot;borderRightSuggested&quot;: True or False, # Indicates if there was a suggested change to border_right.
                    &quot;spaceBelowSuggested&quot;: True or False, # Indicates if there was a suggested change to space_below.
                    &quot;headingIdSuggested&quot;: True or False, # Indicates if there was a suggested change to heading_id.
                    &quot;borderLeftSuggested&quot;: True or False, # Indicates if there was a suggested change to border_left.
                    &quot;namedStyleTypeSuggested&quot;: True or False, # Indicates if there was a suggested change to named_style_type.
                  },
                  &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;alignment&quot;: &quot;A String&quot;, # The text alignment for this paragraph.
                    &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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                            &quot;green&quot;: 3.14, # The green component of the color, 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;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;spacingMode&quot;: &quot;A String&quot;, # The spacing mode for the paragraph.
                    &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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                            &quot;green&quot;: 3.14, # The green component of the color, 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;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;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;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;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;avoidWidowAndOrphan&quot;: True or False, # Whether to avoid widows and orphans for the paragraph. 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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                            &quot;green&quot;: 3.14, # The green component of the color, 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;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;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;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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                            &quot;green&quot;: 3.14, # The green component of the color, 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;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;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;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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                            &quot;green&quot;: 3.14, # The green component of the color, 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;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;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;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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                            &quot;green&quot;: 3.14, # The green component of the color, 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;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;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;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;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;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;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;listId&quot;: &quot;A String&quot;, # The ID of the list this paragraph belongs to.
                &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;strikethrough&quot;: True or False, # Whether or not the text is struck through.
                  &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;bold&quot;: True or False, # Whether or not the text is rendered as bold.
                  &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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                        &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                        &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                      },
                    },
                  },
                  &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;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;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;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;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;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;bookmarkId&quot;: &quot;A String&quot;, # The ID of a bookmark in this document.
                  },
                  &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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                        &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                        &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                      },
                    },
                  },
                  &quot;smallCaps&quot;: True or False, # Whether or not the text is in small capital letters.
                  &quot;underline&quot;: True or False, # Whether or not the text is underlined.
                  &quot;italic&quot;: True or False, # Whether or not the text is italicized.
                },
                &quot;nestingLevel&quot;: 42, # The nesting level of this paragraph in the list.
              },
              &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;positionedObjectIds&quot;: [ # The IDs of the positioned objects tethered to this paragraph.
                &quot;A String&quot;,
              ],
            },
            &quot;table&quot;: { # A StructuralElement representing a table. # A table type of structural element.
              &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;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;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;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 row, 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;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;suggestedDeletionIds&quot;: [ # The suggested deletion IDs. If empty, then there are no suggested deletions of this content.
                        &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;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;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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                                    &quot;green&quot;: 3.14, # The green component of the color, 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;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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                                  &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                                  &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                                },
                              },
                            },
                            &quot;rowSpan&quot;: 42, # The row span of the cell. This property is read-only.
                            &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;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;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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                                    &quot;green&quot;: 3.14, # The green component of the color, 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;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;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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                                    &quot;green&quot;: 3.14, # The green component of the color, 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;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;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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                                    &quot;green&quot;: 3.14, # The green component of the color, 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;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;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;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;columnSpan&quot;: 42, # The column 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;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;borderLeftSuggested&quot;: True or False, # Indicates if there was a suggested change to border_left.
                            &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;paddingTopSuggested&quot;: True or False, # Indicates if there was a suggested change to padding_top.
                            &quot;paddingRightSuggested&quot;: True or False, # Indicates if there was a suggested change to padding_right.
                            &quot;rowSpanSuggested&quot;: True or False, # Indicates if there was a suggested change to row_span.
                            &quot;borderBottomSuggested&quot;: True or False, # Indicates if there was a suggested change to border_bottom.
                            &quot;backgroundColorSuggested&quot;: True or False, # Indicates if there was a suggested change to background_color.
                            &quot;columnSpanSuggested&quot;: True or False, # Indicates if there was a suggested change to column_span.
                            &quot;borderTopSuggested&quot;: True or False, # Indicates if there was a suggested change to border_top.
                            &quot;paddingBottomSuggested&quot;: True or False, # Indicates if there was a suggested change to padding_bottom.
                            &quot;paddingLeftSuggested&quot;: True or False, # Indicates if there was a suggested change to padding_left.
                          },
                        },
                      },
                      &quot;content&quot;: [ # The content of the cell.
                        # Object with schema name: StructuralElement
                      ],
                      &quot;endIndex&quot;: 42, # The zero-based end index of this cell, exclusive, 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;startIndex&quot;: 42, # The zero-based start index of this cell, in UTF-16 code units.
                      &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;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;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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                                &quot;green&quot;: 3.14, # The green component of the color, 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;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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                              &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                              &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                            },
                          },
                        },
                        &quot;rowSpan&quot;: 42, # The row span of the cell. This property is read-only.
                        &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;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;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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                                &quot;green&quot;: 3.14, # The green component of the color, 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;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;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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                                &quot;green&quot;: 3.14, # The green component of the color, 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;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;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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                                &quot;green&quot;: 3.14, # The green component of the color, 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;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;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;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;columnSpan&quot;: 42, # The column 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;suggestedTableRowStyleChanges&quot;: { # The suggested style changes to this row, keyed by suggestion ID.
                    &quot;a_key&quot;: { # A suggested change to a TableRowStyle.
                      &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;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;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;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;widthType&quot;: &quot;A String&quot;, # The width type of the column.
                  },
                ],
              },
              &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;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;suggestedDeletionIds&quot;: [ # The suggested deletion IDs. If empty, then there are no suggested deletions of this content.
                &quot;A String&quot;,
              ],
              &quot;content&quot;: [ # The content of the table of contents.
                # Object with schema name: StructuralElement
              ],
            },
            &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;sectionStyle&quot;: { # The styling that applies to a section. # The style of the section after this section break.
                &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;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;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;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;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;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;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;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;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;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;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;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;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;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;sectionType&quot;: &quot;A String&quot;, # Output only. The type of section.
                &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;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;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;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;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;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;suggestedDeletionIds&quot;: [ # The suggested deletion IDs. If empty, then there are no suggested deletions of this content.
                &quot;A String&quot;,
              ],
            },
          },
        ],
      },
      &quot;title&quot;: &quot;A String&quot;, # The title of the 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;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;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;embeddedDrawingProperties&quot;: { # The properties of an embedded drawing. # The properties of an embedded drawing.
                  },
                  &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;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;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;spreadsheetId&quot;: &quot;A String&quot;, # The ID of the Google Sheets spreadsheet that contains the source chart.
                      &quot;chartId&quot;: 42, # The ID of the specific chart in the Google Sheets spreadsheet that is embedded.
                    },
                  },
                  &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;size&quot;: { # A width and height. # The visible size of the image after cropping.
                    &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;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;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;sourceUri&quot;: &quot;A String&quot;, # The source URI is the URI used to insert the image. The source URI can be empty.
                    &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;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;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;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;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;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;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;description&quot;: &quot;A String&quot;, # The description of the embedded object. The `title` and `description` are both combined to display alt text.
                  &quot;embeddedObjectBorder&quot;: { # A border around an EmbeddedObject. # The border of the embedded object.
                    &quot;propertyState&quot;: &quot;A String&quot;, # The property state of the border property.
                    &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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                          &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                          &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                        },
                      },
                    },
                    &quot;dashStyle&quot;: &quot;A String&quot;, # The dash style of the border.
                    &quot;width&quot;: { # A magnitude in a single direction in the specified units. # The width of the border.
                      &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;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;marginLeftSuggested&quot;: True or False, # Indicates if there was a suggested change to margin_left.
                  &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;spreadsheetIdSuggested&quot;: True or False, # Indicates if there was a suggested change to spreadsheet_id.
                      &quot;chartIdSuggested&quot;: True or False, # Indicates if there was a suggested change to chart_id.
                    },
                  },
                  &quot;marginTopSuggested&quot;: True or False, # Indicates if there was a suggested change to margin_top.
                  &quot;titleSuggested&quot;: True or False, # Indicates if there was a suggested change to title.
                  &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;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;angleSuggested&quot;: True or False, # Indicates if there was a suggested change to angle.
                    &quot;contentUriSuggested&quot;: True or False, # Indicates if there was a suggested change to content_uri.
                    &quot;transparencySuggested&quot;: True or False, # Indicates if there was a suggested change to transparency.
                    &quot;sourceUriSuggested&quot;: True or False, # Indicates if there was a suggested change to source_uri.
                    &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;offsetLeftSuggested&quot;: True or False, # Indicates if there was a suggested change to offset_left.
                      &quot;offsetRightSuggested&quot;: True or False, # Indicates if there was a suggested change to offset_right.
                      &quot;angleSuggested&quot;: True or False, # Indicates if there was a suggested change to angle.
                      &quot;offsetTopSuggested&quot;: True or False, # Indicates if there was a suggested change to offset_top.
                      &quot;offsetBottomSuggested&quot;: True or False, # Indicates if there was a suggested change to offset_bottom.
                    },
                    &quot;contrastSuggested&quot;: True or False, # Indicates if there was a suggested change to contrast.
                    &quot;brightnessSuggested&quot;: True or False, # Indicates if there was a suggested change to brightness.
                  },
                  &quot;marginRightSuggested&quot;: True or False, # Indicates if there was a suggested change to margin_right.
                  &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;dashStyleSuggested&quot;: True or False, # Indicates if there was a suggested change to dash_style.
                    &quot;widthSuggested&quot;: True or False, # Indicates if there was a suggested change to width.
                    &quot;colorSuggested&quot;: True or False, # Indicates if there was a suggested change to color.
                    &quot;propertyStateSuggested&quot;: True or False, # Indicates if there was a suggested change to property_state.
                  },
                  &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;marginBottomSuggested&quot;: True or False, # Indicates if there was a suggested change to margin_bottom.
                },
              },
            },
          },
          &quot;objectId&quot;: &quot;A String&quot;, # The ID of this inline object.
          &quot;suggestedDeletionIds&quot;: [ # The suggested deletion IDs. If empty, then there are no suggested deletions of this content.
            &quot;A String&quot;,
          ],
          &quot;suggestedInsertionId&quot;: &quot;A String&quot;, # The suggested insertion ID. If empty, then this is not a suggested insertion.
          &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;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;embeddedDrawingProperties&quot;: { # The properties of an embedded drawing. # The properties of an embedded drawing.
              },
              &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;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;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;spreadsheetId&quot;: &quot;A String&quot;, # The ID of the Google Sheets spreadsheet that contains the source chart.
                  &quot;chartId&quot;: 42, # The ID of the specific chart in the Google Sheets spreadsheet that is embedded.
                },
              },
              &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;size&quot;: { # A width and height. # The visible size of the image after cropping.
                &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;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;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;sourceUri&quot;: &quot;A String&quot;, # The source URI is the URI used to insert the image. The source URI can be empty.
                &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;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;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;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;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;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;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;description&quot;: &quot;A String&quot;, # The description of the embedded object. The `title` and `description` are both combined to display alt text.
              &quot;embeddedObjectBorder&quot;: { # A border around an EmbeddedObject. # The border of the embedded object.
                &quot;propertyState&quot;: &quot;A String&quot;, # The property state of the border property.
                &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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                      &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                      &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                    },
                  },
                },
                &quot;dashStyle&quot;: &quot;A String&quot;, # The dash style of the border.
                &quot;width&quot;: { # A magnitude in a single direction in the specified units. # The width of the border.
                  &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;documentId&quot;: &quot;A String&quot;, # Output only. The ID of the document.
      &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;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;alignment&quot;: &quot;A String&quot;, # The text alignment for this paragraph.
              &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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                      &quot;green&quot;: 3.14, # The green component of the color, 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;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;spacingMode&quot;: &quot;A String&quot;, # The spacing mode for the paragraph.
              &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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                      &quot;green&quot;: 3.14, # The green component of the color, 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;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;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;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;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;avoidWidowAndOrphan&quot;: True or False, # Whether to avoid widows and orphans for the paragraph. 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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                      &quot;green&quot;: 3.14, # The green component of the color, 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;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;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;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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                      &quot;green&quot;: 3.14, # The green component of the color, 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;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;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;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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                      &quot;green&quot;: 3.14, # The green component of the color, 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;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;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;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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                      &quot;green&quot;: 3.14, # The green component of the color, 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;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;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;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;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;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;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;strikethrough&quot;: True or False, # Whether or not the text is struck through.
              &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;bold&quot;: True or False, # Whether or not the text is rendered as bold.
              &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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                    &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                    &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                  },
                },
              },
              &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;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;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;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;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;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;bookmarkId&quot;: &quot;A String&quot;, # The ID of a bookmark in this document.
              },
              &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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                    &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                    &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                  },
                },
              },
              &quot;smallCaps&quot;: True or False, # Whether or not the text is in small capital letters.
              &quot;underline&quot;: True or False, # Whether or not the text is underlined.
              &quot;italic&quot;: True or False, # Whether or not the text is italicized.
            },
          },
        ],
      },
      &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;endIndex&quot;: 42, # The zero-based end index of this structural element, exclusive, in UTF-16 code units.
              &quot;startIndex&quot;: 42, # The zero-based start index of this structural element, in UTF-16 code units.
              &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;elements&quot;: [ # The content of the paragraph broken down into its component parts.
                  { # A ParagraphElement describes content within a Paragraph.
                    &quot;startIndex&quot;: 42, # The zero-based start index of this paragraph element, in UTF-16 code units.
                    &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;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;strikethrough&quot;: True or False, # Whether or not the text is struck through.
                        &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;bold&quot;: True or False, # Whether or not the text is rendered as bold.
                        &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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                              &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                              &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                            },
                          },
                        },
                        &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;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;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;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;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;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;bookmarkId&quot;: &quot;A String&quot;, # The ID of a bookmark in this document.
                        },
                        &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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                              &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                              &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                            },
                          },
                        },
                        &quot;smallCaps&quot;: True or False, # Whether or not the text is in small capital letters.
                        &quot;underline&quot;: True or False, # Whether or not the text is underlined.
                        &quot;italic&quot;: True or False, # Whether or not the text is italicized.
                      },
                      &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;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;strikethrough&quot;: True or False, # Whether or not the text is struck through.
                            &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;bold&quot;: True or False, # Whether or not the text is rendered as bold.
                            &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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                                  &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                                  &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                                },
                              },
                            },
                            &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;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;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;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;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;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;bookmarkId&quot;: &quot;A String&quot;, # The ID of a bookmark in this document.
                            },
                            &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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                                  &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                                  &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                                },
                              },
                            },
                            &quot;smallCaps&quot;: True or False, # Whether or not the text is in small capital letters.
                            &quot;underline&quot;: True or False, # Whether or not the text is underlined.
                            &quot;italic&quot;: True or False, # Whether or not the text is italicized.
                          },
                          &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;underlineSuggested&quot;: True or False, # Indicates if there was a suggested change to underline.
                            &quot;smallCapsSuggested&quot;: True or False, # Indicates if there was a suggested change to small_caps.
                            &quot;backgroundColorSuggested&quot;: True or False, # Indicates if there was a suggested change to background_color.
                            &quot;weightedFontFamilySuggested&quot;: True or False, # Indicates if there was a suggested change to weighted_font_family.
                            &quot;boldSuggested&quot;: True or False, # Indicates if there was a suggested change to bold.
                            &quot;fontSizeSuggested&quot;: True or False, # Indicates if there was a suggested change to font_size.
                            &quot;italicSuggested&quot;: True or False, # Indicates if there was a suggested change to italic.
                            &quot;baselineOffsetSuggested&quot;: True or False, # Indicates if there was a suggested change to baseline_offset.
                            &quot;linkSuggested&quot;: True or False, # Indicates if there was a suggested change to link.
                            &quot;foregroundColorSuggested&quot;: True or False, # Indicates if there was a suggested change to foreground_color.
                            &quot;strikethroughSuggested&quot;: True or False, # Indicates if there was a suggested change to strikethrough.
                          },
                        },
                      },
                    },
                    &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;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;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;strikethrough&quot;: True or False, # Whether or not the text is struck through.
                            &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;bold&quot;: True or False, # Whether or not the text is rendered as bold.
                            &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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                                  &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                                  &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                                },
                              },
                            },
                            &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;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;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;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;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;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;bookmarkId&quot;: &quot;A String&quot;, # The ID of a bookmark in this document.
                            },
                            &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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                                  &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                                  &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                                },
                              },
                            },
                            &quot;smallCaps&quot;: True or False, # Whether or not the text is in small capital letters.
                            &quot;underline&quot;: True or False, # Whether or not the text is underlined.
                            &quot;italic&quot;: True or False, # Whether or not the text is italicized.
                          },
                          &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;underlineSuggested&quot;: True or False, # Indicates if there was a suggested change to underline.
                            &quot;smallCapsSuggested&quot;: True or False, # Indicates if there was a suggested change to small_caps.
                            &quot;backgroundColorSuggested&quot;: True or False, # Indicates if there was a suggested change to background_color.
                            &quot;weightedFontFamilySuggested&quot;: True or False, # Indicates if there was a suggested change to weighted_font_family.
                            &quot;boldSuggested&quot;: True or False, # Indicates if there was a suggested change to bold.
                            &quot;fontSizeSuggested&quot;: True or False, # Indicates if there was a suggested change to font_size.
                            &quot;italicSuggested&quot;: True or False, # Indicates if there was a suggested change to italic.
                            &quot;baselineOffsetSuggested&quot;: True or False, # Indicates if there was a suggested change to baseline_offset.
                            &quot;linkSuggested&quot;: True or False, # Indicates if there was a suggested change to link.
                            &quot;foregroundColorSuggested&quot;: True or False, # Indicates if there was a suggested change to foreground_color.
                            &quot;strikethroughSuggested&quot;: True or False, # Indicates if there was a suggested change to strikethrough.
                          },
                        },
                      },
                      &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;strikethrough&quot;: True or False, # Whether or not the text is struck through.
                        &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;bold&quot;: True or False, # Whether or not the text is rendered as bold.
                        &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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                              &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                              &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                            },
                          },
                        },
                        &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;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;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;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;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;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;bookmarkId&quot;: &quot;A String&quot;, # The ID of a bookmark in this document.
                        },
                        &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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                              &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                              &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                            },
                          },
                        },
                        &quot;smallCaps&quot;: True or False, # Whether or not the text is in small capital letters.
                        &quot;underline&quot;: True or False, # Whether or not the text is underlined.
                        &quot;italic&quot;: True or False, # Whether or not the text is italicized.
                      },
                      &quot;suggestedDeletionIds&quot;: [ # The suggested deletion IDs. If empty, then there are no suggested deletions of this content.
                        &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;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;strikethrough&quot;: True or False, # Whether or not the text is struck through.
                            &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;bold&quot;: True or False, # Whether or not the text is rendered as bold.
                            &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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                                  &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                                  &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                                },
                              },
                            },
                            &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;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;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;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;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;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;bookmarkId&quot;: &quot;A String&quot;, # The ID of a bookmark in this document.
                            },
                            &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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                                  &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                                  &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                                },
                              },
                            },
                            &quot;smallCaps&quot;: True or False, # Whether or not the text is in small capital letters.
                            &quot;underline&quot;: True or False, # Whether or not the text is underlined.
                            &quot;italic&quot;: True or False, # Whether or not the text is italicized.
                          },
                          &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;underlineSuggested&quot;: True or False, # Indicates if there was a suggested change to underline.
                            &quot;smallCapsSuggested&quot;: True or False, # Indicates if there was a suggested change to small_caps.
                            &quot;backgroundColorSuggested&quot;: True or False, # Indicates if there was a suggested change to background_color.
                            &quot;weightedFontFamilySuggested&quot;: True or False, # Indicates if there was a suggested change to weighted_font_family.
                            &quot;boldSuggested&quot;: True or False, # Indicates if there was a suggested change to bold.
                            &quot;fontSizeSuggested&quot;: True or False, # Indicates if there was a suggested change to font_size.
                            &quot;italicSuggested&quot;: True or False, # Indicates if there was a suggested change to italic.
                            &quot;baselineOffsetSuggested&quot;: True or False, # Indicates if there was a suggested change to baseline_offset.
                            &quot;linkSuggested&quot;: True or False, # Indicates if there was a suggested change to link.
                            &quot;foregroundColorSuggested&quot;: True or False, # Indicates if there was a suggested change to foreground_color.
                            &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. # 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;strikethrough&quot;: True or False, # Whether or not the text is struck through.
                        &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;bold&quot;: True or False, # Whether or not the text is rendered as bold.
                        &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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                              &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                              &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                            },
                          },
                        },
                        &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;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;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;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;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;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;bookmarkId&quot;: &quot;A String&quot;, # The ID of a bookmark in this document.
                        },
                        &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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                              &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                              &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                            },
                          },
                        },
                        &quot;smallCaps&quot;: True or False, # Whether or not the text is in small capital letters.
                        &quot;underline&quot;: True or False, # Whether or not the text is underlined.
                        &quot;italic&quot;: True or False, # Whether or not the text is italicized.
                      },
                      &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 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;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;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;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;strikethrough&quot;: True or False, # Whether or not the text is struck through.
                            &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;bold&quot;: True or False, # Whether or not the text is rendered as bold.
                            &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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                                  &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                                  &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                                },
                              },
                            },
                            &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;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;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;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;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;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;bookmarkId&quot;: &quot;A String&quot;, # The ID of a bookmark in this document.
                            },
                            &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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                                  &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                                  &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                                },
                              },
                            },
                            &quot;smallCaps&quot;: True or False, # Whether or not the text is in small capital letters.
                            &quot;underline&quot;: True or False, # Whether or not the text is underlined.
                            &quot;italic&quot;: True or False, # Whether or not the text is italicized.
                          },
                          &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;underlineSuggested&quot;: True or False, # Indicates if there was a suggested change to underline.
                            &quot;smallCapsSuggested&quot;: True or False, # Indicates if there was a suggested change to small_caps.
                            &quot;backgroundColorSuggested&quot;: True or False, # Indicates if there was a suggested change to background_color.
                            &quot;weightedFontFamilySuggested&quot;: True or False, # Indicates if there was a suggested change to weighted_font_family.
                            &quot;boldSuggested&quot;: True or False, # Indicates if there was a suggested change to bold.
                            &quot;fontSizeSuggested&quot;: True or False, # Indicates if there was a suggested change to font_size.
                            &quot;italicSuggested&quot;: True or False, # Indicates if there was a suggested change to italic.
                            &quot;baselineOffsetSuggested&quot;: True or False, # Indicates if there was a suggested change to baseline_offset.
                            &quot;linkSuggested&quot;: True or False, # Indicates if there was a suggested change to link.
                            &quot;foregroundColorSuggested&quot;: True or False, # Indicates if there was a suggested change to foreground_color.
                            &quot;strikethroughSuggested&quot;: True or False, # Indicates if there was a suggested change to strikethrough.
                          },
                        },
                      },
                      &quot;footnoteNumber&quot;: &quot;A String&quot;, # The rendered number of this footnote.
                      &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;footnoteId&quot;: &quot;A String&quot;, # The ID of the footnote that contains the content of this footnote reference.
                      &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;strikethrough&quot;: True or False, # Whether or not the text is struck through.
                        &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;bold&quot;: True or False, # Whether or not the text is rendered as bold.
                        &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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                              &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                              &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                            },
                          },
                        },
                        &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;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;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;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;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;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;bookmarkId&quot;: &quot;A String&quot;, # The ID of a bookmark in this document.
                        },
                        &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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                              &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                              &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                            },
                          },
                        },
                        &quot;smallCaps&quot;: True or False, # Whether or not the text is in small capital letters.
                        &quot;underline&quot;: True or False, # Whether or not the text is underlined.
                        &quot;italic&quot;: True or False, # Whether or not the text is italicized.
                      },
                      &quot;suggestedDeletionIds&quot;: [ # The suggested deletion IDs. If empty, then there are no suggested deletions of this content.
                        &quot;A String&quot;,
                      ],
                    },
                    &quot;inlineObjectElement&quot;: { # A ParagraphElement that contains an InlineObject. # An inline object paragraph element.
                      &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;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;strikethrough&quot;: True or False, # Whether or not the text is struck through.
                            &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;bold&quot;: True or False, # Whether or not the text is rendered as bold.
                            &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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                                  &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                                  &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                                },
                              },
                            },
                            &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;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;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;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;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;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;bookmarkId&quot;: &quot;A String&quot;, # The ID of a bookmark in this document.
                            },
                            &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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                                  &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                                  &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                                },
                              },
                            },
                            &quot;smallCaps&quot;: True or False, # Whether or not the text is in small capital letters.
                            &quot;underline&quot;: True or False, # Whether or not the text is underlined.
                            &quot;italic&quot;: True or False, # Whether or not the text is italicized.
                          },
                          &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;underlineSuggested&quot;: True or False, # Indicates if there was a suggested change to underline.
                            &quot;smallCapsSuggested&quot;: True or False, # Indicates if there was a suggested change to small_caps.
                            &quot;backgroundColorSuggested&quot;: True or False, # Indicates if there was a suggested change to background_color.
                            &quot;weightedFontFamilySuggested&quot;: True or False, # Indicates if there was a suggested change to weighted_font_family.
                            &quot;boldSuggested&quot;: True or False, # Indicates if there was a suggested change to bold.
                            &quot;fontSizeSuggested&quot;: True or False, # Indicates if there was a suggested change to font_size.
                            &quot;italicSuggested&quot;: True or False, # Indicates if there was a suggested change to italic.
                            &quot;baselineOffsetSuggested&quot;: True or False, # Indicates if there was a suggested change to baseline_offset.
                            &quot;linkSuggested&quot;: True or False, # Indicates if there was a suggested change to link.
                            &quot;foregroundColorSuggested&quot;: True or False, # Indicates if there was a suggested change to foreground_color.
                            &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. # 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;strikethrough&quot;: True or False, # Whether or not the text is struck through.
                        &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;bold&quot;: True or False, # Whether or not the text is rendered as bold.
                        &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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                              &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                              &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                            },
                          },
                        },
                        &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;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;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;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;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;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;bookmarkId&quot;: &quot;A String&quot;, # The ID of a bookmark in this document.
                        },
                        &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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                              &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                              &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                            },
                          },
                        },
                        &quot;smallCaps&quot;: True or False, # Whether or not the text is in small capital letters.
                        &quot;underline&quot;: True or False, # Whether or not the text is underlined.
                        &quot;italic&quot;: True or False, # Whether or not the text is italicized.
                      },
                      &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;suggestedDeletionIds&quot;: [ # The suggested deletion IDs. If empty, then there are no suggested deletions of this content.
                        &quot;A String&quot;,
                      ],
                      &quot;inlineObjectId&quot;: &quot;A String&quot;, # The ID of the InlineObject this element contains.
                    },
                    &quot;endIndex&quot;: 42, # The zero-base end index of this paragraph element, exclusive, in UTF-16 code units.
                    &quot;textRun&quot;: { # A ParagraphElement that represents a run of text that all has the same styling. # A text run paragraph element.
                      &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;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;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;strikethrough&quot;: True or False, # Whether or not the text is struck through.
                            &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;bold&quot;: True or False, # Whether or not the text is rendered as bold.
                            &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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                                  &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                                  &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                                },
                              },
                            },
                            &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;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;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;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;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;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;bookmarkId&quot;: &quot;A String&quot;, # The ID of a bookmark in this document.
                            },
                            &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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                                  &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                                  &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                                },
                              },
                            },
                            &quot;smallCaps&quot;: True or False, # Whether or not the text is in small capital letters.
                            &quot;underline&quot;: True or False, # Whether or not the text is underlined.
                            &quot;italic&quot;: True or False, # Whether or not the text is italicized.
                          },
                          &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;underlineSuggested&quot;: True or False, # Indicates if there was a suggested change to underline.
                            &quot;smallCapsSuggested&quot;: True or False, # Indicates if there was a suggested change to small_caps.
                            &quot;backgroundColorSuggested&quot;: True or False, # Indicates if there was a suggested change to background_color.
                            &quot;weightedFontFamilySuggested&quot;: True or False, # Indicates if there was a suggested change to weighted_font_family.
                            &quot;boldSuggested&quot;: True or False, # Indicates if there was a suggested change to bold.
                            &quot;fontSizeSuggested&quot;: True or False, # Indicates if there was a suggested change to font_size.
                            &quot;italicSuggested&quot;: True or False, # Indicates if there was a suggested change to italic.
                            &quot;baselineOffsetSuggested&quot;: True or False, # Indicates if there was a suggested change to baseline_offset.
                            &quot;linkSuggested&quot;: True or False, # Indicates if there was a suggested change to link.
                            &quot;foregroundColorSuggested&quot;: True or False, # Indicates if there was a suggested change to foreground_color.
                            &quot;strikethroughSuggested&quot;: True or False, # Indicates if there was a suggested change to strikethrough.
                          },
                        },
                      },
                      &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 run.
                        &quot;strikethrough&quot;: True or False, # Whether or not the text is struck through.
                        &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;bold&quot;: True or False, # Whether or not the text is rendered as bold.
                        &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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                              &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                              &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                            },
                          },
                        },
                        &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;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;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;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;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;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;bookmarkId&quot;: &quot;A String&quot;, # The ID of a bookmark in this document.
                        },
                        &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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                              &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                              &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                            },
                          },
                        },
                        &quot;smallCaps&quot;: True or False, # Whether or not the text is in small capital letters.
                        &quot;underline&quot;: True or False, # Whether or not the text is underlined.
                        &quot;italic&quot;: True or False, # Whether or not the text is italicized.
                      },
                      &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;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;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;type&quot;: &quot;A String&quot;, # The type of this auto text.
                      &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;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;strikethrough&quot;: True or False, # Whether or not the text is struck through.
                        &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;bold&quot;: True or False, # Whether or not the text is rendered as bold.
                        &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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                              &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                              &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                            },
                          },
                        },
                        &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;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;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;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;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;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;bookmarkId&quot;: &quot;A String&quot;, # The ID of a bookmark in this document.
                        },
                        &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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                              &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                              &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                            },
                          },
                        },
                        &quot;smallCaps&quot;: True or False, # Whether or not the text is in small capital letters.
                        &quot;underline&quot;: True or False, # Whether or not the text is underlined.
                        &quot;italic&quot;: True or False, # Whether or not the text is italicized.
                      },
                      &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;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;strikethrough&quot;: True or False, # Whether or not the text is struck through.
                            &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;bold&quot;: True or False, # Whether or not the text is rendered as bold.
                            &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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                                  &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                                  &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                                },
                              },
                            },
                            &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;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;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;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;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;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;bookmarkId&quot;: &quot;A String&quot;, # The ID of a bookmark in this document.
                            },
                            &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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                                  &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                                  &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                                },
                              },
                            },
                            &quot;smallCaps&quot;: True or False, # Whether or not the text is in small capital letters.
                            &quot;underline&quot;: True or False, # Whether or not the text is underlined.
                            &quot;italic&quot;: True or False, # Whether or not the text is italicized.
                          },
                          &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;underlineSuggested&quot;: True or False, # Indicates if there was a suggested change to underline.
                            &quot;smallCapsSuggested&quot;: True or False, # Indicates if there was a suggested change to small_caps.
                            &quot;backgroundColorSuggested&quot;: True or False, # Indicates if there was a suggested change to background_color.
                            &quot;weightedFontFamilySuggested&quot;: True or False, # Indicates if there was a suggested change to weighted_font_family.
                            &quot;boldSuggested&quot;: True or False, # Indicates if there was a suggested change to bold.
                            &quot;fontSizeSuggested&quot;: True or False, # Indicates if there was a suggested change to font_size.
                            &quot;italicSuggested&quot;: True or False, # Indicates if there was a suggested change to italic.
                            &quot;baselineOffsetSuggested&quot;: True or False, # Indicates if there was a suggested change to baseline_offset.
                            &quot;linkSuggested&quot;: True or False, # Indicates if there was a suggested change to link.
                            &quot;foregroundColorSuggested&quot;: True or False, # Indicates if there was a suggested change to foreground_color.
                            &quot;strikethroughSuggested&quot;: True or False, # Indicates if there was a suggested change to strikethrough.
                          },
                        },
                      },
                    },
                  },
                ],
                &quot;suggestedBulletChanges&quot;: { # The suggested changes to this paragraph&#x27;s bullet.
                  &quot;a_key&quot;: { # A suggested change to a Bullet.
                    &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;listId&quot;: &quot;A String&quot;, # The ID of the list this paragraph belongs to.
                      &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;strikethrough&quot;: True or False, # Whether or not the text is struck through.
                        &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;bold&quot;: True or False, # Whether or not the text is rendered as bold.
                        &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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                              &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                              &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                            },
                          },
                        },
                        &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;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;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;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;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;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;bookmarkId&quot;: &quot;A String&quot;, # The ID of a bookmark in this document.
                        },
                        &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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                              &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                              &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                            },
                          },
                        },
                        &quot;smallCaps&quot;: True or False, # Whether or not the text is in small capital letters.
                        &quot;underline&quot;: True or False, # Whether or not the text is underlined.
                        &quot;italic&quot;: True or False, # Whether or not the text is italicized.
                      },
                      &quot;nestingLevel&quot;: 42, # The nesting level of this paragraph in the list.
                    },
                    &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;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;underlineSuggested&quot;: True or False, # Indicates if there was a suggested change to underline.
                        &quot;smallCapsSuggested&quot;: True or False, # Indicates if there was a suggested change to small_caps.
                        &quot;backgroundColorSuggested&quot;: True or False, # Indicates if there was a suggested change to background_color.
                        &quot;weightedFontFamilySuggested&quot;: True or False, # Indicates if there was a suggested change to weighted_font_family.
                        &quot;boldSuggested&quot;: True or False, # Indicates if there was a suggested change to bold.
                        &quot;fontSizeSuggested&quot;: True or False, # Indicates if there was a suggested change to font_size.
                        &quot;italicSuggested&quot;: True or False, # Indicates if there was a suggested change to italic.
                        &quot;baselineOffsetSuggested&quot;: True or False, # Indicates if there was a suggested change to baseline_offset.
                        &quot;linkSuggested&quot;: True or False, # Indicates if there was a suggested change to link.
                        &quot;foregroundColorSuggested&quot;: True or False, # Indicates if there was a suggested change to foreground_color.
                        &quot;strikethroughSuggested&quot;: True or False, # Indicates if there was a suggested change to strikethrough.
                      },
                      &quot;nestingLevelSuggested&quot;: True or False, # Indicates if there was a suggested change to the nesting_level.
                      &quot;listIdSuggested&quot;: True or False, # Indicates if there was a suggested change to the list_id.
                    },
                  },
                },
                &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;alignment&quot;: &quot;A String&quot;, # The text alignment for this paragraph.
                  &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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                          &quot;green&quot;: 3.14, # The green component of the color, 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;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;spacingMode&quot;: &quot;A String&quot;, # The spacing mode for the paragraph.
                  &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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                          &quot;green&quot;: 3.14, # The green component of the color, 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;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;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;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;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;avoidWidowAndOrphan&quot;: True or False, # Whether to avoid widows and orphans for the paragraph. 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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                          &quot;green&quot;: 3.14, # The green component of the color, 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;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;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;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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                          &quot;green&quot;: 3.14, # The green component of the color, 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;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;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;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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                          &quot;green&quot;: 3.14, # The green component of the color, 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;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;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;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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                          &quot;green&quot;: 3.14, # The green component of the color, 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;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;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;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;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;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;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;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;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;spaceAboveSuggested&quot;: True or False, # Indicates if there was a suggested change to space_above.
                      &quot;directionSuggested&quot;: True or False, # Indicates if there was a suggested change to direction.
                      &quot;spacingModeSuggested&quot;: True or False, # Indicates if there was a suggested change to spacing_mode.
                      &quot;indentFirstLineSuggested&quot;: True or False, # Indicates if there was a suggested change to indent_first_line.
                      &quot;lineSpacingSuggested&quot;: True or False, # Indicates if there was a suggested change to line_spacing.
                      &quot;avoidWidowAndOrphanSuggested&quot;: True or False, # Indicates if there was a suggested change to avoid_widow_and_orphan.
                      &quot;borderBetweenSuggested&quot;: True or False, # Indicates if there was a suggested change to border_between.
                      &quot;keepLinesTogetherSuggested&quot;: True or False, # Indicates if there was a suggested change to keep_lines_together.
                      &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;borderTopSuggested&quot;: True or False, # Indicates if there was a suggested change to border_top.
                      &quot;indentEndSuggested&quot;: True or False, # Indicates if there was a suggested change to indent_end.
                      &quot;keepWithNextSuggested&quot;: True or False, # Indicates if there was a suggested change to keep_with_next.
                      &quot;indentStartSuggested&quot;: True or False, # Indicates if there was a suggested change to indent_start.
                      &quot;borderRightSuggested&quot;: True or False, # Indicates if there was a suggested change to border_right.
                      &quot;spaceBelowSuggested&quot;: True or False, # Indicates if there was a suggested change to space_below.
                      &quot;headingIdSuggested&quot;: True or False, # Indicates if there was a suggested change to heading_id.
                      &quot;borderLeftSuggested&quot;: True or False, # Indicates if there was a suggested change to border_left.
                      &quot;namedStyleTypeSuggested&quot;: True or False, # Indicates if there was a suggested change to named_style_type.
                    },
                    &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;alignment&quot;: &quot;A String&quot;, # The text alignment for this paragraph.
                      &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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                              &quot;green&quot;: 3.14, # The green component of the color, 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;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;spacingMode&quot;: &quot;A String&quot;, # The spacing mode for the paragraph.
                      &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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                              &quot;green&quot;: 3.14, # The green component of the color, 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;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;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;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;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;avoidWidowAndOrphan&quot;: True or False, # Whether to avoid widows and orphans for the paragraph. 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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                              &quot;green&quot;: 3.14, # The green component of the color, 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;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;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;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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                              &quot;green&quot;: 3.14, # The green component of the color, 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;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;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;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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                              &quot;green&quot;: 3.14, # The green component of the color, 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;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;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;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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                              &quot;green&quot;: 3.14, # The green component of the color, 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;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;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;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;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;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;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;listId&quot;: &quot;A String&quot;, # The ID of the list this paragraph belongs to.
                  &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;strikethrough&quot;: True or False, # Whether or not the text is struck through.
                    &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;bold&quot;: True or False, # Whether or not the text is rendered as bold.
                    &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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                          &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                          &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                        },
                      },
                    },
                    &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;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;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;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;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;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;bookmarkId&quot;: &quot;A String&quot;, # The ID of a bookmark in this document.
                    },
                    &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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                          &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                          &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                        },
                      },
                    },
                    &quot;smallCaps&quot;: True or False, # Whether or not the text is in small capital letters.
                    &quot;underline&quot;: True or False, # Whether or not the text is underlined.
                    &quot;italic&quot;: True or False, # Whether or not the text is italicized.
                  },
                  &quot;nestingLevel&quot;: 42, # The nesting level of this paragraph in the list.
                },
                &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;positionedObjectIds&quot;: [ # The IDs of the positioned objects tethered to this paragraph.
                  &quot;A String&quot;,
                ],
              },
              &quot;table&quot;: { # A StructuralElement representing a table. # A table type of structural element.
                &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;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;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;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 row, 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;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;suggestedDeletionIds&quot;: [ # The suggested deletion IDs. If empty, then there are no suggested deletions of this content.
                          &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;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;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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                                      &quot;green&quot;: 3.14, # The green component of the color, 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;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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                                    &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                                    &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                                  },
                                },
                              },
                              &quot;rowSpan&quot;: 42, # The row span of the cell. This property is read-only.
                              &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;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;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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                                      &quot;green&quot;: 3.14, # The green component of the color, 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;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;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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                                      &quot;green&quot;: 3.14, # The green component of the color, 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;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;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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                                      &quot;green&quot;: 3.14, # The green component of the color, 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;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;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;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;columnSpan&quot;: 42, # The column 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;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;borderLeftSuggested&quot;: True or False, # Indicates if there was a suggested change to border_left.
                              &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;paddingTopSuggested&quot;: True or False, # Indicates if there was a suggested change to padding_top.
                              &quot;paddingRightSuggested&quot;: True or False, # Indicates if there was a suggested change to padding_right.
                              &quot;rowSpanSuggested&quot;: True or False, # Indicates if there was a suggested change to row_span.
                              &quot;borderBottomSuggested&quot;: True or False, # Indicates if there was a suggested change to border_bottom.
                              &quot;backgroundColorSuggested&quot;: True or False, # Indicates if there was a suggested change to background_color.
                              &quot;columnSpanSuggested&quot;: True or False, # Indicates if there was a suggested change to column_span.
                              &quot;borderTopSuggested&quot;: True or False, # Indicates if there was a suggested change to border_top.
                              &quot;paddingBottomSuggested&quot;: True or False, # Indicates if there was a suggested change to padding_bottom.
                              &quot;paddingLeftSuggested&quot;: True or False, # Indicates if there was a suggested change to padding_left.
                            },
                          },
                        },
                        &quot;content&quot;: [ # The content of the cell.
                          # Object with schema name: StructuralElement
                        ],
                        &quot;endIndex&quot;: 42, # The zero-based end index of this cell, exclusive, 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;startIndex&quot;: 42, # The zero-based start index of this cell, in UTF-16 code units.
                        &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;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;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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                                  &quot;green&quot;: 3.14, # The green component of the color, 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;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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                                &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                                &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                              },
                            },
                          },
                          &quot;rowSpan&quot;: 42, # The row span of the cell. This property is read-only.
                          &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;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;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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                                  &quot;green&quot;: 3.14, # The green component of the color, 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;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;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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                                  &quot;green&quot;: 3.14, # The green component of the color, 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;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;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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                                  &quot;green&quot;: 3.14, # The green component of the color, 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;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;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;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;columnSpan&quot;: 42, # The column 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;suggestedTableRowStyleChanges&quot;: { # The suggested style changes to this row, keyed by suggestion ID.
                      &quot;a_key&quot;: { # A suggested change to a TableRowStyle.
                        &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;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;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;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;widthType&quot;: &quot;A String&quot;, # The width type of the column.
                    },
                  ],
                },
                &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;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;suggestedDeletionIds&quot;: [ # The suggested deletion IDs. If empty, then there are no suggested deletions of this content.
                  &quot;A String&quot;,
                ],
                &quot;content&quot;: [ # The content of the table of contents.
                  # Object with schema name: StructuralElement
                ],
              },
              &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;sectionStyle&quot;: { # The styling that applies to a section. # The style of the section after this section break.
                  &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;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;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;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;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;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;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;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;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;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;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;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;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;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;sectionType&quot;: &quot;A String&quot;, # Output only. The type of section.
                  &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;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;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;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;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;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;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;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;footers&quot;: { # Output only. The footers in the document, keyed by footer ID.
        &quot;a_key&quot;: { # A document footer.
          &quot;footerId&quot;: &quot;A String&quot;, # The ID of the 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;endIndex&quot;: 42, # The zero-based end index of this structural element, exclusive, in UTF-16 code units.
              &quot;startIndex&quot;: 42, # The zero-based start index of this structural element, in UTF-16 code units.
              &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;elements&quot;: [ # The content of the paragraph broken down into its component parts.
                  { # A ParagraphElement describes content within a Paragraph.
                    &quot;startIndex&quot;: 42, # The zero-based start index of this paragraph element, in UTF-16 code units.
                    &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;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;strikethrough&quot;: True or False, # Whether or not the text is struck through.
                        &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;bold&quot;: True or False, # Whether or not the text is rendered as bold.
                        &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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                              &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                              &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                            },
                          },
                        },
                        &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;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;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;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;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;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;bookmarkId&quot;: &quot;A String&quot;, # The ID of a bookmark in this document.
                        },
                        &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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                              &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                              &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                            },
                          },
                        },
                        &quot;smallCaps&quot;: True or False, # Whether or not the text is in small capital letters.
                        &quot;underline&quot;: True or False, # Whether or not the text is underlined.
                        &quot;italic&quot;: True or False, # Whether or not the text is italicized.
                      },
                      &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;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;strikethrough&quot;: True or False, # Whether or not the text is struck through.
                            &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;bold&quot;: True or False, # Whether or not the text is rendered as bold.
                            &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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                                  &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                                  &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                                },
                              },
                            },
                            &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;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;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;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;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;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;bookmarkId&quot;: &quot;A String&quot;, # The ID of a bookmark in this document.
                            },
                            &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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                                  &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                                  &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                                },
                              },
                            },
                            &quot;smallCaps&quot;: True or False, # Whether or not the text is in small capital letters.
                            &quot;underline&quot;: True or False, # Whether or not the text is underlined.
                            &quot;italic&quot;: True or False, # Whether or not the text is italicized.
                          },
                          &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;underlineSuggested&quot;: True or False, # Indicates if there was a suggested change to underline.
                            &quot;smallCapsSuggested&quot;: True or False, # Indicates if there was a suggested change to small_caps.
                            &quot;backgroundColorSuggested&quot;: True or False, # Indicates if there was a suggested change to background_color.
                            &quot;weightedFontFamilySuggested&quot;: True or False, # Indicates if there was a suggested change to weighted_font_family.
                            &quot;boldSuggested&quot;: True or False, # Indicates if there was a suggested change to bold.
                            &quot;fontSizeSuggested&quot;: True or False, # Indicates if there was a suggested change to font_size.
                            &quot;italicSuggested&quot;: True or False, # Indicates if there was a suggested change to italic.
                            &quot;baselineOffsetSuggested&quot;: True or False, # Indicates if there was a suggested change to baseline_offset.
                            &quot;linkSuggested&quot;: True or False, # Indicates if there was a suggested change to link.
                            &quot;foregroundColorSuggested&quot;: True or False, # Indicates if there was a suggested change to foreground_color.
                            &quot;strikethroughSuggested&quot;: True or False, # Indicates if there was a suggested change to strikethrough.
                          },
                        },
                      },
                    },
                    &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;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;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;strikethrough&quot;: True or False, # Whether or not the text is struck through.
                            &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;bold&quot;: True or False, # Whether or not the text is rendered as bold.
                            &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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                                  &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                                  &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                                },
                              },
                            },
                            &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;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;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;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;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;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;bookmarkId&quot;: &quot;A String&quot;, # The ID of a bookmark in this document.
                            },
                            &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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                                  &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                                  &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                                },
                              },
                            },
                            &quot;smallCaps&quot;: True or False, # Whether or not the text is in small capital letters.
                            &quot;underline&quot;: True or False, # Whether or not the text is underlined.
                            &quot;italic&quot;: True or False, # Whether or not the text is italicized.
                          },
                          &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;underlineSuggested&quot;: True or False, # Indicates if there was a suggested change to underline.
                            &quot;smallCapsSuggested&quot;: True or False, # Indicates if there was a suggested change to small_caps.
                            &quot;backgroundColorSuggested&quot;: True or False, # Indicates if there was a suggested change to background_color.
                            &quot;weightedFontFamilySuggested&quot;: True or False, # Indicates if there was a suggested change to weighted_font_family.
                            &quot;boldSuggested&quot;: True or False, # Indicates if there was a suggested change to bold.
                            &quot;fontSizeSuggested&quot;: True or False, # Indicates if there was a suggested change to font_size.
                            &quot;italicSuggested&quot;: True or False, # Indicates if there was a suggested change to italic.
                            &quot;baselineOffsetSuggested&quot;: True or False, # Indicates if there was a suggested change to baseline_offset.
                            &quot;linkSuggested&quot;: True or False, # Indicates if there was a suggested change to link.
                            &quot;foregroundColorSuggested&quot;: True or False, # Indicates if there was a suggested change to foreground_color.
                            &quot;strikethroughSuggested&quot;: True or False, # Indicates if there was a suggested change to strikethrough.
                          },
                        },
                      },
                      &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;strikethrough&quot;: True or False, # Whether or not the text is struck through.
                        &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;bold&quot;: True or False, # Whether or not the text is rendered as bold.
                        &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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                              &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                              &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                            },
                          },
                        },
                        &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;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;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;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;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;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;bookmarkId&quot;: &quot;A String&quot;, # The ID of a bookmark in this document.
                        },
                        &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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                              &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                              &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                            },
                          },
                        },
                        &quot;smallCaps&quot;: True or False, # Whether or not the text is in small capital letters.
                        &quot;underline&quot;: True or False, # Whether or not the text is underlined.
                        &quot;italic&quot;: True or False, # Whether or not the text is italicized.
                      },
                      &quot;suggestedDeletionIds&quot;: [ # The suggested deletion IDs. If empty, then there are no suggested deletions of this content.
                        &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;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;strikethrough&quot;: True or False, # Whether or not the text is struck through.
                            &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;bold&quot;: True or False, # Whether or not the text is rendered as bold.
                            &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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                                  &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                                  &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                                },
                              },
                            },
                            &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;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;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;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;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;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;bookmarkId&quot;: &quot;A String&quot;, # The ID of a bookmark in this document.
                            },
                            &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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                                  &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                                  &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                                },
                              },
                            },
                            &quot;smallCaps&quot;: True or False, # Whether or not the text is in small capital letters.
                            &quot;underline&quot;: True or False, # Whether or not the text is underlined.
                            &quot;italic&quot;: True or False, # Whether or not the text is italicized.
                          },
                          &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;underlineSuggested&quot;: True or False, # Indicates if there was a suggested change to underline.
                            &quot;smallCapsSuggested&quot;: True or False, # Indicates if there was a suggested change to small_caps.
                            &quot;backgroundColorSuggested&quot;: True or False, # Indicates if there was a suggested change to background_color.
                            &quot;weightedFontFamilySuggested&quot;: True or False, # Indicates if there was a suggested change to weighted_font_family.
                            &quot;boldSuggested&quot;: True or False, # Indicates if there was a suggested change to bold.
                            &quot;fontSizeSuggested&quot;: True or False, # Indicates if there was a suggested change to font_size.
                            &quot;italicSuggested&quot;: True or False, # Indicates if there was a suggested change to italic.
                            &quot;baselineOffsetSuggested&quot;: True or False, # Indicates if there was a suggested change to baseline_offset.
                            &quot;linkSuggested&quot;: True or False, # Indicates if there was a suggested change to link.
                            &quot;foregroundColorSuggested&quot;: True or False, # Indicates if there was a suggested change to foreground_color.
                            &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. # 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;strikethrough&quot;: True or False, # Whether or not the text is struck through.
                        &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;bold&quot;: True or False, # Whether or not the text is rendered as bold.
                        &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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                              &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                              &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                            },
                          },
                        },
                        &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;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;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;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;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;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;bookmarkId&quot;: &quot;A String&quot;, # The ID of a bookmark in this document.
                        },
                        &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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                              &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                              &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                            },
                          },
                        },
                        &quot;smallCaps&quot;: True or False, # Whether or not the text is in small capital letters.
                        &quot;underline&quot;: True or False, # Whether or not the text is underlined.
                        &quot;italic&quot;: True or False, # Whether or not the text is italicized.
                      },
                      &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 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;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;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;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;strikethrough&quot;: True or False, # Whether or not the text is struck through.
                            &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;bold&quot;: True or False, # Whether or not the text is rendered as bold.
                            &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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                                  &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                                  &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                                },
                              },
                            },
                            &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;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;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;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;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;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;bookmarkId&quot;: &quot;A String&quot;, # The ID of a bookmark in this document.
                            },
                            &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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                                  &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                                  &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                                },
                              },
                            },
                            &quot;smallCaps&quot;: True or False, # Whether or not the text is in small capital letters.
                            &quot;underline&quot;: True or False, # Whether or not the text is underlined.
                            &quot;italic&quot;: True or False, # Whether or not the text is italicized.
                          },
                          &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;underlineSuggested&quot;: True or False, # Indicates if there was a suggested change to underline.
                            &quot;smallCapsSuggested&quot;: True or False, # Indicates if there was a suggested change to small_caps.
                            &quot;backgroundColorSuggested&quot;: True or False, # Indicates if there was a suggested change to background_color.
                            &quot;weightedFontFamilySuggested&quot;: True or False, # Indicates if there was a suggested change to weighted_font_family.
                            &quot;boldSuggested&quot;: True or False, # Indicates if there was a suggested change to bold.
                            &quot;fontSizeSuggested&quot;: True or False, # Indicates if there was a suggested change to font_size.
                            &quot;italicSuggested&quot;: True or False, # Indicates if there was a suggested change to italic.
                            &quot;baselineOffsetSuggested&quot;: True or False, # Indicates if there was a suggested change to baseline_offset.
                            &quot;linkSuggested&quot;: True or False, # Indicates if there was a suggested change to link.
                            &quot;foregroundColorSuggested&quot;: True or False, # Indicates if there was a suggested change to foreground_color.
                            &quot;strikethroughSuggested&quot;: True or False, # Indicates if there was a suggested change to strikethrough.
                          },
                        },
                      },
                      &quot;footnoteNumber&quot;: &quot;A String&quot;, # The rendered number of this footnote.
                      &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;footnoteId&quot;: &quot;A String&quot;, # The ID of the footnote that contains the content of this footnote reference.
                      &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;strikethrough&quot;: True or False, # Whether or not the text is struck through.
                        &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;bold&quot;: True or False, # Whether or not the text is rendered as bold.
                        &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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                              &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                              &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                            },
                          },
                        },
                        &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;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;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;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;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;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;bookmarkId&quot;: &quot;A String&quot;, # The ID of a bookmark in this document.
                        },
                        &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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                              &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                              &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                            },
                          },
                        },
                        &quot;smallCaps&quot;: True or False, # Whether or not the text is in small capital letters.
                        &quot;underline&quot;: True or False, # Whether or not the text is underlined.
                        &quot;italic&quot;: True or False, # Whether or not the text is italicized.
                      },
                      &quot;suggestedDeletionIds&quot;: [ # The suggested deletion IDs. If empty, then there are no suggested deletions of this content.
                        &quot;A String&quot;,
                      ],
                    },
                    &quot;inlineObjectElement&quot;: { # A ParagraphElement that contains an InlineObject. # An inline object paragraph element.
                      &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;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;strikethrough&quot;: True or False, # Whether or not the text is struck through.
                            &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;bold&quot;: True or False, # Whether or not the text is rendered as bold.
                            &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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                                  &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                                  &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                                },
                              },
                            },
                            &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;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;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;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;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;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;bookmarkId&quot;: &quot;A String&quot;, # The ID of a bookmark in this document.
                            },
                            &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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                                  &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                                  &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                                },
                              },
                            },
                            &quot;smallCaps&quot;: True or False, # Whether or not the text is in small capital letters.
                            &quot;underline&quot;: True or False, # Whether or not the text is underlined.
                            &quot;italic&quot;: True or False, # Whether or not the text is italicized.
                          },
                          &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;underlineSuggested&quot;: True or False, # Indicates if there was a suggested change to underline.
                            &quot;smallCapsSuggested&quot;: True or False, # Indicates if there was a suggested change to small_caps.
                            &quot;backgroundColorSuggested&quot;: True or False, # Indicates if there was a suggested change to background_color.
                            &quot;weightedFontFamilySuggested&quot;: True or False, # Indicates if there was a suggested change to weighted_font_family.
                            &quot;boldSuggested&quot;: True or False, # Indicates if there was a suggested change to bold.
                            &quot;fontSizeSuggested&quot;: True or False, # Indicates if there was a suggested change to font_size.
                            &quot;italicSuggested&quot;: True or False, # Indicates if there was a suggested change to italic.
                            &quot;baselineOffsetSuggested&quot;: True or False, # Indicates if there was a suggested change to baseline_offset.
                            &quot;linkSuggested&quot;: True or False, # Indicates if there was a suggested change to link.
                            &quot;foregroundColorSuggested&quot;: True or False, # Indicates if there was a suggested change to foreground_color.
                            &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. # 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;strikethrough&quot;: True or False, # Whether or not the text is struck through.
                        &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;bold&quot;: True or False, # Whether or not the text is rendered as bold.
                        &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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                              &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                              &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                            },
                          },
                        },
                        &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;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;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;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;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;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;bookmarkId&quot;: &quot;A String&quot;, # The ID of a bookmark in this document.
                        },
                        &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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                              &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                              &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                            },
                          },
                        },
                        &quot;smallCaps&quot;: True or False, # Whether or not the text is in small capital letters.
                        &quot;underline&quot;: True or False, # Whether or not the text is underlined.
                        &quot;italic&quot;: True or False, # Whether or not the text is italicized.
                      },
                      &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;suggestedDeletionIds&quot;: [ # The suggested deletion IDs. If empty, then there are no suggested deletions of this content.
                        &quot;A String&quot;,
                      ],
                      &quot;inlineObjectId&quot;: &quot;A String&quot;, # The ID of the InlineObject this element contains.
                    },
                    &quot;endIndex&quot;: 42, # The zero-base end index of this paragraph element, exclusive, in UTF-16 code units.
                    &quot;textRun&quot;: { # A ParagraphElement that represents a run of text that all has the same styling. # A text run paragraph element.
                      &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;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;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;strikethrough&quot;: True or False, # Whether or not the text is struck through.
                            &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;bold&quot;: True or False, # Whether or not the text is rendered as bold.
                            &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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                                  &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                                  &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                                },
                              },
                            },
                            &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;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;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;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;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;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;bookmarkId&quot;: &quot;A String&quot;, # The ID of a bookmark in this document.
                            },
                            &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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                                  &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                                  &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                                },
                              },
                            },
                            &quot;smallCaps&quot;: True or False, # Whether or not the text is in small capital letters.
                            &quot;underline&quot;: True or False, # Whether or not the text is underlined.
                            &quot;italic&quot;: True or False, # Whether or not the text is italicized.
                          },
                          &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;underlineSuggested&quot;: True or False, # Indicates if there was a suggested change to underline.
                            &quot;smallCapsSuggested&quot;: True or False, # Indicates if there was a suggested change to small_caps.
                            &quot;backgroundColorSuggested&quot;: True or False, # Indicates if there was a suggested change to background_color.
                            &quot;weightedFontFamilySuggested&quot;: True or False, # Indicates if there was a suggested change to weighted_font_family.
                            &quot;boldSuggested&quot;: True or False, # Indicates if there was a suggested change to bold.
                            &quot;fontSizeSuggested&quot;: True or False, # Indicates if there was a suggested change to font_size.
                            &quot;italicSuggested&quot;: True or False, # Indicates if there was a suggested change to italic.
                            &quot;baselineOffsetSuggested&quot;: True or False, # Indicates if there was a suggested change to baseline_offset.
                            &quot;linkSuggested&quot;: True or False, # Indicates if there was a suggested change to link.
                            &quot;foregroundColorSuggested&quot;: True or False, # Indicates if there was a suggested change to foreground_color.
                            &quot;strikethroughSuggested&quot;: True or False, # Indicates if there was a suggested change to strikethrough.
                          },
                        },
                      },
                      &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 run.
                        &quot;strikethrough&quot;: True or False, # Whether or not the text is struck through.
                        &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;bold&quot;: True or False, # Whether or not the text is rendered as bold.
                        &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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                              &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                              &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                            },
                          },
                        },
                        &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;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;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;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;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;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;bookmarkId&quot;: &quot;A String&quot;, # The ID of a bookmark in this document.
                        },
                        &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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                              &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                              &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                            },
                          },
                        },
                        &quot;smallCaps&quot;: True or False, # Whether or not the text is in small capital letters.
                        &quot;underline&quot;: True or False, # Whether or not the text is underlined.
                        &quot;italic&quot;: True or False, # Whether or not the text is italicized.
                      },
                      &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;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;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;type&quot;: &quot;A String&quot;, # The type of this auto text.
                      &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;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;strikethrough&quot;: True or False, # Whether or not the text is struck through.
                        &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;bold&quot;: True or False, # Whether or not the text is rendered as bold.
                        &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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                              &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                              &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                            },
                          },
                        },
                        &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;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;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;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;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;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;bookmarkId&quot;: &quot;A String&quot;, # The ID of a bookmark in this document.
                        },
                        &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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                              &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                              &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                            },
                          },
                        },
                        &quot;smallCaps&quot;: True or False, # Whether or not the text is in small capital letters.
                        &quot;underline&quot;: True or False, # Whether or not the text is underlined.
                        &quot;italic&quot;: True or False, # Whether or not the text is italicized.
                      },
                      &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;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;strikethrough&quot;: True or False, # Whether or not the text is struck through.
                            &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;bold&quot;: True or False, # Whether or not the text is rendered as bold.
                            &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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                                  &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                                  &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                                },
                              },
                            },
                            &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;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;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;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;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;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;bookmarkId&quot;: &quot;A String&quot;, # The ID of a bookmark in this document.
                            },
                            &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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                                  &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                                  &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                                },
                              },
                            },
                            &quot;smallCaps&quot;: True or False, # Whether or not the text is in small capital letters.
                            &quot;underline&quot;: True or False, # Whether or not the text is underlined.
                            &quot;italic&quot;: True or False, # Whether or not the text is italicized.
                          },
                          &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;underlineSuggested&quot;: True or False, # Indicates if there was a suggested change to underline.
                            &quot;smallCapsSuggested&quot;: True or False, # Indicates if there was a suggested change to small_caps.
                            &quot;backgroundColorSuggested&quot;: True or False, # Indicates if there was a suggested change to background_color.
                            &quot;weightedFontFamilySuggested&quot;: True or False, # Indicates if there was a suggested change to weighted_font_family.
                            &quot;boldSuggested&quot;: True or False, # Indicates if there was a suggested change to bold.
                            &quot;fontSizeSuggested&quot;: True or False, # Indicates if there was a suggested change to font_size.
                            &quot;italicSuggested&quot;: True or False, # Indicates if there was a suggested change to italic.
                            &quot;baselineOffsetSuggested&quot;: True or False, # Indicates if there was a suggested change to baseline_offset.
                            &quot;linkSuggested&quot;: True or False, # Indicates if there was a suggested change to link.
                            &quot;foregroundColorSuggested&quot;: True or False, # Indicates if there was a suggested change to foreground_color.
                            &quot;strikethroughSuggested&quot;: True or False, # Indicates if there was a suggested change to strikethrough.
                          },
                        },
                      },
                    },
                  },
                ],
                &quot;suggestedBulletChanges&quot;: { # The suggested changes to this paragraph&#x27;s bullet.
                  &quot;a_key&quot;: { # A suggested change to a Bullet.
                    &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;listId&quot;: &quot;A String&quot;, # The ID of the list this paragraph belongs to.
                      &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;strikethrough&quot;: True or False, # Whether or not the text is struck through.
                        &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;bold&quot;: True or False, # Whether or not the text is rendered as bold.
                        &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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                              &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                              &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                            },
                          },
                        },
                        &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;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;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;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;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;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;bookmarkId&quot;: &quot;A String&quot;, # The ID of a bookmark in this document.
                        },
                        &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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                              &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                              &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                            },
                          },
                        },
                        &quot;smallCaps&quot;: True or False, # Whether or not the text is in small capital letters.
                        &quot;underline&quot;: True or False, # Whether or not the text is underlined.
                        &quot;italic&quot;: True or False, # Whether or not the text is italicized.
                      },
                      &quot;nestingLevel&quot;: 42, # The nesting level of this paragraph in the list.
                    },
                    &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;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;underlineSuggested&quot;: True or False, # Indicates if there was a suggested change to underline.
                        &quot;smallCapsSuggested&quot;: True or False, # Indicates if there was a suggested change to small_caps.
                        &quot;backgroundColorSuggested&quot;: True or False, # Indicates if there was a suggested change to background_color.
                        &quot;weightedFontFamilySuggested&quot;: True or False, # Indicates if there was a suggested change to weighted_font_family.
                        &quot;boldSuggested&quot;: True or False, # Indicates if there was a suggested change to bold.
                        &quot;fontSizeSuggested&quot;: True or False, # Indicates if there was a suggested change to font_size.
                        &quot;italicSuggested&quot;: True or False, # Indicates if there was a suggested change to italic.
                        &quot;baselineOffsetSuggested&quot;: True or False, # Indicates if there was a suggested change to baseline_offset.
                        &quot;linkSuggested&quot;: True or False, # Indicates if there was a suggested change to link.
                        &quot;foregroundColorSuggested&quot;: True or False, # Indicates if there was a suggested change to foreground_color.
                        &quot;strikethroughSuggested&quot;: True or False, # Indicates if there was a suggested change to strikethrough.
                      },
                      &quot;nestingLevelSuggested&quot;: True or False, # Indicates if there was a suggested change to the nesting_level.
                      &quot;listIdSuggested&quot;: True or False, # Indicates if there was a suggested change to the list_id.
                    },
                  },
                },
                &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;alignment&quot;: &quot;A String&quot;, # The text alignment for this paragraph.
                  &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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                          &quot;green&quot;: 3.14, # The green component of the color, 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;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;spacingMode&quot;: &quot;A String&quot;, # The spacing mode for the paragraph.
                  &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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                          &quot;green&quot;: 3.14, # The green component of the color, 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;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;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;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;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;avoidWidowAndOrphan&quot;: True or False, # Whether to avoid widows and orphans for the paragraph. 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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                          &quot;green&quot;: 3.14, # The green component of the color, 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;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;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;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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                          &quot;green&quot;: 3.14, # The green component of the color, 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;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;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;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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                          &quot;green&quot;: 3.14, # The green component of the color, 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;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;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;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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                          &quot;green&quot;: 3.14, # The green component of the color, 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;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;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;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;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;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;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;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;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;spaceAboveSuggested&quot;: True or False, # Indicates if there was a suggested change to space_above.
                      &quot;directionSuggested&quot;: True or False, # Indicates if there was a suggested change to direction.
                      &quot;spacingModeSuggested&quot;: True or False, # Indicates if there was a suggested change to spacing_mode.
                      &quot;indentFirstLineSuggested&quot;: True or False, # Indicates if there was a suggested change to indent_first_line.
                      &quot;lineSpacingSuggested&quot;: True or False, # Indicates if there was a suggested change to line_spacing.
                      &quot;avoidWidowAndOrphanSuggested&quot;: True or False, # Indicates if there was a suggested change to avoid_widow_and_orphan.
                      &quot;borderBetweenSuggested&quot;: True or False, # Indicates if there was a suggested change to border_between.
                      &quot;keepLinesTogetherSuggested&quot;: True or False, # Indicates if there was a suggested change to keep_lines_together.
                      &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;borderTopSuggested&quot;: True or False, # Indicates if there was a suggested change to border_top.
                      &quot;indentEndSuggested&quot;: True or False, # Indicates if there was a suggested change to indent_end.
                      &quot;keepWithNextSuggested&quot;: True or False, # Indicates if there was a suggested change to keep_with_next.
                      &quot;indentStartSuggested&quot;: True or False, # Indicates if there was a suggested change to indent_start.
                      &quot;borderRightSuggested&quot;: True or False, # Indicates if there was a suggested change to border_right.
                      &quot;spaceBelowSuggested&quot;: True or False, # Indicates if there was a suggested change to space_below.
                      &quot;headingIdSuggested&quot;: True or False, # Indicates if there was a suggested change to heading_id.
                      &quot;borderLeftSuggested&quot;: True or False, # Indicates if there was a suggested change to border_left.
                      &quot;namedStyleTypeSuggested&quot;: True or False, # Indicates if there was a suggested change to named_style_type.
                    },
                    &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;alignment&quot;: &quot;A String&quot;, # The text alignment for this paragraph.
                      &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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                              &quot;green&quot;: 3.14, # The green component of the color, 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;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;spacingMode&quot;: &quot;A String&quot;, # The spacing mode for the paragraph.
                      &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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                              &quot;green&quot;: 3.14, # The green component of the color, 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;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;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;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;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;avoidWidowAndOrphan&quot;: True or False, # Whether to avoid widows and orphans for the paragraph. 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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                              &quot;green&quot;: 3.14, # The green component of the color, 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;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;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;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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                              &quot;green&quot;: 3.14, # The green component of the color, 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;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;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;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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                              &quot;green&quot;: 3.14, # The green component of the color, 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;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;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;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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                              &quot;green&quot;: 3.14, # The green component of the color, 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;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;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;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;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;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;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;listId&quot;: &quot;A String&quot;, # The ID of the list this paragraph belongs to.
                  &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;strikethrough&quot;: True or False, # Whether or not the text is struck through.
                    &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;bold&quot;: True or False, # Whether or not the text is rendered as bold.
                    &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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                          &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                          &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                        },
                      },
                    },
                    &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;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;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;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;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;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;bookmarkId&quot;: &quot;A String&quot;, # The ID of a bookmark in this document.
                    },
                    &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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                          &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                          &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                        },
                      },
                    },
                    &quot;smallCaps&quot;: True or False, # Whether or not the text is in small capital letters.
                    &quot;underline&quot;: True or False, # Whether or not the text is underlined.
                    &quot;italic&quot;: True or False, # Whether or not the text is italicized.
                  },
                  &quot;nestingLevel&quot;: 42, # The nesting level of this paragraph in the list.
                },
                &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;positionedObjectIds&quot;: [ # The IDs of the positioned objects tethered to this paragraph.
                  &quot;A String&quot;,
                ],
              },
              &quot;table&quot;: { # A StructuralElement representing a table. # A table type of structural element.
                &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;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;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;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 row, 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;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;suggestedDeletionIds&quot;: [ # The suggested deletion IDs. If empty, then there are no suggested deletions of this content.
                          &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;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;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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                                      &quot;green&quot;: 3.14, # The green component of the color, 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;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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                                    &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                                    &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                                  },
                                },
                              },
                              &quot;rowSpan&quot;: 42, # The row span of the cell. This property is read-only.
                              &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;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;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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                                      &quot;green&quot;: 3.14, # The green component of the color, 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;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;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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                                      &quot;green&quot;: 3.14, # The green component of the color, 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;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;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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                                      &quot;green&quot;: 3.14, # The green component of the color, 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;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;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;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;columnSpan&quot;: 42, # The column 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;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;borderLeftSuggested&quot;: True or False, # Indicates if there was a suggested change to border_left.
                              &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;paddingTopSuggested&quot;: True or False, # Indicates if there was a suggested change to padding_top.
                              &quot;paddingRightSuggested&quot;: True or False, # Indicates if there was a suggested change to padding_right.
                              &quot;rowSpanSuggested&quot;: True or False, # Indicates if there was a suggested change to row_span.
                              &quot;borderBottomSuggested&quot;: True or False, # Indicates if there was a suggested change to border_bottom.
                              &quot;backgroundColorSuggested&quot;: True or False, # Indicates if there was a suggested change to background_color.
                              &quot;columnSpanSuggested&quot;: True or False, # Indicates if there was a suggested change to column_span.
                              &quot;borderTopSuggested&quot;: True or False, # Indicates if there was a suggested change to border_top.
                              &quot;paddingBottomSuggested&quot;: True or False, # Indicates if there was a suggested change to padding_bottom.
                              &quot;paddingLeftSuggested&quot;: True or False, # Indicates if there was a suggested change to padding_left.
                            },
                          },
                        },
                        &quot;content&quot;: [ # The content of the cell.
                          # Object with schema name: StructuralElement
                        ],
                        &quot;endIndex&quot;: 42, # The zero-based end index of this cell, exclusive, 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;startIndex&quot;: 42, # The zero-based start index of this cell, in UTF-16 code units.
                        &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;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;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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                                  &quot;green&quot;: 3.14, # The green component of the color, 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;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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                                &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                                &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                              },
                            },
                          },
                          &quot;rowSpan&quot;: 42, # The row span of the cell. This property is read-only.
                          &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;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;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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                                  &quot;green&quot;: 3.14, # The green component of the color, 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;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;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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                                  &quot;green&quot;: 3.14, # The green component of the color, 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;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;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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                                  &quot;green&quot;: 3.14, # The green component of the color, 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;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;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;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;columnSpan&quot;: 42, # The column 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;suggestedTableRowStyleChanges&quot;: { # The suggested style changes to this row, keyed by suggestion ID.
                      &quot;a_key&quot;: { # A suggested change to a TableRowStyle.
                        &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;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;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;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;widthType&quot;: &quot;A String&quot;, # The width type of the column.
                    },
                  ],
                },
                &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;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;suggestedDeletionIds&quot;: [ # The suggested deletion IDs. If empty, then there are no suggested deletions of this content.
                  &quot;A String&quot;,
                ],
                &quot;content&quot;: [ # The content of the table of contents.
                  # Object with schema name: StructuralElement
                ],
              },
              &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;sectionStyle&quot;: { # The styling that applies to a section. # The style of the section after this section break.
                  &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;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;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;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;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;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;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;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;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;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;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;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;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;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;sectionType&quot;: &quot;A String&quot;, # Output only. The type of section.
                  &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;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;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;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;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;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;suggestedDeletionIds&quot;: [ # The suggested deletion IDs. If empty, then there are no suggested deletions of this content.
                  &quot;A String&quot;,
                ],
              },
            },
          ],
        },
      },
      &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;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 of the named range.
              &quot;namedRangeId&quot;: &quot;A String&quot;, # The ID of the named range.
            },
          ],
          &quot;name&quot;: &quot;A String&quot;, # The name that all the named ranges share.
        },
      },
      &quot;documentStyle&quot;: { # The style of the document. # Output only. The style of the document.
        &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;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;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;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;useEvenPageHeaderFooter&quot;: True or False, # Indicates whether to use the even page header / footer IDs for the even pages.
        &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;pageNumberStart&quot;: 42, # The page number from which to start counting the number of pages.
        &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;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;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;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;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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
              },
            },
          },
        },
        &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;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;pageSize&quot;: { # A width and height. # The size of a page in the document.
          &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;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;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;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;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;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;embeddedDrawingProperties&quot;: { # The properties of an embedded drawing. # The properties of an embedded drawing.
              },
              &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;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;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;spreadsheetId&quot;: &quot;A String&quot;, # The ID of the Google Sheets spreadsheet that contains the source chart.
                  &quot;chartId&quot;: 42, # The ID of the specific chart in the Google Sheets spreadsheet that is embedded.
                },
              },
              &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;size&quot;: { # A width and height. # The visible size of the image after cropping.
                &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;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;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;sourceUri&quot;: &quot;A String&quot;, # The source URI is the URI used to insert the image. The source URI can be empty.
                &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;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;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;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;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;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;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;description&quot;: &quot;A String&quot;, # The description of the embedded object. The `title` and `description` are both combined to display alt text.
              &quot;embeddedObjectBorder&quot;: { # A border around an EmbeddedObject. # The border of the embedded object.
                &quot;propertyState&quot;: &quot;A String&quot;, # The property state of the border property.
                &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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                      &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                      &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                    },
                  },
                },
                &quot;dashStyle&quot;: &quot;A String&quot;, # The dash style of the border.
                &quot;width&quot;: { # A magnitude in a single direction in the specified units. # The width of the border.
                  &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;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;layout&quot;: &quot;A String&quot;, # The layout of 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;suggestedPositionedObjectPropertiesChanges&quot;: { # The suggested changes to the positioned object properties, keyed by suggestion ID.
            &quot;a_key&quot;: { # A suggested change to PositionedObjectProperties.
              &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;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;embeddedDrawingProperties&quot;: { # The properties of an embedded drawing. # The properties of an embedded drawing.
                  },
                  &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;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;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;spreadsheetId&quot;: &quot;A String&quot;, # The ID of the Google Sheets spreadsheet that contains the source chart.
                      &quot;chartId&quot;: 42, # The ID of the specific chart in the Google Sheets spreadsheet that is embedded.
                    },
                  },
                  &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;size&quot;: { # A width and height. # The visible size of the image after cropping.
                    &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;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;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;sourceUri&quot;: &quot;A String&quot;, # The source URI is the URI used to insert the image. The source URI can be empty.
                    &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;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;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;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;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;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;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;description&quot;: &quot;A String&quot;, # The description of the embedded object. The `title` and `description` are both combined to display alt text.
                  &quot;embeddedObjectBorder&quot;: { # A border around an EmbeddedObject. # The border of the embedded object.
                    &quot;propertyState&quot;: &quot;A String&quot;, # The property state of the border property.
                    &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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                          &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                          &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                        },
                      },
                    },
                    &quot;dashStyle&quot;: &quot;A String&quot;, # The dash style of the border.
                    &quot;width&quot;: { # A magnitude in a single direction in the specified units. # The width of the border.
                      &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;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;layout&quot;: &quot;A String&quot;, # The layout of 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;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;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;leftOffsetSuggested&quot;: True or False, # Indicates if there was a suggested change to left_offset.
                  &quot;topOffsetSuggested&quot;: True or False, # Indicates if there was a suggested change to top_offset.
                },
                &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;marginLeftSuggested&quot;: True or False, # Indicates if there was a suggested change to margin_left.
                  &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;spreadsheetIdSuggested&quot;: True or False, # Indicates if there was a suggested change to spreadsheet_id.
                      &quot;chartIdSuggested&quot;: True or False, # Indicates if there was a suggested change to chart_id.
                    },
                  },
                  &quot;marginTopSuggested&quot;: True or False, # Indicates if there was a suggested change to margin_top.
                  &quot;titleSuggested&quot;: True or False, # Indicates if there was a suggested change to title.
                  &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;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;angleSuggested&quot;: True or False, # Indicates if there was a suggested change to angle.
                    &quot;contentUriSuggested&quot;: True or False, # Indicates if there was a suggested change to content_uri.
                    &quot;transparencySuggested&quot;: True or False, # Indicates if there was a suggested change to transparency.
                    &quot;sourceUriSuggested&quot;: True or False, # Indicates if there was a suggested change to source_uri.
                    &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;offsetLeftSuggested&quot;: True or False, # Indicates if there was a suggested change to offset_left.
                      &quot;offsetRightSuggested&quot;: True or False, # Indicates if there was a suggested change to offset_right.
                      &quot;angleSuggested&quot;: True or False, # Indicates if there was a suggested change to angle.
                      &quot;offsetTopSuggested&quot;: True or False, # Indicates if there was a suggested change to offset_top.
                      &quot;offsetBottomSuggested&quot;: True or False, # Indicates if there was a suggested change to offset_bottom.
                    },
                    &quot;contrastSuggested&quot;: True or False, # Indicates if there was a suggested change to contrast.
                    &quot;brightnessSuggested&quot;: True or False, # Indicates if there was a suggested change to brightness.
                  },
                  &quot;marginRightSuggested&quot;: True or False, # Indicates if there was a suggested change to margin_right.
                  &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;dashStyleSuggested&quot;: True or False, # Indicates if there was a suggested change to dash_style.
                    &quot;widthSuggested&quot;: True or False, # Indicates if there was a suggested change to width.
                    &quot;colorSuggested&quot;: True or False, # Indicates if there was a suggested change to color.
                    &quot;propertyStateSuggested&quot;: True or False, # Indicates if there was a suggested change to property_state.
                  },
                  &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;marginBottomSuggested&quot;: True or False, # Indicates if there was a suggested change to margin_bottom.
                },
              },
            },
          },
          &quot;suggestedInsertionId&quot;: &quot;A String&quot;, # The suggested insertion ID. If empty, then this is not a suggested insertion.
          &quot;objectId&quot;: &quot;A String&quot;, # The ID 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;,
          ],
        },
      },
    }</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;headers&quot;: { # Output only. The headers in the document, keyed by header ID.
        &quot;a_key&quot;: { # A document header.
          &quot;headerId&quot;: &quot;A String&quot;, # The ID of the 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;endIndex&quot;: 42, # The zero-based end index of this structural element, exclusive, in UTF-16 code units.
              &quot;startIndex&quot;: 42, # The zero-based start index of this structural element, in UTF-16 code units.
              &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;elements&quot;: [ # The content of the paragraph broken down into its component parts.
                  { # A ParagraphElement describes content within a Paragraph.
                    &quot;startIndex&quot;: 42, # The zero-based start index of this paragraph element, in UTF-16 code units.
                    &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;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;strikethrough&quot;: True or False, # Whether or not the text is struck through.
                        &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;bold&quot;: True or False, # Whether or not the text is rendered as bold.
                        &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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                              &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                              &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                            },
                          },
                        },
                        &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;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;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;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;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;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;bookmarkId&quot;: &quot;A String&quot;, # The ID of a bookmark in this document.
                        },
                        &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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                              &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                              &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                            },
                          },
                        },
                        &quot;smallCaps&quot;: True or False, # Whether or not the text is in small capital letters.
                        &quot;underline&quot;: True or False, # Whether or not the text is underlined.
                        &quot;italic&quot;: True or False, # Whether or not the text is italicized.
                      },
                      &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;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;strikethrough&quot;: True or False, # Whether or not the text is struck through.
                            &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;bold&quot;: True or False, # Whether or not the text is rendered as bold.
                            &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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                                  &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                                  &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                                },
                              },
                            },
                            &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;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;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;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;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;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;bookmarkId&quot;: &quot;A String&quot;, # The ID of a bookmark in this document.
                            },
                            &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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                                  &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                                  &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                                },
                              },
                            },
                            &quot;smallCaps&quot;: True or False, # Whether or not the text is in small capital letters.
                            &quot;underline&quot;: True or False, # Whether or not the text is underlined.
                            &quot;italic&quot;: True or False, # Whether or not the text is italicized.
                          },
                          &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;underlineSuggested&quot;: True or False, # Indicates if there was a suggested change to underline.
                            &quot;smallCapsSuggested&quot;: True or False, # Indicates if there was a suggested change to small_caps.
                            &quot;backgroundColorSuggested&quot;: True or False, # Indicates if there was a suggested change to background_color.
                            &quot;weightedFontFamilySuggested&quot;: True or False, # Indicates if there was a suggested change to weighted_font_family.
                            &quot;boldSuggested&quot;: True or False, # Indicates if there was a suggested change to bold.
                            &quot;fontSizeSuggested&quot;: True or False, # Indicates if there was a suggested change to font_size.
                            &quot;italicSuggested&quot;: True or False, # Indicates if there was a suggested change to italic.
                            &quot;baselineOffsetSuggested&quot;: True or False, # Indicates if there was a suggested change to baseline_offset.
                            &quot;linkSuggested&quot;: True or False, # Indicates if there was a suggested change to link.
                            &quot;foregroundColorSuggested&quot;: True or False, # Indicates if there was a suggested change to foreground_color.
                            &quot;strikethroughSuggested&quot;: True or False, # Indicates if there was a suggested change to strikethrough.
                          },
                        },
                      },
                    },
                    &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;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;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;strikethrough&quot;: True or False, # Whether or not the text is struck through.
                            &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;bold&quot;: True or False, # Whether or not the text is rendered as bold.
                            &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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                                  &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                                  &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                                },
                              },
                            },
                            &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;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;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;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;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;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;bookmarkId&quot;: &quot;A String&quot;, # The ID of a bookmark in this document.
                            },
                            &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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                                  &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                                  &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                                },
                              },
                            },
                            &quot;smallCaps&quot;: True or False, # Whether or not the text is in small capital letters.
                            &quot;underline&quot;: True or False, # Whether or not the text is underlined.
                            &quot;italic&quot;: True or False, # Whether or not the text is italicized.
                          },
                          &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;underlineSuggested&quot;: True or False, # Indicates if there was a suggested change to underline.
                            &quot;smallCapsSuggested&quot;: True or False, # Indicates if there was a suggested change to small_caps.
                            &quot;backgroundColorSuggested&quot;: True or False, # Indicates if there was a suggested change to background_color.
                            &quot;weightedFontFamilySuggested&quot;: True or False, # Indicates if there was a suggested change to weighted_font_family.
                            &quot;boldSuggested&quot;: True or False, # Indicates if there was a suggested change to bold.
                            &quot;fontSizeSuggested&quot;: True or False, # Indicates if there was a suggested change to font_size.
                            &quot;italicSuggested&quot;: True or False, # Indicates if there was a suggested change to italic.
                            &quot;baselineOffsetSuggested&quot;: True or False, # Indicates if there was a suggested change to baseline_offset.
                            &quot;linkSuggested&quot;: True or False, # Indicates if there was a suggested change to link.
                            &quot;foregroundColorSuggested&quot;: True or False, # Indicates if there was a suggested change to foreground_color.
                            &quot;strikethroughSuggested&quot;: True or False, # Indicates if there was a suggested change to strikethrough.
                          },
                        },
                      },
                      &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;strikethrough&quot;: True or False, # Whether or not the text is struck through.
                        &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;bold&quot;: True or False, # Whether or not the text is rendered as bold.
                        &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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                              &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                              &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                            },
                          },
                        },
                        &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;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;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;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;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;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;bookmarkId&quot;: &quot;A String&quot;, # The ID of a bookmark in this document.
                        },
                        &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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                              &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                              &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                            },
                          },
                        },
                        &quot;smallCaps&quot;: True or False, # Whether or not the text is in small capital letters.
                        &quot;underline&quot;: True or False, # Whether or not the text is underlined.
                        &quot;italic&quot;: True or False, # Whether or not the text is italicized.
                      },
                      &quot;suggestedDeletionIds&quot;: [ # The suggested deletion IDs. If empty, then there are no suggested deletions of this content.
                        &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;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;strikethrough&quot;: True or False, # Whether or not the text is struck through.
                            &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;bold&quot;: True or False, # Whether or not the text is rendered as bold.
                            &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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                                  &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                                  &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                                },
                              },
                            },
                            &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;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;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;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;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;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;bookmarkId&quot;: &quot;A String&quot;, # The ID of a bookmark in this document.
                            },
                            &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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                                  &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                                  &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                                },
                              },
                            },
                            &quot;smallCaps&quot;: True or False, # Whether or not the text is in small capital letters.
                            &quot;underline&quot;: True or False, # Whether or not the text is underlined.
                            &quot;italic&quot;: True or False, # Whether or not the text is italicized.
                          },
                          &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;underlineSuggested&quot;: True or False, # Indicates if there was a suggested change to underline.
                            &quot;smallCapsSuggested&quot;: True or False, # Indicates if there was a suggested change to small_caps.
                            &quot;backgroundColorSuggested&quot;: True or False, # Indicates if there was a suggested change to background_color.
                            &quot;weightedFontFamilySuggested&quot;: True or False, # Indicates if there was a suggested change to weighted_font_family.
                            &quot;boldSuggested&quot;: True or False, # Indicates if there was a suggested change to bold.
                            &quot;fontSizeSuggested&quot;: True or False, # Indicates if there was a suggested change to font_size.
                            &quot;italicSuggested&quot;: True or False, # Indicates if there was a suggested change to italic.
                            &quot;baselineOffsetSuggested&quot;: True or False, # Indicates if there was a suggested change to baseline_offset.
                            &quot;linkSuggested&quot;: True or False, # Indicates if there was a suggested change to link.
                            &quot;foregroundColorSuggested&quot;: True or False, # Indicates if there was a suggested change to foreground_color.
                            &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. # 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;strikethrough&quot;: True or False, # Whether or not the text is struck through.
                        &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;bold&quot;: True or False, # Whether or not the text is rendered as bold.
                        &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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                              &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                              &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                            },
                          },
                        },
                        &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;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;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;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;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;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;bookmarkId&quot;: &quot;A String&quot;, # The ID of a bookmark in this document.
                        },
                        &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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                              &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                              &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                            },
                          },
                        },
                        &quot;smallCaps&quot;: True or False, # Whether or not the text is in small capital letters.
                        &quot;underline&quot;: True or False, # Whether or not the text is underlined.
                        &quot;italic&quot;: True or False, # Whether or not the text is italicized.
                      },
                      &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 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;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;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;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;strikethrough&quot;: True or False, # Whether or not the text is struck through.
                            &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;bold&quot;: True or False, # Whether or not the text is rendered as bold.
                            &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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                                  &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                                  &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                                },
                              },
                            },
                            &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;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;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;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;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;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;bookmarkId&quot;: &quot;A String&quot;, # The ID of a bookmark in this document.
                            },
                            &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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                                  &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                                  &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                                },
                              },
                            },
                            &quot;smallCaps&quot;: True or False, # Whether or not the text is in small capital letters.
                            &quot;underline&quot;: True or False, # Whether or not the text is underlined.
                            &quot;italic&quot;: True or False, # Whether or not the text is italicized.
                          },
                          &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;underlineSuggested&quot;: True or False, # Indicates if there was a suggested change to underline.
                            &quot;smallCapsSuggested&quot;: True or False, # Indicates if there was a suggested change to small_caps.
                            &quot;backgroundColorSuggested&quot;: True or False, # Indicates if there was a suggested change to background_color.
                            &quot;weightedFontFamilySuggested&quot;: True or False, # Indicates if there was a suggested change to weighted_font_family.
                            &quot;boldSuggested&quot;: True or False, # Indicates if there was a suggested change to bold.
                            &quot;fontSizeSuggested&quot;: True or False, # Indicates if there was a suggested change to font_size.
                            &quot;italicSuggested&quot;: True or False, # Indicates if there was a suggested change to italic.
                            &quot;baselineOffsetSuggested&quot;: True or False, # Indicates if there was a suggested change to baseline_offset.
                            &quot;linkSuggested&quot;: True or False, # Indicates if there was a suggested change to link.
                            &quot;foregroundColorSuggested&quot;: True or False, # Indicates if there was a suggested change to foreground_color.
                            &quot;strikethroughSuggested&quot;: True or False, # Indicates if there was a suggested change to strikethrough.
                          },
                        },
                      },
                      &quot;footnoteNumber&quot;: &quot;A String&quot;, # The rendered number of this footnote.
                      &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;footnoteId&quot;: &quot;A String&quot;, # The ID of the footnote that contains the content of this footnote reference.
                      &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;strikethrough&quot;: True or False, # Whether or not the text is struck through.
                        &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;bold&quot;: True or False, # Whether or not the text is rendered as bold.
                        &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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                              &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                              &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                            },
                          },
                        },
                        &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;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;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;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;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;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;bookmarkId&quot;: &quot;A String&quot;, # The ID of a bookmark in this document.
                        },
                        &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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                              &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                              &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                            },
                          },
                        },
                        &quot;smallCaps&quot;: True or False, # Whether or not the text is in small capital letters.
                        &quot;underline&quot;: True or False, # Whether or not the text is underlined.
                        &quot;italic&quot;: True or False, # Whether or not the text is italicized.
                      },
                      &quot;suggestedDeletionIds&quot;: [ # The suggested deletion IDs. If empty, then there are no suggested deletions of this content.
                        &quot;A String&quot;,
                      ],
                    },
                    &quot;inlineObjectElement&quot;: { # A ParagraphElement that contains an InlineObject. # An inline object paragraph element.
                      &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;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;strikethrough&quot;: True or False, # Whether or not the text is struck through.
                            &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;bold&quot;: True or False, # Whether or not the text is rendered as bold.
                            &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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                                  &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                                  &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                                },
                              },
                            },
                            &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;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;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;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;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;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;bookmarkId&quot;: &quot;A String&quot;, # The ID of a bookmark in this document.
                            },
                            &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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                                  &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                                  &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                                },
                              },
                            },
                            &quot;smallCaps&quot;: True or False, # Whether or not the text is in small capital letters.
                            &quot;underline&quot;: True or False, # Whether or not the text is underlined.
                            &quot;italic&quot;: True or False, # Whether or not the text is italicized.
                          },
                          &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;underlineSuggested&quot;: True or False, # Indicates if there was a suggested change to underline.
                            &quot;smallCapsSuggested&quot;: True or False, # Indicates if there was a suggested change to small_caps.
                            &quot;backgroundColorSuggested&quot;: True or False, # Indicates if there was a suggested change to background_color.
                            &quot;weightedFontFamilySuggested&quot;: True or False, # Indicates if there was a suggested change to weighted_font_family.
                            &quot;boldSuggested&quot;: True or False, # Indicates if there was a suggested change to bold.
                            &quot;fontSizeSuggested&quot;: True or False, # Indicates if there was a suggested change to font_size.
                            &quot;italicSuggested&quot;: True or False, # Indicates if there was a suggested change to italic.
                            &quot;baselineOffsetSuggested&quot;: True or False, # Indicates if there was a suggested change to baseline_offset.
                            &quot;linkSuggested&quot;: True or False, # Indicates if there was a suggested change to link.
                            &quot;foregroundColorSuggested&quot;: True or False, # Indicates if there was a suggested change to foreground_color.
                            &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. # 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;strikethrough&quot;: True or False, # Whether or not the text is struck through.
                        &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;bold&quot;: True or False, # Whether or not the text is rendered as bold.
                        &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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                              &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                              &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                            },
                          },
                        },
                        &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;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;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;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;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;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;bookmarkId&quot;: &quot;A String&quot;, # The ID of a bookmark in this document.
                        },
                        &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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                              &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                              &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                            },
                          },
                        },
                        &quot;smallCaps&quot;: True or False, # Whether or not the text is in small capital letters.
                        &quot;underline&quot;: True or False, # Whether or not the text is underlined.
                        &quot;italic&quot;: True or False, # Whether or not the text is italicized.
                      },
                      &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;suggestedDeletionIds&quot;: [ # The suggested deletion IDs. If empty, then there are no suggested deletions of this content.
                        &quot;A String&quot;,
                      ],
                      &quot;inlineObjectId&quot;: &quot;A String&quot;, # The ID of the InlineObject this element contains.
                    },
                    &quot;endIndex&quot;: 42, # The zero-base end index of this paragraph element, exclusive, in UTF-16 code units.
                    &quot;textRun&quot;: { # A ParagraphElement that represents a run of text that all has the same styling. # A text run paragraph element.
                      &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;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;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;strikethrough&quot;: True or False, # Whether or not the text is struck through.
                            &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;bold&quot;: True or False, # Whether or not the text is rendered as bold.
                            &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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                                  &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                                  &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                                },
                              },
                            },
                            &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;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;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;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;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;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;bookmarkId&quot;: &quot;A String&quot;, # The ID of a bookmark in this document.
                            },
                            &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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                                  &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                                  &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                                },
                              },
                            },
                            &quot;smallCaps&quot;: True or False, # Whether or not the text is in small capital letters.
                            &quot;underline&quot;: True or False, # Whether or not the text is underlined.
                            &quot;italic&quot;: True or False, # Whether or not the text is italicized.
                          },
                          &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;underlineSuggested&quot;: True or False, # Indicates if there was a suggested change to underline.
                            &quot;smallCapsSuggested&quot;: True or False, # Indicates if there was a suggested change to small_caps.
                            &quot;backgroundColorSuggested&quot;: True or False, # Indicates if there was a suggested change to background_color.
                            &quot;weightedFontFamilySuggested&quot;: True or False, # Indicates if there was a suggested change to weighted_font_family.
                            &quot;boldSuggested&quot;: True or False, # Indicates if there was a suggested change to bold.
                            &quot;fontSizeSuggested&quot;: True or False, # Indicates if there was a suggested change to font_size.
                            &quot;italicSuggested&quot;: True or False, # Indicates if there was a suggested change to italic.
                            &quot;baselineOffsetSuggested&quot;: True or False, # Indicates if there was a suggested change to baseline_offset.
                            &quot;linkSuggested&quot;: True or False, # Indicates if there was a suggested change to link.
                            &quot;foregroundColorSuggested&quot;: True or False, # Indicates if there was a suggested change to foreground_color.
                            &quot;strikethroughSuggested&quot;: True or False, # Indicates if there was a suggested change to strikethrough.
                          },
                        },
                      },
                      &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 run.
                        &quot;strikethrough&quot;: True or False, # Whether or not the text is struck through.
                        &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;bold&quot;: True or False, # Whether or not the text is rendered as bold.
                        &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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                              &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                              &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                            },
                          },
                        },
                        &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;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;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;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;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;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;bookmarkId&quot;: &quot;A String&quot;, # The ID of a bookmark in this document.
                        },
                        &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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                              &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                              &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                            },
                          },
                        },
                        &quot;smallCaps&quot;: True or False, # Whether or not the text is in small capital letters.
                        &quot;underline&quot;: True or False, # Whether or not the text is underlined.
                        &quot;italic&quot;: True or False, # Whether or not the text is italicized.
                      },
                      &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;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;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;type&quot;: &quot;A String&quot;, # The type of this auto text.
                      &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;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;strikethrough&quot;: True or False, # Whether or not the text is struck through.
                        &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;bold&quot;: True or False, # Whether or not the text is rendered as bold.
                        &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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                              &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                              &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                            },
                          },
                        },
                        &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;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;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;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;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;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;bookmarkId&quot;: &quot;A String&quot;, # The ID of a bookmark in this document.
                        },
                        &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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                              &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                              &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                            },
                          },
                        },
                        &quot;smallCaps&quot;: True or False, # Whether or not the text is in small capital letters.
                        &quot;underline&quot;: True or False, # Whether or not the text is underlined.
                        &quot;italic&quot;: True or False, # Whether or not the text is italicized.
                      },
                      &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;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;strikethrough&quot;: True or False, # Whether or not the text is struck through.
                            &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;bold&quot;: True or False, # Whether or not the text is rendered as bold.
                            &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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                                  &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                                  &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                                },
                              },
                            },
                            &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;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;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;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;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;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;bookmarkId&quot;: &quot;A String&quot;, # The ID of a bookmark in this document.
                            },
                            &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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                                  &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                                  &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                                },
                              },
                            },
                            &quot;smallCaps&quot;: True or False, # Whether or not the text is in small capital letters.
                            &quot;underline&quot;: True or False, # Whether or not the text is underlined.
                            &quot;italic&quot;: True or False, # Whether or not the text is italicized.
                          },
                          &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;underlineSuggested&quot;: True or False, # Indicates if there was a suggested change to underline.
                            &quot;smallCapsSuggested&quot;: True or False, # Indicates if there was a suggested change to small_caps.
                            &quot;backgroundColorSuggested&quot;: True or False, # Indicates if there was a suggested change to background_color.
                            &quot;weightedFontFamilySuggested&quot;: True or False, # Indicates if there was a suggested change to weighted_font_family.
                            &quot;boldSuggested&quot;: True or False, # Indicates if there was a suggested change to bold.
                            &quot;fontSizeSuggested&quot;: True or False, # Indicates if there was a suggested change to font_size.
                            &quot;italicSuggested&quot;: True or False, # Indicates if there was a suggested change to italic.
                            &quot;baselineOffsetSuggested&quot;: True or False, # Indicates if there was a suggested change to baseline_offset.
                            &quot;linkSuggested&quot;: True or False, # Indicates if there was a suggested change to link.
                            &quot;foregroundColorSuggested&quot;: True or False, # Indicates if there was a suggested change to foreground_color.
                            &quot;strikethroughSuggested&quot;: True or False, # Indicates if there was a suggested change to strikethrough.
                          },
                        },
                      },
                    },
                  },
                ],
                &quot;suggestedBulletChanges&quot;: { # The suggested changes to this paragraph&#x27;s bullet.
                  &quot;a_key&quot;: { # A suggested change to a Bullet.
                    &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;listId&quot;: &quot;A String&quot;, # The ID of the list this paragraph belongs to.
                      &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;strikethrough&quot;: True or False, # Whether or not the text is struck through.
                        &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;bold&quot;: True or False, # Whether or not the text is rendered as bold.
                        &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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                              &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                              &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                            },
                          },
                        },
                        &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;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;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;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;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;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;bookmarkId&quot;: &quot;A String&quot;, # The ID of a bookmark in this document.
                        },
                        &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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                              &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                              &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                            },
                          },
                        },
                        &quot;smallCaps&quot;: True or False, # Whether or not the text is in small capital letters.
                        &quot;underline&quot;: True or False, # Whether or not the text is underlined.
                        &quot;italic&quot;: True or False, # Whether or not the text is italicized.
                      },
                      &quot;nestingLevel&quot;: 42, # The nesting level of this paragraph in the list.
                    },
                    &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;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;underlineSuggested&quot;: True or False, # Indicates if there was a suggested change to underline.
                        &quot;smallCapsSuggested&quot;: True or False, # Indicates if there was a suggested change to small_caps.
                        &quot;backgroundColorSuggested&quot;: True or False, # Indicates if there was a suggested change to background_color.
                        &quot;weightedFontFamilySuggested&quot;: True or False, # Indicates if there was a suggested change to weighted_font_family.
                        &quot;boldSuggested&quot;: True or False, # Indicates if there was a suggested change to bold.
                        &quot;fontSizeSuggested&quot;: True or False, # Indicates if there was a suggested change to font_size.
                        &quot;italicSuggested&quot;: True or False, # Indicates if there was a suggested change to italic.
                        &quot;baselineOffsetSuggested&quot;: True or False, # Indicates if there was a suggested change to baseline_offset.
                        &quot;linkSuggested&quot;: True or False, # Indicates if there was a suggested change to link.
                        &quot;foregroundColorSuggested&quot;: True or False, # Indicates if there was a suggested change to foreground_color.
                        &quot;strikethroughSuggested&quot;: True or False, # Indicates if there was a suggested change to strikethrough.
                      },
                      &quot;nestingLevelSuggested&quot;: True or False, # Indicates if there was a suggested change to the nesting_level.
                      &quot;listIdSuggested&quot;: True or False, # Indicates if there was a suggested change to the list_id.
                    },
                  },
                },
                &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;alignment&quot;: &quot;A String&quot;, # The text alignment for this paragraph.
                  &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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                          &quot;green&quot;: 3.14, # The green component of the color, 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;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;spacingMode&quot;: &quot;A String&quot;, # The spacing mode for the paragraph.
                  &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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                          &quot;green&quot;: 3.14, # The green component of the color, 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;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;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;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;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;avoidWidowAndOrphan&quot;: True or False, # Whether to avoid widows and orphans for the paragraph. 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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                          &quot;green&quot;: 3.14, # The green component of the color, 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;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;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;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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                          &quot;green&quot;: 3.14, # The green component of the color, 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;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;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;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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                          &quot;green&quot;: 3.14, # The green component of the color, 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;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;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;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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                          &quot;green&quot;: 3.14, # The green component of the color, 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;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;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;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;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;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;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;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;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;spaceAboveSuggested&quot;: True or False, # Indicates if there was a suggested change to space_above.
                      &quot;directionSuggested&quot;: True or False, # Indicates if there was a suggested change to direction.
                      &quot;spacingModeSuggested&quot;: True or False, # Indicates if there was a suggested change to spacing_mode.
                      &quot;indentFirstLineSuggested&quot;: True or False, # Indicates if there was a suggested change to indent_first_line.
                      &quot;lineSpacingSuggested&quot;: True or False, # Indicates if there was a suggested change to line_spacing.
                      &quot;avoidWidowAndOrphanSuggested&quot;: True or False, # Indicates if there was a suggested change to avoid_widow_and_orphan.
                      &quot;borderBetweenSuggested&quot;: True or False, # Indicates if there was a suggested change to border_between.
                      &quot;keepLinesTogetherSuggested&quot;: True or False, # Indicates if there was a suggested change to keep_lines_together.
                      &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;borderTopSuggested&quot;: True or False, # Indicates if there was a suggested change to border_top.
                      &quot;indentEndSuggested&quot;: True or False, # Indicates if there was a suggested change to indent_end.
                      &quot;keepWithNextSuggested&quot;: True or False, # Indicates if there was a suggested change to keep_with_next.
                      &quot;indentStartSuggested&quot;: True or False, # Indicates if there was a suggested change to indent_start.
                      &quot;borderRightSuggested&quot;: True or False, # Indicates if there was a suggested change to border_right.
                      &quot;spaceBelowSuggested&quot;: True or False, # Indicates if there was a suggested change to space_below.
                      &quot;headingIdSuggested&quot;: True or False, # Indicates if there was a suggested change to heading_id.
                      &quot;borderLeftSuggested&quot;: True or False, # Indicates if there was a suggested change to border_left.
                      &quot;namedStyleTypeSuggested&quot;: True or False, # Indicates if there was a suggested change to named_style_type.
                    },
                    &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;alignment&quot;: &quot;A String&quot;, # The text alignment for this paragraph.
                      &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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                              &quot;green&quot;: 3.14, # The green component of the color, 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;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;spacingMode&quot;: &quot;A String&quot;, # The spacing mode for the paragraph.
                      &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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                              &quot;green&quot;: 3.14, # The green component of the color, 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;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;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;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;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;avoidWidowAndOrphan&quot;: True or False, # Whether to avoid widows and orphans for the paragraph. 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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                              &quot;green&quot;: 3.14, # The green component of the color, 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;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;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;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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                              &quot;green&quot;: 3.14, # The green component of the color, 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;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;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;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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                              &quot;green&quot;: 3.14, # The green component of the color, 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;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;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;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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                              &quot;green&quot;: 3.14, # The green component of the color, 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;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;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;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;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;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;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;listId&quot;: &quot;A String&quot;, # The ID of the list this paragraph belongs to.
                  &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;strikethrough&quot;: True or False, # Whether or not the text is struck through.
                    &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;bold&quot;: True or False, # Whether or not the text is rendered as bold.
                    &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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                          &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                          &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                        },
                      },
                    },
                    &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;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;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;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;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;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;bookmarkId&quot;: &quot;A String&quot;, # The ID of a bookmark in this document.
                    },
                    &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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                          &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                          &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                        },
                      },
                    },
                    &quot;smallCaps&quot;: True or False, # Whether or not the text is in small capital letters.
                    &quot;underline&quot;: True or False, # Whether or not the text is underlined.
                    &quot;italic&quot;: True or False, # Whether or not the text is italicized.
                  },
                  &quot;nestingLevel&quot;: 42, # The nesting level of this paragraph in the list.
                },
                &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;positionedObjectIds&quot;: [ # The IDs of the positioned objects tethered to this paragraph.
                  &quot;A String&quot;,
                ],
              },
              &quot;table&quot;: { # A StructuralElement representing a table. # A table type of structural element.
                &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;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;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;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 row, 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;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;suggestedDeletionIds&quot;: [ # The suggested deletion IDs. If empty, then there are no suggested deletions of this content.
                          &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;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;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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                                      &quot;green&quot;: 3.14, # The green component of the color, 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;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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                                    &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                                    &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                                  },
                                },
                              },
                              &quot;rowSpan&quot;: 42, # The row span of the cell. This property is read-only.
                              &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;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;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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                                      &quot;green&quot;: 3.14, # The green component of the color, 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;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;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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                                      &quot;green&quot;: 3.14, # The green component of the color, 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;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;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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                                      &quot;green&quot;: 3.14, # The green component of the color, 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;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;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;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;columnSpan&quot;: 42, # The column 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;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;borderLeftSuggested&quot;: True or False, # Indicates if there was a suggested change to border_left.
                              &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;paddingTopSuggested&quot;: True or False, # Indicates if there was a suggested change to padding_top.
                              &quot;paddingRightSuggested&quot;: True or False, # Indicates if there was a suggested change to padding_right.
                              &quot;rowSpanSuggested&quot;: True or False, # Indicates if there was a suggested change to row_span.
                              &quot;borderBottomSuggested&quot;: True or False, # Indicates if there was a suggested change to border_bottom.
                              &quot;backgroundColorSuggested&quot;: True or False, # Indicates if there was a suggested change to background_color.
                              &quot;columnSpanSuggested&quot;: True or False, # Indicates if there was a suggested change to column_span.
                              &quot;borderTopSuggested&quot;: True or False, # Indicates if there was a suggested change to border_top.
                              &quot;paddingBottomSuggested&quot;: True or False, # Indicates if there was a suggested change to padding_bottom.
                              &quot;paddingLeftSuggested&quot;: True or False, # Indicates if there was a suggested change to padding_left.
                            },
                          },
                        },
                        &quot;content&quot;: [ # The content of the cell.
                          # Object with schema name: StructuralElement
                        ],
                        &quot;endIndex&quot;: 42, # The zero-based end index of this cell, exclusive, 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;startIndex&quot;: 42, # The zero-based start index of this cell, in UTF-16 code units.
                        &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;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;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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                                  &quot;green&quot;: 3.14, # The green component of the color, 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;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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                                &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                                &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                              },
                            },
                          },
                          &quot;rowSpan&quot;: 42, # The row span of the cell. This property is read-only.
                          &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;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;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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                                  &quot;green&quot;: 3.14, # The green component of the color, 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;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;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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                                  &quot;green&quot;: 3.14, # The green component of the color, 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;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;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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                                  &quot;green&quot;: 3.14, # The green component of the color, 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;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;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;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;columnSpan&quot;: 42, # The column 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;suggestedTableRowStyleChanges&quot;: { # The suggested style changes to this row, keyed by suggestion ID.
                      &quot;a_key&quot;: { # A suggested change to a TableRowStyle.
                        &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;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;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;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;widthType&quot;: &quot;A String&quot;, # The width type of the column.
                    },
                  ],
                },
                &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;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;suggestedDeletionIds&quot;: [ # The suggested deletion IDs. If empty, then there are no suggested deletions of this content.
                  &quot;A String&quot;,
                ],
                &quot;content&quot;: [ # The content of the table of contents.
                  # Object with schema name: StructuralElement
                ],
              },
              &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;sectionStyle&quot;: { # The styling that applies to a section. # The style of the section after this section break.
                  &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;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;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;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;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;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;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;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;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;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;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;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;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;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;sectionType&quot;: &quot;A String&quot;, # Output only. The type of section.
                  &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;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;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;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;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;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;suggestedDeletionIds&quot;: [ # The suggested deletion IDs. If empty, then there are no suggested deletions of this content.
                  &quot;A String&quot;,
                ],
              },
            },
          ],
        },
      },
      &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;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;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;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;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;spaceAboveSuggested&quot;: True or False, # Indicates if there was a suggested change to space_above.
                  &quot;directionSuggested&quot;: True or False, # Indicates if there was a suggested change to direction.
                  &quot;spacingModeSuggested&quot;: True or False, # Indicates if there was a suggested change to spacing_mode.
                  &quot;indentFirstLineSuggested&quot;: True or False, # Indicates if there was a suggested change to indent_first_line.
                  &quot;lineSpacingSuggested&quot;: True or False, # Indicates if there was a suggested change to line_spacing.
                  &quot;avoidWidowAndOrphanSuggested&quot;: True or False, # Indicates if there was a suggested change to avoid_widow_and_orphan.
                  &quot;borderBetweenSuggested&quot;: True or False, # Indicates if there was a suggested change to border_between.
                  &quot;keepLinesTogetherSuggested&quot;: True or False, # Indicates if there was a suggested change to keep_lines_together.
                  &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;borderTopSuggested&quot;: True or False, # Indicates if there was a suggested change to border_top.
                  &quot;indentEndSuggested&quot;: True or False, # Indicates if there was a suggested change to indent_end.
                  &quot;keepWithNextSuggested&quot;: True or False, # Indicates if there was a suggested change to keep_with_next.
                  &quot;indentStartSuggested&quot;: True or False, # Indicates if there was a suggested change to indent_start.
                  &quot;borderRightSuggested&quot;: True or False, # Indicates if there was a suggested change to border_right.
                  &quot;spaceBelowSuggested&quot;: True or False, # Indicates if there was a suggested change to space_below.
                  &quot;headingIdSuggested&quot;: True or False, # Indicates if there was a suggested change to heading_id.
                  &quot;borderLeftSuggested&quot;: True or False, # Indicates if there was a suggested change to border_left.
                  &quot;namedStyleTypeSuggested&quot;: True or False, # Indicates if there was a suggested change to named_style_type.
                },
                &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;underlineSuggested&quot;: True or False, # Indicates if there was a suggested change to underline.
                  &quot;smallCapsSuggested&quot;: True or False, # Indicates if there was a suggested change to small_caps.
                  &quot;backgroundColorSuggested&quot;: True or False, # Indicates if there was a suggested change to background_color.
                  &quot;weightedFontFamilySuggested&quot;: True or False, # Indicates if there was a suggested change to weighted_font_family.
                  &quot;boldSuggested&quot;: True or False, # Indicates if there was a suggested change to bold.
                  &quot;fontSizeSuggested&quot;: True or False, # Indicates if there was a suggested change to font_size.
                  &quot;italicSuggested&quot;: True or False, # Indicates if there was a suggested change to italic.
                  &quot;baselineOffsetSuggested&quot;: True or False, # Indicates if there was a suggested change to baseline_offset.
                  &quot;linkSuggested&quot;: True or False, # Indicates if there was a suggested change to link.
                  &quot;foregroundColorSuggested&quot;: True or False, # Indicates if there was a suggested change to foreground_color.
                  &quot;strikethroughSuggested&quot;: True or False, # Indicates if there was a suggested change to strikethrough.
                },
              },
            ],
          },
          &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;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;alignment&quot;: &quot;A String&quot;, # The text alignment for this paragraph.
                  &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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                          &quot;green&quot;: 3.14, # The green component of the color, 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;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;spacingMode&quot;: &quot;A String&quot;, # The spacing mode for the paragraph.
                  &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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                          &quot;green&quot;: 3.14, # The green component of the color, 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;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;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;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;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;avoidWidowAndOrphan&quot;: True or False, # Whether to avoid widows and orphans for the paragraph. 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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                          &quot;green&quot;: 3.14, # The green component of the color, 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;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;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;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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                          &quot;green&quot;: 3.14, # The green component of the color, 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;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;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;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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                          &quot;green&quot;: 3.14, # The green component of the color, 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;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;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;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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                          &quot;green&quot;: 3.14, # The green component of the color, 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;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;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;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;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;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;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;strikethrough&quot;: True or False, # Whether or not the text is struck through.
                  &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;bold&quot;: True or False, # Whether or not the text is rendered as bold.
                  &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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                        &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                        &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                      },
                    },
                  },
                  &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;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;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;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;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;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;bookmarkId&quot;: &quot;A String&quot;, # The ID of a bookmark in this document.
                  },
                  &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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                        &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                        &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                      },
                    },
                  },
                  &quot;smallCaps&quot;: True or False, # Whether or not the text is in small capital letters.
                  &quot;underline&quot;: True or False, # Whether or not the text is underlined.
                  &quot;italic&quot;: True or False, # Whether or not the text is italicized.
                },
              },
            ],
          },
        },
      },
      &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;marginLeftSuggested&quot;: True or False, # Indicates if there was a suggested change to margin_left.
            &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;pageNumberStartSuggested&quot;: True or False, # Indicates if there was a suggested change to page_number_start.
            &quot;marginFooterSuggested&quot;: True or False, # Indicates if there was a suggested change to margin_footer.
            &quot;defaultFooterIdSuggested&quot;: True or False, # Indicates if there was a suggested change to default_footer_id.
            &quot;firstPageHeaderIdSuggested&quot;: True or False, # Indicates if there was a suggested change to first_page_header_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;evenPageHeaderIdSuggested&quot;: True or False, # Indicates if there was a suggested change to even_page_header_id.
            &quot;evenPageFooterIdSuggested&quot;: True or False, # Indicates if there was a suggested change to even_page_footer_id.
            &quot;defaultHeaderIdSuggested&quot;: True or False, # Indicates if there was a suggested change to default_header_id.
            &quot;marginHeaderSuggested&quot;: True or False, # Indicates if there was a suggested change to margin_header.
            &quot;useFirstPageHeaderFooterSuggested&quot;: True or False, # Indicates if there was a suggested change to use_first_page_header_footer.
            &quot;useEvenPageHeaderFooterSuggested&quot;: True or False, # Indicates if there was a suggested change to use_even_page_header_footer.
            &quot;firstPageFooterIdSuggested&quot;: True or False, # Indicates if there was a suggested change to first_page_footer_id.
            &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;marginTopSuggested&quot;: True or False, # Indicates if there was a suggested change to margin_top.
          },
          &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;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;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;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;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;useEvenPageHeaderFooter&quot;: True or False, # Indicates whether to use the even page header / footer IDs for the even pages.
            &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;pageNumberStart&quot;: 42, # The page number from which to start counting the number of pages.
            &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;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;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;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;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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                    &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                    &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                  },
                },
              },
            },
            &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;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;pageSize&quot;: { # A width and height. # The size of a page in the document.
              &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;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;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;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;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;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;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;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;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;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;strikethrough&quot;: True or False, # Whether or not the text is struck through.
                  &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;bold&quot;: True or False, # Whether or not the text is rendered as bold.
                  &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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                        &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                        &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                      },
                    },
                  },
                  &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;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;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;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;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;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;bookmarkId&quot;: &quot;A String&quot;, # The ID of a bookmark in this document.
                  },
                  &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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                        &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                        &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                      },
                    },
                  },
                  &quot;smallCaps&quot;: True or False, # Whether or not the text is in small capital letters.
                  &quot;underline&quot;: True or False, # Whether or not the text is underlined.
                  &quot;italic&quot;: True or False, # Whether or not the text is italicized.
                },
                &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;bulletAlignment&quot;: &quot;A String&quot;, # The alignment of the bullet within the space allotted for rendering the bullet.
                &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;suggestedDeletionIds&quot;: [ # The suggested deletion IDs. If empty, then there are no suggested deletions of this list.
            &quot;A String&quot;,
          ],
          &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;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;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;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;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;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;strikethrough&quot;: True or False, # Whether or not the text is struck through.
                      &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;bold&quot;: True or False, # Whether or not the text is rendered as bold.
                      &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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                            &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                            &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                          },
                        },
                      },
                      &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;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;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;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;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;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;bookmarkId&quot;: &quot;A String&quot;, # The ID of a bookmark in this document.
                      },
                      &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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                            &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                            &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                          },
                        },
                      },
                      &quot;smallCaps&quot;: True or False, # Whether or not the text is in small capital letters.
                      &quot;underline&quot;: True or False, # Whether or not the text is underlined.
                      &quot;italic&quot;: True or False, # Whether or not the text is italicized.
                    },
                    &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;bulletAlignment&quot;: &quot;A String&quot;, # The alignment of the bullet within the space allotted for rendering the bullet.
                    &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;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;underlineSuggested&quot;: True or False, # Indicates if there was a suggested change to underline.
                      &quot;smallCapsSuggested&quot;: True or False, # Indicates if there was a suggested change to small_caps.
                      &quot;backgroundColorSuggested&quot;: True or False, # Indicates if there was a suggested change to background_color.
                      &quot;weightedFontFamilySuggested&quot;: True or False, # Indicates if there was a suggested change to weighted_font_family.
                      &quot;boldSuggested&quot;: True or False, # Indicates if there was a suggested change to bold.
                      &quot;fontSizeSuggested&quot;: True or False, # Indicates if there was a suggested change to font_size.
                      &quot;italicSuggested&quot;: True or False, # Indicates if there was a suggested change to italic.
                      &quot;baselineOffsetSuggested&quot;: True or False, # Indicates if there was a suggested change to baseline_offset.
                      &quot;linkSuggested&quot;: True or False, # Indicates if there was a suggested change to link.
                      &quot;foregroundColorSuggested&quot;: True or False, # Indicates if there was a suggested change to foreground_color.
                      &quot;strikethroughSuggested&quot;: True or False, # Indicates if there was a suggested change to strikethrough.
                    },
                    &quot;startNumberSuggested&quot;: True or False, # Indicates if there was a suggested change to start_number.
                    &quot;glyphTypeSuggested&quot;: True or False, # Indicates if there was a suggested change to glyph_type.
                    &quot;glyphFormatSuggested&quot;: True or False, # Indicates if there was a suggested change to glyph_format.
                    &quot;indentFirstLineSuggested&quot;: True or False, # Indicates if there was a suggested change to indent_first_line.
                    &quot;glyphSymbolSuggested&quot;: True or False, # Indicates if there was a suggested change to glyph_symbol.
                    &quot;bulletAlignmentSuggested&quot;: True or False, # Indicates if there was a suggested change to bullet_alignment.
                    &quot;indentStartSuggested&quot;: True or False, # Indicates if there was a suggested change to indent_start.
                  },
                ],
              },
            },
          },
          &quot;suggestedInsertionId&quot;: &quot;A String&quot;, # The suggested insertion ID. If empty, then this is not a suggested insertion.
        },
      },
      &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;endIndex&quot;: 42, # The zero-based end index of this structural element, exclusive, in UTF-16 code units.
            &quot;startIndex&quot;: 42, # The zero-based start index of this structural element, in UTF-16 code units.
            &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;elements&quot;: [ # The content of the paragraph broken down into its component parts.
                { # A ParagraphElement describes content within a Paragraph.
                  &quot;startIndex&quot;: 42, # The zero-based start index of this paragraph element, in UTF-16 code units.
                  &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;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;strikethrough&quot;: True or False, # Whether or not the text is struck through.
                      &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;bold&quot;: True or False, # Whether or not the text is rendered as bold.
                      &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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                            &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                            &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                          },
                        },
                      },
                      &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;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;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;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;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;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;bookmarkId&quot;: &quot;A String&quot;, # The ID of a bookmark in this document.
                      },
                      &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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                            &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                            &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                          },
                        },
                      },
                      &quot;smallCaps&quot;: True or False, # Whether or not the text is in small capital letters.
                      &quot;underline&quot;: True or False, # Whether or not the text is underlined.
                      &quot;italic&quot;: True or False, # Whether or not the text is italicized.
                    },
                    &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;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;strikethrough&quot;: True or False, # Whether or not the text is struck through.
                          &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;bold&quot;: True or False, # Whether or not the text is rendered as bold.
                          &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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                                &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                                &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                              },
                            },
                          },
                          &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;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;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;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;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;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;bookmarkId&quot;: &quot;A String&quot;, # The ID of a bookmark in this document.
                          },
                          &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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                                &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                                &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                              },
                            },
                          },
                          &quot;smallCaps&quot;: True or False, # Whether or not the text is in small capital letters.
                          &quot;underline&quot;: True or False, # Whether or not the text is underlined.
                          &quot;italic&quot;: True or False, # Whether or not the text is italicized.
                        },
                        &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;underlineSuggested&quot;: True or False, # Indicates if there was a suggested change to underline.
                          &quot;smallCapsSuggested&quot;: True or False, # Indicates if there was a suggested change to small_caps.
                          &quot;backgroundColorSuggested&quot;: True or False, # Indicates if there was a suggested change to background_color.
                          &quot;weightedFontFamilySuggested&quot;: True or False, # Indicates if there was a suggested change to weighted_font_family.
                          &quot;boldSuggested&quot;: True or False, # Indicates if there was a suggested change to bold.
                          &quot;fontSizeSuggested&quot;: True or False, # Indicates if there was a suggested change to font_size.
                          &quot;italicSuggested&quot;: True or False, # Indicates if there was a suggested change to italic.
                          &quot;baselineOffsetSuggested&quot;: True or False, # Indicates if there was a suggested change to baseline_offset.
                          &quot;linkSuggested&quot;: True or False, # Indicates if there was a suggested change to link.
                          &quot;foregroundColorSuggested&quot;: True or False, # Indicates if there was a suggested change to foreground_color.
                          &quot;strikethroughSuggested&quot;: True or False, # Indicates if there was a suggested change to strikethrough.
                        },
                      },
                    },
                  },
                  &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;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;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;strikethrough&quot;: True or False, # Whether or not the text is struck through.
                          &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;bold&quot;: True or False, # Whether or not the text is rendered as bold.
                          &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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                                &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                                &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                              },
                            },
                          },
                          &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;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;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;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;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;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;bookmarkId&quot;: &quot;A String&quot;, # The ID of a bookmark in this document.
                          },
                          &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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                                &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                                &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                              },
                            },
                          },
                          &quot;smallCaps&quot;: True or False, # Whether or not the text is in small capital letters.
                          &quot;underline&quot;: True or False, # Whether or not the text is underlined.
                          &quot;italic&quot;: True or False, # Whether or not the text is italicized.
                        },
                        &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;underlineSuggested&quot;: True or False, # Indicates if there was a suggested change to underline.
                          &quot;smallCapsSuggested&quot;: True or False, # Indicates if there was a suggested change to small_caps.
                          &quot;backgroundColorSuggested&quot;: True or False, # Indicates if there was a suggested change to background_color.
                          &quot;weightedFontFamilySuggested&quot;: True or False, # Indicates if there was a suggested change to weighted_font_family.
                          &quot;boldSuggested&quot;: True or False, # Indicates if there was a suggested change to bold.
                          &quot;fontSizeSuggested&quot;: True or False, # Indicates if there was a suggested change to font_size.
                          &quot;italicSuggested&quot;: True or False, # Indicates if there was a suggested change to italic.
                          &quot;baselineOffsetSuggested&quot;: True or False, # Indicates if there was a suggested change to baseline_offset.
                          &quot;linkSuggested&quot;: True or False, # Indicates if there was a suggested change to link.
                          &quot;foregroundColorSuggested&quot;: True or False, # Indicates if there was a suggested change to foreground_color.
                          &quot;strikethroughSuggested&quot;: True or False, # Indicates if there was a suggested change to strikethrough.
                        },
                      },
                    },
                    &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;strikethrough&quot;: True or False, # Whether or not the text is struck through.
                      &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;bold&quot;: True or False, # Whether or not the text is rendered as bold.
                      &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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                            &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                            &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                          },
                        },
                      },
                      &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;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;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;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;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;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;bookmarkId&quot;: &quot;A String&quot;, # The ID of a bookmark in this document.
                      },
                      &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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                            &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                            &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                          },
                        },
                      },
                      &quot;smallCaps&quot;: True or False, # Whether or not the text is in small capital letters.
                      &quot;underline&quot;: True or False, # Whether or not the text is underlined.
                      &quot;italic&quot;: True or False, # Whether or not the text is italicized.
                    },
                    &quot;suggestedDeletionIds&quot;: [ # The suggested deletion IDs. If empty, then there are no suggested deletions of this content.
                      &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;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;strikethrough&quot;: True or False, # Whether or not the text is struck through.
                          &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;bold&quot;: True or False, # Whether or not the text is rendered as bold.
                          &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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                                &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                                &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                              },
                            },
                          },
                          &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;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;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;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;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;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;bookmarkId&quot;: &quot;A String&quot;, # The ID of a bookmark in this document.
                          },
                          &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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                                &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                                &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                              },
                            },
                          },
                          &quot;smallCaps&quot;: True or False, # Whether or not the text is in small capital letters.
                          &quot;underline&quot;: True or False, # Whether or not the text is underlined.
                          &quot;italic&quot;: True or False, # Whether or not the text is italicized.
                        },
                        &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;underlineSuggested&quot;: True or False, # Indicates if there was a suggested change to underline.
                          &quot;smallCapsSuggested&quot;: True or False, # Indicates if there was a suggested change to small_caps.
                          &quot;backgroundColorSuggested&quot;: True or False, # Indicates if there was a suggested change to background_color.
                          &quot;weightedFontFamilySuggested&quot;: True or False, # Indicates if there was a suggested change to weighted_font_family.
                          &quot;boldSuggested&quot;: True or False, # Indicates if there was a suggested change to bold.
                          &quot;fontSizeSuggested&quot;: True or False, # Indicates if there was a suggested change to font_size.
                          &quot;italicSuggested&quot;: True or False, # Indicates if there was a suggested change to italic.
                          &quot;baselineOffsetSuggested&quot;: True or False, # Indicates if there was a suggested change to baseline_offset.
                          &quot;linkSuggested&quot;: True or False, # Indicates if there was a suggested change to link.
                          &quot;foregroundColorSuggested&quot;: True or False, # Indicates if there was a suggested change to foreground_color.
                          &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. # 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;strikethrough&quot;: True or False, # Whether or not the text is struck through.
                      &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;bold&quot;: True or False, # Whether or not the text is rendered as bold.
                      &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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                            &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                            &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                          },
                        },
                      },
                      &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;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;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;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;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;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;bookmarkId&quot;: &quot;A String&quot;, # The ID of a bookmark in this document.
                      },
                      &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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                            &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                            &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                          },
                        },
                      },
                      &quot;smallCaps&quot;: True or False, # Whether or not the text is in small capital letters.
                      &quot;underline&quot;: True or False, # Whether or not the text is underlined.
                      &quot;italic&quot;: True or False, # Whether or not the text is italicized.
                    },
                    &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 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;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;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;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;strikethrough&quot;: True or False, # Whether or not the text is struck through.
                          &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;bold&quot;: True or False, # Whether or not the text is rendered as bold.
                          &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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                                &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                                &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                              },
                            },
                          },
                          &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;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;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;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;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;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;bookmarkId&quot;: &quot;A String&quot;, # The ID of a bookmark in this document.
                          },
                          &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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                                &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                                &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                              },
                            },
                          },
                          &quot;smallCaps&quot;: True or False, # Whether or not the text is in small capital letters.
                          &quot;underline&quot;: True or False, # Whether or not the text is underlined.
                          &quot;italic&quot;: True or False, # Whether or not the text is italicized.
                        },
                        &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;underlineSuggested&quot;: True or False, # Indicates if there was a suggested change to underline.
                          &quot;smallCapsSuggested&quot;: True or False, # Indicates if there was a suggested change to small_caps.
                          &quot;backgroundColorSuggested&quot;: True or False, # Indicates if there was a suggested change to background_color.
                          &quot;weightedFontFamilySuggested&quot;: True or False, # Indicates if there was a suggested change to weighted_font_family.
                          &quot;boldSuggested&quot;: True or False, # Indicates if there was a suggested change to bold.
                          &quot;fontSizeSuggested&quot;: True or False, # Indicates if there was a suggested change to font_size.
                          &quot;italicSuggested&quot;: True or False, # Indicates if there was a suggested change to italic.
                          &quot;baselineOffsetSuggested&quot;: True or False, # Indicates if there was a suggested change to baseline_offset.
                          &quot;linkSuggested&quot;: True or False, # Indicates if there was a suggested change to link.
                          &quot;foregroundColorSuggested&quot;: True or False, # Indicates if there was a suggested change to foreground_color.
                          &quot;strikethroughSuggested&quot;: True or False, # Indicates if there was a suggested change to strikethrough.
                        },
                      },
                    },
                    &quot;footnoteNumber&quot;: &quot;A String&quot;, # The rendered number of this footnote.
                    &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;footnoteId&quot;: &quot;A String&quot;, # The ID of the footnote that contains the content of this footnote reference.
                    &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;strikethrough&quot;: True or False, # Whether or not the text is struck through.
                      &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;bold&quot;: True or False, # Whether or not the text is rendered as bold.
                      &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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                            &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                            &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                          },
                        },
                      },
                      &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;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;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;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;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;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;bookmarkId&quot;: &quot;A String&quot;, # The ID of a bookmark in this document.
                      },
                      &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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                            &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                            &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                          },
                        },
                      },
                      &quot;smallCaps&quot;: True or False, # Whether or not the text is in small capital letters.
                      &quot;underline&quot;: True or False, # Whether or not the text is underlined.
                      &quot;italic&quot;: True or False, # Whether or not the text is italicized.
                    },
                    &quot;suggestedDeletionIds&quot;: [ # The suggested deletion IDs. If empty, then there are no suggested deletions of this content.
                      &quot;A String&quot;,
                    ],
                  },
                  &quot;inlineObjectElement&quot;: { # A ParagraphElement that contains an InlineObject. # An inline object paragraph element.
                    &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;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;strikethrough&quot;: True or False, # Whether or not the text is struck through.
                          &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;bold&quot;: True or False, # Whether or not the text is rendered as bold.
                          &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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                                &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                                &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                              },
                            },
                          },
                          &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;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;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;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;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;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;bookmarkId&quot;: &quot;A String&quot;, # The ID of a bookmark in this document.
                          },
                          &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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                                &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                                &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                              },
                            },
                          },
                          &quot;smallCaps&quot;: True or False, # Whether or not the text is in small capital letters.
                          &quot;underline&quot;: True or False, # Whether or not the text is underlined.
                          &quot;italic&quot;: True or False, # Whether or not the text is italicized.
                        },
                        &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;underlineSuggested&quot;: True or False, # Indicates if there was a suggested change to underline.
                          &quot;smallCapsSuggested&quot;: True or False, # Indicates if there was a suggested change to small_caps.
                          &quot;backgroundColorSuggested&quot;: True or False, # Indicates if there was a suggested change to background_color.
                          &quot;weightedFontFamilySuggested&quot;: True or False, # Indicates if there was a suggested change to weighted_font_family.
                          &quot;boldSuggested&quot;: True or False, # Indicates if there was a suggested change to bold.
                          &quot;fontSizeSuggested&quot;: True or False, # Indicates if there was a suggested change to font_size.
                          &quot;italicSuggested&quot;: True or False, # Indicates if there was a suggested change to italic.
                          &quot;baselineOffsetSuggested&quot;: True or False, # Indicates if there was a suggested change to baseline_offset.
                          &quot;linkSuggested&quot;: True or False, # Indicates if there was a suggested change to link.
                          &quot;foregroundColorSuggested&quot;: True or False, # Indicates if there was a suggested change to foreground_color.
                          &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. # 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;strikethrough&quot;: True or False, # Whether or not the text is struck through.
                      &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;bold&quot;: True or False, # Whether or not the text is rendered as bold.
                      &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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                            &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                            &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                          },
                        },
                      },
                      &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;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;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;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;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;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;bookmarkId&quot;: &quot;A String&quot;, # The ID of a bookmark in this document.
                      },
                      &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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                            &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                            &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                          },
                        },
                      },
                      &quot;smallCaps&quot;: True or False, # Whether or not the text is in small capital letters.
                      &quot;underline&quot;: True or False, # Whether or not the text is underlined.
                      &quot;italic&quot;: True or False, # Whether or not the text is italicized.
                    },
                    &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;suggestedDeletionIds&quot;: [ # The suggested deletion IDs. If empty, then there are no suggested deletions of this content.
                      &quot;A String&quot;,
                    ],
                    &quot;inlineObjectId&quot;: &quot;A String&quot;, # The ID of the InlineObject this element contains.
                  },
                  &quot;endIndex&quot;: 42, # The zero-base end index of this paragraph element, exclusive, in UTF-16 code units.
                  &quot;textRun&quot;: { # A ParagraphElement that represents a run of text that all has the same styling. # A text run paragraph element.
                    &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;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;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;strikethrough&quot;: True or False, # Whether or not the text is struck through.
                          &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;bold&quot;: True or False, # Whether or not the text is rendered as bold.
                          &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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                                &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                                &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                              },
                            },
                          },
                          &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;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;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;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;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;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;bookmarkId&quot;: &quot;A String&quot;, # The ID of a bookmark in this document.
                          },
                          &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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                                &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                                &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                              },
                            },
                          },
                          &quot;smallCaps&quot;: True or False, # Whether or not the text is in small capital letters.
                          &quot;underline&quot;: True or False, # Whether or not the text is underlined.
                          &quot;italic&quot;: True or False, # Whether or not the text is italicized.
                        },
                        &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;underlineSuggested&quot;: True or False, # Indicates if there was a suggested change to underline.
                          &quot;smallCapsSuggested&quot;: True or False, # Indicates if there was a suggested change to small_caps.
                          &quot;backgroundColorSuggested&quot;: True or False, # Indicates if there was a suggested change to background_color.
                          &quot;weightedFontFamilySuggested&quot;: True or False, # Indicates if there was a suggested change to weighted_font_family.
                          &quot;boldSuggested&quot;: True or False, # Indicates if there was a suggested change to bold.
                          &quot;fontSizeSuggested&quot;: True or False, # Indicates if there was a suggested change to font_size.
                          &quot;italicSuggested&quot;: True or False, # Indicates if there was a suggested change to italic.
                          &quot;baselineOffsetSuggested&quot;: True or False, # Indicates if there was a suggested change to baseline_offset.
                          &quot;linkSuggested&quot;: True or False, # Indicates if there was a suggested change to link.
                          &quot;foregroundColorSuggested&quot;: True or False, # Indicates if there was a suggested change to foreground_color.
                          &quot;strikethroughSuggested&quot;: True or False, # Indicates if there was a suggested change to strikethrough.
                        },
                      },
                    },
                    &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 run.
                      &quot;strikethrough&quot;: True or False, # Whether or not the text is struck through.
                      &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;bold&quot;: True or False, # Whether or not the text is rendered as bold.
                      &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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                            &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                            &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                          },
                        },
                      },
                      &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;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;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;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;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;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;bookmarkId&quot;: &quot;A String&quot;, # The ID of a bookmark in this document.
                      },
                      &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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                            &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                            &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                          },
                        },
                      },
                      &quot;smallCaps&quot;: True or False, # Whether or not the text is in small capital letters.
                      &quot;underline&quot;: True or False, # Whether or not the text is underlined.
                      &quot;italic&quot;: True or False, # Whether or not the text is italicized.
                    },
                    &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;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;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;type&quot;: &quot;A String&quot;, # The type of this auto text.
                    &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;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;strikethrough&quot;: True or False, # Whether or not the text is struck through.
                      &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;bold&quot;: True or False, # Whether or not the text is rendered as bold.
                      &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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                            &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                            &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                          },
                        },
                      },
                      &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;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;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;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;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;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;bookmarkId&quot;: &quot;A String&quot;, # The ID of a bookmark in this document.
                      },
                      &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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                            &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                            &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                          },
                        },
                      },
                      &quot;smallCaps&quot;: True or False, # Whether or not the text is in small capital letters.
                      &quot;underline&quot;: True or False, # Whether or not the text is underlined.
                      &quot;italic&quot;: True or False, # Whether or not the text is italicized.
                    },
                    &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;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;strikethrough&quot;: True or False, # Whether or not the text is struck through.
                          &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;bold&quot;: True or False, # Whether or not the text is rendered as bold.
                          &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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                                &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                                &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                              },
                            },
                          },
                          &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;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;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;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;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;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;bookmarkId&quot;: &quot;A String&quot;, # The ID of a bookmark in this document.
                          },
                          &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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                                &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                                &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                              },
                            },
                          },
                          &quot;smallCaps&quot;: True or False, # Whether or not the text is in small capital letters.
                          &quot;underline&quot;: True or False, # Whether or not the text is underlined.
                          &quot;italic&quot;: True or False, # Whether or not the text is italicized.
                        },
                        &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;underlineSuggested&quot;: True or False, # Indicates if there was a suggested change to underline.
                          &quot;smallCapsSuggested&quot;: True or False, # Indicates if there was a suggested change to small_caps.
                          &quot;backgroundColorSuggested&quot;: True or False, # Indicates if there was a suggested change to background_color.
                          &quot;weightedFontFamilySuggested&quot;: True or False, # Indicates if there was a suggested change to weighted_font_family.
                          &quot;boldSuggested&quot;: True or False, # Indicates if there was a suggested change to bold.
                          &quot;fontSizeSuggested&quot;: True or False, # Indicates if there was a suggested change to font_size.
                          &quot;italicSuggested&quot;: True or False, # Indicates if there was a suggested change to italic.
                          &quot;baselineOffsetSuggested&quot;: True or False, # Indicates if there was a suggested change to baseline_offset.
                          &quot;linkSuggested&quot;: True or False, # Indicates if there was a suggested change to link.
                          &quot;foregroundColorSuggested&quot;: True or False, # Indicates if there was a suggested change to foreground_color.
                          &quot;strikethroughSuggested&quot;: True or False, # Indicates if there was a suggested change to strikethrough.
                        },
                      },
                    },
                  },
                },
              ],
              &quot;suggestedBulletChanges&quot;: { # The suggested changes to this paragraph&#x27;s bullet.
                &quot;a_key&quot;: { # A suggested change to a Bullet.
                  &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;listId&quot;: &quot;A String&quot;, # The ID of the list this paragraph belongs to.
                    &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;strikethrough&quot;: True or False, # Whether or not the text is struck through.
                      &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;bold&quot;: True or False, # Whether or not the text is rendered as bold.
                      &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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                            &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                            &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                          },
                        },
                      },
                      &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;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;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;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;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;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;bookmarkId&quot;: &quot;A String&quot;, # The ID of a bookmark in this document.
                      },
                      &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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                            &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                            &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                          },
                        },
                      },
                      &quot;smallCaps&quot;: True or False, # Whether or not the text is in small capital letters.
                      &quot;underline&quot;: True or False, # Whether or not the text is underlined.
                      &quot;italic&quot;: True or False, # Whether or not the text is italicized.
                    },
                    &quot;nestingLevel&quot;: 42, # The nesting level of this paragraph in the list.
                  },
                  &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;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;underlineSuggested&quot;: True or False, # Indicates if there was a suggested change to underline.
                      &quot;smallCapsSuggested&quot;: True or False, # Indicates if there was a suggested change to small_caps.
                      &quot;backgroundColorSuggested&quot;: True or False, # Indicates if there was a suggested change to background_color.
                      &quot;weightedFontFamilySuggested&quot;: True or False, # Indicates if there was a suggested change to weighted_font_family.
                      &quot;boldSuggested&quot;: True or False, # Indicates if there was a suggested change to bold.
                      &quot;fontSizeSuggested&quot;: True or False, # Indicates if there was a suggested change to font_size.
                      &quot;italicSuggested&quot;: True or False, # Indicates if there was a suggested change to italic.
                      &quot;baselineOffsetSuggested&quot;: True or False, # Indicates if there was a suggested change to baseline_offset.
                      &quot;linkSuggested&quot;: True or False, # Indicates if there was a suggested change to link.
                      &quot;foregroundColorSuggested&quot;: True or False, # Indicates if there was a suggested change to foreground_color.
                      &quot;strikethroughSuggested&quot;: True or False, # Indicates if there was a suggested change to strikethrough.
                    },
                    &quot;nestingLevelSuggested&quot;: True or False, # Indicates if there was a suggested change to the nesting_level.
                    &quot;listIdSuggested&quot;: True or False, # Indicates if there was a suggested change to the list_id.
                  },
                },
              },
              &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;alignment&quot;: &quot;A String&quot;, # The text alignment for this paragraph.
                &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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                        &quot;green&quot;: 3.14, # The green component of the color, 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;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;spacingMode&quot;: &quot;A String&quot;, # The spacing mode for the paragraph.
                &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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                        &quot;green&quot;: 3.14, # The green component of the color, 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;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;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;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;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;avoidWidowAndOrphan&quot;: True or False, # Whether to avoid widows and orphans for the paragraph. 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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                        &quot;green&quot;: 3.14, # The green component of the color, 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;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;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;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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                        &quot;green&quot;: 3.14, # The green component of the color, 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;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;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;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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                        &quot;green&quot;: 3.14, # The green component of the color, 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;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;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;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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                        &quot;green&quot;: 3.14, # The green component of the color, 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;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;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;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;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;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;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;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;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;spaceAboveSuggested&quot;: True or False, # Indicates if there was a suggested change to space_above.
                    &quot;directionSuggested&quot;: True or False, # Indicates if there was a suggested change to direction.
                    &quot;spacingModeSuggested&quot;: True or False, # Indicates if there was a suggested change to spacing_mode.
                    &quot;indentFirstLineSuggested&quot;: True or False, # Indicates if there was a suggested change to indent_first_line.
                    &quot;lineSpacingSuggested&quot;: True or False, # Indicates if there was a suggested change to line_spacing.
                    &quot;avoidWidowAndOrphanSuggested&quot;: True or False, # Indicates if there was a suggested change to avoid_widow_and_orphan.
                    &quot;borderBetweenSuggested&quot;: True or False, # Indicates if there was a suggested change to border_between.
                    &quot;keepLinesTogetherSuggested&quot;: True or False, # Indicates if there was a suggested change to keep_lines_together.
                    &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;borderTopSuggested&quot;: True or False, # Indicates if there was a suggested change to border_top.
                    &quot;indentEndSuggested&quot;: True or False, # Indicates if there was a suggested change to indent_end.
                    &quot;keepWithNextSuggested&quot;: True or False, # Indicates if there was a suggested change to keep_with_next.
                    &quot;indentStartSuggested&quot;: True or False, # Indicates if there was a suggested change to indent_start.
                    &quot;borderRightSuggested&quot;: True or False, # Indicates if there was a suggested change to border_right.
                    &quot;spaceBelowSuggested&quot;: True or False, # Indicates if there was a suggested change to space_below.
                    &quot;headingIdSuggested&quot;: True or False, # Indicates if there was a suggested change to heading_id.
                    &quot;borderLeftSuggested&quot;: True or False, # Indicates if there was a suggested change to border_left.
                    &quot;namedStyleTypeSuggested&quot;: True or False, # Indicates if there was a suggested change to named_style_type.
                  },
                  &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;alignment&quot;: &quot;A String&quot;, # The text alignment for this paragraph.
                    &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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                            &quot;green&quot;: 3.14, # The green component of the color, 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;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;spacingMode&quot;: &quot;A String&quot;, # The spacing mode for the paragraph.
                    &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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                            &quot;green&quot;: 3.14, # The green component of the color, 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;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;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;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;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;avoidWidowAndOrphan&quot;: True or False, # Whether to avoid widows and orphans for the paragraph. 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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                            &quot;green&quot;: 3.14, # The green component of the color, 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;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;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;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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                            &quot;green&quot;: 3.14, # The green component of the color, 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;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;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;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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                            &quot;green&quot;: 3.14, # The green component of the color, 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;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;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;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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                            &quot;green&quot;: 3.14, # The green component of the color, 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;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;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;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;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;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;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;listId&quot;: &quot;A String&quot;, # The ID of the list this paragraph belongs to.
                &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;strikethrough&quot;: True or False, # Whether or not the text is struck through.
                  &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;bold&quot;: True or False, # Whether or not the text is rendered as bold.
                  &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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                        &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                        &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                      },
                    },
                  },
                  &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;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;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;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;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;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;bookmarkId&quot;: &quot;A String&quot;, # The ID of a bookmark in this document.
                  },
                  &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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                        &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                        &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                      },
                    },
                  },
                  &quot;smallCaps&quot;: True or False, # Whether or not the text is in small capital letters.
                  &quot;underline&quot;: True or False, # Whether or not the text is underlined.
                  &quot;italic&quot;: True or False, # Whether or not the text is italicized.
                },
                &quot;nestingLevel&quot;: 42, # The nesting level of this paragraph in the list.
              },
              &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;positionedObjectIds&quot;: [ # The IDs of the positioned objects tethered to this paragraph.
                &quot;A String&quot;,
              ],
            },
            &quot;table&quot;: { # A StructuralElement representing a table. # A table type of structural element.
              &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;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;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;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 row, 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;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;suggestedDeletionIds&quot;: [ # The suggested deletion IDs. If empty, then there are no suggested deletions of this content.
                        &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;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;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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                                    &quot;green&quot;: 3.14, # The green component of the color, 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;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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                                  &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                                  &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                                },
                              },
                            },
                            &quot;rowSpan&quot;: 42, # The row span of the cell. This property is read-only.
                            &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;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;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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                                    &quot;green&quot;: 3.14, # The green component of the color, 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;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;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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                                    &quot;green&quot;: 3.14, # The green component of the color, 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;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;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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                                    &quot;green&quot;: 3.14, # The green component of the color, 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;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;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;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;columnSpan&quot;: 42, # The column 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;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;borderLeftSuggested&quot;: True or False, # Indicates if there was a suggested change to border_left.
                            &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;paddingTopSuggested&quot;: True or False, # Indicates if there was a suggested change to padding_top.
                            &quot;paddingRightSuggested&quot;: True or False, # Indicates if there was a suggested change to padding_right.
                            &quot;rowSpanSuggested&quot;: True or False, # Indicates if there was a suggested change to row_span.
                            &quot;borderBottomSuggested&quot;: True or False, # Indicates if there was a suggested change to border_bottom.
                            &quot;backgroundColorSuggested&quot;: True or False, # Indicates if there was a suggested change to background_color.
                            &quot;columnSpanSuggested&quot;: True or False, # Indicates if there was a suggested change to column_span.
                            &quot;borderTopSuggested&quot;: True or False, # Indicates if there was a suggested change to border_top.
                            &quot;paddingBottomSuggested&quot;: True or False, # Indicates if there was a suggested change to padding_bottom.
                            &quot;paddingLeftSuggested&quot;: True or False, # Indicates if there was a suggested change to padding_left.
                          },
                        },
                      },
                      &quot;content&quot;: [ # The content of the cell.
                        # Object with schema name: StructuralElement
                      ],
                      &quot;endIndex&quot;: 42, # The zero-based end index of this cell, exclusive, 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;startIndex&quot;: 42, # The zero-based start index of this cell, in UTF-16 code units.
                      &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;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;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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                                &quot;green&quot;: 3.14, # The green component of the color, 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;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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                              &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                              &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                            },
                          },
                        },
                        &quot;rowSpan&quot;: 42, # The row span of the cell. This property is read-only.
                        &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;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;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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                                &quot;green&quot;: 3.14, # The green component of the color, 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;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;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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                                &quot;green&quot;: 3.14, # The green component of the color, 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;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;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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                                &quot;green&quot;: 3.14, # The green component of the color, 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;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;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;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;columnSpan&quot;: 42, # The column 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;suggestedTableRowStyleChanges&quot;: { # The suggested style changes to this row, keyed by suggestion ID.
                    &quot;a_key&quot;: { # A suggested change to a TableRowStyle.
                      &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;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;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;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;widthType&quot;: &quot;A String&quot;, # The width type of the column.
                  },
                ],
              },
              &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;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;suggestedDeletionIds&quot;: [ # The suggested deletion IDs. If empty, then there are no suggested deletions of this content.
                &quot;A String&quot;,
              ],
              &quot;content&quot;: [ # The content of the table of contents.
                # Object with schema name: StructuralElement
              ],
            },
            &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;sectionStyle&quot;: { # The styling that applies to a section. # The style of the section after this section break.
                &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;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;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;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;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;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;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;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;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;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;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;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;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;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;sectionType&quot;: &quot;A String&quot;, # Output only. The type of section.
                &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;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;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;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;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;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;suggestedDeletionIds&quot;: [ # The suggested deletion IDs. If empty, then there are no suggested deletions of this content.
                &quot;A String&quot;,
              ],
            },
          },
        ],
      },
      &quot;title&quot;: &quot;A String&quot;, # The title of the 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;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;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;embeddedDrawingProperties&quot;: { # The properties of an embedded drawing. # The properties of an embedded drawing.
                  },
                  &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;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;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;spreadsheetId&quot;: &quot;A String&quot;, # The ID of the Google Sheets spreadsheet that contains the source chart.
                      &quot;chartId&quot;: 42, # The ID of the specific chart in the Google Sheets spreadsheet that is embedded.
                    },
                  },
                  &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;size&quot;: { # A width and height. # The visible size of the image after cropping.
                    &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;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;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;sourceUri&quot;: &quot;A String&quot;, # The source URI is the URI used to insert the image. The source URI can be empty.
                    &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;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;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;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;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;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;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;description&quot;: &quot;A String&quot;, # The description of the embedded object. The `title` and `description` are both combined to display alt text.
                  &quot;embeddedObjectBorder&quot;: { # A border around an EmbeddedObject. # The border of the embedded object.
                    &quot;propertyState&quot;: &quot;A String&quot;, # The property state of the border property.
                    &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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                          &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                          &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                        },
                      },
                    },
                    &quot;dashStyle&quot;: &quot;A String&quot;, # The dash style of the border.
                    &quot;width&quot;: { # A magnitude in a single direction in the specified units. # The width of the border.
                      &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;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;marginLeftSuggested&quot;: True or False, # Indicates if there was a suggested change to margin_left.
                  &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;spreadsheetIdSuggested&quot;: True or False, # Indicates if there was a suggested change to spreadsheet_id.
                      &quot;chartIdSuggested&quot;: True or False, # Indicates if there was a suggested change to chart_id.
                    },
                  },
                  &quot;marginTopSuggested&quot;: True or False, # Indicates if there was a suggested change to margin_top.
                  &quot;titleSuggested&quot;: True or False, # Indicates if there was a suggested change to title.
                  &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;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;angleSuggested&quot;: True or False, # Indicates if there was a suggested change to angle.
                    &quot;contentUriSuggested&quot;: True or False, # Indicates if there was a suggested change to content_uri.
                    &quot;transparencySuggested&quot;: True or False, # Indicates if there was a suggested change to transparency.
                    &quot;sourceUriSuggested&quot;: True or False, # Indicates if there was a suggested change to source_uri.
                    &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;offsetLeftSuggested&quot;: True or False, # Indicates if there was a suggested change to offset_left.
                      &quot;offsetRightSuggested&quot;: True or False, # Indicates if there was a suggested change to offset_right.
                      &quot;angleSuggested&quot;: True or False, # Indicates if there was a suggested change to angle.
                      &quot;offsetTopSuggested&quot;: True or False, # Indicates if there was a suggested change to offset_top.
                      &quot;offsetBottomSuggested&quot;: True or False, # Indicates if there was a suggested change to offset_bottom.
                    },
                    &quot;contrastSuggested&quot;: True or False, # Indicates if there was a suggested change to contrast.
                    &quot;brightnessSuggested&quot;: True or False, # Indicates if there was a suggested change to brightness.
                  },
                  &quot;marginRightSuggested&quot;: True or False, # Indicates if there was a suggested change to margin_right.
                  &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;dashStyleSuggested&quot;: True or False, # Indicates if there was a suggested change to dash_style.
                    &quot;widthSuggested&quot;: True or False, # Indicates if there was a suggested change to width.
                    &quot;colorSuggested&quot;: True or False, # Indicates if there was a suggested change to color.
                    &quot;propertyStateSuggested&quot;: True or False, # Indicates if there was a suggested change to property_state.
                  },
                  &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;marginBottomSuggested&quot;: True or False, # Indicates if there was a suggested change to margin_bottom.
                },
              },
            },
          },
          &quot;objectId&quot;: &quot;A String&quot;, # The ID of this inline object.
          &quot;suggestedDeletionIds&quot;: [ # The suggested deletion IDs. If empty, then there are no suggested deletions of this content.
            &quot;A String&quot;,
          ],
          &quot;suggestedInsertionId&quot;: &quot;A String&quot;, # The suggested insertion ID. If empty, then this is not a suggested insertion.
          &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;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;embeddedDrawingProperties&quot;: { # The properties of an embedded drawing. # The properties of an embedded drawing.
              },
              &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;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;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;spreadsheetId&quot;: &quot;A String&quot;, # The ID of the Google Sheets spreadsheet that contains the source chart.
                  &quot;chartId&quot;: 42, # The ID of the specific chart in the Google Sheets spreadsheet that is embedded.
                },
              },
              &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;size&quot;: { # A width and height. # The visible size of the image after cropping.
                &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;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;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;sourceUri&quot;: &quot;A String&quot;, # The source URI is the URI used to insert the image. The source URI can be empty.
                &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;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;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;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;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;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;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;description&quot;: &quot;A String&quot;, # The description of the embedded object. The `title` and `description` are both combined to display alt text.
              &quot;embeddedObjectBorder&quot;: { # A border around an EmbeddedObject. # The border of the embedded object.
                &quot;propertyState&quot;: &quot;A String&quot;, # The property state of the border property.
                &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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                      &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                      &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                    },
                  },
                },
                &quot;dashStyle&quot;: &quot;A String&quot;, # The dash style of the border.
                &quot;width&quot;: { # A magnitude in a single direction in the specified units. # The width of the border.
                  &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;documentId&quot;: &quot;A String&quot;, # Output only. The ID of the document.
      &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;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;alignment&quot;: &quot;A String&quot;, # The text alignment for this paragraph.
              &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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                      &quot;green&quot;: 3.14, # The green component of the color, 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;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;spacingMode&quot;: &quot;A String&quot;, # The spacing mode for the paragraph.
              &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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                      &quot;green&quot;: 3.14, # The green component of the color, 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;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;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;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;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;avoidWidowAndOrphan&quot;: True or False, # Whether to avoid widows and orphans for the paragraph. 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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                      &quot;green&quot;: 3.14, # The green component of the color, 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;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;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;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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                      &quot;green&quot;: 3.14, # The green component of the color, 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;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;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;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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                      &quot;green&quot;: 3.14, # The green component of the color, 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;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;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;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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                      &quot;green&quot;: 3.14, # The green component of the color, 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;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;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;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;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;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;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;strikethrough&quot;: True or False, # Whether or not the text is struck through.
              &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;bold&quot;: True or False, # Whether or not the text is rendered as bold.
              &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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                    &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                    &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                  },
                },
              },
              &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;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;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;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;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;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;bookmarkId&quot;: &quot;A String&quot;, # The ID of a bookmark in this document.
              },
              &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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                    &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                    &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                  },
                },
              },
              &quot;smallCaps&quot;: True or False, # Whether or not the text is in small capital letters.
              &quot;underline&quot;: True or False, # Whether or not the text is underlined.
              &quot;italic&quot;: True or False, # Whether or not the text is italicized.
            },
          },
        ],
      },
      &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;endIndex&quot;: 42, # The zero-based end index of this structural element, exclusive, in UTF-16 code units.
              &quot;startIndex&quot;: 42, # The zero-based start index of this structural element, in UTF-16 code units.
              &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;elements&quot;: [ # The content of the paragraph broken down into its component parts.
                  { # A ParagraphElement describes content within a Paragraph.
                    &quot;startIndex&quot;: 42, # The zero-based start index of this paragraph element, in UTF-16 code units.
                    &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;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;strikethrough&quot;: True or False, # Whether or not the text is struck through.
                        &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;bold&quot;: True or False, # Whether or not the text is rendered as bold.
                        &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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                              &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                              &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                            },
                          },
                        },
                        &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;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;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;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;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;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;bookmarkId&quot;: &quot;A String&quot;, # The ID of a bookmark in this document.
                        },
                        &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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                              &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                              &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                            },
                          },
                        },
                        &quot;smallCaps&quot;: True or False, # Whether or not the text is in small capital letters.
                        &quot;underline&quot;: True or False, # Whether or not the text is underlined.
                        &quot;italic&quot;: True or False, # Whether or not the text is italicized.
                      },
                      &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;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;strikethrough&quot;: True or False, # Whether or not the text is struck through.
                            &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;bold&quot;: True or False, # Whether or not the text is rendered as bold.
                            &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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                                  &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                                  &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                                },
                              },
                            },
                            &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;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;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;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;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;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;bookmarkId&quot;: &quot;A String&quot;, # The ID of a bookmark in this document.
                            },
                            &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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                                  &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                                  &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                                },
                              },
                            },
                            &quot;smallCaps&quot;: True or False, # Whether or not the text is in small capital letters.
                            &quot;underline&quot;: True or False, # Whether or not the text is underlined.
                            &quot;italic&quot;: True or False, # Whether or not the text is italicized.
                          },
                          &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;underlineSuggested&quot;: True or False, # Indicates if there was a suggested change to underline.
                            &quot;smallCapsSuggested&quot;: True or False, # Indicates if there was a suggested change to small_caps.
                            &quot;backgroundColorSuggested&quot;: True or False, # Indicates if there was a suggested change to background_color.
                            &quot;weightedFontFamilySuggested&quot;: True or False, # Indicates if there was a suggested change to weighted_font_family.
                            &quot;boldSuggested&quot;: True or False, # Indicates if there was a suggested change to bold.
                            &quot;fontSizeSuggested&quot;: True or False, # Indicates if there was a suggested change to font_size.
                            &quot;italicSuggested&quot;: True or False, # Indicates if there was a suggested change to italic.
                            &quot;baselineOffsetSuggested&quot;: True or False, # Indicates if there was a suggested change to baseline_offset.
                            &quot;linkSuggested&quot;: True or False, # Indicates if there was a suggested change to link.
                            &quot;foregroundColorSuggested&quot;: True or False, # Indicates if there was a suggested change to foreground_color.
                            &quot;strikethroughSuggested&quot;: True or False, # Indicates if there was a suggested change to strikethrough.
                          },
                        },
                      },
                    },
                    &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;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;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;strikethrough&quot;: True or False, # Whether or not the text is struck through.
                            &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;bold&quot;: True or False, # Whether or not the text is rendered as bold.
                            &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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                                  &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                                  &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                                },
                              },
                            },
                            &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;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;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;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;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;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;bookmarkId&quot;: &quot;A String&quot;, # The ID of a bookmark in this document.
                            },
                            &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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                                  &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                                  &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                                },
                              },
                            },
                            &quot;smallCaps&quot;: True or False, # Whether or not the text is in small capital letters.
                            &quot;underline&quot;: True or False, # Whether or not the text is underlined.
                            &quot;italic&quot;: True or False, # Whether or not the text is italicized.
                          },
                          &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;underlineSuggested&quot;: True or False, # Indicates if there was a suggested change to underline.
                            &quot;smallCapsSuggested&quot;: True or False, # Indicates if there was a suggested change to small_caps.
                            &quot;backgroundColorSuggested&quot;: True or False, # Indicates if there was a suggested change to background_color.
                            &quot;weightedFontFamilySuggested&quot;: True or False, # Indicates if there was a suggested change to weighted_font_family.
                            &quot;boldSuggested&quot;: True or False, # Indicates if there was a suggested change to bold.
                            &quot;fontSizeSuggested&quot;: True or False, # Indicates if there was a suggested change to font_size.
                            &quot;italicSuggested&quot;: True or False, # Indicates if there was a suggested change to italic.
                            &quot;baselineOffsetSuggested&quot;: True or False, # Indicates if there was a suggested change to baseline_offset.
                            &quot;linkSuggested&quot;: True or False, # Indicates if there was a suggested change to link.
                            &quot;foregroundColorSuggested&quot;: True or False, # Indicates if there was a suggested change to foreground_color.
                            &quot;strikethroughSuggested&quot;: True or False, # Indicates if there was a suggested change to strikethrough.
                          },
                        },
                      },
                      &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;strikethrough&quot;: True or False, # Whether or not the text is struck through.
                        &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;bold&quot;: True or False, # Whether or not the text is rendered as bold.
                        &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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                              &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                              &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                            },
                          },
                        },
                        &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;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;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;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;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;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;bookmarkId&quot;: &quot;A String&quot;, # The ID of a bookmark in this document.
                        },
                        &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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                              &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                              &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                            },
                          },
                        },
                        &quot;smallCaps&quot;: True or False, # Whether or not the text is in small capital letters.
                        &quot;underline&quot;: True or False, # Whether or not the text is underlined.
                        &quot;italic&quot;: True or False, # Whether or not the text is italicized.
                      },
                      &quot;suggestedDeletionIds&quot;: [ # The suggested deletion IDs. If empty, then there are no suggested deletions of this content.
                        &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;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;strikethrough&quot;: True or False, # Whether or not the text is struck through.
                            &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;bold&quot;: True or False, # Whether or not the text is rendered as bold.
                            &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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                                  &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                                  &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                                },
                              },
                            },
                            &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;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;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;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;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;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;bookmarkId&quot;: &quot;A String&quot;, # The ID of a bookmark in this document.
                            },
                            &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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                                  &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                                  &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                                },
                              },
                            },
                            &quot;smallCaps&quot;: True or False, # Whether or not the text is in small capital letters.
                            &quot;underline&quot;: True or False, # Whether or not the text is underlined.
                            &quot;italic&quot;: True or False, # Whether or not the text is italicized.
                          },
                          &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;underlineSuggested&quot;: True or False, # Indicates if there was a suggested change to underline.
                            &quot;smallCapsSuggested&quot;: True or False, # Indicates if there was a suggested change to small_caps.
                            &quot;backgroundColorSuggested&quot;: True or False, # Indicates if there was a suggested change to background_color.
                            &quot;weightedFontFamilySuggested&quot;: True or False, # Indicates if there was a suggested change to weighted_font_family.
                            &quot;boldSuggested&quot;: True or False, # Indicates if there was a suggested change to bold.
                            &quot;fontSizeSuggested&quot;: True or False, # Indicates if there was a suggested change to font_size.
                            &quot;italicSuggested&quot;: True or False, # Indicates if there was a suggested change to italic.
                            &quot;baselineOffsetSuggested&quot;: True or False, # Indicates if there was a suggested change to baseline_offset.
                            &quot;linkSuggested&quot;: True or False, # Indicates if there was a suggested change to link.
                            &quot;foregroundColorSuggested&quot;: True or False, # Indicates if there was a suggested change to foreground_color.
                            &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. # 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;strikethrough&quot;: True or False, # Whether or not the text is struck through.
                        &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;bold&quot;: True or False, # Whether or not the text is rendered as bold.
                        &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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                              &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                              &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                            },
                          },
                        },
                        &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;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;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;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;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;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;bookmarkId&quot;: &quot;A String&quot;, # The ID of a bookmark in this document.
                        },
                        &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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                              &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                              &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                            },
                          },
                        },
                        &quot;smallCaps&quot;: True or False, # Whether or not the text is in small capital letters.
                        &quot;underline&quot;: True or False, # Whether or not the text is underlined.
                        &quot;italic&quot;: True or False, # Whether or not the text is italicized.
                      },
                      &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 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;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;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;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;strikethrough&quot;: True or False, # Whether or not the text is struck through.
                            &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;bold&quot;: True or False, # Whether or not the text is rendered as bold.
                            &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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                                  &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                                  &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                                },
                              },
                            },
                            &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;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;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;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;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;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;bookmarkId&quot;: &quot;A String&quot;, # The ID of a bookmark in this document.
                            },
                            &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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                                  &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                                  &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                                },
                              },
                            },
                            &quot;smallCaps&quot;: True or False, # Whether or not the text is in small capital letters.
                            &quot;underline&quot;: True or False, # Whether or not the text is underlined.
                            &quot;italic&quot;: True or False, # Whether or not the text is italicized.
                          },
                          &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;underlineSuggested&quot;: True or False, # Indicates if there was a suggested change to underline.
                            &quot;smallCapsSuggested&quot;: True or False, # Indicates if there was a suggested change to small_caps.
                            &quot;backgroundColorSuggested&quot;: True or False, # Indicates if there was a suggested change to background_color.
                            &quot;weightedFontFamilySuggested&quot;: True or False, # Indicates if there was a suggested change to weighted_font_family.
                            &quot;boldSuggested&quot;: True or False, # Indicates if there was a suggested change to bold.
                            &quot;fontSizeSuggested&quot;: True or False, # Indicates if there was a suggested change to font_size.
                            &quot;italicSuggested&quot;: True or False, # Indicates if there was a suggested change to italic.
                            &quot;baselineOffsetSuggested&quot;: True or False, # Indicates if there was a suggested change to baseline_offset.
                            &quot;linkSuggested&quot;: True or False, # Indicates if there was a suggested change to link.
                            &quot;foregroundColorSuggested&quot;: True or False, # Indicates if there was a suggested change to foreground_color.
                            &quot;strikethroughSuggested&quot;: True or False, # Indicates if there was a suggested change to strikethrough.
                          },
                        },
                      },
                      &quot;footnoteNumber&quot;: &quot;A String&quot;, # The rendered number of this footnote.
                      &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;footnoteId&quot;: &quot;A String&quot;, # The ID of the footnote that contains the content of this footnote reference.
                      &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;strikethrough&quot;: True or False, # Whether or not the text is struck through.
                        &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;bold&quot;: True or False, # Whether or not the text is rendered as bold.
                        &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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                              &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                              &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                            },
                          },
                        },
                        &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;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;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;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;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;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;bookmarkId&quot;: &quot;A String&quot;, # The ID of a bookmark in this document.
                        },
                        &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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                              &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                              &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                            },
                          },
                        },
                        &quot;smallCaps&quot;: True or False, # Whether or not the text is in small capital letters.
                        &quot;underline&quot;: True or False, # Whether or not the text is underlined.
                        &quot;italic&quot;: True or False, # Whether or not the text is italicized.
                      },
                      &quot;suggestedDeletionIds&quot;: [ # The suggested deletion IDs. If empty, then there are no suggested deletions of this content.
                        &quot;A String&quot;,
                      ],
                    },
                    &quot;inlineObjectElement&quot;: { # A ParagraphElement that contains an InlineObject. # An inline object paragraph element.
                      &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;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;strikethrough&quot;: True or False, # Whether or not the text is struck through.
                            &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;bold&quot;: True or False, # Whether or not the text is rendered as bold.
                            &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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                                  &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                                  &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                                },
                              },
                            },
                            &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;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;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;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;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;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;bookmarkId&quot;: &quot;A String&quot;, # The ID of a bookmark in this document.
                            },
                            &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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                                  &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                                  &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                                },
                              },
                            },
                            &quot;smallCaps&quot;: True or False, # Whether or not the text is in small capital letters.
                            &quot;underline&quot;: True or False, # Whether or not the text is underlined.
                            &quot;italic&quot;: True or False, # Whether or not the text is italicized.
                          },
                          &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;underlineSuggested&quot;: True or False, # Indicates if there was a suggested change to underline.
                            &quot;smallCapsSuggested&quot;: True or False, # Indicates if there was a suggested change to small_caps.
                            &quot;backgroundColorSuggested&quot;: True or False, # Indicates if there was a suggested change to background_color.
                            &quot;weightedFontFamilySuggested&quot;: True or False, # Indicates if there was a suggested change to weighted_font_family.
                            &quot;boldSuggested&quot;: True or False, # Indicates if there was a suggested change to bold.
                            &quot;fontSizeSuggested&quot;: True or False, # Indicates if there was a suggested change to font_size.
                            &quot;italicSuggested&quot;: True or False, # Indicates if there was a suggested change to italic.
                            &quot;baselineOffsetSuggested&quot;: True or False, # Indicates if there was a suggested change to baseline_offset.
                            &quot;linkSuggested&quot;: True or False, # Indicates if there was a suggested change to link.
                            &quot;foregroundColorSuggested&quot;: True or False, # Indicates if there was a suggested change to foreground_color.
                            &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. # 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;strikethrough&quot;: True or False, # Whether or not the text is struck through.
                        &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;bold&quot;: True or False, # Whether or not the text is rendered as bold.
                        &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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                              &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                              &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                            },
                          },
                        },
                        &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;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;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;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;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;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;bookmarkId&quot;: &quot;A String&quot;, # The ID of a bookmark in this document.
                        },
                        &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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                              &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                              &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                            },
                          },
                        },
                        &quot;smallCaps&quot;: True or False, # Whether or not the text is in small capital letters.
                        &quot;underline&quot;: True or False, # Whether or not the text is underlined.
                        &quot;italic&quot;: True or False, # Whether or not the text is italicized.
                      },
                      &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;suggestedDeletionIds&quot;: [ # The suggested deletion IDs. If empty, then there are no suggested deletions of this content.
                        &quot;A String&quot;,
                      ],
                      &quot;inlineObjectId&quot;: &quot;A String&quot;, # The ID of the InlineObject this element contains.
                    },
                    &quot;endIndex&quot;: 42, # The zero-base end index of this paragraph element, exclusive, in UTF-16 code units.
                    &quot;textRun&quot;: { # A ParagraphElement that represents a run of text that all has the same styling. # A text run paragraph element.
                      &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;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;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;strikethrough&quot;: True or False, # Whether or not the text is struck through.
                            &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;bold&quot;: True or False, # Whether or not the text is rendered as bold.
                            &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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                                  &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                                  &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                                },
                              },
                            },
                            &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;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;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;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;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;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;bookmarkId&quot;: &quot;A String&quot;, # The ID of a bookmark in this document.
                            },
                            &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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                                  &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                                  &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                                },
                              },
                            },
                            &quot;smallCaps&quot;: True or False, # Whether or not the text is in small capital letters.
                            &quot;underline&quot;: True or False, # Whether or not the text is underlined.
                            &quot;italic&quot;: True or False, # Whether or not the text is italicized.
                          },
                          &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;underlineSuggested&quot;: True or False, # Indicates if there was a suggested change to underline.
                            &quot;smallCapsSuggested&quot;: True or False, # Indicates if there was a suggested change to small_caps.
                            &quot;backgroundColorSuggested&quot;: True or False, # Indicates if there was a suggested change to background_color.
                            &quot;weightedFontFamilySuggested&quot;: True or False, # Indicates if there was a suggested change to weighted_font_family.
                            &quot;boldSuggested&quot;: True or False, # Indicates if there was a suggested change to bold.
                            &quot;fontSizeSuggested&quot;: True or False, # Indicates if there was a suggested change to font_size.
                            &quot;italicSuggested&quot;: True or False, # Indicates if there was a suggested change to italic.
                            &quot;baselineOffsetSuggested&quot;: True or False, # Indicates if there was a suggested change to baseline_offset.
                            &quot;linkSuggested&quot;: True or False, # Indicates if there was a suggested change to link.
                            &quot;foregroundColorSuggested&quot;: True or False, # Indicates if there was a suggested change to foreground_color.
                            &quot;strikethroughSuggested&quot;: True or False, # Indicates if there was a suggested change to strikethrough.
                          },
                        },
                      },
                      &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 run.
                        &quot;strikethrough&quot;: True or False, # Whether or not the text is struck through.
                        &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;bold&quot;: True or False, # Whether or not the text is rendered as bold.
                        &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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                              &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                              &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                            },
                          },
                        },
                        &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;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;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;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;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;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;bookmarkId&quot;: &quot;A String&quot;, # The ID of a bookmark in this document.
                        },
                        &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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                              &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                              &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                            },
                          },
                        },
                        &quot;smallCaps&quot;: True or False, # Whether or not the text is in small capital letters.
                        &quot;underline&quot;: True or False, # Whether or not the text is underlined.
                        &quot;italic&quot;: True or False, # Whether or not the text is italicized.
                      },
                      &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;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;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;type&quot;: &quot;A String&quot;, # The type of this auto text.
                      &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;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;strikethrough&quot;: True or False, # Whether or not the text is struck through.
                        &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;bold&quot;: True or False, # Whether or not the text is rendered as bold.
                        &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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                              &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                              &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                            },
                          },
                        },
                        &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;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;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;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;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;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;bookmarkId&quot;: &quot;A String&quot;, # The ID of a bookmark in this document.
                        },
                        &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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                              &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                              &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                            },
                          },
                        },
                        &quot;smallCaps&quot;: True or False, # Whether or not the text is in small capital letters.
                        &quot;underline&quot;: True or False, # Whether or not the text is underlined.
                        &quot;italic&quot;: True or False, # Whether or not the text is italicized.
                      },
                      &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;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;strikethrough&quot;: True or False, # Whether or not the text is struck through.
                            &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;bold&quot;: True or False, # Whether or not the text is rendered as bold.
                            &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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                                  &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                                  &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                                },
                              },
                            },
                            &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;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;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;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;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;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;bookmarkId&quot;: &quot;A String&quot;, # The ID of a bookmark in this document.
                            },
                            &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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                                  &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                                  &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                                },
                              },
                            },
                            &quot;smallCaps&quot;: True or False, # Whether or not the text is in small capital letters.
                            &quot;underline&quot;: True or False, # Whether or not the text is underlined.
                            &quot;italic&quot;: True or False, # Whether or not the text is italicized.
                          },
                          &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;underlineSuggested&quot;: True or False, # Indicates if there was a suggested change to underline.
                            &quot;smallCapsSuggested&quot;: True or False, # Indicates if there was a suggested change to small_caps.
                            &quot;backgroundColorSuggested&quot;: True or False, # Indicates if there was a suggested change to background_color.
                            &quot;weightedFontFamilySuggested&quot;: True or False, # Indicates if there was a suggested change to weighted_font_family.
                            &quot;boldSuggested&quot;: True or False, # Indicates if there was a suggested change to bold.
                            &quot;fontSizeSuggested&quot;: True or False, # Indicates if there was a suggested change to font_size.
                            &quot;italicSuggested&quot;: True or False, # Indicates if there was a suggested change to italic.
                            &quot;baselineOffsetSuggested&quot;: True or False, # Indicates if there was a suggested change to baseline_offset.
                            &quot;linkSuggested&quot;: True or False, # Indicates if there was a suggested change to link.
                            &quot;foregroundColorSuggested&quot;: True or False, # Indicates if there was a suggested change to foreground_color.
                            &quot;strikethroughSuggested&quot;: True or False, # Indicates if there was a suggested change to strikethrough.
                          },
                        },
                      },
                    },
                  },
                ],
                &quot;suggestedBulletChanges&quot;: { # The suggested changes to this paragraph&#x27;s bullet.
                  &quot;a_key&quot;: { # A suggested change to a Bullet.
                    &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;listId&quot;: &quot;A String&quot;, # The ID of the list this paragraph belongs to.
                      &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;strikethrough&quot;: True or False, # Whether or not the text is struck through.
                        &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;bold&quot;: True or False, # Whether or not the text is rendered as bold.
                        &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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                              &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                              &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                            },
                          },
                        },
                        &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;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;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;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;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;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;bookmarkId&quot;: &quot;A String&quot;, # The ID of a bookmark in this document.
                        },
                        &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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                              &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                              &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                            },
                          },
                        },
                        &quot;smallCaps&quot;: True or False, # Whether or not the text is in small capital letters.
                        &quot;underline&quot;: True or False, # Whether or not the text is underlined.
                        &quot;italic&quot;: True or False, # Whether or not the text is italicized.
                      },
                      &quot;nestingLevel&quot;: 42, # The nesting level of this paragraph in the list.
                    },
                    &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;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;underlineSuggested&quot;: True or False, # Indicates if there was a suggested change to underline.
                        &quot;smallCapsSuggested&quot;: True or False, # Indicates if there was a suggested change to small_caps.
                        &quot;backgroundColorSuggested&quot;: True or False, # Indicates if there was a suggested change to background_color.
                        &quot;weightedFontFamilySuggested&quot;: True or False, # Indicates if there was a suggested change to weighted_font_family.
                        &quot;boldSuggested&quot;: True or False, # Indicates if there was a suggested change to bold.
                        &quot;fontSizeSuggested&quot;: True or False, # Indicates if there was a suggested change to font_size.
                        &quot;italicSuggested&quot;: True or False, # Indicates if there was a suggested change to italic.
                        &quot;baselineOffsetSuggested&quot;: True or False, # Indicates if there was a suggested change to baseline_offset.
                        &quot;linkSuggested&quot;: True or False, # Indicates if there was a suggested change to link.
                        &quot;foregroundColorSuggested&quot;: True or False, # Indicates if there was a suggested change to foreground_color.
                        &quot;strikethroughSuggested&quot;: True or False, # Indicates if there was a suggested change to strikethrough.
                      },
                      &quot;nestingLevelSuggested&quot;: True or False, # Indicates if there was a suggested change to the nesting_level.
                      &quot;listIdSuggested&quot;: True or False, # Indicates if there was a suggested change to the list_id.
                    },
                  },
                },
                &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;alignment&quot;: &quot;A String&quot;, # The text alignment for this paragraph.
                  &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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                          &quot;green&quot;: 3.14, # The green component of the color, 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;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;spacingMode&quot;: &quot;A String&quot;, # The spacing mode for the paragraph.
                  &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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                          &quot;green&quot;: 3.14, # The green component of the color, 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;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;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;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;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;avoidWidowAndOrphan&quot;: True or False, # Whether to avoid widows and orphans for the paragraph. 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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                          &quot;green&quot;: 3.14, # The green component of the color, 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;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;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;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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                          &quot;green&quot;: 3.14, # The green component of the color, 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;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;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;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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                          &quot;green&quot;: 3.14, # The green component of the color, 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;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;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;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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                          &quot;green&quot;: 3.14, # The green component of the color, 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;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;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;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;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;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;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;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;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;spaceAboveSuggested&quot;: True or False, # Indicates if there was a suggested change to space_above.
                      &quot;directionSuggested&quot;: True or False, # Indicates if there was a suggested change to direction.
                      &quot;spacingModeSuggested&quot;: True or False, # Indicates if there was a suggested change to spacing_mode.
                      &quot;indentFirstLineSuggested&quot;: True or False, # Indicates if there was a suggested change to indent_first_line.
                      &quot;lineSpacingSuggested&quot;: True or False, # Indicates if there was a suggested change to line_spacing.
                      &quot;avoidWidowAndOrphanSuggested&quot;: True or False, # Indicates if there was a suggested change to avoid_widow_and_orphan.
                      &quot;borderBetweenSuggested&quot;: True or False, # Indicates if there was a suggested change to border_between.
                      &quot;keepLinesTogetherSuggested&quot;: True or False, # Indicates if there was a suggested change to keep_lines_together.
                      &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;borderTopSuggested&quot;: True or False, # Indicates if there was a suggested change to border_top.
                      &quot;indentEndSuggested&quot;: True or False, # Indicates if there was a suggested change to indent_end.
                      &quot;keepWithNextSuggested&quot;: True or False, # Indicates if there was a suggested change to keep_with_next.
                      &quot;indentStartSuggested&quot;: True or False, # Indicates if there was a suggested change to indent_start.
                      &quot;borderRightSuggested&quot;: True or False, # Indicates if there was a suggested change to border_right.
                      &quot;spaceBelowSuggested&quot;: True or False, # Indicates if there was a suggested change to space_below.
                      &quot;headingIdSuggested&quot;: True or False, # Indicates if there was a suggested change to heading_id.
                      &quot;borderLeftSuggested&quot;: True or False, # Indicates if there was a suggested change to border_left.
                      &quot;namedStyleTypeSuggested&quot;: True or False, # Indicates if there was a suggested change to named_style_type.
                    },
                    &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;alignment&quot;: &quot;A String&quot;, # The text alignment for this paragraph.
                      &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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                              &quot;green&quot;: 3.14, # The green component of the color, 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;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;spacingMode&quot;: &quot;A String&quot;, # The spacing mode for the paragraph.
                      &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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                              &quot;green&quot;: 3.14, # The green component of the color, 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;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;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;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;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;avoidWidowAndOrphan&quot;: True or False, # Whether to avoid widows and orphans for the paragraph. 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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                              &quot;green&quot;: 3.14, # The green component of the color, 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;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;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;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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                              &quot;green&quot;: 3.14, # The green component of the color, 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;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;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;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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                              &quot;green&quot;: 3.14, # The green component of the color, 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;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;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;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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                              &quot;green&quot;: 3.14, # The green component of the color, 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;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;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;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;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;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;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;listId&quot;: &quot;A String&quot;, # The ID of the list this paragraph belongs to.
                  &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;strikethrough&quot;: True or False, # Whether or not the text is struck through.
                    &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;bold&quot;: True or False, # Whether or not the text is rendered as bold.
                    &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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                          &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                          &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                        },
                      },
                    },
                    &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;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;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;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;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;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;bookmarkId&quot;: &quot;A String&quot;, # The ID of a bookmark in this document.
                    },
                    &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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                          &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                          &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                        },
                      },
                    },
                    &quot;smallCaps&quot;: True or False, # Whether or not the text is in small capital letters.
                    &quot;underline&quot;: True or False, # Whether or not the text is underlined.
                    &quot;italic&quot;: True or False, # Whether or not the text is italicized.
                  },
                  &quot;nestingLevel&quot;: 42, # The nesting level of this paragraph in the list.
                },
                &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;positionedObjectIds&quot;: [ # The IDs of the positioned objects tethered to this paragraph.
                  &quot;A String&quot;,
                ],
              },
              &quot;table&quot;: { # A StructuralElement representing a table. # A table type of structural element.
                &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;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;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;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 row, 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;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;suggestedDeletionIds&quot;: [ # The suggested deletion IDs. If empty, then there are no suggested deletions of this content.
                          &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;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;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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                                      &quot;green&quot;: 3.14, # The green component of the color, 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;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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                                    &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                                    &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                                  },
                                },
                              },
                              &quot;rowSpan&quot;: 42, # The row span of the cell. This property is read-only.
                              &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;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;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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                                      &quot;green&quot;: 3.14, # The green component of the color, 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;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;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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                                      &quot;green&quot;: 3.14, # The green component of the color, 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;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;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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                                      &quot;green&quot;: 3.14, # The green component of the color, 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;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;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;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;columnSpan&quot;: 42, # The column 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;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;borderLeftSuggested&quot;: True or False, # Indicates if there was a suggested change to border_left.
                              &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;paddingTopSuggested&quot;: True or False, # Indicates if there was a suggested change to padding_top.
                              &quot;paddingRightSuggested&quot;: True or False, # Indicates if there was a suggested change to padding_right.
                              &quot;rowSpanSuggested&quot;: True or False, # Indicates if there was a suggested change to row_span.
                              &quot;borderBottomSuggested&quot;: True or False, # Indicates if there was a suggested change to border_bottom.
                              &quot;backgroundColorSuggested&quot;: True or False, # Indicates if there was a suggested change to background_color.
                              &quot;columnSpanSuggested&quot;: True or False, # Indicates if there was a suggested change to column_span.
                              &quot;borderTopSuggested&quot;: True or False, # Indicates if there was a suggested change to border_top.
                              &quot;paddingBottomSuggested&quot;: True or False, # Indicates if there was a suggested change to padding_bottom.
                              &quot;paddingLeftSuggested&quot;: True or False, # Indicates if there was a suggested change to padding_left.
                            },
                          },
                        },
                        &quot;content&quot;: [ # The content of the cell.
                          # Object with schema name: StructuralElement
                        ],
                        &quot;endIndex&quot;: 42, # The zero-based end index of this cell, exclusive, 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;startIndex&quot;: 42, # The zero-based start index of this cell, in UTF-16 code units.
                        &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;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;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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                                  &quot;green&quot;: 3.14, # The green component of the color, 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;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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                                &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                                &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                              },
                            },
                          },
                          &quot;rowSpan&quot;: 42, # The row span of the cell. This property is read-only.
                          &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;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;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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                                  &quot;green&quot;: 3.14, # The green component of the color, 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;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;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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                                  &quot;green&quot;: 3.14, # The green component of the color, 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;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;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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                                  &quot;green&quot;: 3.14, # The green component of the color, 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;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;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;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;columnSpan&quot;: 42, # The column 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;suggestedTableRowStyleChanges&quot;: { # The suggested style changes to this row, keyed by suggestion ID.
                      &quot;a_key&quot;: { # A suggested change to a TableRowStyle.
                        &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;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;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;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;widthType&quot;: &quot;A String&quot;, # The width type of the column.
                    },
                  ],
                },
                &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;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;suggestedDeletionIds&quot;: [ # The suggested deletion IDs. If empty, then there are no suggested deletions of this content.
                  &quot;A String&quot;,
                ],
                &quot;content&quot;: [ # The content of the table of contents.
                  # Object with schema name: StructuralElement
                ],
              },
              &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;sectionStyle&quot;: { # The styling that applies to a section. # The style of the section after this section break.
                  &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;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;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;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;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;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;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;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;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;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;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;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;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;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;sectionType&quot;: &quot;A String&quot;, # Output only. The type of section.
                  &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;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;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;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;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;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;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;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;footers&quot;: { # Output only. The footers in the document, keyed by footer ID.
        &quot;a_key&quot;: { # A document footer.
          &quot;footerId&quot;: &quot;A String&quot;, # The ID of the 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;endIndex&quot;: 42, # The zero-based end index of this structural element, exclusive, in UTF-16 code units.
              &quot;startIndex&quot;: 42, # The zero-based start index of this structural element, in UTF-16 code units.
              &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;elements&quot;: [ # The content of the paragraph broken down into its component parts.
                  { # A ParagraphElement describes content within a Paragraph.
                    &quot;startIndex&quot;: 42, # The zero-based start index of this paragraph element, in UTF-16 code units.
                    &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;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;strikethrough&quot;: True or False, # Whether or not the text is struck through.
                        &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;bold&quot;: True or False, # Whether or not the text is rendered as bold.
                        &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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                              &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                              &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                            },
                          },
                        },
                        &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;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;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;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;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;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;bookmarkId&quot;: &quot;A String&quot;, # The ID of a bookmark in this document.
                        },
                        &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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                              &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                              &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                            },
                          },
                        },
                        &quot;smallCaps&quot;: True or False, # Whether or not the text is in small capital letters.
                        &quot;underline&quot;: True or False, # Whether or not the text is underlined.
                        &quot;italic&quot;: True or False, # Whether or not the text is italicized.
                      },
                      &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;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;strikethrough&quot;: True or False, # Whether or not the text is struck through.
                            &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;bold&quot;: True or False, # Whether or not the text is rendered as bold.
                            &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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                                  &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                                  &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                                },
                              },
                            },
                            &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;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;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;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;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;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;bookmarkId&quot;: &quot;A String&quot;, # The ID of a bookmark in this document.
                            },
                            &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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                                  &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                                  &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                                },
                              },
                            },
                            &quot;smallCaps&quot;: True or False, # Whether or not the text is in small capital letters.
                            &quot;underline&quot;: True or False, # Whether or not the text is underlined.
                            &quot;italic&quot;: True or False, # Whether or not the text is italicized.
                          },
                          &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;underlineSuggested&quot;: True or False, # Indicates if there was a suggested change to underline.
                            &quot;smallCapsSuggested&quot;: True or False, # Indicates if there was a suggested change to small_caps.
                            &quot;backgroundColorSuggested&quot;: True or False, # Indicates if there was a suggested change to background_color.
                            &quot;weightedFontFamilySuggested&quot;: True or False, # Indicates if there was a suggested change to weighted_font_family.
                            &quot;boldSuggested&quot;: True or False, # Indicates if there was a suggested change to bold.
                            &quot;fontSizeSuggested&quot;: True or False, # Indicates if there was a suggested change to font_size.
                            &quot;italicSuggested&quot;: True or False, # Indicates if there was a suggested change to italic.
                            &quot;baselineOffsetSuggested&quot;: True or False, # Indicates if there was a suggested change to baseline_offset.
                            &quot;linkSuggested&quot;: True or False, # Indicates if there was a suggested change to link.
                            &quot;foregroundColorSuggested&quot;: True or False, # Indicates if there was a suggested change to foreground_color.
                            &quot;strikethroughSuggested&quot;: True or False, # Indicates if there was a suggested change to strikethrough.
                          },
                        },
                      },
                    },
                    &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;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;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;strikethrough&quot;: True or False, # Whether or not the text is struck through.
                            &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;bold&quot;: True or False, # Whether or not the text is rendered as bold.
                            &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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                                  &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                                  &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                                },
                              },
                            },
                            &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;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;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;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;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;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;bookmarkId&quot;: &quot;A String&quot;, # The ID of a bookmark in this document.
                            },
                            &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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                                  &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                                  &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                                },
                              },
                            },
                            &quot;smallCaps&quot;: True or False, # Whether or not the text is in small capital letters.
                            &quot;underline&quot;: True or False, # Whether or not the text is underlined.
                            &quot;italic&quot;: True or False, # Whether or not the text is italicized.
                          },
                          &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;underlineSuggested&quot;: True or False, # Indicates if there was a suggested change to underline.
                            &quot;smallCapsSuggested&quot;: True or False, # Indicates if there was a suggested change to small_caps.
                            &quot;backgroundColorSuggested&quot;: True or False, # Indicates if there was a suggested change to background_color.
                            &quot;weightedFontFamilySuggested&quot;: True or False, # Indicates if there was a suggested change to weighted_font_family.
                            &quot;boldSuggested&quot;: True or False, # Indicates if there was a suggested change to bold.
                            &quot;fontSizeSuggested&quot;: True or False, # Indicates if there was a suggested change to font_size.
                            &quot;italicSuggested&quot;: True or False, # Indicates if there was a suggested change to italic.
                            &quot;baselineOffsetSuggested&quot;: True or False, # Indicates if there was a suggested change to baseline_offset.
                            &quot;linkSuggested&quot;: True or False, # Indicates if there was a suggested change to link.
                            &quot;foregroundColorSuggested&quot;: True or False, # Indicates if there was a suggested change to foreground_color.
                            &quot;strikethroughSuggested&quot;: True or False, # Indicates if there was a suggested change to strikethrough.
                          },
                        },
                      },
                      &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;strikethrough&quot;: True or False, # Whether or not the text is struck through.
                        &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;bold&quot;: True or False, # Whether or not the text is rendered as bold.
                        &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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                              &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                              &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                            },
                          },
                        },
                        &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;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;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;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;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;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;bookmarkId&quot;: &quot;A String&quot;, # The ID of a bookmark in this document.
                        },
                        &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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                              &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                              &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                            },
                          },
                        },
                        &quot;smallCaps&quot;: True or False, # Whether or not the text is in small capital letters.
                        &quot;underline&quot;: True or False, # Whether or not the text is underlined.
                        &quot;italic&quot;: True or False, # Whether or not the text is italicized.
                      },
                      &quot;suggestedDeletionIds&quot;: [ # The suggested deletion IDs. If empty, then there are no suggested deletions of this content.
                        &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;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;strikethrough&quot;: True or False, # Whether or not the text is struck through.
                            &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;bold&quot;: True or False, # Whether or not the text is rendered as bold.
                            &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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                                  &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                                  &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                                },
                              },
                            },
                            &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;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;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;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;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;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;bookmarkId&quot;: &quot;A String&quot;, # The ID of a bookmark in this document.
                            },
                            &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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                                  &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                                  &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                                },
                              },
                            },
                            &quot;smallCaps&quot;: True or False, # Whether or not the text is in small capital letters.
                            &quot;underline&quot;: True or False, # Whether or not the text is underlined.
                            &quot;italic&quot;: True or False, # Whether or not the text is italicized.
                          },
                          &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;underlineSuggested&quot;: True or False, # Indicates if there was a suggested change to underline.
                            &quot;smallCapsSuggested&quot;: True or False, # Indicates if there was a suggested change to small_caps.
                            &quot;backgroundColorSuggested&quot;: True or False, # Indicates if there was a suggested change to background_color.
                            &quot;weightedFontFamilySuggested&quot;: True or False, # Indicates if there was a suggested change to weighted_font_family.
                            &quot;boldSuggested&quot;: True or False, # Indicates if there was a suggested change to bold.
                            &quot;fontSizeSuggested&quot;: True or False, # Indicates if there was a suggested change to font_size.
                            &quot;italicSuggested&quot;: True or False, # Indicates if there was a suggested change to italic.
                            &quot;baselineOffsetSuggested&quot;: True or False, # Indicates if there was a suggested change to baseline_offset.
                            &quot;linkSuggested&quot;: True or False, # Indicates if there was a suggested change to link.
                            &quot;foregroundColorSuggested&quot;: True or False, # Indicates if there was a suggested change to foreground_color.
                            &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. # 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;strikethrough&quot;: True or False, # Whether or not the text is struck through.
                        &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;bold&quot;: True or False, # Whether or not the text is rendered as bold.
                        &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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                              &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                              &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                            },
                          },
                        },
                        &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;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;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;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;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;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;bookmarkId&quot;: &quot;A String&quot;, # The ID of a bookmark in this document.
                        },
                        &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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                              &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                              &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                            },
                          },
                        },
                        &quot;smallCaps&quot;: True or False, # Whether or not the text is in small capital letters.
                        &quot;underline&quot;: True or False, # Whether or not the text is underlined.
                        &quot;italic&quot;: True or False, # Whether or not the text is italicized.
                      },
                      &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 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;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;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;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;strikethrough&quot;: True or False, # Whether or not the text is struck through.
                            &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;bold&quot;: True or False, # Whether or not the text is rendered as bold.
                            &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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                                  &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                                  &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                                },
                              },
                            },
                            &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;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;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;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;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;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;bookmarkId&quot;: &quot;A String&quot;, # The ID of a bookmark in this document.
                            },
                            &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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                                  &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                                  &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                                },
                              },
                            },
                            &quot;smallCaps&quot;: True or False, # Whether or not the text is in small capital letters.
                            &quot;underline&quot;: True or False, # Whether or not the text is underlined.
                            &quot;italic&quot;: True or False, # Whether or not the text is italicized.
                          },
                          &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;underlineSuggested&quot;: True or False, # Indicates if there was a suggested change to underline.
                            &quot;smallCapsSuggested&quot;: True or False, # Indicates if there was a suggested change to small_caps.
                            &quot;backgroundColorSuggested&quot;: True or False, # Indicates if there was a suggested change to background_color.
                            &quot;weightedFontFamilySuggested&quot;: True or False, # Indicates if there was a suggested change to weighted_font_family.
                            &quot;boldSuggested&quot;: True or False, # Indicates if there was a suggested change to bold.
                            &quot;fontSizeSuggested&quot;: True or False, # Indicates if there was a suggested change to font_size.
                            &quot;italicSuggested&quot;: True or False, # Indicates if there was a suggested change to italic.
                            &quot;baselineOffsetSuggested&quot;: True or False, # Indicates if there was a suggested change to baseline_offset.
                            &quot;linkSuggested&quot;: True or False, # Indicates if there was a suggested change to link.
                            &quot;foregroundColorSuggested&quot;: True or False, # Indicates if there was a suggested change to foreground_color.
                            &quot;strikethroughSuggested&quot;: True or False, # Indicates if there was a suggested change to strikethrough.
                          },
                        },
                      },
                      &quot;footnoteNumber&quot;: &quot;A String&quot;, # The rendered number of this footnote.
                      &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;footnoteId&quot;: &quot;A String&quot;, # The ID of the footnote that contains the content of this footnote reference.
                      &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;strikethrough&quot;: True or False, # Whether or not the text is struck through.
                        &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;bold&quot;: True or False, # Whether or not the text is rendered as bold.
                        &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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                              &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                              &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                            },
                          },
                        },
                        &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;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;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;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;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;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;bookmarkId&quot;: &quot;A String&quot;, # The ID of a bookmark in this document.
                        },
                        &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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                              &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                              &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                            },
                          },
                        },
                        &quot;smallCaps&quot;: True or False, # Whether or not the text is in small capital letters.
                        &quot;underline&quot;: True or False, # Whether or not the text is underlined.
                        &quot;italic&quot;: True or False, # Whether or not the text is italicized.
                      },
                      &quot;suggestedDeletionIds&quot;: [ # The suggested deletion IDs. If empty, then there are no suggested deletions of this content.
                        &quot;A String&quot;,
                      ],
                    },
                    &quot;inlineObjectElement&quot;: { # A ParagraphElement that contains an InlineObject. # An inline object paragraph element.
                      &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;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;strikethrough&quot;: True or False, # Whether or not the text is struck through.
                            &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;bold&quot;: True or False, # Whether or not the text is rendered as bold.
                            &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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                                  &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                                  &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                                },
                              },
                            },
                            &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;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;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;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;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;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;bookmarkId&quot;: &quot;A String&quot;, # The ID of a bookmark in this document.
                            },
                            &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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                                  &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                                  &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                                },
                              },
                            },
                            &quot;smallCaps&quot;: True or False, # Whether or not the text is in small capital letters.
                            &quot;underline&quot;: True or False, # Whether or not the text is underlined.
                            &quot;italic&quot;: True or False, # Whether or not the text is italicized.
                          },
                          &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;underlineSuggested&quot;: True or False, # Indicates if there was a suggested change to underline.
                            &quot;smallCapsSuggested&quot;: True or False, # Indicates if there was a suggested change to small_caps.
                            &quot;backgroundColorSuggested&quot;: True or False, # Indicates if there was a suggested change to background_color.
                            &quot;weightedFontFamilySuggested&quot;: True or False, # Indicates if there was a suggested change to weighted_font_family.
                            &quot;boldSuggested&quot;: True or False, # Indicates if there was a suggested change to bold.
                            &quot;fontSizeSuggested&quot;: True or False, # Indicates if there was a suggested change to font_size.
                            &quot;italicSuggested&quot;: True or False, # Indicates if there was a suggested change to italic.
                            &quot;baselineOffsetSuggested&quot;: True or False, # Indicates if there was a suggested change to baseline_offset.
                            &quot;linkSuggested&quot;: True or False, # Indicates if there was a suggested change to link.
                            &quot;foregroundColorSuggested&quot;: True or False, # Indicates if there was a suggested change to foreground_color.
                            &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. # 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;strikethrough&quot;: True or False, # Whether or not the text is struck through.
                        &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;bold&quot;: True or False, # Whether or not the text is rendered as bold.
                        &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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                              &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                              &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                            },
                          },
                        },
                        &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;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;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;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;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;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;bookmarkId&quot;: &quot;A String&quot;, # The ID of a bookmark in this document.
                        },
                        &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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                              &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                              &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                            },
                          },
                        },
                        &quot;smallCaps&quot;: True or False, # Whether or not the text is in small capital letters.
                        &quot;underline&quot;: True or False, # Whether or not the text is underlined.
                        &quot;italic&quot;: True or False, # Whether or not the text is italicized.
                      },
                      &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;suggestedDeletionIds&quot;: [ # The suggested deletion IDs. If empty, then there are no suggested deletions of this content.
                        &quot;A String&quot;,
                      ],
                      &quot;inlineObjectId&quot;: &quot;A String&quot;, # The ID of the InlineObject this element contains.
                    },
                    &quot;endIndex&quot;: 42, # The zero-base end index of this paragraph element, exclusive, in UTF-16 code units.
                    &quot;textRun&quot;: { # A ParagraphElement that represents a run of text that all has the same styling. # A text run paragraph element.
                      &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;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;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;strikethrough&quot;: True or False, # Whether or not the text is struck through.
                            &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;bold&quot;: True or False, # Whether or not the text is rendered as bold.
                            &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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                                  &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                                  &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                                },
                              },
                            },
                            &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;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;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;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;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;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;bookmarkId&quot;: &quot;A String&quot;, # The ID of a bookmark in this document.
                            },
                            &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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                                  &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                                  &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                                },
                              },
                            },
                            &quot;smallCaps&quot;: True or False, # Whether or not the text is in small capital letters.
                            &quot;underline&quot;: True or False, # Whether or not the text is underlined.
                            &quot;italic&quot;: True or False, # Whether or not the text is italicized.
                          },
                          &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;underlineSuggested&quot;: True or False, # Indicates if there was a suggested change to underline.
                            &quot;smallCapsSuggested&quot;: True or False, # Indicates if there was a suggested change to small_caps.
                            &quot;backgroundColorSuggested&quot;: True or False, # Indicates if there was a suggested change to background_color.
                            &quot;weightedFontFamilySuggested&quot;: True or False, # Indicates if there was a suggested change to weighted_font_family.
                            &quot;boldSuggested&quot;: True or False, # Indicates if there was a suggested change to bold.
                            &quot;fontSizeSuggested&quot;: True or False, # Indicates if there was a suggested change to font_size.
                            &quot;italicSuggested&quot;: True or False, # Indicates if there was a suggested change to italic.
                            &quot;baselineOffsetSuggested&quot;: True or False, # Indicates if there was a suggested change to baseline_offset.
                            &quot;linkSuggested&quot;: True or False, # Indicates if there was a suggested change to link.
                            &quot;foregroundColorSuggested&quot;: True or False, # Indicates if there was a suggested change to foreground_color.
                            &quot;strikethroughSuggested&quot;: True or False, # Indicates if there was a suggested change to strikethrough.
                          },
                        },
                      },
                      &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 run.
                        &quot;strikethrough&quot;: True or False, # Whether or not the text is struck through.
                        &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;bold&quot;: True or False, # Whether or not the text is rendered as bold.
                        &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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                              &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                              &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                            },
                          },
                        },
                        &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;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;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;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;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;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;bookmarkId&quot;: &quot;A String&quot;, # The ID of a bookmark in this document.
                        },
                        &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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                              &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                              &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                            },
                          },
                        },
                        &quot;smallCaps&quot;: True or False, # Whether or not the text is in small capital letters.
                        &quot;underline&quot;: True or False, # Whether or not the text is underlined.
                        &quot;italic&quot;: True or False, # Whether or not the text is italicized.
                      },
                      &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;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;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;type&quot;: &quot;A String&quot;, # The type of this auto text.
                      &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;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;strikethrough&quot;: True or False, # Whether or not the text is struck through.
                        &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;bold&quot;: True or False, # Whether or not the text is rendered as bold.
                        &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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                              &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                              &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                            },
                          },
                        },
                        &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;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;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;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;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;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;bookmarkId&quot;: &quot;A String&quot;, # The ID of a bookmark in this document.
                        },
                        &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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                              &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                              &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                            },
                          },
                        },
                        &quot;smallCaps&quot;: True or False, # Whether or not the text is in small capital letters.
                        &quot;underline&quot;: True or False, # Whether or not the text is underlined.
                        &quot;italic&quot;: True or False, # Whether or not the text is italicized.
                      },
                      &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;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;strikethrough&quot;: True or False, # Whether or not the text is struck through.
                            &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;bold&quot;: True or False, # Whether or not the text is rendered as bold.
                            &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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                                  &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                                  &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                                },
                              },
                            },
                            &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;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;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;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;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;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;bookmarkId&quot;: &quot;A String&quot;, # The ID of a bookmark in this document.
                            },
                            &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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                                  &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                                  &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                                },
                              },
                            },
                            &quot;smallCaps&quot;: True or False, # Whether or not the text is in small capital letters.
                            &quot;underline&quot;: True or False, # Whether or not the text is underlined.
                            &quot;italic&quot;: True or False, # Whether or not the text is italicized.
                          },
                          &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;underlineSuggested&quot;: True or False, # Indicates if there was a suggested change to underline.
                            &quot;smallCapsSuggested&quot;: True or False, # Indicates if there was a suggested change to small_caps.
                            &quot;backgroundColorSuggested&quot;: True or False, # Indicates if there was a suggested change to background_color.
                            &quot;weightedFontFamilySuggested&quot;: True or False, # Indicates if there was a suggested change to weighted_font_family.
                            &quot;boldSuggested&quot;: True or False, # Indicates if there was a suggested change to bold.
                            &quot;fontSizeSuggested&quot;: True or False, # Indicates if there was a suggested change to font_size.
                            &quot;italicSuggested&quot;: True or False, # Indicates if there was a suggested change to italic.
                            &quot;baselineOffsetSuggested&quot;: True or False, # Indicates if there was a suggested change to baseline_offset.
                            &quot;linkSuggested&quot;: True or False, # Indicates if there was a suggested change to link.
                            &quot;foregroundColorSuggested&quot;: True or False, # Indicates if there was a suggested change to foreground_color.
                            &quot;strikethroughSuggested&quot;: True or False, # Indicates if there was a suggested change to strikethrough.
                          },
                        },
                      },
                    },
                  },
                ],
                &quot;suggestedBulletChanges&quot;: { # The suggested changes to this paragraph&#x27;s bullet.
                  &quot;a_key&quot;: { # A suggested change to a Bullet.
                    &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;listId&quot;: &quot;A String&quot;, # The ID of the list this paragraph belongs to.
                      &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;strikethrough&quot;: True or False, # Whether or not the text is struck through.
                        &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;bold&quot;: True or False, # Whether or not the text is rendered as bold.
                        &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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                              &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                              &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                            },
                          },
                        },
                        &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;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;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;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;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;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;bookmarkId&quot;: &quot;A String&quot;, # The ID of a bookmark in this document.
                        },
                        &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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                              &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                              &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                            },
                          },
                        },
                        &quot;smallCaps&quot;: True or False, # Whether or not the text is in small capital letters.
                        &quot;underline&quot;: True or False, # Whether or not the text is underlined.
                        &quot;italic&quot;: True or False, # Whether or not the text is italicized.
                      },
                      &quot;nestingLevel&quot;: 42, # The nesting level of this paragraph in the list.
                    },
                    &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;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;underlineSuggested&quot;: True or False, # Indicates if there was a suggested change to underline.
                        &quot;smallCapsSuggested&quot;: True or False, # Indicates if there was a suggested change to small_caps.
                        &quot;backgroundColorSuggested&quot;: True or False, # Indicates if there was a suggested change to background_color.
                        &quot;weightedFontFamilySuggested&quot;: True or False, # Indicates if there was a suggested change to weighted_font_family.
                        &quot;boldSuggested&quot;: True or False, # Indicates if there was a suggested change to bold.
                        &quot;fontSizeSuggested&quot;: True or False, # Indicates if there was a suggested change to font_size.
                        &quot;italicSuggested&quot;: True or False, # Indicates if there was a suggested change to italic.
                        &quot;baselineOffsetSuggested&quot;: True or False, # Indicates if there was a suggested change to baseline_offset.
                        &quot;linkSuggested&quot;: True or False, # Indicates if there was a suggested change to link.
                        &quot;foregroundColorSuggested&quot;: True or False, # Indicates if there was a suggested change to foreground_color.
                        &quot;strikethroughSuggested&quot;: True or False, # Indicates if there was a suggested change to strikethrough.
                      },
                      &quot;nestingLevelSuggested&quot;: True or False, # Indicates if there was a suggested change to the nesting_level.
                      &quot;listIdSuggested&quot;: True or False, # Indicates if there was a suggested change to the list_id.
                    },
                  },
                },
                &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;alignment&quot;: &quot;A String&quot;, # The text alignment for this paragraph.
                  &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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                          &quot;green&quot;: 3.14, # The green component of the color, 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;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;spacingMode&quot;: &quot;A String&quot;, # The spacing mode for the paragraph.
                  &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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                          &quot;green&quot;: 3.14, # The green component of the color, 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;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;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;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;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;avoidWidowAndOrphan&quot;: True or False, # Whether to avoid widows and orphans for the paragraph. 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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                          &quot;green&quot;: 3.14, # The green component of the color, 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;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;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;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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                          &quot;green&quot;: 3.14, # The green component of the color, 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;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;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;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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                          &quot;green&quot;: 3.14, # The green component of the color, 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;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;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;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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                          &quot;green&quot;: 3.14, # The green component of the color, 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;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;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;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;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;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;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;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;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;spaceAboveSuggested&quot;: True or False, # Indicates if there was a suggested change to space_above.
                      &quot;directionSuggested&quot;: True or False, # Indicates if there was a suggested change to direction.
                      &quot;spacingModeSuggested&quot;: True or False, # Indicates if there was a suggested change to spacing_mode.
                      &quot;indentFirstLineSuggested&quot;: True or False, # Indicates if there was a suggested change to indent_first_line.
                      &quot;lineSpacingSuggested&quot;: True or False, # Indicates if there was a suggested change to line_spacing.
                      &quot;avoidWidowAndOrphanSuggested&quot;: True or False, # Indicates if there was a suggested change to avoid_widow_and_orphan.
                      &quot;borderBetweenSuggested&quot;: True or False, # Indicates if there was a suggested change to border_between.
                      &quot;keepLinesTogetherSuggested&quot;: True or False, # Indicates if there was a suggested change to keep_lines_together.
                      &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;borderTopSuggested&quot;: True or False, # Indicates if there was a suggested change to border_top.
                      &quot;indentEndSuggested&quot;: True or False, # Indicates if there was a suggested change to indent_end.
                      &quot;keepWithNextSuggested&quot;: True or False, # Indicates if there was a suggested change to keep_with_next.
                      &quot;indentStartSuggested&quot;: True or False, # Indicates if there was a suggested change to indent_start.
                      &quot;borderRightSuggested&quot;: True or False, # Indicates if there was a suggested change to border_right.
                      &quot;spaceBelowSuggested&quot;: True or False, # Indicates if there was a suggested change to space_below.
                      &quot;headingIdSuggested&quot;: True or False, # Indicates if there was a suggested change to heading_id.
                      &quot;borderLeftSuggested&quot;: True or False, # Indicates if there was a suggested change to border_left.
                      &quot;namedStyleTypeSuggested&quot;: True or False, # Indicates if there was a suggested change to named_style_type.
                    },
                    &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;alignment&quot;: &quot;A String&quot;, # The text alignment for this paragraph.
                      &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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                              &quot;green&quot;: 3.14, # The green component of the color, 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;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;spacingMode&quot;: &quot;A String&quot;, # The spacing mode for the paragraph.
                      &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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                              &quot;green&quot;: 3.14, # The green component of the color, 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;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;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;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;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;avoidWidowAndOrphan&quot;: True or False, # Whether to avoid widows and orphans for the paragraph. 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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                              &quot;green&quot;: 3.14, # The green component of the color, 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;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;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;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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                              &quot;green&quot;: 3.14, # The green component of the color, 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;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;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;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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                              &quot;green&quot;: 3.14, # The green component of the color, 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;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;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;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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                              &quot;green&quot;: 3.14, # The green component of the color, 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;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;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;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;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;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;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;listId&quot;: &quot;A String&quot;, # The ID of the list this paragraph belongs to.
                  &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;strikethrough&quot;: True or False, # Whether or not the text is struck through.
                    &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;bold&quot;: True or False, # Whether or not the text is rendered as bold.
                    &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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                          &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                          &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                        },
                      },
                    },
                    &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;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;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;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;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;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;bookmarkId&quot;: &quot;A String&quot;, # The ID of a bookmark in this document.
                    },
                    &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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                          &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                          &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                        },
                      },
                    },
                    &quot;smallCaps&quot;: True or False, # Whether or not the text is in small capital letters.
                    &quot;underline&quot;: True or False, # Whether or not the text is underlined.
                    &quot;italic&quot;: True or False, # Whether or not the text is italicized.
                  },
                  &quot;nestingLevel&quot;: 42, # The nesting level of this paragraph in the list.
                },
                &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;positionedObjectIds&quot;: [ # The IDs of the positioned objects tethered to this paragraph.
                  &quot;A String&quot;,
                ],
              },
              &quot;table&quot;: { # A StructuralElement representing a table. # A table type of structural element.
                &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;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;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;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 row, 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;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;suggestedDeletionIds&quot;: [ # The suggested deletion IDs. If empty, then there are no suggested deletions of this content.
                          &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;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;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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                                      &quot;green&quot;: 3.14, # The green component of the color, 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;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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                                    &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                                    &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                                  },
                                },
                              },
                              &quot;rowSpan&quot;: 42, # The row span of the cell. This property is read-only.
                              &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;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;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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                                      &quot;green&quot;: 3.14, # The green component of the color, 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;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;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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                                      &quot;green&quot;: 3.14, # The green component of the color, 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;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;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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                                      &quot;green&quot;: 3.14, # The green component of the color, 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;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;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;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;columnSpan&quot;: 42, # The column 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;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;borderLeftSuggested&quot;: True or False, # Indicates if there was a suggested change to border_left.
                              &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;paddingTopSuggested&quot;: True or False, # Indicates if there was a suggested change to padding_top.
                              &quot;paddingRightSuggested&quot;: True or False, # Indicates if there was a suggested change to padding_right.
                              &quot;rowSpanSuggested&quot;: True or False, # Indicates if there was a suggested change to row_span.
                              &quot;borderBottomSuggested&quot;: True or False, # Indicates if there was a suggested change to border_bottom.
                              &quot;backgroundColorSuggested&quot;: True or False, # Indicates if there was a suggested change to background_color.
                              &quot;columnSpanSuggested&quot;: True or False, # Indicates if there was a suggested change to column_span.
                              &quot;borderTopSuggested&quot;: True or False, # Indicates if there was a suggested change to border_top.
                              &quot;paddingBottomSuggested&quot;: True or False, # Indicates if there was a suggested change to padding_bottom.
                              &quot;paddingLeftSuggested&quot;: True or False, # Indicates if there was a suggested change to padding_left.
                            },
                          },
                        },
                        &quot;content&quot;: [ # The content of the cell.
                          # Object with schema name: StructuralElement
                        ],
                        &quot;endIndex&quot;: 42, # The zero-based end index of this cell, exclusive, 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;startIndex&quot;: 42, # The zero-based start index of this cell, in UTF-16 code units.
                        &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;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;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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                                  &quot;green&quot;: 3.14, # The green component of the color, 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;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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                                &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                                &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                              },
                            },
                          },
                          &quot;rowSpan&quot;: 42, # The row span of the cell. This property is read-only.
                          &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;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;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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                                  &quot;green&quot;: 3.14, # The green component of the color, 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;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;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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                                  &quot;green&quot;: 3.14, # The green component of the color, 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;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;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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                                  &quot;green&quot;: 3.14, # The green component of the color, 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;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;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;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;columnSpan&quot;: 42, # The column 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;suggestedTableRowStyleChanges&quot;: { # The suggested style changes to this row, keyed by suggestion ID.
                      &quot;a_key&quot;: { # A suggested change to a TableRowStyle.
                        &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;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;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;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;widthType&quot;: &quot;A String&quot;, # The width type of the column.
                    },
                  ],
                },
                &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;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;suggestedDeletionIds&quot;: [ # The suggested deletion IDs. If empty, then there are no suggested deletions of this content.
                  &quot;A String&quot;,
                ],
                &quot;content&quot;: [ # The content of the table of contents.
                  # Object with schema name: StructuralElement
                ],
              },
              &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;sectionStyle&quot;: { # The styling that applies to a section. # The style of the section after this section break.
                  &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;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;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;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;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;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;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;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;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;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;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;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;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;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;sectionType&quot;: &quot;A String&quot;, # Output only. The type of section.
                  &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;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;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;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;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;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;suggestedDeletionIds&quot;: [ # The suggested deletion IDs. If empty, then there are no suggested deletions of this content.
                  &quot;A String&quot;,
                ],
              },
            },
          ],
        },
      },
      &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;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 of the named range.
              &quot;namedRangeId&quot;: &quot;A String&quot;, # The ID of the named range.
            },
          ],
          &quot;name&quot;: &quot;A String&quot;, # The name that all the named ranges share.
        },
      },
      &quot;documentStyle&quot;: { # The style of the document. # Output only. The style of the document.
        &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;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;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;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;useEvenPageHeaderFooter&quot;: True or False, # Indicates whether to use the even page header / footer IDs for the even pages.
        &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;pageNumberStart&quot;: 42, # The page number from which to start counting the number of pages.
        &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;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;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;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;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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
              },
            },
          },
        },
        &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;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;pageSize&quot;: { # A width and height. # The size of a page in the document.
          &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;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;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;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;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;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;embeddedDrawingProperties&quot;: { # The properties of an embedded drawing. # The properties of an embedded drawing.
              },
              &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;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;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;spreadsheetId&quot;: &quot;A String&quot;, # The ID of the Google Sheets spreadsheet that contains the source chart.
                  &quot;chartId&quot;: 42, # The ID of the specific chart in the Google Sheets spreadsheet that is embedded.
                },
              },
              &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;size&quot;: { # A width and height. # The visible size of the image after cropping.
                &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;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;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;sourceUri&quot;: &quot;A String&quot;, # The source URI is the URI used to insert the image. The source URI can be empty.
                &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;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;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;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;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;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;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;description&quot;: &quot;A String&quot;, # The description of the embedded object. The `title` and `description` are both combined to display alt text.
              &quot;embeddedObjectBorder&quot;: { # A border around an EmbeddedObject. # The border of the embedded object.
                &quot;propertyState&quot;: &quot;A String&quot;, # The property state of the border property.
                &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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                      &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                      &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                    },
                  },
                },
                &quot;dashStyle&quot;: &quot;A String&quot;, # The dash style of the border.
                &quot;width&quot;: { # A magnitude in a single direction in the specified units. # The width of the border.
                  &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;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;layout&quot;: &quot;A String&quot;, # The layout of 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;suggestedPositionedObjectPropertiesChanges&quot;: { # The suggested changes to the positioned object properties, keyed by suggestion ID.
            &quot;a_key&quot;: { # A suggested change to PositionedObjectProperties.
              &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;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;embeddedDrawingProperties&quot;: { # The properties of an embedded drawing. # The properties of an embedded drawing.
                  },
                  &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;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;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;spreadsheetId&quot;: &quot;A String&quot;, # The ID of the Google Sheets spreadsheet that contains the source chart.
                      &quot;chartId&quot;: 42, # The ID of the specific chart in the Google Sheets spreadsheet that is embedded.
                    },
                  },
                  &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;size&quot;: { # A width and height. # The visible size of the image after cropping.
                    &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;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;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;sourceUri&quot;: &quot;A String&quot;, # The source URI is the URI used to insert the image. The source URI can be empty.
                    &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;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;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;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;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;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;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;description&quot;: &quot;A String&quot;, # The description of the embedded object. The `title` and `description` are both combined to display alt text.
                  &quot;embeddedObjectBorder&quot;: { # A border around an EmbeddedObject. # The border of the embedded object.
                    &quot;propertyState&quot;: &quot;A String&quot;, # The property state of the border property.
                    &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;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
                          &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
                          &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
                        },
                      },
                    },
                    &quot;dashStyle&quot;: &quot;A String&quot;, # The dash style of the border.
                    &quot;width&quot;: { # A magnitude in a single direction in the specified units. # The width of the border.
                      &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;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;layout&quot;: &quot;A String&quot;, # The layout of 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;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;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;leftOffsetSuggested&quot;: True or False, # Indicates if there was a suggested change to left_offset.
                  &quot;topOffsetSuggested&quot;: True or False, # Indicates if there was a suggested change to top_offset.
                },
                &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;marginLeftSuggested&quot;: True or False, # Indicates if there was a suggested change to margin_left.
                  &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;spreadsheetIdSuggested&quot;: True or False, # Indicates if there was a suggested change to spreadsheet_id.
                      &quot;chartIdSuggested&quot;: True or False, # Indicates if there was a suggested change to chart_id.
                    },
                  },
                  &quot;marginTopSuggested&quot;: True or False, # Indicates if there was a suggested change to margin_top.
                  &quot;titleSuggested&quot;: True or False, # Indicates if there was a suggested change to title.
                  &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;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;angleSuggested&quot;: True or False, # Indicates if there was a suggested change to angle.
                    &quot;contentUriSuggested&quot;: True or False, # Indicates if there was a suggested change to content_uri.
                    &quot;transparencySuggested&quot;: True or False, # Indicates if there was a suggested change to transparency.
                    &quot;sourceUriSuggested&quot;: True or False, # Indicates if there was a suggested change to source_uri.
                    &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;offsetLeftSuggested&quot;: True or False, # Indicates if there was a suggested change to offset_left.
                      &quot;offsetRightSuggested&quot;: True or False, # Indicates if there was a suggested change to offset_right.
                      &quot;angleSuggested&quot;: True or False, # Indicates if there was a suggested change to angle.
                      &quot;offsetTopSuggested&quot;: True or False, # Indicates if there was a suggested change to offset_top.
                      &quot;offsetBottomSuggested&quot;: True or False, # Indicates if there was a suggested change to offset_bottom.
                    },
                    &quot;contrastSuggested&quot;: True or False, # Indicates if there was a suggested change to contrast.
                    &quot;brightnessSuggested&quot;: True or False, # Indicates if there was a suggested change to brightness.
                  },
                  &quot;marginRightSuggested&quot;: True or False, # Indicates if there was a suggested change to margin_right.
                  &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;dashStyleSuggested&quot;: True or False, # Indicates if there was a suggested change to dash_style.
                    &quot;widthSuggested&quot;: True or False, # Indicates if there was a suggested change to width.
                    &quot;colorSuggested&quot;: True or False, # Indicates if there was a suggested change to color.
                    &quot;propertyStateSuggested&quot;: True or False, # Indicates if there was a suggested change to property_state.
                  },
                  &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;marginBottomSuggested&quot;: True or False, # Indicates if there was a suggested change to margin_bottom.
                },
              },
            },
          },
          &quot;suggestedInsertionId&quot;: &quot;A String&quot;, # The suggested insertion ID. If empty, then this is not a suggested insertion.
          &quot;objectId&quot;: &quot;A String&quot;, # The ID 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;,
          ],
        },
      },
    }</pre>
</div>

</body></html>