googleapis/google/api/cloudquotas/v1beta/resources.proto
Google APIs 6b36371f6f docs: Correct typo in comment for field quota_id
PiperOrigin-RevId: 859139909
2026-01-21 09:40:15 -08:00

323 lines
12 KiB
Protocol Buffer

// Copyright 2025 Google LLC
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
syntax = "proto3";
package google.api.cloudquotas.v1beta;
import "google/api/field_behavior.proto";
import "google/api/resource.proto";
import "google/protobuf/timestamp.proto";
import "google/protobuf/wrappers.proto";
option csharp_namespace = "Google.Cloud.CloudQuotas.V1Beta";
option go_package = "cloud.google.com/go/cloudquotas/apiv1beta/cloudquotaspb;cloudquotaspb";
option java_multiple_files = true;
option java_outer_classname = "ResourcesProto";
option java_package = "com.google.api.cloudquotas.v1beta";
option php_namespace = "Google\\Cloud\\CloudQuotas\\V1beta";
option ruby_package = "Google::Cloud::CloudQuotas::V1beta";
// Enumerations of quota safety checks.
enum QuotaSafetyCheck {
// Unspecified quota safety check.
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.
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.
QUOTA_DECREASE_PERCENTAGE_TOO_HIGH = 2;
}
// QuotaInfo represents information about a particular quota for a given
// project, folder or organization.
message QuotaInfo {
option (google.api.resource) = {
type: "cloudquotas.googleapis.com/QuotaInfo"
pattern: "projects/{project}/locations/{location}/services/{service}/quotaInfos/{quota_info}"
pattern: "folders/{folder}/locations/{location}/services/{service}/quotaInfos/{quota_info}"
pattern: "organizations/{organization}/locations/{location}/services/{service}/quotaInfos/{quota_info}"
};
// The enumeration of the types of a cloud resource container.
enum ContainerType {
// Unspecified container type.
CONTAINER_TYPE_UNSPECIFIED = 0;
// consumer project
PROJECT = 1;
// folder
FOLDER = 2;
// organization
ORGANIZATION = 3;
}
// Resource name of this QuotaInfo.
// The ID component following "locations/" must be "global".
// For example,
// `projects/123/locations/global/services/compute.googleapis.com/quotaInfos/CpusPerProjectPerRegion`
string name = 1;
// The id of the quota, which is unique within the service.
// For example, `CpusPerProjectPerRegion`
string quota_id = 2;
// The metric of the quota. It specifies the resources consumption the quota
// is defined for.
// For example, `compute.googleapis.com/cpus`
string metric = 3;
// The name of the service in which the quota is defined.
// For example, `compute.googleapis.com`
string service = 4;
// Whether this is a precise quota. A precise quota is tracked with absolute
// precision. In contrast, an imprecise quota is not tracked with precision.
bool is_precise = 5;
// The reset time interval for the quota. Refresh interval applies to rate
// quota only.
// For example, "minute" for per minute, "day" for per day, or "10 seconds"
// for every 10 seconds.
string refresh_interval = 6;
// The container type of the QuotaInfo.
ContainerType container_type = 7;
// The dimensions the quota is defined on.
repeated string dimensions = 8;
// The display name of the quota metric
string metric_display_name = 9;
// The display name of the quota.
string quota_display_name = 10;
// The unit in which the metric value is reported, e.g., "MByte".
string metric_unit = 11;
// Whether it is eligible to request a higher quota value for this quota.
QuotaIncreaseEligibility quota_increase_eligibility = 12;
// Whether the quota value is fixed or adjustable
bool is_fixed = 13;
// The collection of dimensions info ordered by their dimensions from more
// specific ones to less specific ones.
repeated DimensionsInfo dimensions_infos = 14;
// Whether the quota is a concurrent quota. Concurrent quotas are enforced
// on the total number of concurrent operations in flight at any given time.
bool is_concurrent = 15;
// URI to the page where users can request more quota for the cloud
// service—for example,
// https://console.cloud.google.com/iam-admin/quotas.
string service_request_quota_uri = 17;
}
// Eligibility information regarding requesting increase adjustment of a quota.
message QuotaIncreaseEligibility {
// The enumeration of reasons when it is ineligible to request increase
// adjustment.
enum IneligibilityReason {
// Default value when is_eligible is true.
INELIGIBILITY_REASON_UNSPECIFIED = 0;
// The container is not linked with a valid billing account.
NO_VALID_BILLING_ACCOUNT = 1;
// Quota increase is not supported for the quota.
NOT_SUPPORTED = 3;
// There is not enough usage history to determine the eligibility.
NOT_ENOUGH_USAGE_HISTORY = 4;
// Other reasons.
OTHER = 2;
}
// Whether a higher quota value can be requested for the quota.
bool is_eligible = 1;
// 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.
IneligibilityReason ineligibility_reason = 2;
}
// QuotaPreference represents the preferred quota configuration specified for
// a project, folder or organization. There is only one QuotaPreference
// resource for a quota value targeting a unique set of dimensions.
message QuotaPreference {
option (google.api.resource) = {
type: "cloudquotas.googleapis.com/QuotaPreference"
pattern: "projects/{project}/locations/{location}/quotaPreferences/{quota_preference}"
pattern: "folders/{folder}/locations/{location}/quotaPreferences/{quota_preference}"
pattern: "organizations/{organization}/locations/{location}/quotaPreferences/{quota_preference}"
};
// Required except in the CREATE requests.
// The resource name of the quota preference.
// The path that follows `/locations` must be `/global`.
// For example:
// `projects/123/locations/global/quotaPreferences/my-config-for-us-east1`
string name = 1;
// 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.
//
// For example: `{"provider" : "Example Organization"}` where `provider` is a
// service-specific quota dimension and `Example Organization` is the provider
// name.
map<string, string> dimensions = 2 [(google.api.field_behavior) = IMMUTABLE];
// Required. Preferred quota configuration.
QuotaConfig quota_config = 3 [(google.api.field_behavior) = REQUIRED];
// 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.
string etag = 4 [(google.api.field_behavior) = OPTIONAL];
// Output only. Create time stamp
google.protobuf.Timestamp create_time = 5
[(google.api.field_behavior) = OUTPUT_ONLY];
// Output only. Update time stamp
google.protobuf.Timestamp update_time = 6
[(google.api.field_behavior) = OUTPUT_ONLY];
// Required. The name of the service to which the quota preference is applied.
string service = 7 [(google.api.field_behavior) = REQUIRED];
// Required. The id of the quota to which the quota preference is applied. A
// quota name is unique in the service. For example, `CpusPerProjectPerRegion`
string quota_id = 8 [(google.api.field_behavior) = REQUIRED];
// Output only. Is the quota preference pending Google Cloud approval and
// fulfillment.
bool reconciling = 10 [(google.api.field_behavior) = OUTPUT_ONLY];
// The reason / justification for this quota preference.
string justification = 11;
// Input only. An email address that can be used to contact 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`.
string contact_email = 12 [(google.api.field_behavior) = INPUT_ONLY];
}
// The preferred quota configuration.
message QuotaConfig {
// The enumeration of the origins of quota preference requests.
enum Origin {
// The unspecified value.
ORIGIN_UNSPECIFIED = 0;
// Created through Cloud Console.
CLOUD_CONSOLE = 1;
// Generated by automatic quota adjustment.
AUTO_ADJUSTER = 2;
}
// Required. The preferred value. Must be greater than or equal to -1. If set
// to -1, it means the value is "unlimited".
int64 preferred_value = 1 [(google.api.field_behavior) = REQUIRED];
// Output only. Optional details about the state of this quota preference.
string state_detail = 2 [(google.api.field_behavior) = OUTPUT_ONLY];
// Output only. Granted quota value.
google.protobuf.Int64Value granted_value = 3
[(google.api.field_behavior) = OUTPUT_ONLY];
// 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.
string trace_id = 4 [(google.api.field_behavior) = OUTPUT_ONLY];
// 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
map<string, string> annotations = 5 [(google.api.field_behavior) = OPTIONAL];
// Output only. The origin of the quota preference request.
Origin request_origin = 6 [(google.api.field_behavior) = OUTPUT_ONLY];
}
// The detailed quota information such as effective quota value for a
// combination of dimensions.
message DimensionsInfo {
// The map of dimensions in key-value pairs. 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 DimensionInfo
// instance configured for the specific value.
// For example: `{"provider" : "Example Organization"}` where `provider` is a
// service-specific quota dimension and `Example Organization` is the provider
// name.
map<string, string> dimensions = 1;
// Quota details for the specified dimensions.
QuotaDetails details = 2;
// The applicable regions or zones of this dimension. The field is
// 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.
repeated string applicable_locations = 3;
}
// The quota details for a map of dimensions.
message QuotaDetails {
// The value currently in effect and being enforced.
int64 value = 1;
// 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.
RolloutInfo rollout_info = 3;
}
// [Output only] Rollout information of a quota.
message RolloutInfo {
// Whether there is an ongoing rollout for a quota or not.
bool ongoing_rollout = 1;
}