<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="fusiontables_v2.html">Fusion Tables API</a> . <a href="fusiontables_v2.table.html">table</a></h1>
<h2>Instance Methods</h2>
<p class="toc_element">
  <code><a href="#copy">copy(tableId, copyPresentation=None)</a></code></p>
<p class="firstline">Copies a table.</p>
<p class="toc_element">
  <code><a href="#delete">delete(tableId)</a></code></p>
<p class="firstline">Deletes a table.</p>
<p class="toc_element">
  <code><a href="#get">get(tableId)</a></code></p>
<p class="firstline">Retrieves a specific table by its ID.</p>
<p class="toc_element">
  <code><a href="#importRows">importRows(tableId, media_body=None, startLine=None, isStrict=None, encoding=None, delimiter=None, endLine=None)</a></code></p>
<p class="firstline">Imports more rows into a table.</p>
<p class="toc_element">
  <code><a href="#importTable">importTable(name, media_body=None, encoding=None, delimiter=None)</a></code></p>
<p class="firstline">Imports a new table.</p>
<p class="toc_element">
  <code><a href="#insert">insert(body)</a></code></p>
<p class="firstline">Creates a new table.</p>
<p class="toc_element">
  <code><a href="#list">list(pageToken=None, maxResults=None)</a></code></p>
<p class="firstline">Retrieves a list of tables a user owns.</p>
<p class="toc_element">
  <code><a href="#list_next">list_next(previous_request, previous_response)</a></code></p>
<p class="firstline">Retrieves the next page of results.</p>
<p class="toc_element">
  <code><a href="#patch">patch(tableId, body, replaceViewDefinition=None)</a></code></p>
<p class="firstline">Updates an existing table. Unless explicitly requested, only the name, description, and attribution will be updated. This method supports patch semantics.</p>
<p class="toc_element">
  <code><a href="#replaceRows">replaceRows(tableId, media_body=None, startLine=None, isStrict=None, encoding=None, delimiter=None, endLine=None)</a></code></p>
<p class="firstline">Replaces rows of an existing table. Current rows remain visible until all replacement rows are ready.</p>
<p class="toc_element">
  <code><a href="#update">update(tableId, body, replaceViewDefinition=None)</a></code></p>
<p class="firstline">Updates an existing table. Unless explicitly requested, only the name, description, and attribution will be updated.</p>
<h3>Method Details</h3>
<div class="method">
    <code class="details" id="copy">copy(tableId, copyPresentation=None)</code>
  <pre>Copies a table.

Args:
  tableId: string, ID of the table that is being copied. (required)
  copyPresentation: boolean, Whether to also copy tabs, styles, and templates. Default is false.

Returns:
  An object of the form:

    { # Represents a table.
      "tablePropertiesJsonSchema": "A String", # JSON schema for validating the JSON table properties.
      "kind": "fusiontables#table", # The kind of item this is. For a table, this is always fusiontables#table.
      "attribution": "A String", # Attribution assigned to the table.
      "description": "A String", # Description assigned to the table.
      "columnPropertiesJsonSchema": "A String", # Default JSON schema for validating all JSON column properties.
      "isExportable": True or False, # Variable for whether table is exportable.
      "baseTableIds": [ # Base table identifier if this table is a view or merged table.
        "A String",
      ],
      "tablePropertiesJson": "A String", # JSON object containing custom table properties.
      "attributionLink": "A String", # Optional link for attribution.
      "sql": "A String", # SQL that encodes the table definition for derived tables.
      "tableId": "A String", # Encrypted unique alphanumeric identifier for the table.
      "columns": [ # Columns in the table.
        { # Specifies the details of a column in a table.
            "graphPredicate": "A String", # Column graph predicate.
                # Used to map table to graph data model (subject,predicate,object)
                # See W3C Graph-based Data Model.
            "kind": "fusiontables#column", # The kind of item this is. For a column, this is always fusiontables#column.
            "validValues": [ # List of valid values used to validate data and supply a drop-down list of values in the web application.
              "A String",
            ],
            "description": "A String", # Column description.
            "baseColumn": { # Identifier of the base column. If present, this column is derived from the specified base column.
              "tableIndex": 42, # Offset to the entry in the list of base tables in the table definition.
              "columnId": 42, # The id of the column in the base table from which this column is derived.
            },
            "name": "A String", # Name of the column.
            "columnPropertiesJson": "A String", # JSON object containing custom column properties.
            "formatPattern": "A String", # Format pattern.
                # Acceptable values are DT_DATE_MEDIUMe.g Dec 24, 2008 DT_DATE_SHORTfor example 12/24/08 DT_DATE_TIME_MEDIUMfor example Dec 24, 2008 8:30:45 PM DT_DATE_TIME_SHORTfor example 12/24/08 8:30 PM DT_DAY_MONTH_2_DIGIT_YEARfor example 24/12/08 DT_DAY_MONTH_2_DIGIT_YEAR_TIMEfor example 24/12/08 20:30 DT_DAY_MONTH_2_DIGIT_YEAR_TIME_MERIDIANfor example 24/12/08 8:30 PM DT_DAY_MONTH_4_DIGIT_YEARfor example 24/12/2008 DT_DAY_MONTH_4_DIGIT_YEAR_TIMEfor example 24/12/2008 20:30 DT_DAY_MONTH_4_DIGIT_YEAR_TIME_MERIDIANfor example 24/12/2008 8:30 PM DT_ISO_YEAR_MONTH_DAYfor example 2008-12-24 DT_ISO_YEAR_MONTH_DAY_TIMEfor example 2008-12-24 20:30:45 DT_MONTH_DAY_4_DIGIT_YEARfor example 12/24/2008 DT_TIME_LONGfor example 8:30:45 PM UTC-6 DT_TIME_MEDIUMfor example 8:30:45 PM DT_TIME_SHORTfor example 8:30 PM DT_YEAR_ONLYfor example 2008 HIGHLIGHT_UNTYPED_CELLSHighlight cell data that does not match the data type NONENo formatting (default) NUMBER_CURRENCYfor example $1234.56 NUMBER_DEFAULTfor example 1,234.56 NUMBER_INTEGERfor example 1235 NUMBER_NO_SEPARATORfor example 1234.56 NUMBER_PERCENTfor example 123,456% NUMBER_SCIENTIFICfor example 1E3 STRING_EIGHT_LINE_IMAGEDisplays thumbnail images as tall as eight lines of text STRING_FOUR_LINE_IMAGEDisplays thumbnail images as tall as four lines of text STRING_JSON_TEXTAllows JSON editing of text in UI STRING_LINKTreats cell as a link (must start with http:// or https://) STRING_ONE_LINE_IMAGEDisplays thumbnail images as tall as one line of text STRING_VIDEO_OR_MAPDisplay a video or map thumbnail
            "columnJsonSchema": "A String", # JSON schema for interpreting JSON in this column.
            "type": "A String", # Type of the column.
            "validateData": True or False, # If true, data entered via the web application is validated.
            "columnId": 42, # Identifier for the column.
          },
      ],
      "name": "A String", # Name assigned to a table.
    }</pre>
