<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="mapsengine_v1.html">Google Maps Engine API</a> . <a href="mapsengine_v1.tables.html">tables</a></h1>
<h2>Instance Methods</h2>
<p class="toc_element">
  <code><a href="mapsengine_v1.tables.features.html">features()</a></code>
</p>
<p class="firstline">Returns the features Resource.</p>

<p class="toc_element">
  <code><a href="mapsengine_v1.tables.files.html">files()</a></code>
</p>
<p class="firstline">Returns the files Resource.</p>

<p class="toc_element">
  <code><a href="mapsengine_v1.tables.parents.html">parents()</a></code>
</p>
<p class="firstline">Returns the parents Resource.</p>

<p class="toc_element">
  <code><a href="mapsengine_v1.tables.permissions.html">permissions()</a></code>
</p>
<p class="firstline">Returns the permissions Resource.</p>

<p class="toc_element">
  <code><a href="#create">create(body)</a></code></p>
<p class="firstline">Create a table asset.</p>
<p class="toc_element">
  <code><a href="#delete">delete(id)</a></code></p>
<p class="firstline">Delete a table.</p>
<p class="toc_element">
  <code><a href="#get">get(id, version=None)</a></code></p>
<p class="firstline">Return metadata for a particular table, including the schema.</p>
<p class="toc_element">
  <code><a href="#list">list(modifiedBefore=None, creatorEmail=None, processingStatus=None, projectId=None, pageToken=None, role=None, createdAfter=None, tags=None, maxResults=None, bbox=None, modifiedAfter=None, search=None, createdBefore=None)</a></code></p>
<p class="firstline">Return all tables readable by the current 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>
<p class="toc_element">
  <code><a href="#patch">patch(id, body)</a></code></p>
<p class="firstline">Mutate a table asset.</p>
<p class="toc_element">
  <code><a href="#process">process(id)</a></code></p>
<p class="firstline">Process a table asset.</p>
<p class="toc_element">
  <code><a href="#upload">upload(body)</a></code></p>
<p class="firstline">Create a placeholder table asset to which table files can be uploaded.</p>
<h3>Method Details</h3>
<div class="method">
    <code class="details" id="create">create(body)</code>
  <pre>Create a table asset.

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

