1*d5c09012SAndroid Build Coastguard Worker// Copyright 2023 Google LLC 2*d5c09012SAndroid Build Coastguard Worker// 3*d5c09012SAndroid Build Coastguard Worker// Licensed under the Apache License, Version 2.0 (the "License"); 4*d5c09012SAndroid Build Coastguard Worker// you may not use this file except in compliance with the License. 5*d5c09012SAndroid Build Coastguard Worker// You may obtain a copy of the License at 6*d5c09012SAndroid Build Coastguard Worker// 7*d5c09012SAndroid Build Coastguard Worker// http://www.apache.org/licenses/LICENSE-2.0 8*d5c09012SAndroid Build Coastguard Worker// 9*d5c09012SAndroid Build Coastguard Worker// Unless required by applicable law or agreed to in writing, software 10*d5c09012SAndroid Build Coastguard Worker// distributed under the License is distributed on an "AS IS" BASIS, 11*d5c09012SAndroid Build Coastguard Worker// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12*d5c09012SAndroid Build Coastguard Worker// See the License for the specific language governing permissions and 13*d5c09012SAndroid Build Coastguard Worker// limitations under the License. 14*d5c09012SAndroid Build Coastguard Worker 15*d5c09012SAndroid Build Coastguard Workersyntax = "proto3"; 16*d5c09012SAndroid Build Coastguard Worker 17*d5c09012SAndroid Build Coastguard Workerpackage google.firestore.v1; 18*d5c09012SAndroid Build Coastguard Worker 19*d5c09012SAndroid Build Coastguard Workerimport "google/protobuf/struct.proto"; 20*d5c09012SAndroid Build Coastguard Workerimport "google/protobuf/timestamp.proto"; 21*d5c09012SAndroid Build Coastguard Workerimport "google/type/latlng.proto"; 22*d5c09012SAndroid Build Coastguard Worker 23*d5c09012SAndroid Build Coastguard Workeroption csharp_namespace = "Google.Cloud.Firestore.V1"; 24*d5c09012SAndroid Build Coastguard Workeroption go_package = "cloud.google.com/go/firestore/apiv1/firestorepb;firestorepb"; 25*d5c09012SAndroid Build Coastguard Workeroption java_multiple_files = true; 26*d5c09012SAndroid Build Coastguard Workeroption java_outer_classname = "DocumentProto"; 27*d5c09012SAndroid Build Coastguard Workeroption java_package = "com.google.firestore.v1"; 28*d5c09012SAndroid Build Coastguard Workeroption objc_class_prefix = "GCFS"; 29*d5c09012SAndroid Build Coastguard Workeroption php_namespace = "Google\\Cloud\\Firestore\\V1"; 30*d5c09012SAndroid Build Coastguard Workeroption ruby_package = "Google::Cloud::Firestore::V1"; 31*d5c09012SAndroid Build Coastguard Worker 32*d5c09012SAndroid Build Coastguard Worker// A Firestore document. 33*d5c09012SAndroid Build Coastguard Worker// 34*d5c09012SAndroid Build Coastguard Worker// Must not exceed 1 MiB - 4 bytes. 35*d5c09012SAndroid Build Coastguard Workermessage Document { 36*d5c09012SAndroid Build Coastguard Worker // The resource name of the document, for example 37*d5c09012SAndroid Build Coastguard Worker // `projects/{project_id}/databases/{database_id}/documents/{document_path}`. 38*d5c09012SAndroid Build Coastguard Worker string name = 1; 39*d5c09012SAndroid Build Coastguard Worker 40*d5c09012SAndroid Build Coastguard Worker // The document's fields. 41*d5c09012SAndroid Build Coastguard Worker // 42*d5c09012SAndroid Build Coastguard Worker // The map keys represent field names. 43*d5c09012SAndroid Build Coastguard Worker // 44*d5c09012SAndroid Build Coastguard Worker // Field names matching the regular expression `__.*__` are reserved. Reserved 45*d5c09012SAndroid Build Coastguard Worker // field names are forbidden except in certain documented contexts. The field 46*d5c09012SAndroid Build Coastguard Worker // names, represented as UTF-8, must not exceed 1,500 bytes and cannot be 47*d5c09012SAndroid Build Coastguard Worker // empty. 48*d5c09012SAndroid Build Coastguard Worker // 49*d5c09012SAndroid Build Coastguard Worker // Field paths may be used in other contexts to refer to structured fields 50*d5c09012SAndroid Build Coastguard Worker // defined here. For `map_value`, the field path is represented by a 51*d5c09012SAndroid Build Coastguard Worker // dot-delimited (`.`) string of segments. Each segment is either a simple 52*d5c09012SAndroid Build Coastguard Worker // field name (defined below) or a quoted field name. For example, the 53*d5c09012SAndroid Build Coastguard Worker // structured field `"foo" : { map_value: { "x&y" : { string_value: "hello" 54*d5c09012SAndroid Build Coastguard Worker // }}}` would be represented by the field path `` foo.`x&y` ``. 55*d5c09012SAndroid Build Coastguard Worker // 56*d5c09012SAndroid Build Coastguard Worker // A simple field name contains only characters `a` to `z`, `A` to `Z`, 57*d5c09012SAndroid Build Coastguard Worker // `0` to `9`, or `_`, and must not start with `0` to `9`. For example, 58*d5c09012SAndroid Build Coastguard Worker // `foo_bar_17`. 59*d5c09012SAndroid Build Coastguard Worker // 60*d5c09012SAndroid Build Coastguard Worker // A quoted field name starts and ends with `` ` `` and 61*d5c09012SAndroid Build Coastguard Worker // may contain any character. Some characters, including `` ` ``, must be 62*d5c09012SAndroid Build Coastguard Worker // escaped using a `\`. For example, `` `x&y` `` represents `x&y` and 63*d5c09012SAndroid Build Coastguard Worker // `` `bak\`tik` `` represents `` bak`tik ``. 64*d5c09012SAndroid Build Coastguard Worker map<string, Value> fields = 2; 65*d5c09012SAndroid Build Coastguard Worker 66*d5c09012SAndroid Build Coastguard Worker // Output only. The time at which the document was created. 67*d5c09012SAndroid Build Coastguard Worker // 68*d5c09012SAndroid Build Coastguard Worker // This value increases monotonically when a document is deleted then 69*d5c09012SAndroid Build Coastguard Worker // recreated. It can also be compared to values from other documents and 70*d5c09012SAndroid Build Coastguard Worker // the `read_time` of a query. 71*d5c09012SAndroid Build Coastguard Worker google.protobuf.Timestamp create_time = 3; 72*d5c09012SAndroid Build Coastguard Worker 73*d5c09012SAndroid Build Coastguard Worker // Output only. The time at which the document was last changed. 74*d5c09012SAndroid Build Coastguard Worker // 75*d5c09012SAndroid Build Coastguard Worker // This value is initially set to the `create_time` then increases 76*d5c09012SAndroid Build Coastguard Worker // monotonically with each change to the document. It can also be 77*d5c09012SAndroid Build Coastguard Worker // compared to values from other documents and the `read_time` of a query. 78*d5c09012SAndroid Build Coastguard Worker google.protobuf.Timestamp update_time = 4; 79*d5c09012SAndroid Build Coastguard Worker} 80*d5c09012SAndroid Build Coastguard Worker 81*d5c09012SAndroid Build Coastguard Worker// A message that can hold any of the supported value types. 82*d5c09012SAndroid Build Coastguard Workermessage Value { 83*d5c09012SAndroid Build Coastguard Worker // Must have a value set. 84*d5c09012SAndroid Build Coastguard Worker oneof value_type { 85*d5c09012SAndroid Build Coastguard Worker // A null value. 86*d5c09012SAndroid Build Coastguard Worker google.protobuf.NullValue null_value = 11; 87*d5c09012SAndroid Build Coastguard Worker 88*d5c09012SAndroid Build Coastguard Worker // A boolean value. 89*d5c09012SAndroid Build Coastguard Worker bool boolean_value = 1; 90*d5c09012SAndroid Build Coastguard Worker 91*d5c09012SAndroid Build Coastguard Worker // An integer value. 92*d5c09012SAndroid Build Coastguard Worker int64 integer_value = 2; 93*d5c09012SAndroid Build Coastguard Worker 94*d5c09012SAndroid Build Coastguard Worker // A double value. 95*d5c09012SAndroid Build Coastguard Worker double double_value = 3; 96*d5c09012SAndroid Build Coastguard Worker 97*d5c09012SAndroid Build Coastguard Worker // A timestamp value. 98*d5c09012SAndroid Build Coastguard Worker // 99*d5c09012SAndroid Build Coastguard Worker // Precise only to microseconds. When stored, any additional precision is 100*d5c09012SAndroid Build Coastguard Worker // rounded down. 101*d5c09012SAndroid Build Coastguard Worker google.protobuf.Timestamp timestamp_value = 10; 102*d5c09012SAndroid Build Coastguard Worker 103*d5c09012SAndroid Build Coastguard Worker // A string value. 104*d5c09012SAndroid Build Coastguard Worker // 105*d5c09012SAndroid Build Coastguard Worker // The string, represented as UTF-8, must not exceed 1 MiB - 89 bytes. 106*d5c09012SAndroid Build Coastguard Worker // Only the first 1,500 bytes of the UTF-8 representation are considered by 107*d5c09012SAndroid Build Coastguard Worker // queries. 108*d5c09012SAndroid Build Coastguard Worker string string_value = 17; 109*d5c09012SAndroid Build Coastguard Worker 110*d5c09012SAndroid Build Coastguard Worker // A bytes value. 111*d5c09012SAndroid Build Coastguard Worker // 112*d5c09012SAndroid Build Coastguard Worker // Must not exceed 1 MiB - 89 bytes. 113*d5c09012SAndroid Build Coastguard Worker // Only the first 1,500 bytes are considered by queries. 114*d5c09012SAndroid Build Coastguard Worker bytes bytes_value = 18; 115*d5c09012SAndroid Build Coastguard Worker 116*d5c09012SAndroid Build Coastguard Worker // A reference to a document. For example: 117*d5c09012SAndroid Build Coastguard Worker // `projects/{project_id}/databases/{database_id}/documents/{document_path}`. 118*d5c09012SAndroid Build Coastguard Worker string reference_value = 5; 119*d5c09012SAndroid Build Coastguard Worker 120*d5c09012SAndroid Build Coastguard Worker // A geo point value representing a point on the surface of Earth. 121*d5c09012SAndroid Build Coastguard Worker google.type.LatLng geo_point_value = 8; 122*d5c09012SAndroid Build Coastguard Worker 123*d5c09012SAndroid Build Coastguard Worker // An array value. 124*d5c09012SAndroid Build Coastguard Worker // 125*d5c09012SAndroid Build Coastguard Worker // Cannot directly contain another array value, though can contain an 126*d5c09012SAndroid Build Coastguard Worker // map which contains another array. 127*d5c09012SAndroid Build Coastguard Worker ArrayValue array_value = 9; 128*d5c09012SAndroid Build Coastguard Worker 129*d5c09012SAndroid Build Coastguard Worker // A map value. 130*d5c09012SAndroid Build Coastguard Worker MapValue map_value = 6; 131*d5c09012SAndroid Build Coastguard Worker } 132*d5c09012SAndroid Build Coastguard Worker} 133*d5c09012SAndroid Build Coastguard Worker 134*d5c09012SAndroid Build Coastguard Worker// An array value. 135*d5c09012SAndroid Build Coastguard Workermessage ArrayValue { 136*d5c09012SAndroid Build Coastguard Worker // Values in the array. 137*d5c09012SAndroid Build Coastguard Worker repeated Value values = 1; 138*d5c09012SAndroid Build Coastguard Worker} 139*d5c09012SAndroid Build Coastguard Worker 140*d5c09012SAndroid Build Coastguard Worker// A map value. 141*d5c09012SAndroid Build Coastguard Workermessage MapValue { 142*d5c09012SAndroid Build Coastguard Worker // The map's fields. 143*d5c09012SAndroid Build Coastguard Worker // 144*d5c09012SAndroid Build Coastguard Worker // The map keys represent field names. Field names matching the regular 145*d5c09012SAndroid Build Coastguard Worker // expression `__.*__` are reserved. Reserved field names are forbidden except 146*d5c09012SAndroid Build Coastguard Worker // in certain documented contexts. The map keys, represented as UTF-8, must 147*d5c09012SAndroid Build Coastguard Worker // not exceed 1,500 bytes and cannot be empty. 148*d5c09012SAndroid Build Coastguard Worker map<string, Value> fields = 1; 149*d5c09012SAndroid Build Coastguard Worker} 150