diff --git a/owl-bot-staging/Quotas/v1/proto/src/GPBMetadata/Google/Api/Cloudquotas/V1/Cloudquotas.php b/owl-bot-staging/Quotas/v1/proto/src/GPBMetadata/Google/Api/Cloudquotas/V1/Cloudquotas.php
new file mode 100644
index 000000000000..42123bf06e8a
--- /dev/null
+++ b/owl-bot-staging/Quotas/v1/proto/src/GPBMetadata/Google/Api/Cloudquotas/V1/Cloudquotas.php
@@ -0,0 +1,78 @@
+internalAddGeneratedFile(
+ '
+Ö"
++google/api/cloudquotas/v1/cloudquotas.protogoogle.api.cloudquotas.v1google/api/client.proto)google/api/cloudquotas/v1/resources.protogoogle/api/field_behavior.protogoogle/api/resource.proto google/protobuf/field_mask.proto"†
+ListQuotaInfosRequest<
+parent ( B,àAúA&$cloudquotas.googleapis.com/QuotaInfo
+ page_size (BàA
+
+page_token ( BàA"l
+ListQuotaInfosResponse9
+quota_infos (2$.google.api.cloudquotas.v1.QuotaInfo
+next_page_token ( "Q
+GetQuotaInfoRequest:
+name ( B,àAúA&
+$cloudquotas.googleapis.com/QuotaInfo"¾
+ListQuotaPreferencesRequestB
+parent ( B2àAúA,*cloudquotas.googleapis.com/QuotaPreference
+ page_size (BàA
+
+page_token ( BàA
+filter ( BàA
+order_by ( BàA"“
+ListQuotaPreferencesResponseE
+quota_preferences (2*.google.api.cloudquotas.v1.QuotaPreference
+next_page_token (
+unreachable ( "]
+GetQuotaPreferenceRequest@
+name ( B2àAúA,
+*cloudquotas.googleapis.com/QuotaPreference"š
+CreateQuotaPreferenceRequestB
+parent ( B2àAúA,*cloudquotas.googleapis.com/QuotaPreference
+quota_preference_id ( BàAI
+quota_preference (2*.google.api.cloudquotas.v1.QuotaPreferenceBàAI
+ignore_safety_checks (2+.google.api.cloudquotas.v1.QuotaSafetyCheck"¢
+UpdateQuotaPreferenceRequest4
+update_mask (2.google.protobuf.FieldMaskBàAI
+quota_preference (2*.google.api.cloudquotas.v1.QuotaPreferenceBàA
+
allow_missing (BàA
+
validate_only (BàAI
+ignore_safety_checks (2+.google.api.cloudquotas.v1.QuotaSafetyCheck2¹
+CloudQuotasÁ
+ListQuotaInfos0.google.api.cloudquotas.v1.ListQuotaInfosRequest1.google.api.cloudquotas.v1.ListQuotaInfosResponse"ÉÚAparent‚Ó䓹9/v1/{parent=projects/*/locations/*/services/*}/quotaInfosZ@>/v1/{parent=organizations/*/locations/*/services/*}/quotaInfosZ:8/v1/{parent=folders/*/locations/*/services/*}/quotaInfos®
+GetQuotaInfo..google.api.cloudquotas.v1.GetQuotaInfoRequest$.google.api.cloudquotas.v1.QuotaInfo"ÇÚAname‚Ó䓹9/v1/{name=projects/*/locations/*/services/*/quotaInfos/*}Z@>/v1/{name=organizations/*/locations/*/services/*/quotaInfos/*}Z:8/v1/{name=folders/*/locations/*/services/*/quotaInfos/*}Ä
+ListQuotaPreferences6.google.api.cloudquotas.v1.ListQuotaPreferencesRequest7.google.api.cloudquotas.v1.ListQuotaPreferencesResponse"ºÚAparent‚Ó䓪4/v1/{parent=projects/*/locations/*}/quotaPreferencesZ53/v1/{parent=folders/*/locations/*}/quotaPreferencesZ;9/v1/{parent=organizations/*/locations/*}/quotaPreferences±
+GetQuotaPreference4.google.api.cloudquotas.v1.GetQuotaPreferenceRequest*.google.api.cloudquotas.v1.QuotaPreference"¸ÚAname‚Ó䓪4/v1/{name=projects/*/locations/*/quotaPreferences/*}Z;9/v1/{name=organizations/*/locations/*/quotaPreferences/*}Z53/v1/{name=folders/*/locations/*/quotaPreferences/*}®
+CreateQuotaPreference7.google.api.cloudquotas.v1.CreateQuotaPreferenceRequest*.google.api.cloudquotas.v1.QuotaPreference"¯ÚA+parent,quota_preference,quota_preference_idÚAparent,quota_preference‚Óä“à"4/v1/{parent=projects/*/locations/*}/quotaPreferences:quota_preferenceZG"3/v1/{parent=folders/*/locations/*}/quotaPreferences:quota_preferenceZM"9/v1/{parent=organizations/*/locations/*}/quotaPreferences:quota_preference¸
+UpdateQuotaPreference7.google.api.cloudquotas.v1.UpdateQuotaPreferenceRequest*.google.api.cloudquotas.v1.QuotaPreference"¹ÚAquota_preference,update_mask‚Óä““2E/v1/{quota_preference.name=projects/*/locations/*/quotaPreferences/*}:quota_preferenceZX2D/v1/{quota_preference.name=folders/*/locations/*/quotaPreferences/*}:quota_preferenceZ^2J/v1/{quota_preference.name=organizations/*/locations/*/quotaPreferences/*}:quota_preferenceNÊAcloudquotas.googleapis.comÒA.https://www.googleapis.com/auth/cloud-platformBã
+com.google.api.cloudquotas.v1BCloudquotasProtoPZAcloud.google.com/go/cloudquotas/apiv1/cloudquotaspb;cloudquotaspbªGoogle.Cloud.CloudQuotas.V1ÊGoogle\\Cloud\\CloudQuotas\\V1êGoogle::Cloud::CloudQuotas::V1êAà
+"cloudquotas.googleapis.com/Service:projects/{project}/locations/{location}/services/{service}8folders/{folder}/locations/{location}/services/{service}Dorganizations/{organization}/locations/{location}/services/{service}êA¨
+#cloudquotas.googleapis.com/Location\'projects/{project}/locations/{location}%folders/{folder}/locations/{location}1organizations/{organization}/locations/{location}bproto3'
+ , true);
+
+ static::$is_initialized = true;
+ }
+}
+
diff --git a/owl-bot-staging/Quotas/v1/proto/src/GPBMetadata/Google/Api/Cloudquotas/V1/Resources.php b/owl-bot-staging/Quotas/v1/proto/src/GPBMetadata/Google/Api/Cloudquotas/V1/Resources.php
new file mode 100644
index 000000000000..9f2589e17b50
Binary files /dev/null and b/owl-bot-staging/Quotas/v1/proto/src/GPBMetadata/Google/Api/Cloudquotas/V1/Resources.php differ
diff --git a/owl-bot-staging/Quotas/v1/proto/src/Google/Cloud/CloudQuotas/V1/CreateQuotaPreferenceRequest.php b/owl-bot-staging/Quotas/v1/proto/src/Google/Cloud/CloudQuotas/V1/CreateQuotaPreferenceRequest.php
new file mode 100644
index 000000000000..097b3e386bf0
--- /dev/null
+++ b/owl-bot-staging/Quotas/v1/proto/src/Google/Cloud/CloudQuotas/V1/CreateQuotaPreferenceRequest.php
@@ -0,0 +1,232 @@
+google.api.cloudquotas.v1.CreateQuotaPreferenceRequest
+ */
+class CreateQuotaPreferenceRequest extends \Google\Protobuf\Internal\Message
+{
+ /**
+ * Required. Value for parent.
+ * Example:
+ * `projects/123/locations/global`
+ *
+ * Generated from protobuf field string parent = 1 [(.google.api.field_behavior) = REQUIRED, (.google.api.resource_reference) = {
+ */
+ protected $parent = '';
+ /**
+ * Optional. Id of the requesting object, must be unique under its parent.
+ * If client does not set this field, the service will generate one.
+ *
+ * Generated from protobuf field string quota_preference_id = 2 [(.google.api.field_behavior) = OPTIONAL];
+ */
+ protected $quota_preference_id = '';
+ /**
+ * Required. The resource being created
+ *
+ * Generated from protobuf field .google.api.cloudquotas.v1.QuotaPreference quota_preference = 3 [(.google.api.field_behavior) = REQUIRED];
+ */
+ protected $quota_preference = null;
+ /**
+ * The list of quota safety checks to be ignored.
+ *
+ * Generated from protobuf field repeated .google.api.cloudquotas.v1.QuotaSafetyCheck ignore_safety_checks = 4;
+ */
+ private $ignore_safety_checks;
+
+ /**
+ * @param string $parent Required. Value for parent.
+ *
+ * Example:
+ * `projects/123/locations/global`
+ * Please see {@see CloudQuotasClient::locationName()} for help formatting this field.
+ * @param \Google\Cloud\CloudQuotas\V1\QuotaPreference $quotaPreference Required. The resource being created
+ * @param string $quotaPreferenceId Optional. Id of the requesting object, must be unique under its parent.
+ * If client does not set this field, the service will generate one.
+ *
+ * @return \Google\Cloud\CloudQuotas\V1\CreateQuotaPreferenceRequest
+ *
+ * @experimental
+ */
+ public static function build(string $parent, \Google\Cloud\CloudQuotas\V1\QuotaPreference $quotaPreference, string $quotaPreferenceId): self
+ {
+ return (new self())
+ ->setParent($parent)
+ ->setQuotaPreference($quotaPreference)
+ ->setQuotaPreferenceId($quotaPreferenceId);
+ }
+
+ /**
+ * @param string $parent Required. Value for parent.
+ *
+ * Example:
+ * `projects/123/locations/global`
+ * Please see {@see CloudQuotasClient::locationName()} for help formatting this field.
+ * @param \Google\Cloud\CloudQuotas\V1\QuotaPreference $quotaPreference Required. The resource being created
+ *
+ * @return \Google\Cloud\CloudQuotas\V1\CreateQuotaPreferenceRequest
+ *
+ * @experimental
+ */
+ public static function buildFromParentQuotaPreference(string $parent, \Google\Cloud\CloudQuotas\V1\QuotaPreference $quotaPreference): self
+ {
+ return (new self())
+ ->setParent($parent)
+ ->setQuotaPreference($quotaPreference);
+ }
+
+ /**
+ * Constructor.
+ *
+ * @param array $data {
+ * Optional. Data for populating the Message object.
+ *
+ * @type string $parent
+ * Required. Value for parent.
+ * Example:
+ * `projects/123/locations/global`
+ * @type string $quota_preference_id
+ * Optional. Id of the requesting object, must be unique under its parent.
+ * If client does not set this field, the service will generate one.
+ * @type \Google\Cloud\CloudQuotas\V1\QuotaPreference $quota_preference
+ * Required. The resource being created
+ * @type array|\Google\Protobuf\Internal\RepeatedField $ignore_safety_checks
+ * The list of quota safety checks to be ignored.
+ * }
+ */
+ public function __construct($data = NULL) {
+ \GPBMetadata\Google\Api\Cloudquotas\V1\Cloudquotas::initOnce();
+ parent::__construct($data);
+ }
+
+ /**
+ * Required. Value for parent.
+ * Example:
+ * `projects/123/locations/global`
+ *
+ * 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. Value for parent.
+ * Example:
+ * `projects/123/locations/global`
+ *
+ * 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. Id of the requesting object, must be unique under its parent.
+ * If client does not set this field, the service will generate one.
+ *
+ * Generated from protobuf field string quota_preference_id = 2 [(.google.api.field_behavior) = OPTIONAL];
+ * @return string
+ */
+ public function getQuotaPreferenceId()
+ {
+ return $this->quota_preference_id;
+ }
+
+ /**
+ * Optional. Id of the requesting object, must be unique under its parent.
+ * If client does not set this field, the service will generate one.
+ *
+ * Generated from protobuf field string quota_preference_id = 2 [(.google.api.field_behavior) = OPTIONAL];
+ * @param string $var
+ * @return $this
+ */
+ public function setQuotaPreferenceId($var)
+ {
+ GPBUtil::checkString($var, True);
+ $this->quota_preference_id = $var;
+
+ return $this;
+ }
+
+ /**
+ * Required. The resource being created
+ *
+ * Generated from protobuf field .google.api.cloudquotas.v1.QuotaPreference quota_preference = 3 [(.google.api.field_behavior) = REQUIRED];
+ * @return \Google\Cloud\CloudQuotas\V1\QuotaPreference|null
+ */
+ public function getQuotaPreference()
+ {
+ return $this->quota_preference;
+ }
+
+ public function hasQuotaPreference()
+ {
+ return isset($this->quota_preference);
+ }
+
+ public function clearQuotaPreference()
+ {
+ unset($this->quota_preference);
+ }
+
+ /**
+ * Required. The resource being created
+ *
+ * Generated from protobuf field .google.api.cloudquotas.v1.QuotaPreference quota_preference = 3 [(.google.api.field_behavior) = REQUIRED];
+ * @param \Google\Cloud\CloudQuotas\V1\QuotaPreference $var
+ * @return $this
+ */
+ public function setQuotaPreference($var)
+ {
+ GPBUtil::checkMessage($var, \Google\Cloud\CloudQuotas\V1\QuotaPreference::class);
+ $this->quota_preference = $var;
+
+ return $this;
+ }
+
+ /**
+ * The list of quota safety checks to be ignored.
+ *
+ * Generated from protobuf field repeated .google.api.cloudquotas.v1.QuotaSafetyCheck ignore_safety_checks = 4;
+ * @return \Google\Protobuf\Internal\RepeatedField
+ */
+ public function getIgnoreSafetyChecks()
+ {
+ return $this->ignore_safety_checks;
+ }
+
+ /**
+ * The list of quota safety checks to be ignored.
+ *
+ * Generated from protobuf field repeated .google.api.cloudquotas.v1.QuotaSafetyCheck ignore_safety_checks = 4;
+ * @param array|\Google\Protobuf\Internal\RepeatedField $var
+ * @return $this
+ */
+ public function setIgnoreSafetyChecks($var)
+ {
+ $arr = GPBUtil::checkRepeatedField($var, \Google\Protobuf\Internal\GPBType::ENUM, \Google\Cloud\CloudQuotas\V1\QuotaSafetyCheck::class);
+ $this->ignore_safety_checks = $arr;
+
+ return $this;
+ }
+
+}
+
diff --git a/owl-bot-staging/Quotas/v1/proto/src/Google/Cloud/CloudQuotas/V1/DimensionsInfo.php b/owl-bot-staging/Quotas/v1/proto/src/Google/Cloud/CloudQuotas/V1/DimensionsInfo.php
new file mode 100644
index 000000000000..e762ea504de7
--- /dev/null
+++ b/owl-bot-staging/Quotas/v1/proto/src/Google/Cloud/CloudQuotas/V1/DimensionsInfo.php
@@ -0,0 +1,186 @@
+google.api.cloudquotas.v1.DimensionsInfo
+ */
+class DimensionsInfo extends \Google\Protobuf\Internal\Message
+{
+ /**
+ * The map of dimensions for this dimensions info. The key of a map entry
+ * is "region", "zone" or the name of a service specific dimension, and the
+ * value of a map entry is the value of the dimension. If a dimension does
+ * not appear in the map of dimensions, the dimensions info applies to all
+ * the dimension values except for those that have another DimenisonInfo
+ * instance configured for the specific value.
+ * Example: {"provider" : "Foo Inc"} where "provider" is a service specific
+ * dimension of a quota.
+ *
+ * Generated from protobuf field map dimensions = 1;
+ */
+ private $dimensions;
+ /**
+ * Quota details for the specified dimensions.
+ *
+ * Generated from protobuf field .google.api.cloudquotas.v1.QuotaDetails details = 2;
+ */
+ protected $details = null;
+ /**
+ * The applicable regions or zones of this dimensions info. The field will be
+ * set to ['global'] for quotas that are not per region or per zone.
+ * Otherwise, it will be set to the list of locations this dimension info is
+ * applicable to.
+ *
+ * Generated from protobuf field repeated string applicable_locations = 3;
+ */
+ private $applicable_locations;
+
+ /**
+ * Constructor.
+ *
+ * @param array $data {
+ * Optional. Data for populating the Message object.
+ *
+ * @type array|\Google\Protobuf\Internal\MapField $dimensions
+ * The map of dimensions for this dimensions info. The key of a map entry
+ * is "region", "zone" or the name of a service specific dimension, and the
+ * value of a map entry is the value of the dimension. If a dimension does
+ * not appear in the map of dimensions, the dimensions info applies to all
+ * the dimension values except for those that have another DimenisonInfo
+ * instance configured for the specific value.
+ * Example: {"provider" : "Foo Inc"} where "provider" is a service specific
+ * dimension of a quota.
+ * @type \Google\Cloud\CloudQuotas\V1\QuotaDetails $details
+ * Quota details for the specified dimensions.
+ * @type array|\Google\Protobuf\Internal\RepeatedField $applicable_locations
+ * The applicable regions or zones of this dimensions info. The field will be
+ * set to ['global'] for quotas that are not per region or per zone.
+ * Otherwise, it will be set to the list of locations this dimension info is
+ * applicable to.
+ * }
+ */
+ public function __construct($data = NULL) {
+ \GPBMetadata\Google\Api\Cloudquotas\V1\Resources::initOnce();
+ parent::__construct($data);
+ }
+
+ /**
+ * The map of dimensions for this dimensions info. The key of a map entry
+ * is "region", "zone" or the name of a service specific dimension, and the
+ * value of a map entry is the value of the dimension. If a dimension does
+ * not appear in the map of dimensions, the dimensions info applies to all
+ * the dimension values except for those that have another DimenisonInfo
+ * instance configured for the specific value.
+ * Example: {"provider" : "Foo Inc"} where "provider" is a service specific
+ * dimension of a quota.
+ *
+ * Generated from protobuf field map dimensions = 1;
+ * @return \Google\Protobuf\Internal\MapField
+ */
+ public function getDimensions()
+ {
+ return $this->dimensions;
+ }
+
+ /**
+ * The map of dimensions for this dimensions info. The key of a map entry
+ * is "region", "zone" or the name of a service specific dimension, and the
+ * value of a map entry is the value of the dimension. If a dimension does
+ * not appear in the map of dimensions, the dimensions info applies to all
+ * the dimension values except for those that have another DimenisonInfo
+ * instance configured for the specific value.
+ * Example: {"provider" : "Foo Inc"} where "provider" is a service specific
+ * dimension of a quota.
+ *
+ * Generated from protobuf field map dimensions = 1;
+ * @param array|\Google\Protobuf\Internal\MapField $var
+ * @return $this
+ */
+ public function setDimensions($var)
+ {
+ $arr = GPBUtil::checkMapField($var, \Google\Protobuf\Internal\GPBType::STRING, \Google\Protobuf\Internal\GPBType::STRING);
+ $this->dimensions = $arr;
+
+ return $this;
+ }
+
+ /**
+ * Quota details for the specified dimensions.
+ *
+ * Generated from protobuf field .google.api.cloudquotas.v1.QuotaDetails details = 2;
+ * @return \Google\Cloud\CloudQuotas\V1\QuotaDetails|null
+ */
+ public function getDetails()
+ {
+ return $this->details;
+ }
+
+ public function hasDetails()
+ {
+ return isset($this->details);
+ }
+
+ public function clearDetails()
+ {
+ unset($this->details);
+ }
+
+ /**
+ * Quota details for the specified dimensions.
+ *
+ * Generated from protobuf field .google.api.cloudquotas.v1.QuotaDetails details = 2;
+ * @param \Google\Cloud\CloudQuotas\V1\QuotaDetails $var
+ * @return $this
+ */
+ public function setDetails($var)
+ {
+ GPBUtil::checkMessage($var, \Google\Cloud\CloudQuotas\V1\QuotaDetails::class);
+ $this->details = $var;
+
+ return $this;
+ }
+
+ /**
+ * The applicable regions or zones of this dimensions info. The field will be
+ * set to ['global'] for quotas that are not per region or per zone.
+ * Otherwise, it will be set to the list of locations this dimension info is
+ * applicable to.
+ *
+ * Generated from protobuf field repeated string applicable_locations = 3;
+ * @return \Google\Protobuf\Internal\RepeatedField
+ */
+ public function getApplicableLocations()
+ {
+ return $this->applicable_locations;
+ }
+
+ /**
+ * The applicable regions or zones of this dimensions info. The field will be
+ * set to ['global'] for quotas that are not per region or per zone.
+ * Otherwise, it will be set to the list of locations this dimension info is
+ * applicable to.
+ *
+ * Generated from protobuf field repeated string applicable_locations = 3;
+ * @param array|\Google\Protobuf\Internal\RepeatedField $var
+ * @return $this
+ */
+ public function setApplicableLocations($var)
+ {
+ $arr = GPBUtil::checkRepeatedField($var, \Google\Protobuf\Internal\GPBType::STRING);
+ $this->applicable_locations = $arr;
+
+ return $this;
+ }
+
+}
+
diff --git a/owl-bot-staging/Quotas/v1/proto/src/Google/Cloud/CloudQuotas/V1/GetQuotaInfoRequest.php b/owl-bot-staging/Quotas/v1/proto/src/Google/Cloud/CloudQuotas/V1/GetQuotaInfoRequest.php
new file mode 100644
index 000000000000..d28953dfb23c
--- /dev/null
+++ b/owl-bot-staging/Quotas/v1/proto/src/Google/Cloud/CloudQuotas/V1/GetQuotaInfoRequest.php
@@ -0,0 +1,92 @@
+google.api.cloudquotas.v1.GetQuotaInfoRequest
+ */
+class GetQuotaInfoRequest extends \Google\Protobuf\Internal\Message
+{
+ /**
+ * Required. The resource name of the quota info.
+ * An example name:
+ * `projects/123/locations/global/services/compute.googleapis.com/quotaInfos/CpusPerProjectPerRegion`
+ *
+ * Generated from protobuf field string name = 1 [(.google.api.field_behavior) = REQUIRED, (.google.api.resource_reference) = {
+ */
+ protected $name = '';
+
+ /**
+ * @param string $name Required. The resource name of the quota info.
+ *
+ * An example name:
+ * `projects/123/locations/global/services/compute.googleapis.com/quotaInfos/CpusPerProjectPerRegion`
+ * Please see {@see CloudQuotasClient::quotaInfoName()} for help formatting this field.
+ *
+ * @return \Google\Cloud\CloudQuotas\V1\GetQuotaInfoRequest
+ *
+ * @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. The resource name of the quota info.
+ * An example name:
+ * `projects/123/locations/global/services/compute.googleapis.com/quotaInfos/CpusPerProjectPerRegion`
+ * }
+ */
+ public function __construct($data = NULL) {
+ \GPBMetadata\Google\Api\Cloudquotas\V1\Cloudquotas::initOnce();
+ parent::__construct($data);
+ }
+
+ /**
+ * Required. The resource name of the quota info.
+ * An example name:
+ * `projects/123/locations/global/services/compute.googleapis.com/quotaInfos/CpusPerProjectPerRegion`
+ *
+ * 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. The resource name of the quota info.
+ * An example name:
+ * `projects/123/locations/global/services/compute.googleapis.com/quotaInfos/CpusPerProjectPerRegion`
+ *
+ * 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/Quotas/v1/proto/src/Google/Cloud/CloudQuotas/V1/GetQuotaPreferenceRequest.php b/owl-bot-staging/Quotas/v1/proto/src/Google/Cloud/CloudQuotas/V1/GetQuotaPreferenceRequest.php
new file mode 100644
index 000000000000..d4e3772f5680
--- /dev/null
+++ b/owl-bot-staging/Quotas/v1/proto/src/Google/Cloud/CloudQuotas/V1/GetQuotaPreferenceRequest.php
@@ -0,0 +1,92 @@
+google.api.cloudquotas.v1.GetQuotaPreferenceRequest
+ */
+class GetQuotaPreferenceRequest extends \Google\Protobuf\Internal\Message
+{
+ /**
+ * Required. Name of the resource
+ * Example name:
+ * `projects/123/locations/global/quota_preferences/my-config-for-us-east1`
+ *
+ * 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 resource
+ *
+ * Example name:
+ * `projects/123/locations/global/quota_preferences/my-config-for-us-east1`
+ * Please see {@see CloudQuotasClient::quotaPreferenceName()} for help formatting this field.
+ *
+ * @return \Google\Cloud\CloudQuotas\V1\GetQuotaPreferenceRequest
+ *
+ * @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 resource
+ * Example name:
+ * `projects/123/locations/global/quota_preferences/my-config-for-us-east1`
+ * }
+ */
+ public function __construct($data = NULL) {
+ \GPBMetadata\Google\Api\Cloudquotas\V1\Cloudquotas::initOnce();
+ parent::__construct($data);
+ }
+
+ /**
+ * Required. Name of the resource
+ * Example name:
+ * `projects/123/locations/global/quota_preferences/my-config-for-us-east1`
+ *
+ * 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 resource
+ * Example name:
+ * `projects/123/locations/global/quota_preferences/my-config-for-us-east1`
+ *
+ * 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/Quotas/v1/proto/src/Google/Cloud/CloudQuotas/V1/ListQuotaInfosRequest.php b/owl-bot-staging/Quotas/v1/proto/src/Google/Cloud/CloudQuotas/V1/ListQuotaInfosRequest.php
new file mode 100644
index 000000000000..1620a7795fd9
--- /dev/null
+++ b/owl-bot-staging/Quotas/v1/proto/src/Google/Cloud/CloudQuotas/V1/ListQuotaInfosRequest.php
@@ -0,0 +1,184 @@
+google.api.cloudquotas.v1.ListQuotaInfosRequest
+ */
+class ListQuotaInfosRequest extends \Google\Protobuf\Internal\Message
+{
+ /**
+ * Required. Parent value of QuotaInfo resources.
+ * Listing across different resource containers (such as 'projects/-') is not
+ * allowed.
+ * Example names:
+ * `projects/123/locations/global/services/compute.googleapis.com`
+ * `folders/234/locations/global/services/compute.googleapis.com`
+ * `organizations/345/locations/global/services/compute.googleapis.com`
+ *
+ * Generated from protobuf field string parent = 1 [(.google.api.field_behavior) = REQUIRED, (.google.api.resource_reference) = {
+ */
+ protected $parent = '';
+ /**
+ * Optional. Requested page size. Server may return fewer items than
+ * requested. If unspecified, server will pick an appropriate default.
+ *
+ * Generated from protobuf field int32 page_size = 2 [(.google.api.field_behavior) = OPTIONAL];
+ */
+ protected $page_size = 0;
+ /**
+ * Optional. A token identifying a page of results the server should return.
+ *
+ * Generated from protobuf field string page_token = 3 [(.google.api.field_behavior) = OPTIONAL];
+ */
+ protected $page_token = '';
+
+ /**
+ * @param string $parent Required. Parent value of QuotaInfo resources.
+ * Listing across different resource containers (such as 'projects/-') is not
+ * allowed.
+ *
+ * Example names:
+ * `projects/123/locations/global/services/compute.googleapis.com`
+ * `folders/234/locations/global/services/compute.googleapis.com`
+ * `organizations/345/locations/global/services/compute.googleapis.com`
+ * Please see {@see CloudQuotasClient::serviceName()} for help formatting this field.
+ *
+ * @return \Google\Cloud\CloudQuotas\V1\ListQuotaInfosRequest
+ *
+ * @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. Parent value of QuotaInfo resources.
+ * Listing across different resource containers (such as 'projects/-') is not
+ * allowed.
+ * Example names:
+ * `projects/123/locations/global/services/compute.googleapis.com`
+ * `folders/234/locations/global/services/compute.googleapis.com`
+ * `organizations/345/locations/global/services/compute.googleapis.com`
+ * @type int $page_size
+ * Optional. Requested page size. Server may return fewer items than
+ * requested. If unspecified, server will pick an appropriate default.
+ * @type string $page_token
+ * Optional. A token identifying a page of results the server should return.
+ * }
+ */
+ public function __construct($data = NULL) {
+ \GPBMetadata\Google\Api\Cloudquotas\V1\Cloudquotas::initOnce();
+ parent::__construct($data);
+ }
+
+ /**
+ * Required. Parent value of QuotaInfo resources.
+ * Listing across different resource containers (such as 'projects/-') is not
+ * allowed.
+ * Example names:
+ * `projects/123/locations/global/services/compute.googleapis.com`
+ * `folders/234/locations/global/services/compute.googleapis.com`
+ * `organizations/345/locations/global/services/compute.googleapis.com`
+ *
+ * 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. Parent value of QuotaInfo resources.
+ * Listing across different resource containers (such as 'projects/-') is not
+ * allowed.
+ * Example names:
+ * `projects/123/locations/global/services/compute.googleapis.com`
+ * `folders/234/locations/global/services/compute.googleapis.com`
+ * `organizations/345/locations/global/services/compute.googleapis.com`
+ *
+ * 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. Requested page size. Server may return fewer items than
+ * requested. If unspecified, server will pick an appropriate default.
+ *
+ * Generated from protobuf field int32 page_size = 2 [(.google.api.field_behavior) = OPTIONAL];
+ * @return int
+ */
+ public function getPageSize()
+ {
+ return $this->page_size;
+ }
+
+ /**
+ * Optional. Requested page size. Server may return fewer items than
+ * requested. If unspecified, server will pick an appropriate default.
+ *
+ * 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. A token identifying a page of results the server should return.
+ *
+ * Generated from protobuf field string page_token = 3 [(.google.api.field_behavior) = OPTIONAL];
+ * @return string
+ */
+ public function getPageToken()
+ {
+ return $this->page_token;
+ }
+
+ /**
+ * Optional. A token identifying a page of results the server should return.
+ *
+ * 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;
+ }
+
+}
+
diff --git a/owl-bot-staging/Quotas/v1/proto/src/Google/Cloud/CloudQuotas/V1/ListQuotaInfosResponse.php b/owl-bot-staging/Quotas/v1/proto/src/Google/Cloud/CloudQuotas/V1/ListQuotaInfosResponse.php
new file mode 100644
index 000000000000..0eefa66e027b
--- /dev/null
+++ b/owl-bot-staging/Quotas/v1/proto/src/Google/Cloud/CloudQuotas/V1/ListQuotaInfosResponse.php
@@ -0,0 +1,105 @@
+google.api.cloudquotas.v1.ListQuotaInfosResponse
+ */
+class ListQuotaInfosResponse extends \Google\Protobuf\Internal\Message
+{
+ /**
+ * The list of QuotaInfo
+ *
+ * Generated from protobuf field repeated .google.api.cloudquotas.v1.QuotaInfo quota_infos = 1;
+ */
+ private $quota_infos;
+ /**
+ * A token, which can be sent as `page_token` to retrieve the next page.
+ * If this field is omitted, there are no subsequent pages.
+ *
+ * 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\CloudQuotas\V1\QuotaInfo>|\Google\Protobuf\Internal\RepeatedField $quota_infos
+ * The list of QuotaInfo
+ * @type string $next_page_token
+ * A token, which can be sent as `page_token` to retrieve the next page.
+ * If this field is omitted, there are no subsequent pages.
+ * }
+ */
+ public function __construct($data = NULL) {
+ \GPBMetadata\Google\Api\Cloudquotas\V1\Cloudquotas::initOnce();
+ parent::__construct($data);
+ }
+
+ /**
+ * The list of QuotaInfo
+ *
+ * Generated from protobuf field repeated .google.api.cloudquotas.v1.QuotaInfo quota_infos = 1;
+ * @return \Google\Protobuf\Internal\RepeatedField
+ */
+ public function getQuotaInfos()
+ {
+ return $this->quota_infos;
+ }
+
+ /**
+ * The list of QuotaInfo
+ *
+ * Generated from protobuf field repeated .google.api.cloudquotas.v1.QuotaInfo quota_infos = 1;
+ * @param array<\Google\Cloud\CloudQuotas\V1\QuotaInfo>|\Google\Protobuf\Internal\RepeatedField $var
+ * @return $this
+ */
+ public function setQuotaInfos($var)
+ {
+ $arr = GPBUtil::checkRepeatedField($var, \Google\Protobuf\Internal\GPBType::MESSAGE, \Google\Cloud\CloudQuotas\V1\QuotaInfo::class);
+ $this->quota_infos = $arr;
+
+ return $this;
+ }
+
+ /**
+ * A token, which can be sent as `page_token` to retrieve the next page.
+ * If this field is omitted, there are no subsequent pages.
+ *
+ * Generated from protobuf field string next_page_token = 2;
+ * @return string
+ */
+ public function getNextPageToken()
+ {
+ return $this->next_page_token;
+ }
+
+ /**
+ * A token, which can be sent as `page_token` to retrieve the next page.
+ * If this field is omitted, there are no subsequent pages.
+ *
+ * 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/Quotas/v1/proto/src/Google/Cloud/CloudQuotas/V1/ListQuotaPreferencesRequest.php b/owl-bot-staging/Quotas/v1/proto/src/Google/Cloud/CloudQuotas/V1/ListQuotaPreferencesRequest.php
new file mode 100644
index 000000000000..e657eb87622d
--- /dev/null
+++ b/owl-bot-staging/Quotas/v1/proto/src/Google/Cloud/CloudQuotas/V1/ListQuotaPreferencesRequest.php
@@ -0,0 +1,290 @@
+google.api.cloudquotas.v1.ListQuotaPreferencesRequest
+ */
+class ListQuotaPreferencesRequest extends \Google\Protobuf\Internal\Message
+{
+ /**
+ * Required. Parent value of QuotaPreference resources.
+ * Listing across different resource containers (such as 'projects/-') is not
+ * allowed.
+ * When the value starts with 'folders' or 'organizations', it lists the
+ * QuotaPreferences for org quotas in the container. It does not list the
+ * QuotaPreferences in the descendant projects of the container.
+ * Example parents:
+ * `projects/123/locations/global`
+ *
+ * Generated from protobuf field string parent = 1 [(.google.api.field_behavior) = REQUIRED, (.google.api.resource_reference) = {
+ */
+ protected $parent = '';
+ /**
+ * Optional. Requested page size. Server may return fewer items than
+ * requested. If unspecified, server will pick an appropriate default.
+ *
+ * Generated from protobuf field int32 page_size = 2 [(.google.api.field_behavior) = OPTIONAL];
+ */
+ protected $page_size = 0;
+ /**
+ * Optional. A token identifying a page of results the server should return.
+ *
+ * Generated from protobuf field string page_token = 3 [(.google.api.field_behavior) = OPTIONAL];
+ */
+ protected $page_token = '';
+ /**
+ * Optional. Filter result QuotaPreferences by their state, type,
+ * create/update time range.
+ * Example filters:
+ * `reconciling=true AND request_type=CLOUD_CONSOLE`,
+ * `reconciling=true OR creation_time>2022-12-03T10:30:00`
+ *
+ * Generated from protobuf field string filter = 4 [(.google.api.field_behavior) = OPTIONAL];
+ */
+ protected $filter = '';
+ /**
+ * Optional. How to order of the results. By default, the results are ordered
+ * by create time.
+ * Example orders:
+ * `quota_id`,
+ * `service, create_time`
+ *
+ * Generated from protobuf field string order_by = 5 [(.google.api.field_behavior) = OPTIONAL];
+ */
+ protected $order_by = '';
+
+ /**
+ * @param string $parent Required. Parent value of QuotaPreference resources.
+ * Listing across different resource containers (such as 'projects/-') is not
+ * allowed.
+ *
+ * When the value starts with 'folders' or 'organizations', it lists the
+ * QuotaPreferences for org quotas in the container. It does not list the
+ * QuotaPreferences in the descendant projects of the container.
+ *
+ * Example parents:
+ * `projects/123/locations/global`
+ * Please see {@see CloudQuotasClient::locationName()} for help formatting this field.
+ *
+ * @return \Google\Cloud\CloudQuotas\V1\ListQuotaPreferencesRequest
+ *
+ * @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. Parent value of QuotaPreference resources.
+ * Listing across different resource containers (such as 'projects/-') is not
+ * allowed.
+ * When the value starts with 'folders' or 'organizations', it lists the
+ * QuotaPreferences for org quotas in the container. It does not list the
+ * QuotaPreferences in the descendant projects of the container.
+ * Example parents:
+ * `projects/123/locations/global`
+ * @type int $page_size
+ * Optional. Requested page size. Server may return fewer items than
+ * requested. If unspecified, server will pick an appropriate default.
+ * @type string $page_token
+ * Optional. A token identifying a page of results the server should return.
+ * @type string $filter
+ * Optional. Filter result QuotaPreferences by their state, type,
+ * create/update time range.
+ * Example filters:
+ * `reconciling=true AND request_type=CLOUD_CONSOLE`,
+ * `reconciling=true OR creation_time>2022-12-03T10:30:00`
+ * @type string $order_by
+ * Optional. How to order of the results. By default, the results are ordered
+ * by create time.
+ * Example orders:
+ * `quota_id`,
+ * `service, create_time`
+ * }
+ */
+ public function __construct($data = NULL) {
+ \GPBMetadata\Google\Api\Cloudquotas\V1\Cloudquotas::initOnce();
+ parent::__construct($data);
+ }
+
+ /**
+ * Required. Parent value of QuotaPreference resources.
+ * Listing across different resource containers (such as 'projects/-') is not
+ * allowed.
+ * When the value starts with 'folders' or 'organizations', it lists the
+ * QuotaPreferences for org quotas in the container. It does not list the
+ * QuotaPreferences in the descendant projects of the container.
+ * Example parents:
+ * `projects/123/locations/global`
+ *
+ * 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. Parent value of QuotaPreference resources.
+ * Listing across different resource containers (such as 'projects/-') is not
+ * allowed.
+ * When the value starts with 'folders' or 'organizations', it lists the
+ * QuotaPreferences for org quotas in the container. It does not list the
+ * QuotaPreferences in the descendant projects of the container.
+ * Example parents:
+ * `projects/123/locations/global`
+ *
+ * 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. Requested page size. Server may return fewer items than
+ * requested. If unspecified, server will pick an appropriate default.
+ *
+ * Generated from protobuf field int32 page_size = 2 [(.google.api.field_behavior) = OPTIONAL];
+ * @return int
+ */
+ public function getPageSize()
+ {
+ return $this->page_size;
+ }
+
+ /**
+ * Optional. Requested page size. Server may return fewer items than
+ * requested. If unspecified, server will pick an appropriate default.
+ *
+ * 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. A token identifying a page of results the server should return.
+ *
+ * Generated from protobuf field string page_token = 3 [(.google.api.field_behavior) = OPTIONAL];
+ * @return string
+ */
+ public function getPageToken()
+ {
+ return $this->page_token;
+ }
+
+ /**
+ * Optional. A token identifying a page of results the server should return.
+ *
+ * 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 result QuotaPreferences by their state, type,
+ * create/update time range.
+ * Example filters:
+ * `reconciling=true AND request_type=CLOUD_CONSOLE`,
+ * `reconciling=true OR creation_time>2022-12-03T10:30:00`
+ *
+ * Generated from protobuf field string filter = 4 [(.google.api.field_behavior) = OPTIONAL];
+ * @return string
+ */
+ public function getFilter()
+ {
+ return $this->filter;
+ }
+
+ /**
+ * Optional. Filter result QuotaPreferences by their state, type,
+ * create/update time range.
+ * Example filters:
+ * `reconciling=true AND request_type=CLOUD_CONSOLE`,
+ * `reconciling=true OR creation_time>2022-12-03T10:30:00`
+ *
+ * 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;
+ }
+
+ /**
+ * Optional. How to order of the results. By default, the results are ordered
+ * by create time.
+ * Example orders:
+ * `quota_id`,
+ * `service, create_time`
+ *
+ * Generated from protobuf field string order_by = 5 [(.google.api.field_behavior) = OPTIONAL];
+ * @return string
+ */
+ public function getOrderBy()
+ {
+ return $this->order_by;
+ }
+
+ /**
+ * Optional. How to order of the results. By default, the results are ordered
+ * by create time.
+ * Example orders:
+ * `quota_id`,
+ * `service, create_time`
+ *
+ * Generated from protobuf field string order_by = 5 [(.google.api.field_behavior) = OPTIONAL];
+ * @param string $var
+ * @return $this
+ */
+ public function setOrderBy($var)
+ {
+ GPBUtil::checkString($var, True);
+ $this->order_by = $var;
+
+ return $this;
+ }
+
+}
+
diff --git a/owl-bot-staging/Quotas/v1/proto/src/Google/Cloud/CloudQuotas/V1/ListQuotaPreferencesResponse.php b/owl-bot-staging/Quotas/v1/proto/src/Google/Cloud/CloudQuotas/V1/ListQuotaPreferencesResponse.php
new file mode 100644
index 000000000000..123679124c15
--- /dev/null
+++ b/owl-bot-staging/Quotas/v1/proto/src/Google/Cloud/CloudQuotas/V1/ListQuotaPreferencesResponse.php
@@ -0,0 +1,139 @@
+google.api.cloudquotas.v1.ListQuotaPreferencesResponse
+ */
+class ListQuotaPreferencesResponse extends \Google\Protobuf\Internal\Message
+{
+ /**
+ * The list of QuotaPreference
+ *
+ * Generated from protobuf field repeated .google.api.cloudquotas.v1.QuotaPreference quota_preferences = 1;
+ */
+ private $quota_preferences;
+ /**
+ * A token, which can be sent as `page_token` to retrieve the next page.
+ * If this field is omitted, there are no subsequent pages.
+ *
+ * Generated from protobuf field string next_page_token = 2;
+ */
+ protected $next_page_token = '';
+ /**
+ * Locations that could not be reached.
+ *
+ * Generated from protobuf field repeated string unreachable = 3;
+ */
+ private $unreachable;
+
+ /**
+ * Constructor.
+ *
+ * @param array $data {
+ * Optional. Data for populating the Message object.
+ *
+ * @type array<\Google\Cloud\CloudQuotas\V1\QuotaPreference>|\Google\Protobuf\Internal\RepeatedField $quota_preferences
+ * The list of QuotaPreference
+ * @type string $next_page_token
+ * A token, which can be sent as `page_token` to retrieve the next page.
+ * If this field is omitted, there are no subsequent pages.
+ * @type array|\Google\Protobuf\Internal\RepeatedField $unreachable
+ * Locations that could not be reached.
+ * }
+ */
+ public function __construct($data = NULL) {
+ \GPBMetadata\Google\Api\Cloudquotas\V1\Cloudquotas::initOnce();
+ parent::__construct($data);
+ }
+
+ /**
+ * The list of QuotaPreference
+ *
+ * Generated from protobuf field repeated .google.api.cloudquotas.v1.QuotaPreference quota_preferences = 1;
+ * @return \Google\Protobuf\Internal\RepeatedField
+ */
+ public function getQuotaPreferences()
+ {
+ return $this->quota_preferences;
+ }
+
+ /**
+ * The list of QuotaPreference
+ *
+ * Generated from protobuf field repeated .google.api.cloudquotas.v1.QuotaPreference quota_preferences = 1;
+ * @param array<\Google\Cloud\CloudQuotas\V1\QuotaPreference>|\Google\Protobuf\Internal\RepeatedField $var
+ * @return $this
+ */
+ public function setQuotaPreferences($var)
+ {
+ $arr = GPBUtil::checkRepeatedField($var, \Google\Protobuf\Internal\GPBType::MESSAGE, \Google\Cloud\CloudQuotas\V1\QuotaPreference::class);
+ $this->quota_preferences = $arr;
+
+ return $this;
+ }
+
+ /**
+ * A token, which can be sent as `page_token` to retrieve the next page.
+ * If this field is omitted, there are no subsequent pages.
+ *
+ * Generated from protobuf field string next_page_token = 2;
+ * @return string
+ */
+ public function getNextPageToken()
+ {
+ return $this->next_page_token;
+ }
+
+ /**
+ * A token, which can be sent as `page_token` to retrieve the next page.
+ * If this field is omitted, there are no subsequent pages.
+ *
+ * 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;
+ }
+
+ /**
+ * Locations that could not be reached.
+ *
+ * Generated from protobuf field repeated string unreachable = 3;
+ * @return \Google\Protobuf\Internal\RepeatedField
+ */
+ public function getUnreachable()
+ {
+ return $this->unreachable;
+ }
+
+ /**
+ * Locations that could not be reached.
+ *
+ * Generated from protobuf field repeated string unreachable = 3;
+ * @param array|\Google\Protobuf\Internal\RepeatedField $var
+ * @return $this
+ */
+ public function setUnreachable($var)
+ {
+ $arr = GPBUtil::checkRepeatedField($var, \Google\Protobuf\Internal\GPBType::STRING);
+ $this->unreachable = $arr;
+
+ return $this;
+ }
+
+}
+
diff --git a/owl-bot-staging/Quotas/v1/proto/src/Google/Cloud/CloudQuotas/V1/QuotaConfig.php b/owl-bot-staging/Quotas/v1/proto/src/Google/Cloud/CloudQuotas/V1/QuotaConfig.php
new file mode 100644
index 000000000000..d1eadeec4495
--- /dev/null
+++ b/owl-bot-staging/Quotas/v1/proto/src/Google/Cloud/CloudQuotas/V1/QuotaConfig.php
@@ -0,0 +1,302 @@
+google.api.cloudquotas.v1.QuotaConfig
+ */
+class QuotaConfig extends \Google\Protobuf\Internal\Message
+{
+ /**
+ * Required. The preferred value. Must be greater than or equal to -1. If set
+ * to -1, it means the value is "unlimited".
+ *
+ * Generated from protobuf field int64 preferred_value = 1 [(.google.api.field_behavior) = REQUIRED];
+ */
+ protected $preferred_value = 0;
+ /**
+ * Output only. Optional details about the state of this quota preference.
+ *
+ * Generated from protobuf field string state_detail = 2 [(.google.api.field_behavior) = OUTPUT_ONLY];
+ */
+ protected $state_detail = '';
+ /**
+ * Output only. Granted quota value.
+ *
+ * Generated from protobuf field .google.protobuf.Int64Value granted_value = 3 [(.google.api.field_behavior) = OUTPUT_ONLY];
+ */
+ protected $granted_value = null;
+ /**
+ * Output only. The trace id that the Google Cloud uses to provision the
+ * requested quota. This trace id may be used by the client to contact Cloud
+ * support to track the state of a quota preference request. The trace id is
+ * only produced for increase requests and is unique for each request. The
+ * quota decrease requests do not have a trace id.
+ *
+ * Generated from protobuf field string trace_id = 4 [(.google.api.field_behavior) = OUTPUT_ONLY];
+ */
+ protected $trace_id = '';
+ /**
+ * Optional. The annotations map for clients to store small amounts of
+ * arbitrary data. Do not put PII or other sensitive information here. See
+ * https://google.aip.dev/128#annotations
+ *
+ * Generated from protobuf field map annotations = 5 [(.google.api.field_behavior) = OPTIONAL];
+ */
+ private $annotations;
+ /**
+ * Output only. The origin of the quota preference request.
+ *
+ * Generated from protobuf field .google.api.cloudquotas.v1.QuotaConfig.Origin request_origin = 6 [(.google.api.field_behavior) = OUTPUT_ONLY];
+ */
+ protected $request_origin = 0;
+
+ /**
+ * Constructor.
+ *
+ * @param array $data {
+ * Optional. Data for populating the Message object.
+ *
+ * @type int|string $preferred_value
+ * Required. The preferred value. Must be greater than or equal to -1. If set
+ * to -1, it means the value is "unlimited".
+ * @type string $state_detail
+ * Output only. Optional details about the state of this quota preference.
+ * @type \Google\Protobuf\Int64Value $granted_value
+ * Output only. Granted quota value.
+ * @type string $trace_id
+ * Output only. The trace id that the Google Cloud uses to provision the
+ * requested quota. This trace id may be used by the client to contact Cloud
+ * support to track the state of a quota preference request. The trace id is
+ * only produced for increase requests and is unique for each request. The
+ * quota decrease requests do not have a trace id.
+ * @type array|\Google\Protobuf\Internal\MapField $annotations
+ * Optional. The annotations map for clients to store small amounts of
+ * arbitrary data. Do not put PII or other sensitive information here. See
+ * https://google.aip.dev/128#annotations
+ * @type int $request_origin
+ * Output only. The origin of the quota preference request.
+ * }
+ */
+ public function __construct($data = NULL) {
+ \GPBMetadata\Google\Api\Cloudquotas\V1\Resources::initOnce();
+ parent::__construct($data);
+ }
+
+ /**
+ * Required. The preferred value. Must be greater than or equal to -1. If set
+ * to -1, it means the value is "unlimited".
+ *
+ * Generated from protobuf field int64 preferred_value = 1 [(.google.api.field_behavior) = REQUIRED];
+ * @return int|string
+ */
+ public function getPreferredValue()
+ {
+ return $this->preferred_value;
+ }
+
+ /**
+ * Required. The preferred value. Must be greater than or equal to -1. If set
+ * to -1, it means the value is "unlimited".
+ *
+ * Generated from protobuf field int64 preferred_value = 1 [(.google.api.field_behavior) = REQUIRED];
+ * @param int|string $var
+ * @return $this
+ */
+ public function setPreferredValue($var)
+ {
+ GPBUtil::checkInt64($var);
+ $this->preferred_value = $var;
+
+ return $this;
+ }
+
+ /**
+ * Output only. Optional details about the state of this quota preference.
+ *
+ * Generated from protobuf field string state_detail = 2 [(.google.api.field_behavior) = OUTPUT_ONLY];
+ * @return string
+ */
+ public function getStateDetail()
+ {
+ return $this->state_detail;
+ }
+
+ /**
+ * Output only. Optional details about the state of this quota preference.
+ *
+ * Generated from protobuf field string state_detail = 2 [(.google.api.field_behavior) = OUTPUT_ONLY];
+ * @param string $var
+ * @return $this
+ */
+ public function setStateDetail($var)
+ {
+ GPBUtil::checkString($var, True);
+ $this->state_detail = $var;
+
+ return $this;
+ }
+
+ /**
+ * Output only. Granted quota value.
+ *
+ * Generated from protobuf field .google.protobuf.Int64Value granted_value = 3 [(.google.api.field_behavior) = OUTPUT_ONLY];
+ * @return \Google\Protobuf\Int64Value|null
+ */
+ public function getGrantedValue()
+ {
+ return $this->granted_value;
+ }
+
+ public function hasGrantedValue()
+ {
+ return isset($this->granted_value);
+ }
+
+ public function clearGrantedValue()
+ {
+ unset($this->granted_value);
+ }
+
+ /**
+ * Returns the unboxed value from getGrantedValue()
+
+ * Output only. Granted quota value.
+ *
+ * Generated from protobuf field .google.protobuf.Int64Value granted_value = 3 [(.google.api.field_behavior) = OUTPUT_ONLY];
+ * @return int|string|null
+ */
+ public function getGrantedValueUnwrapped()
+ {
+ return $this->readWrapperValue("granted_value");
+ }
+
+ /**
+ * Output only. Granted quota value.
+ *
+ * Generated from protobuf field .google.protobuf.Int64Value granted_value = 3 [(.google.api.field_behavior) = OUTPUT_ONLY];
+ * @param \Google\Protobuf\Int64Value $var
+ * @return $this
+ */
+ public function setGrantedValue($var)
+ {
+ GPBUtil::checkMessage($var, \Google\Protobuf\Int64Value::class);
+ $this->granted_value = $var;
+
+ return $this;
+ }
+
+ /**
+ * Sets the field by wrapping a primitive type in a Google\Protobuf\Int64Value object.
+
+ * Output only. Granted quota value.
+ *
+ * Generated from protobuf field .google.protobuf.Int64Value granted_value = 3 [(.google.api.field_behavior) = OUTPUT_ONLY];
+ * @param int|string|null $var
+ * @return $this
+ */
+ public function setGrantedValueUnwrapped($var)
+ {
+ $this->writeWrapperValue("granted_value", $var);
+ return $this;}
+
+ /**
+ * Output only. The trace id that the Google Cloud uses to provision the
+ * requested quota. This trace id may be used by the client to contact Cloud
+ * support to track the state of a quota preference request. The trace id is
+ * only produced for increase requests and is unique for each request. The
+ * quota decrease requests do not have a trace id.
+ *
+ * Generated from protobuf field string trace_id = 4 [(.google.api.field_behavior) = OUTPUT_ONLY];
+ * @return string
+ */
+ public function getTraceId()
+ {
+ return $this->trace_id;
+ }
+
+ /**
+ * Output only. The trace id that the Google Cloud uses to provision the
+ * requested quota. This trace id may be used by the client to contact Cloud
+ * support to track the state of a quota preference request. The trace id is
+ * only produced for increase requests and is unique for each request. The
+ * quota decrease requests do not have a trace id.
+ *
+ * Generated from protobuf field string trace_id = 4 [(.google.api.field_behavior) = OUTPUT_ONLY];
+ * @param string $var
+ * @return $this
+ */
+ public function setTraceId($var)
+ {
+ GPBUtil::checkString($var, True);
+ $this->trace_id = $var;
+
+ return $this;
+ }
+
+ /**
+ * Optional. The annotations map for clients to store small amounts of
+ * arbitrary data. Do not put PII or other sensitive information here. See
+ * https://google.aip.dev/128#annotations
+ *
+ * Generated from protobuf field map annotations = 5 [(.google.api.field_behavior) = OPTIONAL];
+ * @return \Google\Protobuf\Internal\MapField
+ */
+ public function getAnnotations()
+ {
+ return $this->annotations;
+ }
+
+ /**
+ * Optional. The annotations map for clients to store small amounts of
+ * arbitrary data. Do not put PII or other sensitive information here. See
+ * https://google.aip.dev/128#annotations
+ *
+ * Generated from protobuf field map annotations = 5 [(.google.api.field_behavior) = OPTIONAL];
+ * @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;
+ }
+
+ /**
+ * Output only. The origin of the quota preference request.
+ *
+ * Generated from protobuf field .google.api.cloudquotas.v1.QuotaConfig.Origin request_origin = 6 [(.google.api.field_behavior) = OUTPUT_ONLY];
+ * @return int
+ */
+ public function getRequestOrigin()
+ {
+ return $this->request_origin;
+ }
+
+ /**
+ * Output only. The origin of the quota preference request.
+ *
+ * Generated from protobuf field .google.api.cloudquotas.v1.QuotaConfig.Origin request_origin = 6 [(.google.api.field_behavior) = OUTPUT_ONLY];
+ * @param int $var
+ * @return $this
+ */
+ public function setRequestOrigin($var)
+ {
+ GPBUtil::checkEnum($var, \Google\Cloud\CloudQuotas\V1\QuotaConfig\Origin::class);
+ $this->request_origin = $var;
+
+ return $this;
+ }
+
+}
+
diff --git a/owl-bot-staging/Quotas/v1/proto/src/Google/Cloud/CloudQuotas/V1/QuotaConfig/Origin.php b/owl-bot-staging/Quotas/v1/proto/src/Google/Cloud/CloudQuotas/V1/QuotaConfig/Origin.php
new file mode 100644
index 000000000000..e4945a8aba16
--- /dev/null
+++ b/owl-bot-staging/Quotas/v1/proto/src/Google/Cloud/CloudQuotas/V1/QuotaConfig/Origin.php
@@ -0,0 +1,64 @@
+google.api.cloudquotas.v1.QuotaConfig.Origin
+ */
+class Origin
+{
+ /**
+ * The unspecified value.
+ *
+ * Generated from protobuf enum ORIGIN_UNSPECIFIED = 0;
+ */
+ const ORIGIN_UNSPECIFIED = 0;
+ /**
+ * Created through Cloud Console.
+ *
+ * Generated from protobuf enum CLOUD_CONSOLE = 1;
+ */
+ const CLOUD_CONSOLE = 1;
+ /**
+ * Generated by automatic quota adjustment.
+ *
+ * Generated from protobuf enum AUTO_ADJUSTER = 2;
+ */
+ const AUTO_ADJUSTER = 2;
+
+ private static $valueToName = [
+ self::ORIGIN_UNSPECIFIED => 'ORIGIN_UNSPECIFIED',
+ self::CLOUD_CONSOLE => 'CLOUD_CONSOLE',
+ self::AUTO_ADJUSTER => 'AUTO_ADJUSTER',
+ ];
+
+ 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(Origin::class, \Google\Cloud\CloudQuotas\V1\QuotaConfig_Origin::class);
+
diff --git a/owl-bot-staging/Quotas/v1/proto/src/Google/Cloud/CloudQuotas/V1/QuotaDetails.php b/owl-bot-staging/Quotas/v1/proto/src/Google/Cloud/CloudQuotas/V1/QuotaDetails.php
new file mode 100644
index 000000000000..989b3f46d03b
--- /dev/null
+++ b/owl-bot-staging/Quotas/v1/proto/src/Google/Cloud/CloudQuotas/V1/QuotaDetails.php
@@ -0,0 +1,119 @@
+google.api.cloudquotas.v1.QuotaDetails
+ */
+class QuotaDetails extends \Google\Protobuf\Internal\Message
+{
+ /**
+ * The value currently in effect and being enforced.
+ *
+ * Generated from protobuf field int64 value = 1;
+ */
+ protected $value = 0;
+ /**
+ * Rollout information of this quota.
+ * This field is present only if the effective limit will change due to the
+ * ongoing rollout of the service config.
+ *
+ * Generated from protobuf field .google.api.cloudquotas.v1.RolloutInfo rollout_info = 3;
+ */
+ protected $rollout_info = null;
+
+ /**
+ * Constructor.
+ *
+ * @param array $data {
+ * Optional. Data for populating the Message object.
+ *
+ * @type int|string $value
+ * The value currently in effect and being enforced.
+ * @type \Google\Cloud\CloudQuotas\V1\RolloutInfo $rollout_info
+ * Rollout information of this quota.
+ * This field is present only if the effective limit will change due to the
+ * ongoing rollout of the service config.
+ * }
+ */
+ public function __construct($data = NULL) {
+ \GPBMetadata\Google\Api\Cloudquotas\V1\Resources::initOnce();
+ parent::__construct($data);
+ }
+
+ /**
+ * The value currently in effect and being enforced.
+ *
+ * Generated from protobuf field int64 value = 1;
+ * @return int|string
+ */
+ public function getValue()
+ {
+ return $this->value;
+ }
+
+ /**
+ * The value currently in effect and being enforced.
+ *
+ * Generated from protobuf field int64 value = 1;
+ * @param int|string $var
+ * @return $this
+ */
+ public function setValue($var)
+ {
+ GPBUtil::checkInt64($var);
+ $this->value = $var;
+
+ return $this;
+ }
+
+ /**
+ * Rollout information of this quota.
+ * This field is present only if the effective limit will change due to the
+ * ongoing rollout of the service config.
+ *
+ * Generated from protobuf field .google.api.cloudquotas.v1.RolloutInfo rollout_info = 3;
+ * @return \Google\Cloud\CloudQuotas\V1\RolloutInfo|null
+ */
+ public function getRolloutInfo()
+ {
+ return $this->rollout_info;
+ }
+
+ public function hasRolloutInfo()
+ {
+ return isset($this->rollout_info);
+ }
+
+ public function clearRolloutInfo()
+ {
+ unset($this->rollout_info);
+ }
+
+ /**
+ * Rollout information of this quota.
+ * This field is present only if the effective limit will change due to the
+ * ongoing rollout of the service config.
+ *
+ * Generated from protobuf field .google.api.cloudquotas.v1.RolloutInfo rollout_info = 3;
+ * @param \Google\Cloud\CloudQuotas\V1\RolloutInfo $var
+ * @return $this
+ */
+ public function setRolloutInfo($var)
+ {
+ GPBUtil::checkMessage($var, \Google\Cloud\CloudQuotas\V1\RolloutInfo::class);
+ $this->rollout_info = $var;
+
+ return $this;
+ }
+
+}
+
diff --git a/owl-bot-staging/Quotas/v1/proto/src/Google/Cloud/CloudQuotas/V1/QuotaIncreaseEligibility.php b/owl-bot-staging/Quotas/v1/proto/src/Google/Cloud/CloudQuotas/V1/QuotaIncreaseEligibility.php
new file mode 100644
index 000000000000..daf06c473eb6
--- /dev/null
+++ b/owl-bot-staging/Quotas/v1/proto/src/Google/Cloud/CloudQuotas/V1/QuotaIncreaseEligibility.php
@@ -0,0 +1,109 @@
+google.api.cloudquotas.v1.QuotaIncreaseEligibility
+ */
+class QuotaIncreaseEligibility extends \Google\Protobuf\Internal\Message
+{
+ /**
+ * Whether a higher quota value can be requested for the quota.
+ *
+ * Generated from protobuf field bool is_eligible = 1;
+ */
+ protected $is_eligible = false;
+ /**
+ * The reason of why it is ineligible to request increased value of the quota.
+ * If the is_eligible field is true, it defaults to
+ * INELIGIBILITY_REASON_UNSPECIFIED.
+ *
+ * Generated from protobuf field .google.api.cloudquotas.v1.QuotaIncreaseEligibility.IneligibilityReason ineligibility_reason = 2;
+ */
+ protected $ineligibility_reason = 0;
+
+ /**
+ * Constructor.
+ *
+ * @param array $data {
+ * Optional. Data for populating the Message object.
+ *
+ * @type bool $is_eligible
+ * Whether a higher quota value can be requested for the quota.
+ * @type int $ineligibility_reason
+ * The reason of why it is ineligible to request increased value of the quota.
+ * If the is_eligible field is true, it defaults to
+ * INELIGIBILITY_REASON_UNSPECIFIED.
+ * }
+ */
+ public function __construct($data = NULL) {
+ \GPBMetadata\Google\Api\Cloudquotas\V1\Resources::initOnce();
+ parent::__construct($data);
+ }
+
+ /**
+ * Whether a higher quota value can be requested for the quota.
+ *
+ * Generated from protobuf field bool is_eligible = 1;
+ * @return bool
+ */
+ public function getIsEligible()
+ {
+ return $this->is_eligible;
+ }
+
+ /**
+ * Whether a higher quota value can be requested for the quota.
+ *
+ * Generated from protobuf field bool is_eligible = 1;
+ * @param bool $var
+ * @return $this
+ */
+ public function setIsEligible($var)
+ {
+ GPBUtil::checkBool($var);
+ $this->is_eligible = $var;
+
+ return $this;
+ }
+
+ /**
+ * The reason of why it is ineligible to request increased value of the quota.
+ * If the is_eligible field is true, it defaults to
+ * INELIGIBILITY_REASON_UNSPECIFIED.
+ *
+ * Generated from protobuf field .google.api.cloudquotas.v1.QuotaIncreaseEligibility.IneligibilityReason ineligibility_reason = 2;
+ * @return int
+ */
+ public function getIneligibilityReason()
+ {
+ return $this->ineligibility_reason;
+ }
+
+ /**
+ * The reason of why it is ineligible to request increased value of the quota.
+ * If the is_eligible field is true, it defaults to
+ * INELIGIBILITY_REASON_UNSPECIFIED.
+ *
+ * Generated from protobuf field .google.api.cloudquotas.v1.QuotaIncreaseEligibility.IneligibilityReason ineligibility_reason = 2;
+ * @param int $var
+ * @return $this
+ */
+ public function setIneligibilityReason($var)
+ {
+ GPBUtil::checkEnum($var, \Google\Cloud\CloudQuotas\V1\QuotaIncreaseEligibility\IneligibilityReason::class);
+ $this->ineligibility_reason = $var;
+
+ return $this;
+ }
+
+}
+
diff --git a/owl-bot-staging/Quotas/v1/proto/src/Google/Cloud/CloudQuotas/V1/QuotaIncreaseEligibility/IneligibilityReason.php b/owl-bot-staging/Quotas/v1/proto/src/Google/Cloud/CloudQuotas/V1/QuotaIncreaseEligibility/IneligibilityReason.php
new file mode 100644
index 000000000000..e4861a1587df
--- /dev/null
+++ b/owl-bot-staging/Quotas/v1/proto/src/Google/Cloud/CloudQuotas/V1/QuotaIncreaseEligibility/IneligibilityReason.php
@@ -0,0 +1,79 @@
+google.api.cloudquotas.v1.QuotaIncreaseEligibility.IneligibilityReason
+ */
+class IneligibilityReason
+{
+ /**
+ * Default value when is_eligible is true.
+ *
+ * Generated from protobuf enum INELIGIBILITY_REASON_UNSPECIFIED = 0;
+ */
+ const INELIGIBILITY_REASON_UNSPECIFIED = 0;
+ /**
+ * The container is not linked with a valid billing account.
+ *
+ * Generated from protobuf enum NO_VALID_BILLING_ACCOUNT = 1;
+ */
+ const NO_VALID_BILLING_ACCOUNT = 1;
+ /**
+ * Quota increase is not supported for the quota.
+ *
+ * Generated from protobuf enum NOT_SUPPORTED = 3;
+ */
+ const NOT_SUPPORTED = 3;
+ /**
+ * There is not enough usage history to determine the eligibility.
+ *
+ * Generated from protobuf enum NOT_ENOUGH_USAGE_HISTORY = 4;
+ */
+ const NOT_ENOUGH_USAGE_HISTORY = 4;
+ /**
+ * Other reasons.
+ *
+ * Generated from protobuf enum OTHER = 2;
+ */
+ const OTHER = 2;
+
+ private static $valueToName = [
+ self::INELIGIBILITY_REASON_UNSPECIFIED => 'INELIGIBILITY_REASON_UNSPECIFIED',
+ self::NO_VALID_BILLING_ACCOUNT => 'NO_VALID_BILLING_ACCOUNT',
+ self::NOT_SUPPORTED => 'NOT_SUPPORTED',
+ self::NOT_ENOUGH_USAGE_HISTORY => 'NOT_ENOUGH_USAGE_HISTORY',
+ self::OTHER => 'OTHER',
+ ];
+
+ 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(IneligibilityReason::class, \Google\Cloud\CloudQuotas\V1\QuotaIncreaseEligibility_IneligibilityReason::class);
+
diff --git a/owl-bot-staging/Quotas/v1/proto/src/Google/Cloud/CloudQuotas/V1/QuotaInfo.php b/owl-bot-staging/Quotas/v1/proto/src/Google/Cloud/CloudQuotas/V1/QuotaInfo.php
new file mode 100644
index 000000000000..6de76fb1156f
--- /dev/null
+++ b/owl-bot-staging/Quotas/v1/proto/src/Google/Cloud/CloudQuotas/V1/QuotaInfo.php
@@ -0,0 +1,648 @@
+google.api.cloudquotas.v1.QuotaInfo
+ */
+class QuotaInfo extends \Google\Protobuf\Internal\Message
+{
+ /**
+ * Resource name of this QuotaInfo.
+ * The ID component following "locations/" must be "global".
+ * Example:
+ * `projects/123/locations/global/services/compute.googleapis.com/quotaInfos/CpusPerProjectPerRegion`
+ *
+ * Generated from protobuf field string name = 1;
+ */
+ protected $name = '';
+ /**
+ * The id of the quota, which is unquie within the service.
+ * Example: `CpusPerProjectPerRegion`
+ *
+ * Generated from protobuf field string quota_id = 2;
+ */
+ protected $quota_id = '';
+ /**
+ * The metric of the quota. It specifies the resources consumption the quota
+ * is defined for.
+ * Example: `compute.googleapis.com/cpus`
+ *
+ * Generated from protobuf field string metric = 3;
+ */
+ protected $metric = '';
+ /**
+ * The name of the service in which the quota is defined.
+ * Example: `compute.googleapis.com`
+ *
+ * Generated from protobuf field string service = 4;
+ */
+ protected $service = '';
+ /**
+ * Whether this is a precise quota. A precise quota is tracked with absolute
+ * precision. In contrast, an imprecise quota is not tracked with precision.
+ *
+ * Generated from protobuf field bool is_precise = 5;
+ */
+ protected $is_precise = false;
+ /**
+ * The reset time interval for the quota. Refresh interval applies to rate
+ * quota only.
+ * Example: "minute" for per minute, "day" for per day, or "10 seconds" for
+ * every 10 seconds.
+ *
+ * Generated from protobuf field string refresh_interval = 6;
+ */
+ protected $refresh_interval = '';
+ /**
+ * The container type of the QuotaInfo.
+ *
+ * Generated from protobuf field .google.api.cloudquotas.v1.QuotaInfo.ContainerType container_type = 7;
+ */
+ protected $container_type = 0;
+ /**
+ * The dimensions the quota is defined on.
+ *
+ * Generated from protobuf field repeated string dimensions = 8;
+ */
+ private $dimensions;
+ /**
+ * The display name of the quota metric
+ *
+ * Generated from protobuf field string metric_display_name = 9;
+ */
+ protected $metric_display_name = '';
+ /**
+ * The display name of the quota.
+ *
+ * Generated from protobuf field string quota_display_name = 10;
+ */
+ protected $quota_display_name = '';
+ /**
+ * The unit in which the metric value is reported, e.g., "MByte".
+ *
+ * Generated from protobuf field string metric_unit = 11;
+ */
+ protected $metric_unit = '';
+ /**
+ * Whether it is eligible to request a higher quota value for this quota.
+ *
+ * Generated from protobuf field .google.api.cloudquotas.v1.QuotaIncreaseEligibility quota_increase_eligibility = 12;
+ */
+ protected $quota_increase_eligibility = null;
+ /**
+ * Whether the quota value is fixed or adjustable
+ *
+ * Generated from protobuf field bool is_fixed = 13;
+ */
+ protected $is_fixed = false;
+ /**
+ * The collection of dimensions info ordered by their dimensions from more
+ * specific ones to less specific ones.
+ *
+ * Generated from protobuf field repeated .google.api.cloudquotas.v1.DimensionsInfo dimensions_infos = 14;
+ */
+ private $dimensions_infos;
+ /**
+ * Whether the quota is a concurrent quota. Concurrent quotas are enforced
+ * on the total number of concurrent operations in flight at any given time.
+ *
+ * Generated from protobuf field bool is_concurrent = 15;
+ */
+ protected $is_concurrent = false;
+ /**
+ * URI to the page where users can request more quota for the cloud
+ * service—for example,
+ * https://console.cloud.google.com/iam-admin/quotas.
+ *
+ * Generated from protobuf field string service_request_quota_uri = 17;
+ */
+ protected $service_request_quota_uri = '';
+
+ /**
+ * Constructor.
+ *
+ * @param array $data {
+ * Optional. Data for populating the Message object.
+ *
+ * @type string $name
+ * Resource name of this QuotaInfo.
+ * The ID component following "locations/" must be "global".
+ * Example:
+ * `projects/123/locations/global/services/compute.googleapis.com/quotaInfos/CpusPerProjectPerRegion`
+ * @type string $quota_id
+ * The id of the quota, which is unquie within the service.
+ * Example: `CpusPerProjectPerRegion`
+ * @type string $metric
+ * The metric of the quota. It specifies the resources consumption the quota
+ * is defined for.
+ * Example: `compute.googleapis.com/cpus`
+ * @type string $service
+ * The name of the service in which the quota is defined.
+ * Example: `compute.googleapis.com`
+ * @type bool $is_precise
+ * Whether this is a precise quota. A precise quota is tracked with absolute
+ * precision. In contrast, an imprecise quota is not tracked with precision.
+ * @type string $refresh_interval
+ * The reset time interval for the quota. Refresh interval applies to rate
+ * quota only.
+ * Example: "minute" for per minute, "day" for per day, or "10 seconds" for
+ * every 10 seconds.
+ * @type int $container_type
+ * The container type of the QuotaInfo.
+ * @type array|\Google\Protobuf\Internal\RepeatedField $dimensions
+ * The dimensions the quota is defined on.
+ * @type string $metric_display_name
+ * The display name of the quota metric
+ * @type string $quota_display_name
+ * The display name of the quota.
+ * @type string $metric_unit
+ * The unit in which the metric value is reported, e.g., "MByte".
+ * @type \Google\Cloud\CloudQuotas\V1\QuotaIncreaseEligibility $quota_increase_eligibility
+ * Whether it is eligible to request a higher quota value for this quota.
+ * @type bool $is_fixed
+ * Whether the quota value is fixed or adjustable
+ * @type array<\Google\Cloud\CloudQuotas\V1\DimensionsInfo>|\Google\Protobuf\Internal\RepeatedField $dimensions_infos
+ * The collection of dimensions info ordered by their dimensions from more
+ * specific ones to less specific ones.
+ * @type bool $is_concurrent
+ * Whether the quota is a concurrent quota. Concurrent quotas are enforced
+ * on the total number of concurrent operations in flight at any given time.
+ * @type string $service_request_quota_uri
+ * URI to the page where users can request more quota for the cloud
+ * service—for example,
+ * https://console.cloud.google.com/iam-admin/quotas.
+ * }
+ */
+ public function __construct($data = NULL) {
+ \GPBMetadata\Google\Api\Cloudquotas\V1\Resources::initOnce();
+ parent::__construct($data);
+ }
+
+ /**
+ * Resource name of this QuotaInfo.
+ * The ID component following "locations/" must be "global".
+ * Example:
+ * `projects/123/locations/global/services/compute.googleapis.com/quotaInfos/CpusPerProjectPerRegion`
+ *
+ * Generated from protobuf field string name = 1;
+ * @return string
+ */
+ public function getName()
+ {
+ return $this->name;
+ }
+
+ /**
+ * Resource name of this QuotaInfo.
+ * The ID component following "locations/" must be "global".
+ * Example:
+ * `projects/123/locations/global/services/compute.googleapis.com/quotaInfos/CpusPerProjectPerRegion`
+ *
+ * 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;
+ }
+
+ /**
+ * The id of the quota, which is unquie within the service.
+ * Example: `CpusPerProjectPerRegion`
+ *
+ * Generated from protobuf field string quota_id = 2;
+ * @return string
+ */
+ public function getQuotaId()
+ {
+ return $this->quota_id;
+ }
+
+ /**
+ * The id of the quota, which is unquie within the service.
+ * Example: `CpusPerProjectPerRegion`
+ *
+ * Generated from protobuf field string quota_id = 2;
+ * @param string $var
+ * @return $this
+ */
+ public function setQuotaId($var)
+ {
+ GPBUtil::checkString($var, True);
+ $this->quota_id = $var;
+
+ return $this;
+ }
+
+ /**
+ * The metric of the quota. It specifies the resources consumption the quota
+ * is defined for.
+ * Example: `compute.googleapis.com/cpus`
+ *
+ * Generated from protobuf field string metric = 3;
+ * @return string
+ */
+ public function getMetric()
+ {
+ return $this->metric;
+ }
+
+ /**
+ * The metric of the quota. It specifies the resources consumption the quota
+ * is defined for.
+ * Example: `compute.googleapis.com/cpus`
+ *
+ * Generated from protobuf field string metric = 3;
+ * @param string $var
+ * @return $this
+ */
+ public function setMetric($var)
+ {
+ GPBUtil::checkString($var, True);
+ $this->metric = $var;
+
+ return $this;
+ }
+
+ /**
+ * The name of the service in which the quota is defined.
+ * Example: `compute.googleapis.com`
+ *
+ * Generated from protobuf field string service = 4;
+ * @return string
+ */
+ public function getService()
+ {
+ return $this->service;
+ }
+
+ /**
+ * The name of the service in which the quota is defined.
+ * Example: `compute.googleapis.com`
+ *
+ * Generated from protobuf field string service = 4;
+ * @param string $var
+ * @return $this
+ */
+ public function setService($var)
+ {
+ GPBUtil::checkString($var, True);
+ $this->service = $var;
+
+ return $this;
+ }
+
+ /**
+ * Whether this is a precise quota. A precise quota is tracked with absolute
+ * precision. In contrast, an imprecise quota is not tracked with precision.
+ *
+ * Generated from protobuf field bool is_precise = 5;
+ * @return bool
+ */
+ public function getIsPrecise()
+ {
+ return $this->is_precise;
+ }
+
+ /**
+ * Whether this is a precise quota. A precise quota is tracked with absolute
+ * precision. In contrast, an imprecise quota is not tracked with precision.
+ *
+ * Generated from protobuf field bool is_precise = 5;
+ * @param bool $var
+ * @return $this
+ */
+ public function setIsPrecise($var)
+ {
+ GPBUtil::checkBool($var);
+ $this->is_precise = $var;
+
+ return $this;
+ }
+
+ /**
+ * The reset time interval for the quota. Refresh interval applies to rate
+ * quota only.
+ * Example: "minute" for per minute, "day" for per day, or "10 seconds" for
+ * every 10 seconds.
+ *
+ * Generated from protobuf field string refresh_interval = 6;
+ * @return string
+ */
+ public function getRefreshInterval()
+ {
+ return $this->refresh_interval;
+ }
+
+ /**
+ * The reset time interval for the quota. Refresh interval applies to rate
+ * quota only.
+ * Example: "minute" for per minute, "day" for per day, or "10 seconds" for
+ * every 10 seconds.
+ *
+ * Generated from protobuf field string refresh_interval = 6;
+ * @param string $var
+ * @return $this
+ */
+ public function setRefreshInterval($var)
+ {
+ GPBUtil::checkString($var, True);
+ $this->refresh_interval = $var;
+
+ return $this;
+ }
+
+ /**
+ * The container type of the QuotaInfo.
+ *
+ * Generated from protobuf field .google.api.cloudquotas.v1.QuotaInfo.ContainerType container_type = 7;
+ * @return int
+ */
+ public function getContainerType()
+ {
+ return $this->container_type;
+ }
+
+ /**
+ * The container type of the QuotaInfo.
+ *
+ * Generated from protobuf field .google.api.cloudquotas.v1.QuotaInfo.ContainerType container_type = 7;
+ * @param int $var
+ * @return $this
+ */
+ public function setContainerType($var)
+ {
+ GPBUtil::checkEnum($var, \Google\Cloud\CloudQuotas\V1\QuotaInfo\ContainerType::class);
+ $this->container_type = $var;
+
+ return $this;
+ }
+
+ /**
+ * The dimensions the quota is defined on.
+ *
+ * Generated from protobuf field repeated string dimensions = 8;
+ * @return \Google\Protobuf\Internal\RepeatedField
+ */
+ public function getDimensions()
+ {
+ return $this->dimensions;
+ }
+
+ /**
+ * The dimensions the quota is defined on.
+ *
+ * Generated from protobuf field repeated string dimensions = 8;
+ * @param array|\Google\Protobuf\Internal\RepeatedField $var
+ * @return $this
+ */
+ public function setDimensions($var)
+ {
+ $arr = GPBUtil::checkRepeatedField($var, \Google\Protobuf\Internal\GPBType::STRING);
+ $this->dimensions = $arr;
+
+ return $this;
+ }
+
+ /**
+ * The display name of the quota metric
+ *
+ * Generated from protobuf field string metric_display_name = 9;
+ * @return string
+ */
+ public function getMetricDisplayName()
+ {
+ return $this->metric_display_name;
+ }
+
+ /**
+ * The display name of the quota metric
+ *
+ * Generated from protobuf field string metric_display_name = 9;
+ * @param string $var
+ * @return $this
+ */
+ public function setMetricDisplayName($var)
+ {
+ GPBUtil::checkString($var, True);
+ $this->metric_display_name = $var;
+
+ return $this;
+ }
+
+ /**
+ * The display name of the quota.
+ *
+ * Generated from protobuf field string quota_display_name = 10;
+ * @return string
+ */
+ public function getQuotaDisplayName()
+ {
+ return $this->quota_display_name;
+ }
+
+ /**
+ * The display name of the quota.
+ *
+ * Generated from protobuf field string quota_display_name = 10;
+ * @param string $var
+ * @return $this
+ */
+ public function setQuotaDisplayName($var)
+ {
+ GPBUtil::checkString($var, True);
+ $this->quota_display_name = $var;
+
+ return $this;
+ }
+
+ /**
+ * The unit in which the metric value is reported, e.g., "MByte".
+ *
+ * Generated from protobuf field string metric_unit = 11;
+ * @return string
+ */
+ public function getMetricUnit()
+ {
+ return $this->metric_unit;
+ }
+
+ /**
+ * The unit in which the metric value is reported, e.g., "MByte".
+ *
+ * Generated from protobuf field string metric_unit = 11;
+ * @param string $var
+ * @return $this
+ */
+ public function setMetricUnit($var)
+ {
+ GPBUtil::checkString($var, True);
+ $this->metric_unit = $var;
+
+ return $this;
+ }
+
+ /**
+ * Whether it is eligible to request a higher quota value for this quota.
+ *
+ * Generated from protobuf field .google.api.cloudquotas.v1.QuotaIncreaseEligibility quota_increase_eligibility = 12;
+ * @return \Google\Cloud\CloudQuotas\V1\QuotaIncreaseEligibility|null
+ */
+ public function getQuotaIncreaseEligibility()
+ {
+ return $this->quota_increase_eligibility;
+ }
+
+ public function hasQuotaIncreaseEligibility()
+ {
+ return isset($this->quota_increase_eligibility);
+ }
+
+ public function clearQuotaIncreaseEligibility()
+ {
+ unset($this->quota_increase_eligibility);
+ }
+
+ /**
+ * Whether it is eligible to request a higher quota value for this quota.
+ *
+ * Generated from protobuf field .google.api.cloudquotas.v1.QuotaIncreaseEligibility quota_increase_eligibility = 12;
+ * @param \Google\Cloud\CloudQuotas\V1\QuotaIncreaseEligibility $var
+ * @return $this
+ */
+ public function setQuotaIncreaseEligibility($var)
+ {
+ GPBUtil::checkMessage($var, \Google\Cloud\CloudQuotas\V1\QuotaIncreaseEligibility::class);
+ $this->quota_increase_eligibility = $var;
+
+ return $this;
+ }
+
+ /**
+ * Whether the quota value is fixed or adjustable
+ *
+ * Generated from protobuf field bool is_fixed = 13;
+ * @return bool
+ */
+ public function getIsFixed()
+ {
+ return $this->is_fixed;
+ }
+
+ /**
+ * Whether the quota value is fixed or adjustable
+ *
+ * Generated from protobuf field bool is_fixed = 13;
+ * @param bool $var
+ * @return $this
+ */
+ public function setIsFixed($var)
+ {
+ GPBUtil::checkBool($var);
+ $this->is_fixed = $var;
+
+ return $this;
+ }
+
+ /**
+ * The collection of dimensions info ordered by their dimensions from more
+ * specific ones to less specific ones.
+ *
+ * Generated from protobuf field repeated .google.api.cloudquotas.v1.DimensionsInfo dimensions_infos = 14;
+ * @return \Google\Protobuf\Internal\RepeatedField
+ */
+ public function getDimensionsInfos()
+ {
+ return $this->dimensions_infos;
+ }
+
+ /**
+ * The collection of dimensions info ordered by their dimensions from more
+ * specific ones to less specific ones.
+ *
+ * Generated from protobuf field repeated .google.api.cloudquotas.v1.DimensionsInfo dimensions_infos = 14;
+ * @param array<\Google\Cloud\CloudQuotas\V1\DimensionsInfo>|\Google\Protobuf\Internal\RepeatedField $var
+ * @return $this
+ */
+ public function setDimensionsInfos($var)
+ {
+ $arr = GPBUtil::checkRepeatedField($var, \Google\Protobuf\Internal\GPBType::MESSAGE, \Google\Cloud\CloudQuotas\V1\DimensionsInfo::class);
+ $this->dimensions_infos = $arr;
+
+ return $this;
+ }
+
+ /**
+ * Whether the quota is a concurrent quota. Concurrent quotas are enforced
+ * on the total number of concurrent operations in flight at any given time.
+ *
+ * Generated from protobuf field bool is_concurrent = 15;
+ * @return bool
+ */
+ public function getIsConcurrent()
+ {
+ return $this->is_concurrent;
+ }
+
+ /**
+ * Whether the quota is a concurrent quota. Concurrent quotas are enforced
+ * on the total number of concurrent operations in flight at any given time.
+ *
+ * Generated from protobuf field bool is_concurrent = 15;
+ * @param bool $var
+ * @return $this
+ */
+ public function setIsConcurrent($var)
+ {
+ GPBUtil::checkBool($var);
+ $this->is_concurrent = $var;
+
+ return $this;
+ }
+
+ /**
+ * URI to the page where users can request more quota for the cloud
+ * service—for example,
+ * https://console.cloud.google.com/iam-admin/quotas.
+ *
+ * Generated from protobuf field string service_request_quota_uri = 17;
+ * @return string
+ */
+ public function getServiceRequestQuotaUri()
+ {
+ return $this->service_request_quota_uri;
+ }
+
+ /**
+ * URI to the page where users can request more quota for the cloud
+ * service—for example,
+ * https://console.cloud.google.com/iam-admin/quotas.
+ *
+ * Generated from protobuf field string service_request_quota_uri = 17;
+ * @param string $var
+ * @return $this
+ */
+ public function setServiceRequestQuotaUri($var)
+ {
+ GPBUtil::checkString($var, True);
+ $this->service_request_quota_uri = $var;
+
+ return $this;
+ }
+
+}
+
diff --git a/owl-bot-staging/Quotas/v1/proto/src/Google/Cloud/CloudQuotas/V1/QuotaInfo/ContainerType.php b/owl-bot-staging/Quotas/v1/proto/src/Google/Cloud/CloudQuotas/V1/QuotaInfo/ContainerType.php
new file mode 100644
index 000000000000..d571476865a3
--- /dev/null
+++ b/owl-bot-staging/Quotas/v1/proto/src/Google/Cloud/CloudQuotas/V1/QuotaInfo/ContainerType.php
@@ -0,0 +1,71 @@
+google.api.cloudquotas.v1.QuotaInfo.ContainerType
+ */
+class ContainerType
+{
+ /**
+ * Unspecified container type.
+ *
+ * Generated from protobuf enum CONTAINER_TYPE_UNSPECIFIED = 0;
+ */
+ const CONTAINER_TYPE_UNSPECIFIED = 0;
+ /**
+ * consumer project
+ *
+ * Generated from protobuf enum PROJECT = 1;
+ */
+ const PROJECT = 1;
+ /**
+ * folder
+ *
+ * Generated from protobuf enum FOLDER = 2;
+ */
+ const FOLDER = 2;
+ /**
+ * organization
+ *
+ * Generated from protobuf enum ORGANIZATION = 3;
+ */
+ const ORGANIZATION = 3;
+
+ private static $valueToName = [
+ self::CONTAINER_TYPE_UNSPECIFIED => 'CONTAINER_TYPE_UNSPECIFIED',
+ self::PROJECT => 'PROJECT',
+ self::FOLDER => 'FOLDER',
+ self::ORGANIZATION => 'ORGANIZATION',
+ ];
+
+ 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(ContainerType::class, \Google\Cloud\CloudQuotas\V1\QuotaInfo_ContainerType::class);
+
diff --git a/owl-bot-staging/Quotas/v1/proto/src/Google/Cloud/CloudQuotas/V1/QuotaPreference.php b/owl-bot-staging/Quotas/v1/proto/src/Google/Cloud/CloudQuotas/V1/QuotaPreference.php
new file mode 100644
index 000000000000..fde3b44c65a7
--- /dev/null
+++ b/owl-bot-staging/Quotas/v1/proto/src/Google/Cloud/CloudQuotas/V1/QuotaPreference.php
@@ -0,0 +1,543 @@
+google.api.cloudquotas.v1.QuotaPreference
+ */
+class QuotaPreference extends \Google\Protobuf\Internal\Message
+{
+ /**
+ * Required except in the CREATE requests.
+ * The resource name of the quota preference.
+ * The ID component following "locations/" must be "global".
+ * Example:
+ * `projects/123/locations/global/quotaPreferences/my-config-for-us-east1`
+ *
+ * Generated from protobuf field string name = 1;
+ */
+ protected $name = '';
+ /**
+ * Immutable. The dimensions that this quota preference applies to. The key of
+ * the map entry is the name of a dimension, such as "region", "zone",
+ * "network_id", and the value of the map entry is the dimension value.
+ * If a dimension is missing from the map of dimensions, the quota preference
+ * applies to all the dimension values except for those that have other quota
+ * preferences configured for the specific value.
+ * NOTE: QuotaPreferences can only be applied across all values of "user" and
+ * "resource" dimension. Do not set values for "user" or "resource" in the
+ * dimension map.
+ * Example: {"provider", "Foo Inc"} where "provider" is a service specific
+ * dimension.
+ *
+ * Generated from protobuf field map dimensions = 2 [(.google.api.field_behavior) = IMMUTABLE];
+ */
+ private $dimensions;
+ /**
+ * Required. Preferred quota configuration.
+ *
+ * Generated from protobuf field .google.api.cloudquotas.v1.QuotaConfig quota_config = 3 [(.google.api.field_behavior) = REQUIRED];
+ */
+ protected $quota_config = null;
+ /**
+ * Optional. The current etag of the quota preference. If an etag is provided
+ * on update and does not match the current server's etag of the quota
+ * preference, the request will be blocked and an ABORTED error will be
+ * returned. See https://google.aip.dev/134#etags for more details on etags.
+ *
+ * Generated from protobuf field string etag = 4 [(.google.api.field_behavior) = OPTIONAL];
+ */
+ protected $etag = '';
+ /**
+ * Output only. Create time stamp
+ *
+ * Generated from protobuf field .google.protobuf.Timestamp create_time = 5 [(.google.api.field_behavior) = OUTPUT_ONLY];
+ */
+ protected $create_time = null;
+ /**
+ * Output only. Update time stamp
+ *
+ * Generated from protobuf field .google.protobuf.Timestamp update_time = 6 [(.google.api.field_behavior) = OUTPUT_ONLY];
+ */
+ protected $update_time = null;
+ /**
+ * Required. The name of the service to which the quota preference is applied.
+ *
+ * Generated from protobuf field string service = 7 [(.google.api.field_behavior) = REQUIRED];
+ */
+ protected $service = '';
+ /**
+ * Required. The id of the quota to which the quota preference is applied. A
+ * quota name is unique in the service. Example: `CpusPerProjectPerRegion`
+ *
+ * Generated from protobuf field string quota_id = 8 [(.google.api.field_behavior) = REQUIRED];
+ */
+ protected $quota_id = '';
+ /**
+ * Output only. Is the quota preference pending Google Cloud approval and
+ * fulfillment.
+ *
+ * Generated from protobuf field bool reconciling = 10 [(.google.api.field_behavior) = OUTPUT_ONLY];
+ */
+ protected $reconciling = false;
+ /**
+ * The reason / justification for this quota preference.
+ *
+ * Generated from protobuf field string justification = 11;
+ */
+ protected $justification = '';
+ /**
+ * Input only. An email address that can be used to contact the the user, in
+ * case Google Cloud needs more information to make a decision before
+ * additional quota can be granted.
+ * When requesting a quota increase, the email address is required.
+ * When requesting a quota decrease, the email address is optional.
+ * For example, the email address is optional when the
+ * `QuotaConfig.preferred_value` is smaller than the
+ * `QuotaDetails.reset_value`.
+ *
+ * Generated from protobuf field string contact_email = 12 [(.google.api.field_behavior) = INPUT_ONLY];
+ */
+ protected $contact_email = '';
+
+ /**
+ * Constructor.
+ *
+ * @param array $data {
+ * Optional. Data for populating the Message object.
+ *
+ * @type string $name
+ * Required except in the CREATE requests.
+ * The resource name of the quota preference.
+ * The ID component following "locations/" must be "global".
+ * Example:
+ * `projects/123/locations/global/quotaPreferences/my-config-for-us-east1`
+ * @type array|\Google\Protobuf\Internal\MapField $dimensions
+ * Immutable. The dimensions that this quota preference applies to. The key of
+ * the map entry is the name of a dimension, such as "region", "zone",
+ * "network_id", and the value of the map entry is the dimension value.
+ * If a dimension is missing from the map of dimensions, the quota preference
+ * applies to all the dimension values except for those that have other quota
+ * preferences configured for the specific value.
+ * NOTE: QuotaPreferences can only be applied across all values of "user" and
+ * "resource" dimension. Do not set values for "user" or "resource" in the
+ * dimension map.
+ * Example: {"provider", "Foo Inc"} where "provider" is a service specific
+ * dimension.
+ * @type \Google\Cloud\CloudQuotas\V1\QuotaConfig $quota_config
+ * Required. Preferred quota configuration.
+ * @type string $etag
+ * Optional. The current etag of the quota preference. If an etag is provided
+ * on update and does not match the current server's etag of the quota
+ * preference, the request will be blocked and an ABORTED error will be
+ * returned. See https://google.aip.dev/134#etags for more details on etags.
+ * @type \Google\Protobuf\Timestamp $create_time
+ * Output only. Create time stamp
+ * @type \Google\Protobuf\Timestamp $update_time
+ * Output only. Update time stamp
+ * @type string $service
+ * Required. The name of the service to which the quota preference is applied.
+ * @type string $quota_id
+ * Required. The id of the quota to which the quota preference is applied. A
+ * quota name is unique in the service. Example: `CpusPerProjectPerRegion`
+ * @type bool $reconciling
+ * Output only. Is the quota preference pending Google Cloud approval and
+ * fulfillment.
+ * @type string $justification
+ * The reason / justification for this quota preference.
+ * @type string $contact_email
+ * Input only. An email address that can be used to contact the the user, in
+ * case Google Cloud needs more information to make a decision before
+ * additional quota can be granted.
+ * When requesting a quota increase, the email address is required.
+ * When requesting a quota decrease, the email address is optional.
+ * For example, the email address is optional when the
+ * `QuotaConfig.preferred_value` is smaller than the
+ * `QuotaDetails.reset_value`.
+ * }
+ */
+ public function __construct($data = NULL) {
+ \GPBMetadata\Google\Api\Cloudquotas\V1\Resources::initOnce();
+ parent::__construct($data);
+ }
+
+ /**
+ * Required except in the CREATE requests.
+ * The resource name of the quota preference.
+ * The ID component following "locations/" must be "global".
+ * Example:
+ * `projects/123/locations/global/quotaPreferences/my-config-for-us-east1`
+ *
+ * Generated from protobuf field string name = 1;
+ * @return string
+ */
+ public function getName()
+ {
+ return $this->name;
+ }
+
+ /**
+ * Required except in the CREATE requests.
+ * The resource name of the quota preference.
+ * The ID component following "locations/" must be "global".
+ * Example:
+ * `projects/123/locations/global/quotaPreferences/my-config-for-us-east1`
+ *
+ * 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;
+ }
+
+ /**
+ * Immutable. The dimensions that this quota preference applies to. The key of
+ * the map entry is the name of a dimension, such as "region", "zone",
+ * "network_id", and the value of the map entry is the dimension value.
+ * If a dimension is missing from the map of dimensions, the quota preference
+ * applies to all the dimension values except for those that have other quota
+ * preferences configured for the specific value.
+ * NOTE: QuotaPreferences can only be applied across all values of "user" and
+ * "resource" dimension. Do not set values for "user" or "resource" in the
+ * dimension map.
+ * Example: {"provider", "Foo Inc"} where "provider" is a service specific
+ * dimension.
+ *
+ * Generated from protobuf field map dimensions = 2 [(.google.api.field_behavior) = IMMUTABLE];
+ * @return \Google\Protobuf\Internal\MapField
+ */
+ public function getDimensions()
+ {
+ return $this->dimensions;
+ }
+
+ /**
+ * Immutable. The dimensions that this quota preference applies to. The key of
+ * the map entry is the name of a dimension, such as "region", "zone",
+ * "network_id", and the value of the map entry is the dimension value.
+ * If a dimension is missing from the map of dimensions, the quota preference
+ * applies to all the dimension values except for those that have other quota
+ * preferences configured for the specific value.
+ * NOTE: QuotaPreferences can only be applied across all values of "user" and
+ * "resource" dimension. Do not set values for "user" or "resource" in the
+ * dimension map.
+ * Example: {"provider", "Foo Inc"} where "provider" is a service specific
+ * dimension.
+ *
+ * Generated from protobuf field map dimensions = 2 [(.google.api.field_behavior) = IMMUTABLE];
+ * @param array|\Google\Protobuf\Internal\MapField $var
+ * @return $this
+ */
+ public function setDimensions($var)
+ {
+ $arr = GPBUtil::checkMapField($var, \Google\Protobuf\Internal\GPBType::STRING, \Google\Protobuf\Internal\GPBType::STRING);
+ $this->dimensions = $arr;
+
+ return $this;
+ }
+
+ /**
+ * Required. Preferred quota configuration.
+ *
+ * Generated from protobuf field .google.api.cloudquotas.v1.QuotaConfig quota_config = 3 [(.google.api.field_behavior) = REQUIRED];
+ * @return \Google\Cloud\CloudQuotas\V1\QuotaConfig|null
+ */
+ public function getQuotaConfig()
+ {
+ return $this->quota_config;
+ }
+
+ public function hasQuotaConfig()
+ {
+ return isset($this->quota_config);
+ }
+
+ public function clearQuotaConfig()
+ {
+ unset($this->quota_config);
+ }
+
+ /**
+ * Required. Preferred quota configuration.
+ *
+ * Generated from protobuf field .google.api.cloudquotas.v1.QuotaConfig quota_config = 3 [(.google.api.field_behavior) = REQUIRED];
+ * @param \Google\Cloud\CloudQuotas\V1\QuotaConfig $var
+ * @return $this
+ */
+ public function setQuotaConfig($var)
+ {
+ GPBUtil::checkMessage($var, \Google\Cloud\CloudQuotas\V1\QuotaConfig::class);
+ $this->quota_config = $var;
+
+ return $this;
+ }
+
+ /**
+ * Optional. The current etag of the quota preference. If an etag is provided
+ * on update and does not match the current server's etag of the quota
+ * preference, the request will be blocked and an ABORTED error will be
+ * returned. See https://google.aip.dev/134#etags for more details on etags.
+ *
+ * Generated from protobuf field string etag = 4 [(.google.api.field_behavior) = OPTIONAL];
+ * @return string
+ */
+ public function getEtag()
+ {
+ return $this->etag;
+ }
+
+ /**
+ * Optional. The current etag of the quota preference. If an etag is provided
+ * on update and does not match the current server's etag of the quota
+ * preference, the request will be blocked and an ABORTED error will be
+ * returned. See https://google.aip.dev/134#etags for more details on etags.
+ *
+ * Generated from protobuf field string etag = 4 [(.google.api.field_behavior) = OPTIONAL];
+ * @param string $var
+ * @return $this
+ */
+ public function setEtag($var)
+ {
+ GPBUtil::checkString($var, True);
+ $this->etag = $var;
+
+ return $this;
+ }
+
+ /**
+ * Output only. Create time stamp
+ *
+ * Generated from protobuf field .google.protobuf.Timestamp create_time = 5 [(.google.api.field_behavior) = OUTPUT_ONLY];
+ * @return \Google\Protobuf\Timestamp|null
+ */
+ public function getCreateTime()
+ {
+ return $this->create_time;
+ }
+
+ public function hasCreateTime()
+ {
+ return isset($this->create_time);
+ }
+
+ public function clearCreateTime()
+ {
+ unset($this->create_time);
+ }
+
+ /**
+ * Output only. Create time stamp
+ *
+ * Generated from protobuf field .google.protobuf.Timestamp create_time = 5 [(.google.api.field_behavior) = OUTPUT_ONLY];
+ * @param \Google\Protobuf\Timestamp $var
+ * @return $this
+ */
+ public function setCreateTime($var)
+ {
+ GPBUtil::checkMessage($var, \Google\Protobuf\Timestamp::class);
+ $this->create_time = $var;
+
+ return $this;
+ }
+
+ /**
+ * Output only. Update time stamp
+ *
+ * Generated from protobuf field .google.protobuf.Timestamp update_time = 6 [(.google.api.field_behavior) = OUTPUT_ONLY];
+ * @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);
+ }
+
+ /**
+ * Output only. Update time stamp
+ *
+ * Generated from protobuf field .google.protobuf.Timestamp update_time = 6 [(.google.api.field_behavior) = OUTPUT_ONLY];
+ * @param \Google\Protobuf\Timestamp $var
+ * @return $this
+ */
+ public function setUpdateTime($var)
+ {
+ GPBUtil::checkMessage($var, \Google\Protobuf\Timestamp::class);
+ $this->update_time = $var;
+
+ return $this;
+ }
+
+ /**
+ * Required. The name of the service to which the quota preference is applied.
+ *
+ * Generated from protobuf field string service = 7 [(.google.api.field_behavior) = REQUIRED];
+ * @return string
+ */
+ public function getService()
+ {
+ return $this->service;
+ }
+
+ /**
+ * Required. The name of the service to which the quota preference is applied.
+ *
+ * Generated from protobuf field string service = 7 [(.google.api.field_behavior) = REQUIRED];
+ * @param string $var
+ * @return $this
+ */
+ public function setService($var)
+ {
+ GPBUtil::checkString($var, True);
+ $this->service = $var;
+
+ return $this;
+ }
+
+ /**
+ * Required. The id of the quota to which the quota preference is applied. A
+ * quota name is unique in the service. Example: `CpusPerProjectPerRegion`
+ *
+ * Generated from protobuf field string quota_id = 8 [(.google.api.field_behavior) = REQUIRED];
+ * @return string
+ */
+ public function getQuotaId()
+ {
+ return $this->quota_id;
+ }
+
+ /**
+ * Required. The id of the quota to which the quota preference is applied. A
+ * quota name is unique in the service. Example: `CpusPerProjectPerRegion`
+ *
+ * Generated from protobuf field string quota_id = 8 [(.google.api.field_behavior) = REQUIRED];
+ * @param string $var
+ * @return $this
+ */
+ public function setQuotaId($var)
+ {
+ GPBUtil::checkString($var, True);
+ $this->quota_id = $var;
+
+ return $this;
+ }
+
+ /**
+ * Output only. Is the quota preference pending Google Cloud approval and
+ * fulfillment.
+ *
+ * Generated from protobuf field bool reconciling = 10 [(.google.api.field_behavior) = OUTPUT_ONLY];
+ * @return bool
+ */
+ public function getReconciling()
+ {
+ return $this->reconciling;
+ }
+
+ /**
+ * Output only. Is the quota preference pending Google Cloud approval and
+ * fulfillment.
+ *
+ * Generated from protobuf field bool reconciling = 10 [(.google.api.field_behavior) = OUTPUT_ONLY];
+ * @param bool $var
+ * @return $this
+ */
+ public function setReconciling($var)
+ {
+ GPBUtil::checkBool($var);
+ $this->reconciling = $var;
+
+ return $this;
+ }
+
+ /**
+ * The reason / justification for this quota preference.
+ *
+ * Generated from protobuf field string justification = 11;
+ * @return string
+ */
+ public function getJustification()
+ {
+ return $this->justification;
+ }
+
+ /**
+ * The reason / justification for this quota preference.
+ *
+ * Generated from protobuf field string justification = 11;
+ * @param string $var
+ * @return $this
+ */
+ public function setJustification($var)
+ {
+ GPBUtil::checkString($var, True);
+ $this->justification = $var;
+
+ return $this;
+ }
+
+ /**
+ * Input only. An email address that can be used to contact the the user, in
+ * case Google Cloud needs more information to make a decision before
+ * additional quota can be granted.
+ * When requesting a quota increase, the email address is required.
+ * When requesting a quota decrease, the email address is optional.
+ * For example, the email address is optional when the
+ * `QuotaConfig.preferred_value` is smaller than the
+ * `QuotaDetails.reset_value`.
+ *
+ * Generated from protobuf field string contact_email = 12 [(.google.api.field_behavior) = INPUT_ONLY];
+ * @return string
+ */
+ public function getContactEmail()
+ {
+ return $this->contact_email;
+ }
+
+ /**
+ * Input only. An email address that can be used to contact the the user, in
+ * case Google Cloud needs more information to make a decision before
+ * additional quota can be granted.
+ * When requesting a quota increase, the email address is required.
+ * When requesting a quota decrease, the email address is optional.
+ * For example, the email address is optional when the
+ * `QuotaConfig.preferred_value` is smaller than the
+ * `QuotaDetails.reset_value`.
+ *
+ * Generated from protobuf field string contact_email = 12 [(.google.api.field_behavior) = INPUT_ONLY];
+ * @param string $var
+ * @return $this
+ */
+ public function setContactEmail($var)
+ {
+ GPBUtil::checkString($var, True);
+ $this->contact_email = $var;
+
+ return $this;
+ }
+
+}
+
diff --git a/owl-bot-staging/Quotas/v1/proto/src/Google/Cloud/CloudQuotas/V1/QuotaSafetyCheck.php b/owl-bot-staging/Quotas/v1/proto/src/Google/Cloud/CloudQuotas/V1/QuotaSafetyCheck.php
new file mode 100644
index 000000000000..659dd6869ac3
--- /dev/null
+++ b/owl-bot-staging/Quotas/v1/proto/src/Google/Cloud/CloudQuotas/V1/QuotaSafetyCheck.php
@@ -0,0 +1,63 @@
+google.api.cloudquotas.v1.QuotaSafetyCheck
+ */
+class QuotaSafetyCheck
+{
+ /**
+ * Unspecified quota safety check.
+ *
+ * Generated from protobuf enum QUOTA_SAFETY_CHECK_UNSPECIFIED = 0;
+ */
+ const QUOTA_SAFETY_CHECK_UNSPECIFIED = 0;
+ /**
+ * Validates that a quota mutation would not cause the consumer's effective
+ * limit to be lower than the consumer's quota usage.
+ *
+ * Generated from protobuf enum QUOTA_DECREASE_BELOW_USAGE = 1;
+ */
+ const QUOTA_DECREASE_BELOW_USAGE = 1;
+ /**
+ * Validates that a quota mutation would not cause the consumer's effective
+ * limit to decrease by more than 10 percent.
+ *
+ * Generated from protobuf enum QUOTA_DECREASE_PERCENTAGE_TOO_HIGH = 2;
+ */
+ const QUOTA_DECREASE_PERCENTAGE_TOO_HIGH = 2;
+
+ private static $valueToName = [
+ self::QUOTA_SAFETY_CHECK_UNSPECIFIED => 'QUOTA_SAFETY_CHECK_UNSPECIFIED',
+ self::QUOTA_DECREASE_BELOW_USAGE => 'QUOTA_DECREASE_BELOW_USAGE',
+ self::QUOTA_DECREASE_PERCENTAGE_TOO_HIGH => 'QUOTA_DECREASE_PERCENTAGE_TOO_HIGH',
+ ];
+
+ public static function name($value)
+ {
+ if (!isset(self::$valueToName[$value])) {
+ throw new UnexpectedValueException(sprintf(
+ 'Enum %s has no name defined for value %s', __CLASS__, $value));
+ }
+ return self::$valueToName[$value];
+ }
+
+
+ public static function value($name)
+ {
+ $const = __CLASS__ . '::' . strtoupper($name);
+ if (!defined($const)) {
+ throw new UnexpectedValueException(sprintf(
+ 'Enum %s has no value defined for name %s', __CLASS__, $name));
+ }
+ return constant($const);
+ }
+}
+
diff --git a/owl-bot-staging/Quotas/v1/proto/src/Google/Cloud/CloudQuotas/V1/RolloutInfo.php b/owl-bot-staging/Quotas/v1/proto/src/Google/Cloud/CloudQuotas/V1/RolloutInfo.php
new file mode 100644
index 000000000000..1d0c7e5fec54
--- /dev/null
+++ b/owl-bot-staging/Quotas/v1/proto/src/Google/Cloud/CloudQuotas/V1/RolloutInfo.php
@@ -0,0 +1,67 @@
+google.api.cloudquotas.v1.RolloutInfo
+ */
+class RolloutInfo extends \Google\Protobuf\Internal\Message
+{
+ /**
+ * Whether there is an ongoing rollout for a quota or not.
+ *
+ * Generated from protobuf field bool ongoing_rollout = 1;
+ */
+ protected $ongoing_rollout = false;
+
+ /**
+ * Constructor.
+ *
+ * @param array $data {
+ * Optional. Data for populating the Message object.
+ *
+ * @type bool $ongoing_rollout
+ * Whether there is an ongoing rollout for a quota or not.
+ * }
+ */
+ public function __construct($data = NULL) {
+ \GPBMetadata\Google\Api\Cloudquotas\V1\Resources::initOnce();
+ parent::__construct($data);
+ }
+
+ /**
+ * Whether there is an ongoing rollout for a quota or not.
+ *
+ * Generated from protobuf field bool ongoing_rollout = 1;
+ * @return bool
+ */
+ public function getOngoingRollout()
+ {
+ return $this->ongoing_rollout;
+ }
+
+ /**
+ * Whether there is an ongoing rollout for a quota or not.
+ *
+ * Generated from protobuf field bool ongoing_rollout = 1;
+ * @param bool $var
+ * @return $this
+ */
+ public function setOngoingRollout($var)
+ {
+ GPBUtil::checkBool($var);
+ $this->ongoing_rollout = $var;
+
+ return $this;
+ }
+
+}
+
diff --git a/owl-bot-staging/Quotas/v1/proto/src/Google/Cloud/CloudQuotas/V1/UpdateQuotaPreferenceRequest.php b/owl-bot-staging/Quotas/v1/proto/src/Google/Cloud/CloudQuotas/V1/UpdateQuotaPreferenceRequest.php
new file mode 100644
index 000000000000..adb2aaf264fa
--- /dev/null
+++ b/owl-bot-staging/Quotas/v1/proto/src/Google/Cloud/CloudQuotas/V1/UpdateQuotaPreferenceRequest.php
@@ -0,0 +1,270 @@
+google.api.cloudquotas.v1.UpdateQuotaPreferenceRequest
+ */
+class UpdateQuotaPreferenceRequest extends \Google\Protobuf\Internal\Message
+{
+ /**
+ * Optional. Field mask is used to specify the fields to be overwritten in the
+ * QuotaPreference resource by the update.
+ * The fields specified in the update_mask are relative to the resource, not
+ * the full request. A field will be overwritten if it is in the mask. If the
+ * user does not provide a mask then all fields will be overwritten.
+ *
+ * Generated from protobuf field .google.protobuf.FieldMask update_mask = 1 [(.google.api.field_behavior) = OPTIONAL];
+ */
+ protected $update_mask = null;
+ /**
+ * Required. The resource being updated
+ *
+ * Generated from protobuf field .google.api.cloudquotas.v1.QuotaPreference quota_preference = 2 [(.google.api.field_behavior) = REQUIRED];
+ */
+ protected $quota_preference = null;
+ /**
+ * Optional. If set to true, and the quota preference is not found, a new one
+ * will be created. In this situation, `update_mask` is ignored.
+ *
+ * Generated from protobuf field bool allow_missing = 3 [(.google.api.field_behavior) = OPTIONAL];
+ */
+ protected $allow_missing = false;
+ /**
+ * Optional. If set to true, validate the request, but do not actually update.
+ * Note that a request being valid does not mean that the request is
+ * guaranteed to be fulfilled.
+ *
+ * Generated from protobuf field bool validate_only = 4 [(.google.api.field_behavior) = OPTIONAL];
+ */
+ protected $validate_only = false;
+ /**
+ * The list of quota safety checks to be ignored.
+ *
+ * Generated from protobuf field repeated .google.api.cloudquotas.v1.QuotaSafetyCheck ignore_safety_checks = 5;
+ */
+ private $ignore_safety_checks;
+
+ /**
+ * @param \Google\Cloud\CloudQuotas\V1\QuotaPreference $quotaPreference Required. The resource being updated
+ * @param \Google\Protobuf\FieldMask $updateMask Optional. Field mask is used to specify the fields to be overwritten in the
+ * QuotaPreference resource by the update.
+ * The fields specified in the update_mask are relative to the resource, not
+ * the full request. A field will be overwritten if it is in the mask. If the
+ * user does not provide a mask then all fields will be overwritten.
+ *
+ * @return \Google\Cloud\CloudQuotas\V1\UpdateQuotaPreferenceRequest
+ *
+ * @experimental
+ */
+ public static function build(\Google\Cloud\CloudQuotas\V1\QuotaPreference $quotaPreference, \Google\Protobuf\FieldMask $updateMask): self
+ {
+ return (new self())
+ ->setQuotaPreference($quotaPreference)
+ ->setUpdateMask($updateMask);
+ }
+
+ /**
+ * Constructor.
+ *
+ * @param array $data {
+ * Optional. Data for populating the Message object.
+ *
+ * @type \Google\Protobuf\FieldMask $update_mask
+ * Optional. Field mask is used to specify the fields to be overwritten in the
+ * QuotaPreference resource by the update.
+ * The fields specified in the update_mask are relative to the resource, not
+ * the full request. A field will be overwritten if it is in the mask. If the
+ * user does not provide a mask then all fields will be overwritten.
+ * @type \Google\Cloud\CloudQuotas\V1\QuotaPreference $quota_preference
+ * Required. The resource being updated
+ * @type bool $allow_missing
+ * Optional. If set to true, and the quota preference is not found, a new one
+ * will be created. In this situation, `update_mask` is ignored.
+ * @type bool $validate_only
+ * Optional. If set to true, validate the request, but do not actually update.
+ * Note that a request being valid does not mean that the request is
+ * guaranteed to be fulfilled.
+ * @type array|\Google\Protobuf\Internal\RepeatedField $ignore_safety_checks
+ * The list of quota safety checks to be ignored.
+ * }
+ */
+ public function __construct($data = NULL) {
+ \GPBMetadata\Google\Api\Cloudquotas\V1\Cloudquotas::initOnce();
+ parent::__construct($data);
+ }
+
+ /**
+ * Optional. Field mask is used to specify the fields to be overwritten in the
+ * QuotaPreference resource by the update.
+ * The fields specified in the update_mask are relative to the resource, not
+ * the full request. A field will be overwritten if it is in the mask. If the
+ * user does not provide a mask then all fields will be overwritten.
+ *
+ * Generated from protobuf field .google.protobuf.FieldMask update_mask = 1 [(.google.api.field_behavior) = OPTIONAL];
+ * @return \Google\Protobuf\FieldMask|null
+ */
+ public function getUpdateMask()
+ {
+ return $this->update_mask;
+ }
+
+ public function hasUpdateMask()
+ {
+ return isset($this->update_mask);
+ }
+
+ public function clearUpdateMask()
+ {
+ unset($this->update_mask);
+ }
+
+ /**
+ * Optional. Field mask is used to specify the fields to be overwritten in the
+ * QuotaPreference resource by the update.
+ * The fields specified in the update_mask are relative to the resource, not
+ * the full request. A field will be overwritten if it is in the mask. If the
+ * user does not provide a mask then all fields will be overwritten.
+ *
+ * Generated from protobuf field .google.protobuf.FieldMask update_mask = 1 [(.google.api.field_behavior) = OPTIONAL];
+ * @param \Google\Protobuf\FieldMask $var
+ * @return $this
+ */
+ public function setUpdateMask($var)
+ {
+ GPBUtil::checkMessage($var, \Google\Protobuf\FieldMask::class);
+ $this->update_mask = $var;
+
+ return $this;
+ }
+
+ /**
+ * Required. The resource being updated
+ *
+ * Generated from protobuf field .google.api.cloudquotas.v1.QuotaPreference quota_preference = 2 [(.google.api.field_behavior) = REQUIRED];
+ * @return \Google\Cloud\CloudQuotas\V1\QuotaPreference|null
+ */
+ public function getQuotaPreference()
+ {
+ return $this->quota_preference;
+ }
+
+ public function hasQuotaPreference()
+ {
+ return isset($this->quota_preference);
+ }
+
+ public function clearQuotaPreference()
+ {
+ unset($this->quota_preference);
+ }
+
+ /**
+ * Required. The resource being updated
+ *
+ * Generated from protobuf field .google.api.cloudquotas.v1.QuotaPreference quota_preference = 2 [(.google.api.field_behavior) = REQUIRED];
+ * @param \Google\Cloud\CloudQuotas\V1\QuotaPreference $var
+ * @return $this
+ */
+ public function setQuotaPreference($var)
+ {
+ GPBUtil::checkMessage($var, \Google\Cloud\CloudQuotas\V1\QuotaPreference::class);
+ $this->quota_preference = $var;
+
+ return $this;
+ }
+
+ /**
+ * Optional. If set to true, and the quota preference is not found, a new one
+ * will be created. In this situation, `update_mask` is ignored.
+ *
+ * Generated from protobuf field bool allow_missing = 3 [(.google.api.field_behavior) = OPTIONAL];
+ * @return bool
+ */
+ public function getAllowMissing()
+ {
+ return $this->allow_missing;
+ }
+
+ /**
+ * Optional. If set to true, and the quota preference is not found, a new one
+ * will be created. In this situation, `update_mask` is ignored.
+ *
+ * Generated from protobuf field bool allow_missing = 3 [(.google.api.field_behavior) = OPTIONAL];
+ * @param bool $var
+ * @return $this
+ */
+ public function setAllowMissing($var)
+ {
+ GPBUtil::checkBool($var);
+ $this->allow_missing = $var;
+
+ return $this;
+ }
+
+ /**
+ * Optional. If set to true, validate the request, but do not actually update.
+ * Note that a request being valid does not mean that the request is
+ * guaranteed to be fulfilled.
+ *
+ * Generated from protobuf field bool validate_only = 4 [(.google.api.field_behavior) = OPTIONAL];
+ * @return bool
+ */
+ public function getValidateOnly()
+ {
+ return $this->validate_only;
+ }
+
+ /**
+ * Optional. If set to true, validate the request, but do not actually update.
+ * Note that a request being valid does not mean that the request is
+ * guaranteed to be fulfilled.
+ *
+ * Generated from protobuf field bool validate_only = 4 [(.google.api.field_behavior) = OPTIONAL];
+ * @param bool $var
+ * @return $this
+ */
+ public function setValidateOnly($var)
+ {
+ GPBUtil::checkBool($var);
+ $this->validate_only = $var;
+
+ return $this;
+ }
+
+ /**
+ * The list of quota safety checks to be ignored.
+ *
+ * Generated from protobuf field repeated .google.api.cloudquotas.v1.QuotaSafetyCheck ignore_safety_checks = 5;
+ * @return \Google\Protobuf\Internal\RepeatedField
+ */
+ public function getIgnoreSafetyChecks()
+ {
+ return $this->ignore_safety_checks;
+ }
+
+ /**
+ * The list of quota safety checks to be ignored.
+ *
+ * Generated from protobuf field repeated .google.api.cloudquotas.v1.QuotaSafetyCheck ignore_safety_checks = 5;
+ * @param array|\Google\Protobuf\Internal\RepeatedField $var
+ * @return $this
+ */
+ public function setIgnoreSafetyChecks($var)
+ {
+ $arr = GPBUtil::checkRepeatedField($var, \Google\Protobuf\Internal\GPBType::ENUM, \Google\Cloud\CloudQuotas\V1\QuotaSafetyCheck::class);
+ $this->ignore_safety_checks = $arr;
+
+ return $this;
+ }
+
+}
+
diff --git a/owl-bot-staging/Quotas/v1/samples/V1/CloudQuotasClient/create_quota_preference.php b/owl-bot-staging/Quotas/v1/samples/V1/CloudQuotasClient/create_quota_preference.php
new file mode 100644
index 000000000000..0ce0e3044216
--- /dev/null
+++ b/owl-bot-staging/Quotas/v1/samples/V1/CloudQuotasClient/create_quota_preference.php
@@ -0,0 +1,99 @@
+setPreferredValue($quotaPreferenceQuotaConfigPreferredValue);
+ $quotaPreference = (new QuotaPreference())
+ ->setQuotaConfig($quotaPreferenceQuotaConfig)
+ ->setService($quotaPreferenceService)
+ ->setQuotaId($quotaPreferenceQuotaId);
+ $request = (new CreateQuotaPreferenceRequest())
+ ->setParent($formattedParent)
+ ->setQuotaPreference($quotaPreference);
+
+ // Call the API and handle any network failures.
+ try {
+ /** @var QuotaPreference $response */
+ $response = $cloudQuotasClient->createQuotaPreference($request);
+ printf('Response data: %s' . PHP_EOL, $response->serializeToJsonString());
+ } catch (ApiException $ex) {
+ printf('Call failed with message: %s' . PHP_EOL, $ex->getMessage());
+ }
+}
+
+/**
+ * Helper to execute the sample.
+ *
+ * This sample has been automatically generated and should be regarded as a code
+ * template only. It will require modifications to work:
+ * - It may require correct/in-range values for request initialization.
+ * - It may require specifying regional endpoints when creating the service client,
+ * please see the apiEndpoint client configuration option for more details.
+ */
+function callSample(): void
+{
+ $formattedParent = CloudQuotasClient::locationName('[PROJECT]', '[LOCATION]');
+ $quotaPreferenceQuotaConfigPreferredValue = 0;
+ $quotaPreferenceService = '[SERVICE]';
+ $quotaPreferenceQuotaId = '[QUOTA_ID]';
+
+ create_quota_preference_sample(
+ $formattedParent,
+ $quotaPreferenceQuotaConfigPreferredValue,
+ $quotaPreferenceService,
+ $quotaPreferenceQuotaId
+ );
+}
+// [END cloudquotas_v1_generated_CloudQuotas_CreateQuotaPreference_sync]
diff --git a/owl-bot-staging/Quotas/v1/samples/V1/CloudQuotasClient/get_quota_info.php b/owl-bot-staging/Quotas/v1/samples/V1/CloudQuotasClient/get_quota_info.php
new file mode 100644
index 000000000000..4a0cea6ac5a3
--- /dev/null
+++ b/owl-bot-staging/Quotas/v1/samples/V1/CloudQuotasClient/get_quota_info.php
@@ -0,0 +1,79 @@
+setName($formattedName);
+
+ // Call the API and handle any network failures.
+ try {
+ /** @var QuotaInfo $response */
+ $response = $cloudQuotasClient->getQuotaInfo($request);
+ printf('Response data: %s' . PHP_EOL, $response->serializeToJsonString());
+ } catch (ApiException $ex) {
+ printf('Call failed with message: %s' . PHP_EOL, $ex->getMessage());
+ }
+}
+
+/**
+ * Helper to execute the sample.
+ *
+ * This sample has been automatically generated and should be regarded as a code
+ * template only. It will require modifications to work:
+ * - It may require correct/in-range values for request initialization.
+ * - It may require specifying regional endpoints when creating the service client,
+ * please see the apiEndpoint client configuration option for more details.
+ */
+function callSample(): void
+{
+ $formattedName = CloudQuotasClient::quotaInfoName(
+ '[PROJECT]',
+ '[LOCATION]',
+ '[SERVICE]',
+ '[QUOTA_INFO]'
+ );
+
+ get_quota_info_sample($formattedName);
+}
+// [END cloudquotas_v1_generated_CloudQuotas_GetQuotaInfo_sync]
diff --git a/owl-bot-staging/Quotas/v1/samples/V1/CloudQuotasClient/get_quota_preference.php b/owl-bot-staging/Quotas/v1/samples/V1/CloudQuotasClient/get_quota_preference.php
new file mode 100644
index 000000000000..9ef87f2cde11
--- /dev/null
+++ b/owl-bot-staging/Quotas/v1/samples/V1/CloudQuotasClient/get_quota_preference.php
@@ -0,0 +1,78 @@
+setName($formattedName);
+
+ // Call the API and handle any network failures.
+ try {
+ /** @var QuotaPreference $response */
+ $response = $cloudQuotasClient->getQuotaPreference($request);
+ printf('Response data: %s' . PHP_EOL, $response->serializeToJsonString());
+ } catch (ApiException $ex) {
+ printf('Call failed with message: %s' . PHP_EOL, $ex->getMessage());
+ }
+}
+
+/**
+ * Helper to execute the sample.
+ *
+ * This sample has been automatically generated and should be regarded as a code
+ * template only. It will require modifications to work:
+ * - It may require correct/in-range values for request initialization.
+ * - It may require specifying regional endpoints when creating the service client,
+ * please see the apiEndpoint client configuration option for more details.
+ */
+function callSample(): void
+{
+ $formattedName = CloudQuotasClient::quotaPreferenceName(
+ '[PROJECT]',
+ '[LOCATION]',
+ '[QUOTA_PREFERENCE]'
+ );
+
+ get_quota_preference_sample($formattedName);
+}
+// [END cloudquotas_v1_generated_CloudQuotas_GetQuotaPreference_sync]
diff --git a/owl-bot-staging/Quotas/v1/samples/V1/CloudQuotasClient/list_quota_infos.php b/owl-bot-staging/Quotas/v1/samples/V1/CloudQuotasClient/list_quota_infos.php
new file mode 100644
index 000000000000..6b69cee4cc76
--- /dev/null
+++ b/owl-bot-staging/Quotas/v1/samples/V1/CloudQuotasClient/list_quota_infos.php
@@ -0,0 +1,83 @@
+setParent($formattedParent);
+
+ // Call the API and handle any network failures.
+ try {
+ /** @var PagedListResponse $response */
+ $response = $cloudQuotasClient->listQuotaInfos($request);
+
+ /** @var QuotaInfo $element */
+ foreach ($response as $element) {
+ printf('Element data: %s' . PHP_EOL, $element->serializeToJsonString());
+ }
+ } catch (ApiException $ex) {
+ printf('Call failed with message: %s' . PHP_EOL, $ex->getMessage());
+ }
+}
+
+/**
+ * Helper to execute the sample.
+ *
+ * This sample has been automatically generated and should be regarded as a code
+ * template only. It will require modifications to work:
+ * - It may require correct/in-range values for request initialization.
+ * - It may require specifying regional endpoints when creating the service client,
+ * please see the apiEndpoint client configuration option for more details.
+ */
+function callSample(): void
+{
+ $formattedParent = CloudQuotasClient::serviceName('[PROJECT]', '[LOCATION]', '[SERVICE]');
+
+ list_quota_infos_sample($formattedParent);
+}
+// [END cloudquotas_v1_generated_CloudQuotas_ListQuotaInfos_sync]
diff --git a/owl-bot-staging/Quotas/v1/samples/V1/CloudQuotasClient/list_quota_preferences.php b/owl-bot-staging/Quotas/v1/samples/V1/CloudQuotasClient/list_quota_preferences.php
new file mode 100644
index 000000000000..54fa1a273da9
--- /dev/null
+++ b/owl-bot-staging/Quotas/v1/samples/V1/CloudQuotasClient/list_quota_preferences.php
@@ -0,0 +1,85 @@
+setParent($formattedParent);
+
+ // Call the API and handle any network failures.
+ try {
+ /** @var PagedListResponse $response */
+ $response = $cloudQuotasClient->listQuotaPreferences($request);
+
+ /** @var QuotaPreference $element */
+ foreach ($response as $element) {
+ printf('Element data: %s' . PHP_EOL, $element->serializeToJsonString());
+ }
+ } catch (ApiException $ex) {
+ printf('Call failed with message: %s' . PHP_EOL, $ex->getMessage());
+ }
+}
+
+/**
+ * Helper to execute the sample.
+ *
+ * This sample has been automatically generated and should be regarded as a code
+ * template only. It will require modifications to work:
+ * - It may require correct/in-range values for request initialization.
+ * - It may require specifying regional endpoints when creating the service client,
+ * please see the apiEndpoint client configuration option for more details.
+ */
+function callSample(): void
+{
+ $formattedParent = CloudQuotasClient::locationName('[PROJECT]', '[LOCATION]');
+
+ list_quota_preferences_sample($formattedParent);
+}
+// [END cloudquotas_v1_generated_CloudQuotas_ListQuotaPreferences_sync]
diff --git a/owl-bot-staging/Quotas/v1/samples/V1/CloudQuotasClient/update_quota_preference.php b/owl-bot-staging/Quotas/v1/samples/V1/CloudQuotasClient/update_quota_preference.php
new file mode 100644
index 000000000000..b8e6bc6b5af3
--- /dev/null
+++ b/owl-bot-staging/Quotas/v1/samples/V1/CloudQuotasClient/update_quota_preference.php
@@ -0,0 +1,91 @@
+setPreferredValue($quotaPreferenceQuotaConfigPreferredValue);
+ $quotaPreference = (new QuotaPreference())
+ ->setQuotaConfig($quotaPreferenceQuotaConfig)
+ ->setService($quotaPreferenceService)
+ ->setQuotaId($quotaPreferenceQuotaId);
+ $request = (new UpdateQuotaPreferenceRequest())
+ ->setQuotaPreference($quotaPreference);
+
+ // Call the API and handle any network failures.
+ try {
+ /** @var QuotaPreference $response */
+ $response = $cloudQuotasClient->updateQuotaPreference($request);
+ printf('Response data: %s' . PHP_EOL, $response->serializeToJsonString());
+ } catch (ApiException $ex) {
+ printf('Call failed with message: %s' . PHP_EOL, $ex->getMessage());
+ }
+}
+
+/**
+ * Helper to execute the sample.
+ *
+ * This sample has been automatically generated and should be regarded as a code
+ * template only. It will require modifications to work:
+ * - It may require correct/in-range values for request initialization.
+ * - It may require specifying regional endpoints when creating the service client,
+ * please see the apiEndpoint client configuration option for more details.
+ */
+function callSample(): void
+{
+ $quotaPreferenceQuotaConfigPreferredValue = 0;
+ $quotaPreferenceService = '[SERVICE]';
+ $quotaPreferenceQuotaId = '[QUOTA_ID]';
+
+ update_quota_preference_sample(
+ $quotaPreferenceQuotaConfigPreferredValue,
+ $quotaPreferenceService,
+ $quotaPreferenceQuotaId
+ );
+}
+// [END cloudquotas_v1_generated_CloudQuotas_UpdateQuotaPreference_sync]
diff --git a/owl-bot-staging/Quotas/v1/src/V1/Client/CloudQuotasClient.php b/owl-bot-staging/Quotas/v1/src/V1/Client/CloudQuotasClient.php
new file mode 100644
index 000000000000..eeb11abe8efe
--- /dev/null
+++ b/owl-bot-staging/Quotas/v1/src/V1/Client/CloudQuotasClient.php
@@ -0,0 +1,688 @@
+ createQuotaPreferenceAsync(CreateQuotaPreferenceRequest $request, array $optionalArgs = [])
+ * @method PromiseInterface getQuotaInfoAsync(GetQuotaInfoRequest $request, array $optionalArgs = [])
+ * @method PromiseInterface getQuotaPreferenceAsync(GetQuotaPreferenceRequest $request, array $optionalArgs = [])
+ * @method PromiseInterface listQuotaInfosAsync(ListQuotaInfosRequest $request, array $optionalArgs = [])
+ * @method PromiseInterface listQuotaPreferencesAsync(ListQuotaPreferencesRequest $request, array $optionalArgs = [])
+ * @method PromiseInterface updateQuotaPreferenceAsync(UpdateQuotaPreferenceRequest $request, array $optionalArgs = [])
+ */
+final class CloudQuotasClient
+{
+ use GapicClientTrait;
+ use ResourceHelperTrait;
+
+ /** The name of the service. */
+ private const SERVICE_NAME = 'google.api.cloudquotas.v1.CloudQuotas';
+
+ /**
+ * The default address of the service.
+ *
+ * @deprecated SERVICE_ADDRESS_TEMPLATE should be used instead.
+ */
+ private const SERVICE_ADDRESS = 'cloudquotas.googleapis.com';
+
+ /** The address template of the service. */
+ private const SERVICE_ADDRESS_TEMPLATE = 'cloudquotas.UNIVERSE_DOMAIN';
+
+ /** The default port of the service. */
+ private const DEFAULT_SERVICE_PORT = 443;
+
+ /** The name of the code generator, to be included in the agent header. */
+ private const CODEGEN_NAME = 'gapic';
+
+ /** The default scopes required by the service. */
+ public static $serviceScopes = [
+ 'https://www.googleapis.com/auth/cloud-platform',
+ ];
+
+ private static function getClientDefaults()
+ {
+ return [
+ 'serviceName' => self::SERVICE_NAME,
+ 'apiEndpoint' => self::SERVICE_ADDRESS . ':' . self::DEFAULT_SERVICE_PORT,
+ 'clientConfig' => __DIR__ . '/../resources/cloud_quotas_client_config.json',
+ 'descriptorsConfigPath' => __DIR__ . '/../resources/cloud_quotas_descriptor_config.php',
+ 'gcpApiConfigPath' => __DIR__ . '/../resources/cloud_quotas_grpc_config.json',
+ 'credentialsConfig' => [
+ 'defaultScopes' => self::$serviceScopes,
+ ],
+ 'transportConfig' => [
+ 'rest' => [
+ 'restClientConfigPath' => __DIR__ . '/../resources/cloud_quotas_rest_client_config.php',
+ ],
+ ],
+ ];
+ }
+
+ /**
+ * Formats a string containing the fully-qualified path to represent a
+ * folder_location resource.
+ *
+ * @param string $folder
+ * @param string $location
+ *
+ * @return string The formatted folder_location resource.
+ */
+ public static function folderLocationName(string $folder, string $location): string
+ {
+ return self::getPathTemplate('folderLocation')->render([
+ 'folder' => $folder,
+ 'location' => $location,
+ ]);
+ }
+
+ /**
+ * Formats a string containing the fully-qualified path to represent a
+ * folder_location_quota_preference resource.
+ *
+ * @param string $folder
+ * @param string $location
+ * @param string $quotaPreference
+ *
+ * @return string The formatted folder_location_quota_preference resource.
+ */
+ public static function folderLocationQuotaPreferenceName(string $folder, string $location, string $quotaPreference): string
+ {
+ return self::getPathTemplate('folderLocationQuotaPreference')->render([
+ 'folder' => $folder,
+ 'location' => $location,
+ 'quota_preference' => $quotaPreference,
+ ]);
+ }
+
+ /**
+ * Formats a string containing the fully-qualified path to represent a
+ * folder_location_service resource.
+ *
+ * @param string $folder
+ * @param string $location
+ * @param string $service
+ *
+ * @return string The formatted folder_location_service resource.
+ */
+ public static function folderLocationServiceName(string $folder, string $location, string $service): string
+ {
+ return self::getPathTemplate('folderLocationService')->render([
+ 'folder' => $folder,
+ 'location' => $location,
+ 'service' => $service,
+ ]);
+ }
+
+ /**
+ * Formats a string containing the fully-qualified path to represent a
+ * folder_location_service_quota_info resource.
+ *
+ * @param string $folder
+ * @param string $location
+ * @param string $service
+ * @param string $quotaInfo
+ *
+ * @return string The formatted folder_location_service_quota_info resource.
+ */
+ public static function folderLocationServiceQuotaInfoName(string $folder, string $location, string $service, string $quotaInfo): string
+ {
+ return self::getPathTemplate('folderLocationServiceQuotaInfo')->render([
+ 'folder' => $folder,
+ 'location' => $location,
+ 'service' => $service,
+ 'quota_info' => $quotaInfo,
+ ]);
+ }
+
+ /**
+ * Formats a string containing the fully-qualified path to represent a location
+ * resource.
+ *
+ * @param string $project
+ * @param string $location
+ *
+ * @return string The formatted location resource.
+ */
+ public static function locationName(string $project, string $location): string
+ {
+ return self::getPathTemplate('location')->render([
+ 'project' => $project,
+ 'location' => $location,
+ ]);
+ }
+
+ /**
+ * Formats a string containing the fully-qualified path to represent a
+ * organization_location resource.
+ *
+ * @param string $organization
+ * @param string $location
+ *
+ * @return string The formatted organization_location resource.
+ */
+ public static function organizationLocationName(string $organization, string $location): string
+ {
+ return self::getPathTemplate('organizationLocation')->render([
+ 'organization' => $organization,
+ 'location' => $location,
+ ]);
+ }
+
+ /**
+ * Formats a string containing the fully-qualified path to represent a
+ * organization_location_quota_preference resource.
+ *
+ * @param string $organization
+ * @param string $location
+ * @param string $quotaPreference
+ *
+ * @return string The formatted organization_location_quota_preference resource.
+ */
+ public static function organizationLocationQuotaPreferenceName(string $organization, string $location, string $quotaPreference): string
+ {
+ return self::getPathTemplate('organizationLocationQuotaPreference')->render([
+ 'organization' => $organization,
+ 'location' => $location,
+ 'quota_preference' => $quotaPreference,
+ ]);
+ }
+
+ /**
+ * Formats a string containing the fully-qualified path to represent a
+ * organization_location_service resource.
+ *
+ * @param string $organization
+ * @param string $location
+ * @param string $service
+ *
+ * @return string The formatted organization_location_service resource.
+ */
+ public static function organizationLocationServiceName(string $organization, string $location, string $service): string
+ {
+ return self::getPathTemplate('organizationLocationService')->render([
+ 'organization' => $organization,
+ 'location' => $location,
+ 'service' => $service,
+ ]);
+ }
+
+ /**
+ * Formats a string containing the fully-qualified path to represent a
+ * organization_location_service_quota_info resource.
+ *
+ * @param string $organization
+ * @param string $location
+ * @param string $service
+ * @param string $quotaInfo
+ *
+ * @return string The formatted organization_location_service_quota_info resource.
+ */
+ public static function organizationLocationServiceQuotaInfoName(string $organization, string $location, string $service, string $quotaInfo): string
+ {
+ return self::getPathTemplate('organizationLocationServiceQuotaInfo')->render([
+ 'organization' => $organization,
+ 'location' => $location,
+ 'service' => $service,
+ 'quota_info' => $quotaInfo,
+ ]);
+ }
+
+ /**
+ * Formats a string containing the fully-qualified path to represent a
+ * project_location resource.
+ *
+ * @param string $project
+ * @param string $location
+ *
+ * @return string The formatted project_location resource.
+ */
+ public static function projectLocationName(string $project, string $location): string
+ {
+ return self::getPathTemplate('projectLocation')->render([
+ 'project' => $project,
+ 'location' => $location,
+ ]);
+ }
+
+ /**
+ * Formats a string containing the fully-qualified path to represent a
+ * project_location_quota_preference resource.
+ *
+ * @param string $project
+ * @param string $location
+ * @param string $quotaPreference
+ *
+ * @return string The formatted project_location_quota_preference resource.
+ */
+ public static function projectLocationQuotaPreferenceName(string $project, string $location, string $quotaPreference): string
+ {
+ return self::getPathTemplate('projectLocationQuotaPreference')->render([
+ 'project' => $project,
+ 'location' => $location,
+ 'quota_preference' => $quotaPreference,
+ ]);
+ }
+
+ /**
+ * Formats a string containing the fully-qualified path to represent a
+ * project_location_service resource.
+ *
+ * @param string $project
+ * @param string $location
+ * @param string $service
+ *
+ * @return string The formatted project_location_service resource.
+ */
+ public static function projectLocationServiceName(string $project, string $location, string $service): string
+ {
+ return self::getPathTemplate('projectLocationService')->render([
+ 'project' => $project,
+ 'location' => $location,
+ 'service' => $service,
+ ]);
+ }
+
+ /**
+ * Formats a string containing the fully-qualified path to represent a
+ * project_location_service_quota_info resource.
+ *
+ * @param string $project
+ * @param string $location
+ * @param string $service
+ * @param string $quotaInfo
+ *
+ * @return string The formatted project_location_service_quota_info resource.
+ */
+ public static function projectLocationServiceQuotaInfoName(string $project, string $location, string $service, string $quotaInfo): string
+ {
+ return self::getPathTemplate('projectLocationServiceQuotaInfo')->render([
+ 'project' => $project,
+ 'location' => $location,
+ 'service' => $service,
+ 'quota_info' => $quotaInfo,
+ ]);
+ }
+
+ /**
+ * Formats a string containing the fully-qualified path to represent a quota_info
+ * resource.
+ *
+ * @param string $project
+ * @param string $location
+ * @param string $service
+ * @param string $quotaInfo
+ *
+ * @return string The formatted quota_info resource.
+ */
+ public static function quotaInfoName(string $project, string $location, string $service, string $quotaInfo): string
+ {
+ return self::getPathTemplate('quotaInfo')->render([
+ 'project' => $project,
+ 'location' => $location,
+ 'service' => $service,
+ 'quota_info' => $quotaInfo,
+ ]);
+ }
+
+ /**
+ * Formats a string containing the fully-qualified path to represent a
+ * quota_preference resource.
+ *
+ * @param string $project
+ * @param string $location
+ * @param string $quotaPreference
+ *
+ * @return string The formatted quota_preference resource.
+ */
+ public static function quotaPreferenceName(string $project, string $location, string $quotaPreference): string
+ {
+ return self::getPathTemplate('quotaPreference')->render([
+ 'project' => $project,
+ 'location' => $location,
+ 'quota_preference' => $quotaPreference,
+ ]);
+ }
+
+ /**
+ * Formats a string containing the fully-qualified path to represent a service
+ * resource.
+ *
+ * @param string $project
+ * @param string $location
+ * @param string $service
+ *
+ * @return string The formatted service resource.
+ */
+ public static function serviceName(string $project, string $location, string $service): string
+ {
+ return self::getPathTemplate('service')->render([
+ 'project' => $project,
+ 'location' => $location,
+ 'service' => $service,
+ ]);
+ }
+
+ /**
+ * Parses a formatted name string and returns an associative array of the components in the name.
+ * The following name formats are supported:
+ * Template: Pattern
+ * - folderLocation: folders/{folder}/locations/{location}
+ * - folderLocationQuotaPreference: folders/{folder}/locations/{location}/quotaPreferences/{quota_preference}
+ * - folderLocationService: folders/{folder}/locations/{location}/services/{service}
+ * - folderLocationServiceQuotaInfo: folders/{folder}/locations/{location}/services/{service}/quotaInfos/{quota_info}
+ * - location: projects/{project}/locations/{location}
+ * - organizationLocation: organizations/{organization}/locations/{location}
+ * - organizationLocationQuotaPreference: organizations/{organization}/locations/{location}/quotaPreferences/{quota_preference}
+ * - organizationLocationService: organizations/{organization}/locations/{location}/services/{service}
+ * - organizationLocationServiceQuotaInfo: organizations/{organization}/locations/{location}/services/{service}/quotaInfos/{quota_info}
+ * - projectLocation: projects/{project}/locations/{location}
+ * - projectLocationQuotaPreference: projects/{project}/locations/{location}/quotaPreferences/{quota_preference}
+ * - projectLocationService: projects/{project}/locations/{location}/services/{service}
+ * - projectLocationServiceQuotaInfo: projects/{project}/locations/{location}/services/{service}/quotaInfos/{quota_info}
+ * - quotaInfo: projects/{project}/locations/{location}/services/{service}/quotaInfos/{quota_info}
+ * - quotaPreference: projects/{project}/locations/{location}/quotaPreferences/{quota_preference}
+ * - service: projects/{project}/locations/{location}/services/{service}
+ *
+ * The optional $template argument can be supplied to specify a particular pattern,
+ * and must match one of the templates listed above. If no $template argument is
+ * provided, or if the $template argument does not match one of the templates
+ * listed, then parseName will check each of the supported templates, and return
+ * the first match.
+ *
+ * @param string $formattedName The formatted name string
+ * @param string $template Optional name of template to match
+ *
+ * @return array An associative array from name component IDs to component values.
+ *
+ * @throws ValidationException If $formattedName could not be matched.
+ */
+ public static function parseName(string $formattedName, string $template = null): array
+ {
+ return self::parseFormattedName($formattedName, $template);
+ }
+
+ /**
+ * Constructor.
+ *
+ * @param array $options {
+ * Optional. Options for configuring the service API wrapper.
+ *
+ * @type string $apiEndpoint
+ * The address of the API remote host. May optionally include the port, formatted
+ * as ":". Default 'cloudquotas.googleapis.com:443'.
+ * @type string|array|FetchAuthTokenInterface|CredentialsWrapper $credentials
+ * The credentials to be used by the client to authorize API calls. This option
+ * accepts either a path to a credentials file, or a decoded credentials file as a
+ * PHP array.
+ * *Advanced usage*: In addition, this option can also accept a pre-constructed
+ * {@see \Google\Auth\FetchAuthTokenInterface} object or
+ * {@see \Google\ApiCore\CredentialsWrapper} object. Note that when one of these
+ * objects are provided, any settings in $credentialsConfig will be ignored.
+ * @type array $credentialsConfig
+ * Options used to configure credentials, including auth token caching, for the
+ * client. For a full list of supporting configuration options, see
+ * {@see \Google\ApiCore\CredentialsWrapper::build()} .
+ * @type bool $disableRetries
+ * Determines whether or not retries defined by the client configuration should be
+ * disabled. Defaults to `false`.
+ * @type string|array $clientConfig
+ * Client method configuration, including retry settings. This option can be either
+ * a path to a JSON file, or a PHP array containing the decoded JSON data. By
+ * default this settings points to the default client config file, which is
+ * provided in the resources folder.
+ * @type string|TransportInterface $transport
+ * The transport used for executing network requests. May be either the string
+ * `rest` or `grpc`. Defaults to `grpc` if gRPC support is detected on the system.
+ * *Advanced usage*: Additionally, it is possible to pass in an already
+ * instantiated {@see \Google\ApiCore\Transport\TransportInterface} object. Note
+ * that when this object is provided, any settings in $transportConfig, and any
+ * $apiEndpoint setting, will be ignored.
+ * @type array $transportConfig
+ * Configuration options that will be used to construct the transport. Options for
+ * each supported transport type should be passed in a key for that transport. For
+ * example:
+ * $transportConfig = [
+ * 'grpc' => [...],
+ * 'rest' => [...],
+ * ];
+ * See the {@see \Google\ApiCore\Transport\GrpcTransport::build()} and
+ * {@see \Google\ApiCore\Transport\RestTransport::build()} methods for the
+ * supported options.
+ * @type callable $clientCertSource
+ * A callable which returns the client cert as a string. This can be used to
+ * provide a certificate and private key to the transport layer for mTLS.
+ * }
+ *
+ * @throws ValidationException
+ */
+ public function __construct(array $options = [])
+ {
+ $clientOptions = $this->buildClientOptions($options);
+ $this->setClientOptions($clientOptions);
+ }
+
+ /** Handles execution of the async variants for each documented method. */
+ public function __call($method, $args)
+ {
+ if (substr($method, -5) !== 'Async') {
+ trigger_error('Call to undefined method ' . __CLASS__ . "::$method()", E_USER_ERROR);
+ }
+
+ array_unshift($args, substr($method, 0, -5));
+ return call_user_func_array([$this, 'startAsyncCall'], $args);
+ }
+
+ /**
+ * Creates a new QuotaPreference that declares the desired value for a quota.
+ *
+ * The async variant is {@see CloudQuotasClient::createQuotaPreferenceAsync()} .
+ *
+ * @example samples/V1/CloudQuotasClient/create_quota_preference.php
+ *
+ * @param CreateQuotaPreferenceRequest $request A request to house fields associated with the call.
+ * @param array $callOptions {
+ * Optional.
+ *
+ * @type RetrySettings|array $retrySettings
+ * Retry settings to use for this call. Can be a {@see RetrySettings} object, or an
+ * associative array of retry settings parameters. See the documentation on
+ * {@see RetrySettings} for example usage.
+ * }
+ *
+ * @return QuotaPreference
+ *
+ * @throws ApiException Thrown if the API call fails.
+ */
+ public function createQuotaPreference(CreateQuotaPreferenceRequest $request, array $callOptions = []): QuotaPreference
+ {
+ return $this->startApiCall('CreateQuotaPreference', $request, $callOptions)->wait();
+ }
+
+ /**
+ * Retrieve the QuotaInfo of a quota for a project, folder or organization.
+ *
+ * The async variant is {@see CloudQuotasClient::getQuotaInfoAsync()} .
+ *
+ * @example samples/V1/CloudQuotasClient/get_quota_info.php
+ *
+ * @param GetQuotaInfoRequest $request A request to house fields associated with the call.
+ * @param array $callOptions {
+ * Optional.
+ *
+ * @type RetrySettings|array $retrySettings
+ * Retry settings to use for this call. Can be a {@see RetrySettings} object, or an
+ * associative array of retry settings parameters. See the documentation on
+ * {@see RetrySettings} for example usage.
+ * }
+ *
+ * @return QuotaInfo
+ *
+ * @throws ApiException Thrown if the API call fails.
+ */
+ public function getQuotaInfo(GetQuotaInfoRequest $request, array $callOptions = []): QuotaInfo
+ {
+ return $this->startApiCall('GetQuotaInfo', $request, $callOptions)->wait();
+ }
+
+ /**
+ * Gets details of a single QuotaPreference.
+ *
+ * The async variant is {@see CloudQuotasClient::getQuotaPreferenceAsync()} .
+ *
+ * @example samples/V1/CloudQuotasClient/get_quota_preference.php
+ *
+ * @param GetQuotaPreferenceRequest $request A request to house fields associated with the call.
+ * @param array $callOptions {
+ * Optional.
+ *
+ * @type RetrySettings|array $retrySettings
+ * Retry settings to use for this call. Can be a {@see RetrySettings} object, or an
+ * associative array of retry settings parameters. See the documentation on
+ * {@see RetrySettings} for example usage.
+ * }
+ *
+ * @return QuotaPreference
+ *
+ * @throws ApiException Thrown if the API call fails.
+ */
+ public function getQuotaPreference(GetQuotaPreferenceRequest $request, array $callOptions = []): QuotaPreference
+ {
+ return $this->startApiCall('GetQuotaPreference', $request, $callOptions)->wait();
+ }
+
+ /**
+ * Lists QuotaInfos of all quotas for a given project, folder or organization.
+ *
+ * The async variant is {@see CloudQuotasClient::listQuotaInfosAsync()} .
+ *
+ * @example samples/V1/CloudQuotasClient/list_quota_infos.php
+ *
+ * @param ListQuotaInfosRequest $request A request to house fields associated with the call.
+ * @param array $callOptions {
+ * Optional.
+ *
+ * @type RetrySettings|array $retrySettings
+ * Retry settings to use for this call. Can be a {@see RetrySettings} object, or an
+ * associative array of retry settings parameters. See the documentation on
+ * {@see RetrySettings} for example usage.
+ * }
+ *
+ * @return PagedListResponse
+ *
+ * @throws ApiException Thrown if the API call fails.
+ */
+ public function listQuotaInfos(ListQuotaInfosRequest $request, array $callOptions = []): PagedListResponse
+ {
+ return $this->startApiCall('ListQuotaInfos', $request, $callOptions);
+ }
+
+ /**
+ * Lists QuotaPreferences in a given project, folder or organization.
+ *
+ * The async variant is {@see CloudQuotasClient::listQuotaPreferencesAsync()} .
+ *
+ * @example samples/V1/CloudQuotasClient/list_quota_preferences.php
+ *
+ * @param ListQuotaPreferencesRequest $request A request to house fields associated with the call.
+ * @param array $callOptions {
+ * Optional.
+ *
+ * @type RetrySettings|array $retrySettings
+ * Retry settings to use for this call. Can be a {@see RetrySettings} object, or an
+ * associative array of retry settings parameters. See the documentation on
+ * {@see RetrySettings} for example usage.
+ * }
+ *
+ * @return PagedListResponse
+ *
+ * @throws ApiException Thrown if the API call fails.
+ */
+ public function listQuotaPreferences(ListQuotaPreferencesRequest $request, array $callOptions = []): PagedListResponse
+ {
+ return $this->startApiCall('ListQuotaPreferences', $request, $callOptions);
+ }
+
+ /**
+ * Updates the parameters of a single QuotaPreference. It can updates the
+ * config in any states, not just the ones pending approval.
+ *
+ * The async variant is {@see CloudQuotasClient::updateQuotaPreferenceAsync()} .
+ *
+ * @example samples/V1/CloudQuotasClient/update_quota_preference.php
+ *
+ * @param UpdateQuotaPreferenceRequest $request A request to house fields associated with the call.
+ * @param array $callOptions {
+ * Optional.
+ *
+ * @type RetrySettings|array $retrySettings
+ * Retry settings to use for this call. Can be a {@see RetrySettings} object, or an
+ * associative array of retry settings parameters. See the documentation on
+ * {@see RetrySettings} for example usage.
+ * }
+ *
+ * @return QuotaPreference
+ *
+ * @throws ApiException Thrown if the API call fails.
+ */
+ public function updateQuotaPreference(UpdateQuotaPreferenceRequest $request, array $callOptions = []): QuotaPreference
+ {
+ return $this->startApiCall('UpdateQuotaPreference', $request, $callOptions)->wait();
+ }
+}
diff --git a/owl-bot-staging/Quotas/v1/src/V1/gapic_metadata.json b/owl-bot-staging/Quotas/v1/src/V1/gapic_metadata.json
new file mode 100644
index 000000000000..79ee8e757dba
--- /dev/null
+++ b/owl-bot-staging/Quotas/v1/src/V1/gapic_metadata.json
@@ -0,0 +1,48 @@
+{
+ "schema": "1.0",
+ "comment": "This file maps proto services\/RPCs to the corresponding library clients\/methods",
+ "language": "php",
+ "protoPackage": "google.api.cloudquotas.v1",
+ "libraryPackage": "Google\\Cloud\\CloudQuotas\\V1",
+ "services": {
+ "CloudQuotas": {
+ "clients": {
+ "grpc": {
+ "libraryClient": "CloudQuotasGapicClient",
+ "rpcs": {
+ "CreateQuotaPreference": {
+ "methods": [
+ "createQuotaPreference"
+ ]
+ },
+ "GetQuotaInfo": {
+ "methods": [
+ "getQuotaInfo"
+ ]
+ },
+ "GetQuotaPreference": {
+ "methods": [
+ "getQuotaPreference"
+ ]
+ },
+ "ListQuotaInfos": {
+ "methods": [
+ "listQuotaInfos"
+ ]
+ },
+ "ListQuotaPreferences": {
+ "methods": [
+ "listQuotaPreferences"
+ ]
+ },
+ "UpdateQuotaPreference": {
+ "methods": [
+ "updateQuotaPreference"
+ ]
+ }
+ }
+ }
+ }
+ }
+ }
+}
\ No newline at end of file
diff --git a/owl-bot-staging/Quotas/v1/src/V1/resources/cloud_quotas_client_config.json b/owl-bot-staging/Quotas/v1/src/V1/resources/cloud_quotas_client_config.json
new file mode 100644
index 000000000000..ae40b97f70f5
--- /dev/null
+++ b/owl-bot-staging/Quotas/v1/src/V1/resources/cloud_quotas_client_config.json
@@ -0,0 +1,64 @@
+{
+ "interfaces": {
+ "google.api.cloudquotas.v1.CloudQuotas": {
+ "retry_codes": {
+ "no_retry_codes": [],
+ "retry_policy_1_codes": [
+ "UNAVAILABLE"
+ ]
+ },
+ "retry_params": {
+ "no_retry_params": {
+ "initial_retry_delay_millis": 0,
+ "retry_delay_multiplier": 0.0,
+ "max_retry_delay_millis": 0,
+ "initial_rpc_timeout_millis": 0,
+ "rpc_timeout_multiplier": 1.0,
+ "max_rpc_timeout_millis": 0,
+ "total_timeout_millis": 0
+ },
+ "retry_policy_1_params": {
+ "initial_retry_delay_millis": 1000,
+ "retry_delay_multiplier": 1.3,
+ "max_retry_delay_millis": 10000,
+ "initial_rpc_timeout_millis": 60000,
+ "rpc_timeout_multiplier": 1.0,
+ "max_rpc_timeout_millis": 60000,
+ "total_timeout_millis": 60000
+ }
+ },
+ "methods": {
+ "CreateQuotaPreference": {
+ "timeout_millis": 60000,
+ "retry_codes_name": "retry_policy_1_codes",
+ "retry_params_name": "retry_policy_1_params"
+ },
+ "GetQuotaInfo": {
+ "timeout_millis": 60000,
+ "retry_codes_name": "retry_policy_1_codes",
+ "retry_params_name": "retry_policy_1_params"
+ },
+ "GetQuotaPreference": {
+ "timeout_millis": 60000,
+ "retry_codes_name": "retry_policy_1_codes",
+ "retry_params_name": "retry_policy_1_params"
+ },
+ "ListQuotaInfos": {
+ "timeout_millis": 60000,
+ "retry_codes_name": "retry_policy_1_codes",
+ "retry_params_name": "retry_policy_1_params"
+ },
+ "ListQuotaPreferences": {
+ "timeout_millis": 60000,
+ "retry_codes_name": "retry_policy_1_codes",
+ "retry_params_name": "retry_policy_1_params"
+ },
+ "UpdateQuotaPreference": {
+ "timeout_millis": 60000,
+ "retry_codes_name": "retry_policy_1_codes",
+ "retry_params_name": "retry_policy_1_params"
+ }
+ }
+ }
+ }
+}
diff --git a/owl-bot-staging/Quotas/v1/src/V1/resources/cloud_quotas_descriptor_config.php b/owl-bot-staging/Quotas/v1/src/V1/resources/cloud_quotas_descriptor_config.php
new file mode 100644
index 000000000000..41d398d899d5
--- /dev/null
+++ b/owl-bot-staging/Quotas/v1/src/V1/resources/cloud_quotas_descriptor_config.php
@@ -0,0 +1,135 @@
+ [
+ 'google.api.cloudquotas.v1.CloudQuotas' => [
+ 'CreateQuotaPreference' => [
+ 'callType' => \Google\ApiCore\Call::UNARY_CALL,
+ 'responseType' => 'Google\Cloud\CloudQuotas\V1\QuotaPreference',
+ 'headerParams' => [
+ [
+ 'keyName' => 'parent',
+ 'fieldAccessors' => [
+ 'getParent',
+ ],
+ ],
+ ],
+ ],
+ 'GetQuotaInfo' => [
+ 'callType' => \Google\ApiCore\Call::UNARY_CALL,
+ 'responseType' => 'Google\Cloud\CloudQuotas\V1\QuotaInfo',
+ 'headerParams' => [
+ [
+ 'keyName' => 'name',
+ 'fieldAccessors' => [
+ 'getName',
+ ],
+ ],
+ ],
+ ],
+ 'GetQuotaPreference' => [
+ 'callType' => \Google\ApiCore\Call::UNARY_CALL,
+ 'responseType' => 'Google\Cloud\CloudQuotas\V1\QuotaPreference',
+ 'headerParams' => [
+ [
+ 'keyName' => 'name',
+ 'fieldAccessors' => [
+ 'getName',
+ ],
+ ],
+ ],
+ ],
+ 'ListQuotaInfos' => [
+ 'pageStreaming' => [
+ 'requestPageTokenGetMethod' => 'getPageToken',
+ 'requestPageTokenSetMethod' => 'setPageToken',
+ 'requestPageSizeGetMethod' => 'getPageSize',
+ 'requestPageSizeSetMethod' => 'setPageSize',
+ 'responsePageTokenGetMethod' => 'getNextPageToken',
+ 'resourcesGetMethod' => 'getQuotaInfos',
+ ],
+ 'callType' => \Google\ApiCore\Call::PAGINATED_CALL,
+ 'responseType' => 'Google\Cloud\CloudQuotas\V1\ListQuotaInfosResponse',
+ 'headerParams' => [
+ [
+ 'keyName' => 'parent',
+ 'fieldAccessors' => [
+ 'getParent',
+ ],
+ ],
+ ],
+ ],
+ 'ListQuotaPreferences' => [
+ 'pageStreaming' => [
+ 'requestPageTokenGetMethod' => 'getPageToken',
+ 'requestPageTokenSetMethod' => 'setPageToken',
+ 'requestPageSizeGetMethod' => 'getPageSize',
+ 'requestPageSizeSetMethod' => 'setPageSize',
+ 'responsePageTokenGetMethod' => 'getNextPageToken',
+ 'resourcesGetMethod' => 'getQuotaPreferences',
+ ],
+ 'callType' => \Google\ApiCore\Call::PAGINATED_CALL,
+ 'responseType' => 'Google\Cloud\CloudQuotas\V1\ListQuotaPreferencesResponse',
+ 'headerParams' => [
+ [
+ 'keyName' => 'parent',
+ 'fieldAccessors' => [
+ 'getParent',
+ ],
+ ],
+ ],
+ ],
+ 'UpdateQuotaPreference' => [
+ 'callType' => \Google\ApiCore\Call::UNARY_CALL,
+ 'responseType' => 'Google\Cloud\CloudQuotas\V1\QuotaPreference',
+ 'headerParams' => [
+ [
+ 'keyName' => 'quota_preference.name',
+ 'fieldAccessors' => [
+ 'getQuotaPreference',
+ 'getName',
+ ],
+ ],
+ ],
+ ],
+ 'templateMap' => [
+ 'folderLocation' => 'folders/{folder}/locations/{location}',
+ 'folderLocationQuotaPreference' => 'folders/{folder}/locations/{location}/quotaPreferences/{quota_preference}',
+ 'folderLocationService' => 'folders/{folder}/locations/{location}/services/{service}',
+ 'folderLocationServiceQuotaInfo' => 'folders/{folder}/locations/{location}/services/{service}/quotaInfos/{quota_info}',
+ 'location' => 'projects/{project}/locations/{location}',
+ 'organizationLocation' => 'organizations/{organization}/locations/{location}',
+ 'organizationLocationQuotaPreference' => 'organizations/{organization}/locations/{location}/quotaPreferences/{quota_preference}',
+ 'organizationLocationService' => 'organizations/{organization}/locations/{location}/services/{service}',
+ 'organizationLocationServiceQuotaInfo' => 'organizations/{organization}/locations/{location}/services/{service}/quotaInfos/{quota_info}',
+ 'projectLocation' => 'projects/{project}/locations/{location}',
+ 'projectLocationQuotaPreference' => 'projects/{project}/locations/{location}/quotaPreferences/{quota_preference}',
+ 'projectLocationService' => 'projects/{project}/locations/{location}/services/{service}',
+ 'projectLocationServiceQuotaInfo' => 'projects/{project}/locations/{location}/services/{service}/quotaInfos/{quota_info}',
+ 'quotaInfo' => 'projects/{project}/locations/{location}/services/{service}/quotaInfos/{quota_info}',
+ 'quotaPreference' => 'projects/{project}/locations/{location}/quotaPreferences/{quota_preference}',
+ 'service' => 'projects/{project}/locations/{location}/services/{service}',
+ ],
+ ],
+ ],
+];
diff --git a/owl-bot-staging/Quotas/v1/src/V1/resources/cloud_quotas_rest_client_config.php b/owl-bot-staging/Quotas/v1/src/V1/resources/cloud_quotas_rest_client_config.php
new file mode 100644
index 000000000000..b9078725af73
--- /dev/null
+++ b/owl-bot-staging/Quotas/v1/src/V1/resources/cloud_quotas_rest_client_config.php
@@ -0,0 +1,162 @@
+ [
+ 'google.api.cloudquotas.v1.CloudQuotas' => [
+ 'CreateQuotaPreference' => [
+ 'method' => 'post',
+ 'uriTemplate' => '/v1/{parent=projects/*/locations/*}/quotaPreferences',
+ 'body' => 'quota_preference',
+ 'additionalBindings' => [
+ [
+ 'method' => 'post',
+ 'uriTemplate' => '/v1/{parent=folders/*/locations/*}/quotaPreferences',
+ 'body' => 'quota_preference',
+ ],
+ [
+ 'method' => 'post',
+ 'uriTemplate' => '/v1/{parent=organizations/*/locations/*}/quotaPreferences',
+ 'body' => 'quota_preference',
+ ],
+ ],
+ 'placeholders' => [
+ 'parent' => [
+ 'getters' => [
+ 'getParent',
+ ],
+ ],
+ ],
+ ],
+ 'GetQuotaInfo' => [
+ 'method' => 'get',
+ 'uriTemplate' => '/v1/{name=projects/*/locations/*/services/*/quotaInfos/*}',
+ 'additionalBindings' => [
+ [
+ 'method' => 'get',
+ 'uriTemplate' => '/v1/{name=organizations/*/locations/*/services/*/quotaInfos/*}',
+ ],
+ [
+ 'method' => 'get',
+ 'uriTemplate' => '/v1/{name=folders/*/locations/*/services/*/quotaInfos/*}',
+ ],
+ ],
+ 'placeholders' => [
+ 'name' => [
+ 'getters' => [
+ 'getName',
+ ],
+ ],
+ ],
+ ],
+ 'GetQuotaPreference' => [
+ 'method' => 'get',
+ 'uriTemplate' => '/v1/{name=projects/*/locations/*/quotaPreferences/*}',
+ 'additionalBindings' => [
+ [
+ 'method' => 'get',
+ 'uriTemplate' => '/v1/{name=organizations/*/locations/*/quotaPreferences/*}',
+ ],
+ [
+ 'method' => 'get',
+ 'uriTemplate' => '/v1/{name=folders/*/locations/*/quotaPreferences/*}',
+ ],
+ ],
+ 'placeholders' => [
+ 'name' => [
+ 'getters' => [
+ 'getName',
+ ],
+ ],
+ ],
+ ],
+ 'ListQuotaInfos' => [
+ 'method' => 'get',
+ 'uriTemplate' => '/v1/{parent=projects/*/locations/*/services/*}/quotaInfos',
+ 'additionalBindings' => [
+ [
+ 'method' => 'get',
+ 'uriTemplate' => '/v1/{parent=organizations/*/locations/*/services/*}/quotaInfos',
+ ],
+ [
+ 'method' => 'get',
+ 'uriTemplate' => '/v1/{parent=folders/*/locations/*/services/*}/quotaInfos',
+ ],
+ ],
+ 'placeholders' => [
+ 'parent' => [
+ 'getters' => [
+ 'getParent',
+ ],
+ ],
+ ],
+ ],
+ 'ListQuotaPreferences' => [
+ 'method' => 'get',
+ 'uriTemplate' => '/v1/{parent=projects/*/locations/*}/quotaPreferences',
+ 'additionalBindings' => [
+ [
+ 'method' => 'get',
+ 'uriTemplate' => '/v1/{parent=folders/*/locations/*}/quotaPreferences',
+ ],
+ [
+ 'method' => 'get',
+ 'uriTemplate' => '/v1/{parent=organizations/*/locations/*}/quotaPreferences',
+ ],
+ ],
+ 'placeholders' => [
+ 'parent' => [
+ 'getters' => [
+ 'getParent',
+ ],
+ ],
+ ],
+ ],
+ 'UpdateQuotaPreference' => [
+ 'method' => 'patch',
+ 'uriTemplate' => '/v1/{quota_preference.name=projects/*/locations/*/quotaPreferences/*}',
+ 'body' => 'quota_preference',
+ 'additionalBindings' => [
+ [
+ 'method' => 'patch',
+ 'uriTemplate' => '/v1/{quota_preference.name=folders/*/locations/*/quotaPreferences/*}',
+ 'body' => 'quota_preference',
+ ],
+ [
+ 'method' => 'patch',
+ 'uriTemplate' => '/v1/{quota_preference.name=organizations/*/locations/*/quotaPreferences/*}',
+ 'body' => 'quota_preference',
+ ],
+ ],
+ 'placeholders' => [
+ 'quota_preference.name' => [
+ 'getters' => [
+ 'getQuotaPreference',
+ 'getName',
+ ],
+ ],
+ ],
+ ],
+ ],
+ ],
+ 'numericEnums' => true,
+];
diff --git a/owl-bot-staging/Quotas/v1/tests/Unit/V1/Client/CloudQuotasClientTest.php b/owl-bot-staging/Quotas/v1/tests/Unit/V1/Client/CloudQuotasClientTest.php
new file mode 100644
index 000000000000..136af5b7439c
--- /dev/null
+++ b/owl-bot-staging/Quotas/v1/tests/Unit/V1/Client/CloudQuotasClientTest.php
@@ -0,0 +1,620 @@
+getMockBuilder(CredentialsWrapper::class)->disableOriginalConstructor()->getMock();
+ }
+
+ /** @return CloudQuotasClient */
+ private function createClient(array $options = [])
+ {
+ $options += [
+ 'credentials' => $this->createCredentials(),
+ ];
+ return new CloudQuotasClient($options);
+ }
+
+ /** @test */
+ public function createQuotaPreferenceTest()
+ {
+ $transport = $this->createTransport();
+ $gapicClient = $this->createClient([
+ 'transport' => $transport,
+ ]);
+ $this->assertTrue($transport->isExhausted());
+ // Mock response
+ $name = 'name3373707';
+ $etag = 'etag3123477';
+ $service = 'service1984153269';
+ $quotaId = 'quotaId-879230910';
+ $reconciling = false;
+ $justification = 'justification1864993522';
+ $contactEmail = 'contactEmail947010237';
+ $expectedResponse = new QuotaPreference();
+ $expectedResponse->setName($name);
+ $expectedResponse->setEtag($etag);
+ $expectedResponse->setService($service);
+ $expectedResponse->setQuotaId($quotaId);
+ $expectedResponse->setReconciling($reconciling);
+ $expectedResponse->setJustification($justification);
+ $expectedResponse->setContactEmail($contactEmail);
+ $transport->addResponse($expectedResponse);
+ // Mock request
+ $formattedParent = $gapicClient->locationName('[PROJECT]', '[LOCATION]');
+ $quotaPreference = new QuotaPreference();
+ $quotaPreferenceQuotaConfig = new QuotaConfig();
+ $quotaConfigPreferredValue = 557434902;
+ $quotaPreferenceQuotaConfig->setPreferredValue($quotaConfigPreferredValue);
+ $quotaPreference->setQuotaConfig($quotaPreferenceQuotaConfig);
+ $quotaPreferenceService = 'quotaPreferenceService-1057995326';
+ $quotaPreference->setService($quotaPreferenceService);
+ $quotaPreferenceQuotaId = 'quotaPreferenceQuotaId1917192384';
+ $quotaPreference->setQuotaId($quotaPreferenceQuotaId);
+ $request = (new CreateQuotaPreferenceRequest())
+ ->setParent($formattedParent)
+ ->setQuotaPreference($quotaPreference);
+ $response = $gapicClient->createQuotaPreference($request);
+ $this->assertEquals($expectedResponse, $response);
+ $actualRequests = $transport->popReceivedCalls();
+ $this->assertSame(1, count($actualRequests));
+ $actualFuncCall = $actualRequests[0]->getFuncCall();
+ $actualRequestObject = $actualRequests[0]->getRequestObject();
+ $this->assertSame('/google.api.cloudquotas.v1.CloudQuotas/CreateQuotaPreference', $actualFuncCall);
+ $actualValue = $actualRequestObject->getParent();
+ $this->assertProtobufEquals($formattedParent, $actualValue);
+ $actualValue = $actualRequestObject->getQuotaPreference();
+ $this->assertProtobufEquals($quotaPreference, $actualValue);
+ $this->assertTrue($transport->isExhausted());
+ }
+
+ /** @test */
+ public function createQuotaPreferenceExceptionTest()
+ {
+ $transport = $this->createTransport();
+ $gapicClient = $this->createClient([
+ 'transport' => $transport,
+ ]);
+ $this->assertTrue($transport->isExhausted());
+ $status = new stdClass();
+ $status->code = Code::DATA_LOSS;
+ $status->details = 'internal error';
+ $expectedExceptionMessage = json_encode([
+ 'message' => 'internal error',
+ 'code' => Code::DATA_LOSS,
+ 'status' => 'DATA_LOSS',
+ 'details' => [],
+ ], JSON_PRETTY_PRINT);
+ $transport->addResponse(null, $status);
+ // Mock request
+ $formattedParent = $gapicClient->locationName('[PROJECT]', '[LOCATION]');
+ $quotaPreference = new QuotaPreference();
+ $quotaPreferenceQuotaConfig = new QuotaConfig();
+ $quotaConfigPreferredValue = 557434902;
+ $quotaPreferenceQuotaConfig->setPreferredValue($quotaConfigPreferredValue);
+ $quotaPreference->setQuotaConfig($quotaPreferenceQuotaConfig);
+ $quotaPreferenceService = 'quotaPreferenceService-1057995326';
+ $quotaPreference->setService($quotaPreferenceService);
+ $quotaPreferenceQuotaId = 'quotaPreferenceQuotaId1917192384';
+ $quotaPreference->setQuotaId($quotaPreferenceQuotaId);
+ $request = (new CreateQuotaPreferenceRequest())
+ ->setParent($formattedParent)
+ ->setQuotaPreference($quotaPreference);
+ try {
+ $gapicClient->createQuotaPreference($request);
+ // If the $gapicClient method call did not throw, fail the test
+ $this->fail('Expected an ApiException, but no exception was thrown.');
+ } catch (ApiException $ex) {
+ $this->assertEquals($status->code, $ex->getCode());
+ $this->assertEquals($expectedExceptionMessage, $ex->getMessage());
+ }
+ // Call popReceivedCalls to ensure the stub is exhausted
+ $transport->popReceivedCalls();
+ $this->assertTrue($transport->isExhausted());
+ }
+
+ /** @test */
+ public function getQuotaInfoTest()
+ {
+ $transport = $this->createTransport();
+ $gapicClient = $this->createClient([
+ 'transport' => $transport,
+ ]);
+ $this->assertTrue($transport->isExhausted());
+ // Mock response
+ $name2 = 'name2-1052831874';
+ $quotaId = 'quotaId-879230910';
+ $metric = 'metric-1077545552';
+ $service = 'service1984153269';
+ $isPrecise = true;
+ $refreshInterval = 'refreshInterval1816824233';
+ $metricDisplayName = 'metricDisplayName900625943';
+ $quotaDisplayName = 'quotaDisplayName-1616924081';
+ $metricUnit = 'metricUnit-1737381197';
+ $isFixed = false;
+ $isConcurrent = true;
+ $serviceRequestQuotaUri = 'serviceRequestQuotaUri-773207445';
+ $expectedResponse = new QuotaInfo();
+ $expectedResponse->setName($name2);
+ $expectedResponse->setQuotaId($quotaId);
+ $expectedResponse->setMetric($metric);
+ $expectedResponse->setService($service);
+ $expectedResponse->setIsPrecise($isPrecise);
+ $expectedResponse->setRefreshInterval($refreshInterval);
+ $expectedResponse->setMetricDisplayName($metricDisplayName);
+ $expectedResponse->setQuotaDisplayName($quotaDisplayName);
+ $expectedResponse->setMetricUnit($metricUnit);
+ $expectedResponse->setIsFixed($isFixed);
+ $expectedResponse->setIsConcurrent($isConcurrent);
+ $expectedResponse->setServiceRequestQuotaUri($serviceRequestQuotaUri);
+ $transport->addResponse($expectedResponse);
+ // Mock request
+ $formattedName = $gapicClient->quotaInfoName('[PROJECT]', '[LOCATION]', '[SERVICE]', '[QUOTA_INFO]');
+ $request = (new GetQuotaInfoRequest())
+ ->setName($formattedName);
+ $response = $gapicClient->getQuotaInfo($request);
+ $this->assertEquals($expectedResponse, $response);
+ $actualRequests = $transport->popReceivedCalls();
+ $this->assertSame(1, count($actualRequests));
+ $actualFuncCall = $actualRequests[0]->getFuncCall();
+ $actualRequestObject = $actualRequests[0]->getRequestObject();
+ $this->assertSame('/google.api.cloudquotas.v1.CloudQuotas/GetQuotaInfo', $actualFuncCall);
+ $actualValue = $actualRequestObject->getName();
+ $this->assertProtobufEquals($formattedName, $actualValue);
+ $this->assertTrue($transport->isExhausted());
+ }
+
+ /** @test */
+ public function getQuotaInfoExceptionTest()
+ {
+ $transport = $this->createTransport();
+ $gapicClient = $this->createClient([
+ 'transport' => $transport,
+ ]);
+ $this->assertTrue($transport->isExhausted());
+ $status = new stdClass();
+ $status->code = Code::DATA_LOSS;
+ $status->details = 'internal error';
+ $expectedExceptionMessage = json_encode([
+ 'message' => 'internal error',
+ 'code' => Code::DATA_LOSS,
+ 'status' => 'DATA_LOSS',
+ 'details' => [],
+ ], JSON_PRETTY_PRINT);
+ $transport->addResponse(null, $status);
+ // Mock request
+ $formattedName = $gapicClient->quotaInfoName('[PROJECT]', '[LOCATION]', '[SERVICE]', '[QUOTA_INFO]');
+ $request = (new GetQuotaInfoRequest())
+ ->setName($formattedName);
+ try {
+ $gapicClient->getQuotaInfo($request);
+ // If the $gapicClient method call did not throw, fail the test
+ $this->fail('Expected an ApiException, but no exception was thrown.');
+ } catch (ApiException $ex) {
+ $this->assertEquals($status->code, $ex->getCode());
+ $this->assertEquals($expectedExceptionMessage, $ex->getMessage());
+ }
+ // Call popReceivedCalls to ensure the stub is exhausted
+ $transport->popReceivedCalls();
+ $this->assertTrue($transport->isExhausted());
+ }
+
+ /** @test */
+ public function getQuotaPreferenceTest()
+ {
+ $transport = $this->createTransport();
+ $gapicClient = $this->createClient([
+ 'transport' => $transport,
+ ]);
+ $this->assertTrue($transport->isExhausted());
+ // Mock response
+ $name2 = 'name2-1052831874';
+ $etag = 'etag3123477';
+ $service = 'service1984153269';
+ $quotaId = 'quotaId-879230910';
+ $reconciling = false;
+ $justification = 'justification1864993522';
+ $contactEmail = 'contactEmail947010237';
+ $expectedResponse = new QuotaPreference();
+ $expectedResponse->setName($name2);
+ $expectedResponse->setEtag($etag);
+ $expectedResponse->setService($service);
+ $expectedResponse->setQuotaId($quotaId);
+ $expectedResponse->setReconciling($reconciling);
+ $expectedResponse->setJustification($justification);
+ $expectedResponse->setContactEmail($contactEmail);
+ $transport->addResponse($expectedResponse);
+ // Mock request
+ $formattedName = $gapicClient->quotaPreferenceName('[PROJECT]', '[LOCATION]', '[QUOTA_PREFERENCE]');
+ $request = (new GetQuotaPreferenceRequest())
+ ->setName($formattedName);
+ $response = $gapicClient->getQuotaPreference($request);
+ $this->assertEquals($expectedResponse, $response);
+ $actualRequests = $transport->popReceivedCalls();
+ $this->assertSame(1, count($actualRequests));
+ $actualFuncCall = $actualRequests[0]->getFuncCall();
+ $actualRequestObject = $actualRequests[0]->getRequestObject();
+ $this->assertSame('/google.api.cloudquotas.v1.CloudQuotas/GetQuotaPreference', $actualFuncCall);
+ $actualValue = $actualRequestObject->getName();
+ $this->assertProtobufEquals($formattedName, $actualValue);
+ $this->assertTrue($transport->isExhausted());
+ }
+
+ /** @test */
+ public function getQuotaPreferenceExceptionTest()
+ {
+ $transport = $this->createTransport();
+ $gapicClient = $this->createClient([
+ 'transport' => $transport,
+ ]);
+ $this->assertTrue($transport->isExhausted());
+ $status = new stdClass();
+ $status->code = Code::DATA_LOSS;
+ $status->details = 'internal error';
+ $expectedExceptionMessage = json_encode([
+ 'message' => 'internal error',
+ 'code' => Code::DATA_LOSS,
+ 'status' => 'DATA_LOSS',
+ 'details' => [],
+ ], JSON_PRETTY_PRINT);
+ $transport->addResponse(null, $status);
+ // Mock request
+ $formattedName = $gapicClient->quotaPreferenceName('[PROJECT]', '[LOCATION]', '[QUOTA_PREFERENCE]');
+ $request = (new GetQuotaPreferenceRequest())
+ ->setName($formattedName);
+ try {
+ $gapicClient->getQuotaPreference($request);
+ // If the $gapicClient method call did not throw, fail the test
+ $this->fail('Expected an ApiException, but no exception was thrown.');
+ } catch (ApiException $ex) {
+ $this->assertEquals($status->code, $ex->getCode());
+ $this->assertEquals($expectedExceptionMessage, $ex->getMessage());
+ }
+ // Call popReceivedCalls to ensure the stub is exhausted
+ $transport->popReceivedCalls();
+ $this->assertTrue($transport->isExhausted());
+ }
+
+ /** @test */
+ public function listQuotaInfosTest()
+ {
+ $transport = $this->createTransport();
+ $gapicClient = $this->createClient([
+ 'transport' => $transport,
+ ]);
+ $this->assertTrue($transport->isExhausted());
+ // Mock response
+ $nextPageToken = '';
+ $quotaInfosElement = new QuotaInfo();
+ $quotaInfos = [
+ $quotaInfosElement,
+ ];
+ $expectedResponse = new ListQuotaInfosResponse();
+ $expectedResponse->setNextPageToken($nextPageToken);
+ $expectedResponse->setQuotaInfos($quotaInfos);
+ $transport->addResponse($expectedResponse);
+ // Mock request
+ $formattedParent = $gapicClient->serviceName('[PROJECT]', '[LOCATION]', '[SERVICE]');
+ $request = (new ListQuotaInfosRequest())
+ ->setParent($formattedParent);
+ $response = $gapicClient->listQuotaInfos($request);
+ $this->assertEquals($expectedResponse, $response->getPage()->getResponseObject());
+ $resources = iterator_to_array($response->iterateAllElements());
+ $this->assertSame(1, count($resources));
+ $this->assertEquals($expectedResponse->getQuotaInfos()[0], $resources[0]);
+ $actualRequests = $transport->popReceivedCalls();
+ $this->assertSame(1, count($actualRequests));
+ $actualFuncCall = $actualRequests[0]->getFuncCall();
+ $actualRequestObject = $actualRequests[0]->getRequestObject();
+ $this->assertSame('/google.api.cloudquotas.v1.CloudQuotas/ListQuotaInfos', $actualFuncCall);
+ $actualValue = $actualRequestObject->getParent();
+ $this->assertProtobufEquals($formattedParent, $actualValue);
+ $this->assertTrue($transport->isExhausted());
+ }
+
+ /** @test */
+ public function listQuotaInfosExceptionTest()
+ {
+ $transport = $this->createTransport();
+ $gapicClient = $this->createClient([
+ 'transport' => $transport,
+ ]);
+ $this->assertTrue($transport->isExhausted());
+ $status = new stdClass();
+ $status->code = Code::DATA_LOSS;
+ $status->details = 'internal error';
+ $expectedExceptionMessage = json_encode([
+ 'message' => 'internal error',
+ 'code' => Code::DATA_LOSS,
+ 'status' => 'DATA_LOSS',
+ 'details' => [],
+ ], JSON_PRETTY_PRINT);
+ $transport->addResponse(null, $status);
+ // Mock request
+ $formattedParent = $gapicClient->serviceName('[PROJECT]', '[LOCATION]', '[SERVICE]');
+ $request = (new ListQuotaInfosRequest())
+ ->setParent($formattedParent);
+ try {
+ $gapicClient->listQuotaInfos($request);
+ // If the $gapicClient method call did not throw, fail the test
+ $this->fail('Expected an ApiException, but no exception was thrown.');
+ } catch (ApiException $ex) {
+ $this->assertEquals($status->code, $ex->getCode());
+ $this->assertEquals($expectedExceptionMessage, $ex->getMessage());
+ }
+ // Call popReceivedCalls to ensure the stub is exhausted
+ $transport->popReceivedCalls();
+ $this->assertTrue($transport->isExhausted());
+ }
+
+ /** @test */
+ public function listQuotaPreferencesTest()
+ {
+ $transport = $this->createTransport();
+ $gapicClient = $this->createClient([
+ 'transport' => $transport,
+ ]);
+ $this->assertTrue($transport->isExhausted());
+ // Mock response
+ $nextPageToken = '';
+ $quotaPreferencesElement = new QuotaPreference();
+ $quotaPreferences = [
+ $quotaPreferencesElement,
+ ];
+ $expectedResponse = new ListQuotaPreferencesResponse();
+ $expectedResponse->setNextPageToken($nextPageToken);
+ $expectedResponse->setQuotaPreferences($quotaPreferences);
+ $transport->addResponse($expectedResponse);
+ // Mock request
+ $formattedParent = $gapicClient->locationName('[PROJECT]', '[LOCATION]');
+ $request = (new ListQuotaPreferencesRequest())
+ ->setParent($formattedParent);
+ $response = $gapicClient->listQuotaPreferences($request);
+ $this->assertEquals($expectedResponse, $response->getPage()->getResponseObject());
+ $resources = iterator_to_array($response->iterateAllElements());
+ $this->assertSame(1, count($resources));
+ $this->assertEquals($expectedResponse->getQuotaPreferences()[0], $resources[0]);
+ $actualRequests = $transport->popReceivedCalls();
+ $this->assertSame(1, count($actualRequests));
+ $actualFuncCall = $actualRequests[0]->getFuncCall();
+ $actualRequestObject = $actualRequests[0]->getRequestObject();
+ $this->assertSame('/google.api.cloudquotas.v1.CloudQuotas/ListQuotaPreferences', $actualFuncCall);
+ $actualValue = $actualRequestObject->getParent();
+ $this->assertProtobufEquals($formattedParent, $actualValue);
+ $this->assertTrue($transport->isExhausted());
+ }
+
+ /** @test */
+ public function listQuotaPreferencesExceptionTest()
+ {
+ $transport = $this->createTransport();
+ $gapicClient = $this->createClient([
+ 'transport' => $transport,
+ ]);
+ $this->assertTrue($transport->isExhausted());
+ $status = new stdClass();
+ $status->code = Code::DATA_LOSS;
+ $status->details = 'internal error';
+ $expectedExceptionMessage = json_encode([
+ 'message' => 'internal error',
+ 'code' => Code::DATA_LOSS,
+ 'status' => 'DATA_LOSS',
+ 'details' => [],
+ ], JSON_PRETTY_PRINT);
+ $transport->addResponse(null, $status);
+ // Mock request
+ $formattedParent = $gapicClient->locationName('[PROJECT]', '[LOCATION]');
+ $request = (new ListQuotaPreferencesRequest())
+ ->setParent($formattedParent);
+ try {
+ $gapicClient->listQuotaPreferences($request);
+ // If the $gapicClient method call did not throw, fail the test
+ $this->fail('Expected an ApiException, but no exception was thrown.');
+ } catch (ApiException $ex) {
+ $this->assertEquals($status->code, $ex->getCode());
+ $this->assertEquals($expectedExceptionMessage, $ex->getMessage());
+ }
+ // Call popReceivedCalls to ensure the stub is exhausted
+ $transport->popReceivedCalls();
+ $this->assertTrue($transport->isExhausted());
+ }
+
+ /** @test */
+ public function updateQuotaPreferenceTest()
+ {
+ $transport = $this->createTransport();
+ $gapicClient = $this->createClient([
+ 'transport' => $transport,
+ ]);
+ $this->assertTrue($transport->isExhausted());
+ // Mock response
+ $name = 'name3373707';
+ $etag = 'etag3123477';
+ $service = 'service1984153269';
+ $quotaId = 'quotaId-879230910';
+ $reconciling = false;
+ $justification = 'justification1864993522';
+ $contactEmail = 'contactEmail947010237';
+ $expectedResponse = new QuotaPreference();
+ $expectedResponse->setName($name);
+ $expectedResponse->setEtag($etag);
+ $expectedResponse->setService($service);
+ $expectedResponse->setQuotaId($quotaId);
+ $expectedResponse->setReconciling($reconciling);
+ $expectedResponse->setJustification($justification);
+ $expectedResponse->setContactEmail($contactEmail);
+ $transport->addResponse($expectedResponse);
+ // Mock request
+ $quotaPreference = new QuotaPreference();
+ $quotaPreferenceQuotaConfig = new QuotaConfig();
+ $quotaConfigPreferredValue = 557434902;
+ $quotaPreferenceQuotaConfig->setPreferredValue($quotaConfigPreferredValue);
+ $quotaPreference->setQuotaConfig($quotaPreferenceQuotaConfig);
+ $quotaPreferenceService = 'quotaPreferenceService-1057995326';
+ $quotaPreference->setService($quotaPreferenceService);
+ $quotaPreferenceQuotaId = 'quotaPreferenceQuotaId1917192384';
+ $quotaPreference->setQuotaId($quotaPreferenceQuotaId);
+ $request = (new UpdateQuotaPreferenceRequest())
+ ->setQuotaPreference($quotaPreference);
+ $response = $gapicClient->updateQuotaPreference($request);
+ $this->assertEquals($expectedResponse, $response);
+ $actualRequests = $transport->popReceivedCalls();
+ $this->assertSame(1, count($actualRequests));
+ $actualFuncCall = $actualRequests[0]->getFuncCall();
+ $actualRequestObject = $actualRequests[0]->getRequestObject();
+ $this->assertSame('/google.api.cloudquotas.v1.CloudQuotas/UpdateQuotaPreference', $actualFuncCall);
+ $actualValue = $actualRequestObject->getQuotaPreference();
+ $this->assertProtobufEquals($quotaPreference, $actualValue);
+ $this->assertTrue($transport->isExhausted());
+ }
+
+ /** @test */
+ public function updateQuotaPreferenceExceptionTest()
+ {
+ $transport = $this->createTransport();
+ $gapicClient = $this->createClient([
+ 'transport' => $transport,
+ ]);
+ $this->assertTrue($transport->isExhausted());
+ $status = new stdClass();
+ $status->code = Code::DATA_LOSS;
+ $status->details = 'internal error';
+ $expectedExceptionMessage = json_encode([
+ 'message' => 'internal error',
+ 'code' => Code::DATA_LOSS,
+ 'status' => 'DATA_LOSS',
+ 'details' => [],
+ ], JSON_PRETTY_PRINT);
+ $transport->addResponse(null, $status);
+ // Mock request
+ $quotaPreference = new QuotaPreference();
+ $quotaPreferenceQuotaConfig = new QuotaConfig();
+ $quotaConfigPreferredValue = 557434902;
+ $quotaPreferenceQuotaConfig->setPreferredValue($quotaConfigPreferredValue);
+ $quotaPreference->setQuotaConfig($quotaPreferenceQuotaConfig);
+ $quotaPreferenceService = 'quotaPreferenceService-1057995326';
+ $quotaPreference->setService($quotaPreferenceService);
+ $quotaPreferenceQuotaId = 'quotaPreferenceQuotaId1917192384';
+ $quotaPreference->setQuotaId($quotaPreferenceQuotaId);
+ $request = (new UpdateQuotaPreferenceRequest())
+ ->setQuotaPreference($quotaPreference);
+ try {
+ $gapicClient->updateQuotaPreference($request);
+ // If the $gapicClient method call did not throw, fail the test
+ $this->fail('Expected an ApiException, but no exception was thrown.');
+ } catch (ApiException $ex) {
+ $this->assertEquals($status->code, $ex->getCode());
+ $this->assertEquals($expectedExceptionMessage, $ex->getMessage());
+ }
+ // Call popReceivedCalls to ensure the stub is exhausted
+ $transport->popReceivedCalls();
+ $this->assertTrue($transport->isExhausted());
+ }
+
+ /** @test */
+ public function createQuotaPreferenceAsyncTest()
+ {
+ $transport = $this->createTransport();
+ $gapicClient = $this->createClient([
+ 'transport' => $transport,
+ ]);
+ $this->assertTrue($transport->isExhausted());
+ // Mock response
+ $name = 'name3373707';
+ $etag = 'etag3123477';
+ $service = 'service1984153269';
+ $quotaId = 'quotaId-879230910';
+ $reconciling = false;
+ $justification = 'justification1864993522';
+ $contactEmail = 'contactEmail947010237';
+ $expectedResponse = new QuotaPreference();
+ $expectedResponse->setName($name);
+ $expectedResponse->setEtag($etag);
+ $expectedResponse->setService($service);
+ $expectedResponse->setQuotaId($quotaId);
+ $expectedResponse->setReconciling($reconciling);
+ $expectedResponse->setJustification($justification);
+ $expectedResponse->setContactEmail($contactEmail);
+ $transport->addResponse($expectedResponse);
+ // Mock request
+ $formattedParent = $gapicClient->locationName('[PROJECT]', '[LOCATION]');
+ $quotaPreference = new QuotaPreference();
+ $quotaPreferenceQuotaConfig = new QuotaConfig();
+ $quotaConfigPreferredValue = 557434902;
+ $quotaPreferenceQuotaConfig->setPreferredValue($quotaConfigPreferredValue);
+ $quotaPreference->setQuotaConfig($quotaPreferenceQuotaConfig);
+ $quotaPreferenceService = 'quotaPreferenceService-1057995326';
+ $quotaPreference->setService($quotaPreferenceService);
+ $quotaPreferenceQuotaId = 'quotaPreferenceQuotaId1917192384';
+ $quotaPreference->setQuotaId($quotaPreferenceQuotaId);
+ $request = (new CreateQuotaPreferenceRequest())
+ ->setParent($formattedParent)
+ ->setQuotaPreference($quotaPreference);
+ $response = $gapicClient->createQuotaPreferenceAsync($request)->wait();
+ $this->assertEquals($expectedResponse, $response);
+ $actualRequests = $transport->popReceivedCalls();
+ $this->assertSame(1, count($actualRequests));
+ $actualFuncCall = $actualRequests[0]->getFuncCall();
+ $actualRequestObject = $actualRequests[0]->getRequestObject();
+ $this->assertSame('/google.api.cloudquotas.v1.CloudQuotas/CreateQuotaPreference', $actualFuncCall);
+ $actualValue = $actualRequestObject->getParent();
+ $this->assertProtobufEquals($formattedParent, $actualValue);
+ $actualValue = $actualRequestObject->getQuotaPreference();
+ $this->assertProtobufEquals($quotaPreference, $actualValue);
+ $this->assertTrue($transport->isExhausted());
+ }
+}