{ # A collection of geographic features, and associated metadata.
  "files": [ # The files associated with this table.
    { # A single File, which is a component of an Asset.
      "size": "A String", # The size of the file in bytes.
      "uploadStatus": "A String", # The upload status of the file.
      "filename": "A String", # The name of the file.
    },
  ],
  "schema": { # A schema indicating the properties which may be associated with features within a Table, and the types of those properties. # The schema for this table. Note: The schema is returned in response to a get request but not a list request. After requesting a list of tables, you'll need to send a get request to retrieve the schema for each table.
    "primaryGeometry": "A String", # The name of the column that contains a feature's geometry. This field can be omitted during table create; Google Maps Engine supports only a single geometry column, which must be named geometry and be the first object in the columns array.
    "primaryKey": "A String", # The name of the column that contains the unique identifier of a Feature.
    "columns": [ # An array of TableColumn objects. The first object in the array must be named geometry and be of type points, lineStrings, polygons, or mixedGeometry.
      {
        "type": "A String", # The type of data stored in this column.
        "name": "A String", # The column name.
      },
    ],
  },
  "description": "A String", # The description of this table, supplied by the author.
  "processingStatus": "A String", # The processing status of this table.
  "draftAccessList": "A String", # Deprecated: The name of an access list of the Map Editor type. The user on whose behalf the request is being sent must be an editor on that access list. Note: Google Maps Engine no longer uses access lists. Instead, each asset has its own list of permissions. For backward compatibility, the API still accepts access lists for projects that are already using access lists. If you created a GME account/project after July 14th, 2014, you will not be able to send API requests that include access lists. Note: This is an input field only. It is not returned in response to a list or get request.
  "projectId": "A String", # The ID of the project to which the table belongs.
  "tags": [ # An array of text strings, with each string representing a tag. More information about tags can be found in the Tagging data article of the Maps Engine help center.
    "A String",
  ],
  "creationTime": "A String", # The creation time of this table. The value is an RFC 3339 formatted date-time value (e.g. 1970-01-01T00:00:00Z).
  "sourceEncoding": "UTF-8", # Encoding of the uploaded files. Valid values include UTF-8, CP1251, ISO 8859-1, and Shift_JIS.
  "writersCanEditPermissions": True or False, # If true, WRITERs of the asset are able to edit the asset permissions.
  "etag": "A String", # The ETag, used to refer to the current version of the asset.
  "creatorEmail": "A String", # The email address of the creator of this table. This is only returned on GET requests and not LIST requests.
  "bbox": [ # A rectangular bounding box which contains all of the data in this Table. The box is expressed as \"west, south, east, north\". The numbers represent latitude and longitude in decimal degrees.
    3.14,
  ],
  "lastModifierEmail": "A String", # The email address of the last modifier of this table. This is only returned on GET requests and not LIST requests.
  "lastModifiedTime": "A String", # The last modified time of this table. The value is an RFC 3339 formatted date-time value (e.g. 1970-01-01T00:00:00Z).
  "publishedAccessList": "A String", # Deprecated: The access list to whom view permissions are granted. The value must be the name of a Maps Engine access list of the Map Viewer type, and the user must be a viewer on that list. Note: Google Maps Engine no longer uses access lists. Instead, each asset has its own list of permissions. For backward compatibility, the API still accepts access lists for projects that are already using access lists. If you created a GME account/project after July 14th, 2014, you will not be able to send API requests that include access lists. Note: This is an input field only. It is not returned in response to a list or get request.
  "id": "A String", # A globally unique ID, used to refer to this table.
  "name": "A String", # The name of this table, supplied by the author.
}


Returns:
  An object of the form:

    { # A collection of geographic features, and associated metadata.
    "files": [ # The files associated with this table.
      { # A single File, which is a component of an Asset.
        "size": "A String", # The size of the file in bytes.
        "uploadStatus": "A String", # The upload status of the file.
        "filename": "A String", # The name of the file.
      },
    ],
    "schema": { # A schema indicating the properties which may be associated with features within a Table, and the types of those properties. # The schema for this table. Note: The schema is returned in response to a get request but not a list request. After requesting a list of tables, you'll need to send a get request to retrieve the schema for each table.
      "primaryGeometry": "A String", # The name of the column that contains a feature's geometry. This field can be omitted during table create; Google Maps Engine supports only a single geometry column, which must be named geometry and be the first object in the columns array.
      "primaryKey": "A String", # The name of the column that contains the unique identifier of a Feature.
      "columns": [ # An array of TableColumn objects. The first object in the array must be named geometry and be of type points, lineStrings, polygons, or mixedGeometry.
        {
          "type": "A String", # The type of data stored in this column.
          "name": "A String", # The column name.
        },
      ],
    },
    "description": "A String", # The description of this table, supplied by the author.
    "processingStatus": "A String", # The processing status of this table.
    "draftAccessList": "A String", # Deprecated: The name of an access list of the Map Editor type. The user on whose behalf the request is being sent must be an editor on that access list. Note: Google Maps Engine no longer uses access lists. Instead, each asset has its own list of permissions. For backward compatibility, the API still accepts access lists for projects that are already using access lists. If you created a GME account/project after July 14th, 2014, you will not be able to send API requests that include access lists. Note: This is an input field only. It is not returned in response to a list or get request.
    "projectId": "A String", # The ID of the project to which the table belongs.
    "tags": [ # An array of text strings, with each string representing a tag. More information about tags can be found in the Tagging data article of the Maps Engine help center.
      "A String",
    ],
    "creationTime": "A String", # The creation time of this table. The value is an RFC 3339 formatted date-time value (e.g. 1970-01-01T00:00:00Z).
    "sourceEncoding": "UTF-8", # Encoding of the uploaded files. Valid values include UTF-8, CP1251, ISO 8859-1, and Shift_JIS.
    "writersCanEditPermissions": True or False, # If true, WRITERs of the asset are able to edit the asset permissions.
    "etag": "A String", # The ETag, used to refer to the current version of the asset.
    "creatorEmail": "A String", # The email address of the creator of this table. This is only returned on GET requests and not LIST requests.
    "bbox": [ # A rectangular bounding box which contains all of the data in this Table. The box is expressed as \"west, south, east, north\". The numbers represent latitude and longitude in decimal degrees.
      3.14,
    ],
    "lastModifierEmail": "A String", # The email address of the last modifier of this table. This is only returned on GET requests and not LIST requests.
    "lastModifiedTime": "A String", # The last modified time of this table. The value is an RFC 3339 formatted date-time value (e.g. 1970-01-01T00:00:00Z).
    "publishedAccessList": "A String", # Deprecated: The access list to whom view permissions are granted. The value must be the name of a Maps Engine access list of the Map Viewer type, and the user must be a viewer on that list. Note: Google Maps Engine no longer uses access lists. Instead, each asset has its own list of permissions. For backward compatibility, the API still accepts access lists for projects that are already using access lists. If you created a GME account/project after July 14th, 2014, you will not be able to send API requests that include access lists. Note: This is an input field only. It is not returned in response to a list or get request.
    "id": "A String", # A globally unique ID, used to refer to this table.
    "name": "A String", # The name of this table, supplied by the author.
  }</pre>
