blob: 4789b46a57a68c8709f31e78936ca50979c4d436 [file] [log] [blame]
{
"resources": {
"photos": {
"methods": {
"batchGet": {
"response": {
"$ref": "BatchGetPhotosResponse"
},
"parameterOrder": [],
"httpMethod": "GET",
"scopes": [
"https://www.googleapis.com/auth/streetviewpublish"
],
"parameters": {
"view": {
"location": "query",
"enum": [
"BASIC",
"INCLUDE_DOWNLOAD_URL"
],
"description": "Specifies if a download URL for the photo bytes should be returned in the\nPhoto response.",
"type": "string"
},
"photoIds": {
"repeated": true,
"location": "query",
"description": "Required. IDs of the Photos. For HTTP\nGET requests, the URL query parameter should be\n`photoIds=\u003cid1\u003e&photoIds=\u003cid2\u003e&...`.",
"type": "string"
}
},
"flatPath": "v1/photos:batchGet",
"id": "streetviewpublish.photos.batchGet",
"path": "v1/photos:batchGet",
"description": "Gets the metadata of the specified\nPhoto batch.\n\nNote that if\nBatchGetPhotos\nfails, either critical fields are missing or there was an authentication\nerror. Even if\nBatchGetPhotos\nsucceeds, there may have been failures for single photos in the batch.\nThese failures will be specified in each\nPhotoResponse.status\nin\nBatchGetPhotosResponse.results.\nSee\nGetPhoto\nfor specific failures that can occur per photo."
},
"list": {
"description": "Lists all the Photos that belong to the user.",
"response": {
"$ref": "ListPhotosResponse"
},
"parameterOrder": [],
"httpMethod": "GET",
"parameters": {
"pageToken": {
"location": "query",
"description": "The\nnextPageToken\nvalue returned from a previous\nListPhotos\nrequest, if any.",
"type": "string"
},
"pageSize": {
"format": "int32",
"description": "The maximum number of photos to return.\n`pageSize` must be non-negative. If `pageSize` is zero or is not provided,\nthe default page size of 100 will be used.\nThe number of photos returned in the response may be less than `pageSize`\nif the number of photos that belong to the user is less than `pageSize`.",
"type": "integer",
"location": "query"
},
"view": {
"location": "query",
"enum": [
"BASIC",
"INCLUDE_DOWNLOAD_URL"
],
"description": "Specifies if a download URL for the photos bytes should be returned in the\nPhotos response.",
"type": "string"
},
"filter": {
"location": "query",
"description": "The filter expression. For example: `placeId=ChIJj61dQgK6j4AR4GeTYWZsKWw`.",
"type": "string"
}
},
"scopes": [
"https://www.googleapis.com/auth/streetviewpublish"
],
"flatPath": "v1/photos",
"id": "streetviewpublish.photos.list",
"path": "v1/photos"
},
"batchDelete": {
"request": {
"$ref": "BatchDeletePhotosRequest"
},
"description": "Deletes a list of Photos and their metadata.\n\nNote that if\nBatchDeletePhotos\nfails, either critical fields are missing or there was an authentication\nerror. Even if\nBatchDeletePhotos\nsucceeds, there may have been failures for single photos in the batch.\nThese failures will be specified in each\nPhotoResponse.status\nin\nBatchDeletePhotosResponse.results.\nSee\nDeletePhoto\nfor specific failures that can occur per photo.",
"response": {
"$ref": "BatchDeletePhotosResponse"
},
"parameterOrder": [],
"httpMethod": "POST",
"scopes": [
"https://www.googleapis.com/auth/streetviewpublish"
],
"parameters": {},
"flatPath": "v1/photos:batchDelete",
"id": "streetviewpublish.photos.batchDelete",
"path": "v1/photos:batchDelete"
},
"batchUpdate": {
"flatPath": "v1/photos:batchUpdate",
"id": "streetviewpublish.photos.batchUpdate",
"path": "v1/photos:batchUpdate",
"description": "Updates the metadata of Photos, such\nas pose, place association, connections, etc. Changing the pixels of photos\nis not supported.\n\nNote that if\nBatchUpdatePhotos\nfails, either critical fields are missing or there was an authentication\nerror. Even if\nBatchUpdatePhotos\nsucceeds, there may have been failures for single photos in the batch.\nThese failures will be specified in each\nPhotoResponse.status\nin\nBatchUpdatePhotosResponse.results.\nSee\nUpdatePhoto\nfor specific failures that can occur per photo.",
"request": {
"$ref": "BatchUpdatePhotosRequest"
},
"response": {
"$ref": "BatchUpdatePhotosResponse"
},
"parameterOrder": [],
"httpMethod": "POST",
"parameters": {},
"scopes": [
"https://www.googleapis.com/auth/streetviewpublish"
]
}
}
},
"photo": {
"methods": {
"delete": {
"parameterOrder": [
"photoId"
],
"httpMethod": "DELETE",
"response": {
"$ref": "Empty"
},
"scopes": [
"https://www.googleapis.com/auth/streetviewpublish"
],
"parameters": {
"photoId": {
"location": "path",
"description": "Required. ID of the Photo.",
"type": "string",
"required": true
}
},
"flatPath": "v1/photo/{photoId}",
"id": "streetviewpublish.photo.delete",
"path": "v1/photo/{photoId}",
"description": "Deletes a Photo and its metadata.\n\nThis method returns the following error codes:\n\n* google.rpc.Code.PERMISSION_DENIED if the requesting user did not\ncreate the requested photo.\n* google.rpc.Code.NOT_FOUND if the photo ID does not exist."
},
"get": {
"httpMethod": "GET",
"parameterOrder": [
"photoId"
],
"response": {
"$ref": "Photo"
},
"parameters": {
"view": {
"location": "query",
"enum": [
"BASIC",
"INCLUDE_DOWNLOAD_URL"
],
"description": "Specifies if a download URL for the photo bytes should be returned in the\nPhoto response.",
"type": "string"
},
"photoId": {
"location": "path",
"description": "Required. ID of the Photo.",
"type": "string",
"required": true
}
},
"scopes": [
"https://www.googleapis.com/auth/streetviewpublish"
],
"flatPath": "v1/photo/{photoId}",
"path": "v1/photo/{photoId}",
"id": "streetviewpublish.photo.get",
"description": "Gets the metadata of the specified\nPhoto.\n\nThis method returns the following error codes:\n\n* google.rpc.Code.PERMISSION_DENIED if the requesting user did not\ncreate the requested Photo.\n* google.rpc.Code.NOT_FOUND if the requested\nPhoto does not exist."
},
"update": {
"flatPath": "v1/photo/{id}",
"id": "streetviewpublish.photo.update",
"path": "v1/photo/{id}",
"description": "Updates the metadata of a Photo, such\nas pose, place association, connections, etc. Changing the pixels of a\nphoto is not supported.\n\nThis method returns the following error codes:\n\n* google.rpc.Code.PERMISSION_DENIED if the requesting user did not\ncreate the requested photo.\n* google.rpc.Code.INVALID_ARGUMENT if the request is malformed.\n* google.rpc.Code.NOT_FOUND if the requested photo does not exist.",
"request": {
"$ref": "Photo"
},
"response": {
"$ref": "Photo"
},
"parameterOrder": [
"id"
],
"httpMethod": "PUT",
"parameters": {
"id": {
"description": "Required. A base64 encoded identifier.",
"type": "string",
"required": true,
"location": "path"
},
"updateMask": {
"location": "query",
"format": "google-fieldmask",
"description": "Mask that identifies fields on the photo metadata to update.\nIf not present, the old Photo metadata will be entirely replaced with the\nnew Photo metadata in this request. The update fails if invalid fields are\nspecified. Multiple fields can be specified in a comma-delimited list.\n\nThe following fields are valid:\n\n* `pose.heading`\n* `pose.latlngpair`\n* `pose.pitch`\n* `pose.roll`\n* `pose.level`\n* `pose.altitude`\n* `connections`\n* `places`\n\n\n\u003caside class=\"note\"\u003e\u003cb\u003eNote:\u003c/b\u003e Repeated fields in\nupdateMask\nmean the entire set of repeated values will be replaced with the new\ncontents. For example, if\nupdateMask\ncontains `connections` and\ngoogle.streetview.publish.v1.UpdatePhotoRequest.photo.connections is\nempty, all connections will be removed.\u003c/aside\u003e",
"type": "string"
}
},
"scopes": [
"https://www.googleapis.com/auth/streetviewpublish"
]
},
"create": {
"flatPath": "v1/photo",
"id": "streetviewpublish.photo.create",
"path": "v1/photo",
"description": "After the client finishes uploading the photo with the returned\nUploadRef,\nCreatePhoto\npublishes the uploaded Photo to\nStreet View on Google Maps.\n\nThis method returns the following error codes:\n\n* google.rpc.Code.INVALID_ARGUMENT if the request is malformed.\n* google.rpc.Code.NOT_FOUND if the upload reference does not exist.\n* google.rpc.Code.RESOURCE_EXHAUSTED if the account has reached the\nstorage limit.",
"request": {
"$ref": "Photo"
},
"response": {
"$ref": "Photo"
},
"parameterOrder": [],
"httpMethod": "POST",
"parameters": {},
"scopes": [
"https://www.googleapis.com/auth/streetviewpublish"
]
},
"startUpload": {
"description": "Creates an upload session to start uploading photo bytes. The upload URL of\nthe returned UploadRef is used to\nupload the bytes for the Photo.\n\nIn addition to the photo requirements shown in\nhttps://support.google.com/maps/answer/7012050?hl=en&ref_topic=6275604,\nthe photo must also meet the following requirements:\n\n* Photo Sphere XMP metadata must be included in the photo medadata. See\nhttps://developers.google.com/streetview/spherical-metadata for the\nrequired fields.\n* The pixel size of the photo must meet the size requirements listed in\nhttps://support.google.com/maps/answer/7012050?hl=en&ref_topic=6275604, and\nthe photo must be a full 360 horizontally.\n\nAfter the upload is complete, the\nUploadRef is used with\nCreatePhoto\nto create the Photo object entry.",
"request": {
"$ref": "Empty"
},
"response": {
"$ref": "UploadRef"
},
"parameterOrder": [],
"httpMethod": "POST",
"parameters": {},
"scopes": [
"https://www.googleapis.com/auth/streetviewpublish"
],
"flatPath": "v1/photo:startUpload",
"id": "streetviewpublish.photo.startUpload",
"path": "v1/photo:startUpload"
}
}
}
},
"parameters": {
"upload_protocol": {
"description": "Upload protocol for media (e.g. \"raw\", \"multipart\").",
"type": "string",
"location": "query"
},
"prettyPrint": {
"location": "query",
"description": "Returns response with indentations and line breaks.",
"default": "true",
"type": "boolean"
},
"uploadType": {
"location": "query",
"description": "Legacy upload protocol for media (e.g. \"media\", \"multipart\").",
"type": "string"
},
"fields": {
"type": "string",
"location": "query",
"description": "Selector specifying which fields to include in a partial response."
},
"callback": {
"location": "query",
"description": "JSONP",
"type": "string"
},
"$.xgafv": {
"enumDescriptions": [
"v1 error format",
"v2 error format"
],
"location": "query",
"enum": [
"1",
"2"
],
"description": "V1 error format.",
"type": "string"
},
"alt": {
"enum": [
"json",
"media",
"proto"
],
"type": "string",
"enumDescriptions": [
"Responses with Content-Type of application/json",
"Media download with context-dependent Content-Type",
"Responses with Content-Type of application/x-protobuf"
],
"location": "query",
"description": "Data format for response.",
"default": "json"
},
"access_token": {
"location": "query",
"description": "OAuth access token.",
"type": "string"
},
"key": {
"description": "API key. Your API key identifies your project and provides you with API access, quota, and reports. Required unless you provide an OAuth 2.0 token.",
"type": "string",
"location": "query"
},
"quotaUser": {
"description": "Available to use for quota purposes for server-side applications. Can be any arbitrary string assigned to a user, but should not exceed 40 characters.",
"type": "string",
"location": "query"
},
"pp": {
"location": "query",
"description": "Pretty-print response.",
"default": "true",
"type": "boolean"
},
"oauth_token": {
"description": "OAuth 2.0 token for the current user.",
"type": "string",
"location": "query"
},
"bearer_token": {
"description": "OAuth bearer token.",
"type": "string",
"location": "query"
}
},
"version": "v1",
"baseUrl": "https://streetviewpublish.googleapis.com/",
"kind": "discovery#restDescription",
"description": "Publishes 360 photos to Google Maps, along with position, orientation, and connectivity metadata. Apps can offer an interface for positioning, connecting, and uploading user-generated Street View images.\n",
"servicePath": "",
"basePath": "",
"id": "streetviewpublish:v1",
"documentationLink": "https://developers.google.com/streetview/publish/",
"revision": "20170722",
"discoveryVersion": "v1",
"version_module": "True",
"schemas": {
"UpdatePhotoRequest": {
"description": "Request to update the metadata of a\nPhoto. Updating the pixels of a photo\nis not supported.",
"type": "object",
"properties": {
"photo": {
"$ref": "Photo",
"description": "Required. Photo object containing the\nnew metadata. Only the fields specified in\nupdateMask\nfield are used. If `updateMask` is not present, the update applies to all\nfields. \u003caside class=\"note\"\u003e\u003cb\u003eNote:\u003c/b\u003e To update\nPose.altitude,\nPose.latLngPair has to be\nfilled as well. Otherwise, the request will fail."
},
"updateMask": {
"format": "google-fieldmask",
"description": "Mask that identifies fields on the photo metadata to update.\nIf not present, the old Photo metadata will be entirely replaced with the\nnew Photo metadata in this request. The update fails if invalid fields are\nspecified. Multiple fields can be specified in a comma-delimited list.\n\nThe following fields are valid:\n\n* `pose.heading`\n* `pose.latlngpair`\n* `pose.pitch`\n* `pose.roll`\n* `pose.level`\n* `pose.altitude`\n* `connections`\n* `places`\n\n\n\u003caside class=\"note\"\u003e\u003cb\u003eNote:\u003c/b\u003e Repeated fields in\nupdateMask\nmean the entire set of repeated values will be replaced with the new\ncontents. For example, if\nupdateMask\ncontains `connections` and\ngoogle.streetview.publish.v1.UpdatePhotoRequest.photo.connections is\nempty, all connections will be removed.\u003c/aside\u003e",
"type": "string"
}
},
"id": "UpdatePhotoRequest"
},
"Pose": {
"description": "Raw pose measurement for an entity.",
"type": "object",
"properties": {
"heading": {
"type": "number",
"format": "double",
"description": "Compass heading, measured at the center of the photo in degrees clockwise\nfrom North. Value must be \u003e=0 and \u003c360.\nNaN indicates an unmeasured quantity."
},
"altitude": {
"format": "double",
"description": "Altitude of the pose in meters above ground level (as defined by WGS84).\nNaN indicates an unmeasured quantity.",
"type": "number"
},
"pitch": {
"format": "double",
"description": "Pitch, measured at the center of the photo in degrees. Value must be \u003e=-90\nand \u003c= 90. A value of -90 means looking directly down, and a value of 90\nmeans looking directly up.\nNaN indicates an unmeasured quantity.",
"type": "number"
},
"latLngPair": {
"$ref": "LatLng",
"description": "Latitude and longitude pair of the pose, as explained here:\nhttps://cloud.google.com/datastore/docs/reference/rest/Shared.Types/LatLng\nWhen creating a Photo, if the\nlatitude and longitude pair are not provided here, the geolocation from the\nexif header will be used. If the latitude and longitude pair is not\nprovided and cannot be found in the exif header, the create photo process\nwill fail."
},
"roll": {
"format": "double",
"description": "Roll, measured in degrees. Value must be \u003e= 0 and \u003c360. A value of 0\nmeans level with the horizon.\nNaN indicates an unmeasured quantity.",
"type": "number"
},
"level": {
"description": "Level (the floor in a building) used to configure vertical navigation.",
"$ref": "Level"
}
},
"id": "Pose"
},
"PhotoId": {
"description": "Identifier for a Photo.",
"type": "object",
"properties": {
"id": {
"description": "Required. A base64 encoded identifier.",
"type": "string"
}
},
"id": "PhotoId"
},
"BatchUpdatePhotosRequest": {
"id": "BatchUpdatePhotosRequest",
"description": "Request to update the metadata of photos.\nUpdating the pixels of photos is not supported.",
"type": "object",
"properties": {
"updatePhotoRequests": {
"description": "Required. List of\nUpdatePhotoRequests.",
"items": {
"$ref": "UpdatePhotoRequest"
},
"type": "array"
}
}
},
"ListPhotosResponse": {
"description": "Response to list all photos that belong to a user.",
"type": "object",
"properties": {
"photos": {
"description": "List of photos. The maximum number of items returned is based on the\npageSize field\nin the request.",
"items": {
"$ref": "Photo"
},
"type": "array"
},
"nextPageToken": {
"description": "Token to retrieve the next page of results, or empty if there are no more\nresults in the list.",
"type": "string"
}
},
"id": "ListPhotosResponse"
},
"Photo": {
"description": "Photo is used to store 360 photos along with photo metadata.",
"type": "object",
"properties": {
"pose": {
"description": "Pose of the photo.",
"$ref": "Pose"
},
"photoId": {
"$ref": "PhotoId",
"description": "Required when updating photo. Output only when creating photo.\nIdentifier for the photo, which is unique among all photos in\nGoogle."
},
"uploadReference": {
"$ref": "UploadRef",
"description": "Required when creating photo. Input only. The resource URL where the photo\nbytes are uploaded to."
},
"shareLink": {
"description": "Output only. The share link for the photo.",
"type": "string"
},
"captureTime": {
"format": "google-datetime",
"description": "Absolute time when the photo was captured.\nWhen the photo has no exif timestamp, this is used to set a timestamp in\nthe photo metadata.",
"type": "string"
},
"thumbnailUrl": {
"description": "Output only. The thumbnail URL for showing a preview of the given photo.",
"type": "string"
},
"viewCount": {
"format": "int64",
"description": "Output only. View count of the photo.",
"type": "string"
},
"downloadUrl": {
"description": "Output only. The download URL for the photo bytes. This field is set only\nwhen\nGetPhotoRequest.view\nis set to\nPhotoView.INCLUDE_DOWNLOAD_URL.",
"type": "string"
},
"places": {
"description": "Places where this photo belongs.",
"items": {
"$ref": "Place"
},
"type": "array"
},
"connections": {
"description": "Connections to other photos. A connection represents the link from this\nphoto to another photo.",
"items": {
"$ref": "Connection"
},
"type": "array"
}
},
"id": "Photo"
},
"PhotoResponse": {
"description": "Response payload for a single\nPhoto\nin batch operations including\nBatchGetPhotos\nand\nBatchUpdatePhotos.",
"type": "object",
"properties": {
"status": {
"description": "The status for the operation to get or update a single photo in the batch\nrequest.",
"$ref": "Status"
},
"photo": {
"description": "The Photo resource, if the request\nwas successful.",
"$ref": "Photo"
}
},
"id": "PhotoResponse"
},
"Connection": {
"description": "A connection is the link from a source photo to a destination photo.",
"type": "object",
"properties": {
"target": {
"$ref": "PhotoId",
"description": "Required. The destination of the connection from the containing photo to\nanother photo."
}
},
"id": "Connection"
},
"BatchUpdatePhotosResponse": {
"description": "Response to batch update of metadata of one or more\nPhotos.",
"type": "object",
"properties": {
"results": {
"description": "List of results for each individual\nPhoto updated, in the same order as\nthe request.",
"items": {
"$ref": "PhotoResponse"
},
"type": "array"
}
},
"id": "BatchUpdatePhotosResponse"
},
"BatchDeletePhotosResponse": {
"type": "object",
"properties": {
"status": {
"description": "The status for the operation to delete a single\nPhoto in the batch request.",
"items": {
"$ref": "Status"
},
"type": "array"
}
},
"id": "BatchDeletePhotosResponse",
"description": "Response to batch delete of one or more\nPhotos."
},
"Status": {
"description": "The `Status` type defines a logical error model that is suitable for different\nprogramming environments, including REST APIs and RPC APIs. It is used by\n[gRPC](https://github.com/grpc). The error model is designed to be:\n\n- Simple to use and understand for most users\n- Flexible enough to meet unexpected needs\n\n# Overview\n\nThe `Status` message contains three pieces of data: error code, error message,\nand error details. The error code should be an enum value of\ngoogle.rpc.Code, but it may accept additional error codes if needed. The\nerror message should be a developer-facing English message that helps\ndevelopers *understand* and *resolve* the error. If a localized user-facing\nerror message is needed, put the localized message in the error details or\nlocalize it in the client. The optional error details may contain arbitrary\ninformation about the error. There is a predefined set of error detail types\nin the package `google.rpc` that can be used for common error conditions.\n\n# Language mapping\n\nThe `Status` message is the logical representation of the error model, but it\nis not necessarily the actual wire format. When the `Status` message is\nexposed in different client libraries and different wire protocols, it can be\nmapped differently. For example, it will likely be mapped to some exceptions\nin Java, but more likely mapped to some error codes in C.\n\n# Other uses\n\nThe error model and the `Status` message can be used in a variety of\nenvironments, either with or without APIs, to provide a\nconsistent developer experience across different environments.\n\nExample uses of this error model include:\n\n- Partial errors. If a service needs to return partial errors to the client,\n it may embed the `Status` in the normal response to indicate the partial\n errors.\n\n- Workflow errors. A typical workflow has multiple steps. Each step may\n have a `Status` message for error reporting.\n\n- Batch operations. If a client uses batch request and batch response, the\n `Status` message should be used directly inside batch response, one for\n each error sub-response.\n\n- Asynchronous operations. If an API call embeds asynchronous operation\n results in its response, the status of those operations should be\n represented directly using the `Status` message.\n\n- Logging. If some API errors are stored in logs, the message `Status` could\n be used directly after any stripping needed for security/privacy reasons.",
"type": "object",
"properties": {
"message": {
"description": "A developer-facing error message, which should be in English. Any\nuser-facing error message should be localized and sent in the\ngoogle.rpc.Status.details field, or localized by the client.",
"type": "string"
},
"details": {
"description": "A list of messages that carry the error details. There is a common set of\nmessage types for APIs to use.",
"items": {
"additionalProperties": {
"description": "Properties of the object. Contains field @type with type URL.",
"type": "any"
},
"type": "object"
},
"type": "array"
},
"code": {
"type": "integer",
"format": "int32",
"description": "The status code, which should be an enum value of google.rpc.Code."
}
},
"id": "Status"
},
"Empty": {
"id": "Empty",
"description": "A generic empty message that you can re-use to avoid defining duplicated\nempty messages in your APIs. A typical example is to use it as the request\nor the response type of an API method. For instance:\n\n service Foo {\n rpc Bar(google.protobuf.Empty) returns (google.protobuf.Empty);\n }\n\nThe JSON representation for `Empty` is empty JSON object `{}`.",
"type": "object",
"properties": {}
},
"Level": {
"description": "Level information containing level number and its corresponding name.",
"type": "object",
"properties": {
"name": {
"description": "Required. A name assigned to this Level, restricted to 3 characters.\nConsider how the elevator buttons would be labeled for this level if there\nwas an elevator.",
"type": "string"
},
"number": {
"format": "double",
"description": "Floor number, used for ordering. 0 indicates the ground level, 1 indicates\nthe first level above ground level, -1 indicates the first level under\nground level. Non-integer values are OK.",
"type": "number"
}
},
"id": "Level"
},
"BatchGetPhotosResponse": {
"properties": {
"results": {
"description": "List of results for each individual\nPhoto requested, in the same order as\nthe requests in\nBatchGetPhotos.",
"items": {
"$ref": "PhotoResponse"
},
"type": "array"
}
},
"id": "BatchGetPhotosResponse",
"description": "Response to batch get of Photos.",
"type": "object"
},
"Place": {
"description": "Place metadata for an entity.",
"type": "object",
"properties": {
"placeId": {
"description": "Required. Place identifier, as described in\nhttps://developers.google.com/places/place-id.",
"type": "string"
}
},
"id": "Place"
},
"UploadRef": {
"properties": {
"uploadUrl": {
"description": "Required. An upload reference should be unique for each user. It follows\nthe form:\n\"https://streetviewpublish.googleapis.com/media/user/{account_id}/photo/{upload_reference}\"",
"type": "string"
}
},
"id": "UploadRef",
"description": "Upload reference for media files.",
"type": "object"
},
"LatLng": {
"description": "An object representing a latitude/longitude pair. This is expressed as a pair\nof doubles representing degrees latitude and degrees longitude. Unless\nspecified otherwise, this must conform to the\n\u003ca href=\"http://www.unoosa.org/pdf/icg/2012/template/WGS_84.pdf\"\u003eWGS84\nstandard\u003c/a\u003e. Values must be within normalized ranges.\n\nExample of normalization code in Python:\n\n def NormalizeLongitude(longitude):\n \"\"\"Wraps decimal degrees longitude to [-180.0, 180.0].\"\"\"\n q, r = divmod(longitude, 360.0)\n if r \u003e 180.0 or (r == 180.0 and q \u003c= -1.0):\n return r - 360.0\n return r\n\n def NormalizeLatLng(latitude, longitude):\n \"\"\"Wraps decimal degrees latitude and longitude to\n [-90.0, 90.0] and [-180.0, 180.0], respectively.\"\"\"\n r = latitude % 360.0\n if r \u003c= 90.0:\n return r, NormalizeLongitude(longitude)\n elif r \u003e= 270.0:\n return r - 360, NormalizeLongitude(longitude)\n else:\n return 180 - r, NormalizeLongitude(longitude + 180.0)\n\n assert 180.0 == NormalizeLongitude(180.0)\n assert -180.0 == NormalizeLongitude(-180.0)\n assert -179.0 == NormalizeLongitude(181.0)\n assert (0.0, 0.0) == NormalizeLatLng(360.0, 0.0)\n assert (0.0, 0.0) == NormalizeLatLng(-360.0, 0.0)\n assert (85.0, 180.0) == NormalizeLatLng(95.0, 0.0)\n assert (-85.0, -170.0) == NormalizeLatLng(-95.0, 10.0)\n assert (90.0, 10.0) == NormalizeLatLng(90.0, 10.0)\n assert (-90.0, -10.0) == NormalizeLatLng(-90.0, -10.0)\n assert (0.0, -170.0) == NormalizeLatLng(-180.0, 10.0)\n assert (0.0, -170.0) == NormalizeLatLng(180.0, 10.0)\n assert (-90.0, 10.0) == NormalizeLatLng(270.0, 10.0)\n assert (90.0, 10.0) == NormalizeLatLng(-270.0, 10.0)",
"type": "object",
"properties": {
"latitude": {
"format": "double",
"description": "The latitude in degrees. It must be in the range [-90.0, +90.0].",
"type": "number"
},
"longitude": {
"format": "double",
"description": "The longitude in degrees. It must be in the range [-180.0, +180.0].",
"type": "number"
}
},
"id": "LatLng"
},
"BatchDeletePhotosRequest": {
"description": "Request to delete multiple Photos.",
"type": "object",
"properties": {
"photoIds": {
"items": {
"type": "string"
},
"type": "array",
"description": "Required. IDs of the Photos. For HTTP\nGET requests, the URL query parameter should be\n`photoIds=\u003cid1\u003e&photoIds=\u003cid2\u003e&...`."
}
},
"id": "BatchDeletePhotosRequest"
}
},
"protocol": "rest",
"icons": {
"x16": "http://www.google.com/images/icons/product/search-16.gif",
"x32": "http://www.google.com/images/icons/product/search-32.gif"
},
"canonicalName": "Street View Publish",
"auth": {
"oauth2": {
"scopes": {
"https://www.googleapis.com/auth/streetviewpublish": {
"description": "Publish and manage your 360 photos on Google Street View"
}
}
}
},
"rootUrl": "https://streetviewpublish.googleapis.com/",
"ownerDomain": "google.com",
"name": "streetviewpublish",
"batchPath": "batch",
"fullyEncodeReservedExpansion": true,
"title": "Street View Publish API",
"ownerName": "Google"
}