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.
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.
PathElement
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.
JSON representation
{"kind": string,// Union field id_type can be only one of the following:"id": string,"name": string,// End of list of possible types for union field id_type.}
Fields
kind
string
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 "".
Union field id_type. The type of ID. id_type can be only one of the following:
[[["Easy to understand","easyToUnderstand","thumb-up"],["Solved my problem","solvedMyProblem","thumb-up"],["Other","otherUp","thumb-up"]],[["Hard to understand","hardToUnderstand","thumb-down"],["Incorrect information or sample code","incorrectInformationOrSampleCode","thumb-down"],["Missing the information/samples I need","missingTheInformationSamplesINeed","thumb-down"],["Other","otherDown","thumb-down"]],["Last updated 2025-04-30 UTC."],[[["\u003cp\u003eA Key is a unique identifier for an entity, which can be reserved/read-only if its partition ID or any path elements are restricted.\u003c/p\u003e\n"],["\u003cp\u003eThe JSON representation of a Key includes a \u003ccode\u003epartitionId\u003c/code\u003e to specify the subset where entities are located and a \u003ccode\u003epath\u003c/code\u003e which consists of one or more \u003ccode\u003ePathElement\u003c/code\u003e objects that identify the entity and its ancestors.\u003c/p\u003e\n"],["\u003cp\u003eEach \u003ccode\u003ePathElement\u003c/code\u003e in a Key's path has a \u003ccode\u003ekind\u003c/code\u003e to specify the type of entity and either an \u003ccode\u003eid\u003c/code\u003e or a \u003ccode\u003ename\u003c/code\u003e to uniquely identify the entity.\u003c/p\u003e\n"],["\u003cp\u003eA \u003ccode\u003ePathElement\u003c/code\u003e is considered complete if it has either a name or an ID, and incomplete if it has neither, but a path can never be empty and can have at most 100 elements.\u003c/p\u003e\n"],["\u003cp\u003eThe kind and name fields in a \u003ccode\u003ePathElement\u003c/code\u003e that match the regex \u003ccode\u003e__.*__\u003c/code\u003e are considered to be reserved/read-only, and these fields must not be empty or exceed 1500 bytes when UTF-8 encoded.\u003c/p\u003e\n"]]],[],null,[]]