@google-cloud/datastore-api 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (30) hide show
  1. package/README.md +111 -0
  2. package/build/protos/google/datastore/admin/v1/datastore_admin.proto +506 -0
  3. package/build/protos/google/datastore/admin/v1/index.proto +122 -0
  4. package/build/protos/google/datastore/admin/v1/migration.proto +124 -0
  5. package/build/protos/google/datastore/v1/aggregation_result.proto +62 -0
  6. package/build/protos/google/datastore/v1/datastore.proto +851 -0
  7. package/build/protos/google/datastore/v1/entity.proto +217 -0
  8. package/build/protos/google/datastore/v1/query.proto +622 -0
  9. package/build/protos/google/datastore/v1/query_profile.proto +91 -0
  10. package/build/protos/protos.d.ts +18507 -0
  11. package/build/protos/protos.js +1 -0
  12. package/build/protos/protos.json +1 -0
  13. package/build/src/index.d.ts +14 -0
  14. package/build/src/index.js +30 -0
  15. package/build/src/index.js.map +1 -0
  16. package/build/src/v1/datastore_admin_client.d.ts +631 -0
  17. package/build/src/v1/datastore_admin_client.js +954 -0
  18. package/build/src/v1/datastore_admin_client.js.map +1 -0
  19. package/build/src/v1/datastore_admin_client_config.json +56 -0
  20. package/build/src/v1/datastore_admin_proto_list.json +5 -0
  21. package/build/src/v1/datastore_client.d.ts +451 -0
  22. package/build/src/v1/datastore_client.js +806 -0
  23. package/build/src/v1/datastore_client.js.map +1 -0
  24. package/build/src/v1/datastore_client_config.json +66 -0
  25. package/build/src/v1/datastore_proto_list.json +7 -0
  26. package/build/src/v1/gapic_metadata.json +87 -0
  27. package/build/src/v1/index.d.ts +2 -0
  28. package/build/src/v1/index.js +25 -0
  29. package/build/src/v1/index.js.map +1 -0
  30. package/package.json +65 -0
