aboutsummaryrefslogtreecommitdiff
path: root/google/streetview/publish/v1/resources.proto
blob: 2e070b6bfc12a543445afa51ab2ccf62dce4b582 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
// 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;
}