<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="streetviewpublish_v1.html">Street View Publish API</a> . <a href="streetviewpublish_v1.photos.html">photos</a></h1>
<h2>Instance Methods</h2>
<p class="toc_element">
  <code><a href="#batchDelete">batchDelete(body=None, x__xgafv=None)</a></code></p>
<p class="firstline">Deletes a list of Photos and their metadata. Note that if BatchDeletePhotos fails, either critical fields are missing or there is an authentication error. Even if BatchDeletePhotos succeeds, individual photos in the batch may have failures. These failures are specified in each PhotoResponse.status in BatchDeletePhotosResponse.results. See DeletePhoto for specific failures that can occur per photo.</p>
<p class="toc_element">
  <code><a href="#batchGet">batchGet(languageCode=None, photoIds=None, view=None, x__xgafv=None)</a></code></p>
<p class="firstline">Gets the metadata of the specified Photo batch. Note that if BatchGetPhotos fails, either critical fields are missing or there is an authentication error. Even if BatchGetPhotos succeeds, individual photos in the batch may have failures. These failures are specified in each PhotoResponse.status in BatchGetPhotosResponse.results. See GetPhoto for specific failures that can occur per photo.</p>
<p class="toc_element">
  <code><a href="#batchUpdate">batchUpdate(body=None, x__xgafv=None)</a></code></p>
<p class="firstline">Updates the metadata of Photos, such as pose, place association, connections, etc. Changing the pixels of photos is not supported. Note that if BatchUpdatePhotos fails, either critical fields are missing or there is an authentication error. Even if BatchUpdatePhotos succeeds, individual photos in the batch may have failures. These failures are specified in each PhotoResponse.status in BatchUpdatePhotosResponse.results. See UpdatePhoto for specific failures that can occur per photo. Only the fields specified in updateMask field are used. If `updateMask` is not present, the update applies to all fields. The number of UpdatePhotoRequest messages in a BatchUpdatePhotosRequest must not exceed 20. *Note:* To update Pose.altitude, Pose.latLngPair has to be filled as well. Otherwise, the request will fail.</p>
<p class="toc_element">
  <code><a href="#close">close()</a></code></p>
<p class="firstline">Close httplib2 connections.</p>
<p class="toc_element">
  <code><a href="#list">list(filter=None, languageCode=None, pageSize=None, pageToken=None, view=None, x__xgafv=None)</a></code></p>
<p class="firstline">Lists all the Photos that belong to the user. *Note:* Recently created photos that are still being indexed are not returned in the response.</p>
<p class="toc_element">
  <code><a href="#list_next">list_next(previous_request, previous_response)</a></code></p>
<p class="firstline">Retrieves the next page of results.</p>
<h3>Method Details</h3>
<div class="method">
    <code class="details" id="batchDelete">batchDelete(body=None, x__xgafv=None)</code>
  <pre>Deletes a list of Photos and their metadata. Note that if BatchDeletePhotos fails, either critical fields are missing or there is an authentication error. Even if BatchDeletePhotos succeeds, individual photos in the batch may have failures. These failures are specified in each PhotoResponse.status in BatchDeletePhotosResponse.results. See DeletePhoto for specific failures that can occur per photo.

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

{ # Request to delete multiple Photos.
  &quot;photoIds&quot;: [ # Required. IDs of the Photos. HTTP GET requests require the following syntax for the URL query parameter: `photoIds=&amp;photoIds=&amp;...`.
    &quot;A String&quot;,
  ],
}

  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    { # Response to batch delete of one or more Photos.
  &quot;status&quot;: [ # The status for the operation to delete a single Photo in the batch request.
    { # The `Status` type defines a logical error model that is suitable for different programming environments, including REST APIs and RPC APIs. It is used by [gRPC](https://github.com/grpc). Each `Status` message contains three pieces of data: error code, error message, and error details. You can find out more about this error model and how to work with it in the [API Design Guide](https://cloud.google.com/apis/design/errors).
      &quot;code&quot;: 42, # The status code, which should be an enum value of google.rpc.Code.
      &quot;details&quot;: [ # A list of messages that carry the error details. There is a common set of message types for APIs to use.
        {
          &quot;a_key&quot;: &quot;&quot;, # Properties of the object. Contains field @type with type URL.
        },
      ],
      &quot;message&quot;: &quot;A String&quot;, # A developer-facing error message, which should be in English. Any user-facing error message should be localized and sent in the google.rpc.Status.details field, or localized by the client.
    },
  ],
}</pre>
</div>

