[
  {
    "id": "firestore-data-apis-and-values-named-database-document-namespaces",
    "name": "Named database document namespaces",
    "area": "Data APIs and values",
    "local": "available",
    "other": "available",
    "default": "available",
    "description": "Lets one project hold several Firestore databases, each with its own database ID, so documents, indexes and Security Rules in one database stay separate from the others.",
    "docs": "https://docs.cloud.google.com/firestore/native/docs/manage-databases",
    "notes": ""
  },
  {
    "id": "firestore-data-apis-and-values-get-one-document",
    "name": "Get one document",
    "area": "Data APIs and values",
    "local": "available",
    "other": "available",
    "default": "available",
    "description": "Reads a single document by its full resource path and returns its fields with its create and update times, or a not-found error when no document exists there.",
    "docs": "https://docs.cloud.google.com/firestore/docs/reference/rest/v1/projects.databases.documents/get",
    "notes": ""
  },
  {
    "id": "firestore-data-apis-and-values-create-a-document",
    "name": "Create a document",
    "area": "Data APIs and values",
    "local": "available",
    "other": "available",
    "default": "available",
    "description": "Creates a new document in a collection, using a caller-supplied or server-generated document ID, and fails if a document already exists at that path.",
    "docs": "https://docs.cloud.google.com/firestore/docs/reference/rest/v1/projects.databases.documents/createDocument",
    "notes": ""
  },
  {
    "id": "firestore-data-apis-and-values-update-a-document",
    "name": "Update a document",
    "area": "Data APIs and values",
    "local": "available",
    "other": "available",
    "default": "available",
    "description": "Updates or inserts a document at a path. With an update mask, only the listed fields change, and listed fields missing from the input are removed.",
    "docs": "https://docs.cloud.google.com/firestore/docs/reference/rest/v1/projects.databases.documents/patch",
    "notes": ""
  },
  {
    "id": "firestore-data-apis-and-values-delete-a-document",
    "name": "Delete a document",
    "area": "Data APIs and values",
    "local": "available",
    "other": "available",
    "default": "available",
    "description": "Deletes the document at a path, optionally only if a precondition holds, such as the document existing or having a particular update time.",
    "docs": "https://docs.cloud.google.com/firestore/docs/reference/rest/v1/projects.databases.documents/delete",
    "notes": ""
  },
  {
    "id": "firestore-data-apis-and-values-list-documents",
    "name": "List documents",
    "area": "Data APIs and values",
    "local": "available",
    "other": "available",
    "default": "available",
    "description": "Lists the documents in a collection under a parent path one page at a time, with optional page size, field mask and read time.",
    "docs": "https://docs.cloud.google.com/firestore/docs/reference/rest/v1/projects.databases.documents/list",
    "notes": ""
  },
  {
    "id": "firestore-data-apis-and-values-batch-get-documents",
    "name": "Batch-get documents",
    "area": "Data APIs and values",
    "local": "available",
    "other": "available",
    "default": "available",
    "description": "Reads many documents by path in one request and streams back each document found or a marker for each missing one, optionally inside a transaction or at a past time.",
    "docs": "https://docs.cloud.google.com/firestore/docs/reference/rest/v1/projects.databases.documents/batchGet",
    "notes": ""
  },
  {
    "id": "firestore-data-apis-and-values-atomic-multi-write-commit",
    "name": "Atomic multi-write Commit",
    "area": "Data APIs and values",
    "local": "available",
    "other": "available",
    "default": "available",
    "description": "Applies a list of writes atomically, so all of them take effect or none do, and returns a result for each write along with the commit time.",
    "docs": "https://docs.cloud.google.com/firestore/docs/reference/rest/v1/projects.databases.documents/commit",
    "notes": ""
  },
  {
    "id": "firestore-data-apis-and-values-batchwrite-independent-write-statuses",
    "name": "BatchWrite independent write statuses",
    "area": "Data APIs and values",
    "local": "available",
    "other": "available",
    "default": "available",
    "description": "Applies a batch of writes without atomicity, in any order and at most one per document, and returns a separate status for each write.",
    "docs": "https://docs.cloud.google.com/firestore/docs/reference/rest/v1/projects.databases.documents/batchWrite",
    "notes": ""
  },
  {
    "id": "firestore-data-apis-and-values-field-mask-projection",
    "name": "Field-mask projection",
    "area": "Data APIs and values",
    "local": "available",
    "other": "available",
    "default": "available",
    "description": "Limits a read to the fields listed in a document mask, so the returned document contains only those fields instead of the whole document.",
    "docs": "https://docs.cloud.google.com/firestore/docs/reference/rpc/google.firestore.v1",
    "notes": ""
  },
  {
    "id": "firestore-data-apis-and-values-nested-and-quoted-field-paths",
    "name": "Nested and quoted field paths",
    "area": "Data APIs and values",
    "local": "available",
    "other": "available",
    "default": "available",
    "description": "Addresses a field inside nested maps with a dot-separated path, and quotes field names containing special characters with backticks so any field can be referenced.",
    "docs": "https://docs.cloud.google.com/firestore/docs/reference/rpc/google.firestore.v1",
    "notes": ""
  },
  {
    "id": "firestore-data-apis-and-values-server-timestamp-transforms",
    "name": "Server timestamp transforms",
    "area": "Data APIs and values",
    "local": "available",
    "other": "available",
    "default": "available",
    "description": "Sets a field to the time at which the server processed the request, rather than a time supplied by the client.",
    "docs": "https://docs.cloud.google.com/firestore/docs/reference/rpc/google.firestore.v1",
    "notes": ""
  },
  {
    "id": "firestore-data-apis-and-values-numeric-increment-transforms",
    "name": "Numeric increment transforms",
    "area": "Data APIs and values",
    "local": "available",
    "other": "available",
    "default": "available",
    "description": "Atomically adds a number to a numeric field on the server, and sets the field to that number when it is missing or not numeric.",
    "docs": "https://docs.cloud.google.com/firestore/docs/reference/rpc/google.firestore.v1",
    "notes": ""
  },
  {
    "id": "firestore-data-apis-and-values-array-union-transforms",
    "name": "Array-union transforms",
    "area": "Data APIs and values",
    "local": "available",
    "other": "available",
    "default": "available",
    "description": "Appends elements to an array field only when they are not already in it, and starts a new array when the field is missing or not an array.",
    "docs": "https://docs.cloud.google.com/firestore/docs/reference/rpc/google.firestore.v1",
    "notes": ""
  },
  {
    "id": "firestore-data-apis-and-values-array-remove-transforms",
    "name": "Array-remove transforms",
    "area": "Data APIs and values",
    "local": "available",
    "other": "available",
    "default": "available",
    "description": "Removes every occurrence of the given elements from an array field, and leaves an empty array when the field is missing or not an array.",
    "docs": "https://docs.cloud.google.com/firestore/docs/reference/rpc/google.firestore.v1",
    "notes": ""
  },
  {
    "id": "firestore-data-apis-and-values-typed-integer-versus-floating-point-values",
    "name": "Typed integer versus floating-point values",
    "area": "Data APIs and values",
    "local": "available",
    "other": "available",
    "default": "available",
    "description": "Stores whole numbers as 64-bit signed integers and fractional numbers as 64-bit double-precision floats, as two distinct numeric value types.",
    "docs": "https://firebase.google.com/docs/firestore/manage-data/data-types",
    "notes": ""
  },
  {
    "id": "firestore-data-apis-and-values-geopoint-typed-round-trip",
    "name": "GeoPoint typed round trip",
    "area": "Data APIs and values",
    "local": "available",
    "other": "available",
    "default": "available",
    "description": "Stores a latitude and longitude pair as a geographic point value and returns the same point when the document is read back.",
    "docs": "https://firebase.google.com/docs/firestore/manage-data/data-types",
    "notes": ""
  },
  {
    "id": "firestore-data-apis-and-values-document-reference-typed-values",
    "name": "Document-reference typed values",
    "area": "Data APIs and values",
    "local": "available",
    "other": "available",
    "default": "available",
    "description": "Stores a reference to another document as a field value, holding the full resource path of that document.",
    "docs": "https://docs.cloud.google.com/firestore/docs/reference/rpc/google.firestore.v1",
    "notes": ""
  },
  {
    "id": "firestore-data-apis-and-values-missing-parent-subcollection-routing",
    "name": "Missing-parent subcollection routing",
    "area": "Data APIs and values",
    "local": "available",
    "other": "available",
    "default": "available",
    "description": "Allows a document to be written in a subcollection even though its parent document was never created, because a subcollection path does not require its parent to exist.",
    "docs": "https://firebase.google.com/docs/firestore/data-model",
    "notes": ""
  },
  {
    "id": "firestore-data-apis-and-values-list-collection-ids-at-a-historical-time",
    "name": "List collection IDs at a historical time",
    "area": "Data APIs and values",
    "local": "available",
    "other": "available",
    "default": "available",
    "description": "Lists the IDs of the collections directly under a document or the database root as they were at a chosen past read time.",
    "docs": "https://docs.cloud.google.com/firestore/docs/reference/rpc/google.firestore.v1",
    "notes": ""
  },
  {
    "id": "firestore-queries-aggregation-and-listeners-equality-filters",
    "name": "Equality filters",
    "area": "Queries, aggregation and listeners",
    "local": "available",
    "other": "available",
    "default": "available",
    "description": "Returns only documents whose field is exactly equal to a given value, such as a string, number or reference.",
    "docs": "https://firebase.google.com/docs/firestore/manage-data/data-types",
    "notes": ""
  },
  {
    "id": "firestore-queries-aggregation-and-listeners-range-and-inequality-filters",
    "name": "Range and inequality filters",
    "area": "Queries, aggregation and listeners",
    "local": "available",
    "other": "available",
    "default": "available",
    "description": "Matches documents whose field is less than, at most, greater than, at least, or not equal to a value, and can combine bounds to select a range.",
    "docs": "https://firebase.google.com/docs/firestore/query-data/queries",
    "notes": ""
  },
  {
    "id": "firestore-queries-aggregation-and-listeners-in-filters",
    "name": "IN filters",
    "area": "Queries, aggregation and listeners",
    "local": "available",
    "other": "available",
    "default": "available",
    "description": "Matches documents whose field equals any one of the values in a list given in the filter.",
    "docs": "https://firebase.google.com/docs/firestore/query-data/queries",
    "notes": ""
  },
  {
    "id": "firestore-queries-aggregation-and-listeners-not-in-filters",
    "name": "NOT_IN filters",
    "area": "Queries, aggregation and listeners",
    "local": "limited",
    "other": "limited",
    "default": "limited",
    "description": "Matches documents where the field exists, is not null, and differs from every value in a list given in the filter.",
    "docs": "https://firebase.google.com/docs/firestore/query-data/queries",
    "notes": "Unsupported combinations retained."
  },
  {
    "id": "firestore-queries-aggregation-and-listeners-or-filters",
    "name": "OR filters",
    "area": "Queries, aggregation and listeners",
    "local": "limited",
    "other": "limited",
    "default": "limited",
    "description": "Combines several filters with a logical OR, so a document matches when at least one of them is true.",
    "docs": "https://firebase.google.com/docs/firestore/query-data/queries",
    "notes": "Combination restrictions remain."
  },
  {
    "id": "firestore-queries-aggregation-and-listeners-array-contains-filters",
    "name": "Array-contains filters",
    "area": "Queries, aggregation and listeners",
    "local": "available",
    "other": "available",
    "default": "available",
    "description": "Matches documents whose array field holds a given value as one of its elements.",
    "docs": "https://firebase.google.com/docs/firestore/query-data/queries",
    "notes": ""
  },
  {
    "id": "firestore-queries-aggregation-and-listeners-array-contains-any-filters",
    "name": "Array-contains-any filters",
    "area": "Queries, aggregation and listeners",
    "local": "available",
    "other": "available",
    "default": "available",
    "description": "Matches documents whose array field holds at least one of the values in a list of candidates.",
    "docs": "https://firebase.google.com/docs/firestore/query-data/queries",
    "notes": ""
  },
  {
    "id": "firestore-queries-aggregation-and-listeners-collection-group-queries",
    "name": "Collection-group queries",
    "area": "Queries, aggregation and listeners",
    "local": "available",
    "other": "available",
    "default": "available",
    "description": "Queries all collections that share one collection ID, wherever they sit in the database, as a single query.",
    "docs": "https://firebase.google.com/docs/firestore/query-data/queries",
    "notes": ""
  },
  {
    "id": "firestore-queries-aggregation-and-listeners-explicit-query-ordering",
    "name": "Explicit query ordering",
    "area": "Queries, aggregation and listeners",
    "local": "available",
    "other": "available",
    "default": "available",
    "description": "Sorts query results by one or more fields, each ascending or descending, with later fields breaking ties between earlier ones.",
    "docs": "https://firebase.google.com/docs/firestore/query-data/queries",
    "notes": ""
  },
  {
    "id": "firestore-queries-aggregation-and-listeners-start-end-query-cursors",
    "name": "Start/end query cursors",
    "area": "Queries, aggregation and listeners",
    "local": "available",
    "other": "available",
    "default": "available",
    "description": "Starts or ends a query at a position given by field values, either just before or just after them, so ordered results can be read in pages.",
    "docs": "https://firebase.google.com/docs/firestore/query-data/queries",
    "notes": ""
  },
  {
    "id": "firestore-queries-aggregation-and-listeners-query-limits",
    "name": "Query limits",
    "area": "Queries, aggregation and listeners",
    "local": "available",
    "other": "available",
    "default": "available",
    "description": "Restricts a query to return no more than a chosen number of documents, counted from the start of the sort order.",
    "docs": "https://firebase.google.com/docs/firestore/query-data/queries",
    "notes": ""
  },
  {
    "id": "firestore-queries-aggregation-and-listeners-query-offsets",
    "name": "Query offsets",
    "area": "Queries, aggregation and listeners",
    "local": "available",
    "other": "available",
    "default": "available",
    "description": "Skips a given number of leading documents of a query before returning results, though skipped documents still count as reads.",
    "docs": "https://docs.cloud.google.com/firestore/docs/reference/rpc/google.firestore.v1",
    "notes": ""
  },
  {
    "id": "firestore-queries-aggregation-and-listeners-document-key-query-constraints",
    "name": "Document-key query constraints",
    "area": "Queries, aggregation and listeners",
    "local": "available",
    "other": "available",
    "default": "available",
    "description": "Filters or orders a query on the document key, written __name__, for example to select a range of document IDs.",
    "docs": "https://firebase.google.com/docs/firestore/query-data/queries",
    "notes": ""
  },
  {
    "id": "firestore-queries-aggregation-and-listeners-count-aggregation",
    "name": "Count aggregation",
    "area": "Queries, aggregation and listeners",
    "local": "available",
    "other": "available",
    "default": "available",
    "description": "Returns how many documents match a query, without reading and returning the documents themselves.",
    "docs": "https://firebase.google.com/docs/firestore/query-data/aggregation-queries",
    "notes": ""
  },
  {
    "id": "firestore-queries-aggregation-and-listeners-sum-aggregation",
    "name": "Sum aggregation",
    "area": "Queries, aggregation and listeners",
    "local": "available",
    "other": "available",
    "default": "available",
    "description": "Returns the total of a numeric field across all documents matching a query.",
    "docs": "https://firebase.google.com/docs/firestore/query-data/aggregation-queries",
    "notes": ""
  },
  {
    "id": "firestore-queries-aggregation-and-listeners-average-aggregation",
    "name": "Average aggregation",
    "area": "Queries, aggregation and listeners",
    "local": "available",
    "other": "available",
    "default": "available",
    "description": "Returns the arithmetic mean of a numeric field across all documents matching a query.",
    "docs": "https://firebase.google.com/docs/firestore/query-data/aggregation-queries",
    "notes": ""
  },
  {
    "id": "firestore-queries-aggregation-and-listeners-multiple-aggregates-in-one-request",
    "name": "Multiple aggregates in one request",
    "area": "Queries, aggregation and listeners",
    "local": "limited",
    "other": "limited",
    "default": "limited",
    "description": "Computes several aggregations, such as count, sum and average, over the same query in a single request.",
    "docs": "https://firebase.google.com/docs/firestore/query-data/aggregation-queries",
    "notes": "shared-field/window restrictions."
  },
  {
    "id": "firestore-queries-aggregation-and-listeners-query-partitioning-cursors",
    "name": "Query partitioning cursors",
    "area": "Queries, aggregation and listeners",
    "local": "available",
    "other": "unavailable",
    "default": "unavailable",
    "description": "Splits a collection group query into partitions by returning cursors at the split points, so separate workers can run the pieces in parallel.",
    "docs": "https://docs.cloud.google.com/firestore/docs/reference/rest/v1/projects.databases.documents/partitionQuery",
    "notes": ""
  },
  {
    "id": "firestore-queries-aggregation-and-listeners-listdocuments-ordering-by-fields",
    "name": "ListDocuments ordering by fields",
    "area": "Queries, aggregation and listeners",
    "local": "available",
    "other": "available",
    "default": "available",
    "description": "Sorts the documents of a list request by an order-by string such as priority desc, instead of the default order by document name.",
    "docs": "https://docs.cloud.google.com/firestore/docs/reference/rest/v1/projects.databases.documents/list",
    "notes": ""
  },
  {
    "id": "firestore-queries-aggregation-and-listeners-ordered-listdocuments-continuation",
    "name": "Ordered ListDocuments continuation",
    "area": "Queries, aggregation and listeners",
    "local": "available",
    "other": "unavailable",
    "default": "available",
    "description": "Returns the next page of an ordered list request when given the page token from the previous response, keeping the same sort order.",
    "docs": "https://docs.cloud.google.com/firestore/docs/reference/rest/v1/projects.databases.documents/list",
    "notes": ""
  },
  {
    "id": "firestore-queries-aggregation-and-listeners-name-only-descending-listdocuments",
    "name": "Name-only descending ListDocuments",
    "area": "Queries, aggregation and listeners",
    "local": "available",
    "other": "unavailable",
    "default": "unavailable",
    "description": "Lists documents in reverse document-name order by ordering on __name__ descending, with no field-based ordering.",
    "docs": "https://docs.cloud.google.com/firestore/docs/reference/rest/v1/projects.databases.documents/list",
    "notes": ""
  },
  {
    "id": "firestore-queries-aggregation-and-listeners-omitted-collection-direct-child-listing",
    "name": "Omitted-collection direct-child listing",
    "area": "Queries, aggregation and listeners",
    "local": "available",
    "other": "available",
    "default": "available",
    "description": "Lists documents from all collections directly under a parent when no collection ID is given, instead of from one named collection.",
    "docs": "https://docs.cloud.google.com/firestore/docs/reference/rest/v1/projects.databases.documents/list",
    "notes": ""
  },
  {
    "id": "firestore-queries-aggregation-and-listeners-omitted-collection-field-ordering",
    "name": "Omitted-collection field ordering",
    "area": "Queries, aggregation and listeners",
    "local": "available",
    "other": "unavailable",
    "default": "unavailable",
    "description": "Applies a field-based sort to a list request that covers every collection under a parent because no collection ID was given.",
    "docs": "https://docs.cloud.google.com/firestore/docs/reference/rest/v1/projects.databases.documents/list",
    "notes": ""
  },
  {
    "id": "firestore-queries-aggregation-and-listeners-omitted-collection-missing-document-synthesis",
    "name": "Omitted-collection missing-document synthesis",
    "area": "Queries, aggregation and listeners",
    "local": "available",
    "other": "unavailable",
    "default": "unavailable",
    "description": "With show-missing set, a list across all collections under a parent also returns nonexistent documents that have nested subdocuments, as entries with a key but no fields.",
    "docs": "https://docs.cloud.google.com/firestore/docs/reference/rest/v1/projects.databases.documents/list",
    "notes": ""
  },
  {
    "id": "firestore-queries-aggregation-and-listeners-euclidean-nearest-neighbor-distance",
    "name": "Euclidean nearest-neighbor distance",
    "area": "Queries, aggregation and listeners",
    "local": "available",
    "other": "available",
    "default": "available",
    "description": "Finds the stored vectors closest to a query vector by straight-line Euclidean distance, where a smaller distance means a closer match.",
    "docs": "https://docs.cloud.google.com/firestore/native/docs/vector-search",
    "notes": ""
  },
  {
    "id": "firestore-queries-aggregation-and-listeners-cosine-nearest-neighbor-distance",
    "name": "Cosine nearest-neighbor distance",
    "area": "Queries, aggregation and listeners",
    "local": "available",
    "other": "available",
    "default": "available",
    "description": "Finds the stored vectors most similar to a query vector by the angle between them, using cosine distance, which ignores vector length.",
    "docs": "https://docs.cloud.google.com/firestore/native/docs/vector-search",
    "notes": ""
  },
  {
    "id": "firestore-queries-aggregation-and-listeners-dot-product-nearest-neighbor-distance",
    "name": "Dot-product nearest-neighbor distance",
    "area": "Queries, aggregation and listeners",
    "local": "available",
    "other": "available",
    "default": "available",
    "description": "Finds the stored vectors most similar to a query vector by their dot product, which reflects both the angle between them and their lengths.",
    "docs": "https://docs.cloud.google.com/firestore/native/docs/vector-search",
    "notes": ""
  },
  {
    "id": "firestore-queries-aggregation-and-listeners-nearest-neighbor-distance-thresholds",
    "name": "Nearest-neighbor distance thresholds",
    "area": "Queries, aggregation and listeners",
    "local": "available",
    "other": "available",
    "default": "available",
    "description": "Keeps only nearest-neighbor results whose distance passes a set threshold, so weakly related documents are left out of the results.",
    "docs": "https://docs.cloud.google.com/firestore/native/docs/vector-search",
    "notes": ""
  },
  {
    "id": "firestore-queries-aggregation-and-listeners-nearest-neighbor-distance-projection",
    "name": "Nearest-neighbor distance projection",
    "area": "Queries, aggregation and listeners",
    "local": "available",
    "other": "available",
    "default": "available",
    "description": "Writes each nearest-neighbor result's computed distance into a chosen output field of the returned document.",
    "docs": "https://docs.cloud.google.com/firestore/native/docs/vector-search",
    "notes": ""
  },
  {
    "id": "firestore-queries-aggregation-and-listeners-nested-field-nearest-neighbor-lookup",
    "name": "Nested-field nearest-neighbor lookup",
    "area": "Queries, aggregation and listeners",
    "local": "available",
    "other": "unavailable",
    "default": "available",
    "description": "Runs a nearest-neighbor search on a vector field stored inside a map, addressed by its dotted field path.",
    "docs": "https://docs.cloud.google.com/firestore/native/docs/vector-search",
    "notes": ""
  },
  {
    "id": "firestore-queries-aggregation-and-listeners-initial-document-listener-snapshot",
    "name": "Initial document listener snapshot",
    "area": "Queries, aggregation and listeners",
    "local": "available",
    "other": "available",
    "default": "available",
    "description": "Opens a listen stream on specific documents and first sends their current contents, before streaming any later changes.",
    "docs": "https://docs.cloud.google.com/firestore/docs/reference/rpc/google.firestore.v1",
    "notes": ""
  },
  {
    "id": "firestore-queries-aggregation-and-listeners-initial-query-listener-snapshot",
    "name": "Initial query listener snapshot",
    "area": "Queries, aggregation and listeners",
    "local": "available",
    "other": "available",
    "default": "available",
    "description": "Opens a listen stream on a query and first sends every matching document, followed by a marker that the result set is current.",
    "docs": "https://docs.cloud.google.com/firestore/docs/reference/rpc/google.firestore.v1",
    "notes": ""
  },
  {
    "id": "firestore-queries-aggregation-and-listeners-incremental-listener-document-changes",
    "name": "Incremental listener document changes",
    "area": "Queries, aggregation and listeners",
    "local": "available",
    "other": "unavailable",
    "default": "unavailable",
    "description": "Streams only the documents added, modified or removed since the previous snapshot of a listened target, instead of resending the whole result.",
    "docs": "https://docs.cloud.google.com/firestore/docs/reference/rpc/google.firestore.v1",
    "notes": ""
  },
  {
    "id": "firestore-queries-aggregation-and-listeners-limit-query-listener-refill",
    "name": "Limit-query listener refill",
    "area": "Queries, aggregation and listeners",
    "local": "available",
    "other": "available",
    "default": "available",
    "description": "Keeps a listener on a limited query full: when a document drops out of the results, the next matching document is brought in to take its place.",
    "docs": "https://docs.cloud.google.com/firestore/docs/reference/rpc/google.firestore.v1",
    "notes": ""
  },
  {
    "id": "firestore-queries-aggregation-and-listeners-listen-resume-token-catch-up",
    "name": "Listen resume-token catch-up",
    "area": "Queries, aggregation and listeners",
    "local": "available",
    "other": "unavailable",
    "default": "unavailable",
    "description": "Lets a listener reconnect with a resume token and receive only the changes made since that token, instead of the full result set.",
    "docs": "https://docs.cloud.google.com/firestore/docs/reference/rpc/google.firestore.v1",
    "notes": ""
  },
  {
    "id": "firestore-queries-aggregation-and-listeners-listen-read-time-catch-up",
    "name": "Listen read-time catch-up",
    "area": "Queries, aggregation and listeners",
    "local": "available",
    "other": "unavailable",
    "default": "unavailable",
    "description": "Starts a listen target after a chosen read time, so the stream sends only changes made since then, given the client already holds the earlier state.",
    "docs": "https://docs.cloud.google.com/firestore/docs/reference/rpc/google.firestore.v1",
    "notes": ""
  },
  {
    "id": "firestore-queries-aggregation-and-listeners-listen-expected-count-reconciliation",
    "name": "Listen expected-count reconciliation",
    "area": "Queries, aggregation and listeners",
    "local": "available",
    "other": "unavailable",
    "default": "unavailable",
    "description": "Tells the server how many documents the client last held for a target, so the server can check whether the resumed result set still matches.",
    "docs": "https://docs.cloud.google.com/firestore/docs/reference/rpc/google.firestore.v1",
    "notes": ""
  },
  {
    "id": "firestore-queries-aggregation-and-listeners-listen-unchanged-names-bloom-filter",
    "name": "Listen unchanged_names Bloom filter",
    "area": "Queries, aggregation and listeners",
    "local": "available",
    "other": "unknown",
    "default": "unavailable",
    "description": "Sends a Bloom filter holding the names of all documents that match a listened target, which a client can use to find cached documents that no longer match.",
    "docs": "https://docs.cloud.google.com/firestore/docs/reference/rpc/google.firestore.v1",
    "notes": ""
  },
  {
    "id": "firestore-queries-aggregation-and-listeners-write-stream-committed-acknowledgement-replay",
    "name": "Write stream committed-acknowledgement replay",
    "area": "Queries, aggregation and listeners",
    "local": "available",
    "other": "unavailable",
    "default": "unavailable",
    "description": "Lets a client resume a Write stream with its stream ID and the token of the last response it received, continuing from that position in the stream.",
    "docs": "https://docs.cloud.google.com/firestore/docs/reference/rpc/google.firestore.v1",
    "notes": ""
  },
  {
    "id": "firestore-index-configuration-execution-and-explain-create-composite-index-metadata",
    "name": "Create composite-index metadata",
    "area": "Index configuration, execution and Explain",
    "local": "available",
    "other": "unknown",
    "default": "available",
    "description": "Creates a composite index over several fields of a collection group, starting a long-running build, and returns the operation that tracks it.",
    "docs": "https://docs.cloud.google.com/firestore/docs/reference/rpc/google.firestore.admin.v1",
    "notes": ""
  },
  {
    "id": "firestore-index-configuration-execution-and-explain-get-composite-index-metadata",
    "name": "Get composite-index metadata",
    "area": "Index configuration, execution and Explain",
    "local": "available",
    "other": "unknown",
    "default": "available",
    "description": "Reads one composite index by name, returning its query scope, fields and current state.",
    "docs": "https://docs.cloud.google.com/firestore/docs/reference/rpc/google.firestore.admin.v1",
    "notes": ""
  },
  {
    "id": "firestore-index-configuration-execution-and-explain-list-composite-index-metadata",
    "name": "List composite-index metadata",
    "area": "Index configuration, execution and Explain",
    "local": "available",
    "other": "unknown",
    "default": "available",
    "description": "Lists the composite indexes of a collection group one page at a time, optionally narrowed by a filter.",
    "docs": "https://docs.cloud.google.com/firestore/docs/reference/rpc/google.firestore.admin.v1",
    "notes": ""
  },
  {
    "id": "firestore-index-configuration-execution-and-explain-delete-composite-index-metadata",
    "name": "Delete composite-index metadata",
    "area": "Index configuration, execution and Explain",
    "local": "available",
    "other": "unknown",
    "default": "available",
    "description": "Deletes a composite index by name, so queries can no longer be served from it.",
    "docs": "https://docs.cloud.google.com/firestore/docs/reference/rpc/google.firestore.admin.v1",
    "notes": ""
  },
  {
    "id": "firestore-index-configuration-execution-and-explain-single-field-ascending-index-configuration",
    "name": "Single-field ascending index configuration",
    "area": "Index configuration, execution and Explain",
    "local": "available",
    "other": "unknown",
    "default": "available",
    "description": "Sets a field's index to ascending order, which serves equality, range and ascending-sort queries on that field.",
    "docs": "https://docs.cloud.google.com/firestore/docs/reference/rest/v1/projects.databases.collectionGroups.fields",
    "notes": ""
  },
  {
    "id": "firestore-index-configuration-execution-and-explain-single-field-descending-index-configuration",
    "name": "Single-field descending index configuration",
    "area": "Index configuration, execution and Explain",
    "local": "available",
    "other": "unknown",
    "default": "available",
    "description": "Sets a field's index to descending order, which serves equality, range and descending-sort queries on that field.",
    "docs": "https://docs.cloud.google.com/firestore/docs/reference/rest/v1/projects.databases.collectionGroups.fields",
    "notes": ""
  },
  {
    "id": "firestore-index-configuration-execution-and-explain-single-field-array-index-configuration",
    "name": "Single-field array index configuration",
    "area": "Index configuration, execution and Explain",
    "local": "available",
    "other": "unknown",
    "default": "available",
    "description": "Sets a field's index to array-contains mode, which serves array-contains and array-contains-any queries on the elements of an array field.",
    "docs": "https://docs.cloud.google.com/firestore/docs/reference/rest/v1/projects.databases.collectionGroups.fields",
    "notes": ""
  },
  {
    "id": "firestore-index-configuration-execution-and-explain-single-field-index-exemption",
    "name": "Single-field index exemption",
    "area": "Index configuration, execution and Explain",
    "local": "available",
    "other": "unknown",
    "default": "available",
    "description": "Turns off some or all automatic single-field indexes for a field, overriding the default indexing that every field otherwise gets.",
    "docs": "https://docs.cloud.google.com/firestore/docs/reference/rest/v1/projects.databases.collectionGroups.fields",
    "notes": ""
  },
  {
    "id": "firestore-index-configuration-execution-and-explain-inherited-single-field-configuration",
    "name": "Inherited single-field configuration",
    "area": "Index configuration, execution and Explain",
    "local": "available",
    "other": "unknown",
    "default": "available",
    "description": "Reports that a field has no index settings of its own and follows the configuration of its ancestor field.",
    "docs": "https://docs.cloud.google.com/firestore/docs/reference/rest/v1/projects.databases.collectionGroups.fields",
    "notes": ""
  },
  {
    "id": "firestore-index-configuration-execution-and-explain-required-composite-index-rejection-for-queries",
    "name": "Required composite-index rejection for queries",
    "area": "Index configuration, execution and Explain",
    "local": "available",
    "other": "unavailable",
    "default": "unavailable",
    "description": "Fails a query that needs a composite index which does not exist, with an error that describes the index to create.",
    "docs": "https://firebase.google.com/docs/firestore/query-data/index-overview",
    "notes": ""
  },
  {
    "id": "firestore-index-configuration-execution-and-explain-required-index-rejection-for-aggregations",
    "name": "Required-index rejection for aggregations",
    "area": "Index configuration, execution and Explain",
    "local": "available",
    "other": "unavailable",
    "default": "unavailable",
    "description": "Fails an aggregation query, such as count or sum, when no index covers its filters and ordering, with an error naming the missing index.",
    "docs": "https://firebase.google.com/docs/firestore/query-data/index-overview",
    "notes": ""
  },
  {
    "id": "firestore-index-configuration-execution-and-explain-required-index-rejection-for-query-listeners",
    "name": "Required-index rejection for query listeners",
    "area": "Index configuration, execution and Explain",
    "local": "available",
    "other": "unavailable",
    "default": "unavailable",
    "description": "Fails a real-time listener on a query when an index it needs is missing, so the listener receives an error instead of results.",
    "docs": "https://firebase.google.com/docs/firestore/query-data/index-overview",
    "notes": ""
  },
  {
    "id": "firestore-index-configuration-execution-and-explain-equality-index-merging",
    "name": "Equality index merging",
    "area": "Index configuration, execution and Explain",
    "local": "available",
    "other": "unknown",
    "default": "unavailable",
    "description": "Answers a query with several equality filters by merging separate single-field indexes, which avoids needing a dedicated composite index.",
    "docs": "https://firebase.google.com/docs/firestore/query-data/index-overview",
    "notes": ""
  },
  {
    "id": "firestore-index-configuration-execution-and-explain-asynchronous-composite-index-build",
    "name": "Asynchronous composite-index build",
    "area": "Index configuration, execution and Explain",
    "local": "available",
    "other": "unknown",
    "default": "unavailable",
    "description": "Builds a new composite index in the background as a long-running operation, with the index in a creating state until it becomes ready.",
    "docs": "https://docs.cloud.google.com/firestore/docs/reference/rest/v1/projects.databases.collectionGroups.indexes",
    "notes": ""
  },
  {
    "id": "firestore-index-configuration-execution-and-explain-reject-non-ready-indexes-for-serving",
    "name": "Reject non-READY indexes for serving",
    "area": "Index configuration, execution and Explain",
    "local": "available",
    "other": "unknown",
    "default": "unavailable",
    "description": "Serves queries from an index only once its state is READY, never while it is still being built.",
    "docs": "https://firebase.google.com/docs/firestore/query-data/index-overview",
    "notes": ""
  },
  {
    "id": "firestore-index-configuration-execution-and-explain-failed-index-build-and-needs-repair-state",
    "name": "Failed index build and NEEDS_REPAIR state",
    "area": "Index configuration, execution and Explain",
    "local": "available",
    "other": "unknown",
    "default": "unavailable",
    "description": "Marks an index whose creation went wrong as NEEDS_REPAIR, a state with no active build operation where the most recent build failed.",
    "docs": "https://docs.cloud.google.com/firestore/docs/reference/rest/v1/projects.databases.collectionGroups.indexes",
    "notes": ""
  },
  {
    "id": "firestore-index-configuration-execution-and-explain-cancel-an-index-build",
    "name": "Cancel an index build",
    "area": "Index configuration, execution and Explain",
    "local": "available",
    "other": "unknown",
    "default": "unavailable",
    "description": "Requests cancellation of an in-progress index build by cancelling the long-running operation that is creating the index, on a best-effort basis.",
    "docs": "https://docs.cloud.google.com/firestore/docs/reference/rest/v1/projects.databases.collectionGroups.indexes",
    "notes": ""
  },
  {
    "id": "firestore-index-configuration-execution-and-explain-asynchronous-single-field-configuration",
    "name": "Asynchronous single-field configuration",
    "area": "Index configuration, execution and Explain",
    "local": "available",
    "other": "unknown",
    "default": "unavailable",
    "description": "Applies a change to a field's index configuration as a long-running operation, so the new settings take effect only when it finishes.",
    "docs": "https://docs.cloud.google.com/firestore/docs/reference/rest/v1/projects.databases.collectionGroups.fields/patch",
    "notes": ""
  },
  {
    "id": "firestore-index-configuration-execution-and-explain-enforce-index-entry-count-per-document",
    "name": "Enforce index-entry count per document",
    "area": "Index configuration, execution and Explain",
    "local": "available",
    "other": "unknown",
    "default": "unavailable",
    "description": "Rejects a write that would give one document more index entries, across all of its indexes, than the per-document maximum allows.",
    "docs": "https://firebase.google.com/docs/firestore/quotas",
    "notes": ""
  },
  {
    "id": "firestore-index-configuration-execution-and-explain-enforce-scalar-index-entry-size",
    "name": "Enforce scalar index-entry size",
    "area": "Index configuration, execution and Explain",
    "local": "available",
    "other": "unknown",
    "default": "unavailable",
    "description": "Rejects a write when a single index entry of a document would be larger than the maximum index entry size.",
    "docs": "https://firebase.google.com/docs/firestore/quotas",
    "notes": ""
  },
  {
    "id": "firestore-index-configuration-execution-and-explain-enforce-total-index-bytes-per-document",
    "name": "Enforce total index bytes per document",
    "area": "Index configuration, execution and Explain",
    "local": "available",
    "other": "unknown",
    "default": "unavailable",
    "description": "Rejects a write when the combined size of all index entries of one document would exceed the per-document maximum.",
    "docs": "https://firebase.google.com/docs/firestore/quotas",
    "notes": ""
  },
  {
    "id": "firestore-index-configuration-execution-and-explain-indexed-field-value-size-limit",
    "name": "Indexed field value size limit",
    "area": "Index configuration, execution and Explain",
    "local": "available",
    "other": "unknown",
    "default": "unavailable",
    "description": "Indexes only the leading bytes of a very large field value, so queries on it can return inconsistent results, while the stored value stays complete.",
    "docs": "https://firebase.google.com/docs/firestore/quotas",
    "notes": ""
  },
  {
    "id": "firestore-index-configuration-execution-and-explain-flat-vector-index-configuration",
    "name": "Flat vector-index configuration",
    "area": "Index configuration, execution and Explain",
    "local": "available",
    "other": "unknown",
    "default": "unavailable",
    "description": "Creates a flat vector index on a vector field with a fixed number of dimensions, so nearest-neighbor queries can run on that field.",
    "docs": "https://docs.cloud.google.com/firestore/native/docs/vector-search",
    "notes": ""
  },
  {
    "id": "firestore-index-configuration-execution-and-explain-require-a-vector-index-for-findnearest",
    "name": "Require a vector index for FindNearest",
    "area": "Index configuration, execution and Explain",
    "local": "available",
    "other": "unknown",
    "default": "unavailable",
    "description": "Fails a nearest-neighbor query when no vector index covers its vector field and dimension, with an error describing the index to create.",
    "docs": "https://docs.cloud.google.com/firestore/native/docs/vector-search",
    "notes": ""
  },
  {
    "id": "firestore-index-configuration-execution-and-explain-query-explain-plan-only",
    "name": "Query Explain plan-only",
    "area": "Index configuration, execution and Explain",
    "local": "available",
    "other": "unavailable",
    "default": "unavailable",
    "description": "Returns the plan Firestore would use for a query, including the indexes it would read, without running the query.",
    "docs": "https://docs.cloud.google.com/firestore/native/docs/query-explain",
    "notes": ""
  },
  {
    "id": "firestore-index-configuration-execution-and-explain-query-explain-analyze",
    "name": "Query Explain analyze",
    "area": "Index configuration, execution and Explain",
    "local": "available",
    "other": "unavailable",
    "default": "unavailable",
    "description": "Runs a query and returns execution statistics, such as the time taken and the read operations performed, along with its results.",
    "docs": "https://docs.cloud.google.com/firestore/native/docs/query-explain",
    "notes": ""
  },
  {
    "id": "firestore-index-configuration-execution-and-explain-aggregation-explain-plan-only",
    "name": "Aggregation Explain plan-only",
    "area": "Index configuration, execution and Explain",
    "local": "available",
    "other": "unavailable",
    "default": "unavailable",
    "description": "Returns the plan Firestore would use for an aggregation query such as count, sum or average, without running it.",
    "docs": "https://docs.cloud.google.com/firestore/native/docs/query-explain",
    "notes": ""
  },
  {
    "id": "firestore-index-configuration-execution-and-explain-aggregation-explain-analyze",
    "name": "Aggregation Explain analyze",
    "area": "Index configuration, execution and Explain",
    "local": "available",
    "other": "unavailable",
    "default": "unavailable",
    "description": "Executes an aggregation query and reports how it ran, such as its duration and read operations, along with the aggregate results.",
    "docs": "https://docs.cloud.google.com/firestore/native/docs/query-explain",
    "notes": ""
  },
  {
    "id": "firestore-index-configuration-execution-and-explain-explain-plan-summary-indexes-used",
    "name": "Explain plan_summary.indexes_used",
    "area": "Index configuration, execution and Explain",
    "local": "available",
    "other": "unavailable",
    "default": "unavailable",
    "description": "Lists the indexes chosen for a query, each with its query scope and indexed properties, in the plan summary of an Explain report.",
    "docs": "https://docs.cloud.google.com/firestore/native/docs/query-explain-report-reference",
    "notes": ""
  },
  {
    "id": "firestore-index-configuration-execution-and-explain-explain-debug-stats-index-entries-scanned",
    "name": "Explain debug_stats.index_entries_scanned",
    "area": "Index configuration, execution and Explain",
    "local": "available",
    "other": "unavailable",
    "default": "unavailable",
    "description": "Reports how many index entries a query scanned while running, as one of the debug statistics of an analyze report.",
    "docs": "https://docs.cloud.google.com/firestore/native/docs/query-explain-report-reference",
    "notes": ""
  },
  {
    "id": "firestore-index-configuration-execution-and-explain-explain-debug-stats-documents-scanned",
    "name": "Explain debug_stats.documents_scanned",
    "area": "Index configuration, execution and Explain",
    "local": "available",
    "other": "unavailable",
    "default": "unavailable",
    "description": "Reports how many documents a query scanned while running, as one of the debug statistics of an analyze report.",
    "docs": "https://docs.cloud.google.com/firestore/native/docs/query-explain-report-reference",
    "notes": ""
  },
  {
    "id": "firestore-index-configuration-execution-and-explain-explain-billing-details",
    "name": "Explain billing_details",
    "area": "Index configuration, execution and Explain",
    "local": "unavailable",
    "other": "unknown",
    "default": "unavailable",
    "description": "Reports billing metrics for an analyzed query, such as billable documents, billable index entries and the minimum query cost.",
    "docs": "https://docs.cloud.google.com/firestore/native/docs/query-explain-report-reference",
    "notes": "Explicitly marks billing not simulated."
  },
  {
    "id": "firestore-transactions-and-validation-pessimistic-read-write-transactions",
    "name": "Pessimistic read/write transactions",
    "area": "Transactions and validation",
    "local": "available",
    "other": "available",
    "default": "available",
    "description": "Runs reads and writes in a transaction that locks the documents it reads, so other writers must wait until the transaction finishes.",
    "docs": "https://firebase.google.com/docs/firestore/transaction-data-contention",
    "notes": ""
  },
  {
    "id": "firestore-transactions-and-validation-read-only-transaction-snapshots",
    "name": "Read-only transaction snapshots",
    "area": "Transactions and validation",
    "local": "available",
    "other": "available",
    "default": "available",
    "description": "Starts a read-only transaction whose reads all see one consistent snapshot of the database, and which cannot write.",
    "docs": "https://docs.cloud.google.com/firestore/docs/reference/rpc/google.firestore.v1",
    "notes": ""
  },
  {
    "id": "firestore-transactions-and-validation-optimistic-read-write-execution",
    "name": "Optimistic read/write execution",
    "area": "Transactions and validation",
    "local": "available",
    "other": "unavailable",
    "default": "unavailable",
    "description": "Runs a read-write transaction without locking the documents it reads, and applies its writes only if none of those documents changed, otherwise retrying.",
    "docs": "https://firebase.google.com/docs/firestore/transaction-data-contention",
    "notes": ""
  },
  {
    "id": "firestore-transactions-and-validation-configure-database-default-concurrency-mode",
    "name": "Configure database default concurrency mode",
    "area": "Transactions and validation",
    "local": "available",
    "other": "unavailable",
    "default": "unavailable",
    "description": "Sets the database-wide default concurrency mode, optimistic or pessimistic, that read-write transactions use unless one chooses otherwise.",
    "docs": "https://docs.cloud.google.com/firestore/docs/reference/rest/v1/projects.databases#ConcurrencyMode",
    "notes": ""
  },
  {
    "id": "firestore-transactions-and-validation-explicit-per-transaction-mode-override",
    "name": "Explicit per-transaction mode override",
    "area": "Transactions and validation",
    "local": "available",
    "other": "unavailable",
    "default": "unavailable",
    "description": "Lets a single read-write transaction choose optimistic or pessimistic locking instead of the database default.",
    "docs": "https://docs.cloud.google.com/firestore/native/docs/transaction-data-contention",
    "notes": ""
  },
  {
    "id": "firestore-transactions-and-validation-document-size-validation",
    "name": "Document-size validation",
    "area": "Transactions and validation",
    "local": "limited",
    "other": "limited",
    "default": "limited",
    "description": "Rejects a write that would make a document larger than the maximum document size.",
    "docs": "https://firebase.google.com/docs/firestore/quotas",
    "notes": "Selected boundaries, not every production limit."
  },
  {
    "id": "firestore-transactions-and-validation-value-size-validation",
    "name": "Value-size validation",
    "area": "Transactions and validation",
    "local": "limited",
    "other": "limited",
    "default": "limited",
    "description": "Rejects a single field value, such as a long string or bytes value, that is larger than the maximum size allowed for one value.",
    "docs": "https://firebase.google.com/docs/firestore/quotas",
    "notes": ""
  },
  {
    "id": "firestore-transactions-and-validation-nesting-depth-validation",
    "name": "Nesting-depth validation",
    "area": "Transactions and validation",
    "local": "limited",
    "other": "limited",
    "default": "limited",
    "description": "Rejects a document whose maps are nested deeper than the maximum allowed depth.",
    "docs": "https://firebase.google.com/docs/firestore/quotas",
    "notes": ""
  },
  {
    "id": "firestore-transactions-and-validation-api-request-size-limit",
    "name": "API request size limit",
    "area": "Transactions and validation",
    "local": "available",
    "other": "limited",
    "default": "limited",
    "description": "Rejects a request whose body is larger than the maximum API request size.",
    "docs": "https://firebase.google.com/docs/firestore/quotas",
    "notes": ""
  },
  {
    "id": "firestore-transactions-and-validation-document-storage-size-accounting",
    "name": "Document storage-size accounting",
    "area": "Transactions and validation",
    "local": "available",
    "other": "unknown",
    "default": "unavailable",
    "description": "Computes a document's stored size from its name, field names and values using documented per-type byte sizes, which count toward the document size limit.",
    "docs": "https://firebase.google.com/docs/firestore/storage-size",
    "notes": ""
  },
  {
    "id": "firestore-transactions-and-validation-field-transform-count-limit",
    "name": "Field-transform count limit",
    "area": "Transactions and validation",
    "local": "available",
    "other": "limited",
    "default": "limited",
    "description": "Limits how many field transforms, such as increments or array unions, a single document can have in one commit or transaction.",
    "docs": "https://firebase.google.com/docs/firestore/quotas",
    "notes": ""
  },
  {
    "id": "firestore-transactions-and-validation-document-name-size-limit",
    "name": "Document-name size limit",
    "area": "Transactions and validation",
    "local": "available",
    "other": "limited",
    "default": "limited",
    "description": "Limits the size of a document's full resource name, so a path that is too long is rejected.",
    "docs": "https://firebase.google.com/docs/firestore/quotas",
    "notes": ""
  },
  {
    "id": "firestore-transactions-and-validation-historical-read-time-precision-and-window",
    "name": "Historical read_time precision and window",
    "area": "Transactions and validation",
    "local": "available",
    "other": "limited",
    "default": "limited",
    "description": "Reads data as of a past read_time, which must be a microsecond-precision timestamp inside the allowed retention window.",
    "docs": "https://docs.cloud.google.com/firestore/docs/reference/rpc/google.firestore.v1",
    "notes": ""
  },
  {
    "id": "firestore-transactions-and-validation-serializable-transaction-isolation",
    "name": "Serializable transaction isolation",
    "area": "Transactions and validation",
    "local": "limited",
    "other": "limited",
    "default": "limited",
    "description": "Makes concurrent transactions behave as if they ran one at a time, so none can observe the intermediate state of another.",
    "docs": "https://firebase.google.com/docs/firestore/transaction-data-contention",
    "notes": ""
  },
  {
    "id": "firestore-transactions-and-validation-transaction-270-second-lifetime-limit",
    "name": "Transaction 270-second lifetime limit",
    "area": "Transactions and validation",
    "local": "available",
    "other": "limited",
    "default": "limited",
    "description": "Times out and fails a transaction that stays open for more than 270 seconds in total.",
    "docs": "https://firebase.google.com/docs/firestore/manage-data/transactions",
    "notes": ""
  },
  {
    "id": "firestore-transactions-and-validation-transaction-60-second-idle-expiration",
    "name": "Transaction 60-second idle expiration",
    "area": "Transactions and validation",
    "local": "available",
    "other": "limited",
    "default": "limited",
    "description": "Times out and fails a transaction that has no reads or writes for 60 seconds.",
    "docs": "https://firebase.google.com/docs/firestore/manage-data/transactions",
    "notes": ""
  },
  {
    "id": "firestore-transactions-and-validation-transaction-20-second-lock-deadline",
    "name": "Transaction 20-second lock deadline",
    "area": "Transactions and validation",
    "local": "limited",
    "other": "unavailable",
    "default": "unavailable",
    "description": "Fails a transaction that exceeds the 20-second lock deadline, after which Firestore releases the locks the transaction was holding.",
    "docs": "https://firebase.google.com/docs/firestore/manage-data/transactions",
    "notes": ""
  },
  {
    "id": "firestore-ttl-historical-reads-backups-and-recovery-enable-disable-point-in-time-recovery",
    "name": "Enable/disable point-in-time recovery",
    "area": "TTL, historical reads, backups and recovery",
    "local": "available",
    "other": "unknown",
    "default": "unavailable",
    "description": "Turns point-in-time recovery on or off for a database, which controls whether past versions of its data are retained for recovery.",
    "docs": "https://docs.cloud.google.com/firestore/native/docs/pitr",
    "notes": ""
  },
  {
    "id": "firestore-ttl-historical-reads-backups-and-recovery-one-hour-historical-read-retention-policy",
    "name": "One-hour historical read retention policy",
    "area": "TTL, historical reads, backups and recovery",
    "local": "available",
    "other": "unknown",
    "default": "limited",
    "description": "Keeps past versions of documents for one hour by default, so reads can target any recent time within that hour.",
    "docs": "https://docs.cloud.google.com/firestore/docs/reference/rpc/google.firestore.v1",
    "notes": ""
  },
  {
    "id": "firestore-ttl-historical-reads-backups-and-recovery-up-to-seven-day-pitr-read-policy",
    "name": "Up-to-seven-day PITR read policy",
    "area": "TTL, historical reads, backups and recovery",
    "local": "available",
    "other": "unknown",
    "default": "unavailable",
    "description": "With point-in-time recovery enabled, keeps past versions of documents for up to seven days, so reads can target a time in that window.",
    "docs": "https://docs.cloud.google.com/firestore/native/docs/pitr",
    "notes": ""
  },
  {
    "id": "firestore-ttl-historical-reads-backups-and-recovery-pitr-whole-minute-historical-reads",
    "name": "PITR whole-minute historical reads",
    "area": "TTL, historical reads, backups and recovery",
    "local": "available",
    "other": "unknown",
    "default": "unavailable",
    "description": "Requires a read time older than one hour to be a whole-minute timestamp inside the point-in-time recovery window.",
    "docs": "https://docs.cloud.google.com/firestore/native/docs/pitr",
    "notes": ""
  },
  {
    "id": "firestore-ttl-historical-reads-backups-and-recovery-create-a-ttl-field-policy",
    "name": "Create a TTL field policy",
    "area": "TTL, historical reads, backups and recovery",
    "local": "available",
    "other": "unknown",
    "default": "unavailable",
    "description": "Enables time-to-live on a timestamp field of a collection group, so documents are deleted automatically once the time in that field has passed.",
    "docs": "https://docs.cloud.google.com/firestore/native/docs/ttl",
    "notes": ""
  },
  {
    "id": "firestore-ttl-historical-reads-backups-and-recovery-get-a-ttl-field-policy",
    "name": "Get a TTL field policy",
    "area": "TTL, historical reads, backups and recovery",
    "local": "available",
    "other": "unknown",
    "default": "unavailable",
    "description": "Reads a field's configuration, including whether a TTL policy is set on it and what state that policy is in.",
    "docs": "https://docs.cloud.google.com/firestore/docs/reference/rest/v1/projects.databases.collectionGroups.fields/get",
    "notes": ""
  },
  {
    "id": "firestore-ttl-historical-reads-backups-and-recovery-list-ttl-field-policies",
    "name": "List TTL field policies",
    "area": "TTL, historical reads, backups and recovery",
    "local": "available",
    "other": "unknown",
    "default": "unavailable",
    "description": "Lists the fields that have a TTL policy by filtering a listing of field configurations, one page at a time.",
    "docs": "https://docs.cloud.google.com/firestore/docs/reference/rest/v1/projects.databases.collectionGroups.fields/list",
    "notes": ""
  },
  {
    "id": "firestore-ttl-historical-reads-backups-and-recovery-disable-a-ttl-policy",
    "name": "Disable a TTL policy",
    "area": "TTL, historical reads, backups and recovery",
    "local": "available",
    "other": "unknown",
    "default": "unavailable",
    "description": "Removes the TTL policy from a field, so documents are no longer deleted automatically based on its timestamp.",
    "docs": "https://docs.cloud.google.com/firestore/native/docs/ttl",
    "notes": ""
  },
  {
    "id": "firestore-ttl-historical-reads-backups-and-recovery-automatic-expired-document-deletion",
    "name": "Automatic expired-document deletion",
    "area": "TTL, historical reads, backups and recovery",
    "local": "available",
    "other": "unknown",
    "default": "unavailable",
    "description": "Deletes documents in the background after the timestamp in their TTL field has passed, without any delete request from a client.",
    "docs": "https://docs.cloud.google.com/firestore/native/docs/ttl",
    "notes": ""
  },
  {
    "id": "firestore-ttl-historical-reads-backups-and-recovery-ttl-deletion-preserves-subcollections",
    "name": "TTL deletion preserves subcollections",
    "area": "TTL, historical reads, backups and recovery",
    "local": "available",
    "other": "unknown",
    "default": "unavailable",
    "description": "Deleting an expired document through TTL does not delete the subcollections beneath it, which stay in place.",
    "docs": "https://firebase.google.com/docs/firestore/ttl",
    "notes": ""
  },
  {
    "id": "firestore-ttl-historical-reads-backups-and-recovery-create-backup-schedules",
    "name": "Create backup schedules",
    "area": "TTL, historical reads, backups and recovery",
    "local": "available",
    "other": "unknown",
    "default": "unavailable",
    "description": "Creates a schedule that backs up a database automatically every day or every week, with a retention period for the backups it takes.",
    "docs": "https://docs.cloud.google.com/firestore/docs/reference/rest/v1/projects.databases.backupSchedules",
    "notes": ""
  },
  {
    "id": "firestore-ttl-historical-reads-backups-and-recovery-get-backup-schedules",
    "name": "Get backup schedules",
    "area": "TTL, historical reads, backups and recovery",
    "local": "available",
    "other": "unknown",
    "default": "unavailable",
    "description": "Reads one backup schedule by name, returning its recurrence, retention period and creation time.",
    "docs": "https://docs.cloud.google.com/firestore/docs/reference/rest/v1/projects.databases.backupSchedules",
    "notes": ""
  },
  {
    "id": "firestore-ttl-historical-reads-backups-and-recovery-list-backup-schedules",
    "name": "List backup schedules",
    "area": "TTL, historical reads, backups and recovery",
    "local": "available",
    "other": "unknown",
    "default": "unavailable",
    "description": "Lists all backup schedules defined for a database.",
    "docs": "https://docs.cloud.google.com/firestore/docs/reference/rest/v1/projects.databases.backupSchedules",
    "notes": ""
  },
  {
    "id": "firestore-ttl-historical-reads-backups-and-recovery-update-backup-schedules",
    "name": "Update backup schedules",
    "area": "TTL, historical reads, backups and recovery",
    "local": "available",
    "other": "unknown",
    "default": "unavailable",
    "description": "Changes an existing backup schedule, such as how long its backups are retained, using an update mask.",
    "docs": "https://docs.cloud.google.com/firestore/docs/reference/rest/v1/projects.databases.backupSchedules",
    "notes": ""
  },
  {
    "id": "firestore-ttl-historical-reads-backups-and-recovery-delete-backup-schedules",
    "name": "Delete backup schedules",
    "area": "TTL, historical reads, backups and recovery",
    "local": "available",
    "other": "unknown",
    "default": "unavailable",
    "description": "Deletes a backup schedule so it takes no further backups, while the backups it already created are kept.",
    "docs": "https://docs.cloud.google.com/firestore/docs/reference/rest/v1/projects.databases.backupSchedules",
    "notes": ""
  },
  {
    "id": "firestore-ttl-historical-reads-backups-and-recovery-execute-a-daily-backup-schedule",
    "name": "Execute a daily backup schedule",
    "area": "TTL, historical reads, backups and recovery",
    "local": "available",
    "other": "unknown",
    "default": "unavailable",
    "description": "Takes a backup of the database once a day under a daily schedule, keeping each backup for the schedule's retention period.",
    "docs": "https://docs.cloud.google.com/firestore/native/docs/backups",
    "notes": ""
  },
  {
    "id": "firestore-ttl-historical-reads-backups-and-recovery-execute-a-weekly-backup-schedule",
    "name": "Execute a weekly backup schedule",
    "area": "TTL, historical reads, backups and recovery",
    "local": "available",
    "other": "unknown",
    "default": "unavailable",
    "description": "Takes a backup of the database once a week, on the chosen day of the week, under a weekly schedule.",
    "docs": "https://docs.cloud.google.com/firestore/native/docs/backups",
    "notes": ""
  },
  {
    "id": "firestore-ttl-historical-reads-backups-and-recovery-get-retained-backup-metadata",
    "name": "Get retained backup metadata",
    "area": "TTL, historical reads, backups and recovery",
    "local": "available",
    "other": "unknown",
    "default": "unavailable",
    "description": "Reads the metadata of one backup, such as its source database, snapshot time, expiry time and state.",
    "docs": "https://docs.cloud.google.com/firestore/native/docs/backups",
    "notes": ""
  },
  {
    "id": "firestore-ttl-historical-reads-backups-and-recovery-list-retained-backups",
    "name": "List retained backups",
    "area": "TTL, historical reads, backups and recovery",
    "local": "available",
    "other": "unknown",
    "default": "unavailable",
    "description": "Lists the backups of a project in a location, with the metadata of each one.",
    "docs": "https://docs.cloud.google.com/firestore/native/docs/backups",
    "notes": ""
  },
  {
    "id": "firestore-ttl-historical-reads-backups-and-recovery-delete-retained-backups",
    "name": "Delete retained backups",
    "area": "TTL, historical reads, backups and recovery",
    "local": "available",
    "other": "unknown",
    "default": "unavailable",
    "description": "Deletes a single backup by name, so it can no longer be used to restore a database.",
    "docs": "https://docs.cloud.google.com/firestore/native/docs/backups",
    "notes": ""
  },
  {
    "id": "firestore-ttl-historical-reads-backups-and-recovery-expire-retained-backups",
    "name": "Expire retained backups",
    "area": "TTL, historical reads, backups and recovery",
    "local": "available",
    "other": "unknown",
    "default": "unavailable",
    "description": "Removes a backup automatically once its expiration time has passed.",
    "docs": "https://docs.cloud.google.com/firestore/native/docs/backups",
    "notes": ""
  },
  {
    "id": "firestore-ttl-historical-reads-backups-and-recovery-restoredatabase-into-a-fresh-destination",
    "name": "RestoreDatabase into a fresh destination",
    "area": "TTL, historical reads, backups and recovery",
    "local": "available",
    "other": "unknown",
    "default": "unavailable",
    "description": "Creates a new database from an existing backup, in the same location as that backup, as a long-running operation.",
    "docs": "https://docs.cloud.google.com/firestore/docs/reference/rest/v1/projects.databases/restore",
    "notes": ""
  },
  {
    "id": "firestore-ttl-historical-reads-backups-and-recovery-pitr-clonedatabase",
    "name": "PITR CloneDatabase",
    "area": "TTL, historical reads, backups and recovery",
    "local": "unavailable",
    "other": "unknown",
    "default": "unavailable",
    "description": "Creates a new database from a point-in-time snapshot of an existing database, taken at a whole-minute time inside the recovery window.",
    "docs": "https://docs.cloud.google.com/firestore/docs/reference/rest/v1/projects.databases/clone",
    "notes": ""
  },
  {
    "id": "firestore-ttl-historical-reads-backups-and-recovery-managed-exportdocuments",
    "name": "Managed ExportDocuments",
    "area": "TTL, historical reads, backups and recovery",
    "local": "unavailable",
    "other": "unknown",
    "default": "unavailable",
    "description": "Exports documents to a Cloud Storage location as a long-running operation, either all collections or only the collection IDs listed.",
    "docs": "https://docs.cloud.google.com/firestore/docs/reference/rest/v1/projects.databases/exportDocuments",
    "notes": "Private snapshots are separate."
  },
  {
    "id": "firestore-ttl-historical-reads-backups-and-recovery-managed-importdocuments",
    "name": "Managed ImportDocuments",
    "area": "TTL, historical reads, backups and recovery",
    "local": "unavailable",
    "other": "unknown",
    "default": "unavailable",
    "description": "Imports documents into a database from files in Cloud Storage that an earlier export wrote, overwriting existing documents of the same name.",
    "docs": "https://docs.cloud.google.com/firestore/docs/reference/rest/v1/projects.databases/importDocuments",
    "notes": "No managed-format interchange."
  },
  {
    "id": "firestore-database-administration-and-rules-create-native-standard-databases-through-admin",
    "name": "Create Native Standard databases through Admin",
    "area": "Database administration and Rules",
    "local": "available",
    "other": "unknown",
    "default": "available",
    "description": "Creates a Firestore database in Native mode, Standard edition, with a chosen database ID and location, as a long-running operation.",
    "docs": "https://docs.cloud.google.com/firestore/docs/reference/rpc/google.firestore.admin.v1",
    "notes": ""
  },
  {
    "id": "firestore-database-administration-and-rules-get-database-metadata-through-admin",
    "name": "Get database metadata through Admin",
    "area": "Database administration and Rules",
    "local": "available",
    "other": "unknown",
    "default": "available",
    "description": "Reads one database's settings, such as its location, type, concurrency mode, recovery settings and delete protection.",
    "docs": "https://docs.cloud.google.com/firestore/docs/reference/rpc/google.firestore.admin.v1",
    "notes": ""
  },
  {
    "id": "firestore-database-administration-and-rules-list-database-metadata-through-admin",
    "name": "List database metadata through Admin",
    "area": "Database administration and Rules",
    "local": "available",
    "other": "unknown",
    "default": "available",
    "description": "Lists all Firestore databases in a project, each with its settings.",
    "docs": "https://docs.cloud.google.com/firestore/docs/reference/rpc/google.firestore.admin.v1",
    "notes": ""
  },
  {
    "id": "firestore-database-administration-and-rules-update-database-deletion-protection",
    "name": "Update database deletion protection",
    "area": "Database administration and Rules",
    "local": "available",
    "other": "unknown",
    "default": "available",
    "description": "Turns delete protection on or off for a database, which blocks deleting it while protection is enabled.",
    "docs": "https://docs.cloud.google.com/firestore/docs/reference/rpc/google.firestore.admin.v1",
    "notes": ""
  },
  {
    "id": "firestore-database-administration-and-rules-delete-databases-with-protection-checks",
    "name": "Delete databases with protection checks",
    "area": "Database administration and Rules",
    "local": "available",
    "other": "unknown",
    "default": "available",
    "description": "Deletes a database, but refuses to do so while its delete protection is enabled.",
    "docs": "https://docs.cloud.google.com/firestore/docs/reference/rpc/google.firestore.admin.v1",
    "notes": ""
  },
  {
    "id": "firestore-database-administration-and-rules-inspect-owned-long-running-operations",
    "name": "Inspect owned long-running operations",
    "area": "Database administration and Rules",
    "local": "available",
    "other": "unknown",
    "default": "available",
    "description": "Gets or lists the status of long-running operations, such as index builds, exports and restores, that were started on a database.",
    "docs": "https://docs.cloud.google.com/firestore/docs/reference/rpc/google.firestore.admin.v1",
    "notes": ""
  },
  {
    "id": "firestore-database-administration-and-rules-cancel-supported-owned-long-running-operations",
    "name": "Cancel supported owned long-running operations",
    "area": "Database administration and Rules",
    "local": "available",
    "other": "unknown",
    "default": "unavailable",
    "description": "Asks the server to cancel a running long-running operation, such as an index build, on a best-effort basis.",
    "docs": "https://docs.cloud.google.com/firestore/docs/reference/rpc/google.firestore.admin.v1",
    "notes": ""
  },
  {
    "id": "firestore-database-administration-and-rules-evaluate-document-security-rules",
    "name": "Evaluate document Security Rules",
    "area": "Database administration and Rules",
    "local": "available",
    "other": "available",
    "default": "available",
    "description": "Checks each client read and write of a document against the deployed Security Rules, allowing it only when a matching rule grants access.",
    "docs": "https://firebase.google.com/docs/reference/rules/rules",
    "notes": ""
  },
  {
    "id": "firestore-database-administration-and-rules-enforce-query-authorization-proof",
    "name": "Enforce query authorization proof",
    "area": "Database administration and Rules",
    "local": "available",
    "other": "available",
    "default": "available",
    "description": "Allows a query only when Security Rules would grant access to every document it could return, judged from the query's own constraints rather than its results.",
    "docs": "https://firebase.google.com/docs/firestore/security/rules-query",
    "notes": ""
  },
  {
    "id": "firestore-database-administration-and-rules-isolate-rules-by-database",
    "name": "Isolate Rules by database",
    "area": "Database administration and Rules",
    "local": "available",
    "other": "unknown",
    "default": "available",
    "description": "Applies a separate Security Rules release to each database in a project, so the rules of one database do not affect another.",
    "docs": "https://firebase.google.com/docs/reference/rules/rest/v1/projects.releases",
    "notes": ""
  },
  {
    "id": "firestore-database-administration-and-rules-rules-typed-path-binding",
    "name": "Rules typed path binding",
    "area": "Database administration and Rules",
    "local": "available",
    "other": "available",
    "default": "available",
    "description": "Represents a resource location as a typed Path value in a rule, and fills the variables of a path pattern from a map with the bind method.",
    "docs": "https://firebase.google.com/docs/reference/rules/rules.Path",
    "notes": ""
  },
  {
    "id": "firestore-database-administration-and-rules-rules-bool-string-conversion",
    "name": "Rules bool(string) conversion",
    "area": "Database administration and Rules",
    "local": "available",
    "other": "unavailable",
    "default": "available",
    "description": "Converts a string such as true into a boolean value in a rule expression, using the bool function.",
    "docs": "https://firebase.google.com/docs/reference/rules/rules.Boolean",
    "notes": ""
  },
  {
    "id": "firestore-database-administration-and-rules-rules-math-isinfinite-number",
    "name": "Rules math.isInfinite(number)",
    "area": "Database administration and Rules",
    "local": "available",
    "other": "unavailable",
    "default": "available",
    "description": "Returns true when a number in a rule expression is positive or negative infinity.",
    "docs": "https://firebase.google.com/docs/reference/rules/rules.math",
    "notes": ""
  },
  {
    "id": "firestore-database-administration-and-rules-rules-document-access-budgets",
    "name": "Rules document-access budgets",
    "area": "Database administration and Rules",
    "local": "limited",
    "other": "limited",
    "default": "limited",
    "description": "Caps how many document lookups, such as get and exists calls, one request's rule evaluation may make, with a higher cap for multi-document requests.",
    "docs": "https://firebase.google.com/docs/firestore/quotas",
    "notes": ""
  },
  {
    "id": "firestore-database-administration-and-rules-rules-function-argument-limit-7",
    "name": "Rules function argument limit (7)",
    "area": "Database administration and Rules",
    "local": "available",
    "other": "available",
    "default": "available",
    "description": "Allows a function defined in Security Rules to take at most seven arguments.",
    "docs": "https://firebase.google.com/docs/firestore/quotas",
    "notes": ""
  },
  {
    "id": "firestore-database-administration-and-rules-rules-function-let-binding-limit-10",
    "name": "Rules function let-binding limit (10)",
    "area": "Database administration and Rules",
    "local": "available",
    "other": "unavailable",
    "default": "unavailable",
    "description": "Allows a function defined in Security Rules to declare at most ten let variable bindings.",
    "docs": "https://firebase.google.com/docs/firestore/quotas",
    "notes": ""
  },
  {
    "id": "firestore-database-administration-and-rules-rules-path-capture-limit-20",
    "name": "Rules path capture limit (20)",
    "area": "Database administration and Rules",
    "local": "available",
    "other": "available",
    "default": "available",
    "description": "Allows at most twenty path capture variables across the nested match statements of Security Rules.",
    "docs": "https://firebase.google.com/docs/firestore/quotas",
    "notes": ""
  },
  {
    "id": "firestore-database-administration-and-rules-rules-string-split-regex",
    "name": "Rules String.split(regex)",
    "area": "Database administration and Rules",
    "local": "limited",
    "other": "limited",
    "default": "limited",
    "description": "Splits a string at each match of a regular expression and returns the pieces as a list.",
    "docs": "https://firebase.google.com/docs/reference/rules/rules.String",
    "notes": "Unicode/compile diagnostics remain bounded."
  },
  {
    "id": "firestore-database-administration-and-rules-rules-string-replace-regex-substitution",
    "name": "Rules String.replace(regex, substitution)",
    "area": "Database administration and Rules",
    "local": "limited",
    "other": "limited",
    "default": "limited",
    "description": "Replaces every match of a regular expression in a string with a substitution string and returns the result.",
    "docs": "https://firebase.google.com/docs/reference/rules/rules.String",
    "notes": "Bounded string/regular-expression contracts."
  },
  {
    "id": "firestore-database-administration-and-rules-rules-string-matches-regex",
    "name": "Rules String.matches(regex)",
    "area": "Database administration and Rules",
    "local": "limited",
    "other": "limited",
    "default": "limited",
    "description": "Returns true when the whole string matches a regular expression.",
    "docs": "https://firebase.google.com/docs/reference/rules/rules.String",
    "notes": "Bounded string/regular-expression contracts."
  },
  {
    "id": "firestore-database-administration-and-rules-rules-rest-rulesets-create",
    "name": "Rules REST rulesets.create",
    "area": "Database administration and Rules",
    "local": "available",
    "other": "unavailable",
    "default": "unavailable",
    "description": "Creates an immutable ruleset from rules source and returns it under a unique generated name; nothing enforces it until a release refers to it.",
    "docs": "https://firebase.google.com/docs/reference/rules/rest/v1/projects.rulesets/create",
    "notes": ""
  },
  {
    "id": "firestore-database-administration-and-rules-rules-rest-rulesets-get",
    "name": "Rules REST rulesets.get",
    "area": "Database administration and Rules",
    "local": "available",
    "other": "unavailable",
    "default": "unavailable",
    "description": "Reads one ruleset by its resource name, returning its source files.",
    "docs": "https://firebase.google.com/docs/reference/rules/rest/v1/projects.rulesets/get",
    "notes": ""
  },
  {
    "id": "firestore-database-administration-and-rules-rules-rest-rulesets-list",
    "name": "Rules REST rulesets.list",
    "area": "Database administration and Rules",
    "local": "available",
    "other": "unavailable",
    "default": "unavailable",
    "description": "Lists the rulesets of a project one page at a time, returning only their metadata and optionally filtered.",
    "docs": "https://firebase.google.com/docs/reference/rules/rest/v1/projects.rulesets/list",
    "notes": ""
  },
  {
    "id": "firestore-database-administration-and-rules-rules-rest-rulesets-delete",
    "name": "Rules REST rulesets.delete",
    "area": "Database administration and Rules",
    "local": "available",
    "other": "unavailable",
    "default": "unavailable",
    "description": "Deletes a ruleset by its resource name, which fails while a release still refers to it.",
    "docs": "https://firebase.google.com/docs/reference/rules/rest/v1/projects.rulesets/delete",
    "notes": ""
  },
  {
    "id": "firestore-database-administration-and-rules-rules-rest-releases-create",
    "name": "Rules REST releases.create",
    "area": "Database administration and Rules",
    "local": "available",
    "other": "unavailable",
    "default": "unavailable",
    "description": "Creates a named release that refers to a ruleset, so that rules-enabled services such as Firestore can enforce that ruleset.",
    "docs": "https://firebase.google.com/docs/reference/rules/rest/v1/projects.releases/create",
    "notes": ""
  },
  {
    "id": "firestore-database-administration-and-rules-rules-rest-releases-get",
    "name": "Rules REST releases.get",
    "area": "Database administration and Rules",
    "local": "available",
    "other": "unavailable",
    "default": "unavailable",
    "description": "Reads one release by its resource name, returning the ruleset it points to and its create and update times.",
    "docs": "https://firebase.google.com/docs/reference/rules/rest/v1/projects.releases/get",
    "notes": ""
  },
  {
    "id": "firestore-database-administration-and-rules-rules-rest-releases-list",
    "name": "Rules REST releases.list",
    "area": "Database administration and Rules",
    "local": "available",
    "other": "unavailable",
    "default": "unavailable",
    "description": "Lists the releases of a project one page at a time, optionally filtered by release name or ruleset name.",
    "docs": "https://firebase.google.com/docs/reference/rules/rest/v1/projects.releases/list",
    "notes": ""
  },
  {
    "id": "firestore-database-administration-and-rules-rules-rest-releases-patch",
    "name": "Rules REST releases.patch",
    "area": "Database administration and Rules",
    "local": "available",
    "other": "unavailable",
    "default": "unavailable",
    "description": "Updates an existing release to point to a different ruleset, which switches the rules in force for its target.",
    "docs": "https://firebase.google.com/docs/reference/rules/rest/v1/projects.releases/patch",
    "notes": ""
  },
  {
    "id": "firestore-database-administration-and-rules-rules-rest-releases-delete",
    "name": "Rules REST releases.delete",
    "area": "Database administration and Rules",
    "local": "available",
    "other": "unavailable",
    "default": "unavailable",
    "description": "Deletes a release by its resource name, ending the link between its target and the ruleset.",
    "docs": "https://firebase.google.com/docs/reference/rules/rest/v1/projects.releases/delete",
    "notes": ""
  },
  {
    "id": "firestore-database-administration-and-rules-rules-rest-projects-test",
    "name": "Rules REST projects.test",
    "area": "Database administration and Rules",
    "local": "available",
    "other": "unknown",
    "default": "unavailable",
    "description": "Checks Security Rules source, or an existing ruleset, for syntax and semantic problems and runs test cases against it, returning issues and results.",
    "docs": "https://firebase.google.com/docs/reference/rules/rest/v1/projects/test",
    "notes": ""
  },
  {
    "id": "firestore-database-administration-and-rules-rules-source-test-visited-expression-reports",
    "name": "Rules source-test VISITED expression reports",
    "area": "Database administration and Rules",
    "local": "available",
    "other": "unknown",
    "default": "unavailable",
    "description": "Makes a rules test report only the expressions that were visited during evaluation, each with its location and evaluated value.",
    "docs": "https://firebase.google.com/docs/reference/rules/rest/v1/projects/test",
    "notes": ""
  },
  {
    "id": "firestore-database-administration-and-rules-rules-source-test-full-expression-reports",
    "name": "Rules source-test FULL expression reports",
    "area": "Database administration and Rules",
    "local": "available",
    "other": "unknown",
    "default": "unavailable",
    "description": "Makes a rules test return detailed reporting on the expressions evaluated for each test case, with where each appears and what it evaluated to.",
    "docs": "https://firebase.google.com/docs/reference/rules/rest/v1/projects/test",
    "notes": ""
  },
  {
    "id": "firestore-database-administration-and-rules-rules-rest-releases-getexecutable",
    "name": "Rules REST releases.getExecutable",
    "area": "Database administration and Rules",
    "local": "unavailable",
    "other": "unknown",
    "default": "unavailable",
    "description": "Returns the compiled executable form of the ruleset a release points to, which an enforcement engine can run.",
    "docs": "https://firebase.google.com/docs/reference/rules/rest/v1/projects.releases/getExecutable",
    "notes": ""
  },
  {
    "id": "firestore-production-security-editions-and-service-guarantees-executepipeline-native-enterprise",
    "name": "ExecutePipeline (Native Enterprise)",
    "area": "Production security, editions and service guarantees",
    "local": "unavailable",
    "other": "limited",
    "default": "unavailable",
    "description": "Runs a pipeline query, built from ordered stages such as where, sort and aggregate, on an Enterprise edition database and returns the results.",
    "docs": "https://docs.cloud.google.com/firestore/docs/reference/rpc/google.firestore.v1",
    "notes": "Current edition option; Google stage coverage not established."
  },
  {
    "id": "firestore-production-security-editions-and-service-guarantees-cmek-database-configuration",
    "name": "CMEK database configuration",
    "area": "Production security, editions and service guarantees",
    "local": "limited",
    "other": "unknown",
    "default": "limited",
    "description": "Creates a database encrypted with a customer-managed Cloud KMS key named in its configuration, instead of a Google-managed key.",
    "docs": "https://docs.cloud.google.com/firestore/native/docs/cmek",
    "notes": "Configured host key service accepts KMS references; no key material or cryptographic encryption in this engine."
  },
  {
    "id": "firestore-production-security-editions-and-service-guarantees-iam-authorization-for-firestore-requests",
    "name": "IAM authorization for Firestore requests",
    "area": "Production security, editions and service guarantees",
    "local": "limited",
    "other": "unknown",
    "default": "limited",
    "description": "Allows or denies each Firestore request from server client libraries and APIs according to the IAM roles and permissions granted to the caller.",
    "docs": "https://firebase.google.com/docs/firestore/security/iam",
    "notes": "Host IAM admission; standalone credentials and host enforcement are not the complete managed IAM service."
  },
  {
    "id": "firestore-production-security-editions-and-service-guarantees-cmek-unavailable-key-access-denial",
    "name": "CMEK unavailable-key access denial",
    "area": "Production security, editions and service guarantees",
    "local": "limited",
    "other": "unknown",
    "default": "limited",
    "description": "Makes requests to a CMEK database fail with FAILED_PRECONDITION while its key version is disabled or destroyed or Firestore may not use the key.",
    "docs": "https://docs.cloud.google.com/firestore/native/docs/cmek",
    "notes": "Configured engine enforces host key availability."
  },
  {
    "id": "firestore-production-security-editions-and-service-guarantees-cmek-key-version-rotation",
    "name": "CMEK key-version rotation",
    "area": "Production security, editions and service guarantees",
    "local": "limited",
    "other": "unknown",
    "default": "limited",
    "description": "When the Cloud KMS key is rotated, re-encrypts the database with the key's latest primary version, keeping the old version available until that finishes.",
    "docs": "https://docs.cloud.google.com/firestore/native/docs/cmek",
    "notes": "Durable reference-state transitions; no cryptographic re-encryption claim."
  },
  {
    "id": "firestore-production-security-editions-and-service-guarantees-cmek-backup-and-restore-key-prerequisites",
    "name": "CMEK backup and restore key prerequisites",
    "area": "Production security, editions and service guarantees",
    "local": "limited",
    "other": "unknown",
    "default": "unavailable",
    "description": "Encrypts backups of a CMEK database with the key version in use when they are taken, and lets a restore keep that encryption, use a new key, or use Google default encryption.",
    "docs": "https://docs.cloud.google.com/firestore/native/docs/cmek",
    "notes": "Source/destination key checks; compatibility recovery only."
  },
  {
    "id": "firestore-production-security-editions-and-service-guarantees-app-check-enforcement-for-firestore",
    "name": "App Check enforcement for Firestore",
    "area": "Production security, editions and service guarantees",
    "local": "limited",
    "other": "unknown",
    "default": "limited",
    "description": "Rejects Firestore requests from mobile and web apps that lack a valid App Check token proving they come from your genuine app, once enforcement is on.",
    "docs": "https://firebase.google.com/docs/app-check/enable-enforcement",
    "notes": "No Google attestation/token verification."
  },
  {
    "id": "firestore-production-security-editions-and-service-guarantees-document-created-event-triggers",
    "name": "Document-created event triggers",
    "area": "Production security, editions and service guarantees",
    "local": "limited",
    "other": "available",
    "default": "limited",
    "description": "Runs a function when a document is first created at a matching path, passing the new document's data to the function.",
    "docs": "https://firebase.google.com/docs/functions/firestore-events",
    "notes": "Firebase integration documented."
  },
  {
    "id": "firestore-production-security-editions-and-service-guarantees-document-updated-event-triggers",
    "name": "Document-updated event triggers",
    "area": "Production security, editions and service guarantees",
    "local": "limited",
    "other": "available",
    "default": "limited",
    "description": "Runs a function when an existing document changes, passing the document's values from before and after the change.",
    "docs": "https://firebase.google.com/docs/functions/firestore-events",
    "notes": "Not standalone managed Functions compute."
  },
  {
    "id": "firestore-production-security-editions-and-service-guarantees-document-deleted-event-triggers",
    "name": "Document-deleted event triggers",
    "area": "Production security, editions and service guarantees",
    "local": "limited",
    "other": "available",
    "default": "limited",
    "description": "Runs a function when a document is deleted, passing the document's data as it was just before the deletion.",
    "docs": "https://firebase.google.com/docs/functions/firestore-events",
    "notes": ""
  }
]
