--- /dev/null
+// Copyright 2019 Google LLC.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+syntax = "proto3";
+
+package google.streetview.publish.v1;
+
+import "google/api/annotations.proto";
+import "google/protobuf/timestamp.proto";
+import "google/type/latlng.proto";
+
+option go_package = "google.golang.org/genproto/googleapis/streetview/publish/v1;publish";
+option java_outer_classname = "StreetViewPublishResources";
+option java_package = "com.google.geo.ugc.streetview.publish.v1";
+
+// Upload reference for media files.
+message UploadRef {
+ // 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}"
+ string upload_url = 1;
+}
+
+// Identifier for a [Photo][google.streetview.publish.v1.Photo].
+message PhotoId {
+ // Required. A unique identifier for a photo.
+ string id = 1;
+}
+
+// Level information containing level number and its corresponding name.
+message Level {
+ // 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.
+ double number = 1;
+
+ // 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.
+ string name = 2;
+}
+
+// Raw pose measurement for an entity.
+message Pose {
+ // 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][google.streetview.publish.v1.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 create photo process to fail.
+ google.type.LatLng lat_lng_pair = 1;
+
+ // Altitude of the pose in meters above WGS84 ellipsoid.
+ // NaN indicates an unmeasured quantity.
+ double altitude = 2;
+
+ // 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.
+ double heading = 3;
+
+ // 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.
+ double pitch = 4;
+
+ // Roll, measured in degrees. Value must be >= 0 and <360. A value of 0
+ // means level with the horizon.
+ // NaN indicates an unmeasured quantity.
+ double roll = 5;
+
+ // Level (the floor in a building) used to configure vertical navigation.
+ Level level = 7;
+
+ // 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.
+ float accuracy_meters = 9;
+}
+
+// Place metadata for an entity.
+message Place {
+ // Place identifier, as described in
+ // https://developers.google.com/places/place-id.
+ string place_id = 1;
+
+ // Output-only. The name of the place, localized to the language_code.
+ string name = 2;
+
+ // 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.
+ string language_code = 3;
+}
+
+// A connection is the link from a source photo to a destination photo.
+message Connection {
+ // Required. The destination of the connection from the containing photo to
+ // another photo.
+ PhotoId target = 1;
+}
+
+// Photo is used to store 360 photos along with photo metadata.
+message Photo {
+ // Required when updating a photo. Output only when creating a photo.
+ // Identifier for the photo, which is unique among all photos in
+ // Google.
+ PhotoId photo_id = 1;
+
+ // Required when creating a photo. Input only. The resource URL where the
+ // photo bytes are uploaded to.
+ UploadRef upload_reference = 2;
+
+ // Output only. The download URL for the photo bytes. This field is set only
+ // when
+ // [GetPhotoRequest.view][google.streetview.publish.v1.GetPhotoRequest.view]
+ // is set to
+ // [PhotoView.INCLUDE_DOWNLOAD_URL][google.streetview.publish.v1.PhotoView.INCLUDE_DOWNLOAD_URL].
+ string download_url = 3;
+
+ // Output only. The thumbnail URL for showing a preview of the given photo.
+ string thumbnail_url = 9;
+
+ // Output only. The share link for the photo.
+ string share_link = 11;
+
+ // Pose of the photo.
+ Pose pose = 4;
+
+ // Connections to other photos. A connection represents the link from this
+ // photo to another photo.
+ repeated Connection connections = 5;
+
+ // 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.
+ google.protobuf.Timestamp capture_time = 6;
+
+ // Places where this photo belongs.
+ repeated Place places = 7;
+
+ // Output only. View count of the photo.
+ int64 view_count = 10;
+
+ // Status of rights transfer.
+ enum TransferStatus {
+ // The status of this transfer is unspecified.
+ TRANSFER_STATUS_UNKNOWN = 0;
+
+ // This photo has never been in a transfer.
+ NEVER_TRANSFERRED = 1;
+
+ // This photo transfer has been initiated, but the receiver has not yet
+ // responded.
+ PENDING = 2;
+
+ // The photo transfer has been completed, and this photo has been
+ // transferred to the recipient.
+ COMPLETED = 3;
+
+ // The recipient rejected this photo transfer.
+ REJECTED = 4;
+
+ // The photo transfer expired before the recipient took any action.
+ EXPIRED = 5;
+
+ // The sender cancelled this photo transfer.
+ CANCELLED = 6;
+
+ // The recipient owns this photo due to a rights transfer.
+ RECEIVED_VIA_TRANSFER = 7;
+ }
+
+ // Output only. Status of rights transfer on this photo.
+ TransferStatus transfer_status = 12;
+
+ // Publication status of the photo in Google Maps.
+ enum MapsPublishStatus {
+ // The status of the photo is unknown.
+ UNSPECIFIED_MAPS_PUBLISH_STATUS = 0;
+
+ // The photo is published to the public through Google Maps.
+ PUBLISHED = 1;
+
+ // The photo has been rejected for an unknown reason.
+ REJECTED_UNKNOWN = 2;
+ }
+
+ // Output only. Status in Google Maps, whether this photo was published or
+ // rejected.
+ MapsPublishStatus maps_publish_status = 13;
+}