<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, x__xgafv=None)</a></code></p>
<p class="firstline">Deletes a list of Photos and their</p>
<p class="toc_element">
  <code><a href="#batchGet">batchGet(languageCode=None, photoIds=None, x__xgafv=None, view=None)</a></code></p>
<p class="firstline">Gets the metadata of the specified</p>
<p class="toc_element">
  <code><a href="#batchUpdate">batchUpdate(body, x__xgafv=None)</a></code></p>
<p class="firstline">Updates the metadata of Photos, such</p>
<p class="toc_element">
  <code><a href="#list">list(languageCode=None, pageSize=None, filter=None, pageToken=None, x__xgafv=None, view=None)</a></code></p>
<p class="firstline">Lists all the Photos that belong to</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, 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. (required)
    The object takes the form of:

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

  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.
    "status": [ # 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).
        "message": "A String", # 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.
        "code": 42, # The status code, which should be an enum value of google.rpc.Code.
        "details": [ # A list of messages that carry the error details.  There is a common set of
            # message types for APIs to use.
          {
            "a_key": "", # Properties of the object. Contains field @type with type URL.
          },
        ],
      },
    ],
  }</pre>
</div>

<div class="method">
    <code class="details" id="batchGet">batchGet(languageCode=None, photoIds=None, x__xgafv=None, view=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 "en-US" or "sr-Latn". For more
information, see
http://www.unicode.org/reports/tr35/#Unicode_locale_identifier.
If language_code is unspecified, the user'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=<id1>&photoIds=<id2>&...`. (repeated)
  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format
  view: string, Specifies if a download URL for the photo bytes should be returned in the
Photo response.

Returns:
  An object of the form:

    { # Response to batch get of Photos.
    "results": [ # 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.
        "status": { # The `Status` type defines a logical error model that is suitable for # The status for the operation to get or update a single photo in the batch
            # request.
            # 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).
          "message": "A String", # 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.
          "code": 42, # The status code, which should be an enum value of google.rpc.Code.
          "details": [ # A list of messages that carry the error details.  There is a common set of
              # message types for APIs to use.
            {
              "a_key": "", # Properties of the object. Contains field @type with type URL.
            },
          ],
        },
        "photo": { # Photo is used to store 360 photos along with photo metadata. # The Photo resource, if the request
            # was successful.
            "viewCount": "A String", # Output only. View count of the photo.
            "photoId": { # 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.
              "id": "A String", # Required. A unique identifier for a photo.
            },
            "uploadReference": { # Upload reference for media files. # Required when creating a photo. Input only. The resource URL where the
                # photo bytes are uploaded to.
              "uploadUrl": "A String", # Required. An upload reference should be unique for each user. It follows
                  # the form:
                  # "https://streetviewpublish.googleapis.com/media/user/{account_id}/photo/{upload_reference}"
            },
            "places": [ # Places where this photo belongs.
              { # Place metadata for an entity.
                "languageCode": "A String", # 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.
                "name": "A String", # Output-only. The name of the place, localized to the language_code.
                "placeId": "A String", # Place identifier, as described in
                    # https://developers.google.com/places/place-id.
              },
            ],
            "connections": [ # 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.
                "target": { # Identifier for a Photo. # Required. The destination of the connection from the containing photo to
                    # another photo.
                  "id": "A String", # Required. A unique identifier for a photo.
                },
              },
            ],
            "pose": { # Raw pose measurement for an entity. # Pose of the photo.
              "latLngPair": { # An object representing a latitude/longitude pair. This is expressed as a pair # 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.
                  # of doubles representing degrees latitude and degrees longitude. Unless
                  # specified otherwise, this must conform to the
                  # <a href="http://www.unoosa.org/pdf/icg/2012/template/WGS_84.pdf">WGS84
                  # standard</a>. Values must be within normalized ranges.
                "latitude": 3.14, # The latitude in degrees. It must be in the range [-90.0, +90.0].
                "longitude": 3.14, # The longitude in degrees. It must be in the range [-180.0, +180.0].
              },
              "level": { # Level information containing level number and its corresponding name. # Level (the floor in a building) used to configure vertical navigation.
                "number": 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.
                "name": "A String", # 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.
              },
              "altitude": 3.14, # Altitude of the pose in meters above WGS84 ellipsoid.
                  # NaN indicates an unmeasured quantity.
              "heading": 3.14, # Compass heading, measured at the center of the photo in degrees clockwise
                  # from North. Value must be >=0 and <360.
                  # NaN indicates an unmeasured quantity.
              "pitch": 3.14, # Pitch, measured at the center of the photo in degrees. Value must be >=-90
                  # and <= 90. A value of -90 means looking directly down, and a value of 90
                  # means looking directly up.
                  # NaN indicates an unmeasured quantity.
              "roll": 3.14, # Roll, measured in degrees. Value must be >= 0 and <360. A value of 0
                  # means level with the horizon.
                  # NaN indicates an unmeasured quantity.
              "accuracyMeters": 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.
            },
            "downloadUrl": "A String", # Output only. The download URL for the photo bytes. This field is set only
                # when
                # GetPhotoRequest.view
                # is set to
                # PhotoView.INCLUDE_DOWNLOAD_URL.
            "transferStatus": "A String", # Output only. Status of rights transfer on this photo.
            "mapsPublishStatus": "A String", # Output only. Status in Google Maps, whether this photo was published or
                # rejected.
            "captureTime": "A String", # 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.
            "thumbnailUrl": "A String", # Output only. The thumbnail URL for showing a preview of the given photo.
            "shareLink": "A String", # Output only. The share link for the photo.
          },
      },
    ],
  }</pre>