<div class="method">
    <code class="details" id="batchGet">batchGet(languageCode=None, photoIds=None, view=None, x__xgafv=None)</code>
  <pre>Gets the metadata of the specified Photo batch. Note that if BatchGetPhotos fails, either critical fields are missing or there is an authentication error. Even if BatchGetPhotos succeeds, individual photos in the batch may have failures. These failures are specified in each PhotoResponse.status in BatchGetPhotosResponse.results. See GetPhoto for specific failures that can occur per photo.

Args:
  languageCode: string, The BCP-47 language code, such as &quot;en-US&quot; or &quot;sr-Latn&quot;. For more information, see http://www.unicode.org/reports/tr35/#Unicode_locale_identifier. If language_code is unspecified, the user&#x27;s language preference for Google services is used.
  photoIds: string, Required. IDs of the Photos. For HTTP GET requests, the URL query parameter should be `photoIds=&amp;photoIds=&amp;...`. (repeated)
  view: string, Required. Specifies if a download URL for the photo bytes should be returned in the Photo response.
    Allowed values
      BASIC - Server reponses do not include the download URL for the photo bytes. The default value.
      INCLUDE_DOWNLOAD_URL - Server responses include the download URL for the photo bytes.
  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    { # Response to batch get of Photos.
  &quot;results&quot;: [ # List of results for each individual Photo requested, in the same order as the requests in BatchGetPhotos.
    { # Response payload for a single Photo in batch operations including BatchGetPhotos and BatchUpdatePhotos.
      &quot;photo&quot;: { # Photo is used to store 360 photos along with photo metadata. # The Photo resource, if the request was successful.
        &quot;captureTime&quot;: &quot;A String&quot;, # Absolute time when the photo was captured. When the photo has no exif timestamp, this is used to set a timestamp in the photo metadata.
        &quot;connections&quot;: [ # Connections to other photos. A connection represents the link from this photo to another photo.
          { # A connection is the link from a source photo to a destination photo.
            &quot;target&quot;: { # Identifier for a Photo. # Required. The destination of the connection from the containing photo to another photo.
              &quot;id&quot;: &quot;A String&quot;, # Required. A unique identifier for a photo.
            },
          },
        ],
        &quot;downloadUrl&quot;: &quot;A String&quot;, # Output only. The download URL for the photo bytes. This field is set only when GetPhotoRequest.view is set to PhotoView.INCLUDE_DOWNLOAD_URL.
        &quot;mapsPublishStatus&quot;: &quot;A String&quot;, # Output only. Status in Google Maps, whether this photo was published or rejected. Not currently populated.
        &quot;photoId&quot;: { # Identifier for a Photo. # Required when updating a photo. Output only when creating a photo. Identifier for the photo, which is unique among all photos in Google.
          &quot;id&quot;: &quot;A String&quot;, # Required. A unique identifier for a photo.
        },
        &quot;places&quot;: [ # Places where this photo belongs.
          { # Place metadata for an entity.
            &quot;languageCode&quot;: &quot;A String&quot;, # Output-only. The language_code that the name is localized with. This should be the language_code specified in the request, but may be a fallback.
            &quot;name&quot;: &quot;A String&quot;, # Output-only. The name of the place, localized to the language_code.
            &quot;placeId&quot;: &quot;A String&quot;, # Place identifier, as described in https://developers.google.com/places/place-id.
          },
        ],
        &quot;pose&quot;: { # Raw pose measurement for an entity. # Pose of the photo.
          &quot;accuracyMeters&quot;: 3.14, # The estimated horizontal accuracy of this pose in meters with 68% confidence (one standard deviation). For example, on Android, this value is available from this method: https://developer.android.com/reference/android/location/Location#getAccuracy(). Other platforms have different methods of obtaining similar accuracy estimations.
          &quot;altitude&quot;: 3.14, # Altitude of the pose in meters above WGS84 ellipsoid. NaN indicates an unmeasured quantity.
          &quot;heading&quot;: 3.14, # Compass heading, measured at the center of the photo in degrees clockwise from North. Value must be &gt;=0 and &lt;360. NaN indicates an unmeasured quantity.
          &quot;latLngPair&quot;: { # An object that represents a latitude/longitude pair. This is expressed as a pair of doubles to represent degrees latitude and degrees longitude. Unless specified otherwise, this must conform to the WGS84 standard. Values must be within normalized ranges. # Latitude and longitude pair of the pose, as explained here: https://cloud.google.com/datastore/docs/reference/rest/Shared.Types/LatLng When creating a Photo, if the latitude and longitude pair are not provided, the geolocation from the exif header is used. A latitude and longitude pair not provided in the photo or exif header causes the photo process to fail.
            &quot;latitude&quot;: 3.14, # The latitude in degrees. It must be in the range [-90.0, +90.0].
            &quot;longitude&quot;: 3.14, # The longitude in degrees. It must be in the range [-180.0, +180.0].
          },
          &quot;level&quot;: { # Level information containing level number and its corresponding name. # Level (the floor in a building) used to configure vertical navigation.
            &quot;name&quot;: &quot;A String&quot;, # Required. A name assigned to this Level, restricted to 3 characters. Consider how the elevator buttons would be labeled for this level if there was an elevator.
            &quot;number&quot;: 3.14, # Floor number, used for ordering. 0 indicates the ground level, 1 indicates the first level above ground level, -1 indicates the first level under ground level. Non-integer values are OK.
          },
          &quot;pitch&quot;: 3.14, # Pitch, measured at the center of the photo in degrees. Value must be &gt;=-90 and &lt;= 90. A value of -90 means looking directly down, and a value of 90 means looking directly up. NaN indicates an unmeasured quantity.
          &quot;roll&quot;: 3.14, # Roll, measured in degrees. Value must be &gt;= 0 and &lt;360. A value of 0 means level with the horizon. NaN indicates an unmeasured quantity.
        },
        &quot;shareLink&quot;: &quot;A String&quot;, # Output only. The share link for the photo.
        &quot;thumbnailUrl&quot;: &quot;A String&quot;, # Output only. The thumbnail URL for showing a preview of the given photo.
        &quot;transferStatus&quot;: &quot;A String&quot;, # Output only. Status of rights transfer on this photo.
        &quot;uploadReference&quot;: { # Upload reference for media files. # Required when creating a photo. Input only. The resource URL where the photo bytes are uploaded to.
          &quot;uploadUrl&quot;: &quot;A String&quot;, # Required. An upload reference should be unique for each user. It follows the form: &quot;https://streetviewpublish.googleapis.com/media/user/{account_id}/photo/{upload_reference}&quot;
        },
        &quot;viewCount&quot;: &quot;A String&quot;, # Output only. View count of the photo.
      },
      &quot;status&quot;: { # The `Status` type defines a logical error model that is suitable for different programming environments, including REST APIs and RPC APIs. It is used by [gRPC](https://github.com/grpc). Each `Status` message contains three pieces of data: error code, error message, and error details. You can find out more about this error model and how to work with it in the [API Design Guide](https://cloud.google.com/apis/design/errors). # The status for the operation to get or update a single photo in the batch request.
        &quot;code&quot;: 42, # The status code, which should be an enum value of google.rpc.Code.
        &quot;details&quot;: [ # A list of messages that carry the error details. There is a common set of message types for APIs to use.
          {
            &quot;a_key&quot;: &quot;&quot;, # Properties of the object. Contains field @type with type URL.
          },
        ],
        &quot;message&quot;: &quot;A String&quot;, # A developer-facing error message, which should be in English. Any user-facing error message should be localized and sent in the google.rpc.Status.details field, or localized by the client.
      },
    },
  ],
}</pre>
</div>

