functions/v2/firebase/firestore/helloFirestore/data.proto (138 lines of code) (raw):

// 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 // // https://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.events.cloud.firestore.v1; import "google/protobuf/struct.proto"; import "google/protobuf/timestamp.proto"; import "google/type/latlng.proto"; option csharp_namespace = "Google.Events.Protobuf.Cloud.Firestore.V1"; // The data within all Firestore document events. message DocumentEventData { // A Document object containing a post-operation document snapshot. // This is not populated for delete events. Document value = 1; // A Document object containing a pre-operation document snapshot. // This is only populated for update and delete events. Document old_value = 2; // A DocumentMask object that lists changed fields. // This is only populated for update events. DocumentMask update_mask = 3; } // A set of field paths on a document. message DocumentMask { // The list of field paths in the mask. // See [Document.fields][google.cloud.firestore.v1.events.Document.fields] // for a field path syntax reference. repeated string field_paths = 1; } // A Firestore document. 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. // // 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`. // // 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. // // Field paths may be used in other contexts to refer to structured fields // defined here. For `map_value`, the field path is represented by the simple // or quoted field names of the containing fields, delimited by `.`. For // example, the structured field // `"foo" : { map_value: { "x&y" : { string_value: "hello" }}}` would be // represented by the field path `foo.x&y`. // // Within a field path, 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; // 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; // 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; }