</div>

<div class="method">
    <code class="details" id="delete">delete(tableId)</code>
  <pre>Deletes a table.

Args:
  tableId: string, ID of the table to be deleted. (required)
</pre>
</div>

<div class="method">
    <code class="details" id="get">get(tableId)</code>
  <pre>Retrieves a specific table by its ID.

Args:
  tableId: string, Identifier for the table being requested. (required)

Returns:
  An object of the form:

    { # Represents a table.
      "tablePropertiesJsonSchema": "A String", # JSON schema for validating the JSON table properties.
      "kind": "fusiontables#table", # The kind of item this is. For a table, this is always fusiontables#table.
      "attribution": "A String", # Attribution assigned to the table.
      "description": "A String", # Description assigned to the table.
      "columnPropertiesJsonSchema": "A String", # Default JSON schema for validating all JSON column properties.
      "isExportable": True or False, # Variable for whether table is exportable.
      "baseTableIds": [ # Base table identifier if this table is a view or merged table.
        "A String",
      ],
      "tablePropertiesJson": "A String", # JSON object containing custom table properties.
      "attributionLink": "A String", # Optional link for attribution.
      "sql": "A String", # SQL that encodes the table definition for derived tables.
      "tableId": "A String", # Encrypted unique alphanumeric identifier for the table.
      "columns": [ # Columns in the table.
        { # Specifies the details of a column in a table.
            "graphPredicate": "A String", # Column graph predicate.
                # Used to map table to graph data model (subject,predicate,object)
                # See W3C Graph-based Data Model.
            "kind": "fusiontables#column", # The kind of item this is. For a column, this is always fusiontables#column.
            "validValues": [ # List of valid values used to validate data and supply a drop-down list of values in the web application.
              "A String",
            ],
            "description": "A String", # Column description.
            "baseColumn": { # Identifier of the base column. If present, this column is derived from the specified base column.
              "tableIndex": 42, # Offset to the entry in the list of base tables in the table definition.
              "columnId": 42, # The id of the column in the base table from which this column is derived.
            },
            "name": "A String", # Name of the column.
            "columnPropertiesJson": "A String", # JSON object containing custom column properties.
            "formatPattern": "A String", # Format pattern.
                # Acceptable values are DT_DATE_MEDIUMe.g Dec 24, 2008 DT_DATE_SHORTfor example 12/24/08 DT_DATE_TIME_MEDIUMfor example Dec 24, 2008 8:30:45 PM DT_DATE_TIME_SHORTfor example 12/24/08 8:30 PM DT_DAY_MONTH_2_DIGIT_YEARfor example 24/12/08 DT_DAY_MONTH_2_DIGIT_YEAR_TIMEfor example 24/12/08 20:30 DT_DAY_MONTH_2_DIGIT_YEAR_TIME_MERIDIANfor example 24/12/08 8:30 PM DT_DAY_MONTH_4_DIGIT_YEARfor example 24/12/2008 DT_DAY_MONTH_4_DIGIT_YEAR_TIMEfor example 24/12/2008 20:30 DT_DAY_MONTH_4_DIGIT_YEAR_TIME_MERIDIANfor example 24/12/2008 8:30 PM DT_ISO_YEAR_MONTH_DAYfor example 2008-12-24 DT_ISO_YEAR_MONTH_DAY_TIMEfor example 2008-12-24 20:30:45 DT_MONTH_DAY_4_DIGIT_YEARfor example 12/24/2008 DT_TIME_LONGfor example 8:30:45 PM UTC-6 DT_TIME_MEDIUMfor example 8:30:45 PM DT_TIME_SHORTfor example 8:30 PM DT_YEAR_ONLYfor example 2008 HIGHLIGHT_UNTYPED_CELLSHighlight cell data that does not match the data type NONENo formatting (default) NUMBER_CURRENCYfor example $1234.56 NUMBER_DEFAULTfor example 1,234.56 NUMBER_INTEGERfor example 1235 NUMBER_NO_SEPARATORfor example 1234.56 NUMBER_PERCENTfor example 123,456% NUMBER_SCIENTIFICfor example 1E3 STRING_EIGHT_LINE_IMAGEDisplays thumbnail images as tall as eight lines of text STRING_FOUR_LINE_IMAGEDisplays thumbnail images as tall as four lines of text STRING_JSON_TEXTAllows JSON editing of text in UI STRING_LINKTreats cell as a link (must start with http:// or https://) STRING_ONE_LINE_IMAGEDisplays thumbnail images as tall as one line of text STRING_VIDEO_OR_MAPDisplay a video or map thumbnail
            "columnJsonSchema": "A String", # JSON schema for interpreting JSON in this column.
            "type": "A String", # Type of the column.
            "validateData": True or False, # If true, data entered via the web application is validated.
            "columnId": 42, # Identifier for the column.
          },
      ],
      "name": "A String", # Name assigned to a table.
    }</pre>
</div>

<div class="method">
    <code class="details" id="importRows">importRows(tableId, media_body=None, startLine=None, isStrict=None, encoding=None, delimiter=None, endLine=None)</code>
  <pre>Imports more rows into a table.

Args:
  tableId: string, The table into which new rows are being imported. (required)
  media_body: string, The filename of the media request body, or an instance of a MediaUpload object.
  startLine: integer, The index of the first line from which to start importing, inclusive. Default is 0.
  isStrict: boolean, Whether the imported CSV must have the same number of values for each row. If false, rows with fewer values will be padded with empty values. Default is true.
  encoding: string, The encoding of the content. Default is UTF-8. Use auto-detect if you are unsure of the encoding.
  delimiter: string, The delimiter used to separate cell values. This can only consist of a single character. Default is ,.
  endLine: integer, The index of the line up to which data will be imported. Default is to import the entire file. If endLine is negative, it is an offset from the end of the file; the imported content will exclude the last endLine lines.

Returns:
  An object of the form:

    { # Represents an import request.
    "numRowsReceived": "A String", # The number of rows received from the import request.
    "kind": "fusiontables#import", # The kind of item this is. For an import, this is always fusiontables#import.
  }</pre>
</div>

