<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="area120tables_v1alpha1.html">Area120 Tables API</a> . <a href="area120tables_v1alpha1.tables.html">tables</a></h1>
<h2>Instance Methods</h2>
<p class="toc_element">
  <code><a href="area120tables_v1alpha1.tables.rows.html">rows()</a></code>
</p>
<p class="firstline">Returns the rows Resource.</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="#get">get(name, x__xgafv=None)</a></code></p>
<p class="firstline">Gets a table. Returns NOT_FOUND if the table does not exist.</p>
<p class="toc_element">
  <code><a href="#list">list(orderBy=None, pageSize=None, pageToken=None, x__xgafv=None)</a></code></p>
<p class="firstline">Lists tables for the user.</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>
<h3>Method Details</h3>
<div class="method">
    <code class="details" id="close">close()</code>
  <pre>Close httplib2 connections.</pre>
</div>

<div class="method">
    <code class="details" id="get">get(name, x__xgafv=None)</code>
  <pre>Gets a table. Returns NOT_FOUND if the table does not exist.

Args:
  name: string, Required. The name of the table to retrieve. Format: tables/{table} (required)
  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    { # A single table. NextId: 8
  &quot;columns&quot;: [ # List of columns in this table. Order of columns matches the display order.
    { # Details on a column in the table.
      &quot;dataType&quot;: &quot;A String&quot;, # Data type of the column Supported types are auto_id, boolean, boolean_list, creator, create_timestamp, date, dropdown, location, integer, integer_list, number, number_list, person, person_list, tags, check_list, text, text_list, update_timestamp, updater, relationship, file_attachment_list. These types directly map to the column types supported on Tables website.
      &quot;dateDetails&quot;: { # Details about a date column. # Optional. Additional details about a date column.
        &quot;hasTime&quot;: True or False, # Whether the date column includes time.
      },
      &quot;id&quot;: &quot;A String&quot;, # Internal id for a column.
      &quot;labels&quot;: [ # Optional. Range of labeled values for the column. Some columns like tags and drop-downs limit the values to a set of possible values. We return the range of values in such cases to help clients implement better user data validation.
        { # A single item in a labeled column.
          &quot;id&quot;: &quot;A String&quot;, # Internal id associated with the item.
          &quot;name&quot;: &quot;A String&quot;, # Display string as entered by user.
        },
      ],
      &quot;lookupDetails&quot;: { # Details about a lookup column whose value comes from the associated relationship. # Optional. Indicates that this is a lookup column whose value is derived from the relationship column specified in the details. Lookup columns can not be updated directly. To change the value you must update the associated relationship column.
        &quot;relationshipColumn&quot;: &quot;A String&quot;, # The name of the relationship column associated with the lookup.
        &quot;relationshipColumnId&quot;: &quot;A String&quot;, # The id of the relationship column.
      },
      &quot;multipleValuesDisallowed&quot;: True or False, # Optional. Indicates whether or not multiple values are allowed for array types where such a restriction is possible.
      &quot;name&quot;: &quot;A String&quot;, # column name
      &quot;readonly&quot;: True or False, # Optional. Indicates that values for the column cannot be set by the user.
      &quot;relationshipDetails&quot;: { # Details about a relationship column. # Optional. Additional details about a relationship column. Specified when data_type is relationship.
        &quot;linkedTable&quot;: &quot;A String&quot;, # The name of the table this relationship is linked to.
      },
    },
  ],
  &quot;createTime&quot;: &quot;A String&quot;, # Time when the table was created.
  &quot;displayName&quot;: &quot;A String&quot;, # The human readable title of the table.
  &quot;name&quot;: &quot;A String&quot;, # The resource name of the table. Table names have the form `tables/{table}`.
  &quot;savedViews&quot;: [ # Saved views for this table.
    { # A saved view of a table. NextId: 3
      &quot;id&quot;: &quot;A String&quot;, # Internal id associated with the saved view.
      &quot;name&quot;: &quot;A String&quot;, # Display name of the saved view.
    },
  ],
  &quot;timeZone&quot;: &quot;A String&quot;, # The time zone of the table. IANA Time Zone Database time zone, e.g. &quot;America/New_York&quot;.
  &quot;updateTime&quot;: &quot;A String&quot;, # Time when the table was last updated excluding updates to individual rows
}</pre>
</div>