<div class="method">
    <code class="details" id="batchUpdate">batchUpdate(body=None, x__xgafv=None)</code>
  <pre>Updates the metadata of Photos, such as pose, place association, connections, etc. Changing the pixels of photos is not supported. Note that if BatchUpdatePhotos fails, either critical fields are missing or there is an authentication error. Even if BatchUpdatePhotos succeeds, individual photos in the batch may have failures. These failures are specified in each PhotoResponse.status in BatchUpdatePhotosResponse.results. See UpdatePhoto for specific failures that can occur per photo. Only the fields specified in updateMask field are used. If `updateMask` is not present, the update applies to all fields. The number of UpdatePhotoRequest messages in a BatchUpdatePhotosRequest must not exceed 20. *Note:* To update Pose.altitude, Pose.latLngPair has to be filled as well. Otherwise, the request will fail.

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

{ # Request to update the metadata of photos. Updating the pixels of photos is not supported.
  &quot;updatePhotoRequests&quot;: [ # Required. List of UpdatePhotoRequests.
    { # Request to update the metadata of a Photo. Updating the pixels of a photo is not supported.
      &quot;photo&quot;: { # Photo is used to store 360 photos along with photo metadata. # Required. Photo object containing the new metadata.
        &quot;captureTime&quot;: &quot;A String&quot;, # Absolute time when the photo was captured. When the photo has no exif timestamp, this is used to set a timestamp in the photo metadata.
        &quot;connections&quot;: [ # Connections to other photos. A connection represents the link from this photo to another photo.
          { # A connection is the link from a source photo to a destination photo.
            &quot;target&quot;: { # Identifier for a Photo. # Required. The destination of the connection from the containing photo to another photo.
              &quot;id&quot;: &quot;A String&quot;, # Required. A unique identifier for a photo.
            },
          },
        ],
        &quot;downloadUrl&quot;: &quot;A String&quot;, # Output only. The download URL for the photo bytes. This field is set only when GetPhotoRequest.view is set to PhotoView.INCLUDE_DOWNLOAD_URL.
        &quot;mapsPublishStatus&quot;: &quot;A String&quot;, # Output only. Status in Google Maps, whether this photo was published or rejected. Not currently populated.
        &quot;photoId&quot;: { # Identifier for a Photo. # Required when updating a photo. Output only when creating a photo. Identifier for the photo, which is unique among all photos in Google.
          &quot;id&quot;: &quot;A String&quot;, # Required. A unique identifier for a photo.
        },
        &quot;places&quot;: [ # Places where this photo belongs.
          { # Place metadata for an entity.
            &quot;languageCode&quot;: &quot;A String&quot;, # Output-only. The language_code that the name is localized with. This should be the language_code specified in the request, but may be a fallback.
            &quot;name&quot;: &quot;A String&quot;, # Output-only. The name of the place, localized to the language_code.
            &quot;placeId&quot;: &quot;A String&quot;, # Place identifier, as described in https://developers.google.com/places/place-id.
          },
        ],
        &quot;pose&quot;: { # Raw pose measurement for an entity. # Pose of the photo.
          &quot;accuracyMeters&quot;: 3.14, # The estimated horizontal accuracy of this pose in meters with 68% confidence (one standard deviation). For example, on Android, this value is available from this method: https://developer.android.com/reference/android/location/Location#getAccuracy(). Other platforms have different methods of obtaining similar accuracy estimations.
          &quot;altitude&quot;: 3.14, # Altitude of the pose in meters above WGS84 ellipsoid. NaN indicates an unmeasured quantity.
          &quot;heading&quot;: 3.14, # Compass heading, measured at the center of the photo in degrees clockwise from North. Value must be &gt;=0 and &lt;360. NaN indicates an unmeasured quantity.
          &quot;latLngPair&quot;: { # An object that represents a latitude/longitude pair. This is expressed as a pair of doubles to represent degrees latitude and degrees longitude. Unless specified otherwise, this must conform to the WGS84 standard. Values must be within normalized ranges. # Latitude and longitude pair of the pose, as explained here: https://cloud.google.com/datastore/docs/reference/rest/Shared.Types/LatLng When creating a Photo, if the latitude and longitude pair are not provided, the geolocation from the exif header is used. A latitude and longitude pair not provided in the photo or exif header causes the photo process to fail.
            &quot;latitude&quot;: 3.14, # The latitude in degrees. It must be in the range [-90.0, +90.0].
            &quot;longitude&quot;: 3.14, # The longitude in degrees. It must be in the range [-180.0, +180.0].
          },
          &quot;level&quot;: { # Level information containing level number and its corresponding name. # Level (the floor in a building) used to configure vertical navigation.
            &quot;name&quot;: &quot;A String&quot;, # Required. A name assigned to this Level, restricted to 3 characters. Consider how the elevator buttons would be labeled for this level if there was an elevator.
            &quot;number&quot;: 3.14, # Floor number, used for ordering. 0 indicates the ground level, 1 indicates the first level above ground level, -1 indicates the first level under ground level. Non-integer values are OK.
          },
          &quot;pitch&quot;: 3.14, # Pitch, measured at the center of the photo in degrees. Value must be &gt;=-90 and &lt;= 90. A value of -90 means looking directly down, and a value of 90 means looking directly up. NaN indicates an unmeasured quantity.
          &quot;roll&quot;: 3.14, # Roll, measured in degrees. Value must be &gt;= 0 and &lt;360. A value of 0 means level with the horizon. NaN indicates an unmeasured quantity.
        },
        &quot;shareLink&quot;: &quot;A String&quot;, # Output only. The share link for the photo.
        &quot;thumbnailUrl&quot;: &quot;A String&quot;, # Output only. The thumbnail URL for showing a preview of the given photo.
        &quot;transferStatus&quot;: &quot;A String&quot;, # Output only. Status of rights transfer on this photo.
        &quot;uploadReference&quot;: { # Upload reference for media files. # Required when creating a photo. Input only. The resource URL where the photo bytes are uploaded to.
          &quot;uploadUrl&quot;: &quot;A String&quot;, # Required. An upload reference should be unique for each user. It follows the form: &quot;https://streetviewpublish.googleapis.com/media/user/{account_id}/photo/{upload_reference}&quot;
        },
        &quot;viewCount&quot;: &quot;A String&quot;, # Output only. View count of the photo.
      },
      &quot;updateMask&quot;: &quot;A String&quot;, # Required. Mask that identifies fields on the photo metadata to update. If not present, the old Photo metadata is entirely replaced with the new Photo metadata in this request. The update fails if invalid fields are specified. Multiple fields can be specified in a comma-delimited list. The following fields are valid: * `pose.heading` * `pose.latLngPair` * `pose.pitch` * `pose.roll` * `pose.level` * `pose.altitude` * `connections` * `places` *Note:* When updateMask contains repeated fields, the entire set of repeated values get replaced with the new contents. For example, if updateMask contains `connections` and `UpdatePhotoRequest.photo.connections` is empty, all connections are removed.
    },
  ],
}

  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    { # Response to batch update of metadata of one or more Photos.
  &quot;results&quot;: [ # List of results for each individual Photo updated, in the same order as the request.
    { # Response payload for a single Photo in batch operations including BatchGetPhotos and BatchUpdatePhotos.
      &quot;photo&quot;: { # Photo is used to store 360 photos along with photo metadata. # The Photo resource, if the request was successful.
        &quot;captureTime&quot;: &quot;A String&quot;, # Absolute time when the photo was captured. When the photo has no exif timestamp, this is used to set a timestamp in the photo metadata.
        &quot;connections&quot;: [ # Connections to other photos. A connection represents the link from this photo to another photo.
          { # A connection is the link from a source photo to a destination photo.
            &quot;target&quot;: { # Identifier for a Photo. # Required. The destination of the connection from the containing photo to another photo.
              &quot;id&quot;: &quot;A String&quot;, # Required. A unique identifier for a photo.
            },
          },
        ],
        &quot;downloadUrl&quot;: &quot;A String&quot;, # Output only. The download URL for the photo bytes. This field is set only when GetPhotoRequest.view is set to PhotoView.INCLUDE_DOWNLOAD_URL.
        &quot;mapsPublishStatus&quot;: &quot;A String&quot;, # Output only. Status in Google Maps, whether this photo was published or rejected. Not currently populated.
        &quot;photoId&quot;: { # Identifier for a Photo. # Required when updating a photo. Output only when creating a photo. Identifier for the photo, which is unique among all photos in Google.
          &quot;id&quot;: &quot;A String&quot;, # Required. A unique identifier for a photo.
        },
        &quot;places&quot;: [ # Places where this photo belongs.
          { # Place metadata for an entity.
            &quot;languageCode&quot;: &quot;A String&quot;, # Output-only. The language_code that the name is localized with. This should be the language_code specified in the request, but may be a fallback.
            &quot;name&quot;: &quot;A String&quot;, # Output-only. The name of the place, localized to the language_code.
            &quot;placeId&quot;: &quot;A String&quot;, # Place identifier, as described in https://developers.google.com/places/place-id.
          },
        ],
        &quot;pose&quot;: { # Raw pose measurement for an entity. # Pose of the photo.
          &quot;accuracyMeters&quot;: 3.14, # The estimated horizontal accuracy of this pose in meters with 68% confidence (one standard deviation). For example, on Android, this value is available from this method: https://developer.android.com/reference/android/location/Location#getAccuracy(). Other platforms have different methods of obtaining similar accuracy estimations.
          &quot;altitude&quot;: 3.14, # Altitude of the pose in meters above WGS84 ellipsoid. NaN indicates an unmeasured quantity.
          &quot;heading&quot;: 3.14, # Compass heading, measured at the center of the photo in degrees clockwise from North. Value must be &gt;=0 and &lt;360. NaN indicates an unmeasured quantity.
          &quot;latLngPair&quot;: { # An object that represents a latitude/longitude pair. This is expressed as a pair of doubles to represent degrees latitude and degrees longitude. Unless specified otherwise, this must conform to the WGS84 standard. Values must be within normalized ranges. # Latitude and longitude pair of the pose, as explained here: https://cloud.google.com/datastore/docs/reference/rest/Shared.Types/LatLng When creating a Photo, if the latitude and longitude pair are not provided, the geolocation from the exif header is used. A latitude and longitude pair not provided in the photo or exif header causes the photo process to fail.
            &quot;latitude&quot;: 3.14, # The latitude in degrees. It must be in the range [-90.0, +90.0].
            &quot;longitude&quot;: 3.14, # The longitude in degrees. It must be in the range [-180.0, +180.0].
          },
          &quot;level&quot;: { # Level information containing level number and its corresponding name. # Level (the floor in a building) used to configure vertical navigation.
            &quot;name&quot;: &quot;A String&quot;, # Required. A name assigned to this Level, restricted to 3 characters. Consider how the elevator buttons would be labeled for this level if there was an elevator.
            &quot;number&quot;: 3.14, # Floor number, used for ordering. 0 indicates the ground level, 1 indicates the first level above ground level, -1 indicates the first level under ground level. Non-integer values are OK.
          },
          &quot;pitch&quot;: 3.14, # Pitch, measured at the center of the photo in degrees. Value must be &gt;=-90 and &lt;= 90. A value of -90 means looking directly down, and a value of 90 means looking directly up. NaN indicates an unmeasured quantity.
          &quot;roll&quot;: 3.14, # Roll, measured in degrees. Value must be &gt;= 0 and &lt;360. A value of 0 means level with the horizon. NaN indicates an unmeasured quantity.
        },
        &quot;shareLink&quot;: &quot;A String&quot;, # Output only. The share link for the photo.
        &quot;thumbnailUrl&quot;: &quot;A String&quot;, # Output only. The thumbnail URL for showing a preview of the given photo.
        &quot;transferStatus&quot;: &quot;A String&quot;, # Output only. Status of rights transfer on this photo.
        &quot;uploadReference&quot;: { # Upload reference for media files. # Required when creating a photo. Input only. The resource URL where the photo bytes are uploaded to.
          &quot;uploadUrl&quot;: &quot;A String&quot;, # Required. An upload reference should be unique for each user. It follows the form: &quot;https://streetviewpublish.googleapis.com/media/user/{account_id}/photo/{upload_reference}&quot;
        },
        &quot;viewCount&quot;: &quot;A String&quot;, # Output only. View count of the photo.
      },
      &quot;status&quot;: { # The `Status` type defines a logical error model that is suitable for different programming environments, including REST APIs and RPC APIs. It is used by [gRPC](https://github.com/grpc). Each `Status` message contains three pieces of data: error code, error message, and error details. You can find out more about this error model and how to work with it in the [API Design Guide](https://cloud.google.com/apis/design/errors). # The status for the operation to get or update a single photo in the batch request.
        &quot;code&quot;: 42, # The status code, which should be an enum value of google.rpc.Code.
        &quot;details&quot;: [ # A list of messages that carry the error details. There is a common set of message types for APIs to use.
          {
            &quot;a_key&quot;: &quot;&quot;, # Properties of the object. Contains field @type with type URL.
          },
        ],
        &quot;message&quot;: &quot;A String&quot;, # A developer-facing error message, which should be in English. Any user-facing error message should be localized and sent in the google.rpc.Status.details field, or localized by the client.
      },
    },
  ],
}</pre>
</div>

