# frozen_string_literal: true # Generated by the protocol buffer compiler. DO NOT EDIT! # source: google/api/quota.proto require 'google/protobuf' descriptor_data = "\n\x16google/api/quota.proto\x12\ngoogle.api\"]\n\x05Quota\x12&\n\x06limits\x18\x03 \x03(\x0b\x32\x16.google.api.QuotaLimit\x12,\n\x0cmetric_rules\x18\x04 \x03(\x0b\x32\x16.google.api.MetricRule\"\x91\x01\n\nMetricRule\x12\x10\n\x08selector\x18\x01 \x01(\t\x12=\n\x0cmetric_costs\x18\x02 \x03(\x0b\x32\'.google.api.MetricRule.MetricCostsEntry\x1a\x32\n\x10MetricCostsEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\x03:\x02\x38\x01\"\x95\x02\n\nQuotaLimit\x12\x0c\n\x04name\x18\x06 \x01(\t\x12\x13\n\x0b\x64\x65scription\x18\x02 \x01(\t\x12\x15\n\rdefault_limit\x18\x03 \x01(\x03\x12\x11\n\tmax_limit\x18\x04 \x01(\x03\x12\x11\n\tfree_tier\x18\x07 \x01(\x03\x12\x10\n\x08\x64uration\x18\x05 \x01(\t\x12\x0e\n\x06metric\x18\x08 \x01(\t\x12\x0c\n\x04unit\x18\t \x01(\t\x12\x32\n\x06values\x18\n \x03(\x0b\x32\".google.api.QuotaLimit.ValuesEntry\x12\x14\n\x0c\x64isplay_name\x18\x0c \x01(\t\x1a-\n\x0bValuesEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\x03:\x02\x38\x01\x42l\n\x0e\x63om.google.apiB\nQuotaProtoP\x01ZEgoogle.golang.org/genproto/googleapis/api/serviceconfig;serviceconfig\xa2\x02\x04GAPIb\x06proto3" pool = Google::Protobuf::DescriptorPool.generated_pool begin pool.add_serialized_file(descriptor_data) rescue TypeError # Compatibility code: will be removed in the next major version. require 'google/protobuf/descriptor_pb' parsed = Google::Protobuf::FileDescriptorProto.decode(descriptor_data) parsed.clear_dependency serialized = parsed.class.encode(parsed) file = pool.add_serialized_file(serialized) warn "Warning: Protobuf detected an import path issue while loading generated file #{__FILE__}" imports = [ ] imports.each do |type_name, expected_filename| import_file = pool.lookup(type_name).file_descriptor if import_file.name != expected_filename warn "- #{file.name} imports #{expected_filename}, but that import was loaded as #{import_file.name}" end end warn "Each proto file must use a consistent fully-qualified name." warn "This will become an error in the next major version." end module Google module Api Quota = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("google.api.Quota").msgclass MetricRule = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("google.api.MetricRule").msgclass QuotaLimit = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("google.api.QuotaLimit").msgclass end end #### Source proto file: google/api/quota.proto #### # # // Copyright 2024 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; # # option go_package = "google.golang.org/genproto/googleapis/api/serviceconfig;serviceconfig"; # option java_multiple_files = true; # option java_outer_classname = "QuotaProto"; # option java_package = "com.google.api"; # option objc_class_prefix = "GAPI"; # # // Quota configuration helps to achieve fairness and budgeting in service # // usage. # // # // The metric based quota configuration works this way: # // - The service configuration defines a set of metrics. # // - For API calls, the quota.metric_rules maps methods to metrics with # // corresponding costs. # // - The quota.limits defines limits on the metrics, which will be used for # // quota checks at runtime. # // # // An example quota configuration in yaml format: # // # // quota: # // limits: # // # // - name: apiWriteQpsPerProject # // metric: library.googleapis.com/write_calls # // unit: "1/min/{project}" # rate limit for consumer projects # // values: # // STANDARD: 10000 # // # // # // (The metric rules bind all methods to the read_calls metric, # // except for the UpdateBook and DeleteBook methods. These two methods # // are mapped to the write_calls metric, with the UpdateBook method # // consuming at twice rate as the DeleteBook method.) # // metric_rules: # // - selector: "*" # // metric_costs: # // library.googleapis.com/read_calls: 1 # // - selector: google.example.library.v1.LibraryService.UpdateBook # // metric_costs: # // library.googleapis.com/write_calls: 2 # // - selector: google.example.library.v1.LibraryService.DeleteBook # // metric_costs: # // library.googleapis.com/write_calls: 1 # // # // Corresponding Metric definition: # // # // metrics: # // - name: library.googleapis.com/read_calls # // display_name: Read requests # // metric_kind: DELTA # // value_type: INT64 # // # // - name: library.googleapis.com/write_calls # // display_name: Write requests # // metric_kind: DELTA # // value_type: INT64 # // # // # message Quota { # // List of QuotaLimit definitions for the service. # repeated QuotaLimit limits = 3; # # // List of MetricRule definitions, each one mapping a selected method to one # // or more metrics. # repeated MetricRule metric_rules = 4; # } # # // Bind API methods to metrics. Binding a method to a metric causes that # // metric's configured quota behaviors to apply to the method call. # message MetricRule { # // Selects the methods to which this rule applies. # // # // Refer to [selector][google.api.DocumentationRule.selector] for syntax # // details. # string selector = 1; # # // Metrics to update when the selected methods are called, and the associated # // cost applied to each metric. # // # // The key of the map is the metric name, and the values are the amount # // increased for the metric against which the quota limits are defined. # // The value must not be negative. # map metric_costs = 2; # } # # // `QuotaLimit` defines a specific limit that applies over a specified duration # // for a limit type. There can be at most one limit for a duration and limit # // type combination defined within a `QuotaGroup`. # message QuotaLimit { # // Name of the quota limit. # // # // The name must be provided, and it must be unique within the service. The # // name can only include alphanumeric characters as well as '-'. # // # // The maximum length of the limit name is 64 characters. # string name = 6; # # // Optional. User-visible, extended description for this quota limit. # // Should be used only when more context is needed to understand this limit # // than provided by the limit's display name (see: `display_name`). # string description = 2; # # // Default number of tokens that can be consumed during the specified # // duration. This is the number of tokens assigned when a client # // application developer activates the service for his/her project. # // # // Specifying a value of 0 will block all requests. This can be used if you # // are provisioning quota to selected consumers and blocking others. # // Similarly, a value of -1 will indicate an unlimited quota. No other # // negative values are allowed. # // # // Used by group-based quotas only. # int64 default_limit = 3; # # // Maximum number of tokens that can be consumed during the specified # // duration. Client application developers can override the default limit up # // to this maximum. If specified, this value cannot be set to a value less # // than the default limit. If not specified, it is set to the default limit. # // # // To allow clients to apply overrides with no upper bound, set this to -1, # // indicating unlimited maximum quota. # // # // Used by group-based quotas only. # int64 max_limit = 4; # # // Free tier value displayed in the Developers Console for this limit. # // The free tier is the number of tokens that will be subtracted from the # // billed amount when billing is enabled. # // This field can only be set on a limit with duration "1d", in a billable # // group; it is invalid on any other limit. If this field is not set, it # // defaults to 0, indicating that there is no free tier for this service. # // # // Used by group-based quotas only. # int64 free_tier = 7; # # // Duration of this limit in textual notation. Must be "100s" or "1d". # // # // Used by group-based quotas only. # string duration = 5; # # // The name of the metric this quota limit applies to. The quota limits with # // the same metric will be checked together during runtime. The metric must be # // defined within the service config. # string metric = 8; # # // Specify the unit of the quota limit. It uses the same syntax as # // [Metric.unit][]. The supported unit kinds are determined by the quota # // backend system. # // # // Here are some examples: # // * "1/min/{project}" for quota per minute per project. # // # // Note: the order of unit components is insignificant. # // The "1" at the beginning is required to follow the metric unit syntax. # string unit = 9; # # // Tiered limit values. You must specify this as a key:value pair, with an # // integer value that is the maximum number of requests allowed for the # // specified unit. Currently only STANDARD is supported. # map values = 10; # # // User-visible display name for this limit. # // Optional. If not set, the UI will provide a default display name based on # // the quota configuration. This field can be used to override the default # // display name generated from the configuration. # string display_name = 12; # }