Home | History | Annotate | Download | only in dyn
      1 <html><body>
      2 <style>
      3 
      4 body, h1, h2, h3, div, span, p, pre, a {
      5   margin: 0;
      6   padding: 0;
      7   border: 0;
      8   font-weight: inherit;
      9   font-style: inherit;
     10   font-size: 100%;
     11   font-family: inherit;
     12   vertical-align: baseline;
     13 }
     14 
     15 body {
     16   font-size: 13px;
     17   padding: 1em;
     18 }
     19 
     20 h1 {
     21   font-size: 26px;
     22   margin-bottom: 1em;
     23 }
     24 
     25 h2 {
     26   font-size: 24px;
     27   margin-bottom: 1em;
     28 }
     29 
     30 h3 {
     31   font-size: 20px;
     32   margin-bottom: 1em;
     33   margin-top: 1em;
     34 }
     35 
     36 pre, code {
     37   line-height: 1.5;
     38   font-family: Monaco, 'DejaVu Sans Mono', 'Bitstream Vera Sans Mono', 'Lucida Console', monospace;
     39 }
     40 
     41 pre {
     42   margin-top: 0.5em;
     43 }
     44 
     45 h1, h2, h3, p {
     46   font-family: Arial, sans serif;
     47 }
     48 
     49 h1, h2, h3 {
     50   border-bottom: solid #CCC 1px;
     51 }
     52 
     53 .toc_element {
     54   margin-top: 0.5em;
     55 }
     56 
     57 .firstline {
     58   margin-left: 2 em;
     59 }
     60 
     61 .method  {
     62   margin-top: 1em;
     63   border: solid 1px #CCC;
     64   padding: 1em;
     65   background: #EEE;
     66 }
     67 
     68 .details {
     69   font-weight: bold;
     70   font-size: 14px;
     71 }
     72 
     73 </style>
     74 
     75 <h1><a href="datastore_v1.html">Google Cloud Datastore API</a> . <a href="datastore_v1.projects.html">projects</a></h1>
     76 <h2>Instance Methods</h2>
     77 <p class="toc_element">
     78   <code><a href="#allocateIds">allocateIds(projectId, body, x__xgafv=None)</a></code></p>
     79 <p class="firstline">Allocates IDs for the given keys, which is useful for referencing an entity</p>
     80 <p class="toc_element">
     81   <code><a href="#beginTransaction">beginTransaction(projectId, body, x__xgafv=None)</a></code></p>
     82 <p class="firstline">Begins a new transaction.</p>
     83 <p class="toc_element">
     84   <code><a href="#commit">commit(projectId, body, x__xgafv=None)</a></code></p>
     85 <p class="firstline">Commits a transaction, optionally creating, deleting or modifying some</p>
     86 <p class="toc_element">
     87   <code><a href="#lookup">lookup(projectId, body, x__xgafv=None)</a></code></p>
     88 <p class="firstline">Looks up entities by key.</p>
     89 <p class="toc_element">
     90   <code><a href="#rollback">rollback(projectId, body, x__xgafv=None)</a></code></p>
     91 <p class="firstline">Rolls back a transaction.</p>
     92 <p class="toc_element">
     93   <code><a href="#runQuery">runQuery(projectId, body, x__xgafv=None)</a></code></p>
     94 <p class="firstline">Queries for entities.</p>
     95 <h3>Method Details</h3>
     96 <div class="method">
     97     <code class="details" id="allocateIds">allocateIds(projectId, body, x__xgafv=None)</code>
     98   <pre>Allocates IDs for the given keys, which is useful for referencing an entity
     99 before it is inserted.
    100 
    101 Args:
    102   projectId: string, The ID of the project against which to make the request. (required)
    103   body: object, The request body. (required)
    104     The object takes the form of:
    105 
    106 { # The request for Datastore.AllocateIds.
    107     "keys": [ # A list of keys with incomplete key paths for which to allocate IDs.
    108         # No key may be reserved/read-only.
    109       { # A unique identifier for an entity.
    110           # If a key's partition ID or any of its path kinds or names are
    111           # reserved/read-only, the key is reserved/read-only.
    112           # A reserved/read-only key is forbidden in certain documented contexts.
    113         "path": [ # The entity path.
    114             # An entity path consists of one or more elements composed of a kind and a
    115             # string or numerical identifier, which identify entities. The first
    116             # element identifies a _root entity_, the second element identifies
    117             # a _child_ of the root entity, the third element identifies a child of the
    118             # second entity, and so forth. The entities identified by all prefixes of
    119             # the path are called the element's _ancestors_.
    120             #
    121             # An entity path is always fully complete: *all* of the entity's ancestors
    122             # are required to be in the path along with the entity identifier itself.
    123             # The only exception is that in some documented cases, the identifier in the
    124             # last path element (for the entity) itself may be omitted. For example,
    125             # the last path element of the key of `Mutation.insert` may have no
    126             # identifier.
    127             #
    128             # A path can never be empty, and a path can have at most 100 elements.
    129           { # A (kind, ID/name) pair used to construct a key path.
    130               #
    131               # If either name or ID is set, the element is complete.
    132               # If neither is set, the element is incomplete.
    133             "kind": "A String", # The kind of the entity.
    134                 # A kind matching regex `__.*__` is reserved/read-only.
    135                 # A kind must not contain more than 1500 bytes when UTF-8 encoded.
    136                 # Cannot be `""`.
    137             "id": "A String", # The auto-allocated ID of the entity.
    138                 # Never equal to zero. Values less than zero are discouraged and may not
    139                 # be supported in the future.
    140             "name": "A String", # The name of the entity.
    141                 # A name matching regex `__.*__` is reserved/read-only.
    142                 # A name must not be more than 1500 bytes when UTF-8 encoded.
    143                 # Cannot be `""`.
    144           },
    145         ],
    146         "partitionId": { # A partition ID identifies a grouping of entities. The grouping is always # Entities are partitioned into subsets, currently identified by a project
    147             # ID and namespace ID.
    148             # Queries are scoped to a single partition.
    149             # by project and namespace, however the namespace ID may be empty.
    150             #
    151             # A partition ID contains several dimensions:
    152             # project ID and namespace ID.
    153             #
    154             # Partition dimensions:
    155             #
    156             # - May be `""`.
    157             # - Must be valid UTF-8 bytes.
    158             # - Must have values that match regex `[A-Za-z\d\.\-_]{1,100}`
    159             # If the value of any dimension matches regex `__.*__`, the partition is
    160             # reserved/read-only.
    161             # A reserved/read-only partition ID is forbidden in certain documented
    162             # contexts.
    163             #
    164             # Foreign partition IDs (in which the project ID does
    165             # not match the context project ID ) are discouraged.
    166             # Reads and writes of foreign partition IDs may fail if the project is not in an active state.
    167           "projectId": "A String", # The ID of the project to which the entities belong.
    168           "namespaceId": "A String", # If not empty, the ID of the namespace to which the entities belong.
    169         },
    170       },
    171     ],
    172   }
    173 
    174   x__xgafv: string, V1 error format.
    175     Allowed values
    176       1 - v1 error format
    177       2 - v2 error format
    178 
    179 Returns:
    180   An object of the form:
    181 
    182     { # The response for Datastore.AllocateIds.
    183     "keys": [ # The keys specified in the request (in the same order), each with
    184         # its key path completed with a newly allocated ID.
    185       { # A unique identifier for an entity.
    186           # If a key's partition ID or any of its path kinds or names are
    187           # reserved/read-only, the key is reserved/read-only.
    188           # A reserved/read-only key is forbidden in certain documented contexts.
    189         "path": [ # The entity path.
    190             # An entity path consists of one or more elements composed of a kind and a
    191             # string or numerical identifier, which identify entities. The first
    192             # element identifies a _root entity_, the second element identifies
    193             # a _child_ of the root entity, the third element identifies a child of the
    194             # second entity, and so forth. The entities identified by all prefixes of
    195             # the path are called the element's _ancestors_.
    196             #
    197             # An entity path is always fully complete: *all* of the entity's ancestors
    198             # are required to be in the path along with the entity identifier itself.
    199             # The only exception is that in some documented cases, the identifier in the
    200             # last path element (for the entity) itself may be omitted. For example,
    201             # the last path element of the key of `Mutation.insert` may have no
    202             # identifier.
    203             #
    204             # A path can never be empty, and a path can have at most 100 elements.
    205           { # A (kind, ID/name) pair used to construct a key path.
    206               #
    207               # If either name or ID is set, the element is complete.
    208               # If neither is set, the element is incomplete.
    209             "kind": "A String", # The kind of the entity.
    210                 # A kind matching regex `__.*__` is reserved/read-only.
    211                 # A kind must not contain more than 1500 bytes when UTF-8 encoded.
    212                 # Cannot be `""`.
    213             "id": "A String", # The auto-allocated ID of the entity.
    214                 # Never equal to zero. Values less than zero are discouraged and may not
    215                 # be supported in the future.
    216             "name": "A String", # The name of the entity.
    217                 # A name matching regex `__.*__` is reserved/read-only.
    218                 # A name must not be more than 1500 bytes when UTF-8 encoded.
    219                 # Cannot be `""`.
    220           },
    221         ],
    222         "partitionId": { # A partition ID identifies a grouping of entities. The grouping is always # Entities are partitioned into subsets, currently identified by a project
    223             # ID and namespace ID.
    224             # Queries are scoped to a single partition.
    225             # by project and namespace, however the namespace ID may be empty.
    226             #
    227             # A partition ID contains several dimensions:
    228             # project ID and namespace ID.
    229             #
    230             # Partition dimensions:
    231             #
    232             # - May be `""`.
    233             # - Must be valid UTF-8 bytes.
    234             # - Must have values that match regex `[A-Za-z\d\.\-_]{1,100}`
    235             # If the value of any dimension matches regex `__.*__`, the partition is
    236             # reserved/read-only.
    237             # A reserved/read-only partition ID is forbidden in certain documented
    238             # contexts.
    239             #
    240             # Foreign partition IDs (in which the project ID does
    241             # not match the context project ID ) are discouraged.
    242             # Reads and writes of foreign partition IDs may fail if the project is not in an active state.
    243           "projectId": "A String", # The ID of the project to which the entities belong.
    244           "namespaceId": "A String", # If not empty, the ID of the namespace to which the entities belong.
    245         },
    246       },
    247     ],
    248   }</pre>
    249 </div>
    250 
    251 <div class="method">
    252     <code class="details" id="beginTransaction">beginTransaction(projectId, body, x__xgafv=None)</code>
    253   <pre>Begins a new transaction.
    254 
    255 Args:
    256   projectId: string, The ID of the project against which to make the request. (required)
    257   body: object, The request body. (required)
    258     The object takes the form of:
    259 
    260 { # The request for Datastore.BeginTransaction.
    261   }
    262 
    263   x__xgafv: string, V1 error format.
    264     Allowed values
    265       1 - v1 error format
    266       2 - v2 error format
    267 
    268 Returns:
    269   An object of the form:
    270 
    271     { # The response for Datastore.BeginTransaction.
    272     "transaction": "A String", # The transaction identifier (always present).
    273   }</pre>
    274 </div>
    275 
    276 <div class="method">
    277     <code class="details" id="commit">commit(projectId, body, x__xgafv=None)</code>
    278   <pre>Commits a transaction, optionally creating, deleting or modifying some
    279 entities.
    280 
    281 Args:
    282   projectId: string, The ID of the project against which to make the request. (required)
    283   body: object, The request body. (required)
    284     The object takes the form of:
    285 
    286 { # The request for Datastore.Commit.
    287     "transaction": "A String", # The identifier of the transaction associated with the commit. A
    288         # transaction identifier is returned by a call to
    289         # Datastore.BeginTransaction.
    290     "mode": "A String", # The type of commit to perform. Defaults to `TRANSACTIONAL`.
    291     "mutations": [ # The mutations to perform.
    292         # 
    293         # When mode is `TRANSACTIONAL`, mutations affecting a single entity are
    294         # applied in order. The following sequences of mutations affecting a single
    295         # entity are not permitted in a single `Commit` request:
    296         # 
    297         # - `insert` followed by `insert`
    298         # - `update` followed by `insert`
    299         # - `upsert` followed by `insert`
    300         # - `delete` followed by `update`
    301         # 
    302         # When mode is `NON_TRANSACTIONAL`, no two mutations may affect a single
    303         # entity.
    304       { # A mutation to apply to an entity.
    305         "insert": { # A Datastore data object. # The entity to insert. The entity must not already exist.
    306             # The entity key's final path element may be incomplete.
    307             #
    308             # An entity is limited to 1 megabyte when stored. That _roughly_
    309             # corresponds to a limit of 1 megabyte for the serialized form of this
    310             # message.
    311           "properties": { # The entity's properties.
    312               # The map's keys are property names.
    313               # A property name matching regex `__.*__` is reserved.
    314               # A reserved property name is forbidden in certain documented contexts.
    315               # The name must not contain more than 500 characters.
    316               # The name cannot be `""`.
    317             "a_key": { # A message that can hold any of the supported value types and associated
    318                 # metadata.
    319               "entityValue": # Object with schema name: Entity # An entity value.
    320                   #
    321                   # - May have no key.
    322                   # - May have a key with an incomplete key path.
    323                   # - May have a reserved/read-only key.
    324               "timestampValue": "A String", # A timestamp value.
    325                   # When stored in the Datastore, precise only to microseconds;
    326                   # any additional precision is rounded down.
    327               "geoPointValue": { # An object representing a latitude/longitude pair. This is expressed as a pair # A geo point value representing a point on the surface of Earth.
    328                   # of doubles representing degrees latitude and degrees longitude. Unless
    329                   # specified otherwise, this must conform to the
    330                   # <a href="http://www.unoosa.org/pdf/icg/2012/template/WGS_84.pdf">WGS84
    331                   # standard</a>. Values must be within normalized ranges.
    332                   #
    333                   # Example of normalization code in Python:
    334                   #
    335                   #     def NormalizeLongitude(longitude):
    336                   #       """Wraps decimal degrees longitude to [-180.0, 180.0]."""
    337                   #       q, r = divmod(longitude, 360.0)
    338                   #       if r > 180.0 or (r == 180.0 and q <= -1.0):
    339                   #         return r - 360.0
    340                   #       return r
    341                   #
    342                   #     def NormalizeLatLng(latitude, longitude):
    343                   #       """Wraps decimal degrees latitude and longitude to
    344                   #       [-90.0, 90.0] and [-180.0, 180.0], respectively."""
    345                   #       r = latitude % 360.0
    346                   #       if r <= 90.0:
    347                   #         return r, NormalizeLongitude(longitude)
    348                   #       elif r >= 270.0:
    349                   #         return r - 360, NormalizeLongitude(longitude)
    350                   #       else:
    351                   #         return 180 - r, NormalizeLongitude(longitude + 180.0)
    352                   #
    353                   #     assert 180.0 == NormalizeLongitude(180.0)
    354                   #     assert -180.0 == NormalizeLongitude(-180.0)
    355                   #     assert -179.0 == NormalizeLongitude(181.0)
    356                   #     assert (0.0, 0.0) == NormalizeLatLng(360.0, 0.0)
    357                   #     assert (0.0, 0.0) == NormalizeLatLng(-360.0, 0.0)
    358                   #     assert (85.0, 180.0) == NormalizeLatLng(95.0, 0.0)
    359                   #     assert (-85.0, -170.0) == NormalizeLatLng(-95.0, 10.0)
    360                   #     assert (90.0, 10.0) == NormalizeLatLng(90.0, 10.0)
    361                   #     assert (-90.0, -10.0) == NormalizeLatLng(-90.0, -10.0)
    362                   #     assert (0.0, -170.0) == NormalizeLatLng(-180.0, 10.0)
    363                   #     assert (0.0, -170.0) == NormalizeLatLng(180.0, 10.0)
    364                   #     assert (-90.0, 10.0) == NormalizeLatLng(270.0, 10.0)
    365                   #     assert (90.0, 10.0) == NormalizeLatLng(-270.0, 10.0)
    366                 "latitude": 3.14, # The latitude in degrees. It must be in the range [-90.0, +90.0].
    367                 "longitude": 3.14, # The longitude in degrees. It must be in the range [-180.0, +180.0].
    368               },
    369               "doubleValue": 3.14, # A double value.
    370               "meaning": 42, # The `meaning` field should only be populated for backwards compatibility.
    371               "excludeFromIndexes": True or False, # If the value should be excluded from all indexes including those defined
    372                   # explicitly.
    373               "keyValue": { # A unique identifier for an entity. # A key value.
    374                   # If a key's partition ID or any of its path kinds or names are
    375                   # reserved/read-only, the key is reserved/read-only.
    376                   # A reserved/read-only key is forbidden in certain documented contexts.
    377                 "path": [ # The entity path.
    378                     # An entity path consists of one or more elements composed of a kind and a
    379                     # string or numerical identifier, which identify entities. The first
    380                     # element identifies a _root entity_, the second element identifies
    381                     # a _child_ of the root entity, the third element identifies a child of the
    382                     # second entity, and so forth. The entities identified by all prefixes of
    383                     # the path are called the element's _ancestors_.
    384                     #
    385                     # An entity path is always fully complete: *all* of the entity's ancestors
    386                     # are required to be in the path along with the entity identifier itself.
    387                     # The only exception is that in some documented cases, the identifier in the
    388                     # last path element (for the entity) itself may be omitted. For example,
    389                     # the last path element of the key of `Mutation.insert` may have no
    390                     # identifier.
    391                     #
    392                     # A path can never be empty, and a path can have at most 100 elements.
    393                   { # A (kind, ID/name) pair used to construct a key path.
    394                       #
    395                       # If either name or ID is set, the element is complete.
    396                       # If neither is set, the element is incomplete.
    397                     "kind": "A String", # The kind of the entity.
    398                         # A kind matching regex `__.*__` is reserved/read-only.
    399                         # A kind must not contain more than 1500 bytes when UTF-8 encoded.
    400                         # Cannot be `""`.
    401                     "id": "A String", # The auto-allocated ID of the entity.
    402                         # Never equal to zero. Values less than zero are discouraged and may not
    403                         # be supported in the future.
    404                     "name": "A String", # The name of the entity.
    405                         # A name matching regex `__.*__` is reserved/read-only.
    406                         # A name must not be more than 1500 bytes when UTF-8 encoded.
    407                         # Cannot be `""`.
    408                   },
    409                 ],
    410                 "partitionId": { # A partition ID identifies a grouping of entities. The grouping is always # Entities are partitioned into subsets, currently identified by a project
    411                     # ID and namespace ID.
    412                     # Queries are scoped to a single partition.
    413                     # by project and namespace, however the namespace ID may be empty.
    414                     #
    415                     # A partition ID contains several dimensions:
    416                     # project ID and namespace ID.
    417                     #
    418                     # Partition dimensions:
    419                     #
    420                     # - May be `""`.
    421                     # - Must be valid UTF-8 bytes.
    422                     # - Must have values that match regex `[A-Za-z\d\.\-_]{1,100}`
    423                     # If the value of any dimension matches regex `__.*__`, the partition is
    424                     # reserved/read-only.
    425                     # A reserved/read-only partition ID is forbidden in certain documented
    426                     # contexts.
    427                     #
    428                     # Foreign partition IDs (in which the project ID does
    429                     # not match the context project ID ) are discouraged.
    430                     # Reads and writes of foreign partition IDs may fail if the project is not in an active state.
    431                   "projectId": "A String", # The ID of the project to which the entities belong.
    432                   "namespaceId": "A String", # If not empty, the ID of the namespace to which the entities belong.
    433                 },
    434               },
    435               "stringValue": "A String", # A UTF-8 encoded string value.
    436                   # When `exclude_from_indexes` is false (it is indexed) , may have at most 1500 bytes.
    437                   # Otherwise, may be set to at least 1,000,000 bytes.
    438               "blobValue": "A String", # A blob value.
    439                   # May have at most 1,000,000 bytes.
    440                   # When `exclude_from_indexes` is false, may have at most 1500 bytes.
    441                   # In JSON requests, must be base64-encoded.
    442               "booleanValue": True or False, # A boolean value.
    443               "arrayValue": { # An array value. # An array value.
    444                   # Cannot contain another array value.
    445                   # A `Value` instance that sets field `array_value` must not set fields
    446                   # `meaning` or `exclude_from_indexes`.
    447                 "values": [ # Values in the array.
    448                     # The order of this array may not be preserved if it contains a mix of
    449                     # indexed and unindexed values.
    450                   # Object with schema name: Value
    451                 ],
    452               },
    453               "integerValue": "A String", # An integer value.
    454               "nullValue": "A String", # A null value.
    455             },
    456           },
    457           "key": { # A unique identifier for an entity. # The entity's key.
    458               #
    459               # An entity must have a key, unless otherwise documented (for example,
    460               # an entity in `Value.entity_value` may have no key).
    461               # An entity's kind is its key path's last element's kind,
    462               # or null if it has no key.
    463               # If a key's partition ID or any of its path kinds or names are
    464               # reserved/read-only, the key is reserved/read-only.
    465               # A reserved/read-only key is forbidden in certain documented contexts.
    466             "path": [ # The entity path.
    467                 # An entity path consists of one or more elements composed of a kind and a
    468                 # string or numerical identifier, which identify entities. The first
    469                 # element identifies a _root entity_, the second element identifies
    470                 # a _child_ of the root entity, the third element identifies a child of the
    471                 # second entity, and so forth. The entities identified by all prefixes of
    472                 # the path are called the element's _ancestors_.
    473                 #
    474                 # An entity path is always fully complete: *all* of the entity's ancestors
    475                 # are required to be in the path along with the entity identifier itself.
    476                 # The only exception is that in some documented cases, the identifier in the
    477                 # last path element (for the entity) itself may be omitted. For example,
    478                 # the last path element of the key of `Mutation.insert` may have no
    479                 # identifier.
    480                 #
    481                 # A path can never be empty, and a path can have at most 100 elements.
    482               { # A (kind, ID/name) pair used to construct a key path.
    483                   #
    484                   # If either name or ID is set, the element is complete.
    485                   # If neither is set, the element is incomplete.
    486                 "kind": "A String", # The kind of the entity.
    487                     # A kind matching regex `__.*__` is reserved/read-only.
    488                     # A kind must not contain more than 1500 bytes when UTF-8 encoded.
    489                     # Cannot be `""`.
    490                 "id": "A String", # The auto-allocated ID of the entity.
    491                     # Never equal to zero. Values less than zero are discouraged and may not
    492                     # be supported in the future.
    493                 "name": "A String", # The name of the entity.
    494                     # A name matching regex `__.*__` is reserved/read-only.
    495                     # A name must not be more than 1500 bytes when UTF-8 encoded.
    496                     # Cannot be `""`.
    497               },
    498             ],
    499             "partitionId": { # A partition ID identifies a grouping of entities. The grouping is always # Entities are partitioned into subsets, currently identified by a project
    500                 # ID and namespace ID.
    501                 # Queries are scoped to a single partition.
    502                 # by project and namespace, however the namespace ID may be empty.
    503                 #
    504                 # A partition ID contains several dimensions:
    505                 # project ID and namespace ID.
    506                 #
    507                 # Partition dimensions:
    508                 #
    509                 # - May be `""`.
    510                 # - Must be valid UTF-8 bytes.
    511                 # - Must have values that match regex `[A-Za-z\d\.\-_]{1,100}`
    512                 # If the value of any dimension matches regex `__.*__`, the partition is
    513                 # reserved/read-only.
    514                 # A reserved/read-only partition ID is forbidden in certain documented
    515                 # contexts.
    516                 #
    517                 # Foreign partition IDs (in which the project ID does
    518                 # not match the context project ID ) are discouraged.
    519                 # Reads and writes of foreign partition IDs may fail if the project is not in an active state.
    520               "projectId": "A String", # The ID of the project to which the entities belong.
    521               "namespaceId": "A String", # If not empty, the ID of the namespace to which the entities belong.
    522             },
    523           },
    524         },
    525         "upsert": { # A Datastore data object. # The entity to upsert. The entity may or may not already exist.
    526             # The entity key's final path element may be incomplete.
    527             #
    528             # An entity is limited to 1 megabyte when stored. That _roughly_
    529             # corresponds to a limit of 1 megabyte for the serialized form of this
    530             # message.
    531           "properties": { # The entity's properties.
    532               # The map's keys are property names.
    533               # A property name matching regex `__.*__` is reserved.
    534               # A reserved property name is forbidden in certain documented contexts.
    535               # The name must not contain more than 500 characters.
    536               # The name cannot be `""`.
    537             "a_key": { # A message that can hold any of the supported value types and associated
    538                 # metadata.
    539               "entityValue": # Object with schema name: Entity # An entity value.
    540                   #
    541                   # - May have no key.
    542                   # - May have a key with an incomplete key path.
    543                   # - May have a reserved/read-only key.
    544               "timestampValue": "A String", # A timestamp value.
    545                   # When stored in the Datastore, precise only to microseconds;
    546                   # any additional precision is rounded down.
    547               "geoPointValue": { # An object representing a latitude/longitude pair. This is expressed as a pair # A geo point value representing a point on the surface of Earth.
    548                   # of doubles representing degrees latitude and degrees longitude. Unless
    549                   # specified otherwise, this must conform to the
    550                   # <a href="http://www.unoosa.org/pdf/icg/2012/template/WGS_84.pdf">WGS84
    551                   # standard</a>. Values must be within normalized ranges.
    552                   #
    553                   # Example of normalization code in Python:
    554                   #
    555                   #     def NormalizeLongitude(longitude):
    556                   #       """Wraps decimal degrees longitude to [-180.0, 180.0]."""
    557                   #       q, r = divmod(longitude, 360.0)
    558                   #       if r > 180.0 or (r == 180.0 and q <= -1.0):
    559                   #         return r - 360.0
    560                   #       return r
    561                   #
    562                   #     def NormalizeLatLng(latitude, longitude):
    563                   #       """Wraps decimal degrees latitude and longitude to
    564                   #       [-90.0, 90.0] and [-180.0, 180.0], respectively."""
    565                   #       r = latitude % 360.0
    566                   #       if r <= 90.0:
    567                   #         return r, NormalizeLongitude(longitude)
    568                   #       elif r >= 270.0:
    569                   #         return r - 360, NormalizeLongitude(longitude)
    570                   #       else:
    571                   #         return 180 - r, NormalizeLongitude(longitude + 180.0)
    572                   #
    573                   #     assert 180.0 == NormalizeLongitude(180.0)
    574                   #     assert -180.0 == NormalizeLongitude(-180.0)
    575                   #     assert -179.0 == NormalizeLongitude(181.0)
    576                   #     assert (0.0, 0.0) == NormalizeLatLng(360.0, 0.0)
    577                   #     assert (0.0, 0.0) == NormalizeLatLng(-360.0, 0.0)
    578                   #     assert (85.0, 180.0) == NormalizeLatLng(95.0, 0.0)
    579                   #     assert (-85.0, -170.0) == NormalizeLatLng(-95.0, 10.0)
    580                   #     assert (90.0, 10.0) == NormalizeLatLng(90.0, 10.0)
    581                   #     assert (-90.0, -10.0) == NormalizeLatLng(-90.0, -10.0)
    582                   #     assert (0.0, -170.0) == NormalizeLatLng(-180.0, 10.0)
    583                   #     assert (0.0, -170.0) == NormalizeLatLng(180.0, 10.0)
    584                   #     assert (-90.0, 10.0) == NormalizeLatLng(270.0, 10.0)
    585                   #     assert (90.0, 10.0) == NormalizeLatLng(-270.0, 10.0)
    586                 "latitude": 3.14, # The latitude in degrees. It must be in the range [-90.0, +90.0].
    587                 "longitude": 3.14, # The longitude in degrees. It must be in the range [-180.0, +180.0].
    588               },
    589               "doubleValue": 3.14, # A double value.
    590               "meaning": 42, # The `meaning` field should only be populated for backwards compatibility.
    591               "excludeFromIndexes": True or False, # If the value should be excluded from all indexes including those defined
    592                   # explicitly.
    593               "keyValue": { # A unique identifier for an entity. # A key value.
    594                   # If a key's partition ID or any of its path kinds or names are
    595                   # reserved/read-only, the key is reserved/read-only.
    596                   # A reserved/read-only key is forbidden in certain documented contexts.
    597                 "path": [ # The entity path.
    598                     # An entity path consists of one or more elements composed of a kind and a
    599                     # string or numerical identifier, which identify entities. The first
    600                     # element identifies a _root entity_, the second element identifies
    601                     # a _child_ of the root entity, the third element identifies a child of the
    602                     # second entity, and so forth. The entities identified by all prefixes of
    603                     # the path are called the element's _ancestors_.
    604                     #
    605                     # An entity path is always fully complete: *all* of the entity's ancestors
    606                     # are required to be in the path along with the entity identifier itself.
    607                     # The only exception is that in some documented cases, the identifier in the
    608                     # last path element (for the entity) itself may be omitted. For example,
    609                     # the last path element of the key of `Mutation.insert` may have no
    610                     # identifier.
    611                     #
    612                     # A path can never be empty, and a path can have at most 100 elements.
    613                   { # A (kind, ID/name) pair used to construct a key path.
    614                       #
    615                       # If either name or ID is set, the element is complete.
    616                       # If neither is set, the element is incomplete.
    617                     "kind": "A String", # The kind of the entity.
    618                         # A kind matching regex `__.*__` is reserved/read-only.
    619                         # A kind must not contain more than 1500 bytes when UTF-8 encoded.
    620                         # Cannot be `""`.
    621                     "id": "A String", # The auto-allocated ID of the entity.
    622                         # Never equal to zero. Values less than zero are discouraged and may not
    623                         # be supported in the future.
    624                     "name": "A String", # The name of the entity.
    625                         # A name matching regex `__.*__` is reserved/read-only.
    626                         # A name must not be more than 1500 bytes when UTF-8 encoded.
    627                         # Cannot be `""`.
    628                   },
    629                 ],
    630                 "partitionId": { # A partition ID identifies a grouping of entities. The grouping is always # Entities are partitioned into subsets, currently identified by a project
    631                     # ID and namespace ID.
    632                     # Queries are scoped to a single partition.
    633                     # by project and namespace, however the namespace ID may be empty.
    634                     #
    635                     # A partition ID contains several dimensions:
    636                     # project ID and namespace ID.
    637                     #
    638                     # Partition dimensions:
    639                     #
    640                     # - May be `""`.
    641                     # - Must be valid UTF-8 bytes.
    642                     # - Must have values that match regex `[A-Za-z\d\.\-_]{1,100}`
    643                     # If the value of any dimension matches regex `__.*__`, the partition is
    644                     # reserved/read-only.
    645                     # A reserved/read-only partition ID is forbidden in certain documented
    646                     # contexts.
    647                     #
    648                     # Foreign partition IDs (in which the project ID does
    649                     # not match the context project ID ) are discouraged.
    650                     # Reads and writes of foreign partition IDs may fail if the project is not in an active state.
    651                   "projectId": "A String", # The ID of the project to which the entities belong.
    652                   "namespaceId": "A String", # If not empty, the ID of the namespace to which the entities belong.
    653                 },
    654               },
    655               "stringValue": "A String", # A UTF-8 encoded string value.
    656                   # When `exclude_from_indexes` is false (it is indexed) , may have at most 1500 bytes.
    657                   # Otherwise, may be set to at least 1,000,000 bytes.
    658               "blobValue": "A String", # A blob value.
    659                   # May have at most 1,000,000 bytes.
    660                   # When `exclude_from_indexes` is false, may have at most 1500 bytes.
    661                   # In JSON requests, must be base64-encoded.
    662               "booleanValue": True or False, # A boolean value.
    663               "arrayValue": { # An array value. # An array value.
    664                   # Cannot contain another array value.
    665                   # A `Value` instance that sets field `array_value` must not set fields
    666                   # `meaning` or `exclude_from_indexes`.
    667                 "values": [ # Values in the array.
    668                     # The order of this array may not be preserved if it contains a mix of
    669                     # indexed and unindexed values.
    670                   # Object with schema name: Value
    671                 ],
    672               },
    673               "integerValue": "A String", # An integer value.
    674               "nullValue": "A String", # A null value.
    675             },
    676           },
    677           "key": { # A unique identifier for an entity. # The entity's key.
    678               #
    679               # An entity must have a key, unless otherwise documented (for example,
    680               # an entity in `Value.entity_value` may have no key).
    681               # An entity's kind is its key path's last element's kind,
    682               # or null if it has no key.
    683               # If a key's partition ID or any of its path kinds or names are
    684               # reserved/read-only, the key is reserved/read-only.
    685               # A reserved/read-only key is forbidden in certain documented contexts.
    686             "path": [ # The entity path.
    687                 # An entity path consists of one or more elements composed of a kind and a
    688                 # string or numerical identifier, which identify entities. The first
    689                 # element identifies a _root entity_, the second element identifies
    690                 # a _child_ of the root entity, the third element identifies a child of the
    691                 # second entity, and so forth. The entities identified by all prefixes of
    692                 # the path are called the element's _ancestors_.
    693                 #
    694                 # An entity path is always fully complete: *all* of the entity's ancestors
    695                 # are required to be in the path along with the entity identifier itself.
    696                 # The only exception is that in some documented cases, the identifier in the
    697                 # last path element (for the entity) itself may be omitted. For example,
    698                 # the last path element of the key of `Mutation.insert` may have no
    699                 # identifier.
    700                 #
    701                 # A path can never be empty, and a path can have at most 100 elements.
    702               { # A (kind, ID/name) pair used to construct a key path.
    703                   #
    704                   # If either name or ID is set, the element is complete.
    705                   # If neither is set, the element is incomplete.
    706                 "kind": "A String", # The kind of the entity.
    707                     # A kind matching regex `__.*__` is reserved/read-only.
    708                     # A kind must not contain more than 1500 bytes when UTF-8 encoded.
    709                     # Cannot be `""`.
    710                 "id": "A String", # The auto-allocated ID of the entity.
    711                     # Never equal to zero. Values less than zero are discouraged and may not
    712                     # be supported in the future.
    713                 "name": "A String", # The name of the entity.
    714                     # A name matching regex `__.*__` is reserved/read-only.
    715                     # A name must not be more than 1500 bytes when UTF-8 encoded.
    716                     # Cannot be `""`.
    717               },
    718             ],
    719             "partitionId": { # A partition ID identifies a grouping of entities. The grouping is always # Entities are partitioned into subsets, currently identified by a project
    720                 # ID and namespace ID.
    721                 # Queries are scoped to a single partition.
    722                 # by project and namespace, however the namespace ID may be empty.
    723                 #
    724                 # A partition ID contains several dimensions:
    725                 # project ID and namespace ID.
    726                 #
    727                 # Partition dimensions:
    728                 #
    729                 # - May be `""`.
    730                 # - Must be valid UTF-8 bytes.
    731                 # - Must have values that match regex `[A-Za-z\d\.\-_]{1,100}`
    732                 # If the value of any dimension matches regex `__.*__`, the partition is
    733                 # reserved/read-only.
    734                 # A reserved/read-only partition ID is forbidden in certain documented
    735                 # contexts.
    736                 #
    737                 # Foreign partition IDs (in which the project ID does
    738                 # not match the context project ID ) are discouraged.
    739                 # Reads and writes of foreign partition IDs may fail if the project is not in an active state.
    740               "projectId": "A String", # The ID of the project to which the entities belong.
    741               "namespaceId": "A String", # If not empty, the ID of the namespace to which the entities belong.
    742             },
    743           },
    744         },
    745         "update": { # A Datastore data object. # The entity to update. The entity must already exist.
    746             # Must have a complete key path.
    747             #
    748             # An entity is limited to 1 megabyte when stored. That _roughly_
    749             # corresponds to a limit of 1 megabyte for the serialized form of this
    750             # message.
    751           "properties": { # The entity's properties.
    752               # The map's keys are property names.
    753               # A property name matching regex `__.*__` is reserved.
    754               # A reserved property name is forbidden in certain documented contexts.
    755               # The name must not contain more than 500 characters.
    756               # The name cannot be `""`.
    757             "a_key": { # A message that can hold any of the supported value types and associated
    758                 # metadata.
    759               "entityValue": # Object with schema name: Entity # An entity value.
    760                   #
    761                   # - May have no key.
    762                   # - May have a key with an incomplete key path.
    763                   # - May have a reserved/read-only key.
    764               "timestampValue": "A String", # A timestamp value.
    765                   # When stored in the Datastore, precise only to microseconds;
    766                   # any additional precision is rounded down.
    767               "geoPointValue": { # An object representing a latitude/longitude pair. This is expressed as a pair # A geo point value representing a point on the surface of Earth.
    768                   # of doubles representing degrees latitude and degrees longitude. Unless
    769                   # specified otherwise, this must conform to the
    770                   # <a href="http://www.unoosa.org/pdf/icg/2012/template/WGS_84.pdf">WGS84
    771                   # standard</a>. Values must be within normalized ranges.
    772                   #
    773                   # Example of normalization code in Python:
    774                   #
    775                   #     def NormalizeLongitude(longitude):
    776                   #       """Wraps decimal degrees longitude to [-180.0, 180.0]."""
    777                   #       q, r = divmod(longitude, 360.0)
    778                   #       if r > 180.0 or (r == 180.0 and q <= -1.0):
    779                   #         return r - 360.0
    780                   #       return r
    781                   #
    782                   #     def NormalizeLatLng(latitude, longitude):
    783                   #       """Wraps decimal degrees latitude and longitude to
    784                   #       [-90.0, 90.0] and [-180.0, 180.0], respectively."""
    785                   #       r = latitude % 360.0
    786                   #       if r <= 90.0:
    787                   #         return r, NormalizeLongitude(longitude)
    788                   #       elif r >= 270.0:
    789                   #         return r - 360, NormalizeLongitude(longitude)
    790                   #       else:
    791                   #         return 180 - r, NormalizeLongitude(longitude + 180.0)
    792                   #
    793                   #     assert 180.0 == NormalizeLongitude(180.0)
    794                   #     assert -180.0 == NormalizeLongitude(-180.0)
    795                   #     assert -179.0 == NormalizeLongitude(181.0)
    796                   #     assert (0.0, 0.0) == NormalizeLatLng(360.0, 0.0)
    797                   #     assert (0.0, 0.0) == NormalizeLatLng(-360.0, 0.0)
    798                   #     assert (85.0, 180.0) == NormalizeLatLng(95.0, 0.0)
    799                   #     assert (-85.0, -170.0) == NormalizeLatLng(-95.0, 10.0)
    800                   #     assert (90.0, 10.0) == NormalizeLatLng(90.0, 10.0)
    801                   #     assert (-90.0, -10.0) == NormalizeLatLng(-90.0, -10.0)
    802                   #     assert (0.0, -170.0) == NormalizeLatLng(-180.0, 10.0)
    803                   #     assert (0.0, -170.0) == NormalizeLatLng(180.0, 10.0)
    804                   #     assert (-90.0, 10.0) == NormalizeLatLng(270.0, 10.0)
    805                   #     assert (90.0, 10.0) == NormalizeLatLng(-270.0, 10.0)
    806                 "latitude": 3.14, # The latitude in degrees. It must be in the range [-90.0, +90.0].
    807                 "longitude": 3.14, # The longitude in degrees. It must be in the range [-180.0, +180.0].
    808               },
    809               "doubleValue": 3.14, # A double value.
    810               "meaning": 42, # The `meaning` field should only be populated for backwards compatibility.
    811               "excludeFromIndexes": True or False, # If the value should be excluded from all indexes including those defined
    812                   # explicitly.
    813               "keyValue": { # A unique identifier for an entity. # A key value.
    814                   # If a key's partition ID or any of its path kinds or names are
    815                   # reserved/read-only, the key is reserved/read-only.
    816                   # A reserved/read-only key is forbidden in certain documented contexts.
    817                 "path": [ # The entity path.
    818                     # An entity path consists of one or more elements composed of a kind and a
    819                     # string or numerical identifier, which identify entities. The first
    820                     # element identifies a _root entity_, the second element identifies
    821                     # a _child_ of the root entity, the third element identifies a child of the
    822                     # second entity, and so forth. The entities identified by all prefixes of
    823                     # the path are called the element's _ancestors_.
    824                     #
    825                     # An entity path is always fully complete: *all* of the entity's ancestors
    826                     # are required to be in the path along with the entity identifier itself.
    827                     # The only exception is that in some documented cases, the identifier in the
    828                     # last path element (for the entity) itself may be omitted. For example,
    829                     # the last path element of the key of `Mutation.insert` may have no
    830                     # identifier.
    831                     #
    832                     # A path can never be empty, and a path can have at most 100 elements.
    833                   { # A (kind, ID/name) pair used to construct a key path.
    834                       #
    835                       # If either name or ID is set, the element is complete.
    836                       # If neither is set, the element is incomplete.
    837                     "kind": "A String", # The kind of the entity.
    838                         # A kind matching regex `__.*__` is reserved/read-only.
    839                         # A kind must not contain more than 1500 bytes when UTF-8 encoded.
    840                         # Cannot be `""`.
    841                     "id": "A String", # The auto-allocated ID of the entity.
    842                         # Never equal to zero. Values less than zero are discouraged and may not
    843                         # be supported in the future.
    844                     "name": "A String", # The name of the entity.
    845                         # A name matching regex `__.*__` is reserved/read-only.
    846                         # A name must not be more than 1500 bytes when UTF-8 encoded.
    847                         # Cannot be `""`.
    848                   },
    849                 ],
    850                 "partitionId": { # A partition ID identifies a grouping of entities. The grouping is always # Entities are partitioned into subsets, currently identified by a project
    851                     # ID and namespace ID.
    852                     # Queries are scoped to a single partition.
    853                     # by project and namespace, however the namespace ID may be empty.
    854                     #
    855                     # A partition ID contains several dimensions:
    856                     # project ID and namespace ID.
    857                     #
    858                     # Partition dimensions:
    859                     #
    860                     # - May be `""`.
    861                     # - Must be valid UTF-8 bytes.
    862                     # - Must have values that match regex `[A-Za-z\d\.\-_]{1,100}`
    863                     # If the value of any dimension matches regex `__.*__`, the partition is
    864                     # reserved/read-only.
    865                     # A reserved/read-only partition ID is forbidden in certain documented
    866                     # contexts.
    867                     #
    868                     # Foreign partition IDs (in which the project ID does
    869                     # not match the context project ID ) are discouraged.
    870                     # Reads and writes of foreign partition IDs may fail if the project is not in an active state.
    871                   "projectId": "A String", # The ID of the project to which the entities belong.
    872                   "namespaceId": "A String", # If not empty, the ID of the namespace to which the entities belong.
    873                 },
    874               },
    875               "stringValue": "A String", # A UTF-8 encoded string value.
    876                   # When `exclude_from_indexes` is false (it is indexed) , may have at most 1500 bytes.
    877                   # Otherwise, may be set to at least 1,000,000 bytes.
    878               "blobValue": "A String", # A blob value.
    879                   # May have at most 1,000,000 bytes.
    880                   # When `exclude_from_indexes` is false, may have at most 1500 bytes.
    881                   # In JSON requests, must be base64-encoded.
    882               "booleanValue": True or False, # A boolean value.
    883               "arrayValue": { # An array value. # An array value.
    884                   # Cannot contain another array value.
    885                   # A `Value` instance that sets field `array_value` must not set fields
    886                   # `meaning` or `exclude_from_indexes`.
    887                 "values": [ # Values in the array.
    888                     # The order of this array may not be preserved if it contains a mix of
    889                     # indexed and unindexed values.
    890                   # Object with schema name: Value
    891                 ],
    892               },
    893               "integerValue": "A String", # An integer value.
    894               "nullValue": "A String", # A null value.
    895             },
    896           },
    897           "key": { # A unique identifier for an entity. # The entity's key.
    898               #
    899               # An entity must have a key, unless otherwise documented (for example,
    900               # an entity in `Value.entity_value` may have no key).
    901               # An entity's kind is its key path's last element's kind,
    902               # or null if it has no key.
    903               # If a key's partition ID or any of its path kinds or names are
    904               # reserved/read-only, the key is reserved/read-only.
    905               # A reserved/read-only key is forbidden in certain documented contexts.
    906             "path": [ # The entity path.
    907                 # An entity path consists of one or more elements composed of a kind and a
    908                 # string or numerical identifier, which identify entities. The first
    909                 # element identifies a _root entity_, the second element identifies
    910                 # a _child_ of the root entity, the third element identifies a child of the
    911                 # second entity, and so forth. The entities identified by all prefixes of
    912                 # the path are called the element's _ancestors_.
    913                 #
    914                 # An entity path is always fully complete: *all* of the entity's ancestors
    915                 # are required to be in the path along with the entity identifier itself.
    916                 # The only exception is that in some documented cases, the identifier in the
    917                 # last path element (for the entity) itself may be omitted. For example,
    918                 # the last path element of the key of `Mutation.insert` may have no
    919                 # identifier.
    920                 #
    921                 # A path can never be empty, and a path can have at most 100 elements.
    922               { # A (kind, ID/name) pair used to construct a key path.
    923                   #
    924                   # If either name or ID is set, the element is complete.
    925                   # If neither is set, the element is incomplete.
    926                 "kind": "A String", # The kind of the entity.
    927                     # A kind matching regex `__.*__` is reserved/read-only.
    928                     # A kind must not contain more than 1500 bytes when UTF-8 encoded.
    929                     # Cannot be `""`.
    930                 "id": "A String", # The auto-allocated ID of the entity.
    931                     # Never equal to zero. Values less than zero are discouraged and may not
    932                     # be supported in the future.
    933                 "name": "A String", # The name of the entity.
    934                     # A name matching regex `__.*__` is reserved/read-only.
    935                     # A name must not be more than 1500 bytes when UTF-8 encoded.
    936                     # Cannot be `""`.
    937               },
    938             ],
    939             "partitionId": { # A partition ID identifies a grouping of entities. The grouping is always # Entities are partitioned into subsets, currently identified by a project
    940                 # ID and namespace ID.
    941                 # Queries are scoped to a single partition.
    942                 # by project and namespace, however the namespace ID may be empty.
    943                 #
    944                 # A partition ID contains several dimensions:
    945                 # project ID and namespace ID.
    946                 #
    947                 # Partition dimensions:
    948                 #
    949                 # - May be `""`.
    950                 # - Must be valid UTF-8 bytes.
    951                 # - Must have values that match regex `[A-Za-z\d\.\-_]{1,100}`
    952                 # If the value of any dimension matches regex `__.*__`, the partition is
    953                 # reserved/read-only.
    954                 # A reserved/read-only partition ID is forbidden in certain documented
    955                 # contexts.
    956                 #
    957                 # Foreign partition IDs (in which the project ID does
    958                 # not match the context project ID ) are discouraged.
    959                 # Reads and writes of foreign partition IDs may fail if the project is not in an active state.
    960               "projectId": "A String", # The ID of the project to which the entities belong.
    961               "namespaceId": "A String", # If not empty, the ID of the namespace to which the entities belong.
    962             },
    963           },
    964         },
    965         "baseVersion": "A String", # The version of the entity that this mutation is being applied to. If this
    966             # does not match the current version on the server, the mutation conflicts.
    967         "delete": { # A unique identifier for an entity. # The key of the entity to delete. The entity may or may not already exist.
    968             # Must have a complete key path and must not be reserved/read-only.
    969             # If a key's partition ID or any of its path kinds or names are
    970             # reserved/read-only, the key is reserved/read-only.
    971             # A reserved/read-only key is forbidden in certain documented contexts.
    972           "path": [ # The entity path.
    973               # An entity path consists of one or more elements composed of a kind and a
    974               # string or numerical identifier, which identify entities. The first
    975               # element identifies a _root entity_, the second element identifies
    976               # a _child_ of the root entity, the third element identifies a child of the
    977               # second entity, and so forth. The entities identified by all prefixes of
    978               # the path are called the element's _ancestors_.
    979               #
    980               # An entity path is always fully complete: *all* of the entity's ancestors
    981               # are required to be in the path along with the entity identifier itself.
    982               # The only exception is that in some documented cases, the identifier in the
    983               # last path element (for the entity) itself may be omitted. For example,
    984               # the last path element of the key of `Mutation.insert` may have no
    985               # identifier.
    986               #
    987               # A path can never be empty, and a path can have at most 100 elements.
    988             { # A (kind, ID/name) pair used to construct a key path.
    989                 #
    990                 # If either name or ID is set, the element is complete.
    991                 # If neither is set, the element is incomplete.
    992               "kind": "A String", # The kind of the entity.
    993                   # A kind matching regex `__.*__` is reserved/read-only.
    994                   # A kind must not contain more than 1500 bytes when UTF-8 encoded.
    995                   # Cannot be `""`.
    996               "id": "A String", # The auto-allocated ID of the entity.
    997                   # Never equal to zero. Values less than zero are discouraged and may not
    998                   # be supported in the future.
    999               "name": "A String", # The name of the entity.
   1000                   # A name matching regex `__.*__` is reserved/read-only.
   1001                   # A name must not be more than 1500 bytes when UTF-8 encoded.
   1002                   # Cannot be `""`.
   1003             },
   1004           ],
   1005           "partitionId": { # A partition ID identifies a grouping of entities. The grouping is always # Entities are partitioned into subsets, currently identified by a project
   1006               # ID and namespace ID.
   1007               # Queries are scoped to a single partition.
   1008               # by project and namespace, however the namespace ID may be empty.
   1009               #
   1010               # A partition ID contains several dimensions:
   1011               # project ID and namespace ID.
   1012               #
   1013               # Partition dimensions:
   1014               #
   1015               # - May be `""`.
   1016               # - Must be valid UTF-8 bytes.
   1017               # - Must have values that match regex `[A-Za-z\d\.\-_]{1,100}`
   1018               # If the value of any dimension matches regex `__.*__`, the partition is
   1019               # reserved/read-only.
   1020               # A reserved/read-only partition ID is forbidden in certain documented
   1021               # contexts.
   1022               #
   1023               # Foreign partition IDs (in which the project ID does
   1024               # not match the context project ID ) are discouraged.
   1025               # Reads and writes of foreign partition IDs may fail if the project is not in an active state.
   1026             "projectId": "A String", # The ID of the project to which the entities belong.
   1027             "namespaceId": "A String", # If not empty, the ID of the namespace to which the entities belong.
   1028           },
   1029         },
   1030       },
   1031     ],
   1032   }
   1033 
   1034   x__xgafv: string, V1 error format.
   1035     Allowed values
   1036       1 - v1 error format
   1037       2 - v2 error format
   1038 
   1039 Returns:
   1040   An object of the form:
   1041 
   1042     { # The response for Datastore.Commit.
   1043     "mutationResults": [ # The result of performing the mutations.
   1044         # The i-th mutation result corresponds to the i-th mutation in the request.
   1045       { # The result of applying a mutation.
   1046         "version": "A String", # The version of the entity on the server after processing the mutation. If
   1047             # the mutation doesn't change anything on the server, then the version will
   1048             # be the version of the current entity or, if no entity is present, a version
   1049             # that is strictly greater than the version of any previous entity and less
   1050             # than the version of any possible future entity.
   1051         "conflictDetected": True or False, # Whether a conflict was detected for this mutation. Always false when a
   1052             # conflict detection strategy field is not set in the mutation.
   1053         "key": { # A unique identifier for an entity. # The automatically allocated key.
   1054             # Set only when the mutation allocated a key.
   1055             # If a key's partition ID or any of its path kinds or names are
   1056             # reserved/read-only, the key is reserved/read-only.
   1057             # A reserved/read-only key is forbidden in certain documented contexts.
   1058           "path": [ # The entity path.
   1059               # An entity path consists of one or more elements composed of a kind and a
   1060               # string or numerical identifier, which identify entities. The first
   1061               # element identifies a _root entity_, the second element identifies
   1062               # a _child_ of the root entity, the third element identifies a child of the
   1063               # second entity, and so forth. The entities identified by all prefixes of
   1064               # the path are called the element's _ancestors_.
   1065               #
   1066               # An entity path is always fully complete: *all* of the entity's ancestors
   1067               # are required to be in the path along with the entity identifier itself.
   1068               # The only exception is that in some documented cases, the identifier in the
   1069               # last path element (for the entity) itself may be omitted. For example,
   1070               # the last path element of the key of `Mutation.insert` may have no
   1071               # identifier.
   1072               #
   1073               # A path can never be empty, and a path can have at most 100 elements.
   1074             { # A (kind, ID/name) pair used to construct a key path.
   1075                 #
   1076                 # If either name or ID is set, the element is complete.
   1077                 # If neither is set, the element is incomplete.
   1078               "kind": "A String", # The kind of the entity.
   1079                   # A kind matching regex `__.*__` is reserved/read-only.
   1080                   # A kind must not contain more than 1500 bytes when UTF-8 encoded.
   1081                   # Cannot be `""`.
   1082               "id": "A String", # The auto-allocated ID of the entity.
   1083                   # Never equal to zero. Values less than zero are discouraged and may not
   1084                   # be supported in the future.
   1085               "name": "A String", # The name of the entity.
   1086                   # A name matching regex `__.*__` is reserved/read-only.
   1087                   # A name must not be more than 1500 bytes when UTF-8 encoded.
   1088                   # Cannot be `""`.
   1089             },
   1090           ],
   1091           "partitionId": { # A partition ID identifies a grouping of entities. The grouping is always # Entities are partitioned into subsets, currently identified by a project
   1092               # ID and namespace ID.
   1093               # Queries are scoped to a single partition.
   1094               # by project and namespace, however the namespace ID may be empty.
   1095               #
   1096               # A partition ID contains several dimensions:
   1097               # project ID and namespace ID.
   1098               #
   1099               # Partition dimensions:
   1100               #
   1101               # - May be `""`.
   1102               # - Must be valid UTF-8 bytes.
   1103               # - Must have values that match regex `[A-Za-z\d\.\-_]{1,100}`
   1104               # If the value of any dimension matches regex `__.*__`, the partition is
   1105               # reserved/read-only.
   1106               # A reserved/read-only partition ID is forbidden in certain documented
   1107               # contexts.
   1108               #
   1109               # Foreign partition IDs (in which the project ID does
   1110               # not match the context project ID ) are discouraged.
   1111               # Reads and writes of foreign partition IDs may fail if the project is not in an active state.
   1112             "projectId": "A String", # The ID of the project to which the entities belong.
   1113             "namespaceId": "A String", # If not empty, the ID of the namespace to which the entities belong.
   1114           },
   1115         },
   1116       },
   1117     ],
   1118     "indexUpdates": 42, # The number of index entries updated during the commit, or zero if none were
   1119         # updated.
   1120   }</pre>
   1121 </div>
   1122 
   1123 <div class="method">
   1124     <code class="details" id="lookup">lookup(projectId, body, x__xgafv=None)</code>
   1125   <pre>Looks up entities by key.
   1126 
   1127 Args:
   1128   projectId: string, The ID of the project against which to make the request. (required)
   1129   body: object, The request body. (required)
   1130     The object takes the form of:
   1131 
   1132 { # The request for Datastore.Lookup.
   1133     "keys": [ # Keys of entities to look up.
   1134       { # A unique identifier for an entity.
   1135           # If a key's partition ID or any of its path kinds or names are
   1136           # reserved/read-only, the key is reserved/read-only.
   1137           # A reserved/read-only key is forbidden in certain documented contexts.
   1138         "path": [ # The entity path.
   1139             # An entity path consists of one or more elements composed of a kind and a
   1140             # string or numerical identifier, which identify entities. The first
   1141             # element identifies a _root entity_, the second element identifies
   1142             # a _child_ of the root entity, the third element identifies a child of the
   1143             # second entity, and so forth. The entities identified by all prefixes of
   1144             # the path are called the element's _ancestors_.
   1145             #
   1146             # An entity path is always fully complete: *all* of the entity's ancestors
   1147             # are required to be in the path along with the entity identifier itself.
   1148             # The only exception is that in some documented cases, the identifier in the
   1149             # last path element (for the entity) itself may be omitted. For example,
   1150             # the last path element of the key of `Mutation.insert` may have no
   1151             # identifier.
   1152             #
   1153             # A path can never be empty, and a path can have at most 100 elements.
   1154           { # A (kind, ID/name) pair used to construct a key path.
   1155               #
   1156               # If either name or ID is set, the element is complete.
   1157               # If neither is set, the element is incomplete.
   1158             "kind": "A String", # The kind of the entity.
   1159                 # A kind matching regex `__.*__` is reserved/read-only.
   1160                 # A kind must not contain more than 1500 bytes when UTF-8 encoded.
   1161                 # Cannot be `""`.
   1162             "id": "A String", # The auto-allocated ID of the entity.
   1163                 # Never equal to zero. Values less than zero are discouraged and may not
   1164                 # be supported in the future.
   1165             "name": "A String", # The name of the entity.
   1166                 # A name matching regex `__.*__` is reserved/read-only.
   1167                 # A name must not be more than 1500 bytes when UTF-8 encoded.
   1168                 # Cannot be `""`.
   1169           },
   1170         ],
   1171         "partitionId": { # A partition ID identifies a grouping of entities. The grouping is always # Entities are partitioned into subsets, currently identified by a project
   1172             # ID and namespace ID.
   1173             # Queries are scoped to a single partition.
   1174             # by project and namespace, however the namespace ID may be empty.
   1175             #
   1176             # A partition ID contains several dimensions:
   1177             # project ID and namespace ID.
   1178             #
   1179             # Partition dimensions:
   1180             #
   1181             # - May be `""`.
   1182             # - Must be valid UTF-8 bytes.
   1183             # - Must have values that match regex `[A-Za-z\d\.\-_]{1,100}`
   1184             # If the value of any dimension matches regex `__.*__`, the partition is
   1185             # reserved/read-only.
   1186             # A reserved/read-only partition ID is forbidden in certain documented
   1187             # contexts.
   1188             #
   1189             # Foreign partition IDs (in which the project ID does
   1190             # not match the context project ID ) are discouraged.
   1191             # Reads and writes of foreign partition IDs may fail if the project is not in an active state.
   1192           "projectId": "A String", # The ID of the project to which the entities belong.
   1193           "namespaceId": "A String", # If not empty, the ID of the namespace to which the entities belong.
   1194         },
   1195       },
   1196     ],
   1197     "readOptions": { # The options shared by read requests. # The options for this lookup request.
   1198       "transaction": "A String", # The identifier of the transaction in which to read. A
   1199           # transaction identifier is returned by a call to
   1200           # Datastore.BeginTransaction.
   1201       "readConsistency": "A String", # The non-transactional read consistency to use.
   1202           # Cannot be set to `STRONG` for global queries.
   1203     },
   1204   }
   1205 
   1206   x__xgafv: string, V1 error format.
   1207     Allowed values
   1208       1 - v1 error format
   1209       2 - v2 error format
   1210 
   1211 Returns:
   1212   An object of the form:
   1213 
   1214     { # The response for Datastore.Lookup.
   1215     "found": [ # Entities found as `ResultType.FULL` entities. The order of results in this
   1216         # field is undefined and has no relation to the order of the keys in the
   1217         # input.
   1218       { # The result of fetching an entity from Datastore.
   1219         "cursor": "A String", # A cursor that points to the position after the result entity.
   1220             # Set only when the `EntityResult` is part of a `QueryResultBatch` message.
   1221         "version": "A String", # The version of the entity, a strictly positive number that monotonically
   1222             # increases with changes to the entity.
   1223             #
   1224             # This field is set for `FULL` entity
   1225             # results.
   1226             #
   1227             # For missing entities in `LookupResponse`, this
   1228             # is the version of the snapshot that was used to look up the entity, and it
   1229             # is always set except for eventually consistent reads.
   1230         "entity": { # A Datastore data object. # The resulting entity.
   1231             #
   1232             # An entity is limited to 1 megabyte when stored. That _roughly_
   1233             # corresponds to a limit of 1 megabyte for the serialized form of this
   1234             # message.
   1235           "properties": { # The entity's properties.
   1236               # The map's keys are property names.
   1237               # A property name matching regex `__.*__` is reserved.
   1238               # A reserved property name is forbidden in certain documented contexts.
   1239               # The name must not contain more than 500 characters.
   1240               # The name cannot be `""`.
   1241             "a_key": { # A message that can hold any of the supported value types and associated
   1242                 # metadata.
   1243               "entityValue": # Object with schema name: Entity # An entity value.
   1244                   #
   1245                   # - May have no key.
   1246                   # - May have a key with an incomplete key path.
   1247                   # - May have a reserved/read-only key.
   1248               "timestampValue": "A String", # A timestamp value.
   1249                   # When stored in the Datastore, precise only to microseconds;
   1250                   # any additional precision is rounded down.
   1251               "geoPointValue": { # An object representing a latitude/longitude pair. This is expressed as a pair # A geo point value representing a point on the surface of Earth.
   1252                   # of doubles representing degrees latitude and degrees longitude. Unless
   1253                   # specified otherwise, this must conform to the
   1254                   # <a href="http://www.unoosa.org/pdf/icg/2012/template/WGS_84.pdf">WGS84
   1255                   # standard</a>. Values must be within normalized ranges.
   1256                   #
   1257                   # Example of normalization code in Python:
   1258                   #
   1259                   #     def NormalizeLongitude(longitude):
   1260                   #       """Wraps decimal degrees longitude to [-180.0, 180.0]."""
   1261                   #       q, r = divmod(longitude, 360.0)
   1262                   #       if r > 180.0 or (r == 180.0 and q <= -1.0):
   1263                   #         return r - 360.0
   1264                   #       return r
   1265                   #
   1266                   #     def NormalizeLatLng(latitude, longitude):
   1267                   #       """Wraps decimal degrees latitude and longitude to
   1268                   #       [-90.0, 90.0] and [-180.0, 180.0], respectively."""
   1269                   #       r = latitude % 360.0
   1270                   #       if r <= 90.0:
   1271                   #         return r, NormalizeLongitude(longitude)
   1272                   #       elif r >= 270.0:
   1273                   #         return r - 360, NormalizeLongitude(longitude)
   1274                   #       else:
   1275                   #         return 180 - r, NormalizeLongitude(longitude + 180.0)
   1276                   #
   1277                   #     assert 180.0 == NormalizeLongitude(180.0)
   1278                   #     assert -180.0 == NormalizeLongitude(-180.0)
   1279                   #     assert -179.0 == NormalizeLongitude(181.0)
   1280                   #     assert (0.0, 0.0) == NormalizeLatLng(360.0, 0.0)
   1281                   #     assert (0.0, 0.0) == NormalizeLatLng(-360.0, 0.0)
   1282                   #     assert (85.0, 180.0) == NormalizeLatLng(95.0, 0.0)
   1283                   #     assert (-85.0, -170.0) == NormalizeLatLng(-95.0, 10.0)
   1284                   #     assert (90.0, 10.0) == NormalizeLatLng(90.0, 10.0)
   1285                   #     assert (-90.0, -10.0) == NormalizeLatLng(-90.0, -10.0)
   1286                   #     assert (0.0, -170.0) == NormalizeLatLng(-180.0, 10.0)
   1287                   #     assert (0.0, -170.0) == NormalizeLatLng(180.0, 10.0)
   1288                   #     assert (-90.0, 10.0) == NormalizeLatLng(270.0, 10.0)
   1289                   #     assert (90.0, 10.0) == NormalizeLatLng(-270.0, 10.0)
   1290                 "latitude": 3.14, # The latitude in degrees. It must be in the range [-90.0, +90.0].
   1291                 "longitude": 3.14, # The longitude in degrees. It must be in the range [-180.0, +180.0].
   1292               },
   1293               "doubleValue": 3.14, # A double value.
   1294               "meaning": 42, # The `meaning` field should only be populated for backwards compatibility.
   1295               "excludeFromIndexes": True or False, # If the value should be excluded from all indexes including those defined
   1296                   # explicitly.
   1297               "keyValue": { # A unique identifier for an entity. # A key value.
   1298                   # If a key's partition ID or any of its path kinds or names are
   1299                   # reserved/read-only, the key is reserved/read-only.
   1300                   # A reserved/read-only key is forbidden in certain documented contexts.
   1301                 "path": [ # The entity path.
   1302                     # An entity path consists of one or more elements composed of a kind and a
   1303                     # string or numerical identifier, which identify entities. The first
   1304                     # element identifies a _root entity_, the second element identifies
   1305                     # a _child_ of the root entity, the third element identifies a child of the
   1306                     # second entity, and so forth. The entities identified by all prefixes of
   1307                     # the path are called the element's _ancestors_.
   1308                     #
   1309                     # An entity path is always fully complete: *all* of the entity's ancestors
   1310                     # are required to be in the path along with the entity identifier itself.
   1311                     # The only exception is that in some documented cases, the identifier in the
   1312                     # last path element (for the entity) itself may be omitted. For example,
   1313                     # the last path element of the key of `Mutation.insert` may have no
   1314                     # identifier.
   1315                     #
   1316                     # A path can never be empty, and a path can have at most 100 elements.
   1317                   { # A (kind, ID/name) pair used to construct a key path.
   1318                       #
   1319                       # If either name or ID is set, the element is complete.
   1320                       # If neither is set, the element is incomplete.
   1321                     "kind": "A String", # The kind of the entity.
   1322                         # A kind matching regex `__.*__` is reserved/read-only.
   1323                         # A kind must not contain more than 1500 bytes when UTF-8 encoded.
   1324                         # Cannot be `""`.
   1325                     "id": "A String", # The auto-allocated ID of the entity.
   1326                         # Never equal to zero. Values less than zero are discouraged and may not
   1327                         # be supported in the future.
   1328                     "name": "A String", # The name of the entity.
   1329                         # A name matching regex `__.*__` is reserved/read-only.
   1330                         # A name must not be more than 1500 bytes when UTF-8 encoded.
   1331                         # Cannot be `""`.
   1332                   },
   1333                 ],
   1334                 "partitionId": { # A partition ID identifies a grouping of entities. The grouping is always # Entities are partitioned into subsets, currently identified by a project
   1335                     # ID and namespace ID.
   1336                     # Queries are scoped to a single partition.
   1337                     # by project and namespace, however the namespace ID may be empty.
   1338                     #
   1339                     # A partition ID contains several dimensions:
   1340                     # project ID and namespace ID.
   1341                     #
   1342                     # Partition dimensions:
   1343                     #
   1344                     # - May be `""`.
   1345                     # - Must be valid UTF-8 bytes.
   1346                     # - Must have values that match regex `[A-Za-z\d\.\-_]{1,100}`
   1347                     # If the value of any dimension matches regex `__.*__`, the partition is
   1348                     # reserved/read-only.
   1349                     # A reserved/read-only partition ID is forbidden in certain documented
   1350                     # contexts.
   1351                     #
   1352                     # Foreign partition IDs (in which the project ID does
   1353                     # not match the context project ID ) are discouraged.
   1354                     # Reads and writes of foreign partition IDs may fail if the project is not in an active state.
   1355                   "projectId": "A String", # The ID of the project to which the entities belong.
   1356                   "namespaceId": "A String", # If not empty, the ID of the namespace to which the entities belong.
   1357                 },
   1358               },
   1359               "stringValue": "A String", # A UTF-8 encoded string value.
   1360                   # When `exclude_from_indexes` is false (it is indexed) , may have at most 1500 bytes.
   1361                   # Otherwise, may be set to at least 1,000,000 bytes.
   1362               "blobValue": "A String", # A blob value.
   1363                   # May have at most 1,000,000 bytes.
   1364                   # When `exclude_from_indexes` is false, may have at most 1500 bytes.
   1365                   # In JSON requests, must be base64-encoded.
   1366               "booleanValue": True or False, # A boolean value.
   1367               "arrayValue": { # An array value. # An array value.
   1368                   # Cannot contain another array value.
   1369                   # A `Value` instance that sets field `array_value` must not set fields
   1370                   # `meaning` or `exclude_from_indexes`.
   1371                 "values": [ # Values in the array.
   1372                     # The order of this array may not be preserved if it contains a mix of
   1373                     # indexed and unindexed values.
   1374                   # Object with schema name: Value
   1375                 ],
   1376               },
   1377               "integerValue": "A String", # An integer value.
   1378               "nullValue": "A String", # A null value.
   1379             },
   1380           },
   1381           "key": { # A unique identifier for an entity. # The entity's key.
   1382               #
   1383               # An entity must have a key, unless otherwise documented (for example,
   1384               # an entity in `Value.entity_value` may have no key).
   1385               # An entity's kind is its key path's last element's kind,
   1386               # or null if it has no key.
   1387               # If a key's partition ID or any of its path kinds or names are
   1388               # reserved/read-only, the key is reserved/read-only.
   1389               # A reserved/read-only key is forbidden in certain documented contexts.
   1390             "path": [ # The entity path.
   1391                 # An entity path consists of one or more elements composed of a kind and a
   1392                 # string or numerical identifier, which identify entities. The first
   1393                 # element identifies a _root entity_, the second element identifies
   1394                 # a _child_ of the root entity, the third element identifies a child of the
   1395                 # second entity, and so forth. The entities identified by all prefixes of
   1396                 # the path are called the element's _ancestors_.
   1397                 #
   1398                 # An entity path is always fully complete: *all* of the entity's ancestors
   1399                 # are required to be in the path along with the entity identifier itself.
   1400                 # The only exception is that in some documented cases, the identifier in the
   1401                 # last path element (for the entity) itself may be omitted. For example,
   1402                 # the last path element of the key of `Mutation.insert` may have no
   1403                 # identifier.
   1404                 #
   1405                 # A path can never be empty, and a path can have at most 100 elements.
   1406               { # A (kind, ID/name) pair used to construct a key path.
   1407                   #
   1408                   # If either name or ID is set, the element is complete.
   1409                   # If neither is set, the element is incomplete.
   1410                 "kind": "A String", # The kind of the entity.
   1411                     # A kind matching regex `__.*__` is reserved/read-only.
   1412                     # A kind must not contain more than 1500 bytes when UTF-8 encoded.
   1413                     # Cannot be `""`.
   1414                 "id": "A String", # The auto-allocated ID of the entity.
   1415                     # Never equal to zero. Values less than zero are discouraged and may not
   1416                     # be supported in the future.
   1417                 "name": "A String", # The name of the entity.
   1418                     # A name matching regex `__.*__` is reserved/read-only.
   1419                     # A name must not be more than 1500 bytes when UTF-8 encoded.
   1420                     # Cannot be `""`.
   1421               },
   1422             ],
   1423             "partitionId": { # A partition ID identifies a grouping of entities. The grouping is always # Entities are partitioned into subsets, currently identified by a project
   1424                 # ID and namespace ID.
   1425                 # Queries are scoped to a single partition.
   1426                 # by project and namespace, however the namespace ID may be empty.
   1427                 #
   1428                 # A partition ID contains several dimensions:
   1429                 # project ID and namespace ID.
   1430                 #
   1431                 # Partition dimensions:
   1432                 #
   1433                 # - May be `""`.
   1434                 # - Must be valid UTF-8 bytes.
   1435                 # - Must have values that match regex `[A-Za-z\d\.\-_]{1,100}`
   1436                 # If the value of any dimension matches regex `__.*__`, the partition is
   1437                 # reserved/read-only.
   1438                 # A reserved/read-only partition ID is forbidden in certain documented
   1439                 # contexts.
   1440                 #
   1441                 # Foreign partition IDs (in which the project ID does
   1442                 # not match the context project ID ) are discouraged.
   1443                 # Reads and writes of foreign partition IDs may fail if the project is not in an active state.
   1444               "projectId": "A String", # The ID of the project to which the entities belong.
   1445               "namespaceId": "A String", # If not empty, the ID of the namespace to which the entities belong.
   1446             },
   1447           },
   1448         },
   1449       },
   1450     ],
   1451     "deferred": [ # A list of keys that were not looked up due to resource constraints. The
   1452         # order of results in this field is undefined and has no relation to the
   1453         # order of the keys in the input.
   1454       { # A unique identifier for an entity.
   1455           # If a key's partition ID or any of its path kinds or names are
   1456           # reserved/read-only, the key is reserved/read-only.
   1457           # A reserved/read-only key is forbidden in certain documented contexts.
   1458         "path": [ # The entity path.
   1459             # An entity path consists of one or more elements composed of a kind and a
   1460             # string or numerical identifier, which identify entities. The first
   1461             # element identifies a _root entity_, the second element identifies
   1462             # a _child_ of the root entity, the third element identifies a child of the
   1463             # second entity, and so forth. The entities identified by all prefixes of
   1464             # the path are called the element's _ancestors_.
   1465             #
   1466             # An entity path is always fully complete: *all* of the entity's ancestors
   1467             # are required to be in the path along with the entity identifier itself.
   1468             # The only exception is that in some documented cases, the identifier in the
   1469             # last path element (for the entity) itself may be omitted. For example,
   1470             # the last path element of the key of `Mutation.insert` may have no
   1471             # identifier.
   1472             #
   1473             # A path can never be empty, and a path can have at most 100 elements.
   1474           { # A (kind, ID/name) pair used to construct a key path.
   1475               #
   1476               # If either name or ID is set, the element is complete.
   1477               # If neither is set, the element is incomplete.
   1478             "kind": "A String", # The kind of the entity.
   1479                 # A kind matching regex `__.*__` is reserved/read-only.
   1480                 # A kind must not contain more than 1500 bytes when UTF-8 encoded.
   1481                 # Cannot be `""`.
   1482             "id": "A String", # The auto-allocated ID of the entity.
   1483                 # Never equal to zero. Values less than zero are discouraged and may not
   1484                 # be supported in the future.
   1485             "name": "A String", # The name of the entity.
   1486                 # A name matching regex `__.*__` is reserved/read-only.
   1487                 # A name must not be more than 1500 bytes when UTF-8 encoded.
   1488                 # Cannot be `""`.
   1489           },
   1490         ],
   1491         "partitionId": { # A partition ID identifies a grouping of entities. The grouping is always # Entities are partitioned into subsets, currently identified by a project
   1492             # ID and namespace ID.
   1493             # Queries are scoped to a single partition.
   1494             # by project and namespace, however the namespace ID may be empty.
   1495             #
   1496             # A partition ID contains several dimensions:
   1497             # project ID and namespace ID.
   1498             #
   1499             # Partition dimensions:
   1500             #
   1501             # - May be `""`.
   1502             # - Must be valid UTF-8 bytes.
   1503             # - Must have values that match regex `[A-Za-z\d\.\-_]{1,100}`
   1504             # If the value of any dimension matches regex `__.*__`, the partition is
   1505             # reserved/read-only.
   1506             # A reserved/read-only partition ID is forbidden in certain documented
   1507             # contexts.
   1508             #
   1509             # Foreign partition IDs (in which the project ID does
   1510             # not match the context project ID ) are discouraged.
   1511             # Reads and writes of foreign partition IDs may fail if the project is not in an active state.
   1512           "projectId": "A String", # The ID of the project to which the entities belong.
   1513           "namespaceId": "A String", # If not empty, the ID of the namespace to which the entities belong.
   1514         },
   1515       },
   1516     ],
   1517     "missing": [ # Entities not found as `ResultType.KEY_ONLY` entities. The order of results
   1518         # in this field is undefined and has no relation to the order of the keys
   1519         # in the input.
   1520       { # The result of fetching an entity from Datastore.
   1521         "cursor": "A String", # A cursor that points to the position after the result entity.
   1522             # Set only when the `EntityResult` is part of a `QueryResultBatch` message.
   1523         "version": "A String", # The version of the entity, a strictly positive number that monotonically
   1524             # increases with changes to the entity.
   1525             #
   1526             # This field is set for `FULL` entity
   1527             # results.
   1528             #
   1529             # For missing entities in `LookupResponse`, this
   1530             # is the version of the snapshot that was used to look up the entity, and it
   1531             # is always set except for eventually consistent reads.
   1532         "entity": { # A Datastore data object. # The resulting entity.
   1533             #
   1534             # An entity is limited to 1 megabyte when stored. That _roughly_
   1535             # corresponds to a limit of 1 megabyte for the serialized form of this
   1536             # message.
   1537           "properties": { # The entity's properties.
   1538               # The map's keys are property names.
   1539               # A property name matching regex `__.*__` is reserved.
   1540               # A reserved property name is forbidden in certain documented contexts.
   1541               # The name must not contain more than 500 characters.
   1542               # The name cannot be `""`.
   1543             "a_key": { # A message that can hold any of the supported value types and associated
   1544                 # metadata.
   1545               "entityValue": # Object with schema name: Entity # An entity value.
   1546                   #
   1547                   # - May have no key.
   1548                   # - May have a key with an incomplete key path.
   1549                   # - May have a reserved/read-only key.
   1550               "timestampValue": "A String", # A timestamp value.
   1551                   # When stored in the Datastore, precise only to microseconds;
   1552                   # any additional precision is rounded down.
   1553               "geoPointValue": { # An object representing a latitude/longitude pair. This is expressed as a pair # A geo point value representing a point on the surface of Earth.
   1554                   # of doubles representing degrees latitude and degrees longitude. Unless
   1555                   # specified otherwise, this must conform to the
   1556                   # <a href="http://www.unoosa.org/pdf/icg/2012/template/WGS_84.pdf">WGS84
   1557                   # standard</a>. Values must be within normalized ranges.
   1558                   #
   1559                   # Example of normalization code in Python:
   1560                   #
   1561                   #     def NormalizeLongitude(longitude):
   1562                   #       """Wraps decimal degrees longitude to [-180.0, 180.0]."""
   1563                   #       q, r = divmod(longitude, 360.0)
   1564                   #       if r > 180.0 or (r == 180.0 and q <= -1.0):
   1565                   #         return r - 360.0
   1566                   #       return r
   1567                   #
   1568                   #     def NormalizeLatLng(latitude, longitude):
   1569                   #       """Wraps decimal degrees latitude and longitude to
   1570                   #       [-90.0, 90.0] and [-180.0, 180.0], respectively."""
   1571                   #       r = latitude % 360.0
   1572                   #       if r <= 90.0:
   1573                   #         return r, NormalizeLongitude(longitude)
   1574                   #       elif r >= 270.0:
   1575                   #         return r - 360, NormalizeLongitude(longitude)
   1576                   #       else:
   1577                   #         return 180 - r, NormalizeLongitude(longitude + 180.0)
   1578                   #
   1579                   #     assert 180.0 == NormalizeLongitude(180.0)
   1580                   #     assert -180.0 == NormalizeLongitude(-180.0)
   1581                   #     assert -179.0 == NormalizeLongitude(181.0)
   1582                   #     assert (0.0, 0.0) == NormalizeLatLng(360.0, 0.0)
   1583                   #     assert (0.0, 0.0) == NormalizeLatLng(-360.0, 0.0)
   1584                   #     assert (85.0, 180.0) == NormalizeLatLng(95.0, 0.0)
   1585                   #     assert (-85.0, -170.0) == NormalizeLatLng(-95.0, 10.0)
   1586                   #     assert (90.0, 10.0) == NormalizeLatLng(90.0, 10.0)
   1587                   #     assert (-90.0, -10.0) == NormalizeLatLng(-90.0, -10.0)
   1588                   #     assert (0.0, -170.0) == NormalizeLatLng(-180.0, 10.0)
   1589                   #     assert (0.0, -170.0) == NormalizeLatLng(180.0, 10.0)
   1590                   #     assert (-90.0, 10.0) == NormalizeLatLng(270.0, 10.0)
   1591                   #     assert (90.0, 10.0) == NormalizeLatLng(-270.0, 10.0)
   1592                 "latitude": 3.14, # The latitude in degrees. It must be in the range [-90.0, +90.0].
   1593                 "longitude": 3.14, # The longitude in degrees. It must be in the range [-180.0, +180.0].
   1594               },
   1595               "doubleValue": 3.14, # A double value.
   1596               "meaning": 42, # The `meaning` field should only be populated for backwards compatibility.
   1597               "excludeFromIndexes": True or False, # If the value should be excluded from all indexes including those defined
   1598                   # explicitly.
   1599               "keyValue": { # A unique identifier for an entity. # A key value.
   1600                   # If a key's partition ID or any of its path kinds or names are
   1601                   # reserved/read-only, the key is reserved/read-only.
   1602                   # A reserved/read-only key is forbidden in certain documented contexts.
   1603                 "path": [ # The entity path.
   1604                     # An entity path consists of one or more elements composed of a kind and a
   1605                     # string or numerical identifier, which identify entities. The first
   1606                     # element identifies a _root entity_, the second element identifies
   1607                     # a _child_ of the root entity, the third element identifies a child of the
   1608                     # second entity, and so forth. The entities identified by all prefixes of
   1609                     # the path are called the element's _ancestors_.
   1610                     #
   1611                     # An entity path is always fully complete: *all* of the entity's ancestors
   1612                     # are required to be in the path along with the entity identifier itself.
   1613                     # The only exception is that in some documented cases, the identifier in the
   1614                     # last path element (for the entity) itself may be omitted. For example,
   1615                     # the last path element of the key of `Mutation.insert` may have no
   1616                     # identifier.
   1617                     #
   1618                     # A path can never be empty, and a path can have at most 100 elements.
   1619                   { # A (kind, ID/name) pair used to construct a key path.
   1620                       #
   1621                       # If either name or ID is set, the element is complete.
   1622                       # If neither is set, the element is incomplete.
   1623                     "kind": "A String", # The kind of the entity.
   1624                         # A kind matching regex `__.*__` is reserved/read-only.
   1625                         # A kind must not contain more than 1500 bytes when UTF-8 encoded.
   1626                         # Cannot be `""`.
   1627                     "id": "A String", # The auto-allocated ID of the entity.
   1628                         # Never equal to zero. Values less than zero are discouraged and may not
   1629                         # be supported in the future.
   1630                     "name": "A String", # The name of the entity.
   1631                         # A name matching regex `__.*__` is reserved/read-only.
   1632                         # A name must not be more than 1500 bytes when UTF-8 encoded.
   1633                         # Cannot be `""`.
   1634                   },
   1635                 ],
   1636                 "partitionId": { # A partition ID identifies a grouping of entities. The grouping is always # Entities are partitioned into subsets, currently identified by a project
   1637                     # ID and namespace ID.
   1638                     # Queries are scoped to a single partition.
   1639                     # by project and namespace, however the namespace ID may be empty.
   1640                     #
   1641                     # A partition ID contains several dimensions:
   1642                     # project ID and namespace ID.
   1643                     #
   1644                     # Partition dimensions:
   1645                     #
   1646                     # - May be `""`.
   1647                     # - Must be valid UTF-8 bytes.
   1648                     # - Must have values that match regex `[A-Za-z\d\.\-_]{1,100}`
   1649                     # If the value of any dimension matches regex `__.*__`, the partition is
   1650                     # reserved/read-only.
   1651                     # A reserved/read-only partition ID is forbidden in certain documented
   1652                     # contexts.
   1653                     #
   1654                     # Foreign partition IDs (in which the project ID does
   1655                     # not match the context project ID ) are discouraged.
   1656                     # Reads and writes of foreign partition IDs may fail if the project is not in an active state.
   1657                   "projectId": "A String", # The ID of the project to which the entities belong.
   1658                   "namespaceId": "A String", # If not empty, the ID of the namespace to which the entities belong.
   1659                 },
   1660               },
   1661               "stringValue": "A String", # A UTF-8 encoded string value.
   1662                   # When `exclude_from_indexes` is false (it is indexed) , may have at most 1500 bytes.
   1663                   # Otherwise, may be set to at least 1,000,000 bytes.
   1664               "blobValue": "A String", # A blob value.
   1665                   # May have at most 1,000,000 bytes.
   1666                   # When `exclude_from_indexes` is false, may have at most 1500 bytes.
   1667                   # In JSON requests, must be base64-encoded.
   1668               "booleanValue": True or False, # A boolean value.
   1669               "arrayValue": { # An array value. # An array value.
   1670                   # Cannot contain another array value.
   1671                   # A `Value` instance that sets field `array_value` must not set fields
   1672                   # `meaning` or `exclude_from_indexes`.
   1673                 "values": [ # Values in the array.
   1674                     # The order of this array may not be preserved if it contains a mix of
   1675                     # indexed and unindexed values.
   1676                   # Object with schema name: Value
   1677                 ],
   1678               },
   1679               "integerValue": "A String", # An integer value.
   1680               "nullValue": "A String", # A null value.
   1681             },
   1682           },
   1683           "key": { # A unique identifier for an entity. # The entity's key.
   1684               #
   1685               # An entity must have a key, unless otherwise documented (for example,
   1686               # an entity in `Value.entity_value` may have no key).
   1687               # An entity's kind is its key path's last element's kind,
   1688               # or null if it has no key.
   1689               # If a key's partition ID or any of its path kinds or names are
   1690               # reserved/read-only, the key is reserved/read-only.
   1691               # A reserved/read-only key is forbidden in certain documented contexts.
   1692             "path": [ # The entity path.
   1693                 # An entity path consists of one or more elements composed of a kind and a
   1694                 # string or numerical identifier, which identify entities. The first
   1695                 # element identifies a _root entity_, the second element identifies
   1696                 # a _child_ of the root entity, the third element identifies a child of the
   1697                 # second entity, and so forth. The entities identified by all prefixes of
   1698                 # the path are called the element's _ancestors_.
   1699                 #
   1700                 # An entity path is always fully complete: *all* of the entity's ancestors
   1701                 # are required to be in the path along with the entity identifier itself.
   1702                 # The only exception is that in some documented cases, the identifier in the
   1703                 # last path element (for the entity) itself may be omitted. For example,
   1704                 # the last path element of the key of `Mutation.insert` may have no
   1705                 # identifier.
   1706                 #
   1707                 # A path can never be empty, and a path can have at most 100 elements.
   1708               { # A (kind, ID/name) pair used to construct a key path.
   1709                   #
   1710                   # If either name or ID is set, the element is complete.
   1711                   # If neither is set, the element is incomplete.
   1712                 "kind": "A String", # The kind of the entity.
   1713                     # A kind matching regex `__.*__` is reserved/read-only.
   1714                     # A kind must not contain more than 1500 bytes when UTF-8 encoded.
   1715                     # Cannot be `""`.
   1716                 "id": "A String", # The auto-allocated ID of the entity.
   1717                     # Never equal to zero. Values less than zero are discouraged and may not
   1718                     # be supported in the future.
   1719                 "name": "A String", # The name of the entity.
   1720                     # A name matching regex `__.*__` is reserved/read-only.
   1721                     # A name must not be more than 1500 bytes when UTF-8 encoded.
   1722                     # Cannot be `""`.
   1723               },
   1724             ],
   1725             "partitionId": { # A partition ID identifies a grouping of entities. The grouping is always # Entities are partitioned into subsets, currently identified by a project
   1726                 # ID and namespace ID.
   1727                 # Queries are scoped to a single partition.
   1728                 # by project and namespace, however the namespace ID may be empty.
   1729                 #
   1730                 # A partition ID contains several dimensions:
   1731                 # project ID and namespace ID.
   1732                 #
   1733                 # Partition dimensions:
   1734                 #
   1735                 # - May be `""`.
   1736                 # - Must be valid UTF-8 bytes.
   1737                 # - Must have values that match regex `[A-Za-z\d\.\-_]{1,100}`
   1738                 # If the value of any dimension matches regex `__.*__`, the partition is
   1739                 # reserved/read-only.
   1740                 # A reserved/read-only partition ID is forbidden in certain documented
   1741                 # contexts.
   1742                 #
   1743                 # Foreign partition IDs (in which the project ID does
   1744                 # not match the context project ID ) are discouraged.
   1745                 # Reads and writes of foreign partition IDs may fail if the project is not in an active state.
   1746               "projectId": "A String", # The ID of the project to which the entities belong.
   1747               "namespaceId": "A String", # If not empty, the ID of the namespace to which the entities belong.
   1748             },
   1749           },
   1750         },
   1751       },
   1752     ],
   1753   }</pre>
   1754 </div>
   1755 
   1756 <div class="method">
   1757     <code class="details" id="rollback">rollback(projectId, body, x__xgafv=None)</code>
   1758   <pre>Rolls back a transaction.
   1759 
   1760 Args:
   1761   projectId: string, The ID of the project against which to make the request. (required)
   1762   body: object, The request body. (required)
   1763     The object takes the form of:
   1764 
   1765 { # The request for Datastore.Rollback.
   1766     "transaction": "A String", # The transaction identifier, returned by a call to
   1767         # Datastore.BeginTransaction.
   1768   }
   1769 
   1770   x__xgafv: string, V1 error format.
   1771     Allowed values
   1772       1 - v1 error format
   1773       2 - v2 error format
   1774 
   1775 Returns:
   1776   An object of the form:
   1777 
   1778     { # The response for Datastore.Rollback.
   1779       # (an empty message).
   1780   }</pre>
   1781 </div>
   1782 
   1783 <div class="method">
   1784     <code class="details" id="runQuery">runQuery(projectId, body, x__xgafv=None)</code>
   1785   <pre>Queries for entities.
   1786 
   1787 Args:
   1788   projectId: string, The ID of the project against which to make the request. (required)
   1789   body: object, The request body. (required)
   1790     The object takes the form of:
   1791 
   1792 { # The request for Datastore.RunQuery.
   1793     "query": { # A query for entities. # The query to run.
   1794       "startCursor": "A String", # A starting point for the query results. Query cursors are
   1795           # returned in query result batches and
   1796           # [can only be used to continue the same query](https://cloud.google.com/datastore/docs/concepts/queries#cursors_limits_and_offsets).
   1797       "kind": [ # The kinds to query (if empty, returns entities of all kinds).
   1798           # Currently at most 1 kind may be specified.
   1799         { # A representation of a kind.
   1800           "name": "A String", # The name of the kind.
   1801         },
   1802       ],
   1803       "projection": [ # The projection to return. Defaults to returning all properties.
   1804         { # A representation of a property in a projection.
   1805           "property": { # A reference to a property relative to the kind expressions. # The property to project.
   1806             "name": "A String", # The name of the property.
   1807                 # If name includes "."s, it may be interpreted as a property name path.
   1808           },
   1809         },
   1810       ],
   1811       "distinctOn": [ # The properties to make distinct. The query results will contain the first
   1812           # result for each distinct combination of values for the given properties
   1813           # (if empty, all results are returned).
   1814         { # A reference to a property relative to the kind expressions.
   1815           "name": "A String", # The name of the property.
   1816               # If name includes "."s, it may be interpreted as a property name path.
   1817         },
   1818       ],
   1819       "filter": { # A holder for any type of filter. # The filter to apply.
   1820         "compositeFilter": { # A filter that merges multiple other filters using the given operator. # A composite filter.
   1821           "filters": [ # The list of filters to combine.
   1822               # Must contain at least one filter.
   1823             # Object with schema name: Filter
   1824           ],
   1825           "op": "A String", # The operator for combining multiple filters.
   1826         },
   1827         "propertyFilter": { # A filter on a specific property. # A filter on a property.
   1828           "property": { # A reference to a property relative to the kind expressions. # The property to filter by.
   1829             "name": "A String", # The name of the property.
   1830                 # If name includes "."s, it may be interpreted as a property name path.
   1831           },
   1832           "value": { # A message that can hold any of the supported value types and associated # The value to compare the property to.
   1833               # metadata.
   1834             "entityValue": # Object with schema name: Entity # An entity value.
   1835                 #
   1836                 # - May have no key.
   1837                 # - May have a key with an incomplete key path.
   1838                 # - May have a reserved/read-only key.
   1839             "timestampValue": "A String", # A timestamp value.
   1840                 # When stored in the Datastore, precise only to microseconds;
   1841                 # any additional precision is rounded down.
   1842             "geoPointValue": { # An object representing a latitude/longitude pair. This is expressed as a pair # A geo point value representing a point on the surface of Earth.
   1843                 # of doubles representing degrees latitude and degrees longitude. Unless
   1844                 # specified otherwise, this must conform to the
   1845                 # <a href="http://www.unoosa.org/pdf/icg/2012/template/WGS_84.pdf">WGS84
   1846                 # standard</a>. Values must be within normalized ranges.
   1847                 #
   1848                 # Example of normalization code in Python:
   1849                 #
   1850                 #     def NormalizeLongitude(longitude):
   1851                 #       """Wraps decimal degrees longitude to [-180.0, 180.0]."""
   1852                 #       q, r = divmod(longitude, 360.0)
   1853                 #       if r > 180.0 or (r == 180.0 and q <= -1.0):
   1854                 #         return r - 360.0
   1855                 #       return r
   1856                 #
   1857                 #     def NormalizeLatLng(latitude, longitude):
   1858                 #       """Wraps decimal degrees latitude and longitude to
   1859                 #       [-90.0, 90.0] and [-180.0, 180.0], respectively."""
   1860                 #       r = latitude % 360.0
   1861                 #       if r <= 90.0:
   1862                 #         return r, NormalizeLongitude(longitude)
   1863                 #       elif r >= 270.0:
   1864                 #         return r - 360, NormalizeLongitude(longitude)
   1865                 #       else:
   1866                 #         return 180 - r, NormalizeLongitude(longitude + 180.0)
   1867                 #
   1868                 #     assert 180.0 == NormalizeLongitude(180.0)
   1869                 #     assert -180.0 == NormalizeLongitude(-180.0)
   1870                 #     assert -179.0 == NormalizeLongitude(181.0)
   1871                 #     assert (0.0, 0.0) == NormalizeLatLng(360.0, 0.0)
   1872                 #     assert (0.0, 0.0) == NormalizeLatLng(-360.0, 0.0)
   1873                 #     assert (85.0, 180.0) == NormalizeLatLng(95.0, 0.0)
   1874                 #     assert (-85.0, -170.0) == NormalizeLatLng(-95.0, 10.0)
   1875                 #     assert (90.0, 10.0) == NormalizeLatLng(90.0, 10.0)
   1876                 #     assert (-90.0, -10.0) == NormalizeLatLng(-90.0, -10.0)
   1877                 #     assert (0.0, -170.0) == NormalizeLatLng(-180.0, 10.0)
   1878                 #     assert (0.0, -170.0) == NormalizeLatLng(180.0, 10.0)
   1879                 #     assert (-90.0, 10.0) == NormalizeLatLng(270.0, 10.0)
   1880                 #     assert (90.0, 10.0) == NormalizeLatLng(-270.0, 10.0)
   1881               "latitude": 3.14, # The latitude in degrees. It must be in the range [-90.0, +90.0].
   1882               "longitude": 3.14, # The longitude in degrees. It must be in the range [-180.0, +180.0].
   1883             },
   1884             "doubleValue": 3.14, # A double value.
   1885             "meaning": 42, # The `meaning` field should only be populated for backwards compatibility.
   1886             "excludeFromIndexes": True or False, # If the value should be excluded from all indexes including those defined
   1887                 # explicitly.
   1888             "keyValue": { # A unique identifier for an entity. # A key value.
   1889                 # If a key's partition ID or any of its path kinds or names are
   1890                 # reserved/read-only, the key is reserved/read-only.
   1891                 # A reserved/read-only key is forbidden in certain documented contexts.
   1892               "path": [ # The entity path.
   1893                   # An entity path consists of one or more elements composed of a kind and a
   1894                   # string or numerical identifier, which identify entities. The first
   1895                   # element identifies a _root entity_, the second element identifies
   1896                   # a _child_ of the root entity, the third element identifies a child of the
   1897                   # second entity, and so forth. The entities identified by all prefixes of
   1898                   # the path are called the element's _ancestors_.
   1899                   #
   1900                   # An entity path is always fully complete: *all* of the entity's ancestors
   1901                   # are required to be in the path along with the entity identifier itself.
   1902                   # The only exception is that in some documented cases, the identifier in the
   1903                   # last path element (for the entity) itself may be omitted. For example,
   1904                   # the last path element of the key of `Mutation.insert` may have no
   1905                   # identifier.
   1906                   #
   1907                   # A path can never be empty, and a path can have at most 100 elements.
   1908                 { # A (kind, ID/name) pair used to construct a key path.
   1909                     #
   1910                     # If either name or ID is set, the element is complete.
   1911                     # If neither is set, the element is incomplete.
   1912                   "kind": "A String", # The kind of the entity.
   1913                       # A kind matching regex `__.*__` is reserved/read-only.
   1914                       # A kind must not contain more than 1500 bytes when UTF-8 encoded.
   1915                       # Cannot be `""`.
   1916                   "id": "A String", # The auto-allocated ID of the entity.
   1917                       # Never equal to zero. Values less than zero are discouraged and may not
   1918                       # be supported in the future.
   1919                   "name": "A String", # The name of the entity.
   1920                       # A name matching regex `__.*__` is reserved/read-only.
   1921                       # A name must not be more than 1500 bytes when UTF-8 encoded.
   1922                       # Cannot be `""`.
   1923                 },
   1924               ],
   1925               "partitionId": { # A partition ID identifies a grouping of entities. The grouping is always # Entities are partitioned into subsets, currently identified by a project
   1926                   # ID and namespace ID.
   1927                   # Queries are scoped to a single partition.
   1928                   # by project and namespace, however the namespace ID may be empty.
   1929                   #
   1930                   # A partition ID contains several dimensions:
   1931                   # project ID and namespace ID.
   1932                   #
   1933                   # Partition dimensions:
   1934                   #
   1935                   # - May be `""`.
   1936                   # - Must be valid UTF-8 bytes.
   1937                   # - Must have values that match regex `[A-Za-z\d\.\-_]{1,100}`
   1938                   # If the value of any dimension matches regex `__.*__`, the partition is
   1939                   # reserved/read-only.
   1940                   # A reserved/read-only partition ID is forbidden in certain documented
   1941                   # contexts.
   1942                   #
   1943                   # Foreign partition IDs (in which the project ID does
   1944                   # not match the context project ID ) are discouraged.
   1945                   # Reads and writes of foreign partition IDs may fail if the project is not in an active state.
   1946                 "projectId": "A String", # The ID of the project to which the entities belong.
   1947                 "namespaceId": "A String", # If not empty, the ID of the namespace to which the entities belong.
   1948               },
   1949             },
   1950             "stringValue": "A String", # A UTF-8 encoded string value.
   1951                 # When `exclude_from_indexes` is false (it is indexed) , may have at most 1500 bytes.
   1952                 # Otherwise, may be set to at least 1,000,000 bytes.
   1953             "blobValue": "A String", # A blob value.
   1954                 # May have at most 1,000,000 bytes.
   1955                 # When `exclude_from_indexes` is false, may have at most 1500 bytes.
   1956                 # In JSON requests, must be base64-encoded.
   1957             "booleanValue": True or False, # A boolean value.
   1958             "arrayValue": { # An array value. # An array value.
   1959                 # Cannot contain another array value.
   1960                 # A `Value` instance that sets field `array_value` must not set fields
   1961                 # `meaning` or `exclude_from_indexes`.
   1962               "values": [ # Values in the array.
   1963                   # The order of this array may not be preserved if it contains a mix of
   1964                   # indexed and unindexed values.
   1965                 # Object with schema name: Value
   1966               ],
   1967             },
   1968             "integerValue": "A String", # An integer value.
   1969             "nullValue": "A String", # A null value.
   1970           },
   1971           "op": "A String", # The operator to filter by.
   1972         },
   1973       },
   1974       "limit": 42, # The maximum number of results to return. Applies after all other
   1975           # constraints. Optional.
   1976           # Unspecified is interpreted as no limit.
   1977           # Must be >= 0 if specified.
   1978       "offset": 42, # The number of results to skip. Applies before limit, but after all other
   1979           # constraints. Optional. Must be >= 0 if specified.
   1980       "endCursor": "A String", # An ending point for the query results. Query cursors are
   1981           # returned in query result batches and
   1982           # [can only be used to limit the same query](https://cloud.google.com/datastore/docs/concepts/queries#cursors_limits_and_offsets).
   1983       "order": [ # The order to apply to the query results (if empty, order is unspecified).
   1984         { # The desired order for a specific property.
   1985           "direction": "A String", # The direction to order by. Defaults to `ASCENDING`.
   1986           "property": { # A reference to a property relative to the kind expressions. # The property to order by.
   1987             "name": "A String", # The name of the property.
   1988                 # If name includes "."s, it may be interpreted as a property name path.
   1989           },
   1990         },
   1991       ],
   1992     },
   1993     "partitionId": { # A partition ID identifies a grouping of entities. The grouping is always # Entities are partitioned into subsets, identified by a partition ID.
   1994         # Queries are scoped to a single partition.
   1995         # This partition ID is normalized with the standard default context
   1996         # partition ID.
   1997         # by project and namespace, however the namespace ID may be empty.
   1998         #
   1999         # A partition ID contains several dimensions:
   2000         # project ID and namespace ID.
   2001         #
   2002         # Partition dimensions:
   2003         #
   2004         # - May be `""`.
   2005         # - Must be valid UTF-8 bytes.
   2006         # - Must have values that match regex `[A-Za-z\d\.\-_]{1,100}`
   2007         # If the value of any dimension matches regex `__.*__`, the partition is
   2008         # reserved/read-only.
   2009         # A reserved/read-only partition ID is forbidden in certain documented
   2010         # contexts.
   2011         #
   2012         # Foreign partition IDs (in which the project ID does
   2013         # not match the context project ID ) are discouraged.
   2014         # Reads and writes of foreign partition IDs may fail if the project is not in an active state.
   2015       "projectId": "A String", # The ID of the project to which the entities belong.
   2016       "namespaceId": "A String", # If not empty, the ID of the namespace to which the entities belong.
   2017     },
   2018     "gqlQuery": { # A [GQL query](https://cloud.google.com/datastore/docs/apis/gql/gql_reference). # The GQL query to run.
   2019       "namedBindings": { # For each non-reserved named binding site in the query string, there must be
   2020           # a named parameter with that name, but not necessarily the inverse.
   2021           #
   2022           # Key must match regex `A-Za-z_$*`, must not match regex
   2023           # `__.*__`, and must not be `""`.
   2024         "a_key": { # A binding parameter for a GQL query.
   2025           "cursor": "A String", # A query cursor. Query cursors are returned in query
   2026               # result batches.
   2027           "value": { # A message that can hold any of the supported value types and associated # A value parameter.
   2028               # metadata.
   2029             "entityValue": # Object with schema name: Entity # An entity value.
   2030                 #
   2031                 # - May have no key.
   2032                 # - May have a key with an incomplete key path.
   2033                 # - May have a reserved/read-only key.
   2034             "timestampValue": "A String", # A timestamp value.
   2035                 # When stored in the Datastore, precise only to microseconds;
   2036                 # any additional precision is rounded down.
   2037             "geoPointValue": { # An object representing a latitude/longitude pair. This is expressed as a pair # A geo point value representing a point on the surface of Earth.
   2038                 # of doubles representing degrees latitude and degrees longitude. Unless
   2039                 # specified otherwise, this must conform to the
   2040                 # <a href="http://www.unoosa.org/pdf/icg/2012/template/WGS_84.pdf">WGS84
   2041                 # standard</a>. Values must be within normalized ranges.
   2042                 #
   2043                 # Example of normalization code in Python:
   2044                 #
   2045                 #     def NormalizeLongitude(longitude):
   2046                 #       """Wraps decimal degrees longitude to [-180.0, 180.0]."""
   2047                 #       q, r = divmod(longitude, 360.0)
   2048                 #       if r > 180.0 or (r == 180.0 and q <= -1.0):
   2049                 #         return r - 360.0
   2050                 #       return r
   2051                 #
   2052                 #     def NormalizeLatLng(latitude, longitude):
   2053                 #       """Wraps decimal degrees latitude and longitude to
   2054                 #       [-90.0, 90.0] and [-180.0, 180.0], respectively."""
   2055                 #       r = latitude % 360.0
   2056                 #       if r <= 90.0:
   2057                 #         return r, NormalizeLongitude(longitude)
   2058                 #       elif r >= 270.0:
   2059                 #         return r - 360, NormalizeLongitude(longitude)
   2060                 #       else:
   2061                 #         return 180 - r, NormalizeLongitude(longitude + 180.0)
   2062                 #
   2063                 #     assert 180.0 == NormalizeLongitude(180.0)
   2064                 #     assert -180.0 == NormalizeLongitude(-180.0)
   2065                 #     assert -179.0 == NormalizeLongitude(181.0)
   2066                 #     assert (0.0, 0.0) == NormalizeLatLng(360.0, 0.0)
   2067                 #     assert (0.0, 0.0) == NormalizeLatLng(-360.0, 0.0)
   2068                 #     assert (85.0, 180.0) == NormalizeLatLng(95.0, 0.0)
   2069                 #     assert (-85.0, -170.0) == NormalizeLatLng(-95.0, 10.0)
   2070                 #     assert (90.0, 10.0) == NormalizeLatLng(90.0, 10.0)
   2071                 #     assert (-90.0, -10.0) == NormalizeLatLng(-90.0, -10.0)
   2072                 #     assert (0.0, -170.0) == NormalizeLatLng(-180.0, 10.0)
   2073                 #     assert (0.0, -170.0) == NormalizeLatLng(180.0, 10.0)
   2074                 #     assert (-90.0, 10.0) == NormalizeLatLng(270.0, 10.0)
   2075                 #     assert (90.0, 10.0) == NormalizeLatLng(-270.0, 10.0)
   2076               "latitude": 3.14, # The latitude in degrees. It must be in the range [-90.0, +90.0].
   2077               "longitude": 3.14, # The longitude in degrees. It must be in the range [-180.0, +180.0].
   2078             },
   2079             "doubleValue": 3.14, # A double value.
   2080             "meaning": 42, # The `meaning` field should only be populated for backwards compatibility.
   2081             "excludeFromIndexes": True or False, # If the value should be excluded from all indexes including those defined
   2082                 # explicitly.
   2083             "keyValue": { # A unique identifier for an entity. # A key value.
   2084                 # If a key's partition ID or any of its path kinds or names are
   2085                 # reserved/read-only, the key is reserved/read-only.
   2086                 # A reserved/read-only key is forbidden in certain documented contexts.
   2087               "path": [ # The entity path.
   2088                   # An entity path consists of one or more elements composed of a kind and a
   2089                   # string or numerical identifier, which identify entities. The first
   2090                   # element identifies a _root entity_, the second element identifies
   2091                   # a _child_ of the root entity, the third element identifies a child of the
   2092                   # second entity, and so forth. The entities identified by all prefixes of
   2093                   # the path are called the element's _ancestors_.
   2094                   #
   2095                   # An entity path is always fully complete: *all* of the entity's ancestors
   2096                   # are required to be in the path along with the entity identifier itself.
   2097                   # The only exception is that in some documented cases, the identifier in the
   2098                   # last path element (for the entity) itself may be omitted. For example,
   2099                   # the last path element of the key of `Mutation.insert` may have no
   2100                   # identifier.
   2101                   #
   2102                   # A path can never be empty, and a path can have at most 100 elements.
   2103                 { # A (kind, ID/name) pair used to construct a key path.
   2104                     #
   2105                     # If either name or ID is set, the element is complete.
   2106                     # If neither is set, the element is incomplete.
   2107                   "kind": "A String", # The kind of the entity.
   2108                       # A kind matching regex `__.*__` is reserved/read-only.
   2109                       # A kind must not contain more than 1500 bytes when UTF-8 encoded.
   2110                       # Cannot be `""`.
   2111                   "id": "A String", # The auto-allocated ID of the entity.
   2112                       # Never equal to zero. Values less than zero are discouraged and may not
   2113                       # be supported in the future.
   2114                   "name": "A String", # The name of the entity.
   2115                       # A name matching regex `__.*__` is reserved/read-only.
   2116                       # A name must not be more than 1500 bytes when UTF-8 encoded.
   2117                       # Cannot be `""`.
   2118                 },
   2119               ],
   2120               "partitionId": { # A partition ID identifies a grouping of entities. The grouping is always # Entities are partitioned into subsets, currently identified by a project
   2121                   # ID and namespace ID.
   2122                   # Queries are scoped to a single partition.
   2123                   # by project and namespace, however the namespace ID may be empty.
   2124                   #
   2125                   # A partition ID contains several dimensions:
   2126                   # project ID and namespace ID.
   2127                   #
   2128                   # Partition dimensions:
   2129                   #
   2130                   # - May be `""`.
   2131                   # - Must be valid UTF-8 bytes.
   2132                   # - Must have values that match regex `[A-Za-z\d\.\-_]{1,100}`
   2133                   # If the value of any dimension matches regex `__.*__`, the partition is
   2134                   # reserved/read-only.
   2135                   # A reserved/read-only partition ID is forbidden in certain documented
   2136                   # contexts.
   2137                   #
   2138                   # Foreign partition IDs (in which the project ID does
   2139                   # not match the context project ID ) are discouraged.
   2140                   # Reads and writes of foreign partition IDs may fail if the project is not in an active state.
   2141                 "projectId": "A String", # The ID of the project to which the entities belong.
   2142                 "namespaceId": "A String", # If not empty, the ID of the namespace to which the entities belong.
   2143               },
   2144             },
   2145             "stringValue": "A String", # A UTF-8 encoded string value.
   2146                 # When `exclude_from_indexes` is false (it is indexed) , may have at most 1500 bytes.
   2147                 # Otherwise, may be set to at least 1,000,000 bytes.
   2148             "blobValue": "A String", # A blob value.
   2149                 # May have at most 1,000,000 bytes.
   2150                 # When `exclude_from_indexes` is false, may have at most 1500 bytes.
   2151                 # In JSON requests, must be base64-encoded.
   2152             "booleanValue": True or False, # A boolean value.
   2153             "arrayValue": { # An array value. # An array value.
   2154                 # Cannot contain another array value.
   2155                 # A `Value` instance that sets field `array_value` must not set fields
   2156                 # `meaning` or `exclude_from_indexes`.
   2157               "values": [ # Values in the array.
   2158                   # The order of this array may not be preserved if it contains a mix of
   2159                   # indexed and unindexed values.
   2160                 # Object with schema name: Value
   2161               ],
   2162             },
   2163             "integerValue": "A String", # An integer value.
   2164             "nullValue": "A String", # A null value.
   2165           },
   2166         },
   2167       },
   2168       "positionalBindings": [ # Numbered binding site @1 references the first numbered parameter,
   2169           # effectively using 1-based indexing, rather than the usual 0.
   2170           #
   2171           # For each binding site numbered i in `query_string`, there must be an i-th
   2172           # numbered parameter. The inverse must also be true.
   2173         { # A binding parameter for a GQL query.
   2174           "cursor": "A String", # A query cursor. Query cursors are returned in query
   2175               # result batches.
   2176           "value": { # A message that can hold any of the supported value types and associated # A value parameter.
   2177               # metadata.
   2178             "entityValue": # Object with schema name: Entity # An entity value.
   2179                 #
   2180                 # - May have no key.
   2181                 # - May have a key with an incomplete key path.
   2182                 # - May have a reserved/read-only key.
   2183             "timestampValue": "A String", # A timestamp value.
   2184                 # When stored in the Datastore, precise only to microseconds;
   2185                 # any additional precision is rounded down.
   2186             "geoPointValue": { # An object representing a latitude/longitude pair. This is expressed as a pair # A geo point value representing a point on the surface of Earth.
   2187                 # of doubles representing degrees latitude and degrees longitude. Unless
   2188                 # specified otherwise, this must conform to the
   2189                 # <a href="http://www.unoosa.org/pdf/icg/2012/template/WGS_84.pdf">WGS84
   2190                 # standard</a>. Values must be within normalized ranges.
   2191                 #
   2192                 # Example of normalization code in Python:
   2193                 #
   2194                 #     def NormalizeLongitude(longitude):
   2195                 #       """Wraps decimal degrees longitude to [-180.0, 180.0]."""
   2196                 #       q, r = divmod(longitude, 360.0)
   2197                 #       if r > 180.0 or (r == 180.0 and q <= -1.0):
   2198                 #         return r - 360.0
   2199                 #       return r
   2200                 #
   2201                 #     def NormalizeLatLng(latitude, longitude):
   2202                 #       """Wraps decimal degrees latitude and longitude to
   2203                 #       [-90.0, 90.0] and [-180.0, 180.0], respectively."""
   2204                 #       r = latitude % 360.0
   2205                 #       if r <= 90.0:
   2206                 #         return r, NormalizeLongitude(longitude)
   2207                 #       elif r >= 270.0:
   2208                 #         return r - 360, NormalizeLongitude(longitude)
   2209                 #       else:
   2210                 #         return 180 - r, NormalizeLongitude(longitude + 180.0)
   2211                 #
   2212                 #     assert 180.0 == NormalizeLongitude(180.0)
   2213                 #     assert -180.0 == NormalizeLongitude(-180.0)
   2214                 #     assert -179.0 == NormalizeLongitude(181.0)
   2215                 #     assert (0.0, 0.0) == NormalizeLatLng(360.0, 0.0)
   2216                 #     assert (0.0, 0.0) == NormalizeLatLng(-360.0, 0.0)
   2217                 #     assert (85.0, 180.0) == NormalizeLatLng(95.0, 0.0)
   2218                 #     assert (-85.0, -170.0) == NormalizeLatLng(-95.0, 10.0)
   2219                 #     assert (90.0, 10.0) == NormalizeLatLng(90.0, 10.0)
   2220                 #     assert (-90.0, -10.0) == NormalizeLatLng(-90.0, -10.0)
   2221                 #     assert (0.0, -170.0) == NormalizeLatLng(-180.0, 10.0)
   2222                 #     assert (0.0, -170.0) == NormalizeLatLng(180.0, 10.0)
   2223                 #     assert (-90.0, 10.0) == NormalizeLatLng(270.0, 10.0)
   2224                 #     assert (90.0, 10.0) == NormalizeLatLng(-270.0, 10.0)
   2225               "latitude": 3.14, # The latitude in degrees. It must be in the range [-90.0, +90.0].
   2226               "longitude": 3.14, # The longitude in degrees. It must be in the range [-180.0, +180.0].
   2227             },
   2228             "doubleValue": 3.14, # A double value.
   2229             "meaning": 42, # The `meaning` field should only be populated for backwards compatibility.
   2230             "excludeFromIndexes": True or False, # If the value should be excluded from all indexes including those defined
   2231                 # explicitly.
   2232             "keyValue": { # A unique identifier for an entity. # A key value.
   2233                 # If a key's partition ID or any of its path kinds or names are
   2234                 # reserved/read-only, the key is reserved/read-only.
   2235                 # A reserved/read-only key is forbidden in certain documented contexts.
   2236               "path": [ # The entity path.
   2237                   # An entity path consists of one or more elements composed of a kind and a
   2238                   # string or numerical identifier, which identify entities. The first
   2239                   # element identifies a _root entity_, the second element identifies
   2240                   # a _child_ of the root entity, the third element identifies a child of the
   2241                   # second entity, and so forth. The entities identified by all prefixes of
   2242                   # the path are called the element's _ancestors_.
   2243                   #
   2244                   # An entity path is always fully complete: *all* of the entity's ancestors
   2245                   # are required to be in the path along with the entity identifier itself.
   2246                   # The only exception is that in some documented cases, the identifier in the
   2247                   # last path element (for the entity) itself may be omitted. For example,
   2248                   # the last path element of the key of `Mutation.insert` may have no
   2249                   # identifier.
   2250                   #
   2251                   # A path can never be empty, and a path can have at most 100 elements.
   2252                 { # A (kind, ID/name) pair used to construct a key path.
   2253                     #
   2254                     # If either name or ID is set, the element is complete.
   2255                     # If neither is set, the element is incomplete.
   2256                   "kind": "A String", # The kind of the entity.
   2257                       # A kind matching regex `__.*__` is reserved/read-only.
   2258                       # A kind must not contain more than 1500 bytes when UTF-8 encoded.
   2259                       # Cannot be `""`.
   2260                   "id": "A String", # The auto-allocated ID of the entity.
   2261                       # Never equal to zero. Values less than zero are discouraged and may not
   2262                       # be supported in the future.
   2263                   "name": "A String", # The name of the entity.
   2264                       # A name matching regex `__.*__` is reserved/read-only.
   2265                       # A name must not be more than 1500 bytes when UTF-8 encoded.
   2266                       # Cannot be `""`.
   2267                 },
   2268               ],
   2269               "partitionId": { # A partition ID identifies a grouping of entities. The grouping is always # Entities are partitioned into subsets, currently identified by a project
   2270                   # ID and namespace ID.
   2271                   # Queries are scoped to a single partition.
   2272                   # by project and namespace, however the namespace ID may be empty.
   2273                   #
   2274                   # A partition ID contains several dimensions:
   2275                   # project ID and namespace ID.
   2276                   #
   2277                   # Partition dimensions:
   2278                   #
   2279                   # - May be `""`.
   2280                   # - Must be valid UTF-8 bytes.
   2281                   # - Must have values that match regex `[A-Za-z\d\.\-_]{1,100}`
   2282                   # If the value of any dimension matches regex `__.*__`, the partition is
   2283                   # reserved/read-only.
   2284                   # A reserved/read-only partition ID is forbidden in certain documented
   2285                   # contexts.
   2286                   #
   2287                   # Foreign partition IDs (in which the project ID does
   2288                   # not match the context project ID ) are discouraged.
   2289                   # Reads and writes of foreign partition IDs may fail if the project is not in an active state.
   2290                 "projectId": "A String", # The ID of the project to which the entities belong.
   2291                 "namespaceId": "A String", # If not empty, the ID of the namespace to which the entities belong.
   2292               },
   2293             },
   2294             "stringValue": "A String", # A UTF-8 encoded string value.
   2295                 # When `exclude_from_indexes` is false (it is indexed) , may have at most 1500 bytes.
   2296                 # Otherwise, may be set to at least 1,000,000 bytes.
   2297             "blobValue": "A String", # A blob value.
   2298                 # May have at most 1,000,000 bytes.
   2299                 # When `exclude_from_indexes` is false, may have at most 1500 bytes.
   2300                 # In JSON requests, must be base64-encoded.
   2301             "booleanValue": True or False, # A boolean value.
   2302             "arrayValue": { # An array value. # An array value.
   2303                 # Cannot contain another array value.
   2304                 # A `Value` instance that sets field `array_value` must not set fields
   2305                 # `meaning` or `exclude_from_indexes`.
   2306               "values": [ # Values in the array.
   2307                   # The order of this array may not be preserved if it contains a mix of
   2308                   # indexed and unindexed values.
   2309                 # Object with schema name: Value
   2310               ],
   2311             },
   2312             "integerValue": "A String", # An integer value.
   2313             "nullValue": "A String", # A null value.
   2314           },
   2315         },
   2316       ],
   2317       "queryString": "A String", # A string of the format described
   2318           # [here](https://cloud.google.com/datastore/docs/apis/gql/gql_reference).
   2319       "allowLiterals": True or False, # When false, the query string must not contain any literals and instead must
   2320           # bind all values. For example,
   2321           # `SELECT * FROM Kind WHERE a = 'string literal'` is not allowed, while
   2322           # `SELECT * FROM Kind WHERE a = @value` is.
   2323     },
   2324     "readOptions": { # The options shared by read requests. # The options for this query.
   2325       "transaction": "A String", # The identifier of the transaction in which to read. A
   2326           # transaction identifier is returned by a call to
   2327           # Datastore.BeginTransaction.
   2328       "readConsistency": "A String", # The non-transactional read consistency to use.
   2329           # Cannot be set to `STRONG` for global queries.
   2330     },
   2331   }
   2332 
   2333   x__xgafv: string, V1 error format.
   2334     Allowed values
   2335       1 - v1 error format
   2336       2 - v2 error format
   2337 
   2338 Returns:
   2339   An object of the form:
   2340 
   2341     { # The response for Datastore.RunQuery.
   2342     "query": { # A query for entities. # The parsed form of the `GqlQuery` from the request, if it was set.
   2343       "startCursor": "A String", # A starting point for the query results. Query cursors are
   2344           # returned in query result batches and
   2345           # [can only be used to continue the same query](https://cloud.google.com/datastore/docs/concepts/queries#cursors_limits_and_offsets).
   2346       "kind": [ # The kinds to query (if empty, returns entities of all kinds).
   2347           # Currently at most 1 kind may be specified.
   2348         { # A representation of a kind.
   2349           "name": "A String", # The name of the kind.
   2350         },
   2351       ],
   2352       "projection": [ # The projection to return. Defaults to returning all properties.
   2353         { # A representation of a property in a projection.
   2354           "property": { # A reference to a property relative to the kind expressions. # The property to project.
   2355             "name": "A String", # The name of the property.
   2356                 # If name includes "."s, it may be interpreted as a property name path.
   2357           },
   2358         },
   2359       ],
   2360       "distinctOn": [ # The properties to make distinct. The query results will contain the first
   2361           # result for each distinct combination of values for the given properties
   2362           # (if empty, all results are returned).
   2363         { # A reference to a property relative to the kind expressions.
   2364           "name": "A String", # The name of the property.
   2365               # If name includes "."s, it may be interpreted as a property name path.
   2366         },
   2367       ],
   2368       "filter": { # A holder for any type of filter. # The filter to apply.
   2369         "compositeFilter": { # A filter that merges multiple other filters using the given operator. # A composite filter.
   2370           "filters": [ # The list of filters to combine.
   2371               # Must contain at least one filter.
   2372             # Object with schema name: Filter
   2373           ],
   2374           "op": "A String", # The operator for combining multiple filters.
   2375         },
   2376         "propertyFilter": { # A filter on a specific property. # A filter on a property.
   2377           "property": { # A reference to a property relative to the kind expressions. # The property to filter by.
   2378             "name": "A String", # The name of the property.
   2379                 # If name includes "."s, it may be interpreted as a property name path.
   2380           },
   2381           "value": { # A message that can hold any of the supported value types and associated # The value to compare the property to.
   2382               # metadata.
   2383             "entityValue": # Object with schema name: Entity # An entity value.
   2384                 #
   2385                 # - May have no key.
   2386                 # - May have a key with an incomplete key path.
   2387                 # - May have a reserved/read-only key.
   2388             "timestampValue": "A String", # A timestamp value.
   2389                 # When stored in the Datastore, precise only to microseconds;
   2390                 # any additional precision is rounded down.
   2391             "geoPointValue": { # An object representing a latitude/longitude pair. This is expressed as a pair # A geo point value representing a point on the surface of Earth.
   2392                 # of doubles representing degrees latitude and degrees longitude. Unless
   2393                 # specified otherwise, this must conform to the
   2394                 # <a href="http://www.unoosa.org/pdf/icg/2012/template/WGS_84.pdf">WGS84
   2395                 # standard</a>. Values must be within normalized ranges.
   2396                 #
   2397                 # Example of normalization code in Python:
   2398                 #
   2399                 #     def NormalizeLongitude(longitude):
   2400                 #       """Wraps decimal degrees longitude to [-180.0, 180.0]."""
   2401                 #       q, r = divmod(longitude, 360.0)
   2402                 #       if r > 180.0 or (r == 180.0 and q <= -1.0):
   2403                 #         return r - 360.0
   2404                 #       return r
   2405                 #
   2406                 #     def NormalizeLatLng(latitude, longitude):
   2407                 #       """Wraps decimal degrees latitude and longitude to
   2408                 #       [-90.0, 90.0] and [-180.0, 180.0], respectively."""
   2409                 #       r = latitude % 360.0
   2410                 #       if r <= 90.0:
   2411                 #         return r, NormalizeLongitude(longitude)
   2412                 #       elif r >= 270.0:
   2413                 #         return r - 360, NormalizeLongitude(longitude)
   2414                 #       else:
   2415                 #         return 180 - r, NormalizeLongitude(longitude + 180.0)
   2416                 #
   2417                 #     assert 180.0 == NormalizeLongitude(180.0)
   2418                 #     assert -180.0 == NormalizeLongitude(-180.0)
   2419                 #     assert -179.0 == NormalizeLongitude(181.0)
   2420                 #     assert (0.0, 0.0) == NormalizeLatLng(360.0, 0.0)
   2421                 #     assert (0.0, 0.0) == NormalizeLatLng(-360.0, 0.0)
   2422                 #     assert (85.0, 180.0) == NormalizeLatLng(95.0, 0.0)
   2423                 #     assert (-85.0, -170.0) == NormalizeLatLng(-95.0, 10.0)
   2424                 #     assert (90.0, 10.0) == NormalizeLatLng(90.0, 10.0)
   2425                 #     assert (-90.0, -10.0) == NormalizeLatLng(-90.0, -10.0)
   2426                 #     assert (0.0, -170.0) == NormalizeLatLng(-180.0, 10.0)
   2427                 #     assert (0.0, -170.0) == NormalizeLatLng(180.0, 10.0)
   2428                 #     assert (-90.0, 10.0) == NormalizeLatLng(270.0, 10.0)
   2429                 #     assert (90.0, 10.0) == NormalizeLatLng(-270.0, 10.0)
   2430               "latitude": 3.14, # The latitude in degrees. It must be in the range [-90.0, +90.0].
   2431               "longitude": 3.14, # The longitude in degrees. It must be in the range [-180.0, +180.0].
   2432             },
   2433             "doubleValue": 3.14, # A double value.
   2434             "meaning": 42, # The `meaning` field should only be populated for backwards compatibility.
   2435             "excludeFromIndexes": True or False, # If the value should be excluded from all indexes including those defined
   2436                 # explicitly.
   2437             "keyValue": { # A unique identifier for an entity. # A key value.
   2438                 # If a key's partition ID or any of its path kinds or names are
   2439                 # reserved/read-only, the key is reserved/read-only.
   2440                 # A reserved/read-only key is forbidden in certain documented contexts.
   2441               "path": [ # The entity path.
   2442                   # An entity path consists of one or more elements composed of a kind and a
   2443                   # string or numerical identifier, which identify entities. The first
   2444                   # element identifies a _root entity_, the second element identifies
   2445                   # a _child_ of the root entity, the third element identifies a child of the
   2446                   # second entity, and so forth. The entities identified by all prefixes of
   2447                   # the path are called the element's _ancestors_.
   2448                   #
   2449                   # An entity path is always fully complete: *all* of the entity's ancestors
   2450                   # are required to be in the path along with the entity identifier itself.
   2451                   # The only exception is that in some documented cases, the identifier in the
   2452                   # last path element (for the entity) itself may be omitted. For example,
   2453                   # the last path element of the key of `Mutation.insert` may have no
   2454                   # identifier.
   2455                   #
   2456                   # A path can never be empty, and a path can have at most 100 elements.
   2457                 { # A (kind, ID/name) pair used to construct a key path.
   2458                     #
   2459                     # If either name or ID is set, the element is complete.
   2460                     # If neither is set, the element is incomplete.
   2461                   "kind": "A String", # The kind of the entity.
   2462                       # A kind matching regex `__.*__` is reserved/read-only.
   2463                       # A kind must not contain more than 1500 bytes when UTF-8 encoded.
   2464                       # Cannot be `""`.
   2465                   "id": "A String", # The auto-allocated ID of the entity.
   2466                       # Never equal to zero. Values less than zero are discouraged and may not
   2467                       # be supported in the future.
   2468                   "name": "A String", # The name of the entity.
   2469                       # A name matching regex `__.*__` is reserved/read-only.
   2470                       # A name must not be more than 1500 bytes when UTF-8 encoded.
   2471                       # Cannot be `""`.
   2472                 },
   2473               ],
   2474               "partitionId": { # A partition ID identifies a grouping of entities. The grouping is always # Entities are partitioned into subsets, currently identified by a project
   2475                   # ID and namespace ID.
   2476                   # Queries are scoped to a single partition.
   2477                   # by project and namespace, however the namespace ID may be empty.
   2478                   #
   2479                   # A partition ID contains several dimensions:
   2480                   # project ID and namespace ID.
   2481                   #
   2482                   # Partition dimensions:
   2483                   #
   2484                   # - May be `""`.
   2485                   # - Must be valid UTF-8 bytes.
   2486                   # - Must have values that match regex `[A-Za-z\d\.\-_]{1,100}`
   2487                   # If the value of any dimension matches regex `__.*__`, the partition is
   2488                   # reserved/read-only.
   2489                   # A reserved/read-only partition ID is forbidden in certain documented
   2490                   # contexts.
   2491                   #
   2492                   # Foreign partition IDs (in which the project ID does
   2493                   # not match the context project ID ) are discouraged.
   2494                   # Reads and writes of foreign partition IDs may fail if the project is not in an active state.
   2495                 "projectId": "A String", # The ID of the project to which the entities belong.
   2496                 "namespaceId": "A String", # If not empty, the ID of the namespace to which the entities belong.
   2497               },
   2498             },
   2499             "stringValue": "A String", # A UTF-8 encoded string value.
   2500                 # When `exclude_from_indexes` is false (it is indexed) , may have at most 1500 bytes.
   2501                 # Otherwise, may be set to at least 1,000,000 bytes.
   2502             "blobValue": "A String", # A blob value.
   2503                 # May have at most 1,000,000 bytes.
   2504                 # When `exclude_from_indexes` is false, may have at most 1500 bytes.
   2505                 # In JSON requests, must be base64-encoded.
   2506             "booleanValue": True or False, # A boolean value.
   2507             "arrayValue": { # An array value. # An array value.
   2508                 # Cannot contain another array value.
   2509                 # A `Value` instance that sets field `array_value` must not set fields
   2510                 # `meaning` or `exclude_from_indexes`.
   2511               "values": [ # Values in the array.
   2512                   # The order of this array may not be preserved if it contains a mix of
   2513                   # indexed and unindexed values.
   2514                 # Object with schema name: Value
   2515               ],
   2516             },
   2517             "integerValue": "A String", # An integer value.
   2518             "nullValue": "A String", # A null value.
   2519           },
   2520           "op": "A String", # The operator to filter by.
   2521         },
   2522       },
   2523       "limit": 42, # The maximum number of results to return. Applies after all other
   2524           # constraints. Optional.
   2525           # Unspecified is interpreted as no limit.
   2526           # Must be >= 0 if specified.
   2527       "offset": 42, # The number of results to skip. Applies before limit, but after all other
   2528           # constraints. Optional. Must be >= 0 if specified.
   2529       "endCursor": "A String", # An ending point for the query results. Query cursors are
   2530           # returned in query result batches and
   2531           # [can only be used to limit the same query](https://cloud.google.com/datastore/docs/concepts/queries#cursors_limits_and_offsets).
   2532       "order": [ # The order to apply to the query results (if empty, order is unspecified).
   2533         { # The desired order for a specific property.
   2534           "direction": "A String", # The direction to order by. Defaults to `ASCENDING`.
   2535           "property": { # A reference to a property relative to the kind expressions. # The property to order by.
   2536             "name": "A String", # The name of the property.
   2537                 # If name includes "."s, it may be interpreted as a property name path.
   2538           },
   2539         },
   2540       ],
   2541     },
   2542     "batch": { # A batch of results produced by a query. # A batch of query results (always present).
   2543       "entityResultType": "A String", # The result type for every entity in `entity_results`.
   2544       "snapshotVersion": "A String", # The version number of the snapshot this batch was returned from.
   2545           # This applies to the range of results from the query's `start_cursor` (or
   2546           # the beginning of the query if no cursor was given) to this batch's
   2547           # `end_cursor` (not the query's `end_cursor`).
   2548           #
   2549           # In a single transaction, subsequent query result batches for the same query
   2550           # can have a greater snapshot version number. Each batch's snapshot version
   2551           # is valid for all preceding batches.
   2552           # The value will be zero for eventually consistent queries.
   2553       "skippedResults": 42, # The number of results skipped, typically because of an offset.
   2554       "entityResults": [ # The results for this batch.
   2555         { # The result of fetching an entity from Datastore.
   2556           "cursor": "A String", # A cursor that points to the position after the result entity.
   2557               # Set only when the `EntityResult` is part of a `QueryResultBatch` message.
   2558           "version": "A String", # The version of the entity, a strictly positive number that monotonically
   2559               # increases with changes to the entity.
   2560               #
   2561               # This field is set for `FULL` entity
   2562               # results.
   2563               #
   2564               # For missing entities in `LookupResponse`, this
   2565               # is the version of the snapshot that was used to look up the entity, and it
   2566               # is always set except for eventually consistent reads.
   2567           "entity": { # A Datastore data object. # The resulting entity.
   2568               #
   2569               # An entity is limited to 1 megabyte when stored. That _roughly_
   2570               # corresponds to a limit of 1 megabyte for the serialized form of this
   2571               # message.
   2572             "properties": { # The entity's properties.
   2573                 # The map's keys are property names.
   2574                 # A property name matching regex `__.*__` is reserved.
   2575                 # A reserved property name is forbidden in certain documented contexts.
   2576                 # The name must not contain more than 500 characters.
   2577                 # The name cannot be `""`.
   2578               "a_key": { # A message that can hold any of the supported value types and associated
   2579                   # metadata.
   2580                 "entityValue": # Object with schema name: Entity # An entity value.
   2581                     #
   2582                     # - May have no key.
   2583                     # - May have a key with an incomplete key path.
   2584                     # - May have a reserved/read-only key.
   2585                 "timestampValue": "A String", # A timestamp value.
   2586                     # When stored in the Datastore, precise only to microseconds;
   2587                     # any additional precision is rounded down.
   2588                 "geoPointValue": { # An object representing a latitude/longitude pair. This is expressed as a pair # A geo point value representing a point on the surface of Earth.
   2589                     # of doubles representing degrees latitude and degrees longitude. Unless
   2590                     # specified otherwise, this must conform to the
   2591                     # <a href="http://www.unoosa.org/pdf/icg/2012/template/WGS_84.pdf">WGS84
   2592                     # standard</a>. Values must be within normalized ranges.
   2593                     #
   2594                     # Example of normalization code in Python:
   2595                     #
   2596                     #     def NormalizeLongitude(longitude):
   2597                     #       """Wraps decimal degrees longitude to [-180.0, 180.0]."""
   2598                     #       q, r = divmod(longitude, 360.0)
   2599                     #       if r > 180.0 or (r == 180.0 and q <= -1.0):
   2600                     #         return r - 360.0
   2601                     #       return r
   2602                     #
   2603                     #     def NormalizeLatLng(latitude, longitude):
   2604                     #       """Wraps decimal degrees latitude and longitude to
   2605                     #       [-90.0, 90.0] and [-180.0, 180.0], respectively."""
   2606                     #       r = latitude % 360.0
   2607                     #       if r <= 90.0:
   2608                     #         return r, NormalizeLongitude(longitude)
   2609                     #       elif r >= 270.0:
   2610                     #         return r - 360, NormalizeLongitude(longitude)
   2611                     #       else:
   2612                     #         return 180 - r, NormalizeLongitude(longitude + 180.0)
   2613                     #
   2614                     #     assert 180.0 == NormalizeLongitude(180.0)
   2615                     #     assert -180.0 == NormalizeLongitude(-180.0)
   2616                     #     assert -179.0 == NormalizeLongitude(181.0)
   2617                     #     assert (0.0, 0.0) == NormalizeLatLng(360.0, 0.0)
   2618                     #     assert (0.0, 0.0) == NormalizeLatLng(-360.0, 0.0)
   2619                     #     assert (85.0, 180.0) == NormalizeLatLng(95.0, 0.0)
   2620                     #     assert (-85.0, -170.0) == NormalizeLatLng(-95.0, 10.0)
   2621                     #     assert (90.0, 10.0) == NormalizeLatLng(90.0, 10.0)
   2622                     #     assert (-90.0, -10.0) == NormalizeLatLng(-90.0, -10.0)
   2623                     #     assert (0.0, -170.0) == NormalizeLatLng(-180.0, 10.0)
   2624                     #     assert (0.0, -170.0) == NormalizeLatLng(180.0, 10.0)
   2625                     #     assert (-90.0, 10.0) == NormalizeLatLng(270.0, 10.0)
   2626                     #     assert (90.0, 10.0) == NormalizeLatLng(-270.0, 10.0)
   2627                   "latitude": 3.14, # The latitude in degrees. It must be in the range [-90.0, +90.0].
   2628                   "longitude": 3.14, # The longitude in degrees. It must be in the range [-180.0, +180.0].
   2629                 },
   2630                 "doubleValue": 3.14, # A double value.
   2631                 "meaning": 42, # The `meaning` field should only be populated for backwards compatibility.
   2632                 "excludeFromIndexes": True or False, # If the value should be excluded from all indexes including those defined
   2633                     # explicitly.
   2634                 "keyValue": { # A unique identifier for an entity. # A key value.
   2635                     # If a key's partition ID or any of its path kinds or names are
   2636                     # reserved/read-only, the key is reserved/read-only.
   2637                     # A reserved/read-only key is forbidden in certain documented contexts.
   2638                   "path": [ # The entity path.
   2639                       # An entity path consists of one or more elements composed of a kind and a
   2640                       # string or numerical identifier, which identify entities. The first
   2641                       # element identifies a _root entity_, the second element identifies
   2642                       # a _child_ of the root entity, the third element identifies a child of the
   2643                       # second entity, and so forth. The entities identified by all prefixes of
   2644                       # the path are called the element's _ancestors_.
   2645                       #
   2646                       # An entity path is always fully complete: *all* of the entity's ancestors
   2647                       # are required to be in the path along with the entity identifier itself.
   2648                       # The only exception is that in some documented cases, the identifier in the
   2649                       # last path element (for the entity) itself may be omitted. For example,
   2650                       # the last path element of the key of `Mutation.insert` may have no
   2651                       # identifier.
   2652                       #
   2653                       # A path can never be empty, and a path can have at most 100 elements.
   2654                     { # A (kind, ID/name) pair used to construct a key path.
   2655                         #
   2656                         # If either name or ID is set, the element is complete.
   2657                         # If neither is set, the element is incomplete.
   2658                       "kind": "A String", # The kind of the entity.
   2659                           # A kind matching regex `__.*__` is reserved/read-only.
   2660                           # A kind must not contain more than 1500 bytes when UTF-8 encoded.
   2661                           # Cannot be `""`.
   2662                       "id": "A String", # The auto-allocated ID of the entity.
   2663                           # Never equal to zero. Values less than zero are discouraged and may not
   2664                           # be supported in the future.
   2665                       "name": "A String", # The name of the entity.
   2666                           # A name matching regex `__.*__` is reserved/read-only.
   2667                           # A name must not be more than 1500 bytes when UTF-8 encoded.
   2668                           # Cannot be `""`.
   2669                     },
   2670                   ],
   2671                   "partitionId": { # A partition ID identifies a grouping of entities. The grouping is always # Entities are partitioned into subsets, currently identified by a project
   2672                       # ID and namespace ID.
   2673                       # Queries are scoped to a single partition.
   2674                       # by project and namespace, however the namespace ID may be empty.
   2675                       #
   2676                       # A partition ID contains several dimensions:
   2677                       # project ID and namespace ID.
   2678                       #
   2679                       # Partition dimensions:
   2680                       #
   2681                       # - May be `""`.
   2682                       # - Must be valid UTF-8 bytes.
   2683                       # - Must have values that match regex `[A-Za-z\d\.\-_]{1,100}`
   2684                       # If the value of any dimension matches regex `__.*__`, the partition is
   2685                       # reserved/read-only.
   2686                       # A reserved/read-only partition ID is forbidden in certain documented
   2687                       # contexts.
   2688                       #
   2689                       # Foreign partition IDs (in which the project ID does
   2690                       # not match the context project ID ) are discouraged.
   2691                       # Reads and writes of foreign partition IDs may fail if the project is not in an active state.
   2692                     "projectId": "A String", # The ID of the project to which the entities belong.
   2693                     "namespaceId": "A String", # If not empty, the ID of the namespace to which the entities belong.
   2694                   },
   2695                 },
   2696                 "stringValue": "A String", # A UTF-8 encoded string value.
   2697                     # When `exclude_from_indexes` is false (it is indexed) , may have at most 1500 bytes.
   2698                     # Otherwise, may be set to at least 1,000,000 bytes.
   2699                 "blobValue": "A String", # A blob value.
   2700                     # May have at most 1,000,000 bytes.
   2701                     # When `exclude_from_indexes` is false, may have at most 1500 bytes.
   2702                     # In JSON requests, must be base64-encoded.
   2703                 "booleanValue": True or False, # A boolean value.
   2704                 "arrayValue": { # An array value. # An array value.
   2705                     # Cannot contain another array value.
   2706                     # A `Value` instance that sets field `array_value` must not set fields
   2707                     # `meaning` or `exclude_from_indexes`.
   2708                   "values": [ # Values in the array.
   2709                       # The order of this array may not be preserved if it contains a mix of
   2710                       # indexed and unindexed values.
   2711                     # Object with schema name: Value
   2712                   ],
   2713                 },
   2714                 "integerValue": "A String", # An integer value.
   2715                 "nullValue": "A String", # A null value.
   2716               },
   2717             },
   2718             "key": { # A unique identifier for an entity. # The entity's key.
   2719                 #
   2720                 # An entity must have a key, unless otherwise documented (for example,
   2721                 # an entity in `Value.entity_value` may have no key).
   2722                 # An entity's kind is its key path's last element's kind,
   2723                 # or null if it has no key.
   2724                 # If a key's partition ID or any of its path kinds or names are
   2725                 # reserved/read-only, the key is reserved/read-only.
   2726                 # A reserved/read-only key is forbidden in certain documented contexts.
   2727               "path": [ # The entity path.
   2728                   # An entity path consists of one or more elements composed of a kind and a
   2729                   # string or numerical identifier, which identify entities. The first
   2730                   # element identifies a _root entity_, the second element identifies
   2731                   # a _child_ of the root entity, the third element identifies a child of the
   2732                   # second entity, and so forth. The entities identified by all prefixes of
   2733                   # the path are called the element's _ancestors_.
   2734                   #
   2735                   # An entity path is always fully complete: *all* of the entity's ancestors
   2736                   # are required to be in the path along with the entity identifier itself.
   2737                   # The only exception is that in some documented cases, the identifier in the
   2738                   # last path element (for the entity) itself may be omitted. For example,
   2739                   # the last path element of the key of `Mutation.insert` may have no
   2740                   # identifier.
   2741                   #
   2742                   # A path can never be empty, and a path can have at most 100 elements.
   2743                 { # A (kind, ID/name) pair used to construct a key path.
   2744                     #
   2745                     # If either name or ID is set, the element is complete.
   2746                     # If neither is set, the element is incomplete.
   2747                   "kind": "A String", # The kind of the entity.
   2748                       # A kind matching regex `__.*__` is reserved/read-only.
   2749                       # A kind must not contain more than 1500 bytes when UTF-8 encoded.
   2750                       # Cannot be `""`.
   2751                   "id": "A String", # The auto-allocated ID of the entity.
   2752                       # Never equal to zero. Values less than zero are discouraged and may not
   2753                       # be supported in the future.
   2754                   "name": "A String", # The name of the entity.
   2755                       # A name matching regex `__.*__` is reserved/read-only.
   2756                       # A name must not be more than 1500 bytes when UTF-8 encoded.
   2757                       # Cannot be `""`.
   2758                 },
   2759               ],
   2760               "partitionId": { # A partition ID identifies a grouping of entities. The grouping is always # Entities are partitioned into subsets, currently identified by a project
   2761                   # ID and namespace ID.
   2762                   # Queries are scoped to a single partition.
   2763                   # by project and namespace, however the namespace ID may be empty.
   2764                   #
   2765                   # A partition ID contains several dimensions:
   2766                   # project ID and namespace ID.
   2767                   #
   2768                   # Partition dimensions:
   2769                   #
   2770                   # - May be `""`.
   2771                   # - Must be valid UTF-8 bytes.
   2772                   # - Must have values that match regex `[A-Za-z\d\.\-_]{1,100}`
   2773                   # If the value of any dimension matches regex `__.*__`, the partition is
   2774                   # reserved/read-only.
   2775                   # A reserved/read-only partition ID is forbidden in certain documented
   2776                   # contexts.
   2777                   #
   2778                   # Foreign partition IDs (in which the project ID does
   2779                   # not match the context project ID ) are discouraged.
   2780                   # Reads and writes of foreign partition IDs may fail if the project is not in an active state.
   2781                 "projectId": "A String", # The ID of the project to which the entities belong.
   2782                 "namespaceId": "A String", # If not empty, the ID of the namespace to which the entities belong.
   2783               },
   2784             },
   2785           },
   2786         },
   2787       ],
   2788       "skippedCursor": "A String", # A cursor that points to the position after the last skipped result.
   2789           # Will be set when `skipped_results` != 0.
   2790       "moreResults": "A String", # The state of the query after the current batch.
   2791       "endCursor": "A String", # A cursor that points to the position after the last result in the batch.
   2792     },
   2793   }</pre>
   2794 </div>
   2795 
   2796 </body></html>