<div class="method">
    <code class="details" id="close">close()</code>
  <pre>Close httplib2 connections.</pre>
</div>

<div class="method">
    <code class="details" id="list">list(filter=None, languageCode=None, pageSize=None, pageToken=None, view=None, x__xgafv=None)</code>
  <pre>Lists all the Photos that belong to the user. *Note:* Recently created photos that are still being indexed are not returned in the response.

Args:
  filter: string, Required. The filter expression. For example: `placeId=ChIJj61dQgK6j4AR4GeTYWZsKWw`. The only filter supported at the moment is `placeId`.
  languageCode: string, The BCP-47 language code, such as &quot;en-US&quot; or &quot;sr-Latn&quot;. For more information, see http://www.unicode.org/reports/tr35/#Unicode_locale_identifier. If language_code is unspecified, the user&#x27;s language preference for Google services is used.
  pageSize: integer, The maximum number of photos to return. `pageSize` must be non-negative. If `pageSize` is zero or is not provided, the default page size of 100 is used. The number of photos returned in the response may be less than `pageSize` if the number of photos that belong to the user is less than `pageSize`.
  pageToken: string, The nextPageToken value returned from a previous ListPhotos request, if any.
  view: string, Required. Specifies if a download URL for the photos bytes should be returned in the Photos response.
    Allowed values
      BASIC - Server reponses do not include the download URL for the photo bytes. The default value.
      INCLUDE_DOWNLOAD_URL - Server responses include the download URL for the photo bytes.
  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    { # Response to list all photos that belong to a user.
  &quot;nextPageToken&quot;: &quot;A String&quot;, # Token to retrieve the next page of results, or empty if there are no more results in the list.
  &quot;photos&quot;: [ # List of photos. The pageSize field in the request determines the number of items returned.
    { # Photo is used to store 360 photos along with photo metadata.
      &quot;captureTime&quot;: &quot;A String&quot;, # Absolute time when the photo was captured. When the photo has no exif timestamp, this is used to set a timestamp in the photo metadata.
      &quot;connections&quot;: [ # Connections to other photos. A connection represents the link from this photo to another photo.
        { # A connection is the link from a source photo to a destination photo.
          &quot;target&quot;: { # Identifier for a Photo. # Required. The destination of the connection from the containing photo to another photo.
            &quot;id&quot;: &quot;A String&quot;, # Required. A unique identifier for a photo.
          },
        },
      ],
      &quot;downloadUrl&quot;: &quot;A String&quot;, # Output only. The download URL for the photo bytes. This field is set only when GetPhotoRequest.view is set to PhotoView.INCLUDE_DOWNLOAD_URL.
      &quot;mapsPublishStatus&quot;: &quot;A String&quot;, # Output only. Status in Google Maps, whether this photo was published or rejected. Not currently populated.
      &quot;photoId&quot;: { # Identifier for a Photo. # Required when updating a photo. Output only when creating a photo. Identifier for the photo, which is unique among all photos in Google.
        &quot;id&quot;: &quot;A String&quot;, # Required. A unique identifier for a photo.
      },
      &quot;places&quot;: [ # Places where this photo belongs.
        { # Place metadata for an entity.
          &quot;languageCode&quot;: &quot;A String&quot;, # Output-only. The language_code that the name is localized with. This should be the language_code specified in the request, but may be a fallback.
          &quot;name&quot;: &quot;A String&quot;, # Output-only. The name of the place, localized to the language_code.
          &quot;placeId&quot;: &quot;A String&quot;, # Place identifier, as described in https://developers.google.com/places/place-id.
        },
      ],
      &quot;pose&quot;: { # Raw pose measurement for an entity. # Pose of the photo.
        &quot;accuracyMeters&quot;: 3.14, # The estimated horizontal accuracy of this pose in meters with 68% confidence (one standard deviation). For example, on Android, this value is available from this method: https://developer.android.com/reference/android/location/Location#getAccuracy(). Other platforms have different methods of obtaining similar accuracy estimations.
        &quot;altitude&quot;: 3.14, # Altitude of the pose in meters above WGS84 ellipsoid. NaN indicates an unmeasured quantity.
        &quot;heading&quot;: 3.14, # Compass heading, measured at the center of the photo in degrees clockwise from North. Value must be &gt;=0 and &lt;360. NaN indicates an unmeasured quantity.
        &quot;latLngPair&quot;: { # An object that represents a latitude/longitude pair. This is expressed as a pair of doubles to represent degrees latitude and degrees longitude. Unless specified otherwise, this must conform to the WGS84 standard. Values must be within normalized ranges. # Latitude and longitude pair of the pose, as explained here: https://cloud.google.com/datastore/docs/reference/rest/Shared.Types/LatLng When creating a Photo, if the latitude and longitude pair are not provided, the geolocation from the exif header is used. A latitude and longitude pair not provided in the photo or exif header causes the photo process to fail.
          &quot;latitude&quot;: 3.14, # The latitude in degrees. It must be in the range [-90.0, +90.0].
          &quot;longitude&quot;: 3.14, # The longitude in degrees. It must be in the range [-180.0, +180.0].
        },
        &quot;level&quot;: { # Level information containing level number and its corresponding name. # Level (the floor in a building) used to configure vertical navigation.
          &quot;name&quot;: &quot;A String&quot;, # Required. A name assigned to this Level, restricted to 3 characters. Consider how the elevator buttons would be labeled for this level if there was an elevator.
          &quot;number&quot;: 3.14, # Floor number, used for ordering. 0 indicates the ground level, 1 indicates the first level above ground level, -1 indicates the first level under ground level. Non-integer values are OK.
        },
        &quot;pitch&quot;: 3.14, # Pitch, measured at the center of the photo in degrees. Value must be &gt;=-90 and &lt;= 90. A value of -90 means looking directly down, and a value of 90 means looking directly up. NaN indicates an unmeasured quantity.
        &quot;roll&quot;: 3.14, # Roll, measured in degrees. Value must be &gt;= 0 and &lt;360. A value of 0 means level with the horizon. NaN indicates an unmeasured quantity.
      },
      &quot;shareLink&quot;: &quot;A String&quot;, # Output only. The share link for the photo.
      &quot;thumbnailUrl&quot;: &quot;A String&quot;, # Output only. The thumbnail URL for showing a preview of the given photo.
      &quot;transferStatus&quot;: &quot;A String&quot;, # Output only. Status of rights transfer on this photo.
      &quot;uploadReference&quot;: { # Upload reference for media files. # Required when creating a photo. Input only. The resource URL where the photo bytes are uploaded to.
        &quot;uploadUrl&quot;: &quot;A String&quot;, # Required. An upload reference should be unique for each user. It follows the form: &quot;https://streetviewpublish.googleapis.com/media/user/{account_id}/photo/{upload_reference}&quot;
      },
      &quot;viewCount&quot;: &quot;A String&quot;, # Output only. View count of the photo.
    },
  ],
}</pre>
</div>

<div class="method">
    <code class="details" id="list_next">list_next(previous_request, previous_response)</code>
  <pre>Retrieves the next page of results.

Args:
  previous_request: The request for the previous page. (required)
  previous_response: The response from the request for the previous page. (required)

Returns:
  A request object that you can call &#x27;execute()&#x27; on to request the next
  page. Returns None if there are no more items in the collection.
    </pre>
</div>

</body></html>