@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.
- package/README.md +111 -0
- package/build/protos/google/datastore/admin/v1/datastore_admin.proto +506 -0
- package/build/protos/google/datastore/admin/v1/index.proto +122 -0
- package/build/protos/google/datastore/admin/v1/migration.proto +124 -0
- package/build/protos/google/datastore/v1/aggregation_result.proto +62 -0
- package/build/protos/google/datastore/v1/datastore.proto +851 -0
- package/build/protos/google/datastore/v1/entity.proto +217 -0
- package/build/protos/google/datastore/v1/query.proto +622 -0
- package/build/protos/google/datastore/v1/query_profile.proto +91 -0
- package/build/protos/protos.d.ts +18507 -0
- package/build/protos/protos.js +1 -0
- package/build/protos/protos.json +1 -0
- package/build/src/index.d.ts +14 -0
- package/build/src/index.js +30 -0
- package/build/src/index.js.map +1 -0
- package/build/src/v1/datastore_admin_client.d.ts +631 -0
- package/build/src/v1/datastore_admin_client.js +954 -0
- package/build/src/v1/datastore_admin_client.js.map +1 -0
- package/build/src/v1/datastore_admin_client_config.json +56 -0
- package/build/src/v1/datastore_admin_proto_list.json +5 -0
- package/build/src/v1/datastore_client.d.ts +451 -0
- package/build/src/v1/datastore_client.js +806 -0
- package/build/src/v1/datastore_client.js.map +1 -0
- package/build/src/v1/datastore_client_config.json +66 -0
- package/build/src/v1/datastore_proto_list.json +7 -0
- package/build/src/v1/gapic_metadata.json +87 -0
- package/build/src/v1/index.d.ts +2 -0
- package/build/src/v1/index.js +25 -0
- package/build/src/v1/index.js.map +1 -0
- 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
|
+
}
|