1// Copyright 2019 Google LLC.
2//
3// Licensed under the Apache License, Version 2.0 (the "License");
4// you may not use this file except in compliance with the License.
5// You may obtain a copy of the License at
6//
7//     http://www.apache.org/licenses/LICENSE-2.0
8//
9// Unless required by applicable law or agreed to in writing, software
10// distributed under the License is distributed on an "AS IS" BASIS,
11// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12// See the License for the specific language governing permissions and
13// limitations under the License.
14//
15
16// Code generated by protoc-gen-go. DO NOT EDIT.
17// versions:
18// 	protoc-gen-go v1.22.0
19// 	protoc        v3.11.2
20// source: google/api/quota.proto
21
22package serviceconfig
23
24import (
25	reflect "reflect"
26	sync "sync"
27
28	proto "github.com/golang/protobuf/proto"
29	protoreflect "google.golang.org/protobuf/reflect/protoreflect"
30	protoimpl "google.golang.org/protobuf/runtime/protoimpl"
31)
32
33const (
34	// Verify that this generated code is sufficiently up-to-date.
35	_ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion)
36	// Verify that runtime/protoimpl is sufficiently up-to-date.
37	_ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)
38)
39
40// This is a compile-time assertion that a sufficiently up-to-date version
41// of the legacy proto package is being used.
42const _ = proto.ProtoPackageIsVersion4
43
44// Quota configuration helps to achieve fairness and budgeting in service
45// usage.
46//
47// The metric based quota configuration works this way:
48// - The service configuration defines a set of metrics.
49// - For API calls, the quota.metric_rules maps methods to metrics with
50//   corresponding costs.
51// - The quota.limits defines limits on the metrics, which will be used for
52//   quota checks at runtime.
53//
54// An example quota configuration in yaml format:
55//
56//    quota:
57//      limits:
58//
59//      - name: apiWriteQpsPerProject
60//        metric: library.googleapis.com/write_calls
61//        unit: "1/min/{project}"  # rate limit for consumer projects
62//        values:
63//          STANDARD: 10000
64//
65//
66//      # The metric rules bind all methods to the read_calls metric,
67//      # except for the UpdateBook and DeleteBook methods. These two methods
68//      # are mapped to the write_calls metric, with the UpdateBook method
69//      # consuming at twice rate as the DeleteBook method.
70//      metric_rules:
71//      - selector: "*"
72//        metric_costs:
73//          library.googleapis.com/read_calls: 1
74//      - selector: google.example.library.v1.LibraryService.UpdateBook
75//        metric_costs:
76//          library.googleapis.com/write_calls: 2
77//      - selector: google.example.library.v1.LibraryService.DeleteBook
78//        metric_costs:
79//          library.googleapis.com/write_calls: 1
80//
81//  Corresponding Metric definition:
82//
83//      metrics:
84//      - name: library.googleapis.com/read_calls
85//        display_name: Read requests
86//        metric_kind: DELTA
87//        value_type: INT64
88//
89//      - name: library.googleapis.com/write_calls
90//        display_name: Write requests
91//        metric_kind: DELTA
92//        value_type: INT64
93//
94//
95type Quota struct {
96	state         protoimpl.MessageState
97	sizeCache     protoimpl.SizeCache
98	unknownFields protoimpl.UnknownFields
99
100	// List of `QuotaLimit` definitions for the service.
101	Limits []*QuotaLimit `protobuf:"bytes,3,rep,name=limits,proto3" json:"limits,omitempty"`
102	// List of `MetricRule` definitions, each one mapping a selected method to one
103	// or more metrics.
104	MetricRules []*MetricRule `protobuf:"bytes,4,rep,name=metric_rules,json=metricRules,proto3" json:"metric_rules,omitempty"`
105}
106
107func (x *Quota) Reset() {
108	*x = Quota{}
109	if protoimpl.UnsafeEnabled {
110		mi := &file_google_api_quota_proto_msgTypes[0]
111		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
112		ms.StoreMessageInfo(mi)
113	}
114}
115
116func (x *Quota) String() string {
117	return protoimpl.X.MessageStringOf(x)
118}
119
120func (*Quota) ProtoMessage() {}
121
122func (x *Quota) ProtoReflect() protoreflect.Message {
123	mi := &file_google_api_quota_proto_msgTypes[0]
124	if protoimpl.UnsafeEnabled && x != nil {
125		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
126		if ms.LoadMessageInfo() == nil {
127			ms.StoreMessageInfo(mi)
128		}
129		return ms
130	}
131	return mi.MessageOf(x)
132}
133
134// Deprecated: Use Quota.ProtoReflect.Descriptor instead.
135func (*Quota) Descriptor() ([]byte, []int) {
136	return file_google_api_quota_proto_rawDescGZIP(), []int{0}
137}
138
139func (x *Quota) GetLimits() []*QuotaLimit {
140	if x != nil {
141		return x.Limits
142	}
143	return nil
144}
145
146func (x *Quota) GetMetricRules() []*MetricRule {
147	if x != nil {
148		return x.MetricRules
149	}
150	return nil
151}
152
153// Bind API methods to metrics. Binding a method to a metric causes that
154// metric's configured quota behaviors to apply to the method call.
155type MetricRule struct {
156	state         protoimpl.MessageState
157	sizeCache     protoimpl.SizeCache
158	unknownFields protoimpl.UnknownFields
159
160	// Selects the methods to which this rule applies.
161	//
162	// Refer to [selector][google.api.DocumentationRule.selector] for syntax details.
163	Selector string `protobuf:"bytes,1,opt,name=selector,proto3" json:"selector,omitempty"`
164	// Metrics to update when the selected methods are called, and the associated
165	// cost applied to each metric.
166	//
167	// The key of the map is the metric name, and the values are the amount
168	// increased for the metric against which the quota limits are defined.
169	// The value must not be negative.
170	MetricCosts map[string]int64 `protobuf:"bytes,2,rep,name=metric_costs,json=metricCosts,proto3" json:"metric_costs,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"varint,2,opt,name=value,proto3"`
171}
172
173func (x *MetricRule) Reset() {
174	*x = MetricRule{}
175	if protoimpl.UnsafeEnabled {
176		mi := &file_google_api_quota_proto_msgTypes[1]
177		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
178		ms.StoreMessageInfo(mi)
179	}
180}
181
182func (x *MetricRule) String() string {
183	return protoimpl.X.MessageStringOf(x)
184}
185
186func (*MetricRule) ProtoMessage() {}
187
188func (x *MetricRule) ProtoReflect() protoreflect.Message {
189	mi := &file_google_api_quota_proto_msgTypes[1]
190	if protoimpl.UnsafeEnabled && x != nil {
191		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
192		if ms.LoadMessageInfo() == nil {
193			ms.StoreMessageInfo(mi)
194		}
195		return ms
196	}
197	return mi.MessageOf(x)
198}
199
200// Deprecated: Use MetricRule.ProtoReflect.Descriptor instead.
201func (*MetricRule) Descriptor() ([]byte, []int) {
202	return file_google_api_quota_proto_rawDescGZIP(), []int{1}
203}
204
205func (x *MetricRule) GetSelector() string {
206	if x != nil {
207		return x.Selector
208	}
209	return ""
210}
211
212func (x *MetricRule) GetMetricCosts() map[string]int64 {
213	if x != nil {
214		return x.MetricCosts
215	}
216	return nil
217}
218
219// `QuotaLimit` defines a specific limit that applies over a specified duration
220// for a limit type. There can be at most one limit for a duration and limit
221// type combination defined within a `QuotaGroup`.
222type QuotaLimit struct {
223	state         protoimpl.MessageState
224	sizeCache     protoimpl.SizeCache
225	unknownFields protoimpl.UnknownFields
226
227	// Name of the quota limit.
228	//
229	// The name must be provided, and it must be unique within the service. The
230	// name can only include alphanumeric characters as well as '-'.
231	//
232	// The maximum length of the limit name is 64 characters.
233	Name string `protobuf:"bytes,6,opt,name=name,proto3" json:"name,omitempty"`
234	// Optional. User-visible, extended description for this quota limit.
235	// Should be used only when more context is needed to understand this limit
236	// than provided by the limit's display name (see: `display_name`).
237	Description string `protobuf:"bytes,2,opt,name=description,proto3" json:"description,omitempty"`
238	// Default number of tokens that can be consumed during the specified
239	// duration. This is the number of tokens assigned when a client
240	// application developer activates the service for his/her project.
241	//
242	// Specifying a value of 0 will block all requests. This can be used if you
243	// are provisioning quota to selected consumers and blocking others.
244	// Similarly, a value of -1 will indicate an unlimited quota. No other
245	// negative values are allowed.
246	//
247	// Used by group-based quotas only.
248	DefaultLimit int64 `protobuf:"varint,3,opt,name=default_limit,json=defaultLimit,proto3" json:"default_limit,omitempty"`
249	// Maximum number of tokens that can be consumed during the specified
250	// duration. Client application developers can override the default limit up
251	// to this maximum. If specified, this value cannot be set to a value less
252	// than the default limit. If not specified, it is set to the default limit.
253	//
254	// To allow clients to apply overrides with no upper bound, set this to -1,
255	// indicating unlimited maximum quota.
256	//
257	// Used by group-based quotas only.
258	MaxLimit int64 `protobuf:"varint,4,opt,name=max_limit,json=maxLimit,proto3" json:"max_limit,omitempty"`
259	// Free tier value displayed in the Developers Console for this limit.
260	// The free tier is the number of tokens that will be subtracted from the
261	// billed amount when billing is enabled.
262	// This field can only be set on a limit with duration "1d", in a billable
263	// group; it is invalid on any other limit. If this field is not set, it
264	// defaults to 0, indicating that there is no free tier for this service.
265	//
266	// Used by group-based quotas only.
267	FreeTier int64 `protobuf:"varint,7,opt,name=free_tier,json=freeTier,proto3" json:"free_tier,omitempty"`
268	// Duration of this limit in textual notation. Example: "100s", "24h", "1d".
269	// For duration longer than a day, only multiple of days is supported. We
270	// support only "100s" and "1d" for now. Additional support will be added in
271	// the future. "0" indicates indefinite duration.
272	//
273	// Used by group-based quotas only.
274	Duration string `protobuf:"bytes,5,opt,name=duration,proto3" json:"duration,omitempty"`
275	// The name of the metric this quota limit applies to. The quota limits with
276	// the same metric will be checked together during runtime. The metric must be
277	// defined within the service config.
278	Metric string `protobuf:"bytes,8,opt,name=metric,proto3" json:"metric,omitempty"`
279	// Specify the unit of the quota limit. It uses the same syntax as
280	// [Metric.unit][]. The supported unit kinds are determined by the quota
281	// backend system.
282	//
283	// Here are some examples:
284	// * "1/min/{project}" for quota per minute per project.
285	//
286	// Note: the order of unit components is insignificant.
287	// The "1" at the beginning is required to follow the metric unit syntax.
288	Unit string `protobuf:"bytes,9,opt,name=unit,proto3" json:"unit,omitempty"`
289	// Tiered limit values. You must specify this as a key:value pair, with an
290	// integer value that is the maximum number of requests allowed for the
291	// specified unit. Currently only STANDARD is supported.
292	Values map[string]int64 `protobuf:"bytes,10,rep,name=values,proto3" json:"values,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"varint,2,opt,name=value,proto3"`
293	// User-visible display name for this limit.
294	// Optional. If not set, the UI will provide a default display name based on
295	// the quota configuration. This field can be used to override the default
296	// display name generated from the configuration.
297	DisplayName string `protobuf:"bytes,12,opt,name=display_name,json=displayName,proto3" json:"display_name,omitempty"`
298}
299
300func (x *QuotaLimit) Reset() {
301	*x = QuotaLimit{}
302	if protoimpl.UnsafeEnabled {
303		mi := &file_google_api_quota_proto_msgTypes[2]
304		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
305		ms.StoreMessageInfo(mi)
306	}
307}
308
309func (x *QuotaLimit) String() string {
310	return protoimpl.X.MessageStringOf(x)
311}
312
313func (*QuotaLimit) ProtoMessage() {}
314
315func (x *QuotaLimit) ProtoReflect() protoreflect.Message {
316	mi := &file_google_api_quota_proto_msgTypes[2]
317	if protoimpl.UnsafeEnabled && x != nil {
318		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
319		if ms.LoadMessageInfo() == nil {
320			ms.StoreMessageInfo(mi)
321		}
322		return ms
323	}
324	return mi.MessageOf(x)
325}
326
327// Deprecated: Use QuotaLimit.ProtoReflect.Descriptor instead.
328func (*QuotaLimit) Descriptor() ([]byte, []int) {
329	return file_google_api_quota_proto_rawDescGZIP(), []int{2}
330}
331
332func (x *QuotaLimit) GetName() string {
333	if x != nil {
334		return x.Name
335	}
336	return ""
337}
338
339func (x *QuotaLimit) GetDescription() string {
340	if x != nil {
341		return x.Description
342	}
343	return ""
344}
345
346func (x *QuotaLimit) GetDefaultLimit() int64 {
347	if x != nil {
348		return x.DefaultLimit
349	}
350	return 0
351}
352
353func (x *QuotaLimit) GetMaxLimit() int64 {
354	if x != nil {
355		return x.MaxLimit
356	}
357	return 0
358}
359
360func (x *QuotaLimit) GetFreeTier() int64 {
361	if x != nil {
362		return x.FreeTier
363	}
364	return 0
365}
366
367func (x *QuotaLimit) GetDuration() string {
368	if x != nil {
369		return x.Duration
370	}
371	return ""
372}
373
374func (x *QuotaLimit) GetMetric() string {
375	if x != nil {
376		return x.Metric
377	}
378	return ""
379}
380
381func (x *QuotaLimit) GetUnit() string {
382	if x != nil {
383		return x.Unit
384	}
385	return ""
386}
387
388func (x *QuotaLimit) GetValues() map[string]int64 {
389	if x != nil {
390		return x.Values
391	}
392	return nil
393}
394
395func (x *QuotaLimit) GetDisplayName() string {
396	if x != nil {
397		return x.DisplayName
398	}
399	return ""
400}
401
402var File_google_api_quota_proto protoreflect.FileDescriptor
403
404var file_google_api_quota_proto_rawDesc = []byte{
405	0x0a, 0x16, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x71, 0x75, 0x6f,
406	0x74, 0x61, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x0a, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65,
407	0x2e, 0x61, 0x70, 0x69, 0x22, 0x72, 0x0a, 0x05, 0x51, 0x75, 0x6f, 0x74, 0x61, 0x12, 0x2e, 0x0a,
408	0x06, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x16, 0x2e,
409	0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x51, 0x75, 0x6f, 0x74, 0x61,
410	0x4c, 0x69, 0x6d, 0x69, 0x74, 0x52, 0x06, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x73, 0x12, 0x39, 0x0a,
411	0x0c, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x5f, 0x72, 0x75, 0x6c, 0x65, 0x73, 0x18, 0x04, 0x20,
412	0x03, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x61, 0x70, 0x69,
413	0x2e, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x52, 0x75, 0x6c, 0x65, 0x52, 0x0b, 0x6d, 0x65, 0x74,
414	0x72, 0x69, 0x63, 0x52, 0x75, 0x6c, 0x65, 0x73, 0x22, 0xb4, 0x01, 0x0a, 0x0a, 0x4d, 0x65, 0x74,
415	0x72, 0x69, 0x63, 0x52, 0x75, 0x6c, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x73, 0x65, 0x6c, 0x65, 0x63,
416	0x74, 0x6f, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x73, 0x65, 0x6c, 0x65, 0x63,
417	0x74, 0x6f, 0x72, 0x12, 0x4a, 0x0a, 0x0c, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x5f, 0x63, 0x6f,
418	0x73, 0x74, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x67, 0x6f, 0x6f, 0x67,
419	0x6c, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x52, 0x75, 0x6c,
420	0x65, 0x2e, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x43, 0x6f, 0x73, 0x74, 0x73, 0x45, 0x6e, 0x74,
421	0x72, 0x79, 0x52, 0x0b, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x43, 0x6f, 0x73, 0x74, 0x73, 0x1a,
422	0x3e, 0x0a, 0x10, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x43, 0x6f, 0x73, 0x74, 0x73, 0x45, 0x6e,
423	0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09,
424	0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02,
425	0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22,
426	0x83, 0x03, 0x0a, 0x0a, 0x51, 0x75, 0x6f, 0x74, 0x61, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x12, 0x12,
427	0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61,
428	0x6d, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f,
429	0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70,
430	0x74, 0x69, 0x6f, 0x6e, 0x12, 0x23, 0x0a, 0x0d, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x5f,
431	0x6c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0c, 0x64, 0x65, 0x66,
432	0x61, 0x75, 0x6c, 0x74, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x12, 0x1b, 0x0a, 0x09, 0x6d, 0x61, 0x78,
433	0x5f, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, 0x08, 0x6d, 0x61,
434	0x78, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x12, 0x1b, 0x0a, 0x09, 0x66, 0x72, 0x65, 0x65, 0x5f, 0x74,
435	0x69, 0x65, 0x72, 0x18, 0x07, 0x20, 0x01, 0x28, 0x03, 0x52, 0x08, 0x66, 0x72, 0x65, 0x65, 0x54,
436	0x69, 0x65, 0x72, 0x12, 0x1a, 0x0a, 0x08, 0x64, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18,
437	0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x64, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12,
438	0x16, 0x0a, 0x06, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52,
439	0x06, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x12, 0x12, 0x0a, 0x04, 0x75, 0x6e, 0x69, 0x74, 0x18,
440	0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x75, 0x6e, 0x69, 0x74, 0x12, 0x3a, 0x0a, 0x06, 0x76,
441	0x61, 0x6c, 0x75, 0x65, 0x73, 0x18, 0x0a, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x67, 0x6f,
442	0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x51, 0x75, 0x6f, 0x74, 0x61, 0x4c, 0x69,
443	0x6d, 0x69, 0x74, 0x2e, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52,
444	0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x12, 0x21, 0x0a, 0x0c, 0x64, 0x69, 0x73, 0x70, 0x6c,
445	0x61, 0x79, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64,
446	0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x4e, 0x61, 0x6d, 0x65, 0x1a, 0x39, 0x0a, 0x0b, 0x56, 0x61,
447	0x6c, 0x75, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79,
448	0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76,
449	0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75,
450	0x65, 0x3a, 0x02, 0x38, 0x01, 0x42, 0x6c, 0x0a, 0x0e, 0x63, 0x6f, 0x6d, 0x2e, 0x67, 0x6f, 0x6f,
451	0x67, 0x6c, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x42, 0x0a, 0x51, 0x75, 0x6f, 0x74, 0x61, 0x50, 0x72,
452	0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x45, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x67, 0x6f,
453	0x6c, 0x61, 0x6e, 0x67, 0x2e, 0x6f, 0x72, 0x67, 0x2f, 0x67, 0x65, 0x6e, 0x70, 0x72, 0x6f, 0x74,
454	0x6f, 0x2f, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x61, 0x70, 0x69,
455	0x2f, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x3b, 0x73,
456	0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0xa2, 0x02, 0x04, 0x47,
457	0x41, 0x50, 0x49, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
458}
459
460var (
461	file_google_api_quota_proto_rawDescOnce sync.Once
462	file_google_api_quota_proto_rawDescData = file_google_api_quota_proto_rawDesc
463)
464
465func file_google_api_quota_proto_rawDescGZIP() []byte {
466	file_google_api_quota_proto_rawDescOnce.Do(func() {
467		file_google_api_quota_proto_rawDescData = protoimpl.X.CompressGZIP(file_google_api_quota_proto_rawDescData)
468	})
469	return file_google_api_quota_proto_rawDescData
470}
471
472var file_google_api_quota_proto_msgTypes = make([]protoimpl.MessageInfo, 5)
473var file_google_api_quota_proto_goTypes = []interface{}{
474	(*Quota)(nil),      // 0: google.api.Quota
475	(*MetricRule)(nil), // 1: google.api.MetricRule
476	(*QuotaLimit)(nil), // 2: google.api.QuotaLimit
477	nil,                // 3: google.api.MetricRule.MetricCostsEntry
478	nil,                // 4: google.api.QuotaLimit.ValuesEntry
479}
480var file_google_api_quota_proto_depIdxs = []int32{
481	2, // 0: google.api.Quota.limits:type_name -> google.api.QuotaLimit
482	1, // 1: google.api.Quota.metric_rules:type_name -> google.api.MetricRule
483	3, // 2: google.api.MetricRule.metric_costs:type_name -> google.api.MetricRule.MetricCostsEntry
484	4, // 3: google.api.QuotaLimit.values:type_name -> google.api.QuotaLimit.ValuesEntry
485	4, // [4:4] is the sub-list for method output_type
486	4, // [4:4] is the sub-list for method input_type
487	4, // [4:4] is the sub-list for extension type_name
488	4, // [4:4] is the sub-list for extension extendee
489	0, // [0:4] is the sub-list for field type_name
490}
491
492func init() { file_google_api_quota_proto_init() }
493func file_google_api_quota_proto_init() {
494	if File_google_api_quota_proto != nil {
495		return
496	}
497	if !protoimpl.UnsafeEnabled {
498		file_google_api_quota_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {
499			switch v := v.(*Quota); i {
500			case 0:
501				return &v.state
502			case 1:
503				return &v.sizeCache
504			case 2:
505				return &v.unknownFields
506			default:
507				return nil
508			}
509		}
510		file_google_api_quota_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} {
511			switch v := v.(*MetricRule); i {
512			case 0:
513				return &v.state
514			case 1:
515				return &v.sizeCache
516			case 2:
517				return &v.unknownFields
518			default:
519				return nil
520			}
521		}
522		file_google_api_quota_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} {
523			switch v := v.(*QuotaLimit); i {
524			case 0:
525				return &v.state
526			case 1:
527				return &v.sizeCache
528			case 2:
529				return &v.unknownFields
530			default:
531				return nil
532			}
533		}
534	}
535	type x struct{}
536	out := protoimpl.TypeBuilder{
537		File: protoimpl.DescBuilder{
538			GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
539			RawDescriptor: file_google_api_quota_proto_rawDesc,
540			NumEnums:      0,
541			NumMessages:   5,
542			NumExtensions: 0,
543			NumServices:   0,
544		},
545		GoTypes:           file_google_api_quota_proto_goTypes,
546		DependencyIndexes: file_google_api_quota_proto_depIdxs,
547		MessageInfos:      file_google_api_quota_proto_msgTypes,
548	}.Build()
549	File_google_api_quota_proto = out.File
550	file_google_api_quota_proto_rawDesc = nil
551	file_google_api_quota_proto_goTypes = nil
552	file_google_api_quota_proto_depIdxs = nil
553}
554