</div>

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

Args:
  id: string, The ID of the table. Only the table creator or project owner are permitted to delete. If the table is included in a layer, the request will fail. Remove it from all layers prior to deleting. (required)
</pre>
</div>

<div class="method">
    <code class="details" id="get">get(id, version=None)</code>
  <pre>Return metadata for a particular table, including the schema.

Args:
  id: string, The ID of the table. (required)
  version: string, A parameter
    Allowed values
      draft - The draft version.
      published - The published version.

Returns:
  An object of the form:

    { # A collection of geographic features, and associated metadata.
    "files": [ # The files associated with this table.
      { # A single File, which is a component of an Asset.
        "size": "A String", # The size of the file in bytes.
        "uploadStatus": "A String", # The upload status of the file.
        "filename": "A String", # The name of the file.
      },
    ],
    "schema": { # A schema indicating the properties which may be associated with features within a Table, and the types of those properties. # The schema for this table. Note: The schema is returned in response to a get request but not a list request. After requesting a list of tables, you'll need to send a get request to retrieve the schema for each table.
      "primaryGeometry": "A String", # The name of the column that contains a feature's geometry. This field can be omitted during table create; Google Maps Engine supports only a single geometry column, which must be named geometry and be the first object in the columns array.
      "primaryKey": "A String", # The name of the column that contains the unique identifier of a Feature.
      "columns": [ # An array of TableColumn objects. The first object in the array must be named geometry and be of type points, lineStrings, polygons, or mixedGeometry.
        {
          "type": "A String", # The type of data stored in this column.
          "name": "A String", # The column name.
        },
      ],
    },
    "description": "A String", # The description of this table, supplied by the author.
    "processingStatus": "A String", # The processing status of this table.
    "draftAccessList": "A String", # Deprecated: The name of an access list of the Map Editor type. The user on whose behalf the request is being sent must be an editor on that access list. Note: Google Maps Engine no longer uses access lists. Instead, each asset has its own list of permissions. For backward compatibility, the API still accepts access lists for projects that are already using access lists. If you created a GME account/project after July 14th, 2014, you will not be able to send API requests that include access lists. Note: This is an input field only. It is not returned in response to a list or get request.
    "projectId": "A String", # The ID of the project to which the table belongs.
    "tags": [ # An array of text strings, with each string representing a tag. More information about tags can be found in the Tagging data article of the Maps Engine help center.
      "A String",
    ],
    "creationTime": "A String", # The creation time of this table. The value is an RFC 3339 formatted date-time value (e.g. 1970-01-01T00:00:00Z).
    "sourceEncoding": "UTF-8", # Encoding of the uploaded files. Valid values include UTF-8, CP1251, ISO 8859-1, and Shift_JIS.
    "writersCanEditPermissions": True or False, # If true, WRITERs of the asset are able to edit the asset permissions.
    "etag": "A String", # The ETag, used to refer to the current version of the asset.
    "creatorEmail": "A String", # The email address of the creator of this table. This is only returned on GET requests and not LIST requests.
    "bbox": [ # A rectangular bounding box which contains all of the data in this Table. The box is expressed as \"west, south, east, north\". The numbers represent latitude and longitude in decimal degrees.
      3.14,
    ],
    "lastModifierEmail": "A String", # The email address of the last modifier of this table. This is only returned on GET requests and not LIST requests.
    "lastModifiedTime": "A String", # The last modified time of this table. The value is an RFC 3339 formatted date-time value (e.g. 1970-01-01T00:00:00Z).
    "publishedAccessList": "A String", # Deprecated: The access list to whom view permissions are granted. The value must be the name of a Maps Engine access list of the Map Viewer type, and the user must be a viewer on that list. Note: Google Maps Engine no longer uses access lists. Instead, each asset has its own list of permissions. For backward compatibility, the API still accepts access lists for projects that are already using access lists. If you created a GME account/project after July 14th, 2014, you will not be able to send API requests that include access lists. Note: This is an input field only. It is not returned in response to a list or get request.
    "id": "A String", # A globally unique ID, used to refer to this table.
    "name": "A String", # The name of this table, supplied by the author.
  }</pre>
