Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(173)

Unified Diff: pkg/appengine/lib/src/protobuf_api/external/datastore_v1.proto

Issue 804973002: Add appengine/gcloud/mustache dependencies. (Closed) Base URL: git@github.com:dart-lang/pub-dartlang-dart.git@master
Patch Set: Added AUTHORS/LICENSE/PATENTS files Created 6 years ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
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) {
+ };
+}

Powered by Google App Engine
This is Rietveld 408576698