v1/doc/google/datastore/v1/doc_entity.js

// Copyright 2020 Google LLC
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
//     https://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.

// Note: this file is purely for documentation. Any contents are not expected
// to be loaded as the JS file.

/**
 * A partition ID identifies a grouping of entities. The grouping is always
 * by project and namespace, however the namespace ID may be empty.
 *
 * A partition ID contains several dimensions:
 * project ID and namespace ID.
 *
 * Partition dimensions:
 *
 * - May be `""`.
 * - Must be valid UTF-8 bytes.
 * - Must have values that match regex `[A-Za-z\d\.\-_]{1,100}`
 * If the value of any dimension matches regex `__.*__`, the partition is
 * reserved/read-only.
 * A reserved/read-only partition ID is forbidden in certain documented
 * contexts.
 *
 * Foreign partition IDs (in which the project ID does
 * not match the context project ID ) are discouraged.
 * Reads and writes of foreign partition IDs may fail if the project is not in
 * an active state.
 *
 * @property {string} projectId
 *   The ID of the project to which the entities belong.
 *
 * @property {string} namespaceId
 *   If not empty, the ID of the namespace to which the entities belong.
 *
 * @typedef PartitionId
 * @memberof google.datastore.v1
 * @see [google.datastore.v1.PartitionId definition in proto format]{@link https://github.com/googleapis/googleapis/blob/master/google/datastore/v1/entity.proto}
 */
const PartitionId = {
  // This is for documentation. Actual contents will be loaded by gRPC.
};

/**
 * A unique identifier for an entity.
 * If a key's partition ID or any of its path kinds or names are
 * reserved/read-only, the key is reserved/read-only.
 * A reserved/read-only key is forbidden in certain documented contexts.
 *
 * @property {Object} partitionId
 *   Entities are partitioned into subsets, currently identified by a project
 *   ID and namespace ID.
 *   Queries are scoped to a single partition.
 *
 *   This object should have the same structure as [PartitionId]{@link google.datastore.v1.PartitionId}
 *
 * @property {Object[]} path
 *   The entity path.
 *   An entity path consists of one or more elements composed of a kind and a
 *   string or numerical identifier, which identify entities. The first
 *   element identifies a _root entity_, the second element identifies
 *   a _child_ of the root entity, the third element identifies a child of the
 *   second entity, and so forth. The entities identified by all prefixes of
 *   the path are called the element's _ancestors_.
 *
 *   An entity path is always fully complete: *all* of the entity's ancestors
 *   are required to be in the path along with the entity identifier itself.
 *   The only exception is that in some documented cases, the identifier in the
 *   last path element (for the entity) itself may be omitted. For example,
 *   the last path element of the key of `Mutation.insert` may have no
 *   identifier.
 *
 *   A path can never be empty, and a path can have at most 100 elements.
 *
 *   This object should have the same structure as [PathElement]{@link google.datastore.v1.PathElement}
 *
 * @typedef Key
 * @memberof google.datastore.v1
 * @see [google.datastore.v1.Key definition in proto format]{@link https://github.com/googleapis/googleapis/blob/master/google/datastore/v1/entity.proto}
 */
const Key = {
  // This is for documentation. Actual contents will be loaded by gRPC.

  /**
   * A (kind, ID/name) pair used to construct a key path.
   *
   * If either name or ID is set, the element is complete.
   * If neither is set, the element is incomplete.
   *
   * @property {string} kind
   *   The kind of the entity.
   *   A kind matching regex `__.*__` is reserved/read-only.
   *   A kind must not contain more than 1500 bytes when UTF-8 encoded.
   *   Cannot be `""`.
   *
   * @property {number} id
   *   The auto-allocated ID of the entity.
   *   Never equal to zero. Values less than zero are discouraged and may not
   *   be supported in the future.
   *
   * @property {string} name
   *   The name of the entity.
   *   A name matching regex `__.*__` is reserved/read-only.
   *   A name must not be more than 1500 bytes when UTF-8 encoded.
   *   Cannot be `""`.
   *
   * @typedef PathElement
   * @memberof google.datastore.v1
   * @see [google.datastore.v1.Key.PathElement definition in proto format]{@link https://github.com/googleapis/googleapis/blob/master/google/datastore/v1/entity.proto}
   */
  PathElement: {
    // This is for documentation. Actual contents will be loaded by gRPC.
  }
};

