diff --git a/owl-bot-staging/Recommender/v1/proto/src/GPBMetadata/Google/Cloud/Recommender/V1/Insight.php b/owl-bot-staging/Recommender/v1/proto/src/GPBMetadata/Google/Cloud/Recommender/V1/Insight.php
new file mode 100644
index 000000000000..96a11af63961
Binary files /dev/null and b/owl-bot-staging/Recommender/v1/proto/src/GPBMetadata/Google/Cloud/Recommender/V1/Insight.php differ
diff --git a/owl-bot-staging/Recommender/v1/proto/src/GPBMetadata/Google/Cloud/Recommender/V1/InsightTypeConfig.php b/owl-bot-staging/Recommender/v1/proto/src/GPBMetadata/Google/Cloud/Recommender/V1/InsightTypeConfig.php
new file mode 100644
index 000000000000..c295b549cb99
--- /dev/null
+++ b/owl-bot-staging/Recommender/v1/proto/src/GPBMetadata/Google/Cloud/Recommender/V1/InsightTypeConfig.php
@@ -0,0 +1,45 @@
+internalAddGeneratedFile(
+ '
+Ø
+5google/cloud/recommender/v1/insight_type_config.protogoogle.cloud.recommender.v1google/api/resource.protogoogle/protobuf/struct.protogoogle/protobuf/timestamp.proto"±
+InsightTypeConfig
+name ( `
+insight_type_generation_config (28.google.cloud.recommender.v1.InsightTypeGenerationConfig
+etag ( /
+update_time (2.google.protobuf.Timestamp
+revision_id ( BàAàAT
+annotations (2?.google.cloud.recommender.v1.InsightTypeConfig.AnnotationsEntry
+display_name ( 2
+AnnotationsEntry
+key (
+value ( :8:¯êA«
+,recommender.googleapis.com/InsightTypeConfigJprojects/{project}/locations/{location}/insightTypes/{insight_type}/configTorganizations/{organization}/locations/{location}/insightTypes/{insight_type}/configYbillingAccounts/{billing_account}/locations/{location}/insightTypes/{insight_type}/config"F
+InsightTypeGenerationConfig\'
+params (2.google.protobuf.StructB£
+com.google.cloud.recommender.v1BInsightTypeConfigProtoPZAcloud.google.com/go/recommender/apiv1/recommenderpb;recommenderpb¢CRECªGoogle.Cloud.Recommender.V1bproto3'
+ , true);
+
+ static::$is_initialized = true;
+ }
+}
+
diff --git a/owl-bot-staging/Recommender/v1/proto/src/GPBMetadata/Google/Cloud/Recommender/V1/Recommendation.php b/owl-bot-staging/Recommender/v1/proto/src/GPBMetadata/Google/Cloud/Recommender/V1/Recommendation.php
new file mode 100644
index 000000000000..f3d0e874402d
Binary files /dev/null and b/owl-bot-staging/Recommender/v1/proto/src/GPBMetadata/Google/Cloud/Recommender/V1/Recommendation.php differ
diff --git a/owl-bot-staging/Recommender/v1/proto/src/GPBMetadata/Google/Cloud/Recommender/V1/RecommenderConfig.php b/owl-bot-staging/Recommender/v1/proto/src/GPBMetadata/Google/Cloud/Recommender/V1/RecommenderConfig.php
new file mode 100644
index 000000000000..ca519f51d7a8
--- /dev/null
+++ b/owl-bot-staging/Recommender/v1/proto/src/GPBMetadata/Google/Cloud/Recommender/V1/RecommenderConfig.php
@@ -0,0 +1,45 @@
+internalAddGeneratedFile(
+ '
+Ó
+4google/cloud/recommender/v1/recommender_config.protogoogle.cloud.recommender.v1google/api/resource.protogoogle/protobuf/struct.protogoogle/protobuf/timestamp.proto"
+RecommenderConfig
+name ( _
+recommender_generation_config (28.google.cloud.recommender.v1.RecommenderGenerationConfig
+etag ( /
+update_time (2.google.protobuf.Timestamp
+revision_id ( BàAàAT
+annotations (2?.google.cloud.recommender.v1.RecommenderConfig.AnnotationsEntry
+display_name ( 2
+AnnotationsEntry
+key (
+value ( :8:¬êA¨
+,recommender.googleapis.com/RecommenderConfigIprojects/{project}/locations/{location}/recommenders/{recommender}/configSorganizations/{organization}/locations/{location}/recommenders/{recommender}/configXbillingAccounts/{billing_account}/locations/{location}/recommenders/{recommender}/config"F
+RecommenderGenerationConfig\'
+params (2.google.protobuf.StructB£
+com.google.cloud.recommender.v1BRecommenderConfigProtoPZAcloud.google.com/go/recommender/apiv1/recommenderpb;recommenderpb¢CRECªGoogle.Cloud.Recommender.V1bproto3'
+ , true);
+
+ static::$is_initialized = true;
+ }
+}
+
diff --git a/owl-bot-staging/Recommender/v1/proto/src/GPBMetadata/Google/Cloud/Recommender/V1/RecommenderService.php b/owl-bot-staging/Recommender/v1/proto/src/GPBMetadata/Google/Cloud/Recommender/V1/RecommenderService.php
new file mode 100644
index 000000000000..4ea8a97c2522
--- /dev/null
+++ b/owl-bot-staging/Recommender/v1/proto/src/GPBMetadata/Google/Cloud/Recommender/V1/RecommenderService.php
@@ -0,0 +1,127 @@
+internalAddGeneratedFile(
+ '
+óF
+5google/cloud/recommender/v1/recommender_service.protogoogle.cloud.recommender.v1google/api/client.protogoogle/api/field_behavior.protogoogle/api/resource.proto)google/cloud/recommender/v1/insight.proto5google/cloud/recommender/v1/insight_type_config.proto0google/cloud/recommender/v1/recommendation.proto4google/cloud/recommender/v1/recommender_config.proto google/protobuf/field_mask.proto"›
+ListInsightsRequest>
+parent ( B.àAúA(
+&recommender.googleapis.com/InsightType
+ page_size (BàA
+
+page_token ( BàA
+filter ( BàA"g
+ListInsightsResponse6
+insights (2$.google.cloud.recommender.v1.Insight
+next_page_token ( "M
+GetInsightRequest8
+name ( B*àAúA$
+"recommender.googleapis.com/Insight"ˆ
+MarkInsightAcceptedRequest8
+name ( B*àAúA$
+"recommender.googleapis.com/Insightg
+state_metadata (2J.google.cloud.recommender.v1.MarkInsightAcceptedRequest.StateMetadataEntryBàA
+etag ( BàA4
+StateMetadataEntry
+key (
+value ( :8"
+ListRecommendationsRequest>
+parent ( B.àAúA(
+&recommender.googleapis.com/Recommender
+ page_size (BàA
+
+page_token ( BàA
+filter ( "|
+ListRecommendationsResponseD
+recommendations (2+.google.cloud.recommender.v1.Recommendation
+next_page_token ( "[
+GetRecommendationRequest?
+name ( B1àAúA+
+)recommender.googleapis.com/Recommendation"s
+"MarkRecommendationDismissedRequest?
+name ( B1àAúA+
+)recommender.googleapis.com/Recommendation
+etag ( "–
+ MarkRecommendationClaimedRequest?
+name ( B1àAúA+
+)recommender.googleapis.com/Recommendationh
+state_metadata (2P.google.cloud.recommender.v1.MarkRecommendationClaimedRequest.StateMetadataEntry
+etag ( BàA4
+StateMetadataEntry
+key (
+value ( :8"š
+"MarkRecommendationSucceededRequest?
+name ( B1àAúA+
+)recommender.googleapis.com/Recommendationj
+state_metadata (2R.google.cloud.recommender.v1.MarkRecommendationSucceededRequest.StateMetadataEntry
+etag ( BàA4
+StateMetadataEntry
+key (
+value ( :8"”
+MarkRecommendationFailedRequest?
+name ( B1àAúA+
+)recommender.googleapis.com/Recommendationg
+state_metadata (2O.google.cloud.recommender.v1.MarkRecommendationFailedRequest.StateMetadataEntry
+etag ( BàA4
+StateMetadataEntry
+key (
+value ( :8"a
+GetRecommenderConfigRequestB
+name ( B4àAúA.
+,recommender.googleapis.com/RecommenderConfig"¹
+UpdateRecommenderConfigRequestO
+recommender_config (2..google.cloud.recommender.v1.RecommenderConfigBàA/
+update_mask (2.google.protobuf.FieldMask
+
validate_only ("a
+GetInsightTypeConfigRequestB
+name ( B4àAúA.
+,recommender.googleapis.com/InsightTypeConfig"º
+UpdateInsightTypeConfigRequestP
+insight_type_config (2..google.cloud.recommender.v1.InsightTypeConfigBàA/
+update_mask (2.google.protobuf.FieldMask
+
validate_only (2Ö.
+Recommender‹
+ListInsights0.google.cloud.recommender.v1.ListInsightsRequest1.google.cloud.recommender.v1.ListInsightsResponse"•‚Óä“…;/v1/{parent=projects/*/locations/*/insightTypes/*}/insightsZDB/v1/{parent=billingAccounts/*/locations/*/insightTypes/*}/insightsZ<:/v1/{parent=folders/*/locations/*/insightTypes/*}/insightsZB@/v1/{parent=organizations/*/locations/*/insightTypes/*}/insightsÚAparentø
+
+GetInsight..google.cloud.recommender.v1.GetInsightRequest$.google.cloud.recommender.v1.Insight"“‚Óä“…;/v1/{name=projects/*/locations/*/insightTypes/*/insights/*}ZDB/v1/{name=billingAccounts/*/locations/*/insightTypes/*/insights/*}Z<:/v1/{name=folders/*/locations/*/insightTypes/*/insights/*}ZB@/v1/{name=organizations/*/locations/*/insightTypes/*/insights/*}ÚAnameÞ
+MarkInsightAccepted7.google.cloud.recommender.v1.MarkInsightAcceptedRequest$.google.cloud.recommender.v1.Insight"ç‚Óä“Å"H/v1/{name=projects/*/locations/*/insightTypes/*/insights/*}:markAccepted:*ZT"O/v1/{name=billingAccounts/*/locations/*/insightTypes/*/insights/*}:markAccepted:*ZL"G/v1/{name=folders/*/locations/*/insightTypes/*/insights/*}:markAccepted:*ZR"M/v1/{name=organizations/*/locations/*/insightTypes/*/insights/*}:markAccepted:*ÚAname,state_metadata,etagÌ
+ListRecommendations7.google.cloud.recommender.v1.ListRecommendationsRequest8.google.cloud.recommender.v1.ListRecommendationsResponse"Á‚Óä“¡B/v1/{parent=projects/*/locations/*/recommenders/*}/recommendationsZKI/v1/{parent=billingAccounts/*/locations/*/recommenders/*}/recommendationsZCA/v1/{parent=folders/*/locations/*/recommenders/*}/recommendationsZIG/v1/{parent=organizations/*/locations/*/recommenders/*}/recommendationsÚAparentÚA
parent,filter©
+GetRecommendation5.google.cloud.recommender.v1.GetRecommendationRequest+.google.cloud.recommender.v1.Recommendation"¯‚Óä“¡B/v1/{name=projects/*/locations/*/recommenders/*/recommendations/*}ZKI/v1/{name=billingAccounts/*/locations/*/recommenders/*/recommendations/*}ZCA/v1/{name=folders/*/locations/*/recommenders/*/recommendations/*}ZIG/v1/{name=organizations/*/locations/*/recommenders/*/recommendations/*}ÚAnameú
+MarkRecommendationDismissed?.google.cloud.recommender.v1.MarkRecommendationDismissedRequest+.google.cloud.recommender.v1.Recommendation"ì‚Óä“å"P/v1/{name=projects/*/locations/*/recommenders/*/recommendations/*}:markDismissed:*Z\\"W/v1/{name=billingAccounts/*/locations/*/recommenders/*/recommendations/*}:markDismissed:*ZT"O/v1/{name=folders/*/locations/*/recommenders/*/recommendations/*}:markDismissed:*ZZ"U/v1/{name=organizations/*/locations/*/recommenders/*/recommendations/*}:markDismissed:*‰
+MarkRecommendationClaimed=.google.cloud.recommender.v1.MarkRecommendationClaimedRequest+.google.cloud.recommender.v1.Recommendation"ÿ‚Óä“Ý"N/v1/{name=projects/*/locations/*/recommenders/*/recommendations/*}:markClaimed:*ZZ"U/v1/{name=billingAccounts/*/locations/*/recommenders/*/recommendations/*}:markClaimed:*ZR"M/v1/{name=folders/*/locations/*/recommenders/*/recommendations/*}:markClaimed:*ZX"S/v1/{name=organizations/*/locations/*/recommenders/*/recommendations/*}:markClaimed:*ÚAname,state_metadata,etag•
+MarkRecommendationSucceeded?.google.cloud.recommender.v1.MarkRecommendationSucceededRequest+.google.cloud.recommender.v1.Recommendation"‡‚Óä“å"P/v1/{name=projects/*/locations/*/recommenders/*/recommendations/*}:markSucceeded:*Z\\"W/v1/{name=billingAccounts/*/locations/*/recommenders/*/recommendations/*}:markSucceeded:*ZT"O/v1/{name=folders/*/locations/*/recommenders/*/recommendations/*}:markSucceeded:*ZZ"U/v1/{name=organizations/*/locations/*/recommenders/*/recommendations/*}:markSucceeded:*ÚAname,state_metadata,etagƒ
+MarkRecommendationFailed<.google.cloud.recommender.v1.MarkRecommendationFailedRequest+.google.cloud.recommender.v1.Recommendation"û‚Óä“Ù"M/v1/{name=projects/*/locations/*/recommenders/*/recommendations/*}:markFailed:*ZY"T/v1/{name=billingAccounts/*/locations/*/recommenders/*/recommendations/*}:markFailed:*ZQ"L/v1/{name=folders/*/locations/*/recommenders/*/recommendations/*}:markFailed:*ZW"R/v1/{name=organizations/*/locations/*/recommenders/*/recommendations/*}:markFailed:*ÚAname,state_metadata,etagÌ
+GetRecommenderConfig8.google.cloud.recommender.v1.GetRecommenderConfigRequest..google.cloud.recommender.v1.RecommenderConfig"É‚Óä“»7/v1/{name=projects/*/locations/*/recommenders/*/config}Z>/v1/{name=billingAccounts/*/locations/*/recommenders/*/config}ÚAnameá
+UpdateRecommenderConfig;.google.cloud.recommender.v1.UpdateRecommenderConfigRequest..google.cloud.recommender.v1.RecommenderConfig"Ø‚Óä“°2J/v1/{recommender_config.name=projects/*/locations/*/recommenders/*/config}:recommender_configZe2O/v1/{recommender_config.name=organizations/*/locations/*/recommenders/*/config}:recommender_configZg2Q/v1/{recommender_config.name=billingAccounts/*/locations/*/recommenders/*/config}:recommender_configÚArecommender_config,update_maskÌ
+GetInsightTypeConfig8.google.cloud.recommender.v1.GetInsightTypeConfigRequest..google.cloud.recommender.v1.InsightTypeConfig"É‚Óä“»7/v1/{name=projects/*/locations/*/insightTypes/*/config}Z>/v1/{name=billingAccounts/*/locations/*/insightTypes/*/config}ÚAnameè
+UpdateInsightTypeConfig;.google.cloud.recommender.v1.UpdateInsightTypeConfigRequest..google.cloud.recommender.v1.InsightTypeConfig"ß‚Ó䓶2K/v1/{insight_type_config.name=projects/*/locations/*/insightTypes/*/config}:insight_type_configZg2P/v1/{insight_type_config.name=organizations/*/locations/*/insightTypes/*/config}:insight_type_configZi2R/v1/{insight_type_config.name=billingAccounts/*/locations/*/insightTypes/*/config}:insight_type_configÚAinsight_type_config,update_maskNÊArecommender.googleapis.comÒA.https://www.googleapis.com/auth/cloud-platformB
+com.google.cloud.recommender.v1BRecommenderProtoPZAcloud.google.com/go/recommender/apiv1/recommenderpb;recommenderpb¢CRECªGoogle.Cloud.Recommender.V1bproto3'
+ , true);
+
+ static::$is_initialized = true;
+ }
+}
+
diff --git a/owl-bot-staging/Recommender/v1/proto/src/Google/Cloud/Recommender/V1/CostProjection.php b/owl-bot-staging/Recommender/v1/proto/src/Google/Cloud/Recommender/V1/CostProjection.php
new file mode 100644
index 000000000000..e981e6aba9ee
--- /dev/null
+++ b/owl-bot-staging/Recommender/v1/proto/src/Google/Cloud/Recommender/V1/CostProjection.php
@@ -0,0 +1,181 @@
+google.cloud.recommender.v1.CostProjection
+ */
+class CostProjection extends \Google\Protobuf\Internal\Message
+{
+ /**
+ * An approximate projection on amount saved or amount incurred. Negative cost
+ * units indicate cost savings and positive cost units indicate increase.
+ * See google.type.Money documentation for positive/negative units.
+ * A user's permissions may affect whether the cost is computed using list
+ * prices or custom contract prices.
+ *
+ * Generated from protobuf field .google.type.Money cost = 1;
+ */
+ protected $cost = null;
+ /**
+ * Duration for which this cost applies.
+ *
+ * Generated from protobuf field .google.protobuf.Duration duration = 2;
+ */
+ protected $duration = null;
+ /**
+ * The approximate cost savings in the billing account's local currency.
+ *
+ * Generated from protobuf field .google.type.Money cost_in_local_currency = 3;
+ */
+ protected $cost_in_local_currency = null;
+
+ /**
+ * Constructor.
+ *
+ * @param array $data {
+ * Optional. Data for populating the Message object.
+ *
+ * @type \Google\Type\Money $cost
+ * An approximate projection on amount saved or amount incurred. Negative cost
+ * units indicate cost savings and positive cost units indicate increase.
+ * See google.type.Money documentation for positive/negative units.
+ * A user's permissions may affect whether the cost is computed using list
+ * prices or custom contract prices.
+ * @type \Google\Protobuf\Duration $duration
+ * Duration for which this cost applies.
+ * @type \Google\Type\Money $cost_in_local_currency
+ * The approximate cost savings in the billing account's local currency.
+ * }
+ */
+ public function __construct($data = NULL) {
+ \GPBMetadata\Google\Cloud\Recommender\V1\Recommendation::initOnce();
+ parent::__construct($data);
+ }
+
+ /**
+ * An approximate projection on amount saved or amount incurred. Negative cost
+ * units indicate cost savings and positive cost units indicate increase.
+ * See google.type.Money documentation for positive/negative units.
+ * A user's permissions may affect whether the cost is computed using list
+ * prices or custom contract prices.
+ *
+ * Generated from protobuf field .google.type.Money cost = 1;
+ * @return \Google\Type\Money|null
+ */
+ public function getCost()
+ {
+ return $this->cost;
+ }
+
+ public function hasCost()
+ {
+ return isset($this->cost);
+ }
+
+ public function clearCost()
+ {
+ unset($this->cost);
+ }
+
+ /**
+ * An approximate projection on amount saved or amount incurred. Negative cost
+ * units indicate cost savings and positive cost units indicate increase.
+ * See google.type.Money documentation for positive/negative units.
+ * A user's permissions may affect whether the cost is computed using list
+ * prices or custom contract prices.
+ *
+ * Generated from protobuf field .google.type.Money cost = 1;
+ * @param \Google\Type\Money $var
+ * @return $this
+ */
+ public function setCost($var)
+ {
+ GPBUtil::checkMessage($var, \Google\Type\Money::class);
+ $this->cost = $var;
+
+ return $this;
+ }
+
+ /**
+ * Duration for which this cost applies.
+ *
+ * Generated from protobuf field .google.protobuf.Duration duration = 2;
+ * @return \Google\Protobuf\Duration|null
+ */
+ public function getDuration()
+ {
+ return $this->duration;
+ }
+
+ public function hasDuration()
+ {
+ return isset($this->duration);
+ }
+
+ public function clearDuration()
+ {
+ unset($this->duration);
+ }
+
+ /**
+ * Duration for which this cost applies.
+ *
+ * Generated from protobuf field .google.protobuf.Duration duration = 2;
+ * @param \Google\Protobuf\Duration $var
+ * @return $this
+ */
+ public function setDuration($var)
+ {
+ GPBUtil::checkMessage($var, \Google\Protobuf\Duration::class);
+ $this->duration = $var;
+
+ return $this;
+ }
+
+ /**
+ * The approximate cost savings in the billing account's local currency.
+ *
+ * Generated from protobuf field .google.type.Money cost_in_local_currency = 3;
+ * @return \Google\Type\Money|null
+ */
+ public function getCostInLocalCurrency()
+ {
+ return $this->cost_in_local_currency;
+ }
+
+ public function hasCostInLocalCurrency()
+ {
+ return isset($this->cost_in_local_currency);
+ }
+
+ public function clearCostInLocalCurrency()
+ {
+ unset($this->cost_in_local_currency);
+ }
+
+ /**
+ * The approximate cost savings in the billing account's local currency.
+ *
+ * Generated from protobuf field .google.type.Money cost_in_local_currency = 3;
+ * @param \Google\Type\Money $var
+ * @return $this
+ */
+ public function setCostInLocalCurrency($var)
+ {
+ GPBUtil::checkMessage($var, \Google\Type\Money::class);
+ $this->cost_in_local_currency = $var;
+
+ return $this;
+ }
+
+}
+
diff --git a/owl-bot-staging/Recommender/v1/proto/src/Google/Cloud/Recommender/V1/GetInsightRequest.php b/owl-bot-staging/Recommender/v1/proto/src/Google/Cloud/Recommender/V1/GetInsightRequest.php
new file mode 100644
index 000000000000..4eefd045c8d4
--- /dev/null
+++ b/owl-bot-staging/Recommender/v1/proto/src/Google/Cloud/Recommender/V1/GetInsightRequest.php
@@ -0,0 +1,81 @@
+google.cloud.recommender.v1.GetInsightRequest
+ */
+class GetInsightRequest extends \Google\Protobuf\Internal\Message
+{
+ /**
+ * Required. Name of the insight.
+ *
+ * Generated from protobuf field string name = 1 [(.google.api.field_behavior) = REQUIRED, (.google.api.resource_reference) = {
+ */
+ protected $name = '';
+
+ /**
+ * @param string $name Required. Name of the insight. Please see
+ * {@see RecommenderClient::insightName()} for help formatting this field.
+ *
+ * @return \Google\Cloud\Recommender\V1\GetInsightRequest
+ *
+ * @experimental
+ */
+ public static function build(string $name): self
+ {
+ return (new self())
+ ->setName($name);
+ }
+
+ /**
+ * Constructor.
+ *
+ * @param array $data {
+ * Optional. Data for populating the Message object.
+ *
+ * @type string $name
+ * Required. Name of the insight.
+ * }
+ */
+ public function __construct($data = NULL) {
+ \GPBMetadata\Google\Cloud\Recommender\V1\RecommenderService::initOnce();
+ parent::__construct($data);
+ }
+
+ /**
+ * Required. Name of the insight.
+ *
+ * Generated from protobuf field string name = 1 [(.google.api.field_behavior) = REQUIRED, (.google.api.resource_reference) = {
+ * @return string
+ */
+ public function getName()
+ {
+ return $this->name;
+ }
+
+ /**
+ * Required. Name of the insight.
+ *
+ * Generated from protobuf field string name = 1 [(.google.api.field_behavior) = REQUIRED, (.google.api.resource_reference) = {
+ * @param string $var
+ * @return $this
+ */
+ public function setName($var)
+ {
+ GPBUtil::checkString($var, True);
+ $this->name = $var;
+
+ return $this;
+ }
+
+}
+
diff --git a/owl-bot-staging/Recommender/v1/proto/src/Google/Cloud/Recommender/V1/GetInsightTypeConfigRequest.php b/owl-bot-staging/Recommender/v1/proto/src/Google/Cloud/Recommender/V1/GetInsightTypeConfigRequest.php
new file mode 100644
index 000000000000..cf71aa698a60
--- /dev/null
+++ b/owl-bot-staging/Recommender/v1/proto/src/Google/Cloud/Recommender/V1/GetInsightTypeConfigRequest.php
@@ -0,0 +1,111 @@
+google.cloud.recommender.v1.GetInsightTypeConfigRequest
+ */
+class GetInsightTypeConfigRequest extends \Google\Protobuf\Internal\Message
+{
+ /**
+ * Required. Name of the InsightTypeConfig to get.
+ * Acceptable formats:
+ * * `projects/[PROJECT_NUMBER]/locations/[LOCATION]/insightTypes/[INSIGHT_TYPE_ID]/config`
+ * * `projects/[PROJECT_ID]/locations/[LOCATION]/insightTypes/[INSIGHT_TYPE_ID]/config`
+ * * `organizations/[ORGANIZATION_ID]/locations/[LOCATION]/insightTypes/[INSIGHT_TYPE_ID]/config`
+ * * `billingAccounts/[BILLING_ACCOUNT_ID]/locations/[LOCATION]/insightTypes/[INSIGHT_TYPE_ID]/config`
+ *
+ * Generated from protobuf field string name = 1 [(.google.api.field_behavior) = REQUIRED, (.google.api.resource_reference) = {
+ */
+ protected $name = '';
+
+ /**
+ * @param string $name Required. Name of the InsightTypeConfig to get.
+ *
+ * Acceptable formats:
+ *
+ * * `projects/[PROJECT_NUMBER]/locations/[LOCATION]/insightTypes/[INSIGHT_TYPE_ID]/config`
+ *
+ * * `projects/[PROJECT_ID]/locations/[LOCATION]/insightTypes/[INSIGHT_TYPE_ID]/config`
+ *
+ * * `organizations/[ORGANIZATION_ID]/locations/[LOCATION]/insightTypes/[INSIGHT_TYPE_ID]/config`
+ *
+ * * `billingAccounts/[BILLING_ACCOUNT_ID]/locations/[LOCATION]/insightTypes/[INSIGHT_TYPE_ID]/config`
+ * Please see {@see RecommenderClient::insightTypeConfigName()} for help formatting this field.
+ *
+ * @return \Google\Cloud\Recommender\V1\GetInsightTypeConfigRequest
+ *
+ * @experimental
+ */
+ public static function build(string $name): self
+ {
+ return (new self())
+ ->setName($name);
+ }
+
+ /**
+ * Constructor.
+ *
+ * @param array $data {
+ * Optional. Data for populating the Message object.
+ *
+ * @type string $name
+ * Required. Name of the InsightTypeConfig to get.
+ * Acceptable formats:
+ * * `projects/[PROJECT_NUMBER]/locations/[LOCATION]/insightTypes/[INSIGHT_TYPE_ID]/config`
+ * * `projects/[PROJECT_ID]/locations/[LOCATION]/insightTypes/[INSIGHT_TYPE_ID]/config`
+ * * `organizations/[ORGANIZATION_ID]/locations/[LOCATION]/insightTypes/[INSIGHT_TYPE_ID]/config`
+ * * `billingAccounts/[BILLING_ACCOUNT_ID]/locations/[LOCATION]/insightTypes/[INSIGHT_TYPE_ID]/config`
+ * }
+ */
+ public function __construct($data = NULL) {
+ \GPBMetadata\Google\Cloud\Recommender\V1\RecommenderService::initOnce();
+ parent::__construct($data);
+ }
+
+ /**
+ * Required. Name of the InsightTypeConfig to get.
+ * Acceptable formats:
+ * * `projects/[PROJECT_NUMBER]/locations/[LOCATION]/insightTypes/[INSIGHT_TYPE_ID]/config`
+ * * `projects/[PROJECT_ID]/locations/[LOCATION]/insightTypes/[INSIGHT_TYPE_ID]/config`
+ * * `organizations/[ORGANIZATION_ID]/locations/[LOCATION]/insightTypes/[INSIGHT_TYPE_ID]/config`
+ * * `billingAccounts/[BILLING_ACCOUNT_ID]/locations/[LOCATION]/insightTypes/[INSIGHT_TYPE_ID]/config`
+ *
+ * Generated from protobuf field string name = 1 [(.google.api.field_behavior) = REQUIRED, (.google.api.resource_reference) = {
+ * @return string
+ */
+ public function getName()
+ {
+ return $this->name;
+ }
+
+ /**
+ * Required. Name of the InsightTypeConfig to get.
+ * Acceptable formats:
+ * * `projects/[PROJECT_NUMBER]/locations/[LOCATION]/insightTypes/[INSIGHT_TYPE_ID]/config`
+ * * `projects/[PROJECT_ID]/locations/[LOCATION]/insightTypes/[INSIGHT_TYPE_ID]/config`
+ * * `organizations/[ORGANIZATION_ID]/locations/[LOCATION]/insightTypes/[INSIGHT_TYPE_ID]/config`
+ * * `billingAccounts/[BILLING_ACCOUNT_ID]/locations/[LOCATION]/insightTypes/[INSIGHT_TYPE_ID]/config`
+ *
+ * Generated from protobuf field string name = 1 [(.google.api.field_behavior) = REQUIRED, (.google.api.resource_reference) = {
+ * @param string $var
+ * @return $this
+ */
+ public function setName($var)
+ {
+ GPBUtil::checkString($var, True);
+ $this->name = $var;
+
+ return $this;
+ }
+
+}
+
diff --git a/owl-bot-staging/Recommender/v1/proto/src/Google/Cloud/Recommender/V1/GetRecommendationRequest.php b/owl-bot-staging/Recommender/v1/proto/src/Google/Cloud/Recommender/V1/GetRecommendationRequest.php
new file mode 100644
index 000000000000..b15ce7896af4
--- /dev/null
+++ b/owl-bot-staging/Recommender/v1/proto/src/Google/Cloud/Recommender/V1/GetRecommendationRequest.php
@@ -0,0 +1,81 @@
+google.cloud.recommender.v1.GetRecommendationRequest
+ */
+class GetRecommendationRequest extends \Google\Protobuf\Internal\Message
+{
+ /**
+ * Required. Name of the recommendation.
+ *
+ * Generated from protobuf field string name = 1 [(.google.api.field_behavior) = REQUIRED, (.google.api.resource_reference) = {
+ */
+ protected $name = '';
+
+ /**
+ * @param string $name Required. Name of the recommendation. Please see
+ * {@see RecommenderClient::recommendationName()} for help formatting this field.
+ *
+ * @return \Google\Cloud\Recommender\V1\GetRecommendationRequest
+ *
+ * @experimental
+ */
+ public static function build(string $name): self
+ {
+ return (new self())
+ ->setName($name);
+ }
+
+ /**
+ * Constructor.
+ *
+ * @param array $data {
+ * Optional. Data for populating the Message object.
+ *
+ * @type string $name
+ * Required. Name of the recommendation.
+ * }
+ */
+ public function __construct($data = NULL) {
+ \GPBMetadata\Google\Cloud\Recommender\V1\RecommenderService::initOnce();
+ parent::__construct($data);
+ }
+
+ /**
+ * Required. Name of the recommendation.
+ *
+ * Generated from protobuf field string name = 1 [(.google.api.field_behavior) = REQUIRED, (.google.api.resource_reference) = {
+ * @return string
+ */
+ public function getName()
+ {
+ return $this->name;
+ }
+
+ /**
+ * Required. Name of the recommendation.
+ *
+ * Generated from protobuf field string name = 1 [(.google.api.field_behavior) = REQUIRED, (.google.api.resource_reference) = {
+ * @param string $var
+ * @return $this
+ */
+ public function setName($var)
+ {
+ GPBUtil::checkString($var, True);
+ $this->name = $var;
+
+ return $this;
+ }
+
+}
+
diff --git a/owl-bot-staging/Recommender/v1/proto/src/Google/Cloud/Recommender/V1/GetRecommenderConfigRequest.php b/owl-bot-staging/Recommender/v1/proto/src/Google/Cloud/Recommender/V1/GetRecommenderConfigRequest.php
new file mode 100644
index 000000000000..ff82145c37d0
--- /dev/null
+++ b/owl-bot-staging/Recommender/v1/proto/src/Google/Cloud/Recommender/V1/GetRecommenderConfigRequest.php
@@ -0,0 +1,111 @@
+google.cloud.recommender.v1.GetRecommenderConfigRequest
+ */
+class GetRecommenderConfigRequest extends \Google\Protobuf\Internal\Message
+{
+ /**
+ * Required. Name of the Recommendation Config to get.
+ * Acceptable formats:
+ * * `projects/[PROJECT_NUMBER]/locations/[LOCATION]/recommenders/[RECOMMENDER_ID]/config`
+ * * `projects/[PROJECT_ID]/locations/[LOCATION]/recommenders/[RECOMMENDER_ID]/config`
+ * * `organizations/[ORGANIZATION_ID]/locations/[LOCATION]/recommenders/[RECOMMENDER_ID]/config`
+ * * `billingAccounts/[BILLING_ACCOUNT_ID]/locations/[LOCATION]/recommenders/[RECOMMENDER_ID]/config`
+ *
+ * Generated from protobuf field string name = 1 [(.google.api.field_behavior) = REQUIRED, (.google.api.resource_reference) = {
+ */
+ protected $name = '';
+
+ /**
+ * @param string $name Required. Name of the Recommendation Config to get.
+ *
+ * Acceptable formats:
+ *
+ * * `projects/[PROJECT_NUMBER]/locations/[LOCATION]/recommenders/[RECOMMENDER_ID]/config`
+ *
+ * * `projects/[PROJECT_ID]/locations/[LOCATION]/recommenders/[RECOMMENDER_ID]/config`
+ *
+ * * `organizations/[ORGANIZATION_ID]/locations/[LOCATION]/recommenders/[RECOMMENDER_ID]/config`
+ *
+ * * `billingAccounts/[BILLING_ACCOUNT_ID]/locations/[LOCATION]/recommenders/[RECOMMENDER_ID]/config`
+ * Please see {@see RecommenderClient::recommenderConfigName()} for help formatting this field.
+ *
+ * @return \Google\Cloud\Recommender\V1\GetRecommenderConfigRequest
+ *
+ * @experimental
+ */
+ public static function build(string $name): self
+ {
+ return (new self())
+ ->setName($name);
+ }
+
+ /**
+ * Constructor.
+ *
+ * @param array $data {
+ * Optional. Data for populating the Message object.
+ *
+ * @type string $name
+ * Required. Name of the Recommendation Config to get.
+ * Acceptable formats:
+ * * `projects/[PROJECT_NUMBER]/locations/[LOCATION]/recommenders/[RECOMMENDER_ID]/config`
+ * * `projects/[PROJECT_ID]/locations/[LOCATION]/recommenders/[RECOMMENDER_ID]/config`
+ * * `organizations/[ORGANIZATION_ID]/locations/[LOCATION]/recommenders/[RECOMMENDER_ID]/config`
+ * * `billingAccounts/[BILLING_ACCOUNT_ID]/locations/[LOCATION]/recommenders/[RECOMMENDER_ID]/config`
+ * }
+ */
+ public function __construct($data = NULL) {
+ \GPBMetadata\Google\Cloud\Recommender\V1\RecommenderService::initOnce();
+ parent::__construct($data);
+ }
+
+ /**
+ * Required. Name of the Recommendation Config to get.
+ * Acceptable formats:
+ * * `projects/[PROJECT_NUMBER]/locations/[LOCATION]/recommenders/[RECOMMENDER_ID]/config`
+ * * `projects/[PROJECT_ID]/locations/[LOCATION]/recommenders/[RECOMMENDER_ID]/config`
+ * * `organizations/[ORGANIZATION_ID]/locations/[LOCATION]/recommenders/[RECOMMENDER_ID]/config`
+ * * `billingAccounts/[BILLING_ACCOUNT_ID]/locations/[LOCATION]/recommenders/[RECOMMENDER_ID]/config`
+ *
+ * Generated from protobuf field string name = 1 [(.google.api.field_behavior) = REQUIRED, (.google.api.resource_reference) = {
+ * @return string
+ */
+ public function getName()
+ {
+ return $this->name;
+ }
+
+ /**
+ * Required. Name of the Recommendation Config to get.
+ * Acceptable formats:
+ * * `projects/[PROJECT_NUMBER]/locations/[LOCATION]/recommenders/[RECOMMENDER_ID]/config`
+ * * `projects/[PROJECT_ID]/locations/[LOCATION]/recommenders/[RECOMMENDER_ID]/config`
+ * * `organizations/[ORGANIZATION_ID]/locations/[LOCATION]/recommenders/[RECOMMENDER_ID]/config`
+ * * `billingAccounts/[BILLING_ACCOUNT_ID]/locations/[LOCATION]/recommenders/[RECOMMENDER_ID]/config`
+ *
+ * Generated from protobuf field string name = 1 [(.google.api.field_behavior) = REQUIRED, (.google.api.resource_reference) = {
+ * @param string $var
+ * @return $this
+ */
+ public function setName($var)
+ {
+ GPBUtil::checkString($var, True);
+ $this->name = $var;
+
+ return $this;
+ }
+
+}
+
diff --git a/owl-bot-staging/Recommender/v1/proto/src/Google/Cloud/Recommender/V1/Impact.php b/owl-bot-staging/Recommender/v1/proto/src/Google/Cloud/Recommender/V1/Impact.php
new file mode 100644
index 000000000000..1ae4e1147913
--- /dev/null
+++ b/owl-bot-staging/Recommender/v1/proto/src/Google/Cloud/Recommender/V1/Impact.php
@@ -0,0 +1,208 @@
+google.cloud.recommender.v1.Impact
+ */
+class Impact extends \Google\Protobuf\Internal\Message
+{
+ /**
+ * Category that is being targeted.
+ *
+ * Generated from protobuf field .google.cloud.recommender.v1.Impact.Category category = 1;
+ */
+ protected $category = 0;
+ protected $projection;
+
+ /**
+ * Constructor.
+ *
+ * @param array $data {
+ * Optional. Data for populating the Message object.
+ *
+ * @type int $category
+ * Category that is being targeted.
+ * @type \Google\Cloud\Recommender\V1\CostProjection $cost_projection
+ * Use with CategoryType.COST
+ * @type \Google\Cloud\Recommender\V1\SecurityProjection $security_projection
+ * Use with CategoryType.SECURITY
+ * @type \Google\Cloud\Recommender\V1\SustainabilityProjection $sustainability_projection
+ * Use with CategoryType.SUSTAINABILITY
+ * @type \Google\Cloud\Recommender\V1\ReliabilityProjection $reliability_projection
+ * Use with CategoryType.RELIABILITY
+ * }
+ */
+ public function __construct($data = NULL) {
+ \GPBMetadata\Google\Cloud\Recommender\V1\Recommendation::initOnce();
+ parent::__construct($data);
+ }
+
+ /**
+ * Category that is being targeted.
+ *
+ * Generated from protobuf field .google.cloud.recommender.v1.Impact.Category category = 1;
+ * @return int
+ */
+ public function getCategory()
+ {
+ return $this->category;
+ }
+
+ /**
+ * Category that is being targeted.
+ *
+ * Generated from protobuf field .google.cloud.recommender.v1.Impact.Category category = 1;
+ * @param int $var
+ * @return $this
+ */
+ public function setCategory($var)
+ {
+ GPBUtil::checkEnum($var, \Google\Cloud\Recommender\V1\Impact\Category::class);
+ $this->category = $var;
+
+ return $this;
+ }
+
+ /**
+ * Use with CategoryType.COST
+ *
+ * Generated from protobuf field .google.cloud.recommender.v1.CostProjection cost_projection = 100;
+ * @return \Google\Cloud\Recommender\V1\CostProjection|null
+ */
+ public function getCostProjection()
+ {
+ return $this->readOneof(100);
+ }
+
+ public function hasCostProjection()
+ {
+ return $this->hasOneof(100);
+ }
+
+ /**
+ * Use with CategoryType.COST
+ *
+ * Generated from protobuf field .google.cloud.recommender.v1.CostProjection cost_projection = 100;
+ * @param \Google\Cloud\Recommender\V1\CostProjection $var
+ * @return $this
+ */
+ public function setCostProjection($var)
+ {
+ GPBUtil::checkMessage($var, \Google\Cloud\Recommender\V1\CostProjection::class);
+ $this->writeOneof(100, $var);
+
+ return $this;
+ }
+
+ /**
+ * Use with CategoryType.SECURITY
+ *
+ * Generated from protobuf field .google.cloud.recommender.v1.SecurityProjection security_projection = 101;
+ * @return \Google\Cloud\Recommender\V1\SecurityProjection|null
+ */
+ public function getSecurityProjection()
+ {
+ return $this->readOneof(101);
+ }
+
+ public function hasSecurityProjection()
+ {
+ return $this->hasOneof(101);
+ }
+
+ /**
+ * Use with CategoryType.SECURITY
+ *
+ * Generated from protobuf field .google.cloud.recommender.v1.SecurityProjection security_projection = 101;
+ * @param \Google\Cloud\Recommender\V1\SecurityProjection $var
+ * @return $this
+ */
+ public function setSecurityProjection($var)
+ {
+ GPBUtil::checkMessage($var, \Google\Cloud\Recommender\V1\SecurityProjection::class);
+ $this->writeOneof(101, $var);
+
+ return $this;
+ }
+
+ /**
+ * Use with CategoryType.SUSTAINABILITY
+ *
+ * Generated from protobuf field .google.cloud.recommender.v1.SustainabilityProjection sustainability_projection = 102;
+ * @return \Google\Cloud\Recommender\V1\SustainabilityProjection|null
+ */
+ public function getSustainabilityProjection()
+ {
+ return $this->readOneof(102);
+ }
+
+ public function hasSustainabilityProjection()
+ {
+ return $this->hasOneof(102);
+ }
+
+ /**
+ * Use with CategoryType.SUSTAINABILITY
+ *
+ * Generated from protobuf field .google.cloud.recommender.v1.SustainabilityProjection sustainability_projection = 102;
+ * @param \Google\Cloud\Recommender\V1\SustainabilityProjection $var
+ * @return $this
+ */
+ public function setSustainabilityProjection($var)
+ {
+ GPBUtil::checkMessage($var, \Google\Cloud\Recommender\V1\SustainabilityProjection::class);
+ $this->writeOneof(102, $var);
+
+ return $this;
+ }
+
+ /**
+ * Use with CategoryType.RELIABILITY
+ *
+ * Generated from protobuf field .google.cloud.recommender.v1.ReliabilityProjection reliability_projection = 103;
+ * @return \Google\Cloud\Recommender\V1\ReliabilityProjection|null
+ */
+ public function getReliabilityProjection()
+ {
+ return $this->readOneof(103);
+ }
+
+ public function hasReliabilityProjection()
+ {
+ return $this->hasOneof(103);
+ }
+
+ /**
+ * Use with CategoryType.RELIABILITY
+ *
+ * Generated from protobuf field .google.cloud.recommender.v1.ReliabilityProjection reliability_projection = 103;
+ * @param \Google\Cloud\Recommender\V1\ReliabilityProjection $var
+ * @return $this
+ */
+ public function setReliabilityProjection($var)
+ {
+ GPBUtil::checkMessage($var, \Google\Cloud\Recommender\V1\ReliabilityProjection::class);
+ $this->writeOneof(103, $var);
+
+ return $this;
+ }
+
+ /**
+ * @return string
+ */
+ public function getProjection()
+ {
+ return $this->whichOneof("projection");
+ }
+
+}
+
diff --git a/owl-bot-staging/Recommender/v1/proto/src/Google/Cloud/Recommender/V1/Impact/Category.php b/owl-bot-staging/Recommender/v1/proto/src/Google/Cloud/Recommender/V1/Impact/Category.php
new file mode 100644
index 000000000000..3edc36ada2dc
--- /dev/null
+++ b/owl-bot-staging/Recommender/v1/proto/src/Google/Cloud/Recommender/V1/Impact/Category.php
@@ -0,0 +1,92 @@
+google.cloud.recommender.v1.Impact.Category
+ */
+class Category
+{
+ /**
+ * Default unspecified category. Don't use directly.
+ *
+ * Generated from protobuf enum CATEGORY_UNSPECIFIED = 0;
+ */
+ const CATEGORY_UNSPECIFIED = 0;
+ /**
+ * Indicates a potential increase or decrease in cost.
+ *
+ * Generated from protobuf enum COST = 1;
+ */
+ const COST = 1;
+ /**
+ * Indicates a potential increase or decrease in security.
+ *
+ * Generated from protobuf enum SECURITY = 2;
+ */
+ const SECURITY = 2;
+ /**
+ * Indicates a potential increase or decrease in performance.
+ *
+ * Generated from protobuf enum PERFORMANCE = 3;
+ */
+ const PERFORMANCE = 3;
+ /**
+ * Indicates a potential increase or decrease in manageability.
+ *
+ * Generated from protobuf enum MANAGEABILITY = 4;
+ */
+ const MANAGEABILITY = 4;
+ /**
+ * Indicates a potential increase or decrease in sustainability.
+ *
+ * Generated from protobuf enum SUSTAINABILITY = 5;
+ */
+ const SUSTAINABILITY = 5;
+ /**
+ * Indicates a potential increase or decrease in reliability.
+ *
+ * Generated from protobuf enum RELIABILITY = 6;
+ */
+ const RELIABILITY = 6;
+
+ private static $valueToName = [
+ self::CATEGORY_UNSPECIFIED => 'CATEGORY_UNSPECIFIED',
+ self::COST => 'COST',
+ self::SECURITY => 'SECURITY',
+ self::PERFORMANCE => 'PERFORMANCE',
+ self::MANAGEABILITY => 'MANAGEABILITY',
+ self::SUSTAINABILITY => 'SUSTAINABILITY',
+ self::RELIABILITY => 'RELIABILITY',
+ ];
+
+ 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);
+ }
+}
+
+// Adding a class alias for backwards compatibility with the previous class name.
+class_alias(Category::class, \Google\Cloud\Recommender\V1\Impact_Category::class);
+
diff --git a/owl-bot-staging/Recommender/v1/proto/src/Google/Cloud/Recommender/V1/Insight.php b/owl-bot-staging/Recommender/v1/proto/src/Google/Cloud/Recommender/V1/Insight.php
new file mode 100644
index 000000000000..544481b24ea5
--- /dev/null
+++ b/owl-bot-staging/Recommender/v1/proto/src/Google/Cloud/Recommender/V1/Insight.php
@@ -0,0 +1,502 @@
+google.cloud.recommender.v1.Insight
+ */
+class Insight extends \Google\Protobuf\Internal\Message
+{
+ /**
+ * Name of the insight.
+ *
+ * Generated from protobuf field string name = 1;
+ */
+ protected $name = '';
+ /**
+ * Free-form human readable summary in English. The maximum length is 500
+ * characters.
+ *
+ * Generated from protobuf field string description = 2;
+ */
+ protected $description = '';
+ /**
+ * Fully qualified resource names that this insight is targeting.
+ *
+ * Generated from protobuf field repeated string target_resources = 9;
+ */
+ private $target_resources;
+ /**
+ * Insight subtype. Insight content schema will be stable for a given subtype.
+ *
+ * Generated from protobuf field string insight_subtype = 10;
+ */
+ protected $insight_subtype = '';
+ /**
+ * A struct of custom fields to explain the insight.
+ * Example: "grantedPermissionsCount": "1000"
+ *
+ * Generated from protobuf field .google.protobuf.Struct content = 3;
+ */
+ protected $content = null;
+ /**
+ * Timestamp of the latest data used to generate the insight.
+ *
+ * Generated from protobuf field .google.protobuf.Timestamp last_refresh_time = 4;
+ */
+ protected $last_refresh_time = null;
+ /**
+ * Observation period that led to the insight. The source data used to
+ * generate the insight ends at last_refresh_time and begins at
+ * (last_refresh_time - observation_period).
+ *
+ * Generated from protobuf field .google.protobuf.Duration observation_period = 5;
+ */
+ protected $observation_period = null;
+ /**
+ * Information state and metadata.
+ *
+ * Generated from protobuf field .google.cloud.recommender.v1.InsightStateInfo state_info = 6;
+ */
+ protected $state_info = null;
+ /**
+ * Category being targeted by the insight.
+ *
+ * Generated from protobuf field .google.cloud.recommender.v1.Insight.Category category = 7;
+ */
+ protected $category = 0;
+ /**
+ * Insight's severity.
+ *
+ * Generated from protobuf field .google.cloud.recommender.v1.Insight.Severity severity = 15;
+ */
+ protected $severity = 0;
+ /**
+ * Fingerprint of the Insight. Provides optimistic locking when updating
+ * states.
+ *
+ * Generated from protobuf field string etag = 11;
+ */
+ protected $etag = '';
+ /**
+ * Recommendations derived from this insight.
+ *
+ * Generated from protobuf field repeated .google.cloud.recommender.v1.Insight.RecommendationReference associated_recommendations = 8;
+ */
+ private $associated_recommendations;
+
+ /**
+ * Constructor.
+ *
+ * @param array $data {
+ * Optional. Data for populating the Message object.
+ *
+ * @type string $name
+ * Name of the insight.
+ * @type string $description
+ * Free-form human readable summary in English. The maximum length is 500
+ * characters.
+ * @type array|\Google\Protobuf\Internal\RepeatedField $target_resources
+ * Fully qualified resource names that this insight is targeting.
+ * @type string $insight_subtype
+ * Insight subtype. Insight content schema will be stable for a given subtype.
+ * @type \Google\Protobuf\Struct $content
+ * A struct of custom fields to explain the insight.
+ * Example: "grantedPermissionsCount": "1000"
+ * @type \Google\Protobuf\Timestamp $last_refresh_time
+ * Timestamp of the latest data used to generate the insight.
+ * @type \Google\Protobuf\Duration $observation_period
+ * Observation period that led to the insight. The source data used to
+ * generate the insight ends at last_refresh_time and begins at
+ * (last_refresh_time - observation_period).
+ * @type \Google\Cloud\Recommender\V1\InsightStateInfo $state_info
+ * Information state and metadata.
+ * @type int $category
+ * Category being targeted by the insight.
+ * @type int $severity
+ * Insight's severity.
+ * @type string $etag
+ * Fingerprint of the Insight. Provides optimistic locking when updating
+ * states.
+ * @type array<\Google\Cloud\Recommender\V1\Insight\RecommendationReference>|\Google\Protobuf\Internal\RepeatedField $associated_recommendations
+ * Recommendations derived from this insight.
+ * }
+ */
+ public function __construct($data = NULL) {
+ \GPBMetadata\Google\Cloud\Recommender\V1\Insight::initOnce();
+ parent::__construct($data);
+ }
+
+ /**
+ * Name of the insight.
+ *
+ * Generated from protobuf field string name = 1;
+ * @return string
+ */
+ public function getName()
+ {
+ return $this->name;
+ }
+
+ /**
+ * Name of the insight.
+ *
+ * Generated from protobuf field string name = 1;
+ * @param string $var
+ * @return $this
+ */
+ public function setName($var)
+ {
+ GPBUtil::checkString($var, True);
+ $this->name = $var;
+
+ return $this;
+ }
+
+ /**
+ * Free-form human readable summary in English. The maximum length is 500
+ * characters.
+ *
+ * Generated from protobuf field string description = 2;
+ * @return string
+ */
+ public function getDescription()
+ {
+ return $this->description;
+ }
+
+ /**
+ * Free-form human readable summary in English. The maximum length is 500
+ * characters.
+ *
+ * Generated from protobuf field string description = 2;
+ * @param string $var
+ * @return $this
+ */
+ public function setDescription($var)
+ {
+ GPBUtil::checkString($var, True);
+ $this->description = $var;
+
+ return $this;
+ }
+
+ /**
+ * Fully qualified resource names that this insight is targeting.
+ *
+ * Generated from protobuf field repeated string target_resources = 9;
+ * @return \Google\Protobuf\Internal\RepeatedField
+ */
+ public function getTargetResources()
+ {
+ return $this->target_resources;
+ }
+
+ /**
+ * Fully qualified resource names that this insight is targeting.
+ *
+ * Generated from protobuf field repeated string target_resources = 9;
+ * @param array|\Google\Protobuf\Internal\RepeatedField $var
+ * @return $this
+ */
+ public function setTargetResources($var)
+ {
+ $arr = GPBUtil::checkRepeatedField($var, \Google\Protobuf\Internal\GPBType::STRING);
+ $this->target_resources = $arr;
+
+ return $this;
+ }
+
+ /**
+ * Insight subtype. Insight content schema will be stable for a given subtype.
+ *
+ * Generated from protobuf field string insight_subtype = 10;
+ * @return string
+ */
+ public function getInsightSubtype()
+ {
+ return $this->insight_subtype;
+ }
+
+ /**
+ * Insight subtype. Insight content schema will be stable for a given subtype.
+ *
+ * Generated from protobuf field string insight_subtype = 10;
+ * @param string $var
+ * @return $this
+ */
+ public function setInsightSubtype($var)
+ {
+ GPBUtil::checkString($var, True);
+ $this->insight_subtype = $var;
+
+ return $this;
+ }
+
+ /**
+ * A struct of custom fields to explain the insight.
+ * Example: "grantedPermissionsCount": "1000"
+ *
+ * Generated from protobuf field .google.protobuf.Struct content = 3;
+ * @return \Google\Protobuf\Struct|null
+ */
+ public function getContent()
+ {
+ return $this->content;
+ }
+
+ public function hasContent()
+ {
+ return isset($this->content);
+ }
+
+ public function clearContent()
+ {
+ unset($this->content);
+ }
+
+ /**
+ * A struct of custom fields to explain the insight.
+ * Example: "grantedPermissionsCount": "1000"
+ *
+ * Generated from protobuf field .google.protobuf.Struct content = 3;
+ * @param \Google\Protobuf\Struct $var
+ * @return $this
+ */
+ public function setContent($var)
+ {
+ GPBUtil::checkMessage($var, \Google\Protobuf\Struct::class);
+ $this->content = $var;
+
+ return $this;
+ }
+
+ /**
+ * Timestamp of the latest data used to generate the insight.
+ *
+ * Generated from protobuf field .google.protobuf.Timestamp last_refresh_time = 4;
+ * @return \Google\Protobuf\Timestamp|null
+ */
+ public function getLastRefreshTime()
+ {
+ return $this->last_refresh_time;
+ }
+
+ public function hasLastRefreshTime()
+ {
+ return isset($this->last_refresh_time);
+ }
+
+ public function clearLastRefreshTime()
+ {
+ unset($this->last_refresh_time);
+ }
+
+ /**
+ * Timestamp of the latest data used to generate the insight.
+ *
+ * Generated from protobuf field .google.protobuf.Timestamp last_refresh_time = 4;
+ * @param \Google\Protobuf\Timestamp $var
+ * @return $this
+ */
+ public function setLastRefreshTime($var)
+ {
+ GPBUtil::checkMessage($var, \Google\Protobuf\Timestamp::class);
+ $this->last_refresh_time = $var;
+
+ return $this;
+ }
+
+ /**
+ * Observation period that led to the insight. The source data used to
+ * generate the insight ends at last_refresh_time and begins at
+ * (last_refresh_time - observation_period).
+ *
+ * Generated from protobuf field .google.protobuf.Duration observation_period = 5;
+ * @return \Google\Protobuf\Duration|null
+ */
+ public function getObservationPeriod()
+ {
+ return $this->observation_period;
+ }
+
+ public function hasObservationPeriod()
+ {
+ return isset($this->observation_period);
+ }
+
+ public function clearObservationPeriod()
+ {
+ unset($this->observation_period);
+ }
+
+ /**
+ * Observation period that led to the insight. The source data used to
+ * generate the insight ends at last_refresh_time and begins at
+ * (last_refresh_time - observation_period).
+ *
+ * Generated from protobuf field .google.protobuf.Duration observation_period = 5;
+ * @param \Google\Protobuf\Duration $var
+ * @return $this
+ */
+ public function setObservationPeriod($var)
+ {
+ GPBUtil::checkMessage($var, \Google\Protobuf\Duration::class);
+ $this->observation_period = $var;
+
+ return $this;
+ }
+
+ /**
+ * Information state and metadata.
+ *
+ * Generated from protobuf field .google.cloud.recommender.v1.InsightStateInfo state_info = 6;
+ * @return \Google\Cloud\Recommender\V1\InsightStateInfo|null
+ */
+ public function getStateInfo()
+ {
+ return $this->state_info;
+ }
+
+ public function hasStateInfo()
+ {
+ return isset($this->state_info);
+ }
+
+ public function clearStateInfo()
+ {
+ unset($this->state_info);
+ }
+
+ /**
+ * Information state and metadata.
+ *
+ * Generated from protobuf field .google.cloud.recommender.v1.InsightStateInfo state_info = 6;
+ * @param \Google\Cloud\Recommender\V1\InsightStateInfo $var
+ * @return $this
+ */
+ public function setStateInfo($var)
+ {
+ GPBUtil::checkMessage($var, \Google\Cloud\Recommender\V1\InsightStateInfo::class);
+ $this->state_info = $var;
+
+ return $this;
+ }
+
+ /**
+ * Category being targeted by the insight.
+ *
+ * Generated from protobuf field .google.cloud.recommender.v1.Insight.Category category = 7;
+ * @return int
+ */
+ public function getCategory()
+ {
+ return $this->category;
+ }
+
+ /**
+ * Category being targeted by the insight.
+ *
+ * Generated from protobuf field .google.cloud.recommender.v1.Insight.Category category = 7;
+ * @param int $var
+ * @return $this
+ */
+ public function setCategory($var)
+ {
+ GPBUtil::checkEnum($var, \Google\Cloud\Recommender\V1\Insight\Category::class);
+ $this->category = $var;
+
+ return $this;
+ }
+
+ /**
+ * Insight's severity.
+ *
+ * Generated from protobuf field .google.cloud.recommender.v1.Insight.Severity severity = 15;
+ * @return int
+ */
+ public function getSeverity()
+ {
+ return $this->severity;
+ }
+
+ /**
+ * Insight's severity.
+ *
+ * Generated from protobuf field .google.cloud.recommender.v1.Insight.Severity severity = 15;
+ * @param int $var
+ * @return $this
+ */
+ public function setSeverity($var)
+ {
+ GPBUtil::checkEnum($var, \Google\Cloud\Recommender\V1\Insight\Severity::class);
+ $this->severity = $var;
+
+ return $this;
+ }
+
+ /**
+ * Fingerprint of the Insight. Provides optimistic locking when updating
+ * states.
+ *
+ * Generated from protobuf field string etag = 11;
+ * @return string
+ */
+ public function getEtag()
+ {
+ return $this->etag;
+ }
+
+ /**
+ * Fingerprint of the Insight. Provides optimistic locking when updating
+ * states.
+ *
+ * Generated from protobuf field string etag = 11;
+ * @param string $var
+ * @return $this
+ */
+ public function setEtag($var)
+ {
+ GPBUtil::checkString($var, True);
+ $this->etag = $var;
+
+ return $this;
+ }
+
+ /**
+ * Recommendations derived from this insight.
+ *
+ * Generated from protobuf field repeated .google.cloud.recommender.v1.Insight.RecommendationReference associated_recommendations = 8;
+ * @return \Google\Protobuf\Internal\RepeatedField
+ */
+ public function getAssociatedRecommendations()
+ {
+ return $this->associated_recommendations;
+ }
+
+ /**
+ * Recommendations derived from this insight.
+ *
+ * Generated from protobuf field repeated .google.cloud.recommender.v1.Insight.RecommendationReference associated_recommendations = 8;
+ * @param array<\Google\Cloud\Recommender\V1\Insight\RecommendationReference>|\Google\Protobuf\Internal\RepeatedField $var
+ * @return $this
+ */
+ public function setAssociatedRecommendations($var)
+ {
+ $arr = GPBUtil::checkRepeatedField($var, \Google\Protobuf\Internal\GPBType::MESSAGE, \Google\Cloud\Recommender\V1\Insight\RecommendationReference::class);
+ $this->associated_recommendations = $arr;
+
+ return $this;
+ }
+
+}
+
diff --git a/owl-bot-staging/Recommender/v1/proto/src/Google/Cloud/Recommender/V1/Insight/Category.php b/owl-bot-staging/Recommender/v1/proto/src/Google/Cloud/Recommender/V1/Insight/Category.php
new file mode 100644
index 000000000000..2bd1978a8018
--- /dev/null
+++ b/owl-bot-staging/Recommender/v1/proto/src/Google/Cloud/Recommender/V1/Insight/Category.php
@@ -0,0 +1,92 @@
+google.cloud.recommender.v1.Insight.Category
+ */
+class Category
+{
+ /**
+ * Unspecified category.
+ *
+ * Generated from protobuf enum CATEGORY_UNSPECIFIED = 0;
+ */
+ const CATEGORY_UNSPECIFIED = 0;
+ /**
+ * The insight is related to cost.
+ *
+ * Generated from protobuf enum COST = 1;
+ */
+ const COST = 1;
+ /**
+ * The insight is related to security.
+ *
+ * Generated from protobuf enum SECURITY = 2;
+ */
+ const SECURITY = 2;
+ /**
+ * The insight is related to performance.
+ *
+ * Generated from protobuf enum PERFORMANCE = 3;
+ */
+ const PERFORMANCE = 3;
+ /**
+ * This insight is related to manageability.
+ *
+ * Generated from protobuf enum MANAGEABILITY = 4;
+ */
+ const MANAGEABILITY = 4;
+ /**
+ * The insight is related to sustainability.
+ *
+ * Generated from protobuf enum SUSTAINABILITY = 5;
+ */
+ const SUSTAINABILITY = 5;
+ /**
+ * This insight is related to reliability.
+ *
+ * Generated from protobuf enum RELIABILITY = 6;
+ */
+ const RELIABILITY = 6;
+
+ private static $valueToName = [
+ self::CATEGORY_UNSPECIFIED => 'CATEGORY_UNSPECIFIED',
+ self::COST => 'COST',
+ self::SECURITY => 'SECURITY',
+ self::PERFORMANCE => 'PERFORMANCE',
+ self::MANAGEABILITY => 'MANAGEABILITY',
+ self::SUSTAINABILITY => 'SUSTAINABILITY',
+ self::RELIABILITY => 'RELIABILITY',
+ ];
+
+ 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);
+ }
+}
+
+// Adding a class alias for backwards compatibility with the previous class name.
+class_alias(Category::class, \Google\Cloud\Recommender\V1\Insight_Category::class);
+
diff --git a/owl-bot-staging/Recommender/v1/proto/src/Google/Cloud/Recommender/V1/Insight/RecommendationReference.php b/owl-bot-staging/Recommender/v1/proto/src/Google/Cloud/Recommender/V1/Insight/RecommendationReference.php
new file mode 100644
index 000000000000..2b8fdf78c012
--- /dev/null
+++ b/owl-bot-staging/Recommender/v1/proto/src/Google/Cloud/Recommender/V1/Insight/RecommendationReference.php
@@ -0,0 +1,74 @@
+google.cloud.recommender.v1.Insight.RecommendationReference
+ */
+class RecommendationReference extends \Google\Protobuf\Internal\Message
+{
+ /**
+ * Recommendation resource name, e.g.
+ * projects/[PROJECT_NUMBER]/locations/[LOCATION]/recommenders/[RECOMMENDER_ID]/recommendations/[RECOMMENDATION_ID]
+ *
+ * Generated from protobuf field string recommendation = 1;
+ */
+ protected $recommendation = '';
+
+ /**
+ * Constructor.
+ *
+ * @param array $data {
+ * Optional. Data for populating the Message object.
+ *
+ * @type string $recommendation
+ * Recommendation resource name, e.g.
+ * projects/[PROJECT_NUMBER]/locations/[LOCATION]/recommenders/[RECOMMENDER_ID]/recommendations/[RECOMMENDATION_ID]
+ * }
+ */
+ public function __construct($data = NULL) {
+ \GPBMetadata\Google\Cloud\Recommender\V1\Insight::initOnce();
+ parent::__construct($data);
+ }
+
+ /**
+ * Recommendation resource name, e.g.
+ * projects/[PROJECT_NUMBER]/locations/[LOCATION]/recommenders/[RECOMMENDER_ID]/recommendations/[RECOMMENDATION_ID]
+ *
+ * Generated from protobuf field string recommendation = 1;
+ * @return string
+ */
+ public function getRecommendation()
+ {
+ return $this->recommendation;
+ }
+
+ /**
+ * Recommendation resource name, e.g.
+ * projects/[PROJECT_NUMBER]/locations/[LOCATION]/recommenders/[RECOMMENDER_ID]/recommendations/[RECOMMENDATION_ID]
+ *
+ * Generated from protobuf field string recommendation = 1;
+ * @param string $var
+ * @return $this
+ */
+ public function setRecommendation($var)
+ {
+ GPBUtil::checkString($var, True);
+ $this->recommendation = $var;
+
+ return $this;
+ }
+
+}
+
+// Adding a class alias for backwards compatibility with the previous class name.
+class_alias(RecommendationReference::class, \Google\Cloud\Recommender\V1\Insight_RecommendationReference::class);
+
diff --git a/owl-bot-staging/Recommender/v1/proto/src/Google/Cloud/Recommender/V1/Insight/Severity.php b/owl-bot-staging/Recommender/v1/proto/src/Google/Cloud/Recommender/V1/Insight/Severity.php
new file mode 100644
index 000000000000..4370e3d0118e
--- /dev/null
+++ b/owl-bot-staging/Recommender/v1/proto/src/Google/Cloud/Recommender/V1/Insight/Severity.php
@@ -0,0 +1,78 @@
+google.cloud.recommender.v1.Insight.Severity
+ */
+class Severity
+{
+ /**
+ * Insight has unspecified severity.
+ *
+ * Generated from protobuf enum SEVERITY_UNSPECIFIED = 0;
+ */
+ const SEVERITY_UNSPECIFIED = 0;
+ /**
+ * Insight has low severity.
+ *
+ * Generated from protobuf enum LOW = 1;
+ */
+ const LOW = 1;
+ /**
+ * Insight has medium severity.
+ *
+ * Generated from protobuf enum MEDIUM = 2;
+ */
+ const MEDIUM = 2;
+ /**
+ * Insight has high severity.
+ *
+ * Generated from protobuf enum HIGH = 3;
+ */
+ const HIGH = 3;
+ /**
+ * Insight has critical severity.
+ *
+ * Generated from protobuf enum CRITICAL = 4;
+ */
+ const CRITICAL = 4;
+
+ private static $valueToName = [
+ self::SEVERITY_UNSPECIFIED => 'SEVERITY_UNSPECIFIED',
+ self::LOW => 'LOW',
+ self::MEDIUM => 'MEDIUM',
+ self::HIGH => 'HIGH',
+ self::CRITICAL => 'CRITICAL',
+ ];
+
+ 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);
+ }
+}
+
+// Adding a class alias for backwards compatibility with the previous class name.
+class_alias(Severity::class, \Google\Cloud\Recommender\V1\Insight_Severity::class);
+
diff --git a/owl-bot-staging/Recommender/v1/proto/src/Google/Cloud/Recommender/V1/InsightStateInfo.php b/owl-bot-staging/Recommender/v1/proto/src/Google/Cloud/Recommender/V1/InsightStateInfo.php
new file mode 100644
index 000000000000..e34f0b84d941
--- /dev/null
+++ b/owl-bot-staging/Recommender/v1/proto/src/Google/Cloud/Recommender/V1/InsightStateInfo.php
@@ -0,0 +1,101 @@
+google.cloud.recommender.v1.InsightStateInfo
+ */
+class InsightStateInfo extends \Google\Protobuf\Internal\Message
+{
+ /**
+ * Insight state.
+ *
+ * Generated from protobuf field .google.cloud.recommender.v1.InsightStateInfo.State state = 1;
+ */
+ protected $state = 0;
+ /**
+ * A map of metadata for the state, provided by user or automations systems.
+ *
+ * Generated from protobuf field map state_metadata = 2;
+ */
+ private $state_metadata;
+
+ /**
+ * Constructor.
+ *
+ * @param array $data {
+ * Optional. Data for populating the Message object.
+ *
+ * @type int $state
+ * Insight state.
+ * @type array|\Google\Protobuf\Internal\MapField $state_metadata
+ * A map of metadata for the state, provided by user or automations systems.
+ * }
+ */
+ public function __construct($data = NULL) {
+ \GPBMetadata\Google\Cloud\Recommender\V1\Insight::initOnce();
+ parent::__construct($data);
+ }
+
+ /**
+ * Insight state.
+ *
+ * Generated from protobuf field .google.cloud.recommender.v1.InsightStateInfo.State state = 1;
+ * @return int
+ */
+ public function getState()
+ {
+ return $this->state;
+ }
+
+ /**
+ * Insight state.
+ *
+ * Generated from protobuf field .google.cloud.recommender.v1.InsightStateInfo.State state = 1;
+ * @param int $var
+ * @return $this
+ */
+ public function setState($var)
+ {
+ GPBUtil::checkEnum($var, \Google\Cloud\Recommender\V1\InsightStateInfo\State::class);
+ $this->state = $var;
+
+ return $this;
+ }
+
+ /**
+ * A map of metadata for the state, provided by user or automations systems.
+ *
+ * Generated from protobuf field map state_metadata = 2;
+ * @return \Google\Protobuf\Internal\MapField
+ */
+ public function getStateMetadata()
+ {
+ return $this->state_metadata;
+ }
+
+ /**
+ * A map of metadata for the state, provided by user or automations systems.
+ *
+ * Generated from protobuf field map state_metadata = 2;
+ * @param array|\Google\Protobuf\Internal\MapField $var
+ * @return $this
+ */
+ public function setStateMetadata($var)
+ {
+ $arr = GPBUtil::checkMapField($var, \Google\Protobuf\Internal\GPBType::STRING, \Google\Protobuf\Internal\GPBType::STRING);
+ $this->state_metadata = $arr;
+
+ return $this;
+ }
+
+}
+
diff --git a/owl-bot-staging/Recommender/v1/proto/src/Google/Cloud/Recommender/V1/InsightStateInfo/State.php b/owl-bot-staging/Recommender/v1/proto/src/Google/Cloud/Recommender/V1/InsightStateInfo/State.php
new file mode 100644
index 000000000000..648ce14b4594
--- /dev/null
+++ b/owl-bot-staging/Recommender/v1/proto/src/Google/Cloud/Recommender/V1/InsightStateInfo/State.php
@@ -0,0 +1,77 @@
+google.cloud.recommender.v1.InsightStateInfo.State
+ */
+class State
+{
+ /**
+ * Unspecified state.
+ *
+ * Generated from protobuf enum STATE_UNSPECIFIED = 0;
+ */
+ const STATE_UNSPECIFIED = 0;
+ /**
+ * Insight is active. Content for ACTIVE insights can be updated by Google.
+ * ACTIVE insights can be marked DISMISSED OR ACCEPTED.
+ *
+ * Generated from protobuf enum ACTIVE = 1;
+ */
+ const ACTIVE = 1;
+ /**
+ * Some action has been taken based on this insight. Insights become
+ * accepted when a recommendation derived from the insight has been marked
+ * CLAIMED, SUCCEEDED, or FAILED. ACTIVE insights can also be marked
+ * ACCEPTED explicitly. Content for ACCEPTED insights is immutable. ACCEPTED
+ * insights can only be marked ACCEPTED (which may update state metadata).
+ *
+ * Generated from protobuf enum ACCEPTED = 2;
+ */
+ const ACCEPTED = 2;
+ /**
+ * Insight is dismissed. Content for DISMISSED insights can be updated by
+ * Google. DISMISSED insights can be marked as ACTIVE.
+ *
+ * Generated from protobuf enum DISMISSED = 3;
+ */
+ const DISMISSED = 3;
+
+ private static $valueToName = [
+ self::STATE_UNSPECIFIED => 'STATE_UNSPECIFIED',
+ self::ACTIVE => 'ACTIVE',
+ self::ACCEPTED => 'ACCEPTED',
+ self::DISMISSED => 'DISMISSED',
+ ];
+
+ 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);
+ }
+}
+
+// Adding a class alias for backwards compatibility with the previous class name.
+class_alias(State::class, \Google\Cloud\Recommender\V1\InsightStateInfo_State::class);
+
diff --git a/owl-bot-staging/Recommender/v1/proto/src/Google/Cloud/Recommender/V1/InsightTypeConfig.php b/owl-bot-staging/Recommender/v1/proto/src/Google/Cloud/Recommender/V1/InsightTypeConfig.php
new file mode 100644
index 000000000000..dc2cf99dabcd
--- /dev/null
+++ b/owl-bot-staging/Recommender/v1/proto/src/Google/Cloud/Recommender/V1/InsightTypeConfig.php
@@ -0,0 +1,347 @@
+google.cloud.recommender.v1.InsightTypeConfig
+ */
+class InsightTypeConfig extends \Google\Protobuf\Internal\Message
+{
+ /**
+ * Name of insight type config.
+ * Eg,
+ * projects/[PROJECT_NUMBER]/locations/[LOCATION]/insightTypes/[INSIGHT_TYPE_ID]/config
+ *
+ * Generated from protobuf field string name = 1;
+ */
+ protected $name = '';
+ /**
+ * InsightTypeGenerationConfig which configures the generation of
+ * insights for this insight type.
+ *
+ * Generated from protobuf field .google.cloud.recommender.v1.InsightTypeGenerationConfig insight_type_generation_config = 2;
+ */
+ protected $insight_type_generation_config = null;
+ /**
+ * Fingerprint of the InsightTypeConfig. Provides optimistic locking when
+ * updating.
+ *
+ * Generated from protobuf field string etag = 3;
+ */
+ protected $etag = '';
+ /**
+ * Last time when the config was updated.
+ *
+ * Generated from protobuf field .google.protobuf.Timestamp update_time = 4;
+ */
+ protected $update_time = null;
+ /**
+ * Output only. Immutable. The revision ID of the config.
+ * A new revision is committed whenever the config is changed in any way.
+ * The format is an 8-character hexadecimal string.
+ *
+ * Generated from protobuf field string revision_id = 5 [(.google.api.field_behavior) = IMMUTABLE, (.google.api.field_behavior) = OUTPUT_ONLY];
+ */
+ protected $revision_id = '';
+ /**
+ * Allows clients to store small amounts of arbitrary data. Annotations must
+ * follow the Kubernetes syntax.
+ * The total size of all keys and values combined is limited to 256k.
+ * Key can have 2 segments: prefix (optional) and name (required),
+ * separated by a slash (/).
+ * Prefix must be a DNS subdomain.
+ * Name must be 63 characters or less, begin and end with alphanumerics,
+ * with dashes (-), underscores (_), dots (.), and alphanumerics between.
+ *
+ * Generated from protobuf field map annotations = 6;
+ */
+ private $annotations;
+ /**
+ * A user-settable field to provide a human-readable name to be used in user
+ * interfaces.
+ *
+ * Generated from protobuf field string display_name = 7;
+ */
+ protected $display_name = '';
+
+ /**
+ * Constructor.
+ *
+ * @param array $data {
+ * Optional. Data for populating the Message object.
+ *
+ * @type string $name
+ * Name of insight type config.
+ * Eg,
+ * projects/[PROJECT_NUMBER]/locations/[LOCATION]/insightTypes/[INSIGHT_TYPE_ID]/config
+ * @type \Google\Cloud\Recommender\V1\InsightTypeGenerationConfig $insight_type_generation_config
+ * InsightTypeGenerationConfig which configures the generation of
+ * insights for this insight type.
+ * @type string $etag
+ * Fingerprint of the InsightTypeConfig. Provides optimistic locking when
+ * updating.
+ * @type \Google\Protobuf\Timestamp $update_time
+ * Last time when the config was updated.
+ * @type string $revision_id
+ * Output only. Immutable. The revision ID of the config.
+ * A new revision is committed whenever the config is changed in any way.
+ * The format is an 8-character hexadecimal string.
+ * @type array|\Google\Protobuf\Internal\MapField $annotations
+ * Allows clients to store small amounts of arbitrary data. Annotations must
+ * follow the Kubernetes syntax.
+ * The total size of all keys and values combined is limited to 256k.
+ * Key can have 2 segments: prefix (optional) and name (required),
+ * separated by a slash (/).
+ * Prefix must be a DNS subdomain.
+ * Name must be 63 characters or less, begin and end with alphanumerics,
+ * with dashes (-), underscores (_), dots (.), and alphanumerics between.
+ * @type string $display_name
+ * A user-settable field to provide a human-readable name to be used in user
+ * interfaces.
+ * }
+ */
+ public function __construct($data = NULL) {
+ \GPBMetadata\Google\Cloud\Recommender\V1\InsightTypeConfig::initOnce();
+ parent::__construct($data);
+ }
+
+ /**
+ * Name of insight type config.
+ * Eg,
+ * projects/[PROJECT_NUMBER]/locations/[LOCATION]/insightTypes/[INSIGHT_TYPE_ID]/config
+ *
+ * Generated from protobuf field string name = 1;
+ * @return string
+ */
+ public function getName()
+ {
+ return $this->name;
+ }
+
+ /**
+ * Name of insight type config.
+ * Eg,
+ * projects/[PROJECT_NUMBER]/locations/[LOCATION]/insightTypes/[INSIGHT_TYPE_ID]/config
+ *
+ * Generated from protobuf field string name = 1;
+ * @param string $var
+ * @return $this
+ */
+ public function setName($var)
+ {
+ GPBUtil::checkString($var, True);
+ $this->name = $var;
+
+ return $this;
+ }
+
+ /**
+ * InsightTypeGenerationConfig which configures the generation of
+ * insights for this insight type.
+ *
+ * Generated from protobuf field .google.cloud.recommender.v1.InsightTypeGenerationConfig insight_type_generation_config = 2;
+ * @return \Google\Cloud\Recommender\V1\InsightTypeGenerationConfig|null
+ */
+ public function getInsightTypeGenerationConfig()
+ {
+ return $this->insight_type_generation_config;
+ }
+
+ public function hasInsightTypeGenerationConfig()
+ {
+ return isset($this->insight_type_generation_config);
+ }
+
+ public function clearInsightTypeGenerationConfig()
+ {
+ unset($this->insight_type_generation_config);
+ }
+
+ /**
+ * InsightTypeGenerationConfig which configures the generation of
+ * insights for this insight type.
+ *
+ * Generated from protobuf field .google.cloud.recommender.v1.InsightTypeGenerationConfig insight_type_generation_config = 2;
+ * @param \Google\Cloud\Recommender\V1\InsightTypeGenerationConfig $var
+ * @return $this
+ */
+ public function setInsightTypeGenerationConfig($var)
+ {
+ GPBUtil::checkMessage($var, \Google\Cloud\Recommender\V1\InsightTypeGenerationConfig::class);
+ $this->insight_type_generation_config = $var;
+
+ return $this;
+ }
+
+ /**
+ * Fingerprint of the InsightTypeConfig. Provides optimistic locking when
+ * updating.
+ *
+ * Generated from protobuf field string etag = 3;
+ * @return string
+ */
+ public function getEtag()
+ {
+ return $this->etag;
+ }
+
+ /**
+ * Fingerprint of the InsightTypeConfig. Provides optimistic locking when
+ * updating.
+ *
+ * Generated from protobuf field string etag = 3;
+ * @param string $var
+ * @return $this
+ */
+ public function setEtag($var)
+ {
+ GPBUtil::checkString($var, True);
+ $this->etag = $var;
+
+ return $this;
+ }
+
+ /**
+ * Last time when the config was updated.
+ *
+ * Generated from protobuf field .google.protobuf.Timestamp update_time = 4;
+ * @return \Google\Protobuf\Timestamp|null
+ */
+ public function getUpdateTime()
+ {
+ return $this->update_time;
+ }
+
+ public function hasUpdateTime()
+ {
+ return isset($this->update_time);
+ }
+
+ public function clearUpdateTime()
+ {
+ unset($this->update_time);
+ }
+
+ /**
+ * Last time when the config was updated.
+ *
+ * Generated from protobuf field .google.protobuf.Timestamp update_time = 4;
+ * @param \Google\Protobuf\Timestamp $var
+ * @return $this
+ */
+ public function setUpdateTime($var)
+ {
+ GPBUtil::checkMessage($var, \Google\Protobuf\Timestamp::class);
+ $this->update_time = $var;
+
+ return $this;
+ }
+
+ /**
+ * Output only. Immutable. The revision ID of the config.
+ * A new revision is committed whenever the config is changed in any way.
+ * The format is an 8-character hexadecimal string.
+ *
+ * Generated from protobuf field string revision_id = 5 [(.google.api.field_behavior) = IMMUTABLE, (.google.api.field_behavior) = OUTPUT_ONLY];
+ * @return string
+ */
+ public function getRevisionId()
+ {
+ return $this->revision_id;
+ }
+
+ /**
+ * Output only. Immutable. The revision ID of the config.
+ * A new revision is committed whenever the config is changed in any way.
+ * The format is an 8-character hexadecimal string.
+ *
+ * Generated from protobuf field string revision_id = 5 [(.google.api.field_behavior) = IMMUTABLE, (.google.api.field_behavior) = OUTPUT_ONLY];
+ * @param string $var
+ * @return $this
+ */
+ public function setRevisionId($var)
+ {
+ GPBUtil::checkString($var, True);
+ $this->revision_id = $var;
+
+ return $this;
+ }
+
+ /**
+ * Allows clients to store small amounts of arbitrary data. Annotations must
+ * follow the Kubernetes syntax.
+ * The total size of all keys and values combined is limited to 256k.
+ * Key can have 2 segments: prefix (optional) and name (required),
+ * separated by a slash (/).
+ * Prefix must be a DNS subdomain.
+ * Name must be 63 characters or less, begin and end with alphanumerics,
+ * with dashes (-), underscores (_), dots (.), and alphanumerics between.
+ *
+ * Generated from protobuf field map annotations = 6;
+ * @return \Google\Protobuf\Internal\MapField
+ */
+ public function getAnnotations()
+ {
+ return $this->annotations;
+ }
+
+ /**
+ * Allows clients to store small amounts of arbitrary data. Annotations must
+ * follow the Kubernetes syntax.
+ * The total size of all keys and values combined is limited to 256k.
+ * Key can have 2 segments: prefix (optional) and name (required),
+ * separated by a slash (/).
+ * Prefix must be a DNS subdomain.
+ * Name must be 63 characters or less, begin and end with alphanumerics,
+ * with dashes (-), underscores (_), dots (.), and alphanumerics between.
+ *
+ * Generated from protobuf field map annotations = 6;
+ * @param array|\Google\Protobuf\Internal\MapField $var
+ * @return $this
+ */
+ public function setAnnotations($var)
+ {
+ $arr = GPBUtil::checkMapField($var, \Google\Protobuf\Internal\GPBType::STRING, \Google\Protobuf\Internal\GPBType::STRING);
+ $this->annotations = $arr;
+
+ return $this;
+ }
+
+ /**
+ * A user-settable field to provide a human-readable name to be used in user
+ * interfaces.
+ *
+ * Generated from protobuf field string display_name = 7;
+ * @return string
+ */
+ public function getDisplayName()
+ {
+ return $this->display_name;
+ }
+
+ /**
+ * A user-settable field to provide a human-readable name to be used in user
+ * interfaces.
+ *
+ * Generated from protobuf field string display_name = 7;
+ * @param string $var
+ * @return $this
+ */
+ public function setDisplayName($var)
+ {
+ GPBUtil::checkString($var, True);
+ $this->display_name = $var;
+
+ return $this;
+ }
+
+}
+
diff --git a/owl-bot-staging/Recommender/v1/proto/src/Google/Cloud/Recommender/V1/InsightTypeGenerationConfig.php b/owl-bot-staging/Recommender/v1/proto/src/Google/Cloud/Recommender/V1/InsightTypeGenerationConfig.php
new file mode 100644
index 000000000000..93d2117a35ce
--- /dev/null
+++ b/owl-bot-staging/Recommender/v1/proto/src/Google/Cloud/Recommender/V1/InsightTypeGenerationConfig.php
@@ -0,0 +1,83 @@
+google.cloud.recommender.v1.InsightTypeGenerationConfig
+ */
+class InsightTypeGenerationConfig extends \Google\Protobuf\Internal\Message
+{
+ /**
+ * Parameters for this InsightTypeGenerationConfig. These configs can be used
+ * by or are applied to all subtypes.
+ *
+ * Generated from protobuf field .google.protobuf.Struct params = 1;
+ */
+ protected $params = null;
+
+ /**
+ * Constructor.
+ *
+ * @param array $data {
+ * Optional. Data for populating the Message object.
+ *
+ * @type \Google\Protobuf\Struct $params
+ * Parameters for this InsightTypeGenerationConfig. These configs can be used
+ * by or are applied to all subtypes.
+ * }
+ */
+ public function __construct($data = NULL) {
+ \GPBMetadata\Google\Cloud\Recommender\V1\InsightTypeConfig::initOnce();
+ parent::__construct($data);
+ }
+
+ /**
+ * Parameters for this InsightTypeGenerationConfig. These configs can be used
+ * by or are applied to all subtypes.
+ *
+ * Generated from protobuf field .google.protobuf.Struct params = 1;
+ * @return \Google\Protobuf\Struct|null
+ */
+ public function getParams()
+ {
+ return $this->params;
+ }
+
+ public function hasParams()
+ {
+ return isset($this->params);
+ }
+
+ public function clearParams()
+ {
+ unset($this->params);
+ }
+
+ /**
+ * Parameters for this InsightTypeGenerationConfig. These configs can be used
+ * by or are applied to all subtypes.
+ *
+ * Generated from protobuf field .google.protobuf.Struct params = 1;
+ * @param \Google\Protobuf\Struct $var
+ * @return $this
+ */
+ public function setParams($var)
+ {
+ GPBUtil::checkMessage($var, \Google\Protobuf\Struct::class);
+ $this->params = $var;
+
+ return $this;
+ }
+
+}
+
diff --git a/owl-bot-staging/Recommender/v1/proto/src/Google/Cloud/Recommender/V1/ListInsightsRequest.php b/owl-bot-staging/Recommender/v1/proto/src/Google/Cloud/Recommender/V1/ListInsightsRequest.php
new file mode 100644
index 000000000000..d61b254dc69a
--- /dev/null
+++ b/owl-bot-staging/Recommender/v1/proto/src/Google/Cloud/Recommender/V1/ListInsightsRequest.php
@@ -0,0 +1,319 @@
+google.cloud.recommender.v1.ListInsightsRequest
+ */
+class ListInsightsRequest extends \Google\Protobuf\Internal\Message
+{
+ /**
+ * Required. The container resource on which to execute the request.
+ * Acceptable formats:
+ * * `projects/[PROJECT_NUMBER]/locations/[LOCATION]/insightTypes/[INSIGHT_TYPE_ID]`
+ * * `projects/[PROJECT_ID]/locations/[LOCATION]/insightTypes/[INSIGHT_TYPE_ID]`
+ * * `billingAccounts/[BILLING_ACCOUNT_ID]/locations/[LOCATION]/insightTypes/[INSIGHT_TYPE_ID]`
+ * * `folders/[FOLDER_ID]/locations/[LOCATION]/insightTypes/[INSIGHT_TYPE_ID]`
+ * * `organizations/[ORGANIZATION_ID]/locations/[LOCATION]/insightTypes/[INSIGHT_TYPE_ID]`
+ * LOCATION here refers to GCP Locations:
+ * https://cloud.google.com/about/locations/
+ * INSIGHT_TYPE_ID refers to supported insight types:
+ * https://cloud.google.com/recommender/docs/insights/insight-types.
+ *
+ * Generated from protobuf field string parent = 1 [(.google.api.field_behavior) = REQUIRED, (.google.api.resource_reference) = {
+ */
+ protected $parent = '';
+ /**
+ * Optional. The maximum number of results to return from this request.
+ * Non-positive values are ignored. If not specified, the server will
+ * determine the number of results to return.
+ *
+ * Generated from protobuf field int32 page_size = 2 [(.google.api.field_behavior) = OPTIONAL];
+ */
+ protected $page_size = 0;
+ /**
+ * Optional. If present, retrieves the next batch of results from the
+ * preceding call to this method. `page_token` must be the value of
+ * `next_page_token` from the previous response. The values of other method
+ * parameters must be identical to those in the previous call.
+ *
+ * Generated from protobuf field string page_token = 3 [(.google.api.field_behavior) = OPTIONAL];
+ */
+ protected $page_token = '';
+ /**
+ * Optional. Filter expression to restrict the insights returned. Supported
+ * filter fields:
+ * * `stateInfo.state`
+ * * `insightSubtype`
+ * * `severity`
+ * * `targetResources`
+ * Examples:
+ * * `stateInfo.state = ACTIVE OR stateInfo.state = DISMISSED`
+ * * `insightSubtype = PERMISSIONS_USAGE`
+ * * `severity = CRITICAL OR severity = HIGH`
+ * * `targetResources :
+ * //compute.googleapis.com/projects/1234/zones/us-central1-a/instances/instance-1`
+ * * `stateInfo.state = ACTIVE AND (severity = CRITICAL OR severity = HIGH)`
+ * The max allowed filter length is 500 characters.
+ * (These expressions are based on the filter language described at
+ * https://google.aip.dev/160)
+ *
+ * Generated from protobuf field string filter = 4 [(.google.api.field_behavior) = OPTIONAL];
+ */
+ protected $filter = '';
+
+ /**
+ * @param string $parent Required. The container resource on which to execute the request.
+ * Acceptable formats:
+ *
+ * * `projects/[PROJECT_NUMBER]/locations/[LOCATION]/insightTypes/[INSIGHT_TYPE_ID]`
+ *
+ * * `projects/[PROJECT_ID]/locations/[LOCATION]/insightTypes/[INSIGHT_TYPE_ID]`
+ *
+ * * `billingAccounts/[BILLING_ACCOUNT_ID]/locations/[LOCATION]/insightTypes/[INSIGHT_TYPE_ID]`
+ *
+ * * `folders/[FOLDER_ID]/locations/[LOCATION]/insightTypes/[INSIGHT_TYPE_ID]`
+ *
+ * * `organizations/[ORGANIZATION_ID]/locations/[LOCATION]/insightTypes/[INSIGHT_TYPE_ID]`
+ *
+ * LOCATION here refers to GCP Locations:
+ * https://cloud.google.com/about/locations/
+ * INSIGHT_TYPE_ID refers to supported insight types:
+ * https://cloud.google.com/recommender/docs/insights/insight-types. Please see
+ * {@see RecommenderClient::insightTypeName()} for help formatting this field.
+ *
+ * @return \Google\Cloud\Recommender\V1\ListInsightsRequest
+ *
+ * @experimental
+ */
+ public static function build(string $parent): self
+ {
+ return (new self())
+ ->setParent($parent);
+ }
+
+ /**
+ * Constructor.
+ *
+ * @param array $data {
+ * Optional. Data for populating the Message object.
+ *
+ * @type string $parent
+ * Required. The container resource on which to execute the request.
+ * Acceptable formats:
+ * * `projects/[PROJECT_NUMBER]/locations/[LOCATION]/insightTypes/[INSIGHT_TYPE_ID]`
+ * * `projects/[PROJECT_ID]/locations/[LOCATION]/insightTypes/[INSIGHT_TYPE_ID]`
+ * * `billingAccounts/[BILLING_ACCOUNT_ID]/locations/[LOCATION]/insightTypes/[INSIGHT_TYPE_ID]`
+ * * `folders/[FOLDER_ID]/locations/[LOCATION]/insightTypes/[INSIGHT_TYPE_ID]`
+ * * `organizations/[ORGANIZATION_ID]/locations/[LOCATION]/insightTypes/[INSIGHT_TYPE_ID]`
+ * LOCATION here refers to GCP Locations:
+ * https://cloud.google.com/about/locations/
+ * INSIGHT_TYPE_ID refers to supported insight types:
+ * https://cloud.google.com/recommender/docs/insights/insight-types.
+ * @type int $page_size
+ * Optional. The maximum number of results to return from this request.
+ * Non-positive values are ignored. If not specified, the server will
+ * determine the number of results to return.
+ * @type string $page_token
+ * Optional. If present, retrieves the next batch of results from the
+ * preceding call to this method. `page_token` must be the value of
+ * `next_page_token` from the previous response. The values of other method
+ * parameters must be identical to those in the previous call.
+ * @type string $filter
+ * Optional. Filter expression to restrict the insights returned. Supported
+ * filter fields:
+ * * `stateInfo.state`
+ * * `insightSubtype`
+ * * `severity`
+ * * `targetResources`
+ * Examples:
+ * * `stateInfo.state = ACTIVE OR stateInfo.state = DISMISSED`
+ * * `insightSubtype = PERMISSIONS_USAGE`
+ * * `severity = CRITICAL OR severity = HIGH`
+ * * `targetResources :
+ * //compute.googleapis.com/projects/1234/zones/us-central1-a/instances/instance-1`
+ * * `stateInfo.state = ACTIVE AND (severity = CRITICAL OR severity = HIGH)`
+ * The max allowed filter length is 500 characters.
+ * (These expressions are based on the filter language described at
+ * https://google.aip.dev/160)
+ * }
+ */
+ public function __construct($data = NULL) {
+ \GPBMetadata\Google\Cloud\Recommender\V1\RecommenderService::initOnce();
+ parent::__construct($data);
+ }
+
+ /**
+ * Required. The container resource on which to execute the request.
+ * Acceptable formats:
+ * * `projects/[PROJECT_NUMBER]/locations/[LOCATION]/insightTypes/[INSIGHT_TYPE_ID]`
+ * * `projects/[PROJECT_ID]/locations/[LOCATION]/insightTypes/[INSIGHT_TYPE_ID]`
+ * * `billingAccounts/[BILLING_ACCOUNT_ID]/locations/[LOCATION]/insightTypes/[INSIGHT_TYPE_ID]`
+ * * `folders/[FOLDER_ID]/locations/[LOCATION]/insightTypes/[INSIGHT_TYPE_ID]`
+ * * `organizations/[ORGANIZATION_ID]/locations/[LOCATION]/insightTypes/[INSIGHT_TYPE_ID]`
+ * LOCATION here refers to GCP Locations:
+ * https://cloud.google.com/about/locations/
+ * INSIGHT_TYPE_ID refers to supported insight types:
+ * https://cloud.google.com/recommender/docs/insights/insight-types.
+ *
+ * Generated from protobuf field string parent = 1 [(.google.api.field_behavior) = REQUIRED, (.google.api.resource_reference) = {
+ * @return string
+ */
+ public function getParent()
+ {
+ return $this->parent;
+ }
+
+ /**
+ * Required. The container resource on which to execute the request.
+ * Acceptable formats:
+ * * `projects/[PROJECT_NUMBER]/locations/[LOCATION]/insightTypes/[INSIGHT_TYPE_ID]`
+ * * `projects/[PROJECT_ID]/locations/[LOCATION]/insightTypes/[INSIGHT_TYPE_ID]`
+ * * `billingAccounts/[BILLING_ACCOUNT_ID]/locations/[LOCATION]/insightTypes/[INSIGHT_TYPE_ID]`
+ * * `folders/[FOLDER_ID]/locations/[LOCATION]/insightTypes/[INSIGHT_TYPE_ID]`
+ * * `organizations/[ORGANIZATION_ID]/locations/[LOCATION]/insightTypes/[INSIGHT_TYPE_ID]`
+ * LOCATION here refers to GCP Locations:
+ * https://cloud.google.com/about/locations/
+ * INSIGHT_TYPE_ID refers to supported insight types:
+ * https://cloud.google.com/recommender/docs/insights/insight-types.
+ *
+ * Generated from protobuf field string parent = 1 [(.google.api.field_behavior) = REQUIRED, (.google.api.resource_reference) = {
+ * @param string $var
+ * @return $this
+ */
+ public function setParent($var)
+ {
+ GPBUtil::checkString($var, True);
+ $this->parent = $var;
+
+ return $this;
+ }
+
+ /**
+ * Optional. The maximum number of results to return from this request.
+ * Non-positive values are ignored. If not specified, the server will
+ * determine the number of results to return.
+ *
+ * Generated from protobuf field int32 page_size = 2 [(.google.api.field_behavior) = OPTIONAL];
+ * @return int
+ */
+ public function getPageSize()
+ {
+ return $this->page_size;
+ }
+
+ /**
+ * Optional. The maximum number of results to return from this request.
+ * Non-positive values are ignored. If not specified, the server will
+ * determine the number of results to return.
+ *
+ * Generated from protobuf field int32 page_size = 2 [(.google.api.field_behavior) = OPTIONAL];
+ * @param int $var
+ * @return $this
+ */
+ public function setPageSize($var)
+ {
+ GPBUtil::checkInt32($var);
+ $this->page_size = $var;
+
+ return $this;
+ }
+
+ /**
+ * Optional. If present, retrieves the next batch of results from the
+ * preceding call to this method. `page_token` must be the value of
+ * `next_page_token` from the previous response. The values of other method
+ * parameters must be identical to those in the previous call.
+ *
+ * Generated from protobuf field string page_token = 3 [(.google.api.field_behavior) = OPTIONAL];
+ * @return string
+ */
+ public function getPageToken()
+ {
+ return $this->page_token;
+ }
+
+ /**
+ * Optional. If present, retrieves the next batch of results from the
+ * preceding call to this method. `page_token` must be the value of
+ * `next_page_token` from the previous response. The values of other method
+ * parameters must be identical to those in the previous call.
+ *
+ * Generated from protobuf field string page_token = 3 [(.google.api.field_behavior) = OPTIONAL];
+ * @param string $var
+ * @return $this
+ */
+ public function setPageToken($var)
+ {
+ GPBUtil::checkString($var, True);
+ $this->page_token = $var;
+
+ return $this;
+ }
+
+ /**
+ * Optional. Filter expression to restrict the insights returned. Supported
+ * filter fields:
+ * * `stateInfo.state`
+ * * `insightSubtype`
+ * * `severity`
+ * * `targetResources`
+ * Examples:
+ * * `stateInfo.state = ACTIVE OR stateInfo.state = DISMISSED`
+ * * `insightSubtype = PERMISSIONS_USAGE`
+ * * `severity = CRITICAL OR severity = HIGH`
+ * * `targetResources :
+ * //compute.googleapis.com/projects/1234/zones/us-central1-a/instances/instance-1`
+ * * `stateInfo.state = ACTIVE AND (severity = CRITICAL OR severity = HIGH)`
+ * The max allowed filter length is 500 characters.
+ * (These expressions are based on the filter language described at
+ * https://google.aip.dev/160)
+ *
+ * Generated from protobuf field string filter = 4 [(.google.api.field_behavior) = OPTIONAL];
+ * @return string
+ */
+ public function getFilter()
+ {
+ return $this->filter;
+ }
+
+ /**
+ * Optional. Filter expression to restrict the insights returned. Supported
+ * filter fields:
+ * * `stateInfo.state`
+ * * `insightSubtype`
+ * * `severity`
+ * * `targetResources`
+ * Examples:
+ * * `stateInfo.state = ACTIVE OR stateInfo.state = DISMISSED`
+ * * `insightSubtype = PERMISSIONS_USAGE`
+ * * `severity = CRITICAL OR severity = HIGH`
+ * * `targetResources :
+ * //compute.googleapis.com/projects/1234/zones/us-central1-a/instances/instance-1`
+ * * `stateInfo.state = ACTIVE AND (severity = CRITICAL OR severity = HIGH)`
+ * The max allowed filter length is 500 characters.
+ * (These expressions are based on the filter language described at
+ * https://google.aip.dev/160)
+ *
+ * Generated from protobuf field string filter = 4 [(.google.api.field_behavior) = OPTIONAL];
+ * @param string $var
+ * @return $this
+ */
+ public function setFilter($var)
+ {
+ GPBUtil::checkString($var, True);
+ $this->filter = $var;
+
+ return $this;
+ }
+
+}
+
diff --git a/owl-bot-staging/Recommender/v1/proto/src/Google/Cloud/Recommender/V1/ListInsightsResponse.php b/owl-bot-staging/Recommender/v1/proto/src/Google/Cloud/Recommender/V1/ListInsightsResponse.php
new file mode 100644
index 000000000000..559624b870fb
--- /dev/null
+++ b/owl-bot-staging/Recommender/v1/proto/src/Google/Cloud/Recommender/V1/ListInsightsResponse.php
@@ -0,0 +1,105 @@
+google.cloud.recommender.v1.ListInsightsResponse
+ */
+class ListInsightsResponse extends \Google\Protobuf\Internal\Message
+{
+ /**
+ * The set of insights for the `parent` resource.
+ *
+ * Generated from protobuf field repeated .google.cloud.recommender.v1.Insight insights = 1;
+ */
+ private $insights;
+ /**
+ * A token that can be used to request the next page of results. This field is
+ * empty if there are no additional results.
+ *
+ * Generated from protobuf field string next_page_token = 2;
+ */
+ protected $next_page_token = '';
+
+ /**
+ * Constructor.
+ *
+ * @param array $data {
+ * Optional. Data for populating the Message object.
+ *
+ * @type array<\Google\Cloud\Recommender\V1\Insight>|\Google\Protobuf\Internal\RepeatedField $insights
+ * The set of insights for the `parent` resource.
+ * @type string $next_page_token
+ * A token that can be used to request the next page of results. This field is
+ * empty if there are no additional results.
+ * }
+ */
+ public function __construct($data = NULL) {
+ \GPBMetadata\Google\Cloud\Recommender\V1\RecommenderService::initOnce();
+ parent::__construct($data);
+ }
+
+ /**
+ * The set of insights for the `parent` resource.
+ *
+ * Generated from protobuf field repeated .google.cloud.recommender.v1.Insight insights = 1;
+ * @return \Google\Protobuf\Internal\RepeatedField
+ */
+ public function getInsights()
+ {
+ return $this->insights;
+ }
+
+ /**
+ * The set of insights for the `parent` resource.
+ *
+ * Generated from protobuf field repeated .google.cloud.recommender.v1.Insight insights = 1;
+ * @param array<\Google\Cloud\Recommender\V1\Insight>|\Google\Protobuf\Internal\RepeatedField $var
+ * @return $this
+ */
+ public function setInsights($var)
+ {
+ $arr = GPBUtil::checkRepeatedField($var, \Google\Protobuf\Internal\GPBType::MESSAGE, \Google\Cloud\Recommender\V1\Insight::class);
+ $this->insights = $arr;
+
+ return $this;
+ }
+
+ /**
+ * A token that can be used to request the next page of results. This field is
+ * empty if there are no additional results.
+ *
+ * Generated from protobuf field string next_page_token = 2;
+ * @return string
+ */
+ public function getNextPageToken()
+ {
+ return $this->next_page_token;
+ }
+
+ /**
+ * A token that can be used to request the next page of results. This field is
+ * empty if there are no additional results.
+ *
+ * Generated from protobuf field string next_page_token = 2;
+ * @param string $var
+ * @return $this
+ */
+ public function setNextPageToken($var)
+ {
+ GPBUtil::checkString($var, True);
+ $this->next_page_token = $var;
+
+ return $this;
+ }
+
+}
+
diff --git a/owl-bot-staging/Recommender/v1/proto/src/Google/Cloud/Recommender/V1/ListRecommendationsRequest.php b/owl-bot-staging/Recommender/v1/proto/src/Google/Cloud/Recommender/V1/ListRecommendationsRequest.php
new file mode 100644
index 000000000000..4d1306e50f46
--- /dev/null
+++ b/owl-bot-staging/Recommender/v1/proto/src/Google/Cloud/Recommender/V1/ListRecommendationsRequest.php
@@ -0,0 +1,378 @@
+google.cloud.recommender.v1.ListRecommendationsRequest
+ */
+class ListRecommendationsRequest extends \Google\Protobuf\Internal\Message
+{
+ /**
+ * Required. The container resource on which to execute the request.
+ * Acceptable formats:
+ * * `projects/[PROJECT_NUMBER]/locations/[LOCATION]/recommenders/[RECOMMENDER_ID]`
+ * * `projects/[PROJECT_ID]/locations/[LOCATION]/recommenders/[RECOMMENDER_ID]`
+ * * `billingAccounts/[BILLING_ACCOUNT_ID]/locations/[LOCATION]/recommenders/[RECOMMENDER_ID]`
+ * * `folders/[FOLDER_ID]/locations/[LOCATION]/recommenders/[RECOMMENDER_ID]`
+ * * `organizations/[ORGANIZATION_ID]/locations/[LOCATION]/recommenders/[RECOMMENDER_ID]`
+ * LOCATION here refers to GCP Locations:
+ * https://cloud.google.com/about/locations/
+ * RECOMMENDER_ID refers to supported recommenders:
+ * https://cloud.google.com/recommender/docs/recommenders.
+ *
+ * Generated from protobuf field string parent = 1 [(.google.api.field_behavior) = REQUIRED, (.google.api.resource_reference) = {
+ */
+ protected $parent = '';
+ /**
+ * Optional. The maximum number of results to return from this request.
+ * Non-positive values are ignored. If not specified, the server will
+ * determine the number of results to return.
+ *
+ * Generated from protobuf field int32 page_size = 2 [(.google.api.field_behavior) = OPTIONAL];
+ */
+ protected $page_size = 0;
+ /**
+ * Optional. If present, retrieves the next batch of results from the
+ * preceding call to this method. `page_token` must be the value of
+ * `next_page_token` from the previous response. The values of other method
+ * parameters must be identical to those in the previous call.
+ *
+ * Generated from protobuf field string page_token = 3 [(.google.api.field_behavior) = OPTIONAL];
+ */
+ protected $page_token = '';
+ /**
+ * Filter expression to restrict the recommendations returned. Supported
+ * filter fields:
+ * * `state_info.state`
+ * * `recommenderSubtype`
+ * * `priority`
+ * * `targetResources`
+ * Examples:
+ * * `stateInfo.state = ACTIVE OR stateInfo.state = DISMISSED`
+ * * `recommenderSubtype = REMOVE_ROLE OR recommenderSubtype = REPLACE_ROLE`
+ * * `priority = P1 OR priority = P2`
+ * * `targetResources :
+ * //compute.googleapis.com/projects/1234/zones/us-central1-a/instances/instance-1`
+ * * `stateInfo.state = ACTIVE AND (priority = P1 OR priority = P2)`
+ * The max allowed filter length is 500 characters.
+ * (These expressions are based on the filter language described at
+ * https://google.aip.dev/160)
+ *
+ * Generated from protobuf field string filter = 5;
+ */
+ protected $filter = '';
+
+ /**
+ * @param string $parent Required. The container resource on which to execute the request.
+ * Acceptable formats:
+ *
+ * * `projects/[PROJECT_NUMBER]/locations/[LOCATION]/recommenders/[RECOMMENDER_ID]`
+ *
+ * * `projects/[PROJECT_ID]/locations/[LOCATION]/recommenders/[RECOMMENDER_ID]`
+ *
+ * * `billingAccounts/[BILLING_ACCOUNT_ID]/locations/[LOCATION]/recommenders/[RECOMMENDER_ID]`
+ *
+ * * `folders/[FOLDER_ID]/locations/[LOCATION]/recommenders/[RECOMMENDER_ID]`
+ *
+ * * `organizations/[ORGANIZATION_ID]/locations/[LOCATION]/recommenders/[RECOMMENDER_ID]`
+ *
+ * LOCATION here refers to GCP Locations:
+ * https://cloud.google.com/about/locations/
+ * RECOMMENDER_ID refers to supported recommenders:
+ * https://cloud.google.com/recommender/docs/recommenders. Please see
+ * {@see RecommenderClient::recommenderName()} for help formatting this field.
+ *
+ * @return \Google\Cloud\Recommender\V1\ListRecommendationsRequest
+ *
+ * @experimental
+ */
+ public static function build(string $parent): self
+ {
+ return (new self())
+ ->setParent($parent);
+ }
+
+ /**
+ * @param string $parent Required. The container resource on which to execute the request.
+ * Acceptable formats:
+ *
+ * * `projects/[PROJECT_NUMBER]/locations/[LOCATION]/recommenders/[RECOMMENDER_ID]`
+ *
+ * * `projects/[PROJECT_ID]/locations/[LOCATION]/recommenders/[RECOMMENDER_ID]`
+ *
+ * * `billingAccounts/[BILLING_ACCOUNT_ID]/locations/[LOCATION]/recommenders/[RECOMMENDER_ID]`
+ *
+ * * `folders/[FOLDER_ID]/locations/[LOCATION]/recommenders/[RECOMMENDER_ID]`
+ *
+ * * `organizations/[ORGANIZATION_ID]/locations/[LOCATION]/recommenders/[RECOMMENDER_ID]`
+ *
+ * LOCATION here refers to GCP Locations:
+ * https://cloud.google.com/about/locations/
+ * RECOMMENDER_ID refers to supported recommenders:
+ * https://cloud.google.com/recommender/docs/recommenders. Please see
+ * {@see RecommenderClient::recommenderName()} for help formatting this field.
+ * @param string $filter Filter expression to restrict the recommendations returned. Supported
+ * filter fields:
+ *
+ * * `state_info.state`
+ *
+ * * `recommenderSubtype`
+ *
+ * * `priority`
+ *
+ * * `targetResources`
+ *
+ * Examples:
+ *
+ * * `stateInfo.state = ACTIVE OR stateInfo.state = DISMISSED`
+ *
+ * * `recommenderSubtype = REMOVE_ROLE OR recommenderSubtype = REPLACE_ROLE`
+ *
+ * * `priority = P1 OR priority = P2`
+ *
+ * * `targetResources :
+ * //compute.googleapis.com/projects/1234/zones/us-central1-a/instances/instance-1`
+ *
+ * * `stateInfo.state = ACTIVE AND (priority = P1 OR priority = P2)`
+ *
+ * The max allowed filter length is 500 characters.
+ *
+ * (These expressions are based on the filter language described at
+ * https://google.aip.dev/160)
+ *
+ * @return \Google\Cloud\Recommender\V1\ListRecommendationsRequest
+ *
+ * @experimental
+ */
+ public static function buildFromParentFilter(string $parent, string $filter): self
+ {
+ return (new self())
+ ->setParent($parent)
+ ->setFilter($filter);
+ }
+
+ /**
+ * Constructor.
+ *
+ * @param array $data {
+ * Optional. Data for populating the Message object.
+ *
+ * @type string $parent
+ * Required. The container resource on which to execute the request.
+ * Acceptable formats:
+ * * `projects/[PROJECT_NUMBER]/locations/[LOCATION]/recommenders/[RECOMMENDER_ID]`
+ * * `projects/[PROJECT_ID]/locations/[LOCATION]/recommenders/[RECOMMENDER_ID]`
+ * * `billingAccounts/[BILLING_ACCOUNT_ID]/locations/[LOCATION]/recommenders/[RECOMMENDER_ID]`
+ * * `folders/[FOLDER_ID]/locations/[LOCATION]/recommenders/[RECOMMENDER_ID]`
+ * * `organizations/[ORGANIZATION_ID]/locations/[LOCATION]/recommenders/[RECOMMENDER_ID]`
+ * LOCATION here refers to GCP Locations:
+ * https://cloud.google.com/about/locations/
+ * RECOMMENDER_ID refers to supported recommenders:
+ * https://cloud.google.com/recommender/docs/recommenders.
+ * @type int $page_size
+ * Optional. The maximum number of results to return from this request.
+ * Non-positive values are ignored. If not specified, the server will
+ * determine the number of results to return.
+ * @type string $page_token
+ * Optional. If present, retrieves the next batch of results from the
+ * preceding call to this method. `page_token` must be the value of
+ * `next_page_token` from the previous response. The values of other method
+ * parameters must be identical to those in the previous call.
+ * @type string $filter
+ * Filter expression to restrict the recommendations returned. Supported
+ * filter fields:
+ * * `state_info.state`
+ * * `recommenderSubtype`
+ * * `priority`
+ * * `targetResources`
+ * Examples:
+ * * `stateInfo.state = ACTIVE OR stateInfo.state = DISMISSED`
+ * * `recommenderSubtype = REMOVE_ROLE OR recommenderSubtype = REPLACE_ROLE`
+ * * `priority = P1 OR priority = P2`
+ * * `targetResources :
+ * //compute.googleapis.com/projects/1234/zones/us-central1-a/instances/instance-1`
+ * * `stateInfo.state = ACTIVE AND (priority = P1 OR priority = P2)`
+ * The max allowed filter length is 500 characters.
+ * (These expressions are based on the filter language described at
+ * https://google.aip.dev/160)
+ * }
+ */
+ public function __construct($data = NULL) {
+ \GPBMetadata\Google\Cloud\Recommender\V1\RecommenderService::initOnce();
+ parent::__construct($data);
+ }
+
+ /**
+ * Required. The container resource on which to execute the request.
+ * Acceptable formats:
+ * * `projects/[PROJECT_NUMBER]/locations/[LOCATION]/recommenders/[RECOMMENDER_ID]`
+ * * `projects/[PROJECT_ID]/locations/[LOCATION]/recommenders/[RECOMMENDER_ID]`
+ * * `billingAccounts/[BILLING_ACCOUNT_ID]/locations/[LOCATION]/recommenders/[RECOMMENDER_ID]`
+ * * `folders/[FOLDER_ID]/locations/[LOCATION]/recommenders/[RECOMMENDER_ID]`
+ * * `organizations/[ORGANIZATION_ID]/locations/[LOCATION]/recommenders/[RECOMMENDER_ID]`
+ * LOCATION here refers to GCP Locations:
+ * https://cloud.google.com/about/locations/
+ * RECOMMENDER_ID refers to supported recommenders:
+ * https://cloud.google.com/recommender/docs/recommenders.
+ *
+ * Generated from protobuf field string parent = 1 [(.google.api.field_behavior) = REQUIRED, (.google.api.resource_reference) = {
+ * @return string
+ */
+ public function getParent()
+ {
+ return $this->parent;
+ }
+
+ /**
+ * Required. The container resource on which to execute the request.
+ * Acceptable formats:
+ * * `projects/[PROJECT_NUMBER]/locations/[LOCATION]/recommenders/[RECOMMENDER_ID]`
+ * * `projects/[PROJECT_ID]/locations/[LOCATION]/recommenders/[RECOMMENDER_ID]`
+ * * `billingAccounts/[BILLING_ACCOUNT_ID]/locations/[LOCATION]/recommenders/[RECOMMENDER_ID]`
+ * * `folders/[FOLDER_ID]/locations/[LOCATION]/recommenders/[RECOMMENDER_ID]`
+ * * `organizations/[ORGANIZATION_ID]/locations/[LOCATION]/recommenders/[RECOMMENDER_ID]`
+ * LOCATION here refers to GCP Locations:
+ * https://cloud.google.com/about/locations/
+ * RECOMMENDER_ID refers to supported recommenders:
+ * https://cloud.google.com/recommender/docs/recommenders.
+ *
+ * Generated from protobuf field string parent = 1 [(.google.api.field_behavior) = REQUIRED, (.google.api.resource_reference) = {
+ * @param string $var
+ * @return $this
+ */
+ public function setParent($var)
+ {
+ GPBUtil::checkString($var, True);
+ $this->parent = $var;
+
+ return $this;
+ }
+
+ /**
+ * Optional. The maximum number of results to return from this request.
+ * Non-positive values are ignored. If not specified, the server will
+ * determine the number of results to return.
+ *
+ * Generated from protobuf field int32 page_size = 2 [(.google.api.field_behavior) = OPTIONAL];
+ * @return int
+ */
+ public function getPageSize()
+ {
+ return $this->page_size;
+ }
+
+ /**
+ * Optional. The maximum number of results to return from this request.
+ * Non-positive values are ignored. If not specified, the server will
+ * determine the number of results to return.
+ *
+ * Generated from protobuf field int32 page_size = 2 [(.google.api.field_behavior) = OPTIONAL];
+ * @param int $var
+ * @return $this
+ */
+ public function setPageSize($var)
+ {
+ GPBUtil::checkInt32($var);
+ $this->page_size = $var;
+
+ return $this;
+ }
+
+ /**
+ * Optional. If present, retrieves the next batch of results from the
+ * preceding call to this method. `page_token` must be the value of
+ * `next_page_token` from the previous response. The values of other method
+ * parameters must be identical to those in the previous call.
+ *
+ * Generated from protobuf field string page_token = 3 [(.google.api.field_behavior) = OPTIONAL];
+ * @return string
+ */
+ public function getPageToken()
+ {
+ return $this->page_token;
+ }
+
+ /**
+ * Optional. If present, retrieves the next batch of results from the
+ * preceding call to this method. `page_token` must be the value of
+ * `next_page_token` from the previous response. The values of other method
+ * parameters must be identical to those in the previous call.
+ *
+ * Generated from protobuf field string page_token = 3 [(.google.api.field_behavior) = OPTIONAL];
+ * @param string $var
+ * @return $this
+ */
+ public function setPageToken($var)
+ {
+ GPBUtil::checkString($var, True);
+ $this->page_token = $var;
+
+ return $this;
+ }
+
+ /**
+ * Filter expression to restrict the recommendations returned. Supported
+ * filter fields:
+ * * `state_info.state`
+ * * `recommenderSubtype`
+ * * `priority`
+ * * `targetResources`
+ * Examples:
+ * * `stateInfo.state = ACTIVE OR stateInfo.state = DISMISSED`
+ * * `recommenderSubtype = REMOVE_ROLE OR recommenderSubtype = REPLACE_ROLE`
+ * * `priority = P1 OR priority = P2`
+ * * `targetResources :
+ * //compute.googleapis.com/projects/1234/zones/us-central1-a/instances/instance-1`
+ * * `stateInfo.state = ACTIVE AND (priority = P1 OR priority = P2)`
+ * The max allowed filter length is 500 characters.
+ * (These expressions are based on the filter language described at
+ * https://google.aip.dev/160)
+ *
+ * Generated from protobuf field string filter = 5;
+ * @return string
+ */
+ public function getFilter()
+ {
+ return $this->filter;
+ }
+
+ /**
+ * Filter expression to restrict the recommendations returned. Supported
+ * filter fields:
+ * * `state_info.state`
+ * * `recommenderSubtype`
+ * * `priority`
+ * * `targetResources`
+ * Examples:
+ * * `stateInfo.state = ACTIVE OR stateInfo.state = DISMISSED`
+ * * `recommenderSubtype = REMOVE_ROLE OR recommenderSubtype = REPLACE_ROLE`
+ * * `priority = P1 OR priority = P2`
+ * * `targetResources :
+ * //compute.googleapis.com/projects/1234/zones/us-central1-a/instances/instance-1`
+ * * `stateInfo.state = ACTIVE AND (priority = P1 OR priority = P2)`
+ * The max allowed filter length is 500 characters.
+ * (These expressions are based on the filter language described at
+ * https://google.aip.dev/160)
+ *
+ * Generated from protobuf field string filter = 5;
+ * @param string $var
+ * @return $this
+ */
+ public function setFilter($var)
+ {
+ GPBUtil::checkString($var, True);
+ $this->filter = $var;
+
+ return $this;
+ }
+
+}
+
diff --git a/owl-bot-staging/Recommender/v1/proto/src/Google/Cloud/Recommender/V1/ListRecommendationsResponse.php b/owl-bot-staging/Recommender/v1/proto/src/Google/Cloud/Recommender/V1/ListRecommendationsResponse.php
new file mode 100644
index 000000000000..e1f49c49e2b3
--- /dev/null
+++ b/owl-bot-staging/Recommender/v1/proto/src/Google/Cloud/Recommender/V1/ListRecommendationsResponse.php
@@ -0,0 +1,105 @@
+google.cloud.recommender.v1.ListRecommendationsResponse
+ */
+class ListRecommendationsResponse extends \Google\Protobuf\Internal\Message
+{
+ /**
+ * The set of recommendations for the `parent` resource.
+ *
+ * Generated from protobuf field repeated .google.cloud.recommender.v1.Recommendation recommendations = 1;
+ */
+ private $recommendations;
+ /**
+ * A token that can be used to request the next page of results. This field is
+ * empty if there are no additional results.
+ *
+ * Generated from protobuf field string next_page_token = 2;
+ */
+ protected $next_page_token = '';
+
+ /**
+ * Constructor.
+ *
+ * @param array $data {
+ * Optional. Data for populating the Message object.
+ *
+ * @type array<\Google\Cloud\Recommender\V1\Recommendation>|\Google\Protobuf\Internal\RepeatedField $recommendations
+ * The set of recommendations for the `parent` resource.
+ * @type string $next_page_token
+ * A token that can be used to request the next page of results. This field is
+ * empty if there are no additional results.
+ * }
+ */
+ public function __construct($data = NULL) {
+ \GPBMetadata\Google\Cloud\Recommender\V1\RecommenderService::initOnce();
+ parent::__construct($data);
+ }
+
+ /**
+ * The set of recommendations for the `parent` resource.
+ *
+ * Generated from protobuf field repeated .google.cloud.recommender.v1.Recommendation recommendations = 1;
+ * @return \Google\Protobuf\Internal\RepeatedField
+ */
+ public function getRecommendations()
+ {
+ return $this->recommendations;
+ }
+
+ /**
+ * The set of recommendations for the `parent` resource.
+ *
+ * Generated from protobuf field repeated .google.cloud.recommender.v1.Recommendation recommendations = 1;
+ * @param array<\Google\Cloud\Recommender\V1\Recommendation>|\Google\Protobuf\Internal\RepeatedField $var
+ * @return $this
+ */
+ public function setRecommendations($var)
+ {
+ $arr = GPBUtil::checkRepeatedField($var, \Google\Protobuf\Internal\GPBType::MESSAGE, \Google\Cloud\Recommender\V1\Recommendation::class);
+ $this->recommendations = $arr;
+
+ return $this;
+ }
+
+ /**
+ * A token that can be used to request the next page of results. This field is
+ * empty if there are no additional results.
+ *
+ * Generated from protobuf field string next_page_token = 2;
+ * @return string
+ */
+ public function getNextPageToken()
+ {
+ return $this->next_page_token;
+ }
+
+ /**
+ * A token that can be used to request the next page of results. This field is
+ * empty if there are no additional results.
+ *
+ * Generated from protobuf field string next_page_token = 2;
+ * @param string $var
+ * @return $this
+ */
+ public function setNextPageToken($var)
+ {
+ GPBUtil::checkString($var, True);
+ $this->next_page_token = $var;
+
+ return $this;
+ }
+
+}
+
diff --git a/owl-bot-staging/Recommender/v1/proto/src/Google/Cloud/Recommender/V1/MarkInsightAcceptedRequest.php b/owl-bot-staging/Recommender/v1/proto/src/Google/Cloud/Recommender/V1/MarkInsightAcceptedRequest.php
new file mode 100644
index 000000000000..44812d4b120b
--- /dev/null
+++ b/owl-bot-staging/Recommender/v1/proto/src/Google/Cloud/Recommender/V1/MarkInsightAcceptedRequest.php
@@ -0,0 +1,158 @@
+google.cloud.recommender.v1.MarkInsightAcceptedRequest
+ */
+class MarkInsightAcceptedRequest extends \Google\Protobuf\Internal\Message
+{
+ /**
+ * Required. Name of the insight.
+ *
+ * Generated from protobuf field string name = 1 [(.google.api.field_behavior) = REQUIRED, (.google.api.resource_reference) = {
+ */
+ protected $name = '';
+ /**
+ * Optional. State properties user wish to include with this state. Full
+ * replace of the current state_metadata.
+ *
+ * Generated from protobuf field map state_metadata = 2 [(.google.api.field_behavior) = OPTIONAL];
+ */
+ private $state_metadata;
+ /**
+ * Required. Fingerprint of the Insight. Provides optimistic locking.
+ *
+ * Generated from protobuf field string etag = 3 [(.google.api.field_behavior) = REQUIRED];
+ */
+ protected $etag = '';
+
+ /**
+ * @param string $name Required. Name of the insight. Please see
+ * {@see RecommenderClient::insightName()} for help formatting this field.
+ * @param array $stateMetadata Optional. State properties user wish to include with this state. Full
+ * replace of the current state_metadata.
+ * @param string $etag Required. Fingerprint of the Insight. Provides optimistic locking.
+ *
+ * @return \Google\Cloud\Recommender\V1\MarkInsightAcceptedRequest
+ *
+ * @experimental
+ */
+ public static function build(string $name, array $stateMetadata, string $etag): self
+ {
+ return (new self())
+ ->setName($name)
+ ->setStateMetadata($stateMetadata)
+ ->setEtag($etag);
+ }
+
+ /**
+ * Constructor.
+ *
+ * @param array $data {
+ * Optional. Data for populating the Message object.
+ *
+ * @type string $name
+ * Required. Name of the insight.
+ * @type array|\Google\Protobuf\Internal\MapField $state_metadata
+ * Optional. State properties user wish to include with this state. Full
+ * replace of the current state_metadata.
+ * @type string $etag
+ * Required. Fingerprint of the Insight. Provides optimistic locking.
+ * }
+ */
+ public function __construct($data = NULL) {
+ \GPBMetadata\Google\Cloud\Recommender\V1\RecommenderService::initOnce();
+ parent::__construct($data);
+ }
+
+ /**
+ * Required. Name of the insight.
+ *
+ * Generated from protobuf field string name = 1 [(.google.api.field_behavior) = REQUIRED, (.google.api.resource_reference) = {
+ * @return string
+ */
+ public function getName()
+ {
+ return $this->name;
+ }
+
+ /**
+ * Required. Name of the insight.
+ *
+ * Generated from protobuf field string name = 1 [(.google.api.field_behavior) = REQUIRED, (.google.api.resource_reference) = {
+ * @param string $var
+ * @return $this
+ */
+ public function setName($var)
+ {
+ GPBUtil::checkString($var, True);
+ $this->name = $var;
+
+ return $this;
+ }
+
+ /**
+ * Optional. State properties user wish to include with this state. Full
+ * replace of the current state_metadata.
+ *
+ * Generated from protobuf field map state_metadata = 2 [(.google.api.field_behavior) = OPTIONAL];
+ * @return \Google\Protobuf\Internal\MapField
+ */
+ public function getStateMetadata()
+ {
+ return $this->state_metadata;
+ }
+
+ /**
+ * Optional. State properties user wish to include with this state. Full
+ * replace of the current state_metadata.
+ *
+ * Generated from protobuf field map state_metadata = 2 [(.google.api.field_behavior) = OPTIONAL];
+ * @param array|\Google\Protobuf\Internal\MapField $var
+ * @return $this
+ */
+ public function setStateMetadata($var)
+ {
+ $arr = GPBUtil::checkMapField($var, \Google\Protobuf\Internal\GPBType::STRING, \Google\Protobuf\Internal\GPBType::STRING);
+ $this->state_metadata = $arr;
+
+ return $this;
+ }
+
+ /**
+ * Required. Fingerprint of the Insight. Provides optimistic locking.
+ *
+ * Generated from protobuf field string etag = 3 [(.google.api.field_behavior) = REQUIRED];
+ * @return string
+ */
+ public function getEtag()
+ {
+ return $this->etag;
+ }
+
+ /**
+ * Required. Fingerprint of the Insight. Provides optimistic locking.
+ *
+ * Generated from protobuf field string etag = 3 [(.google.api.field_behavior) = REQUIRED];
+ * @param string $var
+ * @return $this
+ */
+ public function setEtag($var)
+ {
+ GPBUtil::checkString($var, True);
+ $this->etag = $var;
+
+ return $this;
+ }
+
+}
+
diff --git a/owl-bot-staging/Recommender/v1/proto/src/Google/Cloud/Recommender/V1/MarkRecommendationClaimedRequest.php b/owl-bot-staging/Recommender/v1/proto/src/Google/Cloud/Recommender/V1/MarkRecommendationClaimedRequest.php
new file mode 100644
index 000000000000..a95547ef0f17
--- /dev/null
+++ b/owl-bot-staging/Recommender/v1/proto/src/Google/Cloud/Recommender/V1/MarkRecommendationClaimedRequest.php
@@ -0,0 +1,168 @@
+google.cloud.recommender.v1.MarkRecommendationClaimedRequest
+ */
+class MarkRecommendationClaimedRequest extends \Google\Protobuf\Internal\Message
+{
+ /**
+ * Required. Name of the recommendation.
+ *
+ * Generated from protobuf field string name = 1 [(.google.api.field_behavior) = REQUIRED, (.google.api.resource_reference) = {
+ */
+ protected $name = '';
+ /**
+ * State properties to include with this state. Overwrites any existing
+ * `state_metadata`.
+ * Keys must match the regex `/^[a-z0-9][a-z0-9_.-]{0,62}$/`.
+ * Values must match the regex `/^[a-zA-Z0-9_./-]{0,255}$/`.
+ *
+ * Generated from protobuf field map state_metadata = 2;
+ */
+ private $state_metadata;
+ /**
+ * Required. Fingerprint of the Recommendation. Provides optimistic locking.
+ *
+ * Generated from protobuf field string etag = 3 [(.google.api.field_behavior) = REQUIRED];
+ */
+ protected $etag = '';
+
+ /**
+ * @param string $name Required. Name of the recommendation. Please see
+ * {@see RecommenderClient::recommendationName()} for help formatting this field.
+ * @param array $stateMetadata State properties to include with this state. Overwrites any existing
+ * `state_metadata`.
+ * Keys must match the regex `/^[a-z0-9][a-z0-9_.-]{0,62}$/`.
+ * Values must match the regex `/^[a-zA-Z0-9_./-]{0,255}$/`.
+ * @param string $etag Required. Fingerprint of the Recommendation. Provides optimistic locking.
+ *
+ * @return \Google\Cloud\Recommender\V1\MarkRecommendationClaimedRequest
+ *
+ * @experimental
+ */
+ public static function build(string $name, array $stateMetadata, string $etag): self
+ {
+ return (new self())
+ ->setName($name)
+ ->setStateMetadata($stateMetadata)
+ ->setEtag($etag);
+ }
+
+ /**
+ * Constructor.
+ *
+ * @param array $data {
+ * Optional. Data for populating the Message object.
+ *
+ * @type string $name
+ * Required. Name of the recommendation.
+ * @type array|\Google\Protobuf\Internal\MapField $state_metadata
+ * State properties to include with this state. Overwrites any existing
+ * `state_metadata`.
+ * Keys must match the regex `/^[a-z0-9][a-z0-9_.-]{0,62}$/`.
+ * Values must match the regex `/^[a-zA-Z0-9_./-]{0,255}$/`.
+ * @type string $etag
+ * Required. Fingerprint of the Recommendation. Provides optimistic locking.
+ * }
+ */
+ public function __construct($data = NULL) {
+ \GPBMetadata\Google\Cloud\Recommender\V1\RecommenderService::initOnce();
+ parent::__construct($data);
+ }
+
+ /**
+ * Required. Name of the recommendation.
+ *
+ * Generated from protobuf field string name = 1 [(.google.api.field_behavior) = REQUIRED, (.google.api.resource_reference) = {
+ * @return string
+ */
+ public function getName()
+ {
+ return $this->name;
+ }
+
+ /**
+ * Required. Name of the recommendation.
+ *
+ * Generated from protobuf field string name = 1 [(.google.api.field_behavior) = REQUIRED, (.google.api.resource_reference) = {
+ * @param string $var
+ * @return $this
+ */
+ public function setName($var)
+ {
+ GPBUtil::checkString($var, True);
+ $this->name = $var;
+
+ return $this;
+ }
+
+ /**
+ * State properties to include with this state. Overwrites any existing
+ * `state_metadata`.
+ * Keys must match the regex `/^[a-z0-9][a-z0-9_.-]{0,62}$/`.
+ * Values must match the regex `/^[a-zA-Z0-9_./-]{0,255}$/`.
+ *
+ * Generated from protobuf field map state_metadata = 2;
+ * @return \Google\Protobuf\Internal\MapField
+ */
+ public function getStateMetadata()
+ {
+ return $this->state_metadata;
+ }
+
+ /**
+ * State properties to include with this state. Overwrites any existing
+ * `state_metadata`.
+ * Keys must match the regex `/^[a-z0-9][a-z0-9_.-]{0,62}$/`.
+ * Values must match the regex `/^[a-zA-Z0-9_./-]{0,255}$/`.
+ *
+ * Generated from protobuf field map state_metadata = 2;
+ * @param array|\Google\Protobuf\Internal\MapField $var
+ * @return $this
+ */
+ public function setStateMetadata($var)
+ {
+ $arr = GPBUtil::checkMapField($var, \Google\Protobuf\Internal\GPBType::STRING, \Google\Protobuf\Internal\GPBType::STRING);
+ $this->state_metadata = $arr;
+
+ return $this;
+ }
+
+ /**
+ * Required. Fingerprint of the Recommendation. Provides optimistic locking.
+ *
+ * Generated from protobuf field string etag = 3 [(.google.api.field_behavior) = REQUIRED];
+ * @return string
+ */
+ public function getEtag()
+ {
+ return $this->etag;
+ }
+
+ /**
+ * Required. Fingerprint of the Recommendation. Provides optimistic locking.
+ *
+ * Generated from protobuf field string etag = 3 [(.google.api.field_behavior) = REQUIRED];
+ * @param string $var
+ * @return $this
+ */
+ public function setEtag($var)
+ {
+ GPBUtil::checkString($var, True);
+ $this->etag = $var;
+
+ return $this;
+ }
+
+}
+
diff --git a/owl-bot-staging/Recommender/v1/proto/src/Google/Cloud/Recommender/V1/MarkRecommendationDismissedRequest.php b/owl-bot-staging/Recommender/v1/proto/src/Google/Cloud/Recommender/V1/MarkRecommendationDismissedRequest.php
new file mode 100644
index 000000000000..41cc6032babd
--- /dev/null
+++ b/owl-bot-staging/Recommender/v1/proto/src/Google/Cloud/Recommender/V1/MarkRecommendationDismissedRequest.php
@@ -0,0 +1,101 @@
+google.cloud.recommender.v1.MarkRecommendationDismissedRequest
+ */
+class MarkRecommendationDismissedRequest extends \Google\Protobuf\Internal\Message
+{
+ /**
+ * Required. Name of the recommendation.
+ *
+ * Generated from protobuf field string name = 1 [(.google.api.field_behavior) = REQUIRED, (.google.api.resource_reference) = {
+ */
+ protected $name = '';
+ /**
+ * Fingerprint of the Recommendation. Provides optimistic locking.
+ *
+ * Generated from protobuf field string etag = 2;
+ */
+ protected $etag = '';
+
+ /**
+ * Constructor.
+ *
+ * @param array $data {
+ * Optional. Data for populating the Message object.
+ *
+ * @type string $name
+ * Required. Name of the recommendation.
+ * @type string $etag
+ * Fingerprint of the Recommendation. Provides optimistic locking.
+ * }
+ */
+ public function __construct($data = NULL) {
+ \GPBMetadata\Google\Cloud\Recommender\V1\RecommenderService::initOnce();
+ parent::__construct($data);
+ }
+
+ /**
+ * Required. Name of the recommendation.
+ *
+ * Generated from protobuf field string name = 1 [(.google.api.field_behavior) = REQUIRED, (.google.api.resource_reference) = {
+ * @return string
+ */
+ public function getName()
+ {
+ return $this->name;
+ }
+
+ /**
+ * Required. Name of the recommendation.
+ *
+ * Generated from protobuf field string name = 1 [(.google.api.field_behavior) = REQUIRED, (.google.api.resource_reference) = {
+ * @param string $var
+ * @return $this
+ */
+ public function setName($var)
+ {
+ GPBUtil::checkString($var, True);
+ $this->name = $var;
+
+ return $this;
+ }
+
+ /**
+ * Fingerprint of the Recommendation. Provides optimistic locking.
+ *
+ * Generated from protobuf field string etag = 2;
+ * @return string
+ */
+ public function getEtag()
+ {
+ return $this->etag;
+ }
+
+ /**
+ * Fingerprint of the Recommendation. Provides optimistic locking.
+ *
+ * Generated from protobuf field string etag = 2;
+ * @param string $var
+ * @return $this
+ */
+ public function setEtag($var)
+ {
+ GPBUtil::checkString($var, True);
+ $this->etag = $var;
+
+ return $this;
+ }
+
+}
+
diff --git a/owl-bot-staging/Recommender/v1/proto/src/Google/Cloud/Recommender/V1/MarkRecommendationFailedRequest.php b/owl-bot-staging/Recommender/v1/proto/src/Google/Cloud/Recommender/V1/MarkRecommendationFailedRequest.php
new file mode 100644
index 000000000000..9130a402746f
--- /dev/null
+++ b/owl-bot-staging/Recommender/v1/proto/src/Google/Cloud/Recommender/V1/MarkRecommendationFailedRequest.php
@@ -0,0 +1,168 @@
+google.cloud.recommender.v1.MarkRecommendationFailedRequest
+ */
+class MarkRecommendationFailedRequest extends \Google\Protobuf\Internal\Message
+{
+ /**
+ * Required. Name of the recommendation.
+ *
+ * Generated from protobuf field string name = 1 [(.google.api.field_behavior) = REQUIRED, (.google.api.resource_reference) = {
+ */
+ protected $name = '';
+ /**
+ * State properties to include with this state. Overwrites any existing
+ * `state_metadata`.
+ * Keys must match the regex `/^[a-z0-9][a-z0-9_.-]{0,62}$/`.
+ * Values must match the regex `/^[a-zA-Z0-9_./-]{0,255}$/`.
+ *
+ * Generated from protobuf field map state_metadata = 2;
+ */
+ private $state_metadata;
+ /**
+ * Required. Fingerprint of the Recommendation. Provides optimistic locking.
+ *
+ * Generated from protobuf field string etag = 3 [(.google.api.field_behavior) = REQUIRED];
+ */
+ protected $etag = '';
+
+ /**
+ * @param string $name Required. Name of the recommendation. Please see
+ * {@see RecommenderClient::recommendationName()} for help formatting this field.
+ * @param array $stateMetadata State properties to include with this state. Overwrites any existing
+ * `state_metadata`.
+ * Keys must match the regex `/^[a-z0-9][a-z0-9_.-]{0,62}$/`.
+ * Values must match the regex `/^[a-zA-Z0-9_./-]{0,255}$/`.
+ * @param string $etag Required. Fingerprint of the Recommendation. Provides optimistic locking.
+ *
+ * @return \Google\Cloud\Recommender\V1\MarkRecommendationFailedRequest
+ *
+ * @experimental
+ */
+ public static function build(string $name, array $stateMetadata, string $etag): self
+ {
+ return (new self())
+ ->setName($name)
+ ->setStateMetadata($stateMetadata)
+ ->setEtag($etag);
+ }
+
+ /**
+ * Constructor.
+ *
+ * @param array $data {
+ * Optional. Data for populating the Message object.
+ *
+ * @type string $name
+ * Required. Name of the recommendation.
+ * @type array|\Google\Protobuf\Internal\MapField $state_metadata
+ * State properties to include with this state. Overwrites any existing
+ * `state_metadata`.
+ * Keys must match the regex `/^[a-z0-9][a-z0-9_.-]{0,62}$/`.
+ * Values must match the regex `/^[a-zA-Z0-9_./-]{0,255}$/`.
+ * @type string $etag
+ * Required. Fingerprint of the Recommendation. Provides optimistic locking.
+ * }
+ */
+ public function __construct($data = NULL) {
+ \GPBMetadata\Google\Cloud\Recommender\V1\RecommenderService::initOnce();
+ parent::__construct($data);
+ }
+
+ /**
+ * Required. Name of the recommendation.
+ *
+ * Generated from protobuf field string name = 1 [(.google.api.field_behavior) = REQUIRED, (.google.api.resource_reference) = {
+ * @return string
+ */
+ public function getName()
+ {
+ return $this->name;
+ }
+
+ /**
+ * Required. Name of the recommendation.
+ *
+ * Generated from protobuf field string name = 1 [(.google.api.field_behavior) = REQUIRED, (.google.api.resource_reference) = {
+ * @param string $var
+ * @return $this
+ */
+ public function setName($var)
+ {
+ GPBUtil::checkString($var, True);
+ $this->name = $var;
+
+ return $this;
+ }
+
+ /**
+ * State properties to include with this state. Overwrites any existing
+ * `state_metadata`.
+ * Keys must match the regex `/^[a-z0-9][a-z0-9_.-]{0,62}$/`.
+ * Values must match the regex `/^[a-zA-Z0-9_./-]{0,255}$/`.
+ *
+ * Generated from protobuf field map state_metadata = 2;
+ * @return \Google\Protobuf\Internal\MapField
+ */
+ public function getStateMetadata()
+ {
+ return $this->state_metadata;
+ }
+
+ /**
+ * State properties to include with this state. Overwrites any existing
+ * `state_metadata`.
+ * Keys must match the regex `/^[a-z0-9][a-z0-9_.-]{0,62}$/`.
+ * Values must match the regex `/^[a-zA-Z0-9_./-]{0,255}$/`.
+ *
+ * Generated from protobuf field map state_metadata = 2;
+ * @param array|\Google\Protobuf\Internal\MapField $var
+ * @return $this
+ */
+ public function setStateMetadata($var)
+ {
+ $arr = GPBUtil::checkMapField($var, \Google\Protobuf\Internal\GPBType::STRING, \Google\Protobuf\Internal\GPBType::STRING);
+ $this->state_metadata = $arr;
+
+ return $this;
+ }
+
+ /**
+ * Required. Fingerprint of the Recommendation. Provides optimistic locking.
+ *
+ * Generated from protobuf field string etag = 3 [(.google.api.field_behavior) = REQUIRED];
+ * @return string
+ */
+ public function getEtag()
+ {
+ return $this->etag;
+ }
+
+ /**
+ * Required. Fingerprint of the Recommendation. Provides optimistic locking.
+ *
+ * Generated from protobuf field string etag = 3 [(.google.api.field_behavior) = REQUIRED];
+ * @param string $var
+ * @return $this
+ */
+ public function setEtag($var)
+ {
+ GPBUtil::checkString($var, True);
+ $this->etag = $var;
+
+ return $this;
+ }
+
+}
+
diff --git a/owl-bot-staging/Recommender/v1/proto/src/Google/Cloud/Recommender/V1/MarkRecommendationSucceededRequest.php b/owl-bot-staging/Recommender/v1/proto/src/Google/Cloud/Recommender/V1/MarkRecommendationSucceededRequest.php
new file mode 100644
index 000000000000..5d95a39fbe78
--- /dev/null
+++ b/owl-bot-staging/Recommender/v1/proto/src/Google/Cloud/Recommender/V1/MarkRecommendationSucceededRequest.php
@@ -0,0 +1,168 @@
+google.cloud.recommender.v1.MarkRecommendationSucceededRequest
+ */
+class MarkRecommendationSucceededRequest extends \Google\Protobuf\Internal\Message
+{
+ /**
+ * Required. Name of the recommendation.
+ *
+ * Generated from protobuf field string name = 1 [(.google.api.field_behavior) = REQUIRED, (.google.api.resource_reference) = {
+ */
+ protected $name = '';
+ /**
+ * State properties to include with this state. Overwrites any existing
+ * `state_metadata`.
+ * Keys must match the regex `/^[a-z0-9][a-z0-9_.-]{0,62}$/`.
+ * Values must match the regex `/^[a-zA-Z0-9_./-]{0,255}$/`.
+ *
+ * Generated from protobuf field map state_metadata = 2;
+ */
+ private $state_metadata;
+ /**
+ * Required. Fingerprint of the Recommendation. Provides optimistic locking.
+ *
+ * Generated from protobuf field string etag = 3 [(.google.api.field_behavior) = REQUIRED];
+ */
+ protected $etag = '';
+
+ /**
+ * @param string $name Required. Name of the recommendation. Please see
+ * {@see RecommenderClient::recommendationName()} for help formatting this field.
+ * @param array $stateMetadata State properties to include with this state. Overwrites any existing
+ * `state_metadata`.
+ * Keys must match the regex `/^[a-z0-9][a-z0-9_.-]{0,62}$/`.
+ * Values must match the regex `/^[a-zA-Z0-9_./-]{0,255}$/`.
+ * @param string $etag Required. Fingerprint of the Recommendation. Provides optimistic locking.
+ *
+ * @return \Google\Cloud\Recommender\V1\MarkRecommendationSucceededRequest
+ *
+ * @experimental
+ */
+ public static function build(string $name, array $stateMetadata, string $etag): self
+ {
+ return (new self())
+ ->setName($name)
+ ->setStateMetadata($stateMetadata)
+ ->setEtag($etag);
+ }
+
+ /**
+ * Constructor.
+ *
+ * @param array $data {
+ * Optional. Data for populating the Message object.
+ *
+ * @type string $name
+ * Required. Name of the recommendation.
+ * @type array|\Google\Protobuf\Internal\MapField $state_metadata
+ * State properties to include with this state. Overwrites any existing
+ * `state_metadata`.
+ * Keys must match the regex `/^[a-z0-9][a-z0-9_.-]{0,62}$/`.
+ * Values must match the regex `/^[a-zA-Z0-9_./-]{0,255}$/`.
+ * @type string $etag
+ * Required. Fingerprint of the Recommendation. Provides optimistic locking.
+ * }
+ */
+ public function __construct($data = NULL) {
+ \GPBMetadata\Google\Cloud\Recommender\V1\RecommenderService::initOnce();
+ parent::__construct($data);
+ }
+
+ /**
+ * Required. Name of the recommendation.
+ *
+ * Generated from protobuf field string name = 1 [(.google.api.field_behavior) = REQUIRED, (.google.api.resource_reference) = {
+ * @return string
+ */
+ public function getName()
+ {
+ return $this->name;
+ }
+
+ /**
+ * Required. Name of the recommendation.
+ *
+ * Generated from protobuf field string name = 1 [(.google.api.field_behavior) = REQUIRED, (.google.api.resource_reference) = {
+ * @param string $var
+ * @return $this
+ */
+ public function setName($var)
+ {
+ GPBUtil::checkString($var, True);
+ $this->name = $var;
+
+ return $this;
+ }
+
+ /**
+ * State properties to include with this state. Overwrites any existing
+ * `state_metadata`.
+ * Keys must match the regex `/^[a-z0-9][a-z0-9_.-]{0,62}$/`.
+ * Values must match the regex `/^[a-zA-Z0-9_./-]{0,255}$/`.
+ *
+ * Generated from protobuf field map state_metadata = 2;
+ * @return \Google\Protobuf\Internal\MapField
+ */
+ public function getStateMetadata()
+ {
+ return $this->state_metadata;
+ }
+
+ /**
+ * State properties to include with this state. Overwrites any existing
+ * `state_metadata`.
+ * Keys must match the regex `/^[a-z0-9][a-z0-9_.-]{0,62}$/`.
+ * Values must match the regex `/^[a-zA-Z0-9_./-]{0,255}$/`.
+ *
+ * Generated from protobuf field map state_metadata = 2;
+ * @param array|\Google\Protobuf\Internal\MapField $var
+ * @return $this
+ */
+ public function setStateMetadata($var)
+ {
+ $arr = GPBUtil::checkMapField($var, \Google\Protobuf\Internal\GPBType::STRING, \Google\Protobuf\Internal\GPBType::STRING);
+ $this->state_metadata = $arr;
+
+ return $this;
+ }
+
+ /**
+ * Required. Fingerprint of the Recommendation. Provides optimistic locking.
+ *
+ * Generated from protobuf field string etag = 3 [(.google.api.field_behavior) = REQUIRED];
+ * @return string
+ */
+ public function getEtag()
+ {
+ return $this->etag;
+ }
+
+ /**
+ * Required. Fingerprint of the Recommendation. Provides optimistic locking.
+ *
+ * Generated from protobuf field string etag = 3 [(.google.api.field_behavior) = REQUIRED];
+ * @param string $var
+ * @return $this
+ */
+ public function setEtag($var)
+ {
+ GPBUtil::checkString($var, True);
+ $this->etag = $var;
+
+ return $this;
+ }
+
+}
+
diff --git a/owl-bot-staging/Recommender/v1/proto/src/Google/Cloud/Recommender/V1/Operation.php b/owl-bot-staging/Recommender/v1/proto/src/Google/Cloud/Recommender/V1/Operation.php
new file mode 100644
index 000000000000..096085bea6f7
--- /dev/null
+++ b/owl-bot-staging/Recommender/v1/proto/src/Google/Cloud/Recommender/V1/Operation.php
@@ -0,0 +1,564 @@
+google.cloud.recommender.v1.Operation
+ */
+class Operation extends \Google\Protobuf\Internal\Message
+{
+ /**
+ * Type of this operation. Contains one of 'add', 'remove', 'replace', 'move',
+ * 'copy', 'test' and custom operations. This field is case-insensitive and
+ * always populated.
+ *
+ * Generated from protobuf field string action = 1;
+ */
+ protected $action = '';
+ /**
+ * Type of GCP resource being modified/tested. This field is always populated.
+ * Example: cloudresourcemanager.googleapis.com/Project,
+ * compute.googleapis.com/Instance
+ *
+ * Generated from protobuf field string resource_type = 2;
+ */
+ protected $resource_type = '';
+ /**
+ * Contains the fully qualified resource name. This field is always populated.
+ * ex: //cloudresourcemanager.googleapis.com/projects/foo.
+ *
+ * Generated from protobuf field string resource = 3;
+ */
+ protected $resource = '';
+ /**
+ * Path to the target field being operated on. If the operation is at the
+ * resource level, then path should be "/". This field is always populated.
+ *
+ * Generated from protobuf field string path = 4;
+ */
+ protected $path = '';
+ /**
+ * Can be set with action 'copy' to copy resource configuration across
+ * different resources of the same type. Example: A resource clone can be
+ * done via action = 'copy', path = "/", from = "/",
+ * source_resource =