</div>

<div class="method">
    <code class="details" id="list">list(modifiedBefore=None, creatorEmail=None, processingStatus=None, projectId=None, pageToken=None, role=None, createdAfter=None, tags=None, maxResults=None, bbox=None, modifiedAfter=None, search=None, createdBefore=None)</code>
  <pre>Return all tables readable by the current user.

Args:
  modifiedBefore: string, An RFC 3339 formatted date-time value (e.g. 1970-01-01T00:00:00Z). Returned assets will have been modified at or before this time.
  creatorEmail: string, An email address representing a user. Returned assets that have been created by the user associated with the provided email address.
  processingStatus: string, A parameter
    Allowed values
      complete - The table has completed processing.
      failed - The table has failed processing.
      notReady - The table is not ready for processing.
      processing - The table is processing.
      ready - The table is ready for processing.
  projectId: string, The ID of a Maps Engine project, used to filter the response. To list all available projects with their IDs, send a Projects: list request. You can also find your project ID as the value of the DashboardPlace:cid URL parameter when signed in to mapsengine.google.com.
  pageToken: string, The continuation token, used to page through large result sets. To get the next page of results, set this parameter to the value of nextPageToken from the previous response.
  role: string, The role parameter indicates that the response should only contain assets where the current user has the specified level of access.
    Allowed values
      owner - The user can read, write and administer the asset.
      reader - The user can read the asset.
      writer - The user can read and write the asset.
  createdAfter: string, An RFC 3339 formatted date-time value (e.g. 1970-01-01T00:00:00Z). Returned assets will have been created at or after this time.
  tags: string, A comma separated list of tags. Returned assets will contain all the tags from the list.
  maxResults: integer, The maximum number of items to include in a single response page. The maximum supported value is 100.
  bbox: string, A bounding box, expressed as "west,south,east,north". If set, only assets which intersect this bounding box will be returned.
  modifiedAfter: string, An RFC 3339 formatted date-time value (e.g. 1970-01-01T00:00:00Z). Returned assets will have been modified at or after this time.
  search: string, An unstructured search string used to filter the set of results based on asset metadata.
  createdBefore: string, An RFC 3339 formatted date-time value (e.g. 1970-01-01T00:00:00Z). Returned assets will have been created at or before this time.

