diff --git a/Firestore/metadata/Admin/V1/Index.php b/Firestore/metadata/Admin/V1/Index.php
index 7832c5a6f90..24d9c9c92d7 100644
--- a/Firestore/metadata/Admin/V1/Index.php
+++ b/Firestore/metadata/Admin/V1/Index.php
@@ -17,7 +17,7 @@ public static function initOnce() {
\GPBMetadata\Google\Api\FieldBehavior::initOnce();
\GPBMetadata\Google\Api\Resource::initOnce();
$pool->internalAddGeneratedFile(
- "\x0A\xC6\x0D\x0A%google/firestore/admin/v1/index.proto\x12\x19google.firestore.admin.v1\x1A\x19google/api/resource.proto\"\x82\x0B\x0A\x05Index\x12\x0C\x0A\x04name\x18\x01 \x01(\x09\x12@\x0A\x0Bquery_scope\x18\x02 \x01(\x0E2+.google.firestore.admin.v1.Index.QueryScope\x12<\x0A\x09api_scope\x18\x05 \x01(\x0E2).google.firestore.admin.v1.Index.ApiScope\x12;\x0A\x06fields\x18\x03 \x03(\x0B2+.google.firestore.admin.v1.Index.IndexField\x125\x0A\x05state\x18\x04 \x01(\x0E2&.google.firestore.admin.v1.Index.State\x12>\x0A\x07density\x18\x06 \x01(\x0E2(.google.firestore.admin.v1.Index.DensityB\x03\xE0A\x05\x12\x15\x0A\x08multikey\x18\x07 \x01(\x08B\x03\xE0A\x01\x12\x18\x0A\x0Bshard_count\x18\x08 \x01(\x05B\x03\xE0A\x01\x12\x13\x0A\x06unique\x18\x0A \x01(\x08B\x03\xE0A\x01\x1A\xA2\x04\x0A\x0AIndexField\x12\x12\x0A\x0Afield_path\x18\x01 \x01(\x09\x12B\x0A\x05order\x18\x02 \x01(\x0E21.google.firestore.admin.v1.Index.IndexField.OrderH\x00\x12O\x0A\x0Carray_config\x18\x03 \x01(\x0E27.google.firestore.admin.v1.Index.IndexField.ArrayConfigH\x00\x12Q\x0A\x0Dvector_config\x18\x04 \x01(\x0B28.google.firestore.admin.v1.Index.IndexField.VectorConfigH\x00\x1A\x8F\x01\x0A\x0CVectorConfig\x12\x16\x0A\x09dimension\x18\x01 \x01(\x05B\x03\xE0A\x02\x12R\x0A\x04flat\x18\x02 \x01(\x0B2B.google.firestore.admin.v1.Index.IndexField.VectorConfig.FlatIndexH\x00\x1A\x0B\x0A\x09FlatIndexB\x06\x0A\x04type\"=\x0A\x05Order\x12\x15\x0A\x11ORDER_UNSPECIFIED\x10\x00\x12\x0D\x0A\x09ASCENDING\x10\x01\x12\x0E\x0A\x0ADESCENDING\x10\x02\"9\x0A\x0BArrayConfig\x12\x1C\x0A\x18ARRAY_CONFIG_UNSPECIFIED\x10\x00\x12\x0C\x0A\x08CONTAINS\x10\x01B\x0C\x0A\x0Avalue_mode\"i\x0A\x0AQueryScope\x12\x1B\x0A\x17QUERY_SCOPE_UNSPECIFIED\x10\x00\x12\x0E\x0A\x0ACOLLECTION\x10\x01\x12\x14\x0A\x10COLLECTION_GROUP\x10\x02\x12\x18\x0A\x14COLLECTION_RECURSIVE\x10\x03\"K\x0A\x08ApiScope\x12\x0B\x0A\x07ANY_API\x10\x00\x12\x16\x0A\x12DATASTORE_MODE_API\x10\x01\x12\x1A\x0A\x16MONGODB_COMPATIBLE_API\x10\x02\"I\x0A\x05State\x12\x15\x0A\x11STATE_UNSPECIFIED\x10\x00\x12\x0C\x0A\x08CREATING\x10\x01\x12\x09\x0A\x05READY\x10\x02\x12\x10\x0A\x0CNEEDS_REPAIR\x10\x03\"M\x0A\x07Density\x12\x17\x0A\x13DENSITY_UNSPECIFIED\x10\x00\x12\x0E\x0A\x0ASPARSE_ALL\x10\x01\x12\x0E\x0A\x0ASPARSE_ANY\x10\x02\x12\x09\x0A\x05DENSE\x10\x03:z\xEAAw\x0A\x1Efirestore.googleapis.com/Index\x12Uprojects/{project}/databases/{database}/collectionGroups/{collection}/indexes/{index}B\xD9\x01\x0A\x1Dcom.google.firestore.admin.v1B\x0AIndexProtoP\x01Z9cloud.google.com/go/firestore/apiv1/admin/adminpb;adminpb\xA2\x02\x04GCFS\xAA\x02\x1FGoogle.Cloud.Firestore.Admin.V1\xCA\x02\x1FGoogle\\Cloud\\Firestore\\Admin\\V1\xEA\x02#Google::Cloud::Firestore::Admin::V1b\x06proto3"
+ "\x0A\xB9\x15\x0A%google/firestore/admin/v1/index.proto\x12\x19google.firestore.admin.v1\x1A\x19google/api/resource.proto\"\xF5\x12\x0A\x05Index\x12\x0C\x0A\x04name\x18\x01 \x01(\x09\x12@\x0A\x0Bquery_scope\x18\x02 \x01(\x0E2+.google.firestore.admin.v1.Index.QueryScope\x12<\x0A\x09api_scope\x18\x05 \x01(\x0E2).google.firestore.admin.v1.Index.ApiScope\x12;\x0A\x06fields\x18\x03 \x03(\x0B2+.google.firestore.admin.v1.Index.IndexField\x125\x0A\x05state\x18\x04 \x01(\x0E2&.google.firestore.admin.v1.Index.State\x12>\x0A\x07density\x18\x06 \x01(\x0E2(.google.firestore.admin.v1.Index.DensityB\x03\xE0A\x05\x12\x15\x0A\x08multikey\x18\x07 \x01(\x08B\x03\xE0A\x01\x12\x18\x0A\x0Bshard_count\x18\x08 \x01(\x05B\x03\xE0A\x01\x12\x13\x0A\x06unique\x18\x0A \x01(\x08B\x03\xE0A\x01\x12V\x0A\x14search_index_options\x18\x09 \x01(\x0B23.google.firestore.admin.v1.Index.SearchIndexOptionsB\x03\xE0A\x01\x1A\xDB\x0A\x0A\x0AIndexField\x12\x12\x0A\x0Afield_path\x18\x01 \x01(\x09\x12B\x0A\x05order\x18\x02 \x01(\x0E21.google.firestore.admin.v1.Index.IndexField.OrderH\x00\x12O\x0A\x0Carray_config\x18\x03 \x01(\x0E27.google.firestore.admin.v1.Index.IndexField.ArrayConfigH\x00\x12Q\x0A\x0Dvector_config\x18\x04 \x01(\x0B28.google.firestore.admin.v1.Index.IndexField.VectorConfigH\x00\x12Q\x0A\x0Dsearch_config\x18\x05 \x01(\x0B28.google.firestore.admin.v1.Index.IndexField.SearchConfigH\x00\x1A\x8F\x01\x0A\x0CVectorConfig\x12\x16\x0A\x09dimension\x18\x01 \x01(\x05B\x03\xE0A\x02\x12R\x0A\x04flat\x18\x02 \x01(\x0B2B.google.firestore.admin.v1.Index.IndexField.VectorConfig.FlatIndexH\x00\x1A\x0B\x0A\x09FlatIndexB\x06\x0A\x04type\x1A\xE3\x05\x0A\x0CSearchConfig\x12_\x0A\x09text_spec\x18\x01 \x01(\x0B2G.google.firestore.admin.v1.Index.IndexField.SearchConfig.SearchTextSpecB\x03\xE0A\x01\x12]\x0A\x08geo_spec\x18\x02 \x01(\x0B2F.google.firestore.admin.v1.Index.IndexField.SearchConfig.SearchGeoSpecB\x03\xE0A\x01\x1A\xD7\x01\x0A\x13SearchTextIndexSpec\x12_\x0A\x0Aindex_type\x18\x01 \x01(\x0E2F.google.firestore.admin.v1.Index.IndexField.SearchConfig.TextIndexTypeB\x03\xE0A\x02\x12_\x0A\x0Amatch_type\x18\x02 \x01(\x0E2F.google.firestore.admin.v1.Index.IndexField.SearchConfig.TextMatchTypeB\x03\xE0A\x02\x1Ax\x0A\x0ESearchTextSpec\x12f\x0A\x0Bindex_specs\x18\x01 \x03(\x0B2L.google.firestore.admin.v1.Index.IndexField.SearchConfig.SearchTextIndexSpecB\x03\xE0A\x02\x1A8\x0A\x0DSearchGeoSpec\x12'\x0A\x1Ageo_json_indexing_disabled\x18\x01 \x01(\x08B\x03\xE0A\x01\"?\x0A\x0DTextIndexType\x12\x1F\x0A\x1BTEXT_INDEX_TYPE_UNSPECIFIED\x10\x00\x12\x0D\x0A\x09TOKENIZED\x10\x01\"D\x0A\x0DTextMatchType\x12\x1F\x0A\x1BTEXT_MATCH_TYPE_UNSPECIFIED\x10\x00\x12\x12\x0A\x0EMATCH_GLOBALLY\x10\x01\"=\x0A\x05Order\x12\x15\x0A\x11ORDER_UNSPECIFIED\x10\x00\x12\x0D\x0A\x09ASCENDING\x10\x01\x12\x0E\x0A\x0ADESCENDING\x10\x02\"9\x0A\x0BArrayConfig\x12\x1C\x0A\x18ARRAY_CONFIG_UNSPECIFIED\x10\x00\x12\x0C\x0A\x08CONTAINS\x10\x01B\x0C\x0A\x0Avalue_mode\x1A`\x0A\x12SearchIndexOptions\x12\x1A\x0A\x0Dtext_language\x18\x01 \x01(\x09B\x03\xE0A\x01\x12.\x0A!text_language_override_field_path\x18\x02 \x01(\x09B\x03\xE0A\x01\"i\x0A\x0AQueryScope\x12\x1B\x0A\x17QUERY_SCOPE_UNSPECIFIED\x10\x00\x12\x0E\x0A\x0ACOLLECTION\x10\x01\x12\x14\x0A\x10COLLECTION_GROUP\x10\x02\x12\x18\x0A\x14COLLECTION_RECURSIVE\x10\x03\"K\x0A\x08ApiScope\x12\x0B\x0A\x07ANY_API\x10\x00\x12\x16\x0A\x12DATASTORE_MODE_API\x10\x01\x12\x1A\x0A\x16MONGODB_COMPATIBLE_API\x10\x02\"I\x0A\x05State\x12\x15\x0A\x11STATE_UNSPECIFIED\x10\x00\x12\x0C\x0A\x08CREATING\x10\x01\x12\x09\x0A\x05READY\x10\x02\x12\x10\x0A\x0CNEEDS_REPAIR\x10\x03\"M\x0A\x07Density\x12\x17\x0A\x13DENSITY_UNSPECIFIED\x10\x00\x12\x0E\x0A\x0ASPARSE_ALL\x10\x01\x12\x0E\x0A\x0ASPARSE_ANY\x10\x02\x12\x09\x0A\x05DENSE\x10\x03:z\xEAAw\x0A\x1Efirestore.googleapis.com/Index\x12Uprojects/{project}/databases/{database}/collectionGroups/{collection}/indexes/{index}B\xD9\x01\x0A\x1Dcom.google.firestore.admin.v1B\x0AIndexProtoP\x01Z9cloud.google.com/go/firestore/apiv1/admin/adminpb;adminpb\xA2\x02\x04GCFS\xAA\x02\x1FGoogle.Cloud.Firestore.Admin.V1\xCA\x02\x1FGoogle\\Cloud\\Firestore\\Admin\\V1\xEA\x02#Google::Cloud::Firestore::Admin::V1b\x06proto3"
, true);
static::$is_initialized = true;
diff --git a/Firestore/src/Admin/V1/Backup.php b/Firestore/src/Admin/V1/Backup.php
index 05241f9bd5c..6f4d2842708 100644
--- a/Firestore/src/Admin/V1/Backup.php
+++ b/Firestore/src/Admin/V1/Backup.php
@@ -20,6 +20,10 @@ class Backup extends \Google\Protobuf\Internal\Message
/**
* Output only. The unique resource name of the Backup.
* Format is `projects/{project}/locations/{location}/backups/{backup}`.
+ * The location in the name will be the Standard Managed Multi-Region (SMMR)
+ * location (e.g. `us`) if the backup was created with an SMMR location, or
+ * the Google Managed Multi-Region (GMMR) location (e.g. `nam5`) if the backup
+ * was created with a GMMR location.
*
* Generated from protobuf field string name = 1 [(.google.api.field_behavior) = OUTPUT_ONLY];
*/
@@ -75,6 +79,10 @@ class Backup extends \Google\Protobuf\Internal\Message
* @type string $name
* Output only. The unique resource name of the Backup.
* Format is `projects/{project}/locations/{location}/backups/{backup}`.
+ * The location in the name will be the Standard Managed Multi-Region (SMMR)
+ * location (e.g. `us`) if the backup was created with an SMMR location, or
+ * the Google Managed Multi-Region (GMMR) location (e.g. `nam5`) if the backup
+ * was created with a GMMR location.
* @type string $database
* Output only. Name of the Firestore database that the backup is from.
* Format is `projects/{project}/databases/{database}`.
@@ -102,6 +110,10 @@ public function __construct($data = NULL) {
/**
* Output only. The unique resource name of the Backup.
* Format is `projects/{project}/locations/{location}/backups/{backup}`.
+ * The location in the name will be the Standard Managed Multi-Region (SMMR)
+ * location (e.g. `us`) if the backup was created with an SMMR location, or
+ * the Google Managed Multi-Region (GMMR) location (e.g. `nam5`) if the backup
+ * was created with a GMMR location.
*
* Generated from protobuf field string name = 1 [(.google.api.field_behavior) = OUTPUT_ONLY];
* @return string
@@ -114,6 +126,10 @@ public function getName()
/**
* Output only. The unique resource name of the Backup.
* Format is `projects/{project}/locations/{location}/backups/{backup}`.
+ * The location in the name will be the Standard Managed Multi-Region (SMMR)
+ * location (e.g. `us`) if the backup was created with an SMMR location, or
+ * the Google Managed Multi-Region (GMMR) location (e.g. `nam5`) if the backup
+ * was created with a GMMR location.
*
* Generated from protobuf field string name = 1 [(.google.api.field_behavior) = OUTPUT_ONLY];
* @param string $var
diff --git a/Firestore/src/Admin/V1/Index.php b/Firestore/src/Admin/V1/Index.php
index fe840ca7bf4..25eea551aba 100644
--- a/Firestore/src/Admin/V1/Index.php
+++ b/Firestore/src/Admin/V1/Index.php
@@ -93,6 +93,14 @@ class Index extends \Google\Protobuf\Internal\Message
* Generated from protobuf field bool unique = 10 [(.google.api.field_behavior) = OPTIONAL];
*/
private $unique = false;
+ /**
+ * Optional. Options for search indexes that are at the index definition
+ * level. This field is only currently supported for indexes with
+ * MONGODB_COMPATIBLE_API ApiScope.
+ *
+ * Generated from protobuf field .google.firestore.admin.v1.Index.SearchIndexOptions search_index_options = 9 [(.google.api.field_behavior) = OPTIONAL];
+ */
+ private $search_index_options = null;
/**
* Constructor.
@@ -141,6 +149,10 @@ class Index extends \Google\Protobuf\Internal\Message
* @type bool $unique
* Optional. Whether it is an unique index. Unique index ensures all values
* for the indexed field(s) are unique across documents.
+ * @type \Google\Cloud\Firestore\Admin\V1\Index\SearchIndexOptions $search_index_options
+ * Optional. Options for search indexes that are at the index definition
+ * level. This field is only currently supported for indexes with
+ * MONGODB_COMPATIBLE_API ApiScope.
* }
*/
public function __construct($data = NULL) {
@@ -428,5 +440,45 @@ public function setUnique($var)
return $this;
}
+ /**
+ * Optional. Options for search indexes that are at the index definition
+ * level. This field is only currently supported for indexes with
+ * MONGODB_COMPATIBLE_API ApiScope.
+ *
+ * Generated from protobuf field .google.firestore.admin.v1.Index.SearchIndexOptions search_index_options = 9 [(.google.api.field_behavior) = OPTIONAL];
+ * @return \Google\Cloud\Firestore\Admin\V1\Index\SearchIndexOptions|null
+ */
+ public function getSearchIndexOptions()
+ {
+ return $this->search_index_options;
+ }
+
+ public function hasSearchIndexOptions()
+ {
+ return isset($this->search_index_options);
+ }
+
+ public function clearSearchIndexOptions()
+ {
+ unset($this->search_index_options);
+ }
+
+ /**
+ * Optional. Options for search indexes that are at the index definition
+ * level. This field is only currently supported for indexes with
+ * MONGODB_COMPATIBLE_API ApiScope.
+ *
+ * Generated from protobuf field .google.firestore.admin.v1.Index.SearchIndexOptions search_index_options = 9 [(.google.api.field_behavior) = OPTIONAL];
+ * @param \Google\Cloud\Firestore\Admin\V1\Index\SearchIndexOptions $var
+ * @return $this
+ */
+ public function setSearchIndexOptions($var)
+ {
+ GPBUtil::checkMessage($var, \Google\Cloud\Firestore\Admin\V1\Index\SearchIndexOptions::class);
+ $this->search_index_options = $var;
+
+ return $this;
+ }
+
}
diff --git a/Firestore/src/Admin/V1/Index/IndexField.php b/Firestore/src/Admin/V1/Index/IndexField.php
index fed937ea661..a082920ccf1 100644
--- a/Firestore/src/Admin/V1/Index/IndexField.php
+++ b/Firestore/src/Admin/V1/Index/IndexField.php
@@ -45,6 +45,10 @@ class IndexField extends \Google\Protobuf\Internal\Message
* @type \Google\Cloud\Firestore\Admin\V1\Index\IndexField\VectorConfig $vector_config
* Indicates that this field supports nearest neighbor and distance
* operations on vector.
+ * @type \Google\Cloud\Firestore\Admin\V1\Index\IndexField\SearchConfig $search_config
+ * Indicates that this field supports search operations. This field
+ * is only currently supported for indexes with MONGODB_COMPATIBLE_API
+ * ApiScope.
* }
*/
public function __construct($data = NULL) {
@@ -179,6 +183,41 @@ public function setVectorConfig($var)
return $this;
}
+ /**
+ * Indicates that this field supports search operations. This field
+ * is only currently supported for indexes with MONGODB_COMPATIBLE_API
+ * ApiScope.
+ *
+ * Generated from protobuf field .google.firestore.admin.v1.Index.IndexField.SearchConfig search_config = 5;
+ * @return \Google\Cloud\Firestore\Admin\V1\Index\IndexField\SearchConfig|null
+ */
+ public function getSearchConfig()
+ {
+ return $this->readOneof(5);
+ }
+
+ public function hasSearchConfig()
+ {
+ return $this->hasOneof(5);
+ }
+
+ /**
+ * Indicates that this field supports search operations. This field
+ * is only currently supported for indexes with MONGODB_COMPATIBLE_API
+ * ApiScope.
+ *
+ * Generated from protobuf field .google.firestore.admin.v1.Index.IndexField.SearchConfig search_config = 5;
+ * @param \Google\Cloud\Firestore\Admin\V1\Index\IndexField\SearchConfig $var
+ * @return $this
+ */
+ public function setSearchConfig($var)
+ {
+ GPBUtil::checkMessage($var, \Google\Cloud\Firestore\Admin\V1\Index\IndexField\SearchConfig::class);
+ $this->writeOneof(5, $var);
+
+ return $this;
+ }
+
/**
* @return string
*/
diff --git a/Firestore/src/Admin/V1/Index/IndexField/SearchConfig.php b/Firestore/src/Admin/V1/Index/IndexField/SearchConfig.php
new file mode 100644
index 00000000000..25791b04bce
--- /dev/null
+++ b/Firestore/src/Admin/V1/Index/IndexField/SearchConfig.php
@@ -0,0 +1,129 @@
+google.firestore.admin.v1.Index.IndexField.SearchConfig
+ */
+class SearchConfig extends \Google\Protobuf\Internal\Message
+{
+ /**
+ * Optional. The specification for building a text search index for a
+ * field.
+ *
+ * Generated from protobuf field .google.firestore.admin.v1.Index.IndexField.SearchConfig.SearchTextSpec text_spec = 1 [(.google.api.field_behavior) = OPTIONAL];
+ */
+ private $text_spec = null;
+ /**
+ * Optional. The specification for building a geo search index for a
+ * field.
+ *
+ * Generated from protobuf field .google.firestore.admin.v1.Index.IndexField.SearchConfig.SearchGeoSpec geo_spec = 2 [(.google.api.field_behavior) = OPTIONAL];
+ */
+ private $geo_spec = null;
+
+ /**
+ * Constructor.
+ *
+ * @param array $data {
+ * Optional. Data for populating the Message object.
+ *
+ * @type \Google\Cloud\Firestore\Admin\V1\Index\IndexField\SearchConfig\SearchTextSpec $text_spec
+ * Optional. The specification for building a text search index for a
+ * field.
+ * @type \Google\Cloud\Firestore\Admin\V1\Index\IndexField\SearchConfig\SearchGeoSpec $geo_spec
+ * Optional. The specification for building a geo search index for a
+ * field.
+ * }
+ */
+ public function __construct($data = NULL) {
+ \GPBMetadata\Google\Firestore\Admin\V1\Index::initOnce();
+ parent::__construct($data);
+ }
+
+ /**
+ * Optional. The specification for building a text search index for a
+ * field.
+ *
+ * Generated from protobuf field .google.firestore.admin.v1.Index.IndexField.SearchConfig.SearchTextSpec text_spec = 1 [(.google.api.field_behavior) = OPTIONAL];
+ * @return \Google\Cloud\Firestore\Admin\V1\Index\IndexField\SearchConfig\SearchTextSpec|null
+ */
+ public function getTextSpec()
+ {
+ return $this->text_spec;
+ }
+
+ public function hasTextSpec()
+ {
+ return isset($this->text_spec);
+ }
+
+ public function clearTextSpec()
+ {
+ unset($this->text_spec);
+ }
+
+ /**
+ * Optional. The specification for building a text search index for a
+ * field.
+ *
+ * Generated from protobuf field .google.firestore.admin.v1.Index.IndexField.SearchConfig.SearchTextSpec text_spec = 1 [(.google.api.field_behavior) = OPTIONAL];
+ * @param \Google\Cloud\Firestore\Admin\V1\Index\IndexField\SearchConfig\SearchTextSpec $var
+ * @return $this
+ */
+ public function setTextSpec($var)
+ {
+ GPBUtil::checkMessage($var, \Google\Cloud\Firestore\Admin\V1\Index\IndexField\SearchConfig\SearchTextSpec::class);
+ $this->text_spec = $var;
+
+ return $this;
+ }
+
+ /**
+ * Optional. The specification for building a geo search index for a
+ * field.
+ *
+ * Generated from protobuf field .google.firestore.admin.v1.Index.IndexField.SearchConfig.SearchGeoSpec geo_spec = 2 [(.google.api.field_behavior) = OPTIONAL];
+ * @return \Google\Cloud\Firestore\Admin\V1\Index\IndexField\SearchConfig\SearchGeoSpec|null
+ */
+ public function getGeoSpec()
+ {
+ return $this->geo_spec;
+ }
+
+ public function hasGeoSpec()
+ {
+ return isset($this->geo_spec);
+ }
+
+ public function clearGeoSpec()
+ {
+ unset($this->geo_spec);
+ }
+
+ /**
+ * Optional. The specification for building a geo search index for a
+ * field.
+ *
+ * Generated from protobuf field .google.firestore.admin.v1.Index.IndexField.SearchConfig.SearchGeoSpec geo_spec = 2 [(.google.api.field_behavior) = OPTIONAL];
+ * @param \Google\Cloud\Firestore\Admin\V1\Index\IndexField\SearchConfig\SearchGeoSpec $var
+ * @return $this
+ */
+ public function setGeoSpec($var)
+ {
+ GPBUtil::checkMessage($var, \Google\Cloud\Firestore\Admin\V1\Index\IndexField\SearchConfig\SearchGeoSpec::class);
+ $this->geo_spec = $var;
+
+ return $this;
+ }
+
+}
+
diff --git a/Firestore/src/Admin/V1/Index/IndexField/SearchConfig/SearchGeoSpec.php b/Firestore/src/Admin/V1/Index/IndexField/SearchConfig/SearchGeoSpec.php
new file mode 100644
index 00000000000..c24e08344f1
--- /dev/null
+++ b/Firestore/src/Admin/V1/Index/IndexField/SearchConfig/SearchGeoSpec.php
@@ -0,0 +1,71 @@
+google.firestore.admin.v1.Index.IndexField.SearchConfig.SearchGeoSpec
+ */
+class SearchGeoSpec extends \Google\Protobuf\Internal\Message
+{
+ /**
+ * Optional. Disables geoJSON indexing for the field. By default,
+ * geoJSON points are indexed.
+ *
+ * Generated from protobuf field bool geo_json_indexing_disabled = 1 [(.google.api.field_behavior) = OPTIONAL];
+ */
+ private $geo_json_indexing_disabled = false;
+
+ /**
+ * Constructor.
+ *
+ * @param array $data {
+ * Optional. Data for populating the Message object.
+ *
+ * @type bool $geo_json_indexing_disabled
+ * Optional. Disables geoJSON indexing for the field. By default,
+ * geoJSON points are indexed.
+ * }
+ */
+ public function __construct($data = NULL) {
+ \GPBMetadata\Google\Firestore\Admin\V1\Index::initOnce();
+ parent::__construct($data);
+ }
+
+ /**
+ * Optional. Disables geoJSON indexing for the field. By default,
+ * geoJSON points are indexed.
+ *
+ * Generated from protobuf field bool geo_json_indexing_disabled = 1 [(.google.api.field_behavior) = OPTIONAL];
+ * @return bool
+ */
+ public function getGeoJsonIndexingDisabled()
+ {
+ return $this->geo_json_indexing_disabled;
+ }
+
+ /**
+ * Optional. Disables geoJSON indexing for the field. By default,
+ * geoJSON points are indexed.
+ *
+ * Generated from protobuf field bool geo_json_indexing_disabled = 1 [(.google.api.field_behavior) = OPTIONAL];
+ * @param bool $var
+ * @return $this
+ */
+ public function setGeoJsonIndexingDisabled($var)
+ {
+ GPBUtil::checkBool($var);
+ $this->geo_json_indexing_disabled = $var;
+
+ return $this;
+ }
+
+}
+
diff --git a/Firestore/src/Admin/V1/Index/IndexField/SearchConfig/SearchTextIndexSpec.php b/Firestore/src/Admin/V1/Index/IndexField/SearchConfig/SearchTextIndexSpec.php
new file mode 100644
index 00000000000..9d35996a16d
--- /dev/null
+++ b/Firestore/src/Admin/V1/Index/IndexField/SearchConfig/SearchTextIndexSpec.php
@@ -0,0 +1,102 @@
+google.firestore.admin.v1.Index.IndexField.SearchConfig.SearchTextIndexSpec
+ */
+class SearchTextIndexSpec extends \Google\Protobuf\Internal\Message
+{
+ /**
+ * Required. How to index the text field value.
+ *
+ * Generated from protobuf field .google.firestore.admin.v1.Index.IndexField.SearchConfig.TextIndexType index_type = 1 [(.google.api.field_behavior) = REQUIRED];
+ */
+ private $index_type = 0;
+ /**
+ * Required. How to match the text field value.
+ *
+ * Generated from protobuf field .google.firestore.admin.v1.Index.IndexField.SearchConfig.TextMatchType match_type = 2 [(.google.api.field_behavior) = REQUIRED];
+ */
+ private $match_type = 0;
+
+ /**
+ * Constructor.
+ *
+ * @param array $data {
+ * Optional. Data for populating the Message object.
+ *
+ * @type int $index_type
+ * Required. How to index the text field value.
+ * @type int $match_type
+ * Required. How to match the text field value.
+ * }
+ */
+ public function __construct($data = NULL) {
+ \GPBMetadata\Google\Firestore\Admin\V1\Index::initOnce();
+ parent::__construct($data);
+ }
+
+ /**
+ * Required. How to index the text field value.
+ *
+ * Generated from protobuf field .google.firestore.admin.v1.Index.IndexField.SearchConfig.TextIndexType index_type = 1 [(.google.api.field_behavior) = REQUIRED];
+ * @return int
+ */
+ public function getIndexType()
+ {
+ return $this->index_type;
+ }
+
+ /**
+ * Required. How to index the text field value.
+ *
+ * Generated from protobuf field .google.firestore.admin.v1.Index.IndexField.SearchConfig.TextIndexType index_type = 1 [(.google.api.field_behavior) = REQUIRED];
+ * @param int $var
+ * @return $this
+ */
+ public function setIndexType($var)
+ {
+ GPBUtil::checkEnum($var, \Google\Cloud\Firestore\Admin\V1\Index\IndexField\SearchConfig\TextIndexType::class);
+ $this->index_type = $var;
+
+ return $this;
+ }
+
+ /**
+ * Required. How to match the text field value.
+ *
+ * Generated from protobuf field .google.firestore.admin.v1.Index.IndexField.SearchConfig.TextMatchType match_type = 2 [(.google.api.field_behavior) = REQUIRED];
+ * @return int
+ */
+ public function getMatchType()
+ {
+ return $this->match_type;
+ }
+
+ /**
+ * Required. How to match the text field value.
+ *
+ * Generated from protobuf field .google.firestore.admin.v1.Index.IndexField.SearchConfig.TextMatchType match_type = 2 [(.google.api.field_behavior) = REQUIRED];
+ * @param int $var
+ * @return $this
+ */
+ public function setMatchType($var)
+ {
+ GPBUtil::checkEnum($var, \Google\Cloud\Firestore\Admin\V1\Index\IndexField\SearchConfig\TextMatchType::class);
+ $this->match_type = $var;
+
+ return $this;
+ }
+
+}
+
diff --git a/Firestore/src/Admin/V1/Index/IndexField/SearchConfig/SearchTextSpec.php b/Firestore/src/Admin/V1/Index/IndexField/SearchConfig/SearchTextSpec.php
new file mode 100644
index 00000000000..91d20bf0f88
--- /dev/null
+++ b/Firestore/src/Admin/V1/Index/IndexField/SearchConfig/SearchTextSpec.php
@@ -0,0 +1,71 @@
+google.firestore.admin.v1.Index.IndexField.SearchConfig.SearchTextSpec
+ */
+class SearchTextSpec extends \Google\Protobuf\Internal\Message
+{
+ /**
+ * Required. Specifications for how the field should be indexed.
+ * Repeated so that the field can be indexed in multiple ways.
+ *
+ * Generated from protobuf field repeated .google.firestore.admin.v1.Index.IndexField.SearchConfig.SearchTextIndexSpec index_specs = 1 [(.google.api.field_behavior) = REQUIRED];
+ */
+ private $index_specs;
+
+ /**
+ * Constructor.
+ *
+ * @param array $data {
+ * Optional. Data for populating the Message object.
+ *
+ * @type \Google\Cloud\Firestore\Admin\V1\Index\IndexField\SearchConfig\SearchTextIndexSpec[] $index_specs
+ * Required. Specifications for how the field should be indexed.
+ * Repeated so that the field can be indexed in multiple ways.
+ * }
+ */
+ public function __construct($data = NULL) {
+ \GPBMetadata\Google\Firestore\Admin\V1\Index::initOnce();
+ parent::__construct($data);
+ }
+
+ /**
+ * Required. Specifications for how the field should be indexed.
+ * Repeated so that the field can be indexed in multiple ways.
+ *
+ * Generated from protobuf field repeated .google.firestore.admin.v1.Index.IndexField.SearchConfig.SearchTextIndexSpec index_specs = 1 [(.google.api.field_behavior) = REQUIRED];
+ * @return RepeatedField<\Google\Cloud\Firestore\Admin\V1\Index\IndexField\SearchConfig\SearchTextIndexSpec>
+ */
+ public function getIndexSpecs()
+ {
+ return $this->index_specs;
+ }
+
+ /**
+ * Required. Specifications for how the field should be indexed.
+ * Repeated so that the field can be indexed in multiple ways.
+ *
+ * Generated from protobuf field repeated .google.firestore.admin.v1.Index.IndexField.SearchConfig.SearchTextIndexSpec index_specs = 1 [(.google.api.field_behavior) = REQUIRED];
+ * @param \Google\Cloud\Firestore\Admin\V1\Index\IndexField\SearchConfig\SearchTextIndexSpec[] $var
+ * @return $this
+ */
+ public function setIndexSpecs($var)
+ {
+ $arr = GPBUtil::checkRepeatedField($var, \Google\Protobuf\Internal\GPBType::MESSAGE, \Google\Cloud\Firestore\Admin\V1\Index\IndexField\SearchConfig\SearchTextIndexSpec::class);
+ $this->index_specs = $arr;
+
+ return $this;
+ }
+
+}
+
diff --git a/Firestore/src/Admin/V1/Index/IndexField/SearchConfig/TextIndexType.php b/Firestore/src/Admin/V1/Index/IndexField/SearchConfig/TextIndexType.php
new file mode 100644
index 00000000000..4a915d32d84
--- /dev/null
+++ b/Firestore/src/Admin/V1/Index/IndexField/SearchConfig/TextIndexType.php
@@ -0,0 +1,55 @@
+google.firestore.admin.v1.Index.IndexField.SearchConfig.TextIndexType
+ */
+class TextIndexType
+{
+ /**
+ * The index type is unspecified. Not a valid option.
+ *
+ * Generated from protobuf enum TEXT_INDEX_TYPE_UNSPECIFIED = 0;
+ */
+ const TEXT_INDEX_TYPE_UNSPECIFIED = 0;
+ /**
+ * Field values are tokenized. This is the only way currently supported
+ * for MONGODB_COMPATIBLE_API.
+ *
+ * Generated from protobuf enum TOKENIZED = 1;
+ */
+ const TOKENIZED = 1;
+
+ private static $valueToName = [
+ self::TEXT_INDEX_TYPE_UNSPECIFIED => 'TEXT_INDEX_TYPE_UNSPECIFIED',
+ self::TOKENIZED => 'TOKENIZED',
+ ];
+
+ public static function name($value)
+ {
+ if (!isset(self::$valueToName[$value])) {
+ throw new UnexpectedValueException(sprintf(
+ 'Enum %s has no name defined for value %s', __CLASS__, $value));
+ }
+ return self::$valueToName[$value];
+ }
+
+
+ public static function value($name)
+ {
+ $const = __CLASS__ . '::' . strtoupper($name);
+ if (!defined($const)) {
+ throw new UnexpectedValueException(sprintf(
+ 'Enum %s has no value defined for name %s', __CLASS__, $name));
+ }
+ return constant($const);
+ }
+}
+
diff --git a/Firestore/src/Admin/V1/Index/IndexField/SearchConfig/TextMatchType.php b/Firestore/src/Admin/V1/Index/IndexField/SearchConfig/TextMatchType.php
new file mode 100644
index 00000000000..4396fe467d8
--- /dev/null
+++ b/Firestore/src/Admin/V1/Index/IndexField/SearchConfig/TextMatchType.php
@@ -0,0 +1,56 @@
+google.firestore.admin.v1.Index.IndexField.SearchConfig.TextMatchType
+ */
+class TextMatchType
+{
+ /**
+ * The match type is unspecified. Not a valid option.
+ *
+ * Generated from protobuf enum TEXT_MATCH_TYPE_UNSPECIFIED = 0;
+ */
+ const TEXT_MATCH_TYPE_UNSPECIFIED = 0;
+ /**
+ * Match on any indexed field. This is the only way currently supported
+ * for MONGODB_COMPATIBLE_API.
+ *
+ * Generated from protobuf enum MATCH_GLOBALLY = 1;
+ */
+ const MATCH_GLOBALLY = 1;
+
+ private static $valueToName = [
+ self::TEXT_MATCH_TYPE_UNSPECIFIED => 'TEXT_MATCH_TYPE_UNSPECIFIED',
+ self::MATCH_GLOBALLY => 'MATCH_GLOBALLY',
+ ];
+
+ public static function name($value)
+ {
+ if (!isset(self::$valueToName[$value])) {
+ throw new UnexpectedValueException(sprintf(
+ 'Enum %s has no name defined for value %s', __CLASS__, $value));
+ }
+ return self::$valueToName[$value];
+ }
+
+
+ public static function value($name)
+ {
+ $const = __CLASS__ . '::' . strtoupper($name);
+ if (!defined($const)) {
+ throw new UnexpectedValueException(sprintf(
+ 'Enum %s has no value defined for name %s', __CLASS__, $name));
+ }
+ return constant($const);
+ }
+}
+
diff --git a/Firestore/src/Admin/V1/Index/SearchIndexOptions.php b/Firestore/src/Admin/V1/Index/SearchIndexOptions.php
new file mode 100644
index 00000000000..6370997d81e
--- /dev/null
+++ b/Firestore/src/Admin/V1/Index/SearchIndexOptions.php
@@ -0,0 +1,141 @@
+google.firestore.admin.v1.Index.SearchIndexOptions
+ */
+class SearchIndexOptions extends \Google\Protobuf\Internal\Message
+{
+ /**
+ * Optional. The language to use for text search indexes. Used as the
+ * default language if not overridden at the document level by specifying
+ * the `text_language_override_field`. The language is specified as a BCP 47
+ * language code.
+ * For indexes with MONGODB_COMPATIBLE_API ApiScope: If unspecified, the
+ * default language is English.
+ * For indexes with `ANY_API` ApiScope: If unspecified, the default behavior
+ * is autodetect.
+ *
+ * Generated from protobuf field string text_language = 1 [(.google.api.field_behavior) = OPTIONAL];
+ */
+ private $text_language = '';
+ /**
+ * Optional. The field in the document that specifies which language to use
+ * for that specific document. For indexes with MONGODB_COMPATIBLE_API
+ * ApiScope: if unspecified, the language is taken from the "language" field
+ * if it exists or from `text_language` if it does not.
+ *
+ * Generated from protobuf field string text_language_override_field_path = 2 [(.google.api.field_behavior) = OPTIONAL];
+ */
+ private $text_language_override_field_path = '';
+
+ /**
+ * Constructor.
+ *
+ * @param array $data {
+ * Optional. Data for populating the Message object.
+ *
+ * @type string $text_language
+ * Optional. The language to use for text search indexes. Used as the
+ * default language if not overridden at the document level by specifying
+ * the `text_language_override_field`. The language is specified as a BCP 47
+ * language code.
+ * For indexes with MONGODB_COMPATIBLE_API ApiScope: If unspecified, the
+ * default language is English.
+ * For indexes with `ANY_API` ApiScope: If unspecified, the default behavior
+ * is autodetect.
+ * @type string $text_language_override_field_path
+ * Optional. The field in the document that specifies which language to use
+ * for that specific document. For indexes with MONGODB_COMPATIBLE_API
+ * ApiScope: if unspecified, the language is taken from the "language" field
+ * if it exists or from `text_language` if it does not.
+ * }
+ */
+ public function __construct($data = NULL) {
+ \GPBMetadata\Google\Firestore\Admin\V1\Index::initOnce();
+ parent::__construct($data);
+ }
+
+ /**
+ * Optional. The language to use for text search indexes. Used as the
+ * default language if not overridden at the document level by specifying
+ * the `text_language_override_field`. The language is specified as a BCP 47
+ * language code.
+ * For indexes with MONGODB_COMPATIBLE_API ApiScope: If unspecified, the
+ * default language is English.
+ * For indexes with `ANY_API` ApiScope: If unspecified, the default behavior
+ * is autodetect.
+ *
+ * Generated from protobuf field string text_language = 1 [(.google.api.field_behavior) = OPTIONAL];
+ * @return string
+ */
+ public function getTextLanguage()
+ {
+ return $this->text_language;
+ }
+
+ /**
+ * Optional. The language to use for text search indexes. Used as the
+ * default language if not overridden at the document level by specifying
+ * the `text_language_override_field`. The language is specified as a BCP 47
+ * language code.
+ * For indexes with MONGODB_COMPATIBLE_API ApiScope: If unspecified, the
+ * default language is English.
+ * For indexes with `ANY_API` ApiScope: If unspecified, the default behavior
+ * is autodetect.
+ *
+ * Generated from protobuf field string text_language = 1 [(.google.api.field_behavior) = OPTIONAL];
+ * @param string $var
+ * @return $this
+ */
+ public function setTextLanguage($var)
+ {
+ GPBUtil::checkString($var, True);
+ $this->text_language = $var;
+
+ return $this;
+ }
+
+ /**
+ * Optional. The field in the document that specifies which language to use
+ * for that specific document. For indexes with MONGODB_COMPATIBLE_API
+ * ApiScope: if unspecified, the language is taken from the "language" field
+ * if it exists or from `text_language` if it does not.
+ *
+ * Generated from protobuf field string text_language_override_field_path = 2 [(.google.api.field_behavior) = OPTIONAL];
+ * @return string
+ */
+ public function getTextLanguageOverrideFieldPath()
+ {
+ return $this->text_language_override_field_path;
+ }
+
+ /**
+ * Optional. The field in the document that specifies which language to use
+ * for that specific document. For indexes with MONGODB_COMPATIBLE_API
+ * ApiScope: if unspecified, the language is taken from the "language" field
+ * if it exists or from `text_language` if it does not.
+ *
+ * Generated from protobuf field string text_language_override_field_path = 2 [(.google.api.field_behavior) = OPTIONAL];
+ * @param string $var
+ * @return $this
+ */
+ public function setTextLanguageOverrideFieldPath($var)
+ {
+ GPBUtil::checkString($var, True);
+ $this->text_language_override_field_path = $var;
+
+ return $this;
+ }
+
+}
+