<div class="method">
    <code class="details" id="list">list(orderBy=None, pageSize=None, pageToken=None, x__xgafv=None)</code>
  <pre>Lists tables for the user.

Args:
  orderBy: string, Optional. Sorting order for the list of tables on createTime/updateTime.
  pageSize: integer, The maximum number of tables to return. The service may return fewer than this value. If unspecified, at most 20 tables are returned. The maximum value is 100; values above 100 are coerced to 100.
  pageToken: string, A page token, received from a previous `ListTables` call. Provide this to retrieve the subsequent page. When paginating, all other parameters provided to `ListTables` must match the call that provided the page token.
  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    { # Response message for TablesService.ListTables.
  &quot;nextPageToken&quot;: &quot;A String&quot;, # A token, which can be sent as `page_token` to retrieve the next page. If this field is empty, there are no subsequent pages.
  &quot;tables&quot;: [ # The list of tables.
    { # A single table. NextId: 8
      &quot;columns&quot;: [ # List of columns in this table. Order of columns matches the display order.
        { # Details on a column in the table.
          &quot;dataType&quot;: &quot;A String&quot;, # Data type of the column Supported types are auto_id, boolean, boolean_list, creator, create_timestamp, date, dropdown, location, integer, integer_list, number, number_list, person, person_list, tags, check_list, text, text_list, update_timestamp, updater, relationship, file_attachment_list. These types directly map to the column types supported on Tables website.
          &quot;dateDetails&quot;: { # Details about a date column. # Optional. Additional details about a date column.
            &quot;hasTime&quot;: True or False, # Whether the date column includes time.
          },
          &quot;id&quot;: &quot;A String&quot;, # Internal id for a column.
          &quot;labels&quot;: [ # Optional. Range of labeled values for the column. Some columns like tags and drop-downs limit the values to a set of possible values. We return the range of values in such cases to help clients implement better user data validation.
            { # A single item in a labeled column.
              &quot;id&quot;: &quot;A String&quot;, # Internal id associated with the item.
              &quot;name&quot;: &quot;A String&quot;, # Display string as entered by user.
            },
          ],
          &quot;lookupDetails&quot;: { # Details about a lookup column whose value comes from the associated relationship. # Optional. Indicates that this is a lookup column whose value is derived from the relationship column specified in the details. Lookup columns can not be updated directly. To change the value you must update the associated relationship column.
            &quot;relationshipColumn&quot;: &quot;A String&quot;, # The name of the relationship column associated with the lookup.
            &quot;relationshipColumnId&quot;: &quot;A String&quot;, # The id of the relationship column.
          },
          &quot;multipleValuesDisallowed&quot;: True or False, # Optional. Indicates whether or not multiple values are allowed for array types where such a restriction is possible.
          &quot;name&quot;: &quot;A String&quot;, # column name
          &quot;readonly&quot;: True or False, # Optional. Indicates that values for the column cannot be set by the user.
          &quot;relationshipDetails&quot;: { # Details about a relationship column. # Optional. Additional details about a relationship column. Specified when data_type is relationship.
            &quot;linkedTable&quot;: &quot;A String&quot;, # The name of the table this relationship is linked to.
          },
        },
      ],
      &quot;createTime&quot;: &quot;A String&quot;, # Time when the table was created.
      &quot;displayName&quot;: &quot;A String&quot;, # The human readable title of the table.
      &quot;name&quot;: &quot;A String&quot;, # The resource name of the table. Table names have the form `tables/{table}`.
      &quot;savedViews&quot;: [ # Saved views for this table.
        { # A saved view of a table. NextId: 3
          &quot;id&quot;: &quot;A String&quot;, # Internal id associated with the saved view.
          &quot;name&quot;: &quot;A String&quot;, # Display name of the saved view.
        },
      ],
      &quot;timeZone&quot;: &quot;A String&quot;, # The time zone of the table. IANA Time Zone Database time zone, e.g. &quot;America/New_York&quot;.
      &quot;updateTime&quot;: &quot;A String&quot;, # Time when the table was last updated excluding updates to individual rows
    },
  ],
}</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 &#x27;execute()&#x27; on to request the next
  page. Returns None if there are no more items in the collection.
    </pre>
</div>

</body></html>