<div class="method">
    <code class="details" id="importTable">importTable(name, media_body=None, encoding=None, delimiter=None)</code>
  <pre>Imports a new table.

Args:
  name: string, The name to be assigned to the new table. (required)
  media_body: string, The filename of the media request body, or an instance of a MediaUpload object.
  encoding: string, The encoding of the content. Default is UTF-8. Use auto-detect if you are unsure of the encoding.
  delimiter: string, The delimiter used to separate cell values. This can only consist of a single character. Default is ,.

Returns:
  An object of the form:

    { # Represents a table.
      "tablePropertiesJsonSchema": "A String", # JSON schema for validating the JSON table properties.
      "kind": "fusiontables#table", # The kind of item this is. For a table, this is always fusiontables#table.
      "attribution": "A String", # Attribution assigned to the table.
      "description": "A String", # Description assigned to the table.
      "columnPropertiesJsonSchema": "A String", # Default JSON schema for validating all JSON column properties.
      "isExportable": True or False, # Variable for whether table is exportable.
      "baseTableIds": [ # Base table identifier if this table is a view or merged table.
        "A String",
      ],
      "tablePropertiesJson": "A String", # JSON object containing custom table properties.
      "attributionLink": "A String", # Optional link for attribution.
      "sql": "A String", # SQL that encodes the table definition for derived tables.
      "tableId": "A String", # Encrypted unique alphanumeric identifier for the table.
      "columns": [ # Columns in the table.
        { # Specifies the details of a column in a table.
            "graphPredicate": "A String", # Column graph predicate.
                # Used to map table to graph data model (subject,predicate,object)
                # See W3C Graph-based Data Model.
            "kind": "fusiontables#column", # The kind of item this is. For a column, this is always fusiontables#column.
            "validValues": [ # List of valid values used to validate data and supply a drop-down list of values in the web application.
              "A String",
            ],
            "description": "A String", # Column description.
            "baseColumn": { # Identifier of the base column. If present, this column is derived from the specified base column.
              "tableIndex": 42, # Offset to the entry in the list of base tables in the table definition.
              "columnId": 42, # The id of the column in the base table from which this column is derived.
            },
            "name": "A String", # Name of the column.
            "columnPropertiesJson": "A String", # JSON object containing custom column properties.
            "formatPattern": "A String", # Format pattern.
                # Acceptable values are DT_DATE_MEDIUMe.g Dec 24, 2008 DT_DATE_SHORTfor example 12/24/08 DT_DATE_TIME_MEDIUMfor example Dec 24, 2008 8:30:45 PM DT_DATE_TIME_SHORTfor example 12/24/08 8:30 PM DT_DAY_MONTH_2_DIGIT_YEARfor example 24/12/08 DT_DAY_MONTH_2_DIGIT_YEAR_TIMEfor example 24/12/08 20:30 DT_DAY_MONTH_2_DIGIT_YEAR_TIME_MERIDIANfor example 24/12/08 8:30 PM DT_DAY_MONTH_4_DIGIT_YEARfor example 24/12/2008 DT_DAY_MONTH_4_DIGIT_YEAR_TIMEfor example 24/12/2008 20:30 DT_DAY_MONTH_4_DIGIT_YEAR_TIME_MERIDIANfor example 24/12/2008 8:30 PM DT_ISO_YEAR_MONTH_DAYfor example 2008-12-24 DT_ISO_YEAR_MONTH_DAY_TIMEfor example 2008-12-24 20:30:45 DT_MONTH_DAY_4_DIGIT_YEARfor example 12/24/2008 DT_TIME_LONGfor example 8:30:45 PM UTC-6 DT_TIME_MEDIUMfor example 8:30:45 PM DT_TIME_SHORTfor example 8:30 PM DT_YEAR_ONLYfor example 2008 HIGHLIGHT_UNTYPED_CELLSHighlight cell data that does not match the data type NONENo formatting (default) NUMBER_CURRENCYfor example $1234.56 NUMBER_DEFAULTfor example 1,234.56 NUMBER_INTEGERfor example 1235 NUMBER_NO_SEPARATORfor example 1234.56 NUMBER_PERCENTfor example 123,456% NUMBER_SCIENTIFICfor example 1E3 STRING_EIGHT_LINE_IMAGEDisplays thumbnail images as tall as eight lines of text STRING_FOUR_LINE_IMAGEDisplays thumbnail images as tall as four lines of text STRING_JSON_TEXTAllows JSON editing of text in UI STRING_LINKTreats cell as a link (must start with http:// or https://) STRING_ONE_LINE_IMAGEDisplays thumbnail images as tall as one line of text STRING_VIDEO_OR_MAPDisplay a video or map thumbnail
            "columnJsonSchema": "A String", # JSON schema for interpreting JSON in this column.
            "type": "A String", # Type of the column.
            "validateData": True or False, # If true, data entered via the web application is validated.
            "columnId": 42, # Identifier for the column.
          },
      ],
      "name": "A String", # Name assigned to a table.
    }</pre>
</div>

<div class="method">
    <code class="details" id="insert">insert(body)</code>
  <pre>Creates a new table.

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