</div>

<div class="method">
    <code class="details" id="batchUpdate">batchUpdate(body, 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.

<aside class="note"><b>Note:</b> To update
Pose.altitude,
Pose.latLngPair has to be
filled as well. Otherwise, the request will fail.</aside>

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

{ # Request to update the metadata of photos.
      # Updating the pixels of photos is not supported.
    "updatePhotoRequests": [ # Required. List of
        # UpdatePhotoRequests.
      { # Request to update the metadata of a
          # Photo. Updating the pixels of a photo
          # is not supported.
        "photo": { # Photo is used to store 360 photos along with photo metadata. # Required. Photo object containing the
            # new metadata.
            "viewCount": "A String", # Output only. View count of the photo.
            "photoId": { # 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.
              "id": "A String", # Required. A unique identifier for a photo.
            },
            "uploadReference": { # Upload reference for media files. # Required when creating a photo. Input only. The resource URL where the
                # photo bytes are uploaded to.
              "uploadUrl": "A String", # Required. An upload reference should be unique for each user. It follows
                  # the form:
                  # "https://streetviewpublish.googleapis.com/media/user/{account_id}/photo/{upload_reference}"
            },
            "places": [ # Places where this photo belongs.
              { # Place metadata for an entity.
                "languageCode": "A String", # 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.
                "name": "A String", # Output-only. The name of the place, localized to the language_code.
                "placeId": "A String", # Place identifier, as described in
                    # https://developers.google.com/places/place-id.
              },
            ],
            "connections": [ # 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.
                "target": { # Identifier for a Photo. # Required. The destination of the connection from the containing photo to
                    # another photo.
                  "id": "A String", # Required. A unique identifier for a photo.
                },
              },
            ],
            "pose": { # Raw pose measurement for an entity. # Pose of the photo.
              "latLngPair": { # An object representing a latitude/longitude pair. This is expressed as a pair # 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.
                  # of doubles representing degrees latitude and degrees longitude. Unless
                  # specified otherwise, this must conform to the
                  # <a href="http://www.unoosa.org/pdf/icg/2012/template/WGS_84.pdf">WGS84
                  # standard</a>. Values must be within normalized ranges.
                "latitude": 3.14, # The latitude in degrees. It must be in the range [-90.0, +90.0].
                "longitude": 3.14, # The longitude in degrees. It must be in the range [-180.0, +180.0].
              },
              "level": { # Level information containing level number and its corresponding name. # Level (the floor in a building) used to configure vertical navigation.
                "number": 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.
                "name": "A String", # 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.
              },
              "altitude": 3.14, # Altitude of the pose in meters above WGS84 ellipsoid.
                  # NaN indicates an unmeasured quantity.
              "heading": 3.14, # Compass heading, measured at the center of the photo in degrees clockwise
                  # from North. Value must be >=0 and <360.
                  # NaN indicates an unmeasured quantity.
              "pitch": 3.14, # Pitch, measured at the center of the photo in degrees. Value must be >=-90
                  # and <= 90. A value of -90 means looking directly down, and a value of 90
                  # means looking directly up.
                  # NaN indicates an unmeasured quantity.
              "roll": 3.14, # Roll, measured in degrees. Value must be >= 0 and <360. A value of 0
                  # means level with the horizon.
                  # NaN indicates an unmeasured quantity.
              "accuracyMeters": 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.
            },
            "downloadUrl": "A String", # Output only. The download URL for the photo bytes. This field is set only
                # when
                # GetPhotoRequest.view
                # is set to
                # PhotoView.INCLUDE_DOWNLOAD_URL.
            "transferStatus": "A String", # Output only. Status of rights transfer on this photo.
            "mapsPublishStatus": "A String", # Output only. Status in Google Maps, whether this photo was published or
                # rejected.
            "captureTime": "A String", # 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.
            "thumbnailUrl": "A String", # Output only. The thumbnail URL for showing a preview of the given photo.
            "shareLink": "A String", # Output only. The share link for the photo.
          },
        "updateMask": "A String", # 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`
            #
            #
            # <aside class="note"><b>Note:</b> 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.</aside>
      },
    ],
  }

  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.
    "results": [ # 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.
        "status": { # The `Status` type defines a logical error model that is suitable for # The status for the operation to get or update a single photo in the batch
            # request.
            # 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).
          "message": "A String", # 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.
          "code": 42, # The status code, which should be an enum value of google.rpc.Code.
          "details": [ # A list of messages that carry the error details.  There is a common set of
              # message types for APIs to use.
            {
              "a_key": "", # Properties of the object. Contains field @type with type URL.
            },
          ],
        },
        "photo": { # Photo is used to store 360 photos along with photo metadata. # The Photo resource, if the request
            # was successful.
            "viewCount": "A String", # Output only. View count of the photo.
            "photoId": { # 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.
              "id": "A String", # Required. A unique identifier for a photo.
            },
            "uploadReference": { # Upload reference for media files. # Required when creating a photo. Input only. The resource URL where the
                # photo bytes are uploaded to.
              "uploadUrl": "A String", # Required. An upload reference should be unique for each user. It follows
                  # the form:
                  # "https://streetviewpublish.googleapis.com/media/user/{account_id}/photo/{upload_reference}"
            },
            "places": [ # Places where this photo belongs.
              { # Place metadata for an entity.
                "languageCode": "A String", # 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.
                "name": "A String", # Output-only. The name of the place, localized to the language_code.
                "placeId": "A String", # Place identifier, as described in
                    # https://developers.google.com/places/place-id.
              },
            ],
            "connections": [ # 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.
                "target": { # Identifier for a Photo. # Required. The destination of the connection from the containing photo to
                    # another photo.
                  "id": "A String", # Required. A unique identifier for a photo.
                },
              },
            ],
            "pose": { # Raw pose measurement for an entity. # Pose of the photo.
              "latLngPair": { # An object representing a latitude/longitude pair. This is expressed as a pair # 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.
                  # of doubles representing degrees latitude and degrees longitude. Unless
                  # specified otherwise, this must conform to the
                  # <a href="http://www.unoosa.org/pdf/icg/2012/template/WGS_84.pdf">WGS84
                  # standard</a>. Values must be within normalized ranges.
                "latitude": 3.14, # The latitude in degrees. It must be in the range [-90.0, +90.0].
                "longitude": 3.14, # The longitude in degrees. It must be in the range [-180.0, +180.0].
              },
              "level": { # Level information containing level number and its corresponding name. # Level (the floor in a building) used to configure vertical navigation.
                "number": 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.
                "name": "A String", # 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.
              },
              "altitude": 3.14, # Altitude of the pose in meters above WGS84 ellipsoid.
                  # NaN indicates an unmeasured quantity.
              "heading": 3.14, # Compass heading, measured at the center of the photo in degrees clockwise
                  # from North. Value must be >=0 and <360.
                  # NaN indicates an unmeasured quantity.
              "pitch": 3.14, # Pitch, measured at the center of the photo in degrees. Value must be >=-90
                  # and <= 90. A value of -90 means looking directly down, and a value of 90
                  # means looking directly up.
                  # NaN indicates an unmeasured quantity.
              "roll": 3.14, # Roll, measured in degrees. Value must be >= 0 and <360. A value of 0
                  # means level with the horizon.
                  # NaN indicates an unmeasured quantity.
              "accuracyMeters": 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.
            },
            "downloadUrl": "A String", # Output only. The download URL for the photo bytes. This field is set only
                # when
                # GetPhotoRequest.view
                # is set to
                # PhotoView.INCLUDE_DOWNLOAD_URL.
            "transferStatus": "A String", # Output only. Status of rights transfer on this photo.
            "mapsPublishStatus": "A String", # Output only. Status in Google Maps, whether this photo was published or
                # rejected.
            "captureTime": "A String", # 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.
            "thumbnailUrl": "A String", # Output only. The thumbnail URL for showing a preview of the given photo.
            "shareLink": "A String", # Output only. The share link for the photo.
          },
      },
    ],
  }</pre>
