<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.rasterCollections.html">rasterCollections</a></h1>
<h2>Instance Methods</h2>
<p class="toc_element">
  <code><a href="mapsengine_v1.rasterCollections.parents.html">parents()</a></code>
</p>
<p class="firstline">Returns the parents Resource.</p>

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

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

<p class="toc_element">
  <code><a href="#cancelProcessing">cancelProcessing(id)</a></code></p>
<p class="firstline">Cancel processing on a raster collection asset.</p>
<p class="toc_element">
  <code><a href="#create">create(body)</a></code></p>
<p class="firstline">Create a raster collection asset.</p>
<p class="toc_element">
  <code><a href="#delete">delete(id)</a></code></p>
<p class="firstline">Delete a raster collection.</p>
<p class="toc_element">
  <code><a href="#get">get(id)</a></code></p>
<p class="firstline">Return metadata for a particular raster collection.</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 raster collections 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 raster collection asset.</p>
<p class="toc_element">
  <code><a href="#process">process(id)</a></code></p>
<p class="firstline">Process a raster collection asset.</p>
<h3>Method Details</h3>
<div class="method">
    <code class="details" id="cancelProcessing">cancelProcessing(id)</code>
  <pre>Cancel processing on a raster collection asset.

Args:
  id: string, The ID of the raster collection. (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="create">create(body)</code>
  <pre>Create a raster collection asset.

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

{ # A raster collection groups multiple Raster resources for inclusion in a Layer.
  "attribution": "A String", # The name of the attribution to be used for this RasterCollection. Note: Attribution is returned in response to a get request but not a list request. After requesting a list of raster collections, you'll need to send a get request to retrieve the attribution for each raster collection.
  "description": "A String", # The description of this RasterCollection, supplied by the author.
  "processingStatus": "A String", # The processing status of this RasterCollection.
  "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 that this RasterCollection is in.
  "tags": [ # Tags of this RasterCollection.
    "A String",
  ],
  "creationTime": "A String", # The creation time of this RasterCollection. The value is an RFC 3339 formatted date-time value (e.g. 1970-01-01T00:00:00Z).
  "writersCanEditPermissions": True or False, # If true, WRITERs of the asset are able to edit the asset permissions.
  "rasterType": "A String", # The type of rasters contained within this RasterCollection.
  "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 raster collection. This is only returned on GET requests and not LIST requests.
  "bbox": [ # A rectangular bounding box which contains all of the data in this RasterCollection. 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 raster collection. This is only returned on GET requests and not LIST requests.
  "lastModifiedTime": "A String", # The last modified time of this RasterCollection. The value is an RFC 3339 formatted date-time value (e.g. 1970-01-01T00:00:00Z).
  "id": "A String", # A globally unique ID, used to refer to this RasterCollection.
  "mosaic": True or False, # True if this RasterCollection is a mosaic.
  "name": "A String", # The name of this RasterCollection, supplied by the author.
}


Returns:
  An object of the form:

    { # A raster collection groups multiple Raster resources for inclusion in a Layer.
    "attribution": "A String", # The name of the attribution to be used for this RasterCollection. Note: Attribution is returned in response to a get request but not a list request. After requesting a list of raster collections, you'll need to send a get request to retrieve the attribution for each raster collection.
    "description": "A String", # The description of this RasterCollection, supplied by the author.
    "processingStatus": "A String", # The processing status of this RasterCollection.
    "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 that this RasterCollection is in.
    "tags": [ # Tags of this RasterCollection.
      "A String",
    ],
    "creationTime": "A String", # The creation time of this RasterCollection. The value is an RFC 3339 formatted date-time value (e.g. 1970-01-01T00:00:00Z).
    "writersCanEditPermissions": True or False, # If true, WRITERs of the asset are able to edit the asset permissions.
    "rasterType": "A String", # The type of rasters contained within this RasterCollection.
    "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 raster collection. This is only returned on GET requests and not LIST requests.
    "bbox": [ # A rectangular bounding box which contains all of the data in this RasterCollection. 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 raster collection. This is only returned on GET requests and not LIST requests.
    "lastModifiedTime": "A String", # The last modified time of this RasterCollection. The value is an RFC 3339 formatted date-time value (e.g. 1970-01-01T00:00:00Z).
    "id": "A String", # A globally unique ID, used to refer to this RasterCollection.
    "mosaic": True or False, # True if this RasterCollection is a mosaic.
    "name": "A String", # The name of this RasterCollection, supplied by the author.
  }</pre>
</div>

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

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

<div class="method">
    <code class="details" id="get">get(id)</code>
  <pre>Return metadata for a particular raster collection.

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

Returns:
  An object of the form:

    { # A raster collection groups multiple Raster resources for inclusion in a Layer.
    "attribution": "A String", # The name of the attribution to be used for this RasterCollection. Note: Attribution is returned in response to a get request but not a list request. After requesting a list of raster collections, you'll need to send a get request to retrieve the attribution for each raster collection.
    "description": "A String", # The description of this RasterCollection, supplied by the author.
    "processingStatus": "A String", # The processing status of this RasterCollection.
    "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 that this RasterCollection is in.
    "tags": [ # Tags of this RasterCollection.
      "A String",
    ],
    "creationTime": "A String", # The creation time of this RasterCollection. The value is an RFC 3339 formatted date-time value (e.g. 1970-01-01T00:00:00Z).
    "writersCanEditPermissions": True or False, # If true, WRITERs of the asset are able to edit the asset permissions.
    "rasterType": "A String", # The type of rasters contained within this RasterCollection.
    "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 raster collection. This is only returned on GET requests and not LIST requests.
    "bbox": [ # A rectangular bounding box which contains all of the data in this RasterCollection. 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 raster collection. This is only returned on GET requests and not LIST requests.
    "lastModifiedTime": "A String", # The last modified time of this RasterCollection. The value is an RFC 3339 formatted date-time value (e.g. 1970-01-01T00:00:00Z).
    "id": "A String", # A globally unique ID, used to refer to this RasterCollection.
    "mosaic": True or False, # True if this RasterCollection is a mosaic.
    "name": "A String", # The name of this RasterCollection, 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 raster collections 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 raster collection has completed processing.
      failed - The raster collection has failed processing.
      notReady - The raster collection is not ready for processing.
      processing - The raster collection is processing.
      ready - The raster collection 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 raster_collections.List. Note: The list response does not include all the fields available in a raster collection. Refer to the RasterCollection 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 raster collection.
    "nextPageToken": "A String", # Next page token.
    "rasterCollections": [ # Resources returned.
      { # A raster collection groups multiple Raster resources for inclusion in a Layer.
        "attribution": "A String", # The name of the attribution to be used for this RasterCollection. Note: Attribution is returned in response to a get request but not a list request. After requesting a list of raster collections, you'll need to send a get request to retrieve the attribution for each raster collection.
        "description": "A String", # The description of this RasterCollection, supplied by the author.
        "processingStatus": "A String", # The processing status of this RasterCollection.
        "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 that this RasterCollection is in.
        "tags": [ # Tags of this RasterCollection.
          "A String",
        ],
        "creationTime": "A String", # The creation time of this RasterCollection. The value is an RFC 3339 formatted date-time value (e.g. 1970-01-01T00:00:00Z).
        "writersCanEditPermissions": True or False, # If true, WRITERs of the asset are able to edit the asset permissions.
        "rasterType": "A String", # The type of rasters contained within this RasterCollection.
        "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 raster collection. This is only returned on GET requests and not LIST requests.
        "bbox": [ # A rectangular bounding box which contains all of the data in this RasterCollection. 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 raster collection. This is only returned on GET requests and not LIST requests.
        "lastModifiedTime": "A String", # The last modified time of this RasterCollection. The value is an RFC 3339 formatted date-time value (e.g. 1970-01-01T00:00:00Z).
        "id": "A String", # A globally unique ID, used to refer to this RasterCollection.
        "mosaic": True or False, # True if this RasterCollection is a mosaic.
        "name": "A String", # The name of this RasterCollection, 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 raster collection asset.

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

{ # A raster collection groups multiple Raster resources for inclusion in a Layer.
  "attribution": "A String", # The name of the attribution to be used for this RasterCollection. Note: Attribution is returned in response to a get request but not a list request. After requesting a list of raster collections, you'll need to send a get request to retrieve the attribution for each raster collection.
  "description": "A String", # The description of this RasterCollection, supplied by the author.
  "processingStatus": "A String", # The processing status of this RasterCollection.
  "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 that this RasterCollection is in.
  "tags": [ # Tags of this RasterCollection.
    "A String",
  ],
  "creationTime": "A String", # The creation time of this RasterCollection. The value is an RFC 3339 formatted date-time value (e.g. 1970-01-01T00:00:00Z).
  "writersCanEditPermissions": True or False, # If true, WRITERs of the asset are able to edit the asset permissions.
  "rasterType": "A String", # The type of rasters contained within this RasterCollection.
  "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 raster collection. This is only returned on GET requests and not LIST requests.
  "bbox": [ # A rectangular bounding box which contains all of the data in this RasterCollection. 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 raster collection. This is only returned on GET requests and not LIST requests.
  "lastModifiedTime": "A String", # The last modified time of this RasterCollection. The value is an RFC 3339 formatted date-time value (e.g. 1970-01-01T00:00:00Z).
  "id": "A String", # A globally unique ID, used to refer to this RasterCollection.
  "mosaic": True or False, # True if this RasterCollection is a mosaic.
  "name": "A String", # The name of this RasterCollection, supplied by the author.
}

</pre>
</div>

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

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

Returns:
  An object of the form:

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

</body></html>