/**
 * An array value.
 *
 * @property {Object[]} values
 *   Values in the array.
 *   The order of values in an array is preserved as long as all values have
 *   identical settings for 'exclude_from_indexes'.
 *
 *   This object should have the same structure as [Value]{@link google.datastore.v1.Value}
 *
 * @typedef ArrayValue
 * @memberof google.datastore.v1
 * @see [google.datastore.v1.ArrayValue definition in proto format]{@link https://github.com/googleapis/googleapis/blob/master/google/datastore/v1/entity.proto}
 */
const ArrayValue = {
  // This is for documentation. Actual contents will be loaded by gRPC.
};

/**
 * A message that can hold any of the supported value types and associated
 * metadata.
 *
 * @property {number} nullValue
 *   A null value.
 *
 *   The number should be among the values of [NullValue]{@link google.protobuf.NullValue}
 *
 * @property {boolean} booleanValue
 *   A boolean value.
 *
 * @property {number} integerValue
 *   An integer value.
 *
 * @property {number} doubleValue
 *   A double value.
 *
 * @property {Object} timestampValue
 *   A timestamp value.
 *   When stored in the Datastore, precise only to microseconds;
 *   any additional precision is rounded down.
 *
 *   This object should have the same structure as [Timestamp]{@link google.protobuf.Timestamp}
 *
 * @property {Object} keyValue
 *   A key value.
 *
 *   This object should have the same structure as [Key]{@link google.datastore.v1.Key}
 *
 * @property {string} stringValue
 *   A UTF-8 encoded string value.
 *   When `exclude_from_indexes` is false (it is indexed) , may have at most 1500 bytes.
 *   Otherwise, may be set to at least 1,000,000 bytes.
 *
 * @property {Buffer} blobValue
 *   A blob value.
 *   May have at most 1,000,000 bytes.
 *   When `exclude_from_indexes` is false, may have at most 1500 bytes.
 *   In JSON requests, must be base64-encoded.
 *
 * @property {Object} geoPointValue
 *   A geo point value representing a point on the surface of Earth.
 *
 *   This object should have the same structure as [LatLng]{@link google.type.LatLng}
 *
 * @property {Object} entityValue
 *   An entity value.
 *
 *   - May have no key.
 *   - May have a key with an incomplete key path.
 *   - May have a reserved/read-only key.
 *
 *   This object should have the same structure as [Entity]{@link google.datastore.v1.Entity}
 *
 * @property {Object} arrayValue
 *   An array value.
 *   Cannot contain another array value.
 *   A `Value` instance that sets field `array_value` must not set fields
 *   `meaning` or `exclude_from_indexes`.
 *
 *   This object should have the same structure as [ArrayValue]{@link google.datastore.v1.ArrayValue}
 *
 * @property {number} meaning
 *   The `meaning` field should only be populated for backwards compatibility.
 *
 * @property {boolean} excludeFromIndexes
 *   If the value should be excluded from all indexes including those defined
 *   explicitly.
 *
 * @typedef Value
 * @memberof google.datastore.v1
 * @see [google.datastore.v1.Value definition in proto format]{@link https://github.com/googleapis/googleapis/blob/master/google/datastore/v1/entity.proto}
 */
const Value = {
  // This is for documentation. Actual contents will be loaded by gRPC.
};

/**
 * A Datastore data object.
 *
 * An entity is limited to 1 megabyte when stored. That _roughly_
 * corresponds to a limit of 1 megabyte for the serialized form of this
 * message.
 *
 * @property {Object} key
 *   The entity's key.
 *
 *   An entity must have a key, unless otherwise documented (for example,
 *   an entity in `Value.entity_value` may have no key).
 *   An entity's kind is its key path's last element's kind,
 *   or null if it has no key.
 *
 *   This object should have the same structure as [Key]{@link google.datastore.v1.Key}
 *
 * @property {Object.<string, Object>} properties
 *   The entity's properties.
 *   The map's keys are property names.
 *   A property name matching regex `__.*__` is reserved.
 *   A reserved property name is forbidden in certain documented contexts.
 *   The name must not contain more than 500 characters.
 *   The name cannot be `""`.
 *
 * @typedef Entity
 * @memberof google.datastore.v1
 * @see [google.datastore.v1.Entity definition in proto format]{@link https://github.com/googleapis/googleapis/blob/master/google/datastore/v1/entity.proto}
 */
const Entity = {
  // This is for documentation. Actual contents will be loaded by gRPC.
};