Built motion from commit 6a09e18b.|2.6.11
[motion2.git] / legacy-libs / google-proto-files / google / datastore / v1 / entity.proto
1 // Copyright 2018 Google Inc.
2 //
3 // Licensed under the Apache License, Version 2.0 (the "License");
4 // you may not use this file except in compliance with the License.
5 // You may obtain a copy of the License at
6 //
7 //     http://www.apache.org/licenses/LICENSE-2.0
8 //
9 // Unless required by applicable law or agreed to in writing, software
10 // distributed under the License is distributed on an "AS IS" BASIS,
11 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 // See the License for the specific language governing permissions and
13 // limitations under the License.
14
15 syntax = "proto3";
16
17 package google.datastore.v1;
18
19 import "google/api/annotations.proto";
20 import "google/protobuf/struct.proto";
21 import "google/protobuf/timestamp.proto";
22 import "google/type/latlng.proto";
23
24 option csharp_namespace = "Google.Cloud.Datastore.V1";
25 option go_package = "google.golang.org/genproto/googleapis/datastore/v1;datastore";
26 option java_multiple_files = true;
27 option java_outer_classname = "EntityProto";
28 option java_package = "com.google.datastore.v1";
29 option php_namespace = "Google\\Cloud\\Datastore\\V1";
30
31 // A partition ID identifies a grouping of entities. The grouping is always
32 // by project and namespace, however the namespace ID may be empty.
33 //
34 // A partition ID contains several dimensions:
35 // project ID and namespace ID.
36 //
37 // Partition dimensions:
38 //
39 // - May be `""`.
40 // - Must be valid UTF-8 bytes.
41 // - Must have values that match regex `[A-Za-z\d\.\-_]{1,100}`
42 // If the value of any dimension matches regex `__.*__`, the partition is
43 // reserved/read-only.
44 // A reserved/read-only partition ID is forbidden in certain documented
45 // contexts.
46 //
47 // Foreign partition IDs (in which the project ID does
48 // not match the context project ID ) are discouraged.
49 // Reads and writes of foreign partition IDs may fail if the project is not in
50 // an active state.
51 message PartitionId {
52   // The ID of the project to which the entities belong.
53   string project_id = 2;
54
55   // If not empty, the ID of the namespace to which the entities belong.
56   string namespace_id = 4;
57 }
58
59 // A unique identifier for an entity.
60 // If a key's partition ID or any of its path kinds or names are
61 // reserved/read-only, the key is reserved/read-only.
62 // A reserved/read-only key is forbidden in certain documented contexts.
63 message Key {
64   // A (kind, ID/name) pair used to construct a key path.
65   //
66   // If either name or ID is set, the element is complete.
67   // If neither is set, the element is incomplete.
68   message PathElement {
69     // The kind of the entity.
70     // A kind matching regex `__.*__` is reserved/read-only.
71     // A kind must not contain more than 1500 bytes when UTF-8 encoded.
72     // Cannot be `""`.
73     string kind = 1;
74
75     // The type of ID.
76     oneof id_type {
77       // The auto-allocated ID of the entity.
78       // Never equal to zero. Values less than zero are discouraged and may not
79       // be supported in the future.
80       int64 id = 2;
81
82       // The name of the entity.
83       // A name matching regex `__.*__` is reserved/read-only.
84       // A name must not be more than 1500 bytes when UTF-8 encoded.
85       // Cannot be `""`.
86       string name = 3;
87     }
88   }
89
90   // Entities are partitioned into subsets, currently identified by a project
91   // ID and namespace ID.
92   // Queries are scoped to a single partition.
93   PartitionId partition_id = 1;
94
95   // The entity path.
96   // An entity path consists of one or more elements composed of a kind and a
97   // string or numerical identifier, which identify entities. The first
98   // element identifies a _root entity_, the second element identifies
99   // a _child_ of the root entity, the third element identifies a child of the
100   // second entity, and so forth. The entities identified by all prefixes of
101   // the path are called the element's _ancestors_.
102   //
103   // An entity path is always fully complete: *all* of the entity's ancestors
104   // are required to be in the path along with the entity identifier itself.
105   // The only exception is that in some documented cases, the identifier in the
106   // last path element (for the entity) itself may be omitted. For example,
107   // the last path element of the key of `Mutation.insert` may have no
108   // identifier.
109   //
110   // A path can never be empty, and a path can have at most 100 elements.
111   repeated PathElement path = 2;
112 }
113
114 // An array value.
115 message ArrayValue {
116   // Values in the array.
117   // The order of this array may not be preserved if it contains a mix of
118   // indexed and unindexed values.
119   repeated Value values = 1;
120 }
121
122 // A message that can hold any of the supported value types and associated
123 // metadata.
124 message Value {
125   // Must have a value set.
126   oneof value_type {
127     // A null value.
128     google.protobuf.NullValue null_value = 11;
129
130     // A boolean value.
131     bool boolean_value = 1;
132
133     // An integer value.
134     int64 integer_value = 2;
135
136     // A double value.
137     double double_value = 3;
138
139     // A timestamp value.
140     // When stored in the Datastore, precise only to microseconds;
141     // any additional precision is rounded down.
142     google.protobuf.Timestamp timestamp_value = 10;
143
144     // A key value.
145     Key key_value = 5;
146
147     // A UTF-8 encoded string value.
148     // When `exclude_from_indexes` is false (it is indexed) , may have at most
149     // 1500 bytes. Otherwise, may be set to at least 1,000,000 bytes.
150     string string_value = 17;
151
152     // A blob value.
153     // May have at most 1,000,000 bytes.
154     // When `exclude_from_indexes` is false, may have at most 1500 bytes.
155     // In JSON requests, must be base64-encoded.
156     bytes blob_value = 18;
157
158     // A geo point value representing a point on the surface of Earth.
159     google.type.LatLng geo_point_value = 8;
160
161     // An entity value.
162     //
163     // - May have no key.
164     // - May have a key with an incomplete key path.
165     // - May have a reserved/read-only key.
166     Entity entity_value = 6;
167
168     // An array value.
169     // Cannot contain another array value.
170     // A `Value` instance that sets field `array_value` must not set fields
171     // `meaning` or `exclude_from_indexes`.
172     ArrayValue array_value = 9;
173   }
174
175   // The `meaning` field should only be populated for backwards compatibility.
176   int32 meaning = 14;
177
178   // If the value should be excluded from all indexes including those defined
179   // explicitly.
180   bool exclude_from_indexes = 19;
181 }
182
183 // A Datastore data object.
184 //
185 // An entity is limited to 1 megabyte when stored. That _roughly_
186 // corresponds to a limit of 1 megabyte for the serialized form of this
187 // message.
188 message Entity {
189   // The entity's key.
190   //
191   // An entity must have a key, unless otherwise documented (for example,
192   // an entity in `Value.entity_value` may have no key).
193   // An entity's kind is its key path's last element's kind,
194   // or null if it has no key.
195   Key key = 1;
196
197   // The entity's properties.
198   // The map's keys are property names.
199   // A property name matching regex `__.*__` is reserved.
200   // A reserved property name is forbidden in certain documented contexts.
201   // The name must not contain more than 500 characters.
202   // The name cannot be `""`.
203   map<string, Value> properties = 3;
204 }