Zack Williams | e940c7a | 2019-08-21 14:25:39 -0700 | [diff] [blame] | 1 | syntax = "proto2"; |
| 2 | option go_package = "datastore"; |
| 3 | |
| 4 | package appengine; |
| 5 | |
| 6 | message Action{} |
| 7 | |
| 8 | message PropertyValue { |
| 9 | optional int64 int64Value = 1; |
| 10 | optional bool booleanValue = 2; |
| 11 | optional string stringValue = 3; |
| 12 | optional double doubleValue = 4; |
| 13 | |
| 14 | optional group PointValue = 5 { |
| 15 | required double x = 6; |
| 16 | required double y = 7; |
| 17 | } |
| 18 | |
| 19 | optional group UserValue = 8 { |
| 20 | required string email = 9; |
| 21 | required string auth_domain = 10; |
| 22 | optional string nickname = 11; |
| 23 | optional string federated_identity = 21; |
| 24 | optional string federated_provider = 22; |
| 25 | } |
| 26 | |
| 27 | optional group ReferenceValue = 12 { |
| 28 | required string app = 13; |
| 29 | optional string name_space = 20; |
| 30 | repeated group PathElement = 14 { |
| 31 | required string type = 15; |
| 32 | optional int64 id = 16; |
| 33 | optional string name = 17; |
| 34 | } |
| 35 | } |
| 36 | } |
| 37 | |
| 38 | message Property { |
| 39 | enum Meaning { |
| 40 | NO_MEANING = 0; |
| 41 | BLOB = 14; |
| 42 | TEXT = 15; |
| 43 | BYTESTRING = 16; |
| 44 | |
| 45 | ATOM_CATEGORY = 1; |
| 46 | ATOM_LINK = 2; |
| 47 | ATOM_TITLE = 3; |
| 48 | ATOM_CONTENT = 4; |
| 49 | ATOM_SUMMARY = 5; |
| 50 | ATOM_AUTHOR = 6; |
| 51 | |
| 52 | GD_WHEN = 7; |
| 53 | GD_EMAIL = 8; |
| 54 | GEORSS_POINT = 9; |
| 55 | GD_IM = 10; |
| 56 | |
| 57 | GD_PHONENUMBER = 11; |
| 58 | GD_POSTALADDRESS = 12; |
| 59 | |
| 60 | GD_RATING = 13; |
| 61 | |
| 62 | BLOBKEY = 17; |
| 63 | ENTITY_PROTO = 19; |
| 64 | |
| 65 | INDEX_VALUE = 18; |
| 66 | }; |
| 67 | |
| 68 | optional Meaning meaning = 1 [default = NO_MEANING]; |
| 69 | optional string meaning_uri = 2; |
| 70 | |
| 71 | required string name = 3; |
| 72 | |
| 73 | required PropertyValue value = 5; |
| 74 | |
| 75 | required bool multiple = 4; |
| 76 | |
| 77 | optional bool searchable = 6 [default=false]; |
| 78 | |
| 79 | enum FtsTokenizationOption { |
| 80 | HTML = 1; |
| 81 | ATOM = 2; |
| 82 | } |
| 83 | |
| 84 | optional FtsTokenizationOption fts_tokenization_option = 8; |
| 85 | |
| 86 | optional string locale = 9 [default = "en"]; |
| 87 | } |
| 88 | |
| 89 | message Path { |
| 90 | repeated group Element = 1 { |
| 91 | required string type = 2; |
| 92 | optional int64 id = 3; |
| 93 | optional string name = 4; |
| 94 | } |
| 95 | } |
| 96 | |
| 97 | message Reference { |
| 98 | required string app = 13; |
| 99 | optional string name_space = 20; |
| 100 | required Path path = 14; |
| 101 | } |
| 102 | |
| 103 | message User { |
| 104 | required string email = 1; |
| 105 | required string auth_domain = 2; |
| 106 | optional string nickname = 3; |
| 107 | optional string federated_identity = 6; |
| 108 | optional string federated_provider = 7; |
| 109 | } |
| 110 | |
| 111 | message EntityProto { |
| 112 | required Reference key = 13; |
| 113 | required Path entity_group = 16; |
| 114 | optional User owner = 17; |
| 115 | |
| 116 | enum Kind { |
| 117 | GD_CONTACT = 1; |
| 118 | GD_EVENT = 2; |
| 119 | GD_MESSAGE = 3; |
| 120 | } |
| 121 | optional Kind kind = 4; |
| 122 | optional string kind_uri = 5; |
| 123 | |
| 124 | repeated Property property = 14; |
| 125 | repeated Property raw_property = 15; |
| 126 | |
| 127 | optional int32 rank = 18; |
| 128 | } |
| 129 | |
| 130 | message CompositeProperty { |
| 131 | required int64 index_id = 1; |
| 132 | repeated string value = 2; |
| 133 | } |
| 134 | |
| 135 | message Index { |
| 136 | required string entity_type = 1; |
| 137 | required bool ancestor = 5; |
| 138 | repeated group Property = 2 { |
| 139 | required string name = 3; |
| 140 | enum Direction { |
| 141 | ASCENDING = 1; |
| 142 | DESCENDING = 2; |
| 143 | } |
| 144 | optional Direction direction = 4 [default = ASCENDING]; |
| 145 | } |
| 146 | } |
| 147 | |
| 148 | message CompositeIndex { |
| 149 | required string app_id = 1; |
| 150 | required int64 id = 2; |
| 151 | required Index definition = 3; |
| 152 | |
| 153 | enum State { |
| 154 | WRITE_ONLY = 1; |
| 155 | READ_WRITE = 2; |
| 156 | DELETED = 3; |
| 157 | ERROR = 4; |
| 158 | } |
| 159 | required State state = 4; |
| 160 | |
| 161 | optional bool only_use_if_required = 6 [default = false]; |
| 162 | } |
| 163 | |
| 164 | message IndexPostfix { |
| 165 | message IndexValue { |
| 166 | required string property_name = 1; |
| 167 | required PropertyValue value = 2; |
| 168 | } |
| 169 | |
| 170 | repeated IndexValue index_value = 1; |
| 171 | |
| 172 | optional Reference key = 2; |
| 173 | |
| 174 | optional bool before = 3 [default=true]; |
| 175 | } |
| 176 | |
| 177 | message IndexPosition { |
| 178 | optional string key = 1; |
| 179 | |
| 180 | optional bool before = 2 [default=true]; |
| 181 | } |
| 182 | |
| 183 | message Snapshot { |
| 184 | enum Status { |
| 185 | INACTIVE = 0; |
| 186 | ACTIVE = 1; |
| 187 | } |
| 188 | |
| 189 | required int64 ts = 1; |
| 190 | } |
| 191 | |
| 192 | message InternalHeader { |
| 193 | optional string qos = 1; |
| 194 | } |
| 195 | |
| 196 | message Transaction { |
| 197 | optional InternalHeader header = 4; |
| 198 | required fixed64 handle = 1; |
| 199 | required string app = 2; |
| 200 | optional bool mark_changes = 3 [default = false]; |
| 201 | } |
| 202 | |
| 203 | message Query { |
| 204 | optional InternalHeader header = 39; |
| 205 | |
| 206 | required string app = 1; |
| 207 | optional string name_space = 29; |
| 208 | |
| 209 | optional string kind = 3; |
| 210 | optional Reference ancestor = 17; |
| 211 | |
| 212 | repeated group Filter = 4 { |
| 213 | enum Operator { |
| 214 | LESS_THAN = 1; |
| 215 | LESS_THAN_OR_EQUAL = 2; |
| 216 | GREATER_THAN = 3; |
| 217 | GREATER_THAN_OR_EQUAL = 4; |
| 218 | EQUAL = 5; |
| 219 | IN = 6; |
| 220 | EXISTS = 7; |
| 221 | } |
| 222 | |
| 223 | required Operator op = 6; |
| 224 | repeated Property property = 14; |
| 225 | } |
| 226 | |
| 227 | optional string search_query = 8; |
| 228 | |
| 229 | repeated group Order = 9 { |
| 230 | enum Direction { |
| 231 | ASCENDING = 1; |
| 232 | DESCENDING = 2; |
| 233 | } |
| 234 | |
| 235 | required string property = 10; |
| 236 | optional Direction direction = 11 [default = ASCENDING]; |
| 237 | } |
| 238 | |
| 239 | enum Hint { |
| 240 | ORDER_FIRST = 1; |
| 241 | ANCESTOR_FIRST = 2; |
| 242 | FILTER_FIRST = 3; |
| 243 | } |
| 244 | optional Hint hint = 18; |
| 245 | |
| 246 | optional int32 count = 23; |
| 247 | |
| 248 | optional int32 offset = 12 [default = 0]; |
| 249 | |
| 250 | optional int32 limit = 16; |
| 251 | |
| 252 | optional CompiledCursor compiled_cursor = 30; |
| 253 | optional CompiledCursor end_compiled_cursor = 31; |
| 254 | |
| 255 | repeated CompositeIndex composite_index = 19; |
| 256 | |
| 257 | optional bool require_perfect_plan = 20 [default = false]; |
| 258 | |
| 259 | optional bool keys_only = 21 [default = false]; |
| 260 | |
| 261 | optional Transaction transaction = 22; |
| 262 | |
| 263 | optional bool compile = 25 [default = false]; |
| 264 | |
| 265 | optional int64 failover_ms = 26; |
| 266 | |
| 267 | optional bool strong = 32; |
| 268 | |
| 269 | repeated string property_name = 33; |
| 270 | |
| 271 | repeated string group_by_property_name = 34; |
| 272 | |
| 273 | optional bool distinct = 24; |
| 274 | |
| 275 | optional int64 min_safe_time_seconds = 35; |
| 276 | |
| 277 | repeated string safe_replica_name = 36; |
| 278 | |
| 279 | optional bool persist_offset = 37 [default=false]; |
| 280 | } |
| 281 | |
| 282 | message CompiledQuery { |
| 283 | required group PrimaryScan = 1 { |
| 284 | optional string index_name = 2; |
| 285 | |
| 286 | optional string start_key = 3; |
| 287 | optional bool start_inclusive = 4; |
| 288 | optional string end_key = 5; |
| 289 | optional bool end_inclusive = 6; |
| 290 | |
| 291 | repeated string start_postfix_value = 22; |
| 292 | repeated string end_postfix_value = 23; |
| 293 | |
| 294 | optional int64 end_unapplied_log_timestamp_us = 19; |
| 295 | } |
| 296 | |
| 297 | repeated group MergeJoinScan = 7 { |
| 298 | required string index_name = 8; |
| 299 | |
| 300 | repeated string prefix_value = 9; |
| 301 | |
| 302 | optional bool value_prefix = 20 [default=false]; |
| 303 | } |
| 304 | |
| 305 | optional Index index_def = 21; |
| 306 | |
| 307 | optional int32 offset = 10 [default = 0]; |
| 308 | |
| 309 | optional int32 limit = 11; |
| 310 | |
| 311 | required bool keys_only = 12; |
| 312 | |
| 313 | repeated string property_name = 24; |
| 314 | |
| 315 | optional int32 distinct_infix_size = 25; |
| 316 | |
| 317 | optional group EntityFilter = 13 { |
| 318 | optional bool distinct = 14 [default=false]; |
| 319 | |
| 320 | optional string kind = 17; |
| 321 | optional Reference ancestor = 18; |
| 322 | } |
| 323 | } |
| 324 | |
| 325 | message CompiledCursor { |
| 326 | optional group Position = 2 { |
| 327 | optional string start_key = 27; |
| 328 | |
| 329 | repeated group IndexValue = 29 { |
| 330 | optional string property = 30; |
| 331 | required PropertyValue value = 31; |
| 332 | } |
| 333 | |
| 334 | optional Reference key = 32; |
| 335 | |
| 336 | optional bool start_inclusive = 28 [default=true]; |
| 337 | } |
| 338 | } |
| 339 | |
| 340 | message Cursor { |
| 341 | required fixed64 cursor = 1; |
| 342 | |
| 343 | optional string app = 2; |
| 344 | } |
| 345 | |
| 346 | message Error { |
| 347 | enum ErrorCode { |
| 348 | BAD_REQUEST = 1; |
| 349 | CONCURRENT_TRANSACTION = 2; |
| 350 | INTERNAL_ERROR = 3; |
| 351 | NEED_INDEX = 4; |
| 352 | TIMEOUT = 5; |
| 353 | PERMISSION_DENIED = 6; |
| 354 | BIGTABLE_ERROR = 7; |
| 355 | COMMITTED_BUT_STILL_APPLYING = 8; |
| 356 | CAPABILITY_DISABLED = 9; |
| 357 | TRY_ALTERNATE_BACKEND = 10; |
| 358 | SAFE_TIME_TOO_OLD = 11; |
| 359 | } |
| 360 | } |
| 361 | |
| 362 | message Cost { |
| 363 | optional int32 index_writes = 1; |
| 364 | optional int32 index_write_bytes = 2; |
| 365 | optional int32 entity_writes = 3; |
| 366 | optional int32 entity_write_bytes = 4; |
| 367 | optional group CommitCost = 5 { |
| 368 | optional int32 requested_entity_puts = 6; |
| 369 | optional int32 requested_entity_deletes = 7; |
| 370 | }; |
| 371 | optional int32 approximate_storage_delta = 8; |
| 372 | optional int32 id_sequence_updates = 9; |
| 373 | } |
| 374 | |
| 375 | message GetRequest { |
| 376 | optional InternalHeader header = 6; |
| 377 | |
| 378 | repeated Reference key = 1; |
| 379 | optional Transaction transaction = 2; |
| 380 | |
| 381 | optional int64 failover_ms = 3; |
| 382 | |
| 383 | optional bool strong = 4; |
| 384 | |
| 385 | optional bool allow_deferred = 5 [default=false]; |
| 386 | } |
| 387 | |
| 388 | message GetResponse { |
| 389 | repeated group Entity = 1 { |
| 390 | optional EntityProto entity = 2; |
| 391 | optional Reference key = 4; |
| 392 | |
| 393 | optional int64 version = 3; |
| 394 | } |
| 395 | |
| 396 | repeated Reference deferred = 5; |
| 397 | |
| 398 | optional bool in_order = 6 [default=true]; |
| 399 | } |
| 400 | |
| 401 | message PutRequest { |
| 402 | optional InternalHeader header = 11; |
| 403 | |
| 404 | repeated EntityProto entity = 1; |
| 405 | optional Transaction transaction = 2; |
| 406 | repeated CompositeIndex composite_index = 3; |
| 407 | |
| 408 | optional bool trusted = 4 [default = false]; |
| 409 | |
| 410 | optional bool force = 7 [default = false]; |
| 411 | |
| 412 | optional bool mark_changes = 8 [default = false]; |
| 413 | repeated Snapshot snapshot = 9; |
| 414 | |
| 415 | enum AutoIdPolicy { |
| 416 | CURRENT = 0; |
| 417 | SEQUENTIAL = 1; |
| 418 | } |
| 419 | optional AutoIdPolicy auto_id_policy = 10 [default = CURRENT]; |
| 420 | } |
| 421 | |
| 422 | message PutResponse { |
| 423 | repeated Reference key = 1; |
| 424 | optional Cost cost = 2; |
| 425 | repeated int64 version = 3; |
| 426 | } |
| 427 | |
| 428 | message TouchRequest { |
| 429 | optional InternalHeader header = 10; |
| 430 | |
| 431 | repeated Reference key = 1; |
| 432 | repeated CompositeIndex composite_index = 2; |
| 433 | optional bool force = 3 [default = false]; |
| 434 | repeated Snapshot snapshot = 9; |
| 435 | } |
| 436 | |
| 437 | message TouchResponse { |
| 438 | optional Cost cost = 1; |
| 439 | } |
| 440 | |
| 441 | message DeleteRequest { |
| 442 | optional InternalHeader header = 10; |
| 443 | |
| 444 | repeated Reference key = 6; |
| 445 | optional Transaction transaction = 5; |
| 446 | |
| 447 | optional bool trusted = 4 [default = false]; |
| 448 | |
| 449 | optional bool force = 7 [default = false]; |
| 450 | |
| 451 | optional bool mark_changes = 8 [default = false]; |
| 452 | repeated Snapshot snapshot = 9; |
| 453 | } |
| 454 | |
| 455 | message DeleteResponse { |
| 456 | optional Cost cost = 1; |
| 457 | repeated int64 version = 3; |
| 458 | } |
| 459 | |
| 460 | message NextRequest { |
| 461 | optional InternalHeader header = 5; |
| 462 | |
| 463 | required Cursor cursor = 1; |
| 464 | optional int32 count = 2; |
| 465 | |
| 466 | optional int32 offset = 4 [default = 0]; |
| 467 | |
| 468 | optional bool compile = 3 [default = false]; |
| 469 | } |
| 470 | |
| 471 | message QueryResult { |
| 472 | optional Cursor cursor = 1; |
| 473 | |
| 474 | repeated EntityProto result = 2; |
| 475 | |
| 476 | optional int32 skipped_results = 7; |
| 477 | |
| 478 | required bool more_results = 3; |
| 479 | |
| 480 | optional bool keys_only = 4; |
| 481 | |
| 482 | optional bool index_only = 9; |
| 483 | |
| 484 | optional bool small_ops = 10; |
| 485 | |
| 486 | optional CompiledQuery compiled_query = 5; |
| 487 | |
| 488 | optional CompiledCursor compiled_cursor = 6; |
| 489 | |
| 490 | repeated CompositeIndex index = 8; |
| 491 | |
| 492 | repeated int64 version = 11; |
| 493 | } |
| 494 | |
| 495 | message AllocateIdsRequest { |
| 496 | optional InternalHeader header = 4; |
| 497 | |
| 498 | optional Reference model_key = 1; |
| 499 | |
| 500 | optional int64 size = 2; |
| 501 | |
| 502 | optional int64 max = 3; |
| 503 | |
| 504 | repeated Reference reserve = 5; |
| 505 | } |
| 506 | |
| 507 | message AllocateIdsResponse { |
| 508 | required int64 start = 1; |
| 509 | required int64 end = 2; |
| 510 | optional Cost cost = 3; |
| 511 | } |
| 512 | |
| 513 | message CompositeIndices { |
| 514 | repeated CompositeIndex index = 1; |
| 515 | } |
| 516 | |
| 517 | message AddActionsRequest { |
| 518 | optional InternalHeader header = 3; |
| 519 | |
| 520 | required Transaction transaction = 1; |
| 521 | repeated Action action = 2; |
| 522 | } |
| 523 | |
| 524 | message AddActionsResponse { |
| 525 | } |
| 526 | |
| 527 | message BeginTransactionRequest { |
| 528 | optional InternalHeader header = 3; |
| 529 | |
| 530 | required string app = 1; |
| 531 | optional bool allow_multiple_eg = 2 [default = false]; |
| 532 | optional string database_id = 4; |
| 533 | |
| 534 | enum TransactionMode { |
| 535 | UNKNOWN = 0; |
| 536 | READ_ONLY = 1; |
| 537 | READ_WRITE = 2; |
| 538 | } |
| 539 | optional TransactionMode mode = 5 [default = UNKNOWN]; |
| 540 | |
| 541 | optional Transaction previous_transaction = 7; |
| 542 | } |
| 543 | |
| 544 | message CommitResponse { |
| 545 | optional Cost cost = 1; |
| 546 | |
| 547 | repeated group Version = 3 { |
| 548 | required Reference root_entity_key = 4; |
| 549 | required int64 version = 5; |
| 550 | } |
| 551 | } |