@@ -0,0 +1,851 @@
1
+ // Copyright 2026 Google LLC
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/api/client.proto";
21
+ import "google/api/field_behavior.proto";
22
+ import "google/api/routing.proto";
23
+ import "google/datastore/v1/aggregation_result.proto";
24
+ import "google/datastore/v1/entity.proto";
25
+ import "google/datastore/v1/query.proto";
26
+ import "google/datastore/v1/query_profile.proto";
27
+ import "google/protobuf/timestamp.proto";
28
+
29
+ option csharp_namespace = "Google.Cloud.Datastore.V1";
30
+ option go_package = "cloud.google.com/go/datastore/apiv1/datastorepb;datastorepb";
31
+ option java_multiple_files = true;
32
+ option java_outer_classname = "DatastoreProto";
33
+ option java_package = "com.google.datastore.v1";
34
+ option php_namespace = "Google\\Cloud\\Datastore\\V1";
35
+ option ruby_package = "Google::Cloud::Datastore::V1";
36
+
37
+ // Each RPC normalizes the partition IDs of the keys in its input entities,
38
+ // and always returns entities with keys with normalized partition IDs.
39
+ // This applies to all keys and entities, including those in values, except keys
40
+ // with both an empty path and an empty or unset partition ID. Normalization of
41
+ // input keys sets the project ID (if not already set) to the project ID from
42
+ // the request.
43
+ //
44
+ service Datastore {
45
+ option (google.api.default_host) = "datastore.googleapis.com";
46
+ option (google.api.oauth_scopes) =
47
+ "https://www.googleapis.com/auth/cloud-platform,"
48
+ "https://www.googleapis.com/auth/datastore";
49
+
50
+ // Looks up entities by key.
51
+ rpc Lookup(LookupRequest) returns (LookupResponse) {
52
+ option (google.api.http) = {
53
+ post: "/v1/projects/{project_id}:lookup"
54
+ body: "*"
55
+ };
56
+ option (google.api.routing) = {
57
+ routing_parameters { field: "project_id" }
58
+ routing_parameters { field: "database_id" }
59
+ };
60
+ option (google.api.method_signature) = "project_id,read_options,keys";
61
+ }
62
+
63
+ // Queries for entities.
64
+ rpc RunQuery(RunQueryRequest) returns (RunQueryResponse) {
65
+ option (google.api.http) = {
66
+ post: "/v1/projects/{project_id}:runQuery"
67
+ body: "*"
68
+ };
69
+ option (google.api.routing) = {
70
+ routing_parameters { field: "project_id" }
71
+ routing_parameters { field: "database_id" }
72
+ };
73
+ }
74
+
75
+ // Runs an aggregation query.
76
+ rpc RunAggregationQuery(RunAggregationQueryRequest)
77
+ returns (RunAggregationQueryResponse) {
78
+ option (google.api.http) = {
79
+ post: "/v1/projects/{project_id}:runAggregationQuery"
80
+ body: "*"
81
+ };
82
+ option (google.api.routing) = {
83
+ routing_parameters { field: "project_id" }
84
+ routing_parameters { field: "database_id" }
85
+ };
86
+ }
87
+
88
+ // Begins a new transaction.
89
+ rpc BeginTransaction(BeginTransactionRequest)
90
+ returns (BeginTransactionResponse) {
91
+ option (google.api.http) = {
92
+ post: "/v1/projects/{project_id}:beginTransaction"
93
+ body: "*"
94
+ };
95
+ option (google.api.routing) = {
96
+ routing_parameters { field: "project_id" }
97
+ routing_parameters { field: "database_id" }
98
+ };
99
+ option (google.api.method_signature) = "project_id";
100
+ }
101
+
102
+ // Commits a transaction, optionally creating, deleting or modifying some
103
+ // entities.
104
+ rpc Commit(CommitRequest) returns (CommitResponse) {
105
+ option (google.api.http) = {
106
+ post: "/v1/projects/{project_id}:commit"
107
+ body: "*"
108
+ };
109
+ option (google.api.routing) = {
110
+ routing_parameters { field: "project_id" }
111
+ routing_parameters { field: "database_id" }
112
+ };
113
+ option (google.api.method_signature) =
114
+ "project_id,mode,transaction,mutations";
115
+ option (google.api.method_signature) = "project_id,mode,mutations";
116
+ }
117
+
118
+ // Rolls back a transaction.
119
+ rpc Rollback(RollbackRequest) returns (RollbackResponse) {
120
+ option (google.api.http) = {
121
+ post: "/v1/projects/{project_id}:rollback"
122
+ body: "*"
123
+ };
124
+ option (google.api.routing) = {
125
+ routing_parameters { field: "project_id" }
126
+ routing_parameters { field: "database_id" }
127
+ };
128
+ option (google.api.method_signature) = "project_id,transaction";
129
+ }
130
+
131
+ // Allocates IDs for the given keys, which is useful for referencing an entity
132
+ // before it is inserted.
133
+ rpc AllocateIds(AllocateIdsRequest) returns (AllocateIdsResponse) {
134
+ option (google.api.http) = {
135
+ post: "/v1/projects/{project_id}:allocateIds"
136
+ body: "*"
137
+ };
138
+ option (google.api.routing) = {
139
+ routing_parameters { field: "project_id" }
140
+ routing_parameters { field: "database_id" }
141
+ };
142
+ option (google.api.method_signature) = "project_id,keys";
143
+ }
144
+
145
+ // Prevents the supplied keys' IDs from being auto-allocated by Cloud
146
+ // Datastore.
147
+ rpc ReserveIds(ReserveIdsRequest) returns (ReserveIdsResponse) {
148
+ option (google.api.http) = {
149
+ post: "/v1/projects/{project_id}:reserveIds"
150
+ body: "*"
151
+ };
152
+ option (google.api.routing) = {
153
+ routing_parameters { field: "project_id" }
154
+ routing_parameters { field: "database_id" }
155
+ };
156
+ option (google.api.method_signature) = "project_id,keys";
157
+ }
158
+ }
159
+
160
+ // The request for [Datastore.Lookup][google.datastore.v1.Datastore.Lookup].
161
+ message LookupRequest {
162
+ // Required. The ID of the project against which to make the request.
163
+ string project_id = 8 [(google.api.field_behavior) = REQUIRED];
164
+
165
+ // The ID of the database against which to make the request.
166
+ //
167
+ // '(default)' is not allowed; please use empty string '' to refer the default
168
+ // database.
169
+ string database_id = 9;
170
+
171
+ // The options for this lookup request.
172
+ ReadOptions read_options = 1;
173
+
174
+ // Required. Keys of entities to look up.
175
+ repeated Key keys = 3 [(google.api.field_behavior) = REQUIRED];
176
+
177
+ // The properties to return. Defaults to returning all properties.
178
+ //
179
+ // If this field is set and an entity has a property not referenced in the
180
+ // mask, it will be absent from [LookupResponse.found.entity.properties][].
181
+ //
182
+ // The entity's key is always returned.
183
+ PropertyMask property_mask = 5;
184
+
185
+ // Optional. The options for this request.
186
+ RequestOptions request_options = 10 [(google.api.field_behavior) = OPTIONAL];
187
+ }
188
+
189
+ // The response for [Datastore.Lookup][google.datastore.v1.Datastore.Lookup].
190
+ message LookupResponse {
191
+ // Entities found as `ResultType.FULL` entities. The order of results in this
192
+ // field is undefined and has no relation to the order of the keys in the
193
+ // input.
194
+ repeated EntityResult found = 1;
195
+
196
+ // Entities not found as `ResultType.KEY_ONLY` entities. The order of results
197
+ // in this field is undefined and has no relation to the order of the keys
198
+ // in the input.
199
+ repeated EntityResult missing = 2;
200
+
201
+ // A list of keys that were not looked up due to resource constraints. The
202
+ // order of results in this field is undefined and has no relation to the
203
+ // order of the keys in the input.
204
+ repeated Key deferred = 3;
205
+
206
+ // The identifier of the transaction that was started as part of this Lookup
207
+ // request.
208
+ //
209
+ // Set only when
210
+ // [ReadOptions.new_transaction][google.datastore.v1.ReadOptions.new_transaction]
211
+ // was set in
212
+ // [LookupRequest.read_options][google.datastore.v1.LookupRequest.read_options].
213
+ bytes transaction = 5;
214
+
215
+ // The time at which these entities were read or found missing.
216
+ google.protobuf.Timestamp read_time = 7;
217
+ }
218
+
219
+ // The request for [Datastore.RunQuery][google.datastore.v1.Datastore.RunQuery].
220
+ message RunQueryRequest {
221
+ // Required. The ID of the project against which to make the request.
222
+ string project_id = 8 [(google.api.field_behavior) = REQUIRED];
223
+
224
+ // The ID of the database against which to make the request.
225
+ //
226
+ // '(default)' is not allowed; please use empty string '' to refer the default
227
+ // database.
228
+ string database_id = 9;
229
+
230
+ // Entities are partitioned into subsets, identified by a partition ID.
231
+ // Queries are scoped to a single partition.
232
+ // This partition ID is normalized with the standard default context
233
+ // partition ID.
234
+ PartitionId partition_id = 2;
235
+
236
+ // The options for this query.
237
+ ReadOptions read_options = 1;
238
+
239
+ // The type of query.
240
+ oneof query_type {
241
+ // The query to run.
242
+ Query query = 3;
243
+
244
+ // The GQL query to run. This query must be a non-aggregation query.
245
+ GqlQuery gql_query = 7;
246
+ }
247
+
248
+ // The properties to return.
249
+ // This field must not be set for a projection query.
250
+ //
251
+ // See
252
+ // [LookupRequest.property_mask][google.datastore.v1.LookupRequest.property_mask].
253
+ PropertyMask property_mask = 10;
254
+
255
+ // Optional. Explain options for the query. If set, additional query
256
+ // statistics will be returned. If not, only query results will be returned.
257
+ ExplainOptions explain_options = 12 [(google.api.field_behavior) = OPTIONAL];
258
+
259
+ // Optional. The options for this request.
260
+ RequestOptions request_options = 13 [(google.api.field_behavior) = OPTIONAL];
261
+ }
262
+
263
+ // The response for
264
+ // [Datastore.RunQuery][google.datastore.v1.Datastore.RunQuery].
265
+ message RunQueryResponse {
266
+ // A batch of query results. This is always present unless running a
267
+ // query under explain-only
268
+ // mode:
269
+ // [RunQueryRequest.explain_options][google.datastore.v1.RunQueryRequest.explain_options]
270
+ // was provided and
271
+ // [ExplainOptions.analyze][google.datastore.v1.ExplainOptions.analyze] was
272
+ // set to false.
273
+ QueryResultBatch batch = 1;
274
+
275
+ // The parsed form of the `GqlQuery` from the request, if it was set.
276
+ Query query = 2;
277
+
278
+ // The identifier of the transaction that was started as part of this
279
+ // RunQuery request.
280
+ //
281
+ // Set only when
282
+ // [ReadOptions.new_transaction][google.datastore.v1.ReadOptions.new_transaction]
283
+ // was set in
284
+ // [RunQueryRequest.read_options][google.datastore.v1.RunQueryRequest.read_options].
285
+ bytes transaction = 5;
286
+
287
+ // Query explain metrics. This is only present when the
288
+ // [RunQueryRequest.explain_options][google.datastore.v1.RunQueryRequest.explain_options]
289
+ // is provided, and it is sent only once with the last response in the stream.
290
+ ExplainMetrics explain_metrics = 9;
291
+ }
292
+
293
+ // The request for
294
+ // [Datastore.RunAggregationQuery][google.datastore.v1.Datastore.RunAggregationQuery].
295
+ message RunAggregationQueryRequest {
296
+ // Required. The ID of the project against which to make the request.
297
+ string project_id = 8 [(google.api.field_behavior) = REQUIRED];
298
+
299
+ // The ID of the database against which to make the request.
300
+ //
301
+ // '(default)' is not allowed; please use empty string '' to refer the default
302
+ // database.
303
+ string database_id = 9;
304
+
305
+ // Entities are partitioned into subsets, identified by a partition ID.
306
+ // Queries are scoped to a single partition.
307
+ // This partition ID is normalized with the standard default context
308
+ // partition ID.
309
+ PartitionId partition_id = 2;
310
+
311
+ // The options for this query.
312
+ ReadOptions read_options = 1;
313
+
314
+ // The type of query.
315
+ oneof query_type {
316
+ // The query to run.
317
+ AggregationQuery aggregation_query = 3;
318
+
319
+ // The GQL query to run. This query must be an aggregation query.
320
+ GqlQuery gql_query = 7;
321
+ }
322
+
323
+ // Optional. Explain options for the query. If set, additional query
324
+ // statistics will be returned. If not, only query results will be returned.
325
+ ExplainOptions explain_options = 11 [(google.api.field_behavior) = OPTIONAL];
326
+
327
+ // Optional. The options for this request.
328
+ RequestOptions request_options = 12 [(google.api.field_behavior) = OPTIONAL];
329
+ }
330
+
331
+ // The response for
332
+ // [Datastore.RunAggregationQuery][google.datastore.v1.Datastore.RunAggregationQuery].
333
+ message RunAggregationQueryResponse {
334
+ // A batch of aggregation results. Always present.
335
+ AggregationResultBatch batch = 1;
336
+
337
+ // The parsed form of the `GqlQuery` from the request, if it was set.
338
+ AggregationQuery query = 2;
339
+
340
+ // The identifier of the transaction that was started as part of this
341
+ // RunAggregationQuery request.
342
+ //
343
+ // Set only when
344
+ // [ReadOptions.new_transaction][google.datastore.v1.ReadOptions.new_transaction]
345
+ // was set in
346
+ // [RunAggregationQueryRequest.read_options][google.datastore.v1.RunAggregationQueryRequest.read_options].
347
+ bytes transaction = 5;
348
+
349
+ // Query explain metrics. This is only present when the
350
+ // [RunAggregationQueryRequest.explain_options][google.datastore.v1.RunAggregationQueryRequest.explain_options]
351
+ // is provided, and it is sent only once with the last response in the stream.
352
+ ExplainMetrics explain_metrics = 9;
353
+ }
354
+
355
+ // The request for
356
+ // [Datastore.BeginTransaction][google.datastore.v1.Datastore.BeginTransaction].
357
+ message BeginTransactionRequest {
358
+ // Required. The ID of the project against which to make the request.
359
+ string project_id = 8 [(google.api.field_behavior) = REQUIRED];
360
+
361
+ // The ID of the database against which to make the request.
362
+ //
363
+ // '(default)' is not allowed; please use empty string '' to refer the default
364
+ // database.
365
+ string database_id = 9;
366
+
367
+ // Options for a new transaction.
368
+ TransactionOptions transaction_options = 10;
369
+
370
+ // Optional. The options for this request.
371
+ RequestOptions request_options = 11 [(google.api.field_behavior) = OPTIONAL];
372
+ }
373
+
374
+ // The response for
375
+ // [Datastore.BeginTransaction][google.datastore.v1.Datastore.BeginTransaction].
376
+ message BeginTransactionResponse {
377
+ // The transaction identifier (always present).
378
+ bytes transaction = 1;
379
+ }
380
+
381
+ // The request for [Datastore.Rollback][google.datastore.v1.Datastore.Rollback].
382
+ message RollbackRequest {
383
+ // Required. The ID of the project against which to make the request.
384
+ string project_id = 8 [(google.api.field_behavior) = REQUIRED];
385
+
386
+ // The ID of the database against which to make the request.
387
+ //
388
+ // '(default)' is not allowed; please use empty string '' to refer the default
389
+ // database.
390
+ string database_id = 9;
391
+
392
+ // Required. The transaction identifier, returned by a call to
393
+ // [Datastore.BeginTransaction][google.datastore.v1.Datastore.BeginTransaction].
394
+ bytes transaction = 1 [(google.api.field_behavior) = REQUIRED];
395
+
396
+ // Optional. The options for this request.
397
+ RequestOptions request_options = 10 [(google.api.field_behavior) = OPTIONAL];
398
+ }
399
+
400
+ // The response for
401
+ // [Datastore.Rollback][google.datastore.v1.Datastore.Rollback]. (an empty
402
+ // message).
403
+ message RollbackResponse {}
404
+
405
+ // The request for [Datastore.Commit][google.datastore.v1.Datastore.Commit].
406
+ message CommitRequest {
407
+ // The modes available for commits.
408
+ enum Mode {
409
+ // Unspecified. This value must not be used.
410
+ MODE_UNSPECIFIED = 0;
411
+
412
+ // Transactional: The mutations are either all applied, or none are applied.
413
+ // Learn about transactions
414
+ // [here](https://cloud.google.com/datastore/docs/concepts/transactions).
415
+ TRANSACTIONAL = 1;
416
+
417
+ // Non-transactional: The mutations may not apply as all or none.
418
+ NON_TRANSACTIONAL = 2;
419
+ }
420
+
421
+ // Required. The ID of the project against which to make the request.
422
+ string project_id = 8 [(google.api.field_behavior) = REQUIRED];
423
+
424
+ // The ID of the database against which to make the request.
425
+ //
426
+ // '(default)' is not allowed; please use empty string '' to refer the default
427
+ // database.
428
+ string database_id = 9;
429
+
430
+ // The type of commit to perform. Defaults to `TRANSACTIONAL`.
431
+ Mode mode = 5;
432
+
433
+ // Must be set when mode is `TRANSACTIONAL`.
434
+ oneof transaction_selector {
435
+ // The identifier of the transaction associated with the commit. A
436
+ // transaction identifier is returned by a call to
437
+ // [Datastore.BeginTransaction][google.datastore.v1.Datastore.BeginTransaction].
438
+ bytes transaction = 1;
439
+
440
+ // Options for beginning a new transaction for this request.
441
+ // The transaction is committed when the request completes. If specified,
442
+ // [TransactionOptions.mode][google.datastore.v1.TransactionOptions] must be
443
+ // [TransactionOptions.ReadWrite][google.datastore.v1.TransactionOptions.ReadWrite].
444
+ TransactionOptions single_use_transaction = 10;
445
+ }
446
+
447
+ // The mutations to perform.
448
+ //
449
+ // When mode is `TRANSACTIONAL`, mutations affecting a single entity are
450
+ // applied in order. The following sequences of mutations affecting a single
451
+ // entity are not permitted in a single `Commit` request:
452
+ //
453
+ // - `insert` followed by `insert`
454
+ // - `update` followed by `insert`
455
+ // - `upsert` followed by `insert`
456
+ // - `delete` followed by `update`
457
+ //
458
+ // When mode is `NON_TRANSACTIONAL`, no two mutations may affect a single
459
+ // entity.
460
+ repeated Mutation mutations = 6;
461
+
462
+ // Optional. The options for this request.
463
+ RequestOptions request_options = 11 [(google.api.field_behavior) = OPTIONAL];
464
+ }
465
+
466
+ // The response for [Datastore.Commit][google.datastore.v1.Datastore.Commit].
467
+ message CommitResponse {
468
+ // The result of performing the mutations.
469
+ // The i-th mutation result corresponds to the i-th mutation in the request.
470
+ repeated MutationResult mutation_results = 3;
471
+
472
+ // The number of index entries updated during the commit, or zero if none were
473
+ // updated.
474
+ int32 index_updates = 4;
475
+
476
+ // The transaction commit timestamp. Not set for non-transactional commits.
477
+ google.protobuf.Timestamp commit_time = 8;
478
+ }
479
+
480
+ // The request for
481
+ // [Datastore.AllocateIds][google.datastore.v1.Datastore.AllocateIds].
482
+ message AllocateIdsRequest {
483
+ // Required. The ID of the project against which to make the request.
484
+ string project_id = 8 [(google.api.field_behavior) = REQUIRED];
485
+
486
+ // The ID of the database against which to make the request.
487
+ //
488
+ // '(default)' is not allowed; please use empty string '' to refer the default
489
+ // database.
490
+ string database_id = 9;
491
+
492
+ // Required. A list of keys with incomplete key paths for which to allocate
493
+ // IDs. No key may be reserved/read-only.
494
+ repeated Key keys = 1 [(google.api.field_behavior) = REQUIRED];
495
+
496
+ // Optional. The options for this request.
497
+ RequestOptions request_options = 10 [(google.api.field_behavior) = OPTIONAL];
498
+ }
499
+
500
+ // The response for
501
+ // [Datastore.AllocateIds][google.datastore.v1.Datastore.AllocateIds].
502
+ message AllocateIdsResponse {
503
+ // The keys specified in the request (in the same order), each with
504
+ // its key path completed with a newly allocated ID.
505
+ repeated Key keys = 1;
506
+ }
507
+
508
+ // The request for
509
+ // [Datastore.ReserveIds][google.datastore.v1.Datastore.ReserveIds].
510
+ message ReserveIdsRequest {
511
+ // Required. The ID of the project against which to make the request.
512
+ string project_id = 8 [(google.api.field_behavior) = REQUIRED];
513
+
514
+ // The ID of the database against which to make the request.
515
+ //
516
+ // '(default)' is not allowed; please use empty string '' to refer the default
517
+ // database.
518
+ string database_id = 9;
519
+
520
+ // Required. A list of keys with complete key paths whose numeric IDs should
521
+ // not be auto-allocated.
522
+ repeated Key keys = 1 [(google.api.field_behavior) = REQUIRED];
523
+
524
+ // Optional. The options for this request.
525
+ RequestOptions request_options = 10 [(google.api.field_behavior) = OPTIONAL];
526
+ }
527
+
528
+ // The response for
529
+ // [Datastore.ReserveIds][google.datastore.v1.Datastore.ReserveIds].
530
+ message ReserveIdsResponse {}
531
+
532
+ // A mutation to apply to an entity.
533
+ message Mutation {
534
+ // The possible ways to resolve a conflict detected in a mutation.
535
+ enum ConflictResolutionStrategy {
536
+ // Unspecified. Defaults to `SERVER_VALUE`.
537
+ STRATEGY_UNSPECIFIED = 0;
538
+
539
+ // The server entity is kept.
540
+ SERVER_VALUE = 1;
541
+
542
+ // The whole commit request fails.
543
+ FAIL = 3;
544
+ }
545
+
546
+ // The mutation operation.
547
+ //
548
+ // For `insert`, `update`, and `upsert`:
549
+ // - The entity's key must not be reserved/read-only.
550
+ // - No property in the entity may have a reserved name,
551
+ // not even a property in an entity in a value.
552
+ // - No value in the entity may have meaning 18,
553
+ // not even a value in an entity in another value.
554
+ oneof operation {
555
+ // The entity to insert. The entity must not already exist.
556
+ // The entity key's final path element may be incomplete.
557
+ Entity insert = 4;
558
+
559
+ // The entity to update. The entity must already exist.
560
+ // Must have a complete key path.
561
+ Entity update = 5;
562
+
563
+ // The entity to upsert. The entity may or may not already exist.
564
+ // The entity key's final path element may be incomplete.
565
+ Entity upsert = 6;
566
+
567
+ // The key of the entity to delete. The entity may or may not already exist.
568
+ // Must have a complete key path and must not be reserved/read-only.
569
+ Key delete = 7;
570
+ }
571
+
572
+ // When set, the server will detect whether or not this mutation conflicts
573
+ // with the current version of the entity on the server. Conflicting mutations
574
+ // are not applied, and are marked as such in MutationResult.
575
+ oneof conflict_detection_strategy {
576
+ // The version of the entity that this mutation is being applied
577
+ // to. If this does not match the current version on the server, the
578
+ // mutation conflicts.
579
+ int64 base_version = 8;
580
+
581
+ // The update time of the entity that this mutation is being applied
582
+ // to. If this does not match the current update time on the server, the
583
+ // mutation conflicts.
584
+ google.protobuf.Timestamp update_time = 11;
585
+ }
586
+
587
+ // The strategy to use when a conflict is detected. Defaults to
588
+ // `SERVER_VALUE`.
589
+ // If this is set, then `conflict_detection_strategy` must also be set.
590
+ ConflictResolutionStrategy conflict_resolution_strategy = 10;
591
+
592
+ // The properties to write in this mutation.
593
+ // None of the properties in the mask may have a reserved name, except for
594
+ // `__key__`.
595
+ // This field is ignored for `delete`.
596
+ //
597
+ // If the entity already exists, only properties referenced in the mask are
598
+ // updated, others are left untouched.
599
+ // Properties referenced in the mask but not in the entity are deleted.
600
+ PropertyMask property_mask = 9;
601
+
602
+ // Optional. The transforms to perform on the entity.
603
+ //
604
+ // This field can be set only when the operation is `insert`, `update`,
605
+ // or `upsert`. If present, the transforms are be applied to the entity
606
+ // regardless of the property mask, in order, after the operation.
607
+ repeated PropertyTransform property_transforms = 12
608
+ [(google.api.field_behavior) = OPTIONAL];
609
+ }
610
+
611
+ // A transformation of an entity property.
612
+ message PropertyTransform {
613
+ // A value that is calculated by the server.
614
+ enum ServerValue {
615
+ // Unspecified. This value must not be used.
616
+ SERVER_VALUE_UNSPECIFIED = 0;
617
+
618
+ // The time at which the server processed the request, with millisecond
619
+ // precision. If used on multiple properties (same or different entities)
620
+ // in a transaction, all the properties will get the same server timestamp.
621
+ REQUEST_TIME = 1;
622
+ }
623
+
624
+ // Optional. The name of the property.
625
+ //
626
+ // Property paths (a list of property names separated by dots (`.`)) may be
627
+ // used to refer to properties inside entity values. For example `foo.bar`
628
+ // means the property `bar` inside the entity property `foo`.
629
+ //
630
+ // If a property name contains a dot `.` or a backlslash `\`, then that name
631
+ // must be escaped.
632
+ string property = 1 [(google.api.field_behavior) = OPTIONAL];
633
+
634
+ // The transformation to apply to the property.
635
+ oneof transform_type {
636
+ // Sets the property to the given server value.
637
+ ServerValue set_to_server_value = 2;
638
+
639
+ // Adds the given value to the property's current value.
640
+ //
641
+ // This must be an integer or a double value.
642
+ // If the property is not an integer or double, or if the property does not
643
+ // yet exist, the transformation will set the property to the given value.
644
+ // If either of the given value or the current property value are doubles,
645
+ // both values will be interpreted as doubles. Double arithmetic and
646
+ // representation of double values follows IEEE 754 semantics.
647
+ // If there is positive/negative integer overflow, the property is resolved
648
+ // to the largest magnitude positive/negative integer.
649
+ Value increment = 3;
650
+
651
+ // Sets the property to the maximum of its current value and the given
652
+ // value.
653
+ //
654
+ // This must be an integer or a double value.
655
+ // If the property is not an integer or double, or if the property does not
656
+ // yet exist, the transformation will set the property to the given value.
657
+ // If a maximum operation is applied where the property and the input value
658
+ // are of mixed types (that is - one is an integer and one is a double)
659
+ // the property takes on the type of the larger operand. If the operands are
660
+ // equivalent (e.g. 3 and 3.0), the property does not change.
661
+ // 0, 0.0, and -0.0 are all zero. The maximum of a zero stored value and
662
+ // zero input value is always the stored value.
663
+ // The maximum of any numeric value x and NaN is NaN.
664
+ Value maximum = 4;
665
+
666
+ // Sets the property to the minimum of its current value and the given
667
+ // value.
668
+ //
669
+ // This must be an integer or a double value.
670
+ // If the property is not an integer or double, or if the property does not
671
+ // yet exist, the transformation will set the property to the input value.
672
+ // If a minimum operation is applied where the property and the input value
673
+ // are of mixed types (that is - one is an integer and one is a double)
674
+ // the property takes on the type of the smaller operand. If the operands
675
+ // are equivalent (e.g. 3 and 3.0), the property does not change. 0, 0.0,
676
+ // and -0.0 are all zero. The minimum of a zero stored value and zero input
677
+ // value is always the stored value. The minimum of any numeric value x and
678
+ // NaN is NaN.
679
+ Value minimum = 5;
680
+
681
+ // Appends the given elements in order if they are not already present in
682
+ // the current property value.
683
+ // If the property is not an array, or if the property does not yet exist,
684
+ // it is first set to the empty array.
685
+ //
686
+ // Equivalent numbers of different types (e.g. 3L and 3.0) are
687
+ // considered equal when checking if a value is missing.
688
+ // NaN is equal to NaN, and the null value is equal to the null value.
689
+ // If the input contains multiple equivalent values, only the first will
690
+ // be considered.
691
+ //
692
+ // The corresponding transform result will be the null value.
693
+ ArrayValue append_missing_elements = 6;
694
+
695
+ // Removes all of the given elements from the array in the property.
696
+ // If the property is not an array, or if the property does not yet exist,
697
+ // it is set to the empty array.
698
+ //
699
+ // Equivalent numbers of different types (e.g. 3L and 3.0) are
700
+ // considered equal when deciding whether an element should be removed.
701
+ // NaN is equal to NaN, and the null value is equal to the null value.
702
+ // This will remove all equivalent values if there are duplicates.
703
+ //
704
+ // The corresponding transform result will be the null value.
705
+ ArrayValue remove_all_from_array = 7;
706
+ }
707
+ }
708
+
709
+ // The result of applying a mutation.
710
+ message MutationResult {
711
+ // The automatically allocated key.
712
+ // Set only when the mutation allocated a key.
713
+ Key key = 3;
714
+
715
+ // The version of the entity on the server after processing the mutation. If
716
+ // the mutation doesn't change anything on the server, then the version will
717
+ // be the version of the current entity or, if no entity is present, a version
718
+ // that is strictly greater than the version of any previous entity and less
719
+ // than the version of any possible future entity.
720
+ int64 version = 4;
721
+
722
+ // The create time of the entity. This field will not be set after a 'delete'.
723
+ google.protobuf.Timestamp create_time = 7;
724
+
725
+ // The update time of the entity on the server after processing the mutation.
726
+ // If the mutation doesn't change anything on the server, then the timestamp
727
+ // will be the update timestamp of the current entity. This field will not be
728
+ // set after a 'delete'.
729
+ google.protobuf.Timestamp update_time = 6;
730
+
731
+ // Whether a conflict was detected for this mutation. Always false when a
732
+ // conflict detection strategy field is not set in the mutation.
733
+ bool conflict_detected = 5;
734
+
735
+ // The results of applying each
736
+ // [PropertyTransform][google.datastore.v1.PropertyTransform], in the same
737
+ // order of the request.
738
+ repeated Value transform_results = 8;
739
+ }
740
+
741
+ // The set of arbitrarily nested property paths used to restrict an operation to
742
+ // only a subset of properties in an entity.
743
+ message PropertyMask {
744
+ // The paths to the properties covered by this mask.
745
+ //
746
+ // A path is a list of property names separated by dots (`.`), for example
747
+ // `foo.bar` means the property `bar` inside the entity property `foo` inside
748
+ // the entity associated with this path.
749
+ //
750
+ // If a property name contains a dot `.` or a backslash `\`, then that
751
+ // name must be escaped.
752
+ //
753
+ // A path must not be empty, and may not reference a value inside an
754
+ // [array value][google.datastore.v1.Value.array_value].
755
+ repeated string paths = 1;
756
+ }
757
+
758
+ // The options shared by read requests.
759
+ message ReadOptions {
760
+ // The possible values for read consistencies.
761
+ enum ReadConsistency {
762
+ // Unspecified. This value must not be used.
763
+ READ_CONSISTENCY_UNSPECIFIED = 0;
764
+
765
+ // Strong consistency.
766
+ STRONG = 1;
767
+
768
+ // Eventual consistency.
769
+ EVENTUAL = 2;
770
+ }
771
+
772
+ // For Cloud Firestore in Datastore mode, if you don't specify
773
+ // read_consistency then all lookups and queries default to
774
+ // `read_consistency`=`STRONG`. Note that, in Cloud Datastore, global queries
775
+ // defaulted to `read_consistency`=`EVENTUAL`.
776
+ //
777
+ // Explicitly setting `read_consistency`=`EVENTUAL` will result in eventually
778
+ // consistent lookups and queries.
779
+ oneof consistency_type {
780
+ // The non-transactional read consistency to use.
781
+ ReadConsistency read_consistency = 1;
782
+
783
+ // The identifier of the transaction in which to read. A
784
+ // transaction identifier is returned by a call to
785
+ // [Datastore.BeginTransaction][google.datastore.v1.Datastore.BeginTransaction].
786
+ bytes transaction = 2;
787
+
788
+ // Options for beginning a new transaction for this request.
789
+ //
790
+ // The new transaction identifier will be returned in the corresponding
791
+ // response as either
792
+ // [LookupResponse.transaction][google.datastore.v1.LookupResponse.transaction]
793
+ // or
794
+ // [RunQueryResponse.transaction][google.datastore.v1.RunQueryResponse.transaction].
795
+ TransactionOptions new_transaction = 3;
796
+
797
+ // Reads entities as they were at the given time. This value is only
798
+ // supported for Cloud Firestore in Datastore mode.
799
+ //
800
+ // This must be a microsecond precision timestamp within the past one hour,
801
+ // or if Point-in-Time Recovery is enabled, can additionally be a whole
802
+ // minute timestamp within the past 7 days.
803
+ google.protobuf.Timestamp read_time = 4;
804
+ }
805
+ }
806
+
807
+ // Options for beginning a new transaction.
808
+ //
809
+ // Transactions can be created explicitly with calls to
810
+ // [Datastore.BeginTransaction][google.datastore.v1.Datastore.BeginTransaction]
811
+ // or implicitly by setting
812
+ // [ReadOptions.new_transaction][google.datastore.v1.ReadOptions.new_transaction]
813
+ // in read requests.
814
+ message TransactionOptions {
815
+ // Options specific to read / write transactions.
816
+ message ReadWrite {
817
+ // The transaction identifier of the transaction being retried.
818
+ bytes previous_transaction = 1;
819
+ }
820
+
821
+ // Options specific to read-only transactions.
822
+ message ReadOnly {
823
+ // Reads entities at the given time.
824
+ //
825
+ // This must be a microsecond precision timestamp within the past one hour,
826
+ // or if Point-in-Time Recovery is enabled, can additionally be a whole
827
+ // minute timestamp within the past 7 days.
828
+ google.protobuf.Timestamp read_time = 1;
829
+ }
830
+
831
+ // The `mode` of the transaction, indicating whether write operations are
832
+ // supported.
833
+ oneof mode {
834
+ // The transaction should allow both reads and writes.
835
+ ReadWrite read_write = 1;
836
+
837
+ // The transaction should only allow reads.
838
+ ReadOnly read_only = 2;
839
+ }
840
+ }
841
+
842
+ // Options for a request.
843
+ message RequestOptions {
844
+ // Optional. The request tags for the request.
845
+ // The tags are processed as follows:
846
+ // - Truncated to 510 characters.
847
+ // - Filtered out if empty.
848
+ // - Deduplicated.
849
+ // - Limited to 50 tags.
850
+ repeated string request_tags = 3 [(google.api.field_behavior) = OPTIONAL];
851
+ }