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