{ # Represents a table.
    "tablePropertiesJsonSchema": "A String", # JSON schema for validating the JSON table properties.
    "kind": "fusiontables#table", # The kind of item this is. For a table, this is always fusiontables#table.
    "attribution": "A String", # Attribution assigned to the table.
    "description": "A String", # Description assigned to the table.
    "columnPropertiesJsonSchema": "A String", # Default JSON schema for validating all JSON column properties.
    "isExportable": True or False, # Variable for whether table is exportable.
    "baseTableIds": [ # Base table identifier if this table is a view or merged table.
      "A String",
    ],
    "tablePropertiesJson": "A String", # JSON object containing custom table properties.
    "attributionLink": "A String", # Optional link for attribution.
    "sql": "A String", # SQL that encodes the table definition for derived tables.
    "tableId": "A String", # Encrypted unique alphanumeric identifier for the table.
    "columns": [ # Columns in the table.
      { # Specifies the details of a column in a table.
          "graphPredicate": "A String", # Column graph predicate.
              # Used to map table to graph data model (subject,predicate,object)
              # See W3C Graph-based Data Model.
          "kind": "fusiontables#column", # The kind of item this is. For a column, this is always fusiontables#column.
          "validValues": [ # List of valid values used to validate data and supply a drop-down list of values in the web application.
            "A String",
          ],
          "description": "A String", # Column description.
          "baseColumn": { # Identifier of the base column. If present, this column is derived from the specified base column.
            "tableIndex": 42, # Offset to the entry in the list of base tables in the table definition.
            "columnId": 42, # The id of the column in the base table from which this column is derived.
          },
          "name": "A String", # Name of the column.
          "columnPropertiesJson": "A String", # JSON object containing custom column properties.
          "formatPattern": "A String", # Format pattern.
              # Acceptable values are DT_DATE_MEDIUMe.g Dec 24, 2008 DT_DATE_SHORTfor example 12/24/08 DT_DATE_TIME_MEDIUMfor example Dec 24, 2008 8:30:45 PM DT_DATE_TIME_SHORTfor example 12/24/08 8:30 PM DT_DAY_MONTH_2_DIGIT_YEARfor example 24/12/08 DT_DAY_MONTH_2_DIGIT_YEAR_TIMEfor example 24/12/08 20:30 DT_DAY_MONTH_2_DIGIT_YEAR_TIME_MERIDIANfor example 24/12/08 8:30 PM DT_DAY_MONTH_4_DIGIT_YEARfor example 24/12/2008 DT_DAY_MONTH_4_DIGIT_YEAR_TIMEfor example 24/12/2008 20:30 DT_DAY_MONTH_4_DIGIT_YEAR_TIME_MERIDIANfor example 24/12/2008 8:30 PM DT_ISO_YEAR_MONTH_DAYfor example 2008-12-24 DT_ISO_YEAR_MONTH_DAY_TIMEfor example 2008-12-24 20:30:45 DT_MONTH_DAY_4_DIGIT_YEARfor example 12/24/2008 DT_TIME_LONGfor example 8:30:45 PM UTC-6 DT_TIME_MEDIUMfor example 8:30:45 PM DT_TIME_SHORTfor example 8:30 PM DT_YEAR_ONLYfor example 2008 HIGHLIGHT_UNTYPED_CELLSHighlight cell data that does not match the data type NONENo formatting (default) NUMBER_CURRENCYfor example $1234.56 NUMBER_DEFAULTfor example 1,234.56 NUMBER_INTEGERfor example 1235 NUMBER_NO_SEPARATORfor example 1234.56 NUMBER_PERCENTfor example 123,456% NUMBER_SCIENTIFICfor example 1E3 STRING_EIGHT_LINE_IMAGEDisplays thumbnail images as tall as eight lines of text STRING_FOUR_LINE_IMAGEDisplays thumbnail images as tall as four lines of text STRING_JSON_TEXTAllows JSON editing of text in UI STRING_LINKTreats cell as a link (must start with http:// or https://) STRING_ONE_LINE_IMAGEDisplays thumbnail images as tall as one line of text STRING_VIDEO_OR_MAPDisplay a video or map thumbnail
          "columnJsonSchema": "A String", # JSON schema for interpreting JSON in this column.
          "type": "A String", # Type of the column.
          "validateData": True or False, # If true, data entered via the web application is validated.
          "columnId": 42, # Identifier for the column.
        },
    ],
    "name": "A String", # Name assigned to a table.
  }


Returns:
  An object of the form:

    { # Represents a table.
      "tablePropertiesJsonSchema": "A String", # JSON schema for validating the JSON table properties.
      "kind": "fusiontables#table", # The kind of item this is. For a table, this is always fusiontables#table.
      "attribution": "A String", # Attribution assigned to the table.
      "description": "A String", # Description assigned to the table.
      "columnPropertiesJsonSchema": "A String", # Default JSON schema for validating all JSON column properties.
      "isExportable": True or False, # Variable for whether table is exportable.
      "baseTableIds": [ # Base table identifier if this table is a view or merged table.
        "A String",
      ],
      "tablePropertiesJson": "A String", # JSON object containing custom table properties.
      "attributionLink": "A String", # Optional link for attribution.
      "sql": "A String", # SQL that encodes the table definition for derived tables.
      "tableId": "A String", # Encrypted unique alphanumeric identifier for the table.
      "columns": [ # Columns in the table.
        { # Specifies the details of a column in a table.
            "graphPredicate": "A String", # Column graph predicate.
                # Used to map table to graph data model (subject,predicate,object)
                # See W3C Graph-based Data Model.
            "kind": "fusiontables#column", # The kind of item this is. For a column, this is always fusiontables#column.
            "validValues": [ # List of valid values used to validate data and supply a drop-down list of values in the web application.
              "A String",
            ],
            "description": "A String", # Column description.
            "baseColumn": { # Identifier of the base column. If present, this column is derived from the specified base column.
              "tableIndex": 42, # Offset to the entry in the list of base tables in the table definition.
              "columnId": 42, # The id of the column in the base table from which this column is derived.
            },
            "name": "A String", # Name of the column.
            "columnPropertiesJson": "A String", # JSON object containing custom column properties.
            "formatPattern": "A String", # Format pattern.
                # Acceptable values are DT_DATE_MEDIUMe.g Dec 24, 2008 DT_DATE_SHORTfor example 12/24/08 DT_DATE_TIME_MEDIUMfor example Dec 24, 2008 8:30:45 PM DT_DATE_TIME_SHORTfor example 12/24/08 8:30 PM DT_DAY_MONTH_2_DIGIT_YEARfor example 24/12/08 DT_DAY_MONTH_2_DIGIT_YEAR_TIMEfor example 24/12/08 20:30 DT_DAY_MONTH_2_DIGIT_YEAR_TIME_MERIDIANfor example 24/12/08 8:30 PM DT_DAY_MONTH_4_DIGIT_YEARfor example 24/12/2008 DT_DAY_MONTH_4_DIGIT_YEAR_TIMEfor example 24/12/2008 20:30 DT_DAY_MONTH_4_DIGIT_YEAR_TIME_MERIDIANfor example 24/12/2008 8:30 PM DT_ISO_YEAR_MONTH_DAYfor example 2008-12-24 DT_ISO_YEAR_MONTH_DAY_TIMEfor example 2008-12-24 20:30:45 DT_MONTH_DAY_4_DIGIT_YEARfor example 12/24/2008 DT_TIME_LONGfor example 8:30:45 PM UTC-6 DT_TIME_MEDIUMfor example 8:30:45 PM DT_TIME_SHORTfor example 8:30 PM DT_YEAR_ONLYfor example 2008 HIGHLIGHT_UNTYPED_CELLSHighlight cell data that does not match the data type NONENo formatting (default) NUMBER_CURRENCYfor example $1234.56 NUMBER_DEFAULTfor example 1,234.56 NUMBER_INTEGERfor example 1235 NUMBER_NO_SEPARATORfor example 1234.56 NUMBER_PERCENTfor example 123,456% NUMBER_SCIENTIFICfor example 1E3 STRING_EIGHT_LINE_IMAGEDisplays thumbnail images as tall as eight lines of text STRING_FOUR_LINE_IMAGEDisplays thumbnail images as tall as four lines of text STRING_JSON_TEXTAllows JSON editing of text in UI STRING_LINKTreats cell as a link (must start with http:// or https://) STRING_ONE_LINE_IMAGEDisplays thumbnail images as tall as one line of text STRING_VIDEO_OR_MAPDisplay a video or map thumbnail
            "columnJsonSchema": "A String", # JSON schema for interpreting JSON in this column.
            "type": "A String", # Type of the column.
            "validateData": True or False, # If true, data entered via the web application is validated.
            "columnId": 42, # Identifier for the column.
          },
      ],
      "name": "A String", # Name assigned to a table.
    }</pre>
