<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.workspaces.html">workspaces</a></h1>
<h2>Instance Methods</h2>
<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 workspace. Returns NOT_FOUND if the workspace does not exist.</p>
<p class="toc_element">
  <code><a href="#list">list(pageSize=None, pageToken=None, x__xgafv=None)</a></code></p>
<p class="firstline">Lists workspaces 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 workspace. Returns NOT_FOUND if the workspace does not exist.

Args:
  name: string, Required. The name of the workspace to retrieve. Format: workspaces/{workspace} (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 workspace.
  &quot;createTime&quot;: &quot;A String&quot;, # Time when the workspace was created.
  &quot;displayName&quot;: &quot;A String&quot;, # The human readable title of the workspace.
  &quot;name&quot;: &quot;A String&quot;, # The resource name of the workspace. Workspace names have the form `workspaces/{workspace}`.
  &quot;tables&quot;: [ # The list of tables in the workspace.
    { # A single table. NextId: 7
      &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;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;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;updateTime&quot;: &quot;A String&quot;, # Time when the table was last updated excluding updates to individual rows
    },
  ],
  &quot;updateTime&quot;: &quot;A String&quot;, # Time when the workspace was last updated.
}</pre>
</div>

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

Args:
  pageSize: integer, The maximum number of workspaces to return. The service may return fewer than this value. If unspecified, at most 10 workspaces are returned. The maximum value is 25; values above 25 are coerced to 25.
  pageToken: string, A page token, received from a previous `ListWorkspaces` call. Provide this to retrieve the subsequent page. When paginating, all other parameters provided to `ListWorkspaces` 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.ListWorkspaces.
  &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;workspaces&quot;: [ # The list of workspaces.
    { # A single workspace.
      &quot;createTime&quot;: &quot;A String&quot;, # Time when the workspace was created.
      &quot;displayName&quot;: &quot;A String&quot;, # The human readable title of the workspace.
      &quot;name&quot;: &quot;A String&quot;, # The resource name of the workspace. Workspace names have the form `workspaces/{workspace}`.
      &quot;tables&quot;: [ # The list of tables in the workspace.
        { # A single table. NextId: 7
          &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;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;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;updateTime&quot;: &quot;A String&quot;, # Time when the table was last updated excluding updates to individual rows
        },
      ],
      &quot;updateTime&quot;: &quot;A String&quot;, # Time when the workspace was last updated.
    },
  ],
}</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>