</div>

<div class="method">
    <code class="details" id="list">list(languageCode=None, pageSize=None, filter=None, pageToken=None, x__xgafv=None, view=None)</code>
  <pre>Lists all the Photos that belong to
the user.

<aside class="note"><b>Note:</b> Recently created photos that are still
being indexed are not returned in the response.</aside>

Args:
  languageCode: string, The BCP-47 language code, such as "en-US" or "sr-Latn". For more
information, see
http://www.unicode.org/reports/tr35/#Unicode_locale_identifier.
If language_code is unspecified, the user'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`.
  filter: string, The filter expression. For example: `placeId=ChIJj61dQgK6j4AR4GeTYWZsKWw`.

The only filter supported at the moment is `placeId`.
  pageToken: string, The
nextPageToken
value returned from a previous
ListPhotos
request, if any.
  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format
  view: string, Specifies if a download URL for the photos bytes should be returned in the
Photos response.

Returns:
  An object of the form:

    { # Response to list all photos that belong to a user.
    "nextPageToken": "A String", # Token to retrieve the next page of results, or empty if there are no more
        # results in the list.
    "photos": [ # 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.
          "viewCount": "A String", # Output only. View count of the photo.
          "photoId": { # 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.
            "id": "A String", # Required. A unique identifier for a photo.
          },
          "uploadReference": { # Upload reference for media files. # Required when creating a photo. Input only. The resource URL where the
              # photo bytes are uploaded to.
            "uploadUrl": "A String", # Required. An upload reference should be unique for each user. It follows
                # the form:
                # "https://streetviewpublish.googleapis.com/media/user/{account_id}/photo/{upload_reference}"
          },
          "places": [ # Places where this photo belongs.
            { # Place metadata for an entity.
              "languageCode": "A String", # 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.
              "name": "A String", # Output-only. The name of the place, localized to the language_code.
              "placeId": "A String", # Place identifier, as described in
                  # https://developers.google.com/places/place-id.
            },
          ],
          "connections": [ # 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.
              "target": { # Identifier for a Photo. # Required. The destination of the connection from the containing photo to
                  # another photo.
                "id": "A String", # Required. A unique identifier for a photo.
              },
            },
          ],
          "pose": { # Raw pose measurement for an entity. # Pose of the photo.
            "latLngPair": { # An object representing a latitude/longitude pair. This is expressed as a pair # 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.
                # of doubles representing degrees latitude and degrees longitude. Unless
                # specified otherwise, this must conform to the
                # <a href="http://www.unoosa.org/pdf/icg/2012/template/WGS_84.pdf">WGS84
                # standard</a>. Values must be within normalized ranges.
              "latitude": 3.14, # The latitude in degrees. It must be in the range [-90.0, +90.0].
              "longitude": 3.14, # The longitude in degrees. It must be in the range [-180.0, +180.0].
            },
            "level": { # Level information containing level number and its corresponding name. # Level (the floor in a building) used to configure vertical navigation.
              "number": 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.
              "name": "A String", # 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.
            },
            "altitude": 3.14, # Altitude of the pose in meters above WGS84 ellipsoid.
                # NaN indicates an unmeasured quantity.
            "heading": 3.14, # Compass heading, measured at the center of the photo in degrees clockwise
                # from North. Value must be >=0 and <360.
                # NaN indicates an unmeasured quantity.
            "pitch": 3.14, # Pitch, measured at the center of the photo in degrees. Value must be >=-90
                # and <= 90. A value of -90 means looking directly down, and a value of 90
                # means looking directly up.
                # NaN indicates an unmeasured quantity.
            "roll": 3.14, # Roll, measured in degrees. Value must be >= 0 and <360. A value of 0
                # means level with the horizon.
                # NaN indicates an unmeasured quantity.
            "accuracyMeters": 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.
          },
          "downloadUrl": "A String", # Output only. The download URL for the photo bytes. This field is set only
              # when
              # GetPhotoRequest.view
              # is set to
              # PhotoView.INCLUDE_DOWNLOAD_URL.
          "transferStatus": "A String", # Output only. Status of rights transfer on this photo.
          "mapsPublishStatus": "A String", # Output only. Status in Google Maps, whether this photo was published or
              # rejected.
          "captureTime": "A String", # 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.
          "thumbnailUrl": "A String", # Output only. The thumbnail URL for showing a preview of the given photo.
          "shareLink": "A String", # Output only. The share link for 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 'execute()' on to request the next
  page. Returns None if there are no more items in the collection.
    </pre>
</div>

</body></html>