// 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.firestore.v1; import "google/protobuf/timestamp.proto"; option csharp_namespace = "Google.Cloud.Firestore.V1"; option go_package = "cloud.google.com/go/firestore/apiv1/firestorepb;firestorepb"; option java_multiple_files = true; option java_outer_classname = "CommonProto"; option java_package = "com.google.firestore.v1"; option objc_class_prefix = "GCFS"; option php_namespace = "Google\\Cloud\\Firestore\\V1"; option ruby_package = "Google::Cloud::Firestore::V1"; // A set of field paths on a document. // Used to restrict a get or update operation on a document to a subset of its // fields. // This is different from standard field masks, as this is always scoped to a // [Document][google.firestore.v1.Document], and takes in account the dynamic // nature of [Value][google.firestore.v1.Value]. message DocumentMask { // The list of field paths in the mask. See // [Document.fields][google.firestore.v1.Document.fields] for a field path // syntax reference. repeated string field_paths = 1; } // A precondition on a document, used for conditional operations. message Precondition { // The type of precondition. oneof condition_type { // When set to `true`, the target document must exist. // When set to `false`, the target document must not exist. bool exists = 1; // When set, the target document must exist and have been last updated at // that time. Timestamp must be microsecond aligned. google.protobuf.Timestamp update_time = 2; } } // Options for creating a new transaction. message TransactionOptions { // Options for a transaction that can be used to read and write documents. // // Firestore does not allow 3rd party auth requests to create read-write. // transactions. message ReadWrite { // An optional transaction to retry. bytes retry_transaction = 1; } // Options for a transaction that can only be used to read documents. message ReadOnly { // The consistency mode for this transaction. If not set, defaults to strong // consistency. oneof consistency_selector { // Reads documents at the given time. // // This must be a microsecond precision timestamp within the past one // hour, or if Point-in-Time Recovery is enabled, can additionally be a // whole minute timestamp within the past 7 days. google.protobuf.Timestamp read_time = 2; } } // The mode of the transaction. oneof mode { // The transaction can only be used for read operations. ReadOnly read_only = 2; // The transaction can be used for both read and write operations. ReadWrite read_write = 3; } }