| Index: pkg/appengine/lib/src/protobuf_api/external/datastore_v1.proto
|
| diff --git a/pkg/appengine/lib/src/protobuf_api/external/datastore_v1.proto b/pkg/appengine/lib/src/protobuf_api/external/datastore_v1.proto
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..3d562709ddeffc483ad65c1601632356f46b2b06
|
| --- /dev/null
|
| +++ b/pkg/appengine/lib/src/protobuf_api/external/datastore_v1.proto
|
| @@ -0,0 +1,594 @@
|
| +// Copyright 2013 Google Inc. All Rights Reserved.
|
| +//
|
| +// The datastore v1 service proto definitions
|
| +
|
| +syntax = "proto2";
|
| +
|
| +package api.services.datastore;
|
| +option java_package = "com.google.api.services.datastore";
|
| +
|
| +
|
| +// An identifier for a particular subset of entities.
|
| +//
|
| +// Entities are partitioned into various subsets, each used by different
|
| +// datasets and different namespaces within a dataset and so forth.
|
| +//
|
| +// All input partition IDs are normalized before use.
|
| +// A partition ID is normalized as follows:
|
| +// If the partition ID is unset or is set to an empty partition ID, replace it
|
| +// with the context partition ID.
|
| +// Otherwise, if the partition ID has no dataset ID, assign it the context
|
| +// partition ID's dataset ID.
|
| +// Unless otherwise documented, the context partition ID has the dataset ID set
|
| +// to the context dataset ID and no other partition dimension set.
|
| +//
|
| +// A partition ID is empty if all of its fields are unset.
|
| +//
|
| +// Partition dimension:
|
| +// A dimension may be unset.
|
| +// A dimension's value must never be "".
|
| +// A dimension's value must match [A-Za-z\d\.\-_]{1,100}
|
| +// If the value of any dimension matches regex "__.*__",
|
| +// the partition is reserved/read-only.
|
| +// A reserved/read-only partition ID is forbidden in certain documented contexts.
|
| +//
|
| +// Dataset ID:
|
| +// A dataset id's value must never be "".
|
| +// A dataset id's value must match
|
| +// ([a-z\d\-]{1,100}~)?([a-z\d][a-z\d\-\.]{0,99}:)?([a-z\d][a-z\d\-]{0,99}
|
| +message PartitionId {
|
| + // The dataset ID.
|
| + optional string dataset_id = 3;
|
| + // The namespace.
|
| + optional string namespace = 4;
|
| +}
|
| +
|
| +// A unique identifier for an entity.
|
| +// If a key's partition id or any of its path kinds or names are
|
| +// reserved/read-only, the key is reserved/read-only.
|
| +// A reserved/read-only key is forbidden in certain documented contexts.
|
| +message Key {
|
| + // Entities are partitioned into subsets, currently identified by a dataset
|
| + // (usually implicitly specified by the project) and namespace ID.
|
| + // Queries are scoped to a single partition.
|
| + optional PartitionId partition_id = 1;
|
| +
|
| + // A (kind, ID/name) pair used to construct a key path.
|
| + //
|
| + // At most one of name or ID may be set.
|
| + // If either is set, the element is complete.
|
| + // If neither is set, the element is incomplete.
|
| + message PathElement {
|
| + // The kind of the entity.
|
| + // A kind matching regex "__.*__" is reserved/read-only.
|
| + // A kind must not contain more than 500 characters.
|
| + // Cannot be "".
|
| + required string kind = 1;
|
| + // The ID of the entity.
|
| + // Never equal to zero. Values less than zero are discouraged and will not
|
| + // be supported in the future.
|
| + optional int64 id = 2;
|
| + // The name of the entity.
|
| + // A name matching regex "__.*__" is reserved/read-only.
|
| + // A name must not be more than 500 characters.
|
| + // Cannot be "".
|
| + optional string name = 3;
|
| + }
|
| +
|
| + // The entity path.
|
| + // An entity path consists of one or more elements composed of a kind and a
|
| + // string or numerical identifier, which identify entities. The first
|
| + // element identifies a <em>root entity</em>, the second element identifies
|
| + // a <em>child</em> of the root entity, the third element a child of the
|
| + // second entity, and so forth. The entities identified by all prefixes of
|
| + // the path are called the element's <em>ancestors</em>.
|
| + // An entity path is always fully complete: ALL of the entity's ancestors
|
| + // are required to be in the path along with the entity identifier itself.
|
| + // The only exception is that in some documented cases, the identifier in the
|
| + // last path element (for the entity) itself may be omitted. A path can never
|
| + // be empty.
|
| + repeated PathElement path_element = 2;
|
| +}
|
| +
|
| +// A message that can hold any of the supported value types and associated
|
| +// metadata.
|
| +//
|
| +// At most one of the <type>Value fields may be set.
|
| +// If none are set the value is "null".
|
| +//
|
| +message Value {
|
| + // A boolean value.
|
| + optional bool boolean_value = 1;
|
| + // An integer value.
|
| + optional int64 integer_value = 2;
|
| + // A double value.
|
| + optional double double_value = 3;
|
| + // A timestamp value.
|
| + optional int64 timestamp_microseconds_value = 4;
|
| + // A key value.
|
| + optional Key key_value = 5;
|
| + // A blob key value.
|
| + optional string blob_key_value = 16;
|
| + // A UTF-8 encoded string value.
|
| + optional string string_value = 17;
|
| + // A blob value.
|
| + optional bytes blob_value = 18;
|
| + // An entity value.
|
| + // May have no key.
|
| + // May have a key with an incomplete key path.
|
| + // May have a reserved/read-only key.
|
| + optional Entity entity_value = 6;
|
| + // A list value.
|
| + // Cannot contain another list value.
|
| + // Cannot also have a meaning and indexing set.
|
| + repeated Value list_value = 7;
|
| +
|
| + // The <code>meaning</code> field is reserved and should not be used.
|
| + optional int32 meaning = 14;
|
| +
|
| + // If the value should be indexed.
|
| + //
|
| + // The <code>indexed</code> property may be set for a
|
| + // <code>null</code> value.
|
| + // When <code>indexed</code> is <code>true</code>, <code>stringValue</code>
|
| + // is limited to 500 characters and the blob value is limited to 500 bytes.
|
| + // Exception: If meaning is set to 2, string_value is limited to 2038
|
| + // characters regardless of indexed.
|
| + // When indexed is true, meaning 15 and 22 are not allowed, and meaning 16
|
| + // will be ignored on input (and will never be set on output).
|
| + // Input values by default have <code>indexed</code> set to
|
| + // <code>true</code>; however, you can explicitly set <code>indexed</code> to
|
| + // <code>true</code> if you want. (An output value never has
|
| + // <code>indexed</code> explicitly set to <code>true</code>.) If a value is
|
| + // itself an entity, it cannot have <code>indexed</code> set to
|
| + // <code>true</code>.
|
| + // Exception: An entity value with meaning 9, 20 or 21 may be indexed.
|
| + optional bool indexed = 15 [default = true];
|
| +}
|
| +
|
| +// An entity property.
|
| +message Property {
|
| + // The name of the property.
|
| + // A property name matching regex "__.*__" is reserved.
|
| + // A reserved property name is forbidden in certain documented contexts.
|
| + // The name must not contain more than 500 characters.
|
| + // Cannot be "".
|
| + required string name = 1;
|
| +
|
| + // The value(s) of the property.
|
| + // Each value can have only one value property populated. For example,
|
| + // you cannot have a values list of <code>{ value: { integerValue: 22,
|
| + // stringValue: "a" } }</code>, but you can have <code>{ value: { listValue:
|
| + // [ { integerValue: 22 }, { stringValue: "a" } ] }</code>.
|
| + required Value value = 4;
|
| +}
|
| +
|
| +// An entity.
|
| +//
|
| +// An entity is limited to 1 megabyte when stored. That <em>roughly</em>
|
| +// corresponds to a limit of 1 megabyte for the serialized form of this
|
| +// message.
|
| +message Entity {
|
| + // The entity's key.
|
| + //
|
| + // An entity must have a key, unless otherwise documented (for example,
|
| + // an entity in <code>Value.entityValue</code> may have no key).
|
| + // An entity's kind is its key's path's last element's kind,
|
| + // or null if it has no key.
|
| + optional Key key = 1;
|
| + // The entity's properties.
|
| + // Each property's name must be unique for its entity.
|
| + repeated Property property = 2;
|
| +}
|
| +
|
| +// The result of fetching an entity from the datastore.
|
| +message EntityResult {
|
| + // Specifies what data the 'entity' field contains.
|
| + // A ResultType is either implied (for example, in LookupResponse.found it
|
| + // is always FULL) or specified by context (for example, in message
|
| + // QueryResultBatch, field 'entity_result_type' specifies a ResultType
|
| + // for all the values in field 'entity_result').
|
| + enum ResultType {
|
| + FULL = 1; // The entire entity.
|
| + PROJECTION = 2; // A projected subset of properties.
|
| + // The entity may have no key.
|
| + // A property value may have meaning 18.
|
| + KEY_ONLY = 3; // Only the key.
|
| + }
|
| +
|
| + // The resulting entity.
|
| + required Entity entity = 1;
|
| +}
|
| +
|
| +// A query.
|
| +message Query {
|
| + // The projection to return. If not set the entire entity is returned.
|
| + repeated PropertyExpression projection = 2;
|
| +
|
| + // The kinds to query (if empty, returns entities from all kinds).
|
| + repeated KindExpression kind = 3;
|
| +
|
| + // The filter to apply (optional).
|
| + optional Filter filter = 4;
|
| +
|
| + // The order to apply to the query results (if empty, order is unspecified).
|
| + repeated PropertyOrder order = 5;
|
| +
|
| + // The properties to group by (if empty, no grouping is applied to the
|
| + // result set).
|
| + repeated PropertyReference group_by = 6;
|
| +
|
| + // A starting point for the query results. Optional. Query cursors are
|
| + // returned in query result batches.
|
| + optional bytes /* serialized QueryCursor */ start_cursor = 7;
|
| +
|
| + // An ending point for the query results. Optional. Query cursors are
|
| + // returned in query result batches.
|
| + optional bytes /* serialized QueryCursor */ end_cursor = 8;
|
| +
|
| + // The number of results to skip. Applies before limit, but after all other
|
| + // constraints (optional, defaults to 0).
|
| + optional int32 offset = 10 [default=0];
|
| +
|
| + // The maximum number of results to return. Applies after all other
|
| + // constraints. Optional.
|
| + optional int32 limit = 11;
|
| +}
|
| +
|
| +// A representation of a kind.
|
| +message KindExpression {
|
| + // The name of the kind.
|
| + required string name = 1;
|
| +}
|
| +
|
| +// A reference to a property relative to the kind expressions.
|
| +// exactly.
|
| +message PropertyReference {
|
| + // The name of the property.
|
| + required string name = 2;
|
| +}
|
| +
|
| +// A representation of a property in a projection.
|
| +message PropertyExpression {
|
| + enum AggregationFunction {
|
| + FIRST = 1;
|
| + }
|
| + // The property to project.
|
| + required PropertyReference property = 1;
|
| + // The aggregation function to apply to the property. Optional.
|
| + // Can only be used when grouping by at least one property. Must
|
| + // then be set on all properties in the projection that are not
|
| + // being grouped by.
|
| + optional AggregationFunction aggregation_function = 2;
|
| +}
|
| +
|
| +// The desired order for a specific property.
|
| +message PropertyOrder {
|
| + enum Direction {
|
| + ASCENDING = 1;
|
| + DESCENDING = 2;
|
| + }
|
| + // The property to order by.
|
| + required PropertyReference property = 1;
|
| + // The direction to order by.
|
| + optional Direction direction = 2 [default=ASCENDING];
|
| +}
|
| +
|
| +// A holder for any type of filter. Exactly one field should be specified.
|
| +message Filter {
|
| + // A composite filter.
|
| + optional CompositeFilter composite_filter = 1;
|
| + // A filter on a property.
|
| + optional PropertyFilter property_filter = 2;
|
| +}
|
| +
|
| +// A filter that merges the multiple other filters using the given operation.
|
| +message CompositeFilter {
|
| + enum Operator {
|
| + AND = 1;
|
| + }
|
| +
|
| + // The operator for combining multiple filters.
|
| + required Operator operator = 1;
|
| + // The list of filters to combine.
|
| + // Must contain at least one filter.
|
| + repeated Filter filter = 2;
|
| +}
|
| +
|
| +// A filter on a specific property.
|
| +message PropertyFilter {
|
| + enum Operator {
|
| + LESS_THAN = 1;
|
| + LESS_THAN_OR_EQUAL = 2;
|
| + GREATER_THAN = 3;
|
| + GREATER_THAN_OR_EQUAL = 4;
|
| + EQUAL = 5;
|
| +
|
| + HAS_ANCESTOR = 11;
|
| + }
|
| +
|
| + // The property to filter by.
|
| + required PropertyReference property = 1;
|
| + // The operator to filter by.
|
| + required Operator operator = 2;
|
| + // The value to compare the property to.
|
| + required Value value = 3;
|
| +}
|
| +
|
| +// A GQL query.
|
| +message GqlQuery {
|
| + required string query_string = 1;
|
| + // When false, the query string must not contain a literal.
|
| + optional bool allow_literal = 2 [default = false];
|
| + // A named argument must set field GqlQueryArg.name.
|
| + // No two named arguments may have the same name.
|
| + // For each non-reserved named binding site in the query string,
|
| + // there must be a named argument with that name,
|
| + // but not necessarily the inverse.
|
| + repeated GqlQueryArg name_arg = 3;
|
| + // Numbered binding site @1 references the first numbered argument,
|
| + // effectively using 1-based indexing, rather than the usual 0.
|
| + // A numbered argument must NOT set field GqlQueryArg.name.
|
| + // For each binding site numbered i in query_string,
|
| + // there must be an ith numbered argument.
|
| + // The inverse must also be true.
|
| + repeated GqlQueryArg number_arg = 4;
|
| +}
|
| +
|
| +// A binding argument for a GQL query.
|
| +// Exactly one of fields value and cursor must be set.
|
| +message GqlQueryArg {
|
| + // Must match regex "[A-Za-z_$][A-Za-z_$0-9]*".
|
| + // Must not match regex "__.*__".
|
| + // Must not be "".
|
| + optional string name = 1;
|
| + optional Value value = 2;
|
| + optional bytes cursor = 3;
|
| +}
|
| +
|
| +// A batch of results produced by a query.
|
| +message QueryResultBatch {
|
| + // The possible values for the 'more_results' field.
|
| + enum MoreResultsType {
|
| + NOT_FINISHED = 1; // There are additional batches to fetch from this query.
|
| + MORE_RESULTS_AFTER_LIMIT = 2; // The query is finished, but there are more
|
| + // results after the limit.
|
| + NO_MORE_RESULTS = 3; // The query has been exhausted.
|
| + }
|
| +
|
| + // The result type for every entity in entityResults.
|
| + required EntityResult.ResultType entity_result_type = 1;
|
| + // The results for this batch.
|
| + repeated EntityResult entity_result = 2;
|
| +
|
| + // A cursor that points to the position after the last result in the batch.
|
| + // May be absent.
|
| + optional bytes /* serialized QueryCursor */ end_cursor = 4;
|
| +
|
| + // The state of the query after the current batch.
|
| + required MoreResultsType more_results = 5;
|
| +
|
| + // The number of results skipped because of <code>Query.offset</code>.
|
| + optional int32 skipped_results = 6;
|
| +}
|
| +
|
| +// A set of changes to apply.
|
| +//
|
| +// No entity in this message may have a reserved property name,
|
| +// not even a property in an entity in a value.
|
| +// No value in this message may have meaning 18,
|
| +// not even a value in an entity in another value.
|
| +//
|
| +// If entities with duplicate keys are present, an arbitrary choice will
|
| +// be made as to which is written.
|
| +message Mutation {
|
| + // Entities to upsert.
|
| + // Each upserted entity's key must have a complete path and
|
| + // must not be reserved/read-only.
|
| + repeated Entity upsert = 1;
|
| + // Entities to update.
|
| + // Each updated entity's key must have a complete path and
|
| + // must not be reserved/read-only.
|
| + repeated Entity update = 2;
|
| + // Entities to insert.
|
| + // Each inserted entity's key must have a complete path and
|
| + // must not be reserved/read-only.
|
| + repeated Entity insert = 3;
|
| + // Insert entities with a newly allocated ID.
|
| + // Each inserted entity's key must omit the final identifier in its path and
|
| + // must not be reserved/read-only.
|
| + repeated Entity insert_auto_id = 4;
|
| + // Keys of entities to delete.
|
| + // Each key must have a complete key path and must not be reserved/read-only.
|
| + repeated Key delete = 5;
|
| + // Ignore a user specified read-only period. Optional.
|
| + optional bool force = 6;
|
| +}
|
| +
|
| +// The result of applying a mutation.
|
| +message MutationResult {
|
| + // Number of index writes.
|
| + required int32 index_updates = 1;
|
| + // Keys for <code>insertAutoId</code> entities. One per entity from the
|
| + // request, in the same order.
|
| + repeated Key insert_auto_id_key = 2;
|
| +}
|
| +
|
| +// Options shared by read requests.
|
| +message ReadOptions {
|
| + enum ReadConsistency {
|
| + DEFAULT = 0;
|
| + STRONG = 1;
|
| + EVENTUAL = 2;
|
| + }
|
| +
|
| + // The read consistency to use.
|
| + // Cannot be set when transaction is set.
|
| + // Lookup and ancestor queries default to STRONG, global queries default to
|
| + // EVENTUAL and cannot be set to STRONG.
|
| + optional ReadConsistency read_consistency = 1 [default=DEFAULT];
|
| +
|
| + // The transaction to use. Optional.
|
| + optional bytes /* serialized Transaction */ transaction = 2;
|
| +}
|
| +
|
| +// The request for Lookup.
|
| +message LookupRequest {
|
| +
|
| + // Options for this lookup request. Optional.
|
| + optional ReadOptions read_options = 1;
|
| + // Keys of entities to look up from the datastore.
|
| + repeated Key key = 3;
|
| +}
|
| +
|
| +// The response for Lookup.
|
| +message LookupResponse {
|
| +
|
| + // The order of results in these fields is undefined and has no relation to
|
| + // the order of the keys in the input.
|
| +
|
| + // Entities found as ResultType.FULL entities.
|
| + repeated EntityResult found = 1;
|
| +
|
| + // Entities not found as ResultType.KEY_ONLY entities.
|
| + repeated EntityResult missing = 2;
|
| +
|
| + // A list of keys that were not looked up due to resource constraints.
|
| + repeated Key deferred = 3;
|
| +}
|
| +
|
| +
|
| +// The request for RunQuery.
|
| +message RunQueryRequest {
|
| +
|
| + // The options for this query.
|
| + optional ReadOptions read_options = 1;
|
| +
|
| + // Entities are partitioned into subsets, identified by a dataset (usually
|
| + // implicitly specified by the project) and namespace ID. Queries are scoped
|
| + // to a single partition.
|
| + // This partition ID is normalized with the standard default context
|
| + // partition ID, but all other partition IDs in RunQueryRequest are
|
| + // normalized with this partition ID as the context partition ID.
|
| + optional PartitionId partition_id = 2;
|
| +
|
| + // The query to run.
|
| + // Either this field or field gql_query must be set, but not both.
|
| + optional Query query = 3;
|
| + // The GQL query to run.
|
| + // Either this field or field query must be set, but not both.
|
| + optional GqlQuery gql_query = 7;
|
| +}
|
| +
|
| +// The response for RunQuery.
|
| +message RunQueryResponse {
|
| +
|
| + // A batch of query results (always present).
|
| + optional QueryResultBatch batch = 1;
|
| +
|
| +}
|
| +
|
| +// The request for BeginTransaction.
|
| +message BeginTransactionRequest {
|
| +
|
| + enum IsolationLevel {
|
| + SNAPSHOT = 0; // Read from a consistent snapshot. Concurrent transactions
|
| + // conflict if their mutations conflict. For example:
|
| + // Read(A),Write(B) may not conflict with Read(B),Write(A),
|
| + // but Read(B),Write(B) does conflict with Read(B),Write(B).
|
| + SERIALIZABLE = 1; // Read from a consistent snapshot. Concurrent
|
| + // transactions conflict if they cannot be serialized.
|
| + // For example Read(A),Write(B) does conflict with
|
| + // Read(B),Write(A) but Read(A) may not conflict with
|
| + // Write(A).
|
| + }
|
| +
|
| + // The transaction isolation level.
|
| + optional IsolationLevel isolation_level = 1 [default=SNAPSHOT];
|
| +}
|
| +
|
| +// The response for BeginTransaction.
|
| +message BeginTransactionResponse {
|
| +
|
| + // The transaction identifier (always present).
|
| + optional bytes /* serialized Transaction */ transaction = 1;
|
| +}
|
| +
|
| +// The request for Rollback.
|
| +message RollbackRequest {
|
| +
|
| + // The transaction identifier, returned by a call to
|
| + // <code>beginTransaction</code>.
|
| + required bytes /* serialized Transaction */ transaction = 1;
|
| +}
|
| +
|
| +// The response for Rollback.
|
| +message RollbackResponse {
|
| +// Empty
|
| +}
|
| +
|
| +// The request for Commit.
|
| +message CommitRequest {
|
| +
|
| + enum Mode {
|
| + TRANSACTIONAL = 1;
|
| + NON_TRANSACTIONAL = 2;
|
| + }
|
| +
|
| + // The transaction identifier, returned by a call to
|
| + // <code>beginTransaction</code>. Must be set when mode is TRANSACTIONAL.
|
| + optional bytes /* serialized Transaction */ transaction = 1;
|
| + // The mutation to perform. Optional.
|
| + optional Mutation mutation = 2;
|
| + // The type of commit to perform. Either TRANSACTIONAL or NON_TRANSACTIONAL.
|
| + optional Mode mode = 5 [default=TRANSACTIONAL];
|
| +}
|
| +
|
| +// The response for Commit.
|
| +message CommitResponse {
|
| +
|
| + // The result of performing the mutation (if any).
|
| + optional MutationResult mutation_result = 1;
|
| +}
|
| +
|
| +// The request for AllocateIds.
|
| +message AllocateIdsRequest {
|
| +
|
| + // A list of keys with incomplete key paths to allocate IDs for.
|
| + // No key may be reserved/read-only.
|
| + repeated Key key = 1;
|
| +}
|
| +
|
| +// The response for AllocateIds.
|
| +message AllocateIdsResponse {
|
| +
|
| + // The keys specified in the request (in the same order), each with
|
| + // its key path completed with a newly allocated ID.
|
| + repeated Key key = 1;
|
| +}
|
| +
|
| +// Each rpc normalizes the partition IDs of the keys in its input entities,
|
| +// and always returns entities with keys with normalized partition IDs.
|
| +// (Note that applies to all entities, including entities in values.)
|
| +service DatastoreService {
|
| + // Look up some entities by key.
|
| + rpc Lookup(LookupRequest) returns (LookupResponse) {
|
| + };
|
| + // Query for entities.
|
| + rpc RunQuery(RunQueryRequest) returns (RunQueryResponse) {
|
| + };
|
| + // Begin a new transaction.
|
| + rpc BeginTransaction(BeginTransactionRequest) returns (BeginTransactionResponse) {
|
| + };
|
| + // Commit a transaction, optionally creating, deleting or modifying some
|
| + // entities.
|
| + rpc Commit(CommitRequest) returns (CommitResponse) {
|
| + };
|
| + // Roll back a transaction.
|
| + rpc Rollback(RollbackRequest) returns (RollbackResponse) {
|
| + };
|
| + // Allocate IDs for incomplete keys (useful for referencing an entity before
|
| + // it is inserted).
|
| + rpc AllocateIds(AllocateIdsRequest) returns (AllocateIdsResponse) {
|
| + };
|
| +}
|
|
|