Returns:
  An object of the form:

    { # The response returned by a call to tables.List. Note: The list response does not include all the fields available in a table. Refer to the table resource description for details of the fields that are not included. You'll need to send a get request to retrieve the additional fields for each table.
    "nextPageToken": "A String", # Next page token.
    "tables": [ # Resources returned.
      { # A collection of geographic features, and associated metadata.
        "files": [ # The files associated with this table.
          { # A single File, which is a component of an Asset.
            "size": "A String", # The size of the file in bytes.
            "uploadStatus": "A String", # The upload status of the file.
            "filename": "A String", # The name of the file.
          },
        ],
        "schema": { # A schema indicating the properties which may be associated with features within a Table, and the types of those properties. # The schema for this table. Note: The schema is returned in response to a get request but not a list request. After requesting a list of tables, you'll need to send a get request to retrieve the schema for each table.
          "primaryGeometry": "A String", # The name of the column that contains a feature's geometry. This field can be omitted during table create; Google Maps Engine supports only a single geometry column, which must be named geometry and be the first object in the columns array.
          "primaryKey": "A String", # The name of the column that contains the unique identifier of a Feature.
          "columns": [ # An array of TableColumn objects. The first object in the array must be named geometry and be of type points, lineStrings, polygons, or mixedGeometry.
            {
              "type": "A String", # The type of data stored in this column.
              "name": "A String", # The column name.
            },
          ],
        },
        "description": "A String", # The description of this table, supplied by the author.
        "processingStatus": "A String", # The processing status of this table.
        "draftAccessList": "A String", # Deprecated: The name of an access list of the Map Editor type. The user on whose behalf the request is being sent must be an editor on that access list. Note: Google Maps Engine no longer uses access lists. Instead, each asset has its own list of permissions. For backward compatibility, the API still accepts access lists for projects that are already using access lists. If you created a GME account/project after July 14th, 2014, you will not be able to send API requests that include access lists. Note: This is an input field only. It is not returned in response to a list or get request.
        "projectId": "A String", # The ID of the project to which the table belongs.
        "tags": [ # An array of text strings, with each string representing a tag. More information about tags can be found in the Tagging data article of the Maps Engine help center.
          "A String",
        ],
        "creationTime": "A String", # The creation time of this table. The value is an RFC 3339 formatted date-time value (e.g. 1970-01-01T00:00:00Z).
        "sourceEncoding": "UTF-8", # Encoding of the uploaded files. Valid values include UTF-8, CP1251, ISO 8859-1, and Shift_JIS.
        "writersCanEditPermissions": True or False, # If true, WRITERs of the asset are able to edit the asset permissions.
        "etag": "A String", # The ETag, used to refer to the current version of the asset.
        "creatorEmail": "A String", # The email address of the creator of this table. This is only returned on GET requests and not LIST requests.
        "bbox": [ # A rectangular bounding box which contains all of the data in this Table. The box is expressed as \"west, south, east, north\". The numbers represent latitude and longitude in decimal degrees.
          3.14,
        ],
        "lastModifierEmail": "A String", # The email address of the last modifier of this table. This is only returned on GET requests and not LIST requests.
        "lastModifiedTime": "A String", # The last modified time of this table. The value is an RFC 3339 formatted date-time value (e.g. 1970-01-01T00:00:00Z).
        "publishedAccessList": "A String", # Deprecated: The access list to whom view permissions are granted. The value must be the name of a Maps Engine access list of the Map Viewer type, and the user must be a viewer on that list. Note: Google Maps Engine no longer uses access lists. Instead, each asset has its own list of permissions. For backward compatibility, the API still accepts access lists for projects that are already using access lists. If you created a GME account/project after July 14th, 2014, you will not be able to send API requests that include access lists. Note: This is an input field only. It is not returned in response to a list or get request.
        "id": "A String", # A globally unique ID, used to refer to this table.
        "name": "A String", # The name of this table, supplied by the author.
      },
    ],
  }</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(id, body)</code>
  <pre>Mutate a table asset.

