<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.maps.html">maps</a></h1>
<h2>Instance Methods</h2>
<p class="toc_element">
  <code><a href="mapsengine_v1.maps.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 map asset.</p>
<p class="toc_element">
  <code><a href="#delete">delete(id)</a></code></p>
<p class="firstline">Delete a map.</p>
<p class="toc_element">
  <code><a href="#get">get(id, version=None)</a></code></p>
<p class="firstline">Return metadata for a particular map.</p>
<p class="toc_element">
  <code><a href="#getPublished">getPublished(id)</a></code></p>
<p class="firstline">Return the published metadata for a particular map.</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 maps readable by the current user.</p>
<p class="toc_element">
  <code><a href="#listPublished">listPublished(pageToken=None, maxResults=None, projectId=None)</a></code></p>
<p class="firstline">Return all published maps readable by the current user.</p>
<p class="toc_element">
  <code><a href="#listPublished_next">listPublished_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="#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 map asset.</p>
<p class="toc_element">
  <code><a href="#publish">publish(id, force=None)</a></code></p>
<p class="firstline">Publish a map asset.</p>
<p class="toc_element">
  <code><a href="#unpublish">unpublish(id)</a></code></p>
<p class="firstline">Unpublish a map asset.</p>
<h3>Method Details</h3>
<div class="method">
    <code class="details" id="create">create(body)</code>
  <pre>Create a map asset.

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

