aboutsummaryrefslogtreecommitdiffhomepage
path: root/Firestore/Protos/protos/google/firestore/v1beta1/document.proto
blob: cf6001dbfc0f428bfa4a79182bf69f126c42707a (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
// Copyright 2017 Google Inc.
//
// 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.v1beta1;

import "google/api/annotations.proto";
import "google/protobuf/struct.proto";
import "google/protobuf/timestamp.proto";
import "google/type/latlng.proto";

option csharp_namespace = "Google.Cloud.Firestore.V1Beta1";
option go_package = "google.golang.org/genproto/googleapis/firestore/v1beta1;firestore";
option java_multiple_files = true;
option java_outer_classname = "DocumentProto";
option java_package = "com.google.firestore.v1beta1";
option objc_class_prefix = "GCFS";


// 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.
  //
  // 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` or `_`. 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;

  // 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 initally 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 contain another array value.
    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;
}