Args:
  id: string, The ID of the table. (required)
  body: object, The request body. (required)
    The object takes the form of:

{ # A collection of geographic features, and associated metadata.
  "files": [ # The files associated with this table.
    { # A single File, which is a component of an Asset.
      "size": "A String", # The size of the file in bytes.
      "uploadStatus": "A String", # The upload status of the file.
      "filename": "A String", # The name of the file.
    },
  ],
  "schema": { # A schema indicating the properties which may be associated with features within a Table, and the types of those properties. # The schema for this table. Note: The schema is returned in response to a get request but not a list request. After requesting a list of tables, you'll need to send a get request to retrieve the schema for each table.
    "primaryGeometry": "A String", # The name of the column that contains a feature's geometry. This field can be omitted during table create; Google Maps Engine supports only a single geometry column, which must be named geometry and be the first object in the columns array.
    "primaryKey": "A String", # The name of the column that contains the unique identifier of a Feature.
    "columns": [ # An array of TableColumn objects. The first object in the array must be named geometry and be of type points, lineStrings, polygons, or mixedGeometry.
      {
        "type": "A String", # The type of data stored in this column.
        "name": "A String", # The column name.
      },
    ],
  },
  "description": "A String", # The description of this table, supplied by the author.
  "processingStatus": "A String", # The processing status of this table.
  "draftAccessList": "A String", # Deprecated: The name of an access list of the Map Editor type. The user on whose behalf the request is being sent must be an editor on that access list. Note: Google Maps Engine no longer uses access lists. Instead, each asset has its own list of permissions. For backward compatibility, the API still accepts access lists for projects that are already using access lists. If you created a GME account/project after July 14th, 2014, you will not be able to send API requests that include access lists. Note: This is an input field only. It is not returned in response to a list or get request.
  "projectId": "A String", # The ID of the project to which the table belongs.
  "tags": [ # An array of text strings, with each string representing a tag. More information about tags can be found in the Tagging data article of the Maps Engine help center.
    "A String",
  ],
  "creationTime": "A String", # The creation time of this table. The value is an RFC 3339 formatted date-time value (e.g. 1970-01-01T00:00:00Z).
  "sourceEncoding": "UTF-8", # Encoding of the uploaded files. Valid values include UTF-8, CP1251, ISO 8859-1, and Shift_JIS.
  "writersCanEditPermissions": True or False, # If true, WRITERs of the asset are able to edit the asset permissions.
  "etag": "A String", # The ETag, used to refer to the current version of the asset.
  "creatorEmail": "A String", # The email address of the creator of this table. This is only returned on GET requests and not LIST requests.
  "bbox": [ # A rectangular bounding box which contains all of the data in this Table. The box is expressed as \"west, south, east, north\". The numbers represent latitude and longitude in decimal degrees.
    3.14,
  ],
  "lastModifierEmail": "A String", # The email address of the last modifier of this table. This is only returned on GET requests and not LIST requests.
  "lastModifiedTime": "A String", # The last modified time of this table. The value is an RFC 3339 formatted date-time value (e.g. 1970-01-01T00:00:00Z).
  "publishedAccessList": "A String", # Deprecated: The access list to whom view permissions are granted. The value must be the name of a Maps Engine access list of the Map Viewer type, and the user must be a viewer on that list. Note: Google Maps Engine no longer uses access lists. Instead, each asset has its own list of permissions. For backward compatibility, the API still accepts access lists for projects that are already using access lists. If you created a GME account/project after July 14th, 2014, you will not be able to send API requests that include access lists. Note: This is an input field only. It is not returned in response to a list or get request.
  "id": "A String", # A globally unique ID, used to refer to this table.
  "name": "A String", # The name of this table, supplied by the author.
}

</pre>
</div>