</div>

<div class="method">
    <code class="details" id="list">list(pageToken=None, maxResults=None)</code>
  <pre>Retrieves a list of tables a user owns.

Args:
  pageToken: string, Continuation token specifying which result page to return.
  maxResults: integer, Maximum number of tables to return. Default is 5.

Returns:
  An object of the form:

    { # Represents a list of tables.
    "nextPageToken": "A String", # Token used to access the next page of this result. No token is displayed if there are no more pages left.
    "items": [ # List of all requested tables.
      { # Represents a table.
          "tablePropertiesJsonSchema": "A String", # JSON schema for validating the JSON table properties.
          "kind": "fusiontables#table", # The kind of item this is. For a table, this is always fusiontables#table.
          "attribution": "A String", # Attribution assigned to the table.
          "description": "A String", # Description assigned to the table.
          "columnPropertiesJsonSchema": "A String", # Default JSON schema for validating all JSON column properties.
          "isExportable": True or False, # Variable for whether table is exportable.
          "baseTableIds": [ # Base table identifier if this table is a view or merged table.
            "A String",
          ],
          "tablePropertiesJson": "A String", # JSON object containing custom table properties.
          "attributionLink": "A String", # Optional link for attribution.
          "sql": "A String", # SQL that encodes the table definition for derived tables.
          "tableId": "A String", # Encrypted unique alphanumeric identifier for the table.
          "columns": [ # Columns in the table.
            { # Specifies the details of a column in a table.
                "graphPredicate": "A String", # Column graph predicate.
                    # Used to map table to graph data model (subject,predicate,object)
                    # See W3C Graph-based Data Model.
                "kind": "fusiontables#column", # The kind of item this is. For a column, this is always fusiontables#column.
                "validValues": [ # List of valid values used to validate data and supply a drop-down list of values in the web application.
                  "A String",
                ],
                "description": "A String", # Column description.
                "baseColumn": { # Identifier of the base column. If present, this column is derived from the specified base column.
                  "tableIndex": 42, # Offset to the entry in the list of base tables in the table definition.
                  "columnId": 42, # The id of the column in the base table from which this column is derived.
                },
                "name": "A String", # Name of the column.
                "columnPropertiesJson": "A String", # JSON object containing custom column properties.
                "formatPattern": "A String", # Format pattern.
                    # Acceptable values are DT_DATE_MEDIUMe.g Dec 24, 2008 DT_DATE_SHORTfor example 12/24/08 DT_DATE_TIME_MEDIUMfor example Dec 24, 2008 8:30:45 PM DT_DATE_TIME_SHORTfor example 12/24/08 8:30 PM DT_DAY_MONTH_2_DIGIT_YEARfor example 24/12/08 DT_DAY_MONTH_2_DIGIT_YEAR_TIMEfor example 24/12/08 20:30 DT_DAY_MONTH_2_DIGIT_YEAR_TIME_MERIDIANfor example 24/12/08 8:30 PM DT_DAY_MONTH_4_DIGIT_YEARfor example 24/12/2008 DT_DAY_MONTH_4_DIGIT_YEAR_TIMEfor example 24/12/2008 20:30 DT_DAY_MONTH_4_DIGIT_YEAR_TIME_MERIDIANfor example 24/12/2008 8:30 PM DT_ISO_YEAR_MONTH_DAYfor example 2008-12-24 DT_ISO_YEAR_MONTH_DAY_TIMEfor example 2008-12-24 20:30:45 DT_MONTH_DAY_4_DIGIT_YEARfor example 12/24/2008 DT_TIME_LONGfor example 8:30:45 PM UTC-6 DT_TIME_MEDIUMfor example 8:30:45 PM DT_TIME_SHORTfor example 8:30 PM DT_YEAR_ONLYfor example 2008 HIGHLIGHT_UNTYPED_CELLSHighlight cell data that does not match the data type NONENo formatting (default) NUMBER_CURRENCYfor example $1234.56 NUMBER_DEFAULTfor example 1,234.56 NUMBER_INTEGERfor example 1235 NUMBER_NO_SEPARATORfor example 1234.56 NUMBER_PERCENTfor example 123,456% NUMBER_SCIENTIFICfor example 1E3 STRING_EIGHT_LINE_IMAGEDisplays thumbnail images as tall as eight lines of text STRING_FOUR_LINE_IMAGEDisplays thumbnail images as tall as four lines of text STRING_JSON_TEXTAllows JSON editing of text in UI STRING_LINKTreats cell as a link (must start with http:// or https://) STRING_ONE_LINE_IMAGEDisplays thumbnail images as tall as one line of text STRING_VIDEO_OR_MAPDisplay a video or map thumbnail
                "columnJsonSchema": "A String", # JSON schema for interpreting JSON in this column.
                "type": "A String", # Type of the column.
                "validateData": True or False, # If true, data entered via the web application is validated.
                "columnId": 42, # Identifier for the column.
              },
          ],
          "name": "A String", # Name assigned to a table.
        },
    ],
    "kind": "fusiontables#tableList", # The kind of item this is. For table list, this is always fusiontables#tableList.
  }</pre>
</div>

<div class="method">
    <code class="details" id="list_next">list_next(previous_request, previous_response)</code>
  <pre>Retrieves the next page of results.

Args:
  previous_request: The request for the previous page. (required)
  previous_response: The response from the request for the previous page. (required)

Returns:
  A request object that you can call 'execute()' on to request the next
  page. Returns None if there are no more items in the collection.
    </pre>
</div>

<div class="method">
    <code class="details" id="patch">patch(tableId, body, replaceViewDefinition=None)</code>
  <pre>Updates an existing table. Unless explicitly requested, only the name, description, and attribution will be updated. This method supports patch semantics.

Args:
  tableId: string, ID of the table that is being updated. (required)
  body: object, The request body. (required)
    The object takes the form of:

{ # Represents a table.
    "tablePropertiesJsonSchema": "A String", # JSON schema for validating the JSON table properties.
    "kind": "fusiontables#table", # The kind of item this is. For a table, this is always fusiontables#table.
    "attribution": "A String", # Attribution assigned to the table.
    "description": "A String", # Description assigned to the table.
    "columnPropertiesJsonSchema": "A String", # Default JSON schema for validating all JSON column properties.
    "isExportable": True or False, # Variable for whether table is exportable.
    "baseTableIds": [ # Base table identifier if this table is a view or merged table.
      "A String",
    ],
    "tablePropertiesJson": "A String", # JSON object containing custom table properties.
    "attributionLink": "A String", # Optional link for attribution.
    "sql": "A String", # SQL that encodes the table definition for derived tables.
    "tableId": "A String", # Encrypted unique alphanumeric identifier for the table.
    "columns": [ # Columns in the table.
      { # Specifies the details of a column in a table.
          "graphPredicate": "A String", # Column graph predicate.
              # Used to map table to graph data model (subject,predicate,object)
              # See W3C Graph-based Data Model.
          "kind": "fusiontables#column", # The kind of item this is. For a column, this is always fusiontables#column.
          "validValues": [ # List of valid values used to validate data and supply a drop-down list of values in the web application.
            "A String",
          ],
          "description": "A String", # Column description.
          "baseColumn": { # Identifier of the base column. If present, this column is derived from the specified base column.
            "tableIndex": 42, # Offset to the entry in the list of base tables in the table definition.
            "columnId": 42, # The id of the column in the base table from which this column is derived.
          },
          "name": "A String", # Name of the column.
          "columnPropertiesJson": "A String", # JSON object containing custom column properties.
          "formatPattern": "A String", # Format pattern.
              # Acceptable values are DT_DATE_MEDIUMe.g Dec 24, 2008 DT_DATE_SHORTfor example 12/24/08 DT_DATE_TIME_MEDIUMfor example Dec 24, 2008 8:30:45 PM DT_DATE_TIME_SHORTfor example 12/24/08 8:30 PM DT_DAY_MONTH_2_DIGIT_YEARfor example 24/12/08 DT_DAY_MONTH_2_DIGIT_YEAR_TIMEfor example 24/12/08 20:30 DT_DAY_MONTH_2_DIGIT_YEAR_TIME_MERIDIANfor example 24/12/08 8:30 PM DT_DAY_MONTH_4_DIGIT_YEARfor example 24/12/2008 DT_DAY_MONTH_4_DIGIT_YEAR_TIMEfor example 24/12/2008 20:30 DT_DAY_MONTH_4_DIGIT_YEAR_TIME_MERIDIANfor example 24/12/2008 8:30 PM DT_ISO_YEAR_MONTH_DAYfor example 2008-12-24 DT_ISO_YEAR_MONTH_DAY_TIMEfor example 2008-12-24 20:30:45 DT_MONTH_DAY_4_DIGIT_YEARfor example 12/24/2008 DT_TIME_LONGfor example 8:30:45 PM UTC-6 DT_TIME_MEDIUMfor example 8:30:45 PM DT_TIME_SHORTfor example 8:30 PM DT_YEAR_ONLYfor example 2008 HIGHLIGHT_UNTYPED_CELLSHighlight cell data that does not match the data type NONENo formatting (default) NUMBER_CURRENCYfor example $1234.56 NUMBER_DEFAULTfor example 1,234.56 NUMBER_INTEGERfor example 1235 NUMBER_NO_SEPARATORfor example 1234.56 NUMBER_PERCENTfor example 123,456% NUMBER_SCIENTIFICfor example 1E3 STRING_EIGHT_LINE_IMAGEDisplays thumbnail images as tall as eight lines of text STRING_FOUR_LINE_IMAGEDisplays thumbnail images as tall as four lines of text STRING_JSON_TEXTAllows JSON editing of text in UI STRING_LINKTreats cell as a link (must start with http:// or https://) STRING_ONE_LINE_IMAGEDisplays thumbnail images as tall as one line of text STRING_VIDEO_OR_MAPDisplay a video or map thumbnail
          "columnJsonSchema": "A String", # JSON schema for interpreting JSON in this column.
          "type": "A String", # Type of the column.
          "validateData": True or False, # If true, data entered via the web application is validated.
          "columnId": 42, # Identifier for the column.
        },
    ],
    "name": "A String", # Name assigned to a table.
  }

  replaceViewDefinition: boolean, Whether the view definition is also updated. The specified view definition replaces the existing one. Only a view can be updated with a new definition.

