blob: f0ca3059b048593a71d0ea26c1c50498346e24bb [file] [log] [blame]
// Copyright 2023 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/field_behavior.proto";
import "google/api/resource.proto";
import "google/longrunning/operations.proto";
import "google/protobuf/field_mask.proto";
import "google/rpc/status.proto";
import "google/streetview/publish/v1/resources.proto";
option go_package = "google.golang.org/genproto/googleapis/streetview/publish/v1;publish";
option java_outer_classname = "StreetViewPublishRpcMessages";
option java_package = "com.google.geo.ugc.streetview.publish.v1";
// Request to create a [Photo][google.streetview.publish.v1.Photo].
message CreatePhotoRequest {
// Required. Photo to create.
Photo photo = 1 [(google.api.field_behavior) = REQUIRED];
}
// Request to get a [Photo][google.streetview.publish.v1.Photo].
//
// By default
//
// * does not return the download URL for the photo bytes.
//
// Parameters:
//
// * `view` controls if the download URL for the photo bytes is returned.
message GetPhotoRequest {
// Required. ID of the [Photo][google.streetview.publish.v1.Photo].
string photo_id = 1 [(google.api.field_behavior) = REQUIRED];
// Required. Specifies if a download URL for the photo bytes should be
// returned in the [Photo][google.streetview.publish.v1.Photo] response.
PhotoView view = 2 [(google.api.field_behavior) = REQUIRED];
// 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.
string language_code = 3;
}
// Request to get one or more [Photos][google.streetview.publish.v1.Photo].
// By default
//
// * does not return the download URL for the photo bytes.
//
// Parameters:
//
// * `view` controls if the download URL for the photo bytes is returned.
message BatchGetPhotosRequest {
// Required. IDs of the [Photos][google.streetview.publish.v1.Photo]. For HTTP
// GET requests, the URL query parameter should be
// `photoIds=<id1>&photoIds=<id2>&...`.
repeated string photo_ids = 1 [(google.api.field_behavior) = REQUIRED];
// Required. Specifies if a download URL for the photo bytes should be
// returned in the Photo response.
PhotoView view = 2 [(google.api.field_behavior) = REQUIRED];
// Optional. 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.
string language_code = 3 [(google.api.field_behavior) = OPTIONAL];
}
// Response to batch get of [Photos][google.streetview.publish.v1.Photo].
message BatchGetPhotosResponse {
// List of results for each individual
// [Photo][google.streetview.publish.v1.Photo] requested, in the same order as
// the requests in
// [BatchGetPhotos][google.streetview.publish.v1.StreetViewPublishService.BatchGetPhotos].
repeated PhotoResponse results = 1;
}
// Response payload for a single
// [Photo][google.streetview.publish.v1.Photo]
// in batch operations including
// [BatchGetPhotos][google.streetview.publish.v1.StreetViewPublishService.BatchGetPhotos]
// and
// [BatchUpdatePhotos][google.streetview.publish.v1.StreetViewPublishService.BatchUpdatePhotos].
message PhotoResponse {
// The status for the operation to get or update a single photo in the batch
// request.
google.rpc.Status status = 1;
// The [Photo][google.streetview.publish.v1.Photo] resource, if the request
// was successful.
Photo photo = 2;
}
// Request to list all photos that belong to the user sending the request.
//
// By default
//
// * does not return the download URL for the photo bytes.
//
// Parameters:
//
// * `view` controls if the download URL for the photo bytes is returned.
// * `pageSize` determines the maximum number of photos to return.
// * `pageToken` is the next page token value returned from a previous
// [ListPhotos][google.streetview.publish.v1.StreetViewPublishService.ListPhotos]
// request, if any.
// * `filter` allows filtering by a given parameter. 'placeId' is the only
// parameter supported at the moment.
message ListPhotosRequest {
// Required. Specifies if a download URL for the photos bytes should be
// returned in the Photos response.
PhotoView view = 1 [(google.api.field_behavior) = REQUIRED];
// Optional. 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`.
int32 page_size = 2 [(google.api.field_behavior) = OPTIONAL];
// Optional. The
// [nextPageToken][google.streetview.publish.v1.ListPhotosResponse.next_page_token]
// value returned from a previous
// [ListPhotos][google.streetview.publish.v1.StreetViewPublishService.ListPhotos]
// request, if any.
string page_token = 3 [(google.api.field_behavior) = OPTIONAL];
// Optional. The filter expression. For example:
// `placeId=ChIJj61dQgK6j4AR4GeTYWZsKWw`.
//
// The filters supported are: `placeId`, `min_latitude`, `max_latitude`,
// `min_longitude`, `max_longitude`. See https://google.aip.dev/160 for more
// information.
string filter = 4 [(google.api.field_behavior) = OPTIONAL];
// Optional. 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.
string language_code = 5 [(google.api.field_behavior) = OPTIONAL];
}
// Response to list all photos that belong to a user.
message ListPhotosResponse {
// List of photos. The
// [pageSize][google.streetview.publish.v1.ListPhotosRequest.page_size] field
// in the request determines the number of items returned.
repeated Photo photos = 1;
// Token to retrieve the next page of results, or empty if there are no more
// results in the list.
string next_page_token = 2;
}
// Request to update the metadata of a
// [Photo][google.streetview.publish.v1.Photo]. Updating the pixels of a photo
// is not supported.
message UpdatePhotoRequest {
// Required. [Photo][google.streetview.publish.v1.Photo] object containing the
// new metadata.
Photo photo = 1 [(google.api.field_behavior) = REQUIRED];
// Required. Mask that identifies fields on the photo metadata to update.
// If not present, the old [Photo][google.streetview.publish.v1.Photo]
// metadata is entirely replaced with the
// new [Photo][google.streetview.publish.v1.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.lat_lng_pair`
// * `pose.pitch`
// * `pose.roll`
// * `pose.level`
// * `pose.altitude`
// * `connections`
// * `places`
//
//
// > Note: When
// [updateMask][google.streetview.publish.v1.UpdatePhotoRequest.update_mask]
// contains repeated fields, the entire set of repeated values get replaced
// with the new contents. For example, if
// [updateMask][google.streetview.publish.v1.UpdatePhotoRequest.update_mask]
// contains `connections` and `UpdatePhotoRequest.photo.connections` is empty,
// all connections are removed.
google.protobuf.FieldMask update_mask = 2
[(google.api.field_behavior) = REQUIRED];
}
// Request to update the metadata of photos.
// Updating the pixels of photos is not supported.
message BatchUpdatePhotosRequest {
// Required. List of
// [UpdatePhotoRequests][google.streetview.publish.v1.UpdatePhotoRequest].
repeated UpdatePhotoRequest update_photo_requests = 1
[(google.api.field_behavior) = REQUIRED];
}
// Response to batch update of metadata of one or more
// [Photos][google.streetview.publish.v1.Photo].
message BatchUpdatePhotosResponse {
// List of results for each individual
// [Photo][google.streetview.publish.v1.Photo] updated, in the same order as
// the request.
repeated PhotoResponse results = 1;
}
// Request to delete a [Photo][google.streetview.publish.v1.Photo].
message DeletePhotoRequest {
// Required. ID of the [Photo][google.streetview.publish.v1.Photo].
string photo_id = 1 [(google.api.field_behavior) = REQUIRED];
}
// Request to delete multiple [Photos][google.streetview.publish.v1.Photo].
message BatchDeletePhotosRequest {
// Required. IDs of the [Photos][google.streetview.publish.v1.Photo]. HTTP
// GET requests require the following syntax for the URL query parameter:
// `photoIds=<id1>&photoIds=<id2>&...`.
repeated string photo_ids = 1 [(google.api.field_behavior) = REQUIRED];
}
// Request to create a
// [PhotoSequence][google.streetview.publish.v1.PhotoSequence] from a video.
message CreatePhotoSequenceRequest {
// Input forms of [PhotoSequence][google.streetview.publish.v1.PhotoSequence].
enum InputType {
// Not specified. Server will return
// [google.rpc.Code.INVALID_ARGUMENT][google.rpc.Code.INVALID_ARGUMENT].
INPUT_TYPE_UNSPECIFIED = 0;
// 360 Video.
VIDEO = 1;
// Extensible Device Metadata, http://www.xdm.org
XDM = 2;
}
// Required. [PhotoSequence][google.streetview.publish.v1.PhotoSequence] to
// create.
PhotoSequence photo_sequence = 1 [(google.api.field_behavior) = REQUIRED];
// Required. The input form of
// [PhotoSequence][google.streetview.publish.v1.PhotoSequence].
InputType input_type = 2 [(google.api.field_behavior) = REQUIRED];
}
// Request to get a [PhotoSequence][google.streetview.publish.v1.PhotoSequence].
//
// By default
//
// * does not return the download URL for the
// [PhotoSequence][google.streetview.publish.v1.PhotoSequence].
//
// Parameters:
//
// * `view` controls if the download URL for the
// [PhotoSequence][google.streetview.publish.v1.PhotoSequence] is
// returned.
message GetPhotoSequenceRequest {
// Required. ID of the photo sequence.
string sequence_id = 1 [(google.api.field_behavior) = REQUIRED];
// Specifies if a download URL for the photo sequence should be returned in
// `download_url` of individual photos in the
// [PhotoSequence][google.streetview.publish.v1.PhotoSequence] response.
// > Note: Currently not implemented.
PhotoView view = 2 [deprecated = true];
// Optional. The filter expression. For example: `published_status=PUBLISHED`.
//
// The filters supported are: `published_status`. See
// https://google.aip.dev/160 for more information.
string filter = 3 [(google.api.field_behavior) = OPTIONAL];
}
// Request to delete a
// [PhotoSequence][google.streetview.publish.v1.PhotoSequence].
message DeletePhotoSequenceRequest {
// Required. ID of the
// [PhotoSequence][google.streetview.publish.v1.PhotoSequence].
string sequence_id = 1 [(google.api.field_behavior) = REQUIRED];
}
// Response to batch delete of one or more
// [Photos][google.streetview.publish.v1.Photo].
message BatchDeletePhotosResponse {
// The status for the operation to delete a single
// [Photo][google.streetview.publish.v1.Photo] in the batch request.
repeated google.rpc.Status status = 1;
}
// Request to list all photo sequences that belong to the user sending the
// request.
//
// Parameters:
//
// * `pageSize` determines the maximum number of photo sequences to return.
// * `pageToken` is the next page token value returned from a previous
// [ListPhotoSequences][google.streetview.publish.v1.StreetViewPublishService.ListPhotoSequences]
// request, if any.
message ListPhotoSequencesRequest {
// Optional. The maximum number of photo sequences 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 photo sequences returned in the response may be less than
// `pageSize` if the number of matches is less than `pageSize`.
// This is currently unimplemented but is in process.
int32 page_size = 1 [(google.api.field_behavior) = OPTIONAL];
// Optional. The
// [nextPageToken][google.streetview.publish.v1.ListPhotosResponse.next_page_token]
// value returned from a previous
// [ListPhotoSequences][google.streetview.publish.v1.StreetViewPublishService.ListPhotoSequences]
// request, if any.
string page_token = 2 [(google.api.field_behavior) = OPTIONAL];
// Optional. The filter expression. For example: `imagery_type=SPHERICAL`.
//
// The filters supported are: `imagery_type`, `processing_state`,
// `min_latitude`, `max_latitude`, `min_longitude`, `max_longitude`,
// `filename_query`, `min_capture_time_seconds`, `max_capture_time_seconds.
// See https://google.aip.dev/160 for more information. Filename queries
// should sent as a Phrase in order to support multiple words and special
// characters by adding escaped quotes. Ex: filename_query="example of a
// phrase.mp4"
string filter = 4 [(google.api.field_behavior) = OPTIONAL];
}
// Response to list all photo sequences that belong to a user.
message ListPhotoSequencesResponse {
// List of photo sequences via [Operation][google.longrunning.Operation]
// interface.
//
// The maximum number of items returned is based on the
// [pageSize][google.streetview.publish.v1.ListPhotoSequencesRequest.page_size]
// field in the request.
//
// Each item in the list can have three possible states,
//
// * `Operation.done` = false, if the processing of
// [PhotoSequence][google.streetview.publish.v1.PhotoSequence] is not
// finished yet.
// * `Operation.done` = true and `Operation.error` is populated, if there was
// an error in processing.
// * `Operation.done` = true and `Operation.response` contains a
// [PhotoSequence][google.streetview.publish.v1.PhotoSequence] message,
// In each sequence, only
// [Id][google.streetview.publish.v1.PhotoSequence.id] is populated.
repeated google.longrunning.Operation photo_sequences = 1;
// Token to retrieve the next page of results, or empty if there are no more
// results in the list.
string next_page_token = 2;
}
// Specifies which view of the [Photo][google.streetview.publish.v1.Photo]
// to include in the response.
enum PhotoView {
// Server responses do not include the download URL for the photo bytes.
// The default value.
BASIC = 0;
// Server responses include the download URL for the photo bytes.
INCLUDE_DOWNLOAD_URL = 1;
}