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