Returns:
  An object of the form:

    { # Represents a table.
      "tablePropertiesJsonSchema": "A String", # JSON schema for validating the JSON table properties.
      "kind": "fusiontables#table", # The kind of item this is. For a table, this is always fusiontables#table.
      "attribution": "A String", # Attribution assigned to the table.
      "description": "A String", # Description assigned to the table.
      "columnPropertiesJsonSchema": "A String", # Default JSON schema for validating all JSON column properties.
      "isExportable": True or False, # Variable for whether table is exportable.
      "baseTableIds": [ # Base table identifier if this table is a view or merged table.
        "A String",
      ],
      "tablePropertiesJson": "A String", # JSON object containing custom table properties.
      "attributionLink": "A String", # Optional link for attribution.
      "sql": "A String", # SQL that encodes the table definition for derived tables.
      "tableId": "A String", # Encrypted unique alphanumeric identifier for the table.
      "columns": [ # Columns in the table.
        { # Specifies the details of a column in a table.
            "graphPredicate": "A String", # Column graph predicate.
                # Used to map table to graph data model (subject,predicate,object)
                # See W3C Graph-based Data Model.
            "kind": "fusiontables#column", # The kind of item this is. For a column, this is always fusiontables#column.
            "validValues": [ # List of valid values used to validate data and supply a drop-down list of values in the web application.
              "A String",
            ],
            "description": "A String", # Column description.
            "baseColumn": { # Identifier of the base column. If present, this column is derived from the specified base column.
              "tableIndex": 42, # Offset to the entry in the list of base tables in the table definition.
              "columnId": 42, # The id of the column in the base table from which this column is derived.
            },
            "name": "A String", # Name of the column.
            "columnPropertiesJson": "A String", # JSON object containing custom column properties.
            "formatPattern": "A String", # Format pattern.
                # Acceptable values are DT_DATE_MEDIUMe.g Dec 24, 2008 DT_DATE_SHORTfor example 12/24/08 DT_DATE_TIME_MEDIUMfor example Dec 24, 2008 8:30:45 PM DT_DATE_TIME_SHORTfor example 12/24/08 8:30 PM DT_DAY_MONTH_2_DIGIT_YEARfor example 24/12/08 DT_DAY_MONTH_2_DIGIT_YEAR_TIMEfor example 24/12/08 20:30 DT_DAY_MONTH_2_DIGIT_YEAR_TIME_MERIDIANfor example 24/12/08 8:30 PM DT_DAY_MONTH_4_DIGIT_YEARfor example 24/12/2008 DT_DAY_MONTH_4_DIGIT_YEAR_TIMEfor example 24/12/2008 20:30 DT_DAY_MONTH_4_DIGIT_YEAR_TIME_MERIDIANfor example 24/12/2008 8:30 PM DT_ISO_YEAR_MONTH_DAYfor example 2008-12-24 DT_ISO_YEAR_MONTH_DAY_TIMEfor example 2008-12-24 20:30:45 DT_MONTH_DAY_4_DIGIT_YEARfor example 12/24/2008 DT_TIME_LONGfor example 8:30:45 PM UTC-6 DT_TIME_MEDIUMfor example 8:30:45 PM DT_TIME_SHORTfor example 8:30 PM DT_YEAR_ONLYfor example 2008 HIGHLIGHT_UNTYPED_CELLSHighlight cell data that does not match the data type NONENo formatting (default) NUMBER_CURRENCYfor example $1234.56 NUMBER_DEFAULTfor example 1,234.56 NUMBER_INTEGERfor example 1235 NUMBER_NO_SEPARATORfor example 1234.56 NUMBER_PERCENTfor example 123,456% NUMBER_SCIENTIFICfor example 1E3 STRING_EIGHT_LINE_IMAGEDisplays thumbnail images as tall as eight lines of text STRING_FOUR_LINE_IMAGEDisplays thumbnail images as tall as four lines of text STRING_JSON_TEXTAllows JSON editing of text in UI STRING_LINKTreats cell as a link (must start with http:// or https://) STRING_ONE_LINE_IMAGEDisplays thumbnail images as tall as one line of text STRING_VIDEO_OR_MAPDisplay a video or map thumbnail
            "columnJsonSchema": "A String", # JSON schema for interpreting JSON in this column.
            "type": "A String", # Type of the column.
            "validateData": True or False, # If true, data entered via the web application is validated.
            "columnId": 42, # Identifier for the column.
          },
      ],
      "name": "A String", # Name assigned to a table.
    }</pre>
</div>

<div class="method">
    <code class="details" id="replaceRows">replaceRows(tableId, media_body=None, startLine=None, isStrict=None, encoding=None, delimiter=None, endLine=None)</code>
  <pre>Replaces rows of an existing table. Current rows remain visible until all replacement rows are ready.

Args:
  tableId: string, Table whose rows will be replaced. (required)
  media_body: string, The filename of the media request body, or an instance of a MediaUpload object.
  startLine: integer, The index of the first line from which to start importing, inclusive. Default is 0.
  isStrict: boolean, Whether the imported CSV must have the same number of column values for each row. If true, throws an exception if the CSV does not have the same number of columns. If false, rows with fewer column values will be padded with empty values. Default is true.
  encoding: string, The encoding of the content. Default is UTF-8. Use 'auto-detect' if you are unsure of the encoding.
  delimiter: string, The delimiter used to separate cell values. This can only consist of a single character. Default is ,.
  endLine: integer, The index of the line up to which data will be imported. Default is to import the entire file. If endLine is negative, it is an offset from the end of the file; the imported content will exclude the last endLine lines.

Returns:
  An object of the form:

    { # A background task on a table, initiated for time- or resource-consuming operations such as changing column types or deleting all rows.
    "started": True or False, # false while the table is busy with some other task. true if this background task is currently running.
    "progress": "A String", # Task percentage completion.
    "kind": "fusiontables#task", # Type of the resource. This is always "fusiontables#task".
    "type": "A String", # Type of background task.
    "taskId": "A String", # Identifier for the task.
  }</pre>
</div>

<div class="method">
    <code class="details" id="update">update(tableId, body, replaceViewDefinition=None)</code>
  <pre>Updates an existing table. Unless explicitly requested, only the name, description, and attribution will be updated.

Args:
  tableId: string, ID of the table that is being updated. (required)
  body: object, The request body. (required)
    The object takes the form of:

{ # Represents a table.
    "tablePropertiesJsonSchema": "A String", # JSON schema for validating the JSON table properties.
    "kind": "fusiontables#table", # The kind of item this is. For a table, this is always fusiontables#table.
    "attribution": "A String", # Attribution assigned to the table.
    "description": "A String", # Description assigned to the table.
    "columnPropertiesJsonSchema": "A String", # Default JSON schema for validating all JSON column properties.
    "isExportable": True or False, # Variable for whether table is exportable.
    "baseTableIds": [ # Base table identifier if this table is a view or merged table.
      "A String",
    ],
    "tablePropertiesJson": "A String", # JSON object containing custom table properties.
    "attributionLink": "A String", # Optional link for attribution.
    "sql": "A String", # SQL that encodes the table definition for derived tables.
    "tableId": "A String", # Encrypted unique alphanumeric identifier for the table.
    "columns": [ # Columns in the table.
      { # Specifies the details of a column in a table.
          "graphPredicate": "A String", # Column graph predicate.
              # Used to map table to graph data model (subject,predicate,object)
              # See W3C Graph-based Data Model.
          "kind": "fusiontables#column", # The kind of item this is. For a column, this is always fusiontables#column.
          "validValues": [ # List of valid values used to validate data and supply a drop-down list of values in the web application.
            "A String",
          ],
          "description": "A String", # Column description.
          "baseColumn": { # Identifier of the base column. If present, this column is derived from the specified base column.
            "tableIndex": 42, # Offset to the entry in the list of base tables in the table definition.
            "columnId": 42, # The id of the column in the base table from which this column is derived.
          },
          "name": "A String", # Name of the column.
          "columnPropertiesJson": "A String", # JSON object containing custom column properties.
          "formatPattern": "A String", # Format pattern.
              # Acceptable values are DT_DATE_MEDIUMe.g Dec 24, 2008 DT_DATE_SHORTfor example 12/24/08 DT_DATE_TIME_MEDIUMfor example Dec 24, 2008 8:30:45 PM DT_DATE_TIME_SHORTfor example 12/24/08 8:30 PM DT_DAY_MONTH_2_DIGIT_YEARfor example 24/12/08 DT_DAY_MONTH_2_DIGIT_YEAR_TIMEfor example 24/12/08 20:30 DT_DAY_MONTH_2_DIGIT_YEAR_TIME_MERIDIANfor example 24/12/08 8:30 PM DT_DAY_MONTH_4_DIGIT_YEARfor example 24/12/2008 DT_DAY_MONTH_4_DIGIT_YEAR_TIMEfor example 24/12/2008 20:30 DT_DAY_MONTH_4_DIGIT_YEAR_TIME_MERIDIANfor example 24/12/2008 8:30 PM DT_ISO_YEAR_MONTH_DAYfor example 2008-12-24 DT_ISO_YEAR_MONTH_DAY_TIMEfor example 2008-12-24 20:30:45 DT_MONTH_DAY_4_DIGIT_YEARfor example 12/24/2008 DT_TIME_LONGfor example 8:30:45 PM UTC-6 DT_TIME_MEDIUMfor example 8:30:45 PM DT_TIME_SHORTfor example 8:30 PM DT_YEAR_ONLYfor example 2008 HIGHLIGHT_UNTYPED_CELLSHighlight cell data that does not match the data type NONENo formatting (default) NUMBER_CURRENCYfor example $1234.56 NUMBER_DEFAULTfor example 1,234.56 NUMBER_INTEGERfor example 1235 NUMBER_NO_SEPARATORfor example 1234.56 NUMBER_PERCENTfor example 123,456% NUMBER_SCIENTIFICfor example 1E3 STRING_EIGHT_LINE_IMAGEDisplays thumbnail images as tall as eight lines of text STRING_FOUR_LINE_IMAGEDisplays thumbnail images as tall as four lines of text STRING_JSON_TEXTAllows JSON editing of text in UI STRING_LINKTreats cell as a link (must start with http:// or https://) STRING_ONE_LINE_IMAGEDisplays thumbnail images as tall as one line of text STRING_VIDEO_OR_MAPDisplay a video or map thumbnail
          "columnJsonSchema": "A String", # JSON schema for interpreting JSON in this column.
          "type": "A String", # Type of the column.
          "validateData": True or False, # If true, data entered via the web application is validated.
          "columnId": 42, # Identifier for the column.
        },
    ],
    "name": "A String", # Name assigned to a table.
  }

  replaceViewDefinition: boolean, Whether the view definition is also updated. The specified view definition replaces the existing one. Only a view can be updated with a new definition.