{ # A Map is a collection of Layers, optionally contained within folders.
  "description": "A String", # The description of this Map, supplied by the author.
  "defaultViewport": [ # A rectangular geographic bounds. # An array of four numbers (west, south, east, north) which defines the rectangular bounding box of the default viewport. The numbers represent latitude and longitude in decimal degrees.
    3.14,
  ],
  "processingStatus": "A String", # The processing status of this map. Map processing is automatically started once a map becomes ready for processing.
  "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 Map is in.
  "tags": [ # Tags of this Map.
    "A String",
  ],
  "creationTime": "A String", # The creation time of this map. The value is an RFC 3339 formatted date-time value (e.g. 1970-01-01T00:00:00Z).
  "publishingStatus": "A String", # The publishing status of this map.
  "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 map. This is only returned on GET requests and not LIST requests.
  "bbox": [ # A rectangular bounding box which contains all of the data in this Map. 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 map. This is only returned on GET requests and not LIST requests.
  "versions": [ # Deprecated: An array containing the available versions of this Map. Currently may only contain "published". The publishingStatus field should be used instead.
    "published",
  ],
  "lastModifiedTime": "A String", # The last modified time of this map. 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. 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 Map.
  "contents": [ # The contents of this Map.
    {
    },
  ],
  "name": "A String", # The name of this Map, supplied by the author.
}


Returns:
  An object of the form:

    { # A Map is a collection of Layers, optionally contained within folders.
    "description": "A String", # The description of this Map, supplied by the author.
    "defaultViewport": [ # A rectangular geographic bounds. # An array of four numbers (west, south, east, north) which defines the rectangular bounding box of the default viewport. The numbers represent latitude and longitude in decimal degrees.
      3.14,
    ],
    "processingStatus": "A String", # The processing status of this map. Map processing is automatically started once a map becomes ready for processing.
    "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 Map is in.
    "tags": [ # Tags of this Map.
      "A String",
    ],
    "creationTime": "A String", # The creation time of this map. The value is an RFC 3339 formatted date-time value (e.g. 1970-01-01T00:00:00Z).
    "publishingStatus": "A String", # The publishing status of this map.
    "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 map. This is only returned on GET requests and not LIST requests.
    "bbox": [ # A rectangular bounding box which contains all of the data in this Map. 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 map. This is only returned on GET requests and not LIST requests.
    "versions": [ # Deprecated: An array containing the available versions of this Map. Currently may only contain "published". The publishingStatus field should be used instead.
      "published",
    ],
    "lastModifiedTime": "A String", # The last modified time of this map. 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. 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 Map.
    "contents": [ # The contents of this Map.
      {
      },
    ],
    "name": "A String", # The name of this Map, supplied by the author.
  }</pre>
</div>

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

Args:
  id: string, The ID of the map. Only the map creator or project owner are permitted to delete. If the map is published the request will fail. Unpublish the map 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 map.

Args:
  id: string, The ID of the map. (required)
  version: string, Deprecated: The version parameter indicates which version of the map should be returned. When version is set to published, the published version of the map will be returned. Please use the maps.getPublished endpoint instead.
    Allowed values
      draft - The draft version.
      published - The published version.

Returns:
  An object of the form:

    { # A Map is a collection of Layers, optionally contained within folders.
    "description": "A String", # The description of this Map, supplied by the author.
    "defaultViewport": [ # A rectangular geographic bounds. # An array of four numbers (west, south, east, north) which defines the rectangular bounding box of the default viewport. The numbers represent latitude and longitude in decimal degrees.
      3.14,
    ],
    "processingStatus": "A String", # The processing status of this map. Map processing is automatically started once a map becomes ready for processing.
    "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 Map is in.
    "tags": [ # Tags of this Map.
      "A String",
    ],
    "creationTime": "A String", # The creation time of this map. The value is an RFC 3339 formatted date-time value (e.g. 1970-01-01T00:00:00Z).
    "publishingStatus": "A String", # The publishing status of this map.
    "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 map. This is only returned on GET requests and not LIST requests.
    "bbox": [ # A rectangular bounding box which contains all of the data in this Map. 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 map. This is only returned on GET requests and not LIST requests.
    "versions": [ # Deprecated: An array containing the available versions of this Map. Currently may only contain "published". The publishingStatus field should be used instead.
      "published",
    ],
    "lastModifiedTime": "A String", # The last modified time of this map. 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. 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 Map.
    "contents": [ # The contents of this Map.
      {
      },
    ],
    "name": "A String", # The name of this Map, supplied by the author.
  }</pre>
</div>

<div class="method">
    <code class="details" id="getPublished">getPublished(id)</code>
  <pre>Return the published metadata for a particular map.

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

Returns:
  An object of the form:

    { # The published version of a map asset.
    "name": "A String", # The name of this Map, supplied by the author.
    "defaultViewport": [ # A rectangular geographic bounds. # An array of four numbers (west, south, east, north) which defines the rectangular bounding box of the default viewport. The numbers represent latitude and longitude in decimal degrees.
      3.14,
    ],
    "projectId": "A String", # The ID of the project that this Map is in.
    "id": "A String", # A globally unique ID, used to refer to this Map.
    "contents": [ # The contents of this Map.
      {
      },
    ],
    "description": "A String", # The description of this Map, 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 maps 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 map has completed processing.
      failed - The map has failed processing.
      notReady - The map is not ready for processing.
      processing - The map is 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 maps.List.
    "nextPageToken": "A String", # Next page token.
    "maps": [ # Resources returned.
      { # A Map is a collection of Layers, optionally contained within folders.
        "description": "A String", # The description of this Map, supplied by the author.
        "defaultViewport": [ # A rectangular geographic bounds. # An array of four numbers (west, south, east, north) which defines the rectangular bounding box of the default viewport. The numbers represent latitude and longitude in decimal degrees.
          3.14,
        ],
        "processingStatus": "A String", # The processing status of this map. Map processing is automatically started once a map becomes ready for processing.
        "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 Map is in.
        "tags": [ # Tags of this Map.
          "A String",
        ],
        "creationTime": "A String", # The creation time of this map. The value is an RFC 3339 formatted date-time value (e.g. 1970-01-01T00:00:00Z).
        "publishingStatus": "A String", # The publishing status of this map.
        "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 map. This is only returned on GET requests and not LIST requests.
        "bbox": [ # A rectangular bounding box which contains all of the data in this Map. 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 map. This is only returned on GET requests and not LIST requests.
        "versions": [ # Deprecated: An array containing the available versions of this Map. Currently may only contain "published". The publishingStatus field should be used instead.
          "published",
        ],
        "lastModifiedTime": "A String", # The last modified time of this map. 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. 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 Map.
        "contents": [ # The contents of this Map.
          {
          },
        ],
        "name": "A String", # The name of this Map, supplied by the author.
      },
    ],
  }</pre>
</div>

<div class="method">
    <code class="details" id="listPublished">listPublished(pageToken=None, maxResults=None, projectId=None)</code>
  <pre>Return all published maps readable by the current user.

Args:
  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.
  maxResults: integer, The maximum number of items to include in a single response page. The maximum supported value is 100.
  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.

Returns:
  An object of the form:

    { # The response returned by a call to maps.List.published.
    "nextPageToken": "A String", # Next page token.
    "maps": [ # Resources returned.
      { # The published version of a map asset.
        "name": "A String", # The name of this Map, supplied by the author.
        "defaultViewport": [ # A rectangular geographic bounds. # An array of four numbers (west, south, east, north) which defines the rectangular bounding box of the default viewport. The numbers represent latitude and longitude in decimal degrees.
          3.14,
        ],
        "projectId": "A String", # The ID of the project that this Map is in.
        "id": "A String", # A globally unique ID, used to refer to this Map.
        "contents": [ # The contents of this Map.
          {
          },
        ],
        "description": "A String", # The description of this Map, supplied by the author.
      },
    ],
  }</pre>
</div>

<div class="method">
    <code class="details" id="listPublished_next">listPublished_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="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 map asset.

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

{ # A Map is a collection of Layers, optionally contained within folders.
  "description": "A String", # The description of this Map, supplied by the author.
  "defaultViewport": [ # A rectangular geographic bounds. # An array of four numbers (west, south, east, north) which defines the rectangular bounding box of the default viewport. The numbers represent latitude and longitude in decimal degrees.
    3.14,
  ],
  "processingStatus": "A String", # The processing status of this map. Map processing is automatically started once a map becomes ready for processing.
  "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 Map is in.
  "tags": [ # Tags of this Map.
    "A String",
  ],
  "creationTime": "A String", # The creation time of this map. The value is an RFC 3339 formatted date-time value (e.g. 1970-01-01T00:00:00Z).
  "publishingStatus": "A String", # The publishing status of this map.
  "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 map. This is only returned on GET requests and not LIST requests.
  "bbox": [ # A rectangular bounding box which contains all of the data in this Map. 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 map. This is only returned on GET requests and not LIST requests.
  "versions": [ # Deprecated: An array containing the available versions of this Map. Currently may only contain "published". The publishingStatus field should be used instead.
    "published",
  ],
  "lastModifiedTime": "A String", # The last modified time of this map. 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. 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 Map.
  "contents": [ # The contents of this Map.
    {
    },
  ],
  "name": "A String", # The name of this Map, supplied by the author.
}

</pre>
</div>

<div class="method">
    <code class="details" id="publish">publish(id, force=None)</code>
  <pre>Publish a map asset.

Args:
  id: string, The ID of the map. (required)
  force: boolean, If set to true, the API will allow publication of the map even if it's out of date. If false, the map must have a processingStatus of complete before publishing.

Returns:
  An object of the form:

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

<div class="method">
    <code class="details" id="unpublish">unpublish(id)</code>
  <pre>Unpublish a map asset.

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

Returns:
  An object of the form:

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

</body></html>