| // 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/struct.proto"; |
| import "google/protobuf/timestamp.proto"; |
| import "google/type/latlng.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 = "DocumentProto"; |
| 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 Firestore document. |
| // |
| // Must not exceed 1 MiB - 4 bytes. |
| message Document { |
| // The resource name of the document, for example |
| // `projects/{project_id}/databases/{database_id}/documents/{document_path}`. |
| string name = 1; |
| |
| // The document's fields. |
| // |
| // The map keys represent field names. |
| // |
| // Field names matching the regular expression `__.*__` are reserved. Reserved |
| // field names are forbidden except in certain documented contexts. The field |
| // names, represented as UTF-8, must not exceed 1,500 bytes and cannot be |
| // empty. |
| // |
| // Field paths may be used in other contexts to refer to structured fields |
| // defined here. For `map_value`, the field path is represented by a |
| // dot-delimited (`.`) string of segments. Each segment is either a simple |
| // field name (defined below) or a quoted field name. For example, the |
| // structured field `"foo" : { map_value: { "x&y" : { string_value: "hello" |
| // }}}` would be represented by the field path `` foo.`x&y` ``. |
| // |
| // A simple field name contains only characters `a` to `z`, `A` to `Z`, |
| // `0` to `9`, or `_`, and must not start with `0` to `9`. For example, |
| // `foo_bar_17`. |
| // |
| // A quoted field name starts and ends with `` ` `` and |
| // may contain any character. Some characters, including `` ` ``, must be |
| // escaped using a `\`. For example, `` `x&y` `` represents `x&y` and |
| // `` `bak\`tik` `` represents `` bak`tik ``. |
| map<string, Value> fields = 2; |
| |
| // Output only. The time at which the document was created. |
| // |
| // This value increases monotonically when a document is deleted then |
| // recreated. It can also be compared to values from other documents and |
| // the `read_time` of a query. |
| google.protobuf.Timestamp create_time = 3; |
| |
| // Output only. The time at which the document was last changed. |
| // |
| // This value is initially set to the `create_time` then increases |
| // monotonically with each change to the document. It can also be |
| // compared to values from other documents and the `read_time` of a query. |
| google.protobuf.Timestamp update_time = 4; |
| } |
| |
| // A message that can hold any of the supported value types. |
| message Value { |
| // Must have a value set. |
| oneof value_type { |
| // A null value. |
| google.protobuf.NullValue null_value = 11; |
| |
| // A boolean value. |
| bool boolean_value = 1; |
| |
| // An integer value. |
| int64 integer_value = 2; |
| |
| // A double value. |
| double double_value = 3; |
| |
| // A timestamp value. |
| // |
| // Precise only to microseconds. When stored, any additional precision is |
| // rounded down. |
| google.protobuf.Timestamp timestamp_value = 10; |
| |
| // A string value. |
| // |
| // The string, represented as UTF-8, must not exceed 1 MiB - 89 bytes. |
| // Only the first 1,500 bytes of the UTF-8 representation are considered by |
| // queries. |
| string string_value = 17; |
| |
| // A bytes value. |
| // |
| // Must not exceed 1 MiB - 89 bytes. |
| // Only the first 1,500 bytes are considered by queries. |
| bytes bytes_value = 18; |
| |
| // A reference to a document. For example: |
| // `projects/{project_id}/databases/{database_id}/documents/{document_path}`. |
| string reference_value = 5; |
| |
| // A geo point value representing a point on the surface of Earth. |
| google.type.LatLng geo_point_value = 8; |
| |
| // An array value. |
| // |
| // Cannot directly contain another array value, though can contain an |
| // map which contains another array. |
| ArrayValue array_value = 9; |
| |
| // A map value. |
| MapValue map_value = 6; |
| } |
| } |
| |
| // An array value. |
| message ArrayValue { |
| // Values in the array. |
| repeated Value values = 1; |
| } |
| |
| // A map value. |
| message MapValue { |
| // The map's fields. |
| // |
| // The map keys represent field names. Field names matching the regular |
| // expression `__.*__` are reserved. Reserved field names are forbidden except |
| // in certain documented contexts. The map keys, represented as UTF-8, must |
| // not exceed 1,500 bytes and cannot be empty. |
| map<string, Value> fields = 1; |
| } |