Returns:
  An object of the form:

    { # Represents a table.
      "tablePropertiesJsonSchema": "A String", # JSON schema for validating the JSON table properties.
      "kind": "fusiontables#table", # The kind of item this is. For a table, this is always fusiontables#table.
      "attribution": "A String", # Attribution assigned to the table.
      "description": "A String", # Description assigned to the table.
      "columnPropertiesJsonSchema": "A String", # Default JSON schema for validating all JSON column properties.
      "isExportable": True or False, # Variable for whether table is exportable.
      "baseTableIds": [ # Base table identifier if this table is a view or merged table.
        "A String",
      ],
      "tablePropertiesJson": "A String", # JSON object containing custom table properties.
      "attributionLink": "A String", # Optional link for attribution.
      "sql": "A String", # SQL that encodes the table definition for derived tables.
      "tableId": "A String", # Encrypted unique alphanumeric identifier for the table.
      "columns": [ # Columns in the table.
        { # Specifies the details of a column in a table.
            "graphPredicate": "A String", # Column graph predicate.
                # Used to map table to graph data model (subject,predicate,object)
                # See W3C Graph-based Data Model.
            "kind": "fusiontables#column", # The kind of item this is. For a column, this is always fusiontables#column.
            "validValues": [ # List of valid values used to validate data and supply a drop-down list of values in the web application.
              "A String",
            ],
            "description": "A String", # Column description.
            "baseColumn": { # Identifier of the base column. If present, this column is derived from the specified base column.
              "tableIndex": 42, # Offset to the entry in the list of base tables in the table definition.
              "columnId": 42, # The id of the column in the base table from which this column is derived.
            },
            "name": "A String", # Name of the column.
            "columnPropertiesJson": "A String", # JSON object containing custom column properties.
            "formatPattern": "A String", # Format pattern.
                # Acceptable values are DT_DATE_MEDIUMe.g Dec 24, 2008 DT_DATE_SHORTfor example 12/24/08 DT_DATE_TIME_MEDIUMfor example Dec 24, 2008 8:30:45 PM DT_DATE_TIME_SHORTfor example 12/24/08 8:30 PM DT_DAY_MONTH_2_DIGIT_YEARfor example 24/12/08 DT_DAY_MONTH_2_DIGIT_YEAR_TIMEfor example 24/12/08 20:30 DT_DAY_MONTH_2_DIGIT_YEAR_TIME_MERIDIANfor example 24/12/08 8:30 PM DT_DAY_MONTH_4_DIGIT_YEARfor example 24/12/2008 DT_DAY_MONTH_4_DIGIT_YEAR_TIMEfor example 24/12/2008 20:30 DT_DAY_MONTH_4_DIGIT_YEAR_TIME_MERIDIANfor example 24/12/2008 8:30 PM DT_ISO_YEAR_MONTH_DAYfor example 2008-12-24 DT_ISO_YEAR_MONTH_DAY_TIMEfor example 2008-12-24 20:30:45 DT_MONTH_DAY_4_DIGIT_YEARfor example 12/24/2008 DT_TIME_LONGfor example 8:30:45 PM UTC-6 DT_TIME_MEDIUMfor example 8:30:45 PM DT_TIME_SHORTfor example 8:30 PM DT_YEAR_ONLYfor example 2008 HIGHLIGHT_UNTYPED_CELLSHighlight cell data that does not match the data type NONENo formatting (default) NUMBER_CURRENCYfor example $1234.56 NUMBER_DEFAULTfor example 1,234.56 NUMBER_INTEGERfor example 1235 NUMBER_NO_SEPARATORfor example 1234.56 NUMBER_PERCENTfor example 123,456% NUMBER_SCIENTIFICfor example 1E3 STRING_EIGHT_LINE_IMAGEDisplays thumbnail images as tall as eight lines of text STRING_FOUR_LINE_IMAGEDisplays thumbnail images as tall as four lines of text STRING_JSON_TEXTAllows JSON editing of text in UI STRING_LINKTreats cell as a link (must start with http:// or https://) STRING_ONE_LINE_IMAGEDisplays thumbnail images as tall as one line of text STRING_VIDEO_OR_MAPDisplay a video or map thumbnail
            "columnJsonSchema": "A String", # JSON schema for interpreting JSON in this column.
            "type": "A String", # Type of the column.
            "validateData": True or False, # If true, data entered via the web application is validated.
            "columnId": 42, # Identifier for the column.
          },
      ],
      "name": "A String", # Name assigned to a table.
    }</pre>
</div>

</body></html>