<div class="method">
    <code class="details" id="process">process(id)</code>
  <pre>Process a table asset.

Args:
  id: string, The ID of the table. (required)

Returns:
  An object of the form:

    { # The response returned by a call to any asset's Process method.
  }</pre>
</div>

<div class="method">
    <code class="details" id="upload">upload(body)</code>
  <pre>Create a placeholder table asset to which table files can be uploaded.
Once the placeholder has been created, files are uploaded to the https://www.googleapis.com/upload/mapsengine/v1/tables/table_id/files endpoint.
See Table Upload in the Developer's Guide or Table.files: insert in the reference documentation for more information.

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

{ # A collection of geographic features, and associated metadata.
  "files": [ # The files associated with this table.
    { # A single File, which is a component of an Asset.
      "size": "A String", # The size of the file in bytes.
      "uploadStatus": "A String", # The upload status of the file.
      "filename": "A String", # The name of the file.
    },
  ],
  "schema": { # A schema indicating the properties which may be associated with features within a Table, and the types of those properties. # The schema for this table. Note: The schema is returned in response to a get request but not a list request. After requesting a list of tables, you'll need to send a get request to retrieve the schema for each table.
    "primaryGeometry": "A String", # The name of the column that contains a feature's geometry. This field can be omitted during table create; Google Maps Engine supports only a single geometry column, which must be named geometry and be the first object in the columns array.
    "primaryKey": "A String", # The name of the column that contains the unique identifier of a Feature.
    "columns": [ # An array of TableColumn objects. The first object in the array must be named geometry and be of type points, lineStrings, polygons, or mixedGeometry.
      {
        "type": "A String", # The type of data stored in this column.
        "name": "A String", # The column name.
      },
    ],
  },
  "description": "A String", # The description of this table, supplied by the author.
  "processingStatus": "A String", # The processing status of this table.
  "draftAccessList": "A String", # Deprecated: The name of an access list of the Map Editor type. The user on whose behalf the request is being sent must be an editor on that access list. Note: Google Maps Engine no longer uses access lists. Instead, each asset has its own list of permissions. For backward compatibility, the API still accepts access lists for projects that are already using access lists. If you created a GME account/project after July 14th, 2014, you will not be able to send API requests that include access lists. Note: This is an input field only. It is not returned in response to a list or get request.
  "projectId": "A String", # The ID of the project to which the table belongs.
  "tags": [ # An array of text strings, with each string representing a tag. More information about tags can be found in the Tagging data article of the Maps Engine help center.
    "A String",
  ],
  "creationTime": "A String", # The creation time of this table. The value is an RFC 3339 formatted date-time value (e.g. 1970-01-01T00:00:00Z).
  "sourceEncoding": "UTF-8", # Encoding of the uploaded files. Valid values include UTF-8, CP1251, ISO 8859-1, and Shift_JIS.
  "writersCanEditPermissions": True or False, # If true, WRITERs of the asset are able to edit the asset permissions.
  "etag": "A String", # The ETag, used to refer to the current version of the asset.
  "creatorEmail": "A String", # The email address of the creator of this table. This is only returned on GET requests and not LIST requests.
  "bbox": [ # A rectangular bounding box which contains all of the data in this Table. The box is expressed as \"west, south, east, north\". The numbers represent latitude and longitude in decimal degrees.
    3.14,
  ],
  "lastModifierEmail": "A String", # The email address of the last modifier of this table. This is only returned on GET requests and not LIST requests.
  "lastModifiedTime": "A String", # The last modified time of this table. The value is an RFC 3339 formatted date-time value (e.g. 1970-01-01T00:00:00Z).
  "publishedAccessList": "A String", # Deprecated: The access list to whom view permissions are granted. The value must be the name of a Maps Engine access list of the Map Viewer type, and the user must be a viewer on that list. Note: Google Maps Engine no longer uses access lists. Instead, each asset has its own list of permissions. For backward compatibility, the API still accepts access lists for projects that are already using access lists. If you created a GME account/project after July 14th, 2014, you will not be able to send API requests that include access lists. Note: This is an input field only. It is not returned in response to a list or get request.
  "id": "A String", # A globally unique ID, used to refer to this table.
  "name": "A String", # The name of this table, supplied by the author.
}


Returns:
  An object of the form:

    { # A collection of geographic features, and associated metadata.
    "files": [ # The files associated with this table.
      { # A single File, which is a component of an Asset.
        "size": "A String", # The size of the file in bytes.
        "uploadStatus": "A String", # The upload status of the file.
        "filename": "A String", # The name of the file.
      },
    ],
    "schema": { # A schema indicating the properties which may be associated with features within a Table, and the types of those properties. # The schema for this table. Note: The schema is returned in response to a get request but not a list request. After requesting a list of tables, you'll need to send a get request to retrieve the schema for each table.
      "primaryGeometry": "A String", # The name of the column that contains a feature's geometry. This field can be omitted during table create; Google Maps Engine supports only a single geometry column, which must be named geometry and be the first object in the columns array.
      "primaryKey": "A String", # The name of the column that contains the unique identifier of a Feature.
      "columns": [ # An array of TableColumn objects. The first object in the array must be named geometry and be of type points, lineStrings, polygons, or mixedGeometry.
        {
          "type": "A String", # The type of data stored in this column.
          "name": "A String", # The column name.
        },
      ],
    },
    "description": "A String", # The description of this table, supplied by the author.
    "processingStatus": "A String", # The processing status of this table.
    "draftAccessList": "A String", # Deprecated: The name of an access list of the Map Editor type. The user on whose behalf the request is being sent must be an editor on that access list. Note: Google Maps Engine no longer uses access lists. Instead, each asset has its own list of permissions. For backward compatibility, the API still accepts access lists for projects that are already using access lists. If you created a GME account/project after July 14th, 2014, you will not be able to send API requests that include access lists. Note: This is an input field only. It is not returned in response to a list or get request.
    "projectId": "A String", # The ID of the project to which the table belongs.
    "tags": [ # An array of text strings, with each string representing a tag. More information about tags can be found in the Tagging data article of the Maps Engine help center.
      "A String",
    ],
    "creationTime": "A String", # The creation time of this table. The value is an RFC 3339 formatted date-time value (e.g. 1970-01-01T00:00:00Z).
    "sourceEncoding": "UTF-8", # Encoding of the uploaded files. Valid values include UTF-8, CP1251, ISO 8859-1, and Shift_JIS.
    "writersCanEditPermissions": True or False, # If true, WRITERs of the asset are able to edit the asset permissions.
    "etag": "A String", # The ETag, used to refer to the current version of the asset.
    "creatorEmail": "A String", # The email address of the creator of this table. This is only returned on GET requests and not LIST requests.
    "bbox": [ # A rectangular bounding box which contains all of the data in this Table. The box is expressed as \"west, south, east, north\". The numbers represent latitude and longitude in decimal degrees.
      3.14,
    ],
    "lastModifierEmail": "A String", # The email address of the last modifier of this table. This is only returned on GET requests and not LIST requests.
    "lastModifiedTime": "A String", # The last modified time of this table. The value is an RFC 3339 formatted date-time value (e.g. 1970-01-01T00:00:00Z).
    "publishedAccessList": "A String", # Deprecated: The access list to whom view permissions are granted. The value must be the name of a Maps Engine access list of the Map Viewer type, and the user must be a viewer on that list. Note: Google Maps Engine no longer uses access lists. Instead, each asset has its own list of permissions. For backward compatibility, the API still accepts access lists for projects that are already using access lists. If you created a GME account/project after July 14th, 2014, you will not be able to send API requests that include access lists. Note: This is an input field only. It is not returned in response to a list or get request.
    "id": "A String", # A globally unique ID, used to refer to this table.
    "name": "A String", # The name of this table, supplied by the author.
